首页 > 其他分享 >恶意代码分析实战 windbg内核恶意代码分析 lab 10-1 10-2 10-3

恶意代码分析实战 windbg内核恶意代码分析 lab 10-1 10-2 10-3

时间:2022-10-04 15:22:44浏览次数:82  
标签:10 01 服务 windbg 恶意代码 使用 注册表

Lab 10-01

本实验包括一个驱动程序和一个可执行文件。你可以从任意位置运行可执行文件,但为了使程序能够正常运行,必须将驱动程序放到C:\Windows\System32目录下,这个目录在受害者计算机中已经存在。可执行文件是Lab10-01.exe,驱动程序是Lab 10-01.sys.
问题
1.这个程序是否直接修改了注册表?
	修改了。
2.用户态的程序调用了ControlService函数,你是否能够使用WinDbg设置一个断点,以此来观察由于ControlService的调用导致内核执行了怎样的操作?
修改注册表,关闭防火墙。
3.这个程序做了些什么?
通过创建服务来加载驱动,驱动代码会创建并修改注册表键值来关闭防火墙。


先说下windbg的下载地址:https://pc.qq.com/detail/0/detail_2060.html 还是腾讯软件良心直接收录了,网上下载好用的太难找了。

使用ida对程序**lab 10-01.exe**进行分析。
 

 

 先反汇编看下,可以知道是在创建服务并启动!然后再看strings,基本判断是通过驱动方式来加载恶意代码。

 

在这里插入图片描述
可以看到有与服务相关的敏感操作。通过ida的strings进行分析。
在这里插入图片描述
在这里插入图片描述
可以看到出现了敏感文件路径。
在这里插入图片描述
OpenSCManger:在指定及其上创建与服务控制管理程序的联系,并打开指定的数据库,返回的是一个服务管理器的句柄。
CreateService:创建一个服务对象,并将它添加到指定的服务控制管理程序的数据库中。Service为创建的服务名称,此处为lab10-01。

dwServiceType为服务类型,1表示此服务为驱动服务(此文件会加载到内核中去).dwStartType为服务启动类型,3表示此服务会自动启动 。

 

 

dwErrorControl表示严重性错误,以及采取的行动,如果这项服务无法启动,1表示启动程序在事件日志中记录,但继续启动操作。BinaryPathName表示服务二进制文件的完全限定路径,dwDesiredAccess为访问权限,0xF01FF表示除此表中的所有访问权限外,还包括STANDARD_RIGHTS_REQUIRED 。
在这里插入图片描述
如果服务存在导致服务创建失败,则使用OpenService打开同名服务。如果打开成功,使用StartService开启服务。
ControlService: hservice,OpenService或CreateService 返回的服务句柄。
dwControl,要发送的控制码,此处为1,表示CONTROL _SERVICE_STOP,将会卸载驱动并调用驱动卸载的函数。IpServiceStatus,返回值,指向存储服务最新状态的结构体Service,返回信息来自SCM中最近的服务状态报告。

使用ida对Lab 10-01.sys进行分析,首先查看导入函数。
在这里插入图片描述
能够看到有与注册表相关的敏感操作。其中KeTickCount几乎所有驱动程序都会包括这个函数,可以忽略。
通过strings工具对其进行分析。
在这里插入图片描述
有与防火墙有关注册表相关。

反汇编看下:

 

 

 

的确是在修改注册表。


使用process monitor进行分析。
在这里插入图片描述
可以看到有关注册表的更改子键,设置了seed(随机的更改)。==》上述代码里为啥没有看到???
在这里插入图片描述
此处的DriverEntry为sub_10906,进入查看。
在这里插入图片描述
查看sub_10486
在这里插入图片描述
能够看到大量对注册表的操作。
RtlCreaterRegistrykey:通过一个给定的注册表相对路径和值创建指定的键。
RtlWriteRegistryValue:将提供的数据以指定的值名称写入指定的相对路径。参数实际的意义,还需要学习了解。
在这里插入图片描述
可以得知通修改注册表键值关闭了防火墙。
使用windbg调试内核。
我使用的是win7+win xp sp3,符号表使用了win xp3的下载器,因为之前使用的是win xp sp2加上微软的符号表链接,symbols文件只有十几兆,一直报错,于是使用下载器下载,共六百多兆,能够运行了。
在虚拟机中使用windbg加载lob 10-01.exe
在这里插入图片描述
在之前使用ida得到的controlservice地址进行断点,bp 00401080
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

 

 

使用win7宿主机的winbg进行调试,

vmvare设置:

虚拟机配置

1,打开相应的虚拟机,选择“编辑虚拟机设置”,打开虚拟机设置对话框,如下

 

 
2,观察“虚拟机设置”这个对话框的“硬件”->“设备栏”,看看是否有“打印机”或“Printer”,如果有,则删除该设备。==》关键!!!否则链接不成功!


3,选择“添加”,然后选择“串行端口”,然后选择“使用命名管道”,并按如下设置

 


原文链接:https://blog.csdn.net/qq_25867649/article/details/54944675

 

winxp做一些准备工作,修改boot.ini文件:

   我们在桌面上找到“我的电脑”然后右键单击,选择“属性”,进入系统属性页面之后,我们在第一行选择“高级”然后在下方选择“设置”

windowsXP系统电脑编辑Boot.ini文件的方法

  2、第二步,我们在"启动和故障恢复"页面中点击“编辑”就能对Boot.ini文件进行编辑了

windowsXP系统电脑编辑Boot.ini文件的方法
然后编辑boot.ini文件:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional with kernel debug" /noexecute=optin /fastdetect /debug /debugport=COM1 /baudrate=115200

 

修改好了以后重启!

然后windbg 点击kernel debug:

 

 

 

看到下面消息:

 

 

 但是没有连接成功!

我的做法是这样的,其他做法也可以,只要你可以调试就行了,我找到Windbg的文件夹,然后把这个程序创建一个桌面快捷方式,目标修改下:

"C:\Program Files (x86)\Debugging Tools for Windows (x86)\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe -y C:\Windows\Symbols

 

 

 其中,C:\Windows\Symbols ,去资源文件:Windbg+Symbols 安装包(提取码:fvva)里下载安装,默认是安装在C:\Windows\Symbols!

 

成功后,然后我们双击windbg快捷方式,从下图看,就说明已经处于调试状态了!

 

 


使用!drvobj查看Lab 10-01.exe创造的服务lab 10-01
在这里插入图片描述
在这里设备列表为空,这个驱动没有供应用程序访问的设备,也可以使用命令!Object \Driver获得所有的驱动列表

在这里插入图片描述
使用dt _DRIVER_OBJECT 地址 来解析地址的数据结构
在这里插入图片描述
重点观察DriverUnload函数,地址为0x29f7a704,使用bp指令在此加断点,并使用g指令恢复内核的执行。
在这里插入图片描述
在虚拟机中继续运行
在这里插入图片描述
在win7并运行到断点处
在这里插入图片描述
通过按t单步执行下一条指令

在这里插入图片描述
可以使用ida进行分析。从前面得知DriverStart的地址和DriverUpload的地址,从而得到偏移量0x486。
在这里插入图片描述
在ida中driver的默认地址的sys文件是从0x00010000开始的,所以函数卸载代码对应的地址为0x00010468。另外一个方法则是重新设置ida默认的基地址
在这里插入图片描述

在这里插入图片描述
将基地址修改为driverstart的地址。
在这里插入图片描述
在这里插入图片描述

 

标签:10,01,服务,windbg,恶意代码,使用,注册表
From: https://www.cnblogs.com/bonelee/p/16753796.html

相关文章

  • AX210导致蓝牙键盘卡顿,连续输入解决办法
    现象:导致蓝牙键盘卡顿,连键,蓝牙音箱卡顿解决方案:打开“设备管理器”,展开“蓝牙”,右击“英特尔(R)无线Bluetooth(R)”,选择“属性”,切换到“详细信息”选项卡,选择“设备实例......
  • 软件开发工具文字题检验_20221004
    软件开发工具文字题汇总第一章1.什么是专用的软件开发工具?它有什么优点和不足?(简答题) 的、统一的支撑环境。2.简述高级程序设计语言的不足。(简答题) 3.试论软件......
  • 软件开发工具填空题最易错的_20221004
    软件开发工作中总体设计包含(结构图)(模块清单)(公共数据设计)结模公公共数据结构程序的编写与文档的编写是两件并行的 工作,我们可以统称之为(实用阶段)。实现阶段Eclipse......
  • 2022.10.4什么是计算机随笔
    什么是计算机冯诺依曼被称为计算机之父computer俗称电子计算机、电脑计算机分硬件和软件计算机广泛应用在人工智能、网络安全、科学计算、数据处理、自动......
  • 软件开发工具填空题_20221004
    1第三代程序设计语言一般都是(  )语言。进入二十一世纪以来,软件开发工具的发展有两个鲜明的特点,第一个特点是面向网络,另一个特点是(来源软件的兴起和运用)。填空题1712......
  • 2022.10.4markdown随笔
    Markdowm学习标题三级标题四级标题 字体helloworldhelloworldhelloworldhelloworld引用选择坚持,留住明天!分割线图片超链接点击跳转到哔哩哔哩列表......
  • 联想z510硬件升级记录
    这几天电脑用的非常卡,盘都是红的,严重干扰了正常工作,因此开始了我的升级工作。1.备份资料。原有硬盘数据一定好做好备份。其中应用程序的数据需要做导出工作。......
  • Test 2022.10.04
    应该仍然是\(SHOI\)专场只写了两篇题解,另外两道题都有些超出知识范围了,当然第四题可以学一学改一改。T1门票一道链表哈希,理论\(map\)也能过,但是常数太大了,还是不足以过......
  • Android系统10 RK3399 init进程启动(四十) 开机自启动脚本init.rc执行逻辑框架
    说明系统:Android10.0设备:FireFlyRK3399(ROC-RK3399-PC-PLUS)前言这个章节我们开始学习新的知识点,init.rc相关概念,也就是Android开机自启动的脚本,这个脚本能启动shell脚......
  • Java10/04
    数组1.数组概述数组的定义:数组是相同类型数据的有序集合数组描述的是相同类型的若干个数控,按照一定的先后次序排列组合而成其中,每一个数据称为一个数组元素,每个数......