以下只讨论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
Windows Rootkit 设计与对抗
本文探讨了Windows操作系统下的内核级Rootkit设计思路,包括实用性和高强度对抗两个方面。实用功能涵盖网络通信、命令行环境及文件传输等;高强度对抗则针对特定安全软件进行。文章还分析了如何避免不稳定因素。
1755

被折叠的 条评论
为什么被折叠?



