鬼影7病毒详细分析(II)–驱动篇

2014-09-15 9,900

 

ps:小弟对于驱动的理解还停留在表层阶段,如有分析的不对的 欢迎各位大虾指正。

一、主要行为:

 

建立Guntior驱动设备,以便RING3层程序与之通信。

HOOK内核ZwLoadDriver、ZwSetSystemInformation、ZwSetValueKey、ZwReadFile和Disk的StartIo例程。被HOOK的新例程会阻止一些安全软件的驱动加载,也会相应感染MBR等操作。

破坏一些杀毒软件驱动的加载,并删除相关键值;根据上层传入的进程PID来杀进程,主要用来保护自身。

HOOK磁盘设备的StartIO例程用来也是用来保护自身,它把对于病毒所在的磁盘位置的写操作改写为读操作。

一、详细分析:

 

驱动入口点:

guiyin1

 

病毒驱动程序在入口点创建一个设备与一个符号链接,这与一般驱动程序别无二样。

guiyin2

 

然后病毒初始化该驱动对像的卸载等相关例程。

 

guiyin3

然后病毒就HOOK内核的ZwLoadDriver,ZwSetSystemInformation,ZwSetValueKey,ZwReadFile,Disk的StartIo例程。网上教程很多,就是所谓的SSKT HOOK。

guiyin4

 

病毒查找磁盘设备的最低层设备对像。

guiyin5

 

 

如果病毒查找成功,就会读取MBR数据,检测病毒是否感染过该系统,如果感染过该系统就会直接退出DriverEntry例程。病毒如查找设备失败或未感染过系统时,病毒就会HOOK disk最低层设备的StartIo例程。

 

guiyin6

驱动打开\??\PhysicalDrive0设备,然后根据设备句柄获得最低层的设备,病毒改写该设备对像的StartIo例程。

 

guiyin7

 

 

guiyin8

guiyin9

以上为HOOK的ZwLoadDriver之后的新例程,该例程通过所传递进来的参数获取驱动的可执行路径,然后与ksapi.sys,kisknl.sys,skvkrpr.sys,bc.sys,bapidrv.sys,beepmbr.sys,

findandfixbiosvirus.sys比较,如果有相同的就删除其相关键值及子键。如果不含以上驱动时就调用以前的函数加载驱动。

guiyin10

 

guiyin11

 

 

 

guiyin12

NewZwSetValueKey与NewZwReadFile新例程都是查看是否是设置或读取Services\\BC及Services\\MinKill服务,或者是读取sfc_os.dll文件,如果是就拒绝操作。

 

guiyin13

该NewStartIo例程为HOOK disk.sys驱动的最上层设备的StartIo例程,然后查看是否是在写病毒所在文件磁盘操作,如果是,它将写操作全部转化为读操作。(该例程的作用是参考一位网上的baidu博客所来,在些感谢该大牛博客能给我点提示。具体地址已忘记)

 

guiyin14

该例程为DeviceIoControl例程,根据所传进来的ControlCode不同,功能有所不同,有结束指定进程,感染MBR等行为。

 

 

原创作者:sev7n

SP地址:http://www.secpulse.com/archives/410.html

 

本文作者:sev7n

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/410.html

Tags:
评论  (0)
快来写下你的想法吧!

sev7n

文章数:5 积分: 2

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号