阅读:2951回复:17
关于RootKit设计思考
这是一篇几个月前写的文章了。今天又修改了一下,加了“2:高强度对抗:”“三:实际的工作:”两个部分。
原文地址如下: http://www.phpfav.com/?p=64 文章如下: 以下只讨论windows OS 下的纯内核级别rootkit 一:设计的思想:其实从设计的角度来看 rootkit 个人认为应该分为两种: 1:POC(概念展望) 2:Utility(UTI)(应用实战) POC:应该体现其 1-思想的前卫,2-技术的深度,3-对抗的强度,4-具体的有针对性的效果。 例如:1.Futo 2.unreal UTI :应该做到 1-通用,2-稳定,3-有针对性的对抗。 例如:1.HE4Hook 2.Hacker Defender 二:现实的矛盾:看了一些 rootkit 技术发现。 我们做一个假设:写一个实用的rootkit(高强度对抗+有实用功能)。这时不可避免的问题就要发生。 问题体现: 1:实用功能: 网络通信为根基:稳定简单的选择,封装TDI建立一个KSOCK。(此方法在2K/XP/2K3/VISTA下通用/稳定)rootkit.com上面有一个不过不好用。我个人不喜欢用NDIS来做,难度较大,开发周期长。 为了隐蔽可以选择 两个种升级方法: 1:TDI复用端口 2:KSCOK + HTTP (收发数据时在数据前面加些HTTP结构) KSHELL:这个不用怎么说了吧。怎么也得给人一个命令行执行环境吧:) 实现方法APC队列插如命令然后执行(此方法在2K/XP/2K3/VISTA下通用/稳定)。 需要注意的一点是选择什么进程的APC队列的问提。(2k/xp/2k3比较好选择,VISTA下需要精心挑选一个) 文件传输:这个没什么好说的了:用zwcreatefile zwreadfile zwwritefile 等等函数封装一下就好了。但是在用的时候需要注意一下IRQL的环境,有些环境是不允许文件操作的。 这里也给出一种升级方法利用 IOXXXX 系列的内核文件函数封装。你要问为什么?绕过SSDT监视被:) 进程管理:列进程/杀进程。列进程一般用 ZwQuerySystemInformation 标准的选择。 再给出一种升级的选择:获得EPROCESS,然后找进程的双向链表遍历一下OK了。你又要问为什么?还是绕过SSDT监视被:) 其他功能:遇到再说吧! 我们可以看到以上的这些功能在不做SSDT,不做HOOK DISPATH,不修改 KernelObject,的时候已经具备了一定的隐蔽效果。但是更大的好处再在于,先看下面一段话: “rootkit的对抗隐藏与ANTIRK必然会在内核里面有接触。当接触出现后没人知道会发生什么。rootkit胜利系统安然无恙?BSOD?ANTI胜利rootkit被发现?谁都说不好。也许有人说可以靠高质量高可靠性的rootkit编码来避免。但是,你能保证你的对手(ANTI-rootkit)也是一样?既然是对抗就存在偶然因素。还有许多的复杂环境的因素。” 这段话是我好久以前写的了。现在回到刚刚上面写的那些技术上来,上面的技术一般不会与ANTIRK接触,所以很好的避免了,一些不稳定的对抗因素。 2:高强度对抗: (6月26日追加) 这部分需要大致分为两类吧! 第一类:是对抗KIS 6/7,macfee 8/8.5,ZA pro等等。(baiyuanfan的《实用级反主动防御rootkit设计思路》已经说的很多了。) 第二类:是对抗 ANTI-rootkit 程序的检测,IceSword 1.20 ,DarkSky 1.05,RKUnHooker 3.xx,GMER等等。 两种对抗的侧重点不一样,所以实现起来比较个性化,很多技术都不是标准的,可能是灵感,可能是需要。没办法把这种对抗技术来具体的说。不过,可以归整到几个分类里面吧: SSDT/INLINE_HOOK,HOOK DISPATCH,修改内核结构/内核对象,INLINE_HOOK 非导出函数,固化修改文件等等。 三:实际的工作: (6月26日追加) baiyuanfan在《实用级反主动防御rootkit设计思路》已经放出“第一类对抗”的rootkit了。 我下面放一个针对“第二类对抗”的 rootkit 视频。 rootkit Goblin 的技术介绍: http://www.phpfav.com/?p=78 演示视频: http://www.phpfav.com/uploads/scott/rk_goblin.zip 四:结尾 以上观点不求他人接受。只是本人主观的一点想法。欢迎讨论。 我的个人信箱: xscott@126.com BLOG: http://www.phpfav.com |
|
沙发#
发布于:2007-06-27 13:54
如果 用darkspy检测你的注册表。
用icesword1.2里的filereg检查你的文件呢 ? 为什么rkunhooker没有报出darkspy的钩子,记得好像是可以报的,难道被patch了? 呵呵 |
|
|
板凳#
发布于:2007-06-27 14:33
如果根本没有注册表,FileReg等等也查不到文件呢(用XXX)
关注楼主~学习 |
|
|
地板#
发布于:2007-06-27 14:40
看了视频,楼主的机器那么快啊,RKU的hidden file detect和code hook detect一下子就过去了~
hidden driver detect呢? |
|
|
地下室#
发布于:2007-06-27 15:15
cardmagic
我用的是 DARKSKY 1.05 和 RKU 3.0.80.295 ,刚刚我又测试了一下。 先开DARKSKY 后开RUK 在RUK的SSDT HOOK 和 CODE HOOK 里面确实没发现DARKSKY的钩子。 |
|
5楼#
发布于:2007-06-27 16:12
引用第2楼WQXNETQIQI于2007-06-27 14:33发表的 : 没有注册表 这样的backdoor不实用。 如果对最新的is , 查不到文件,可以拿来show一下你的做法。 赫赫 |
|
|
6楼#
发布于:2007-06-27 16:14
引用第4楼xscott于2007-06-27 15:15发表的 : 版本我没注意。 不过我手上的版本,确实可以逮到一个。 |
|
|
7楼#
发布于:2007-06-27 16:23
注册表隐藏极度困难,离线分析该如何对抗——在linux上分析windows的注册表,完全可以的说~~~
|
|
|
8楼#
发布于:2007-06-27 16:29
呵呵。我没做HIDE REG。我用的LOADSYS就是普通的服务起驱动。用LOADSYS是为了演示方便。
如果做自启动的话,我会用别的方法起驱动,不会用REG的。 |
|
9楼#
发布于:2007-06-27 16:34
不用REG的为什么不实用,嘿嘿
|
|
|
10楼#
发布于:2007-06-28 12:04
引用第9楼WQXNETQIQI于2007-06-27 16:34发表的 : 没有reg和文件,也没有进程和独立的驱动——一切尽在固化修改~ |
|
|
11楼#
发布于:2007-06-28 12:08
呵呵。VXK的 WIN32K 固化修改。。。。。。。
|
|
12楼#
发布于:2007-06-28 12:14
引用第9楼WQXNETQIQI于2007-06-27 16:34发表的 : 很多事情做不了, 做了也比较难稳定和通用。 |
|
|
13楼#
发布于:2007-06-29 10:38
稳定和通用而又不垃圾,难啊。。。。。。
|
|
|
14楼#
发布于:2007-06-29 10:41
引用第10楼killvxk于2007-06-28 12:04发表的 : 现在MS什么都做签名,想固化也不容易啊。 |
|
|
15楼#
发布于:2007-06-29 11:34
实现签名的验证功能 好像也是一段二进制代码,这段代码不可以固化修改么?
嘿嘿~~ |
|
|
16楼#
发布于:2007-06-29 16:12
呵呵。看来VXK在 固化修改 方面已经有所突破了。。
|
|
17楼#
发布于:2007-06-29 17:15
呵呵...
|
|
|