干掉KV 2008, Rising等大部分杀软
前言:
写这篇文章不是为了传播病毒技术,而是让广大的电脑安全爱好者对病毒常用的伎俩有一个比较清楚的认识,才能更好的防范. 写的很菜,老鸟飘过~
主题:
利用驱动结束掉大部分的安全软件(eg. KV 2008, 瑞星,微点, 360),禁止一些ARK(反rootkits安全工具)的运行.(当然,不考虑主动防御如何禁止驱动的加载,现在前提是驱动已经加载.所以只讨论一个层面)
sudami [sudami@163.com]
http://hi.baidu.com/sudami
正文:
这段时间机器狗,磁碟机来势汹汹,手段无所不用其极. 其实它们的实现不是什么困难的事,只是病毒作者用了很多猥亵手段,投入了大量的精力. 于是,偶琢磨着写个小程序玩一下:
<一> 对KV 2008的分析
ps: R3下Kill 进程已经被炉子牛做的差不多了(万一ZwDulplicatXXX被挂了就失效了),所以略过~~~
KV 2008前段时间鼓吹IS结束掉它,其实没什么神秘的地方.好多牛已经讨论过了.驱动下结束它很简单.打开RKU扫描一下, 为了保护自己的进程, 江民做了3处inline hook, 3处SSDT HOOK



SSDT 15秒恢复1次,其中的NtTerminateProcess恢复更快,基本是5ms左右(DPC)
①处理方法: 恢复掉关键的一处inline hook KeInsertQueueApc即可
②具体细节:
--------------------------------------------
(1)
KV2008的inline hook -- ObOpenObjectByPointer
防止打开其进程
!ObOpenObjectByPointer:
8056cbc2 8bff mov edi,edi
8056cbc4 e967e59c00 jmp 80f3b130 ;往下要恢复15字节的内容
8056cbc9 94 xchg eax,esp
8056cbca 0000 add byte ptr [eax],al
8056cbcc 00538b add byte ptr [ebx-75h],dl
8056cbcf 5d pop ebp
8056cbd0 085657 or byte ptr [esi+57h],dl
|
| 恢复为下面的
|
nt!ObOpenObjectByPointer:
8089fa62 8bff mov edi,edi
8089fa64 55 push ebp
8089fa65 8bec mov ebp,esp
8089fa67 81ec94000000 sub esp,94h
8089fa6d 53 push ebx
8089fa6e 8b5d08 mov ebx,dword ptr [ebp+8]
8089fa71 56 push esi
8089fa72 57 push edi
--------------------------------------------
(2)
KV2008的inline hook -- KeInsertQueueApc
防止插APC终止其进程
nt!KeInsertQueueApc:
804e6411 8bff mov edi,edi
804e6413 e9286da500 jmp 80f3d140 ;往下要恢复7字节的内容
804e6418 0c53 or al,53h
|
| 恢复为下面的
|
nt!KeInsertQueueApc:
8080ecbf 8bff mov edi,edi
8080ecc1 55 push ebp
8080ecc2 8bec mov ebp,esp
8080ecc4 83ec0c sub esp,0Ch
8080ecc7 53 push ebx
--------------------------------------------
(3)
KV2008的inline hook -- RtlImageNtHeader
防止别人打开指定的PE模块
nt!RtlImageNtHeader:
804f97d5 90 nop ;往下要恢复26字节的内容
804f97d6 90 nop
804f97d7 90 nop
804f97d8 90 nop
804f97d9 90 nop
804f97da 90 nop
804f97db 90 nop
804f97dc 90 nop
804f97dd 90 nop
804f97de 90 nop
804f97df e95cc99f00 jmp 80ef6140
804f97e4 90 nop
804f97e5 ff743866 push dword ptr [eax+edi+66h]
804f97e9 813a4d5a7531 cmp dword ptr [edx],31755A4Dh
|
| 恢复为下面的
|
nt!RtlImageNtHeader:
80822e19 8bff mov edi,edi
80822e1b 55 push ebp
80822e1c 8bec mov ebp,esp
80822e1e 8b5508 mov edx,dword ptr [ebp+8]
80822e21 33c0 xor eax,eax
80822e23 85d2 test edx,edx
80822e25 743d je nt!RtlImageNtHeader+0x41 (80822e64)
80822e27 83faff cmp edx,0FFFFFFFFh
80822e2a 7438 je nt!RtlImageNtHeader+0x41 (80822e64)
80822e2c 66813a4d5a cmp word ptr [edx],5A4Dh
80822e31 7531 jne nt!RtlImageNtHeader+0x41 (80822e64)
-----------------------------
③实践思路:
