首页
社区
课程
招聘
[讨论]偶然发现一种进程保护的方法,写个demo求大牛们结束进程~
发表于: 2012-5-20 11:06 13965

[讨论]偶然发现一种进程保护的方法,写个demo求大牛们结束进程~

2012-5-20 11:06
13965
如题:



补充:驱动加了vmp,请虚拟机运行之~~

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 44
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
。。。。。释放出驱动。。。。。报病毒
2012-5-20 11:16
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
3
驱动加了vmp,请虚拟机运行之~~
2012-5-20 11:25
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大牛们一般不会管报什么吧,而且报的病毒很多就不是病毒
2012-5-20 11:26
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哈哈,用linux的wine無法執行XD。
2012-5-20 11:39
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
6
关注中,望牛们分享出来。
2012-5-20 11:41
0
雪    币: 2882
活跃值: (1240)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
7
大牛们一般不会管报什么吧,而且报的病毒很多就不是病毒

大牛们肯定是越报毒越有兴趣
2012-5-20 12:14
0
雪    币: 297
活跃值: (235)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
8
好玩意,等大牛来搞定
2012-5-20 12:46
0
雪    币: 127
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
创建一个叫“DriverTexting” 的deivice,让ring3去日它的时候,不让IRP返回~

剩下的就是堆代码了,要搞就搞这个device object~~ 吃饭
2012-5-20 14:22
0
雪    币: 38
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
请问你是怎么发现的,发现时的背景是怎么样的?
2012-5-20 15:57
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
11
分析得很Perfect~~
2012-5-20 15:59
0
雪    币: 1905
活跃值: (1537)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
哪位神的马甲?
2012-5-20 20:37
0
雪    币: 538
活跃值: (259)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
貌似 N久以前看 MJ0011 神牛发过...
2012-5-20 23:34
0
雪    币: 2177
活跃值: (2045)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
14
直接结束任务就ok了。
2012-5-21 10:09
0
雪    币: 44
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
2012-5-21 12:43
0
雪    币: 219
活跃值: (738)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
16
说一下 任务管理器   结束进程时候   是通过RING3  Openprocess  得到  openHnadle  送给 TerminaterProcess        不过任务管理器可以   计算出进程Hanlde 直接  给TerminaterProcess
       在RING0 其实 只要HOOK  NtTerminaterProcess  可以做到进程保护        
                  (⊙o⊙)…不好意思 本人语文不好 表达不好
2012-5-21 13:42
0
雪    币: 1050
活跃值: (1208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
不明白楼上说的和LZ的DEMO有什么关系……刚才看了一下……打开程序,然后用任务管理器点终止,进程没有被终止,看一下线程的栈回溯
kd> !thread 81f39a10
THREAD 81f39a10  Cid 00e8.0154  Teb: 7ffde000 Win32Thread: e23ed4a8 READY
IRP List:
    81ecc150: (0006,0094) Flags: 00000884  Mdl: 00000000
Not impersonating
DeviceMap                 e1d6e1e0
Owning Process            0       Image:         <Unknown>
Attached Process          81f39c88       Image:         Anti-KillProcess-Demo.exe
Wait Start TickCount      20176          Ticks: 0
Context Switch Count      12437                 LargeStack
UserTime                  00:00:00.109
KernelTime                00:00:00.015
Win32 Start Address Anti_KillProcess_Demo (0x0057c0d4)
Start Address kernel32!BaseProcessStartThunk (0x7c8106f5)
Stack Init b2965000 Current b2964914 Base b2965000 Limit b2961000 Call 0
Priority 8 BasePriority 8 PriorityDecrement 0 DecrementCount 16
ChildEBP RetAddr  Args to Child              
b296492c 80501cd6 81f39a80 81f39a10 804fad62 nt!KiSwapContext+0x2e (FPO: [Uses EBP] [0,0,4])
b2964938 804fad62 81ecc160 81ba31a8 81e09310 nt!KiSwapThread+0x46 (FPO: [0,0,0])
b2964960 b1e3304c 00000000 00000000 00000000 nt!KeWaitForSingleObject+0x1c2 (FPO: [5,5,4])
WARNING: Stack unwind information not available. Following frames may be wrong.
b2964994 b1e330f8 000022b8 b2964a90 804ef119 AntiKillProcess+0x104c
b29649a0 804ef119 81feabd8 81ecc150 81ecc150 AntiKillProcess+0x10f8

b29649b0 80579616 81feabc0 81f489ac b2964b58 nt!IopfCallDriver+0x31 (FPO: [0,0,0])
b2964a90 805b5cbc 81feabd8 00000000 81f48908 nt!IopParseDevice+0xa12 (FPO: [Non-Fpo])
b2964b18 805b2065 00000000 b2964b58 00000040 nt!ObpLookupObjectName+0x56a (FPO: [11,19,4])
b2964b6c 8056c223 00000000 00000000 00000001 nt!ObOpenObjectByName+0xeb (FPO: [7,5,4])
b2964be8 8056cb9a 0012fc38 c0100080 0012fbd8 nt!IopCreateFile+0x407 (FPO: [Non-Fpo])
b2964c44 8056f2ac 0012fc38 c0100080 0012fbd8 nt!IoCreateFile+0x8e (FPO: [14,3,0])
b2964c84 b2c5f82a 0012fc38 c0100080 0012fbd8 nt!NtCreateFile+0x30 (FPO: [11,0,0])
b2964d30 8053e638 0012fc38 c0100080 0012fbd8 pmhafchg+0x1082a
b2964d30 7c92e4f4 0012fc38 c0100080 0012fbd8 nt!KiFastCallEntry+0xf8 (FPO: [0,0] TrapFrame @ b2964d64)
0012fb94 7c92d09c 7c8109a6 0012fc38 c0100080 ntdll!KiFastSystemCallRet (FPO: [0,0,0])
0012fb98 7c8109a6 0012fc38 c0100080 0012fbd8 ntdll!ZwCreateFile+0xc (FPO: [11,0,0])
0012fc30 7c801a53 00000000 c0000000 00000000 kernel32!CreateFileW+0x35f (FPO: [7,22,0])
0012fc54 004013b0 00416560 c0000000 00000000 kernel32!CreateFileA+0x30 (FPO: [7,0,0])
0012ffc0 7c817067 0007da50 7c92d950 7ffdf000 Anti_KillProcess_Demo+0x13b0
0012fff0 00000000 0057c0d4 00000000 78746341 kernel32!BaseProcessStart+0x23 (FPO: [Non-Fpo])

可以看到进程尝试打开一个东西,因为LZ说没有使用HOOK(实际用ARK扫描也的确没发现HOOK),所以打开的应该是一个设备,验证一下:
kd> da 00416560
00416560  "\\.\DriverTexting"

kd> !devobj 81feabd8
Device object (81feabd8) is for:
DriverTexting \Driver\AntiKillProcess DriverObject 81ba31a8
Current Irp 00000000 RefCount 1 Type 00000022 Flags 00000040
Dacl e12c6af4 DevExt 00000000 DevObjExt 81feac90
ExtensionFlags (0000000000)  
Device queue is not busy.

kd> !drvobj 81ba31a8
Driver object (81ba31a8) is for:
\Driver\AntiKillProcess
Driver Extension List: (id , addr)

Device Object list:
81feabd8  
可以看到这个设备是由demo释放的的驱动建立的,由于LZ说了加了VMP就不看CREATE历程干了什么,不过从栈回溯上看应该是调用了KeWaitForSingleObject让线程永远无法返回,所以线程就没办法被终止了~

其实一直在想有没有一种办法不用驱动在R3下纯调用标准API让线程在内核态死锁呢,请大牛说说哇……
2012-5-21 14:12
0
雪    币: 342
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Mark,楼上分析的很好
2012-5-22 09:51
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
17L分析得不错
2012-5-23 16:42
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mark.....
2012-5-23 19:37
0
雪    币: 1753
活跃值: (840)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
21
插APC可以做掉~!
已实验通过
2012-5-25 22:47
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
22
  呵呵,结贴吧。
2012-5-26 13:37
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
d:\desktop\antikillproc
2012-5-31 16:27
0
游客
登录 | 注册 方可回帖
返回
//