阅读:3880回复:19
由如何绕过IS进程检测说起
对于进程检测来说就是要尽可能枚举全系统内所有EPROCESS对象的指针。IceSword120_cn设了4道障碍来阻止及发现隐藏进程:
1. 先调用ExEnumHandleTable函数枚举PspCidTable句柄表中所有进程对象的指针,将指针结合放到一个缓冲区中。 2. 调用NtQuerySystemInformation枚举系统句柄信息,搜索csrss.exe打开的所有进程类句柄,再得到相应EPROCESS对象指针,并比较该进程对象指针是否已在上述缓冲区中,若没有则添加。 3. 通过PEPROCESS->Vm.WorkingSetExpansionLinks链表枚举进程对象,若缓冲区内没有则添加。 4. 从0x81000030-0x8116xxxx之间搜索EPROCESS结构指针。 在这其中就可以钻IS的空子:为了与枚举出来的线程对象区分,IS在判断一个对象是不是进程对象时用到了进程id(在ExEnumHandleTable的回调例程中用到),POBJECT_HEADER->Type域(对于进程对象该值应该是*PsProcessType) 以及PEPROCESS->Pcb.Header.Type(进程对象该值为3)。综上,可以把我们要隐藏的进程对象“伪装”成一个线程对象,涂改掉PID,以达到让IS程序误判的目的,这样一来便绕过了检测。改掉这3项后,事实证明也绕过了DS1.0.5的检测。 DKOM的最大缺点就是它的不稳定性,随即这里面也就有一个问题:这样经过隐藏的进程对象会不会变得不稳定呢?这点我确实不太清楚,但目前给我的感觉就是如果你的进程与OS或其它程序交互很少的话似乎不会有什么影响。 另一方面,这种方法在RkU v3.30.150.400中就会BSOD,这也好,因为用户会以为是RkU的问题=) 在它的帮助文档上有这样几句说明: Hidden processes detection Detection of processes hidden from Windows API Most powerful in the world at the current time Detection of processes with full path and name (unique) 那么我们就看看它用到了什么“Most powerful”tech,RkU设了两道障碍: 1. 从(*PspCidTable)->TableCode所指地址开始0x1000字节范围内,专门搜索线程对象指针,然后通过调用IoThreadToProcess得到相应进程对象。 2. 在XP以上OS中,用特征搜索的方式获得内核线程调度链表头KiWaitListHead,然后通过遍历该链表获取部分进程对象的指针。 BSOD的原因大家应该已经知道了,这里不再赘述。感觉俄罗斯人做东西挺变态的。 |
|
沙发#
发布于:2007-04-14 12:59
整天纠缠在进程隐藏和反隐藏的路上,如果完全不进程,又哪里来这些烦恼?我现在无进程,无摸块,不是隐藏了,而是完全没有,只有动态分配的一段代码在运行,看你AntiRootkit怎么弄。
|
|
板凳#
发布于:2007-04-14 13:54
动态分配代码真猥亵,不过没什么新奇的
一个rk不能永远没只有一段代码,, ![]() |
|
|
地板#
发布于:2007-04-14 20:58
远远还不够~只要是执行代码一定会找到你~
|
|
|
地下室#
发布于:2007-04-14 23:05
呵呵,都是牛人,向大家学习来了
|
|
5楼#
发布于:2007-04-18 09:21
引用第3楼killvxk于2007-04-14 20:58发表的“”: 不错,除非你能不通过CPU来执行,也许GPU是个不错的地方,嘿嘿。。。。。。 |
|
|
6楼#
发布于:2007-04-18 12:50
只是一种思路 :) 最近被cardmagic给搞郁闷了,哈哈
|
|
7楼#
发布于:2007-04-19 14:05
引用第5楼wowocock于2007-04-18 09:21发表的“”: GPU能行么? ~~ |
|
|
8楼#
发布于:2007-04-19 14:12
wowocock想把代码变成材质~~~~
haha |
|
|
9楼#
发布于:2007-04-24 10:02
这种涂改可能会有问题,我在机器上改了notepad后,系统崩溃。(我机器上只装了TrendMicro Officescan)
![]() |
|
|
10楼#
发布于:2007-04-24 10:43
引用第9楼cardmagic于2007-04-24 10:02发表的“”: 早试过了,不是可能有问题,是肯定有问题。像2000涂掉pid就崩 |
|
11楼#
发布于:2007-04-24 15:22
恩,崩溃确实很有可能,我也只是在xp sp2下试过,代码是在fu上加的, pid赋的0xffffffff
|
|
12楼#
发布于:2007-04-29 10:21
引用第10楼kernel_kernel于2007-04-24 10:43发表的“”: 这个也不定 要看情况 |
|
|
13楼#
发布于:2007-04-29 22:14
"4. 从0x81000030-0x8116xxxx之间搜索EPROCESS结构指针。"
该如何扫描内存? 我做了一个暴力搜索,结果蓝屏,比如:0x81277656 地址处为<???>(这是什么意思),觉得该地址不会没有内容吧 |
|
14楼#
发布于:2007-04-30 10:37
....
要判断有效性~ |
|
|
15楼#
发布于:2007-04-30 11:21
引用第14楼killvxk于2007-04-30 10:37发表的“”: 多谢大牛:) |
|
16楼#
发布于:2007-05-12 21:59
躲有什么用呢???直接结束IceSword就算了,躲不起了,就杀吧!!!!
呵呵~~ 怎样可以关掉IceSword啊??请教各位牛人~~~pspTerminateProcess现在还有用吗? |
|
17楼#
发布于:2007-05-12 22:19
你是写流氓还是写rk啊,流氓的做法估计会让anti的作者们鄙视的
|
|
18楼#
发布于:2007-05-12 23:25
引用第16楼alphetwx于2007-05-12 21:59发表的“”: pspTerminateProcess现在还有用吗? 你试下不就知道了吗 |
|
19楼#
发布于:2007-05-14 14:12
![]() 不懂硬编码~~~我才学写驱动,不过我觉得pspTerminateProcess好象很厉害的样子 想知道一下而已啊,不要说我写流氓软件嘛,我不是坏人来的…… |
|