服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

记录调试Windows服务的操作

日期: 来源:看雪学苑收集编辑:PlaneJun


本文为看雪论坛优秀文章

看雪论坛作者ID:PlaneJun


如题,近日分析了一个样本,发现需要调试服务,然后自己也没调试过服务,就在国内查了一些资料,基本能用的也就看雪一个大哥发的教程(https://bbs.pediy.com/thread-229643.htm)。


但是跟着操作弄了一遍,虽然是弄好了,但是会出现一个情况就是调试器会非常的卡,而且过了一会就消失了,整个虚拟机就直接是卡死状态,研究了许久还是解决不了就放弃了。然后就自己办法弄,考虑过写驱动给拦截了,但是VS2022没有WDK,于是想到全局API Hook,然后发现svchost.exe不过消息队列。在觉得无望的时候,我在火绒剑发现了这么一个玩意。


因为自己是没去研究过服务启动的一个流程,在分析样本的时候用的是sc命令启动,就以为服务是从sc.exe去加载的,然后去分析了半天,发现不行。于是乎发现了这么一个流程,服务的一个启动过程如下:

service.exe -----[CreateProcessW]------->svchost.exe-------[LoadLibrary]-------->服务启动

然后就有了一个想法,直接附加service.exe然后给CreateProcessW下断点,再启动服务,拦截到svchost.exe的创建后,把参数修改为PROCESS_SUSPEND_RESUME,最后再用调试器附加svchost.exe下断LoadLibrary,手动恢复线程后等待目标服务DLL加载。理论存在开始实践。


法一:


启动服务后直接断下,然后直接查看参数,发现是包含了线程暂停。

                  


猜到后面会存在恢复线程操作,就稍微跟了一下。



F8走几步发现了恢复线程的函数,这里直接Nop掉不让他执行。走完之后直接恢复这个地方的Call。

这个时候已经可以把调试器F9跑起来了,然后会突然断在异常上。       

这里的这个异常让我想到了另一种调试方法,在法二里。


这个时候另一个调试器附加创建出来的进程。

恢复线程,然后F9让调试器跑起来。这个时候这里是不会断下的,需要到第一个调试器F9,一直F9到第二个调试器断下。(这里猜测是因为services.exe的操作没跑完,然后svchost.exe单独跑就出现问题。)


第二个调试器断下后,就可以直接单次F9等到目标DLL加载了。

加载完毕,直接跳到目标DLL的函数下断即可。

接下来配合IDA食用即可。


法二:


这个方法是我在调试的时候发现的一个特征,不知道适不适用,就是直接暴力断网,因为恶意样本以服务形式启动,肯定不是为了好玩,其中肯定会有网络行为。那么断网会导致样本在通讯的时候会产生一个等待行为,那么这个等待行为就可以拿来用。举个例子,样本存在下面的代码:

a = URLDownloadToFileW()if(a){    ......}else{   return }


那么,在服务调用URLDownloadToFileW这个函数时,由于你网络断开,那么他就会有一个网络等待行为,通常这个等待行为不会很长也不会很久,在这个等待时间里,直接用火绒剑查看服务所存在的进程PID,然后调试器附加后到if(a)这个位置下断,然后把网连上即可,函数返回断下后就可以开始分析了。


注意事项:


(1)服务加载的超时时间,因为调试原因,服务加载的时候超过了规定时间,就会直接结束调试,所以需要设置时间。设置方法,这里直接截图开头那位大哥帖子里的内容。


(2)调试需要提前开启好两个,因为一但调试进行,电脑就会卡死,无法打开东西。(貌似可以通过cmd命令打开)      

 

(3)关闭系统异常时自动关机的选项,不然会突然直接提示一分钟后自动关机。(计算机右键-属性-高级系统设置)

  

虽然我这两个方法确实有点乱七八槽,但确实是可以调试服务的。如果各位大哥还有啥好法子,也可以支支招。





看雪ID:PlaneJun

https://bbs.kanxue.com/user-home-826671.htm

*本文由看雪论坛 PlaneJun 原创,转载请注明来自看雪社区


# 往期推荐

1.CVE-2022-21882提权漏洞学习笔记

2.wibu证书 - 初探

3.win10 1909逆向之APIC中断和实验

4.EMET下EAF机制分析以及模拟实现

5.sql注入学习分享

6.V8 Array.prototype.concat函数出现过的issues和他们的POC们



球分享

球点赞

球在看


点击“阅读原文”,了解更多!

相关阅读

  • 超好用的开源漫画/BD媒体服务器 - Komga

  • Komga 是一个免费开源的漫画、BD 媒体服务器,支持 REST API 和 OPDS,Komga 理论上适用于任何支持 OPDS 协议的阅读器。支持的文件格式包括:CBZ、CBR、PDF 和 epub 格式。Komga
  • SeeHacker | 如何重入攻击一个NFT项目?

  • 你想了解黑客的世界吗?你是否想体验一把黑客的感觉吗?如何使用重入攻击合约去攻击一个NFT项目?菠菜将带你们体验黑客的视角呈现如何找到智能合约中的漏洞并进行攻击。由于本文
  • 千万别用Excel函数做华夫图,太爽了!

  • 哈喽,我是运营菌。我们经常遇到要做各种各种的百分比图,但它们90%都是用饼状图做的。之前和大家学习过使用Excel条件格式和BI制作华夫图,万万没想到的是,使用Excel函数也能制作
  • 分享两种方式:如何开启JNI的“大门”?

  • ‍‍1要介绍本篇博客的原因前段时间学习OpenGL ES相关技术,下载了一个Github项目学习,项目地址在:https://github.com/githubhaohao/NDK_OpenGLES_3_0项目的关键代码都是C++实
  • 一文读懂函数编程及其工作原理

  • 点击上方蓝字关注我们(本文阅读时间:8分钟)微软MVP实验室研究员马洪喜-微软 MVP19年研发经验云计算咨询顾问专家容器云及基础架构云技术专家DevOps 及微服务咨询专家什么是函数
  • 实践:使用 Python 开发一款迷你游戏

  • 点击上方蓝字 ● 关注Linux公社 本文与大家一起学习如何在 Python 中使用 Tkinter 构建颜色游戏Battlefield2、World of Tanks、The Sims4 和 Freedom Force 是使用 Pyt
  • Bash 初学者系列 #1:在 Bash 中使用函数

  • 点击上方蓝字 ● 关注Linux公社 当您的 bash 脚本变得越来越大时,事情会变得非常混乱!您可能会发现自己在 bash 脚本的不同部分一次又一次地重写相同的代码片段。幸运的是
  • 2023 年的 Web Worker 项目实践

  • 前言—Web Workers 是 2009 年就已经提案的老技术,但是在很多项目中的应用相对较少,常见一些文章讨论如何写 demo ,但很少有工程化和项目级别的实践,本文会结合 Web Workers 在
  • 细说 Vue 响应式原理的 10 个细节!

  • 在讲解之前,我们先了解一下数据响应式是什么?所谓数据响应式就是建立响应式数据与依赖(调用了响应式数据的操作)之间的关系,当响应式数据发生变化时,可以通知那些使用了这些响应式
  • 在调用 createApp 时,Vue 为我们做了那些工作?

  • 在使用Vue3时,我们需要使用createApp来创建一个应用实例,然后使用mount方法将应用挂载到某个DOM节点上。那么在调用createApp时,Vue再背后做了些什么事情呢?今天就来扒一扒Vue3

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 记录调试Windows服务的操作

  • 本文为看雪论坛优秀文章看雪论坛作者ID:PlaneJun如题,近日分析了一个样本,发现需要调试服务,然后自己也没调试过服务,就在国内查了一些资料,基本能用的也就看雪一个大哥发的教程(ht
  • COM 进程注入技术-编程技术

  • 本文为看雪论坛优秀文章看雪论坛作者ID:techliu项目地址:https://github.com/0xlane/com-process-injectProcess Injection via Component Object Model (COM) IRundown::DoCa
  • 本周继续更新!Windows 开发不完全指南

  • 本周,课程章节又又又更新啦Roger老师辛苦!周末也不要怠慢学习哦~*查看完整目录请往下翻一名软件逆向分析工程师不仅要具备专业的逆向分析技术,还需要一定的程序开发能力。攻击
  • wibu证书 - asn1码流

  • 本文为看雪论坛优秀文章看雪论坛作者ID:bluefish蓝鱼一前言本文将使用CodeMeterLin中asn1的定义进行解析。在wibu软授权系统中,大部分相关的数据都是使用asn1编码的,所以asn1码
  • 爆款课程!eBPF 安全开发与攻防对抗

  • eBPF 全称 extended Berkeley Packet Filter,中文意思是扩展的伯克利包过滤器。一般来说,要向内核添加新功能,需要修改内核源代码或者编写内核模块来实现。而 eBPF 允许程序在