首页 > 系统相关 >使用Windbg OllyDbg从头调试windows服务

使用Windbg OllyDbg从头调试windows服务

时间:2022-10-16 22:45:17浏览次数:62  
标签:exe 服务 Windbg windows OD OllyDbg 设置 注册表 调试

使用Windbg OllyDbg从头调试windows服务

 https://toutiao.io/posts/akni2p/preview

补充:先设置下odb的jit支持。

JIT的设置方法x64dbg和ollydeg都有自动设置

x64dbg:
菜单栏选择 选项(o)->选项(p)->杂项->将这份x64dbg设为即时调试器
window服务调试(二):调试windows服务方法_windows服务启动超时_02
ollydbg:
菜单栏选择 选项(T)->实时调试设置(J)->设置OllyICE为实时调试器
window服务调试(二):调试windows服务方法_windows服务_03
 
https://blog.51cto.com/u_15060540/3888921

 

在分析恶意软件时,恶意软件通常会创建服务,然后拉起服务删除自身文件,结束进程。很多关键的操作都在恶意软件新创建的服务之中,当然可以使用IDA进行静态的调试,但同时需要OD对服务进行动态的调试。

对于绝大多数的服务可以直接attach到OD或者windbg上进行调试,但是如果想从启动就开始就调试该服务,这种attach的方法就不是很适用。网上有一些多年前的文档教程,但是在亲身尝试的时候总是用各种各样的问题,我就结合网上教程和亲身测试对如何使用OD/Winddbg调试windows服务进行一个较为详细的说明。

 

 

下面的内容见原文:https://toutiao.io/posts/akni2p/preview

1、恶意软件分析:


本人分析的是一个挖门罗币恶意软件的loader,直接步入对服务进行操作与的正题,首先是创建一个服务:

然后会对服务注册表中的一些值进行设定,这里就省略了。

在注册表的数值被设置之后,会直接调用StartService()开启服务:

此时要在次设置好断点,不要执行该布步骤。

静态分析该文件时,在文件中可以看到很多的函数操作,包括对文件的读写,对进程的遍历等等。但是在单纯执行该文件的时候,这些函数操作都不会表现出来。IDA反汇编代码如下:

从以上代码可知,如果该程序是以服务的形式被拉起的,则会运行sub_401F30()函数的程序,否则会向下运行到绿色框中的程序。绿色框中程序的功能就是,删除现有服务,再新创文件,自删除文件,创建新服务,设置注册表参数,拉起服务,结束程序。所以如果不进入到服务进行debug,则一直不能看到核心的恶意代码。而且这些恶意操作执行的速度会很快,不等你attach到OD上就会结束,所以此时需要设置当服务一被拉起就进行调试功能。

恶意软件所注册的服务通常是自启动的,为了方便调试,可以将其更改为手动开启模式。

 

 

2、设置运行程序打开OD/Windbg功能


使用注册表编辑器,打开注册表路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options ,添加一个主键,名称设置为将要调试服务的exe文件:

我要调试的服务的exe文件是scvhost.exe所以在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options 键值下新建一个键值的名称为scvhost.exe,然后再里面添加一个新建一个字符串选项,命名为debugger,最后对debugger这个参数进行设置,设置为调试器的路径。在设置好之后,运行scvhost.exe文件,就自动进入OD的调试界面。所以最好在调试前在被调试服务文件入口设置好断点。

 

 

3、延长服务开启超时时间设置:


当调试服务.exe文件时,其实是在从服务启动时进行调试的,系统对启动服务设置了默认的超时时间,超过时间就会退出启动并报错:

系统默认启动服务的超时时间是30秒,但30秒远远不够对服务进行分析,所以要延长服务超时的时长。

打开注册表,在HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control 键值下查找ServicesPipeTimeout参数,一般不存在,需要新建。新建DWORD值“ServicesPipeTimeout”,其值为欲设置的超时时间,先选择为十进制,数值单位是毫秒,如设置 24小时,则值为86400000毫秒:

在设置好貌似不能直接起到作用,需要重启才能有效果。

 

 

4、设置要调试的服务与桌面交互:


之有打开了桌面交互功能才能够在服务被加载的时候弹出OD/Windbg。首先是打开服务的桌面交互功能。在cmd中输入,services.msc,打开服务控制版面,找到要被调试的服务,然后勾选桌面交互选项:

实际上这等同于修改注册表中的要调试服务的type选项。选择“Type”,修改其值为:原值 OR 0x00000100(如原值为:0x00000010 OR 0x00000100 =0x00000110):

除了要打开服务的桌面交互选项之外,还要开启服务的桌面交互检测服务,系统默认通常是关闭的,需要手动打开。如果不打开该服务,OD/windbg调试窗口就不会弹出:

启动该服务。

 

 

5、启动服务


保证上面的步骤都设置好之后,启动要调试的服务,会弹出如下对话框:

点击查看信息,此时调试器会跳出,加载到服务起始处:

 

*注意:

0x1

整个过程有几点需要额外注意,很多恶意软件会将服务伪装成svchost.exe,用来迷惑用户。修改注册表有风险,如果在

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options

键下添加svchost.exe或者系统其他进程如winlog.exe等,在计算机重启时会遇到麻烦。原因很简单,系统是对可执行文件的名称进行处理的,所以在真正的svchost.exe被执行时系统也会尝试将其加载到OD/Windbg进行调试。所以一个好的解决方法就是将服务设置为手动开启,然后修改文件名,并且修改对应服务的路径中可执行文件的名称。所以就理解为什么我调试的文件名称是scvhost.exe而不是svchost.exe。

0x2

使用尽量使用OD的原始版本,在跳出窗口时带有各种插件的OD会对系统造成影响,导致黑屏打不开。Windbg可以正常打开。



标签:exe,服务,Windbg,windows,OD,OllyDbg,设置,注册表,调试
From: https://www.cnblogs.com/bonelee/p/16797490.html

相关文章

  • ollydbg设置断点经验总结
    第一寻常断点Ollydbg中一般下中断的方法,就是在程序的地址处用鼠标选择这一行。然后按F2键,这时被选择的那一行的地址会变成别的颜色,就表示这个地址处下了中断。然后运行......
  • LiveGBS流媒体服务平台国标GB28181级联上级如何抓包分析windows抓包和Linux抓包
    LiveGBS流媒体服务平台国标GB28181级联上级如何抓包分析windows抓包和Linux抓包​​1、第一步:抓包工具准备​​​​1.1、Linux​​​​1.2、windows​​​​2、第二步:找到级......
  • windows server backup 无法使用或wbadmin.msc致命错误解决方法
    因为黑群辉断电无法自动引导进系统,我也找不到很好的办法,所以决定使用windowsserver来做NAS服务器,虽然都解决了内网穿透的问题,但是数据安全还在找方案,目前已经解决:1.购买......
  • Windows不分区VHD装Linux多系统(七):ubuntu 22.04.1安装实验
    一、安装过程:环境:1.物理机系统:Win102. ISO镜像:ubuntu-22.04.1-desktop-amd64.iso3.虚拟机:VirtualBox图形用户界面,版本6.1.36r152435(Qt5.6.2)    安......
  • Windows10系统命令行设置环境变量
    1.使用set临时设置环境变量用于设置临时环境变量。只在当前命令行窗口中有效。1.1cmd终端#如设置CLASSPATH$setCLASSPATH=D:\program\JavaTrainning\src#查看......
  • Windows查看并解除端口占用
    Windows查看并解除端口占用1.*查看被占用的端口1.*.&以管理员身份打开命令窗口win+r,输入cmd,调出dos窗口:1.*.&查找所有运行的端口查找所有运行的端口:点击查看代......
  • C++ 实现随机数生成(Windows、Linux)
    1、简介计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意:小M多项式序列的周期是65535,即每次利用一个随机种子生......
  • 内网KMS激活Windows OPENWRT
    电脑端配置首先,保证你的WINDOWS系统和OFFICE是VOL版的,这样才可以激活。WINDOWS系统除了旗舰版和家庭版都能激活。(我使用WIN10专业版)OFFICE2016在MSDN只有专业增强版,下......
  • Sentinel安装教程【Linux+windows】
    一、Sentinel的简介Sentinel是阿里巴巴出品的一款流控组件,它以流量为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。如果你学过netflix公司旗下......
  • Windows重装随记
    0.前情提要最近被人喊去修电脑,虽然计算机真的不是修电脑专业但还是去了。电脑表现为:打开任意一个文档,比如txt,doc,写点东西,保存,再打开,一定会变成乱码。经过若干次测试发现......