首页
社区
课程
招聘
用 WinDbg 内核调试查找隐藏进程
2008-10-30 20:19 17292

用 WinDbg 内核调试查找隐藏进程

2008-10-30 20:19
17292
用 WinDbg 内核调试查找隐藏进程

查找隐藏进程的方式有很多种,可以枚举内核进程链,可以枚举句柄,也可以暴力搜索内存等。本文介绍的方法就是暴力搜索内存法,不过不需要编码,而是直接利用 WinDbg 本机内核调试功能,查找隐藏进程。内核调试下都可以使用,不过双机调试时速度太慢,要等很久结果才会出来。

首先是定位搜索范围的问题,EPROCESS 结构都是分配在 NonPagedPool 中,只需要搜索这段内存即可。

lkd> dp nt!MmNonPagedPoolStart l1
81f46104  84005000
lkd> dp nt!MmSizeOfNonPagedPoolInBytes l1
81f46108  03dfb000

得到搜索范围,还需要用来搜索的特征码,从而定位 EPROCESS 结构。

lkd> dt nt!_OBJECT_HEADER (@$proc - 18)
   +0x000 PointerCount     : 60
   +0x004 HandleCount      : 2
   +0x004 NextToFree       : 0x00000002
   +0x008 Type             : 0x84040d40 _OBJECT_TYPE
   +0x00c NameInfoOffset   : 0 ''
   +0x00d HandleInfoOffset : 0 ''
   +0x00e QuotaInfoOffset  : 0 ''
   +0x00f Flags            : 0x20 ' '
   +0x010 ObjectCreateInfo : 0x869cab10 _OBJECT_CREATE_INFORMATION
   +0x010 QuotaBlockCharged : 0x869cab10
   +0x014 SecurityDescriptor : 0x9e84701a
   +0x018 Body             : _QUAD

偏移为 8 的对象类型可以做为特征码。

lkd> .foreach (place { s-[1]b 84005000 L 03dfb000 40 0d 04 84 00 00 00 }) { !process (${place} + 10) 0 }
PROCESS 84040910  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00122000  ObjectTable: 88a000c0  HandleCount: 907.
    Image: System

PROCESS 84686ae0  SessionId: 0  Cid: 0ffc    Peb: 7ffd5000  ParentCid: 02ec
    DirBase: 7dadf760  ObjectTable: b0e967e0  HandleCount: 291.
    Image: wmpnetwk.exe

PROCESS 846fc3d0  SessionId: 1  Cid: 0458    Peb: 7ffd5000  ParentCid: 01fc
    DirBase: 7dadf720  ObjectTable: abbb7518  HandleCount:  19.
    Image: cmd.exe

PROCESS 84704390  SessionId: 1  Cid: 0bfc    Peb: 7ffd3000  ParentCid: 0458
    DirBase: 7dadf700  ObjectTable: a568fa90  HandleCount: 287.
    Image: procexp.exe

PROCESS 84769d90  SessionId: 1  Cid: 0bc8    Peb: 7ffdb000  ParentCid: 0458
    DirBase: 7dadf740  ObjectTable: a8ffd418  HandleCount:  34.
    Image: conime.exe

PROCESS 8485ed90  SessionId: 1  Cid: 0f28    Peb: 7ffdc000  ParentCid: 0458
    DirBase: 7dadf420  ObjectTable: b88b3ab0  HandleCount: 216.
    Image: notepad.exe

PROCESS 8490cb08  SessionId: 1  Cid: 0ff4    Peb: 7ffd8000  ParentCid: 01fc
    DirBase: 7dadf380  ObjectTable: b0e6dae0  HandleCount: 113.
    Image: wmpnscfg.exe

PROCESS 84935690  SessionId: 1  Cid: 0904    Peb: 7ffd9000  ParentCid: 01fc
    DirBase: 7dadf7a0  ObjectTable: b0f8fc38  HandleCount: 148.
    Image: TOTALCMD.EXE

PROCESS 84abcd90  SessionId: 1  Cid: 0b68    Peb: 7ffdd000  ParentCid: 01fc
    DirBase: 7dadf7c0  ObjectTable: af18a1f0  HandleCount: 1030.
    Image: QQ.exe

PROCESS 84af6020  SessionId: 1  Cid: 0e88    Peb: 7ffda000  ParentCid: 01fc
    DirBase: 7dadf7e0  ObjectTable: b594a128  HandleCount: 440.
    Image: firefox.exe

PROCESS 84c11ba0  SessionId: 1  Cid: 0de8    Peb: 7ffda000  ParentCid: 0458
    DirBase: 7dadf6a0  ObjectTable: aba4ce10  HandleCount:  59.
    Image: VistaLKD.exe

......

这样就能把所有进程结构枚举出来,不过定位哪个是隐藏进程还得和任务管理器显示的内容做比较才知道。

搜索范围不是很准确,好像在 Vista 系统上显示不完整,有时间把 NonPagedPool 分配的机制再研究研究。

----------------------
小喂
http://www.DbgTech.net

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞7
打赏
分享
最新回复 (12)
雪    币: 214
活跃值: (46)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
QIQI 1 2008-10-30 21:57
2
0
用!poolfind 就可以了,哪用这么麻烦
雪    币: 191
活跃值: (41)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
小喂 5 2008-10-30 23:04
3
0
果然有新方法!
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
笨笨雄 14 2008-10-31 10:48
4
0
MJ果然强悍
雪    币: 86
活跃值: (51)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
nightxie 3 2008-10-31 10:56
5
0
!poolfind
很有意思的说~~~~
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuhuajun 2008-11-2 22:15
6
0
很奇怪,我已经退出的一些程序还可以在枚举出的进程里面看得到,这意味着程序没有完全退出吗?Flashget在任务管理器里面看不到,而且我的确是退出了,但是枚举还能看得到。
雪    币: 214
活跃值: (46)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
QIQI 1 2008-11-3 13:54
7
0
Eprocess->ProcessDeleting
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2008-11-3 14:58
8
0
LZ是个抛砖高手
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
沙金 4 2008-11-3 15:01
9
0
QIQI==MJ001?
膜拜中。
雪    币: 222
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
boulevard 2010-2-5 14:17
10
0
mj的马甲真多!
雪    币: 429
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2010-2-5 17:22
11
0
mj 的马甲真不是一般的多啊
雪    币: 390
活跃值: (15)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
吹风生 3 2010-2-5 18:28
12
0
学习了~~~
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sodos 2010-2-5 23:25
13
0
aadfassssssssssssssssss
游客
登录 | 注册 方可回帖
返回