阅读:11162回复:57
强力的文件隐藏手段:绕过 Raw 模式文件系统 I/O Rootkit 检测程序
说明:我第一次翻译技术含量如此高的文章,所以肯定有很多错误、不严谨、不贴切、拗口(例如标题)等等问题,请大家谅解。
强力的文件隐藏手段:绕过 Raw 模式文件系统 I/O Rootkit 检测程序 =================== 作者:CardMagic 翻译:FlowerCode(http://www.0ginr.com/bbs) =================== 在读过 Hoglund 的文章之后,我终于决定要写这篇文章。 实际上,在中国有许多聪明的 rootkit/antirootkit 作者有他们自己的有趣的材料,但不幸的是,由于许多原因(商业合同,语言障碍,甚至和某些神秘组织有关),他们不能将这些材料公开。 这篇文章的主要构想在我设计 DarkSpy 时就产生了,但当我完成了总线级文件隐藏程序的编写之后,它被丢弃了。 不过希望这篇文章仍能对这里的某些人有用。:) 好的,让我们进入正题: 1. 基于 Raw I/O 的隐藏文件检测 这种类型的文件检测技术在现代的检测程序中使用非常普遍。例如 DarkSpy/Icesword。 这种检测手段的主要思想是直接发送 I/O 请求包到文件系统,这样检测程序就会获得系统文件的真实信息。 这对于检测挂钩本地函数和文件系统过滤驱动的隐藏方式来说很有效。 此外,DarkSpy 还加入了两个很有效的手段(第二个手段使得 DarkSpy 的文件检测比 Icesword 要好 ^_^) a)自己实现 IofCallDriver,并直接调用原始的文件系统派发函数,这将使挂钩文件系统函数的隐藏方式失效。 b)在每个I/O操作前从内存恢复整个文件系统文件映像,这可以对抗对文件系统函数进行 Inline 型代码修改的隐藏方式 2. 绕过这种检测技术的原理: 这里我们只讨论真正的文件隐藏程序(不包括使用文件流的那些东西),我们还会描述绕过 DarkSpy 的原理,因为 DarkSpy 是非常典型的基于 RAW I/O 的文件检测程序。首先让我们来看看DarkSpy文件检测的基本流程。 ----------------- --------------------- | DarkSpy | <1> ---->恢复 | 文件系统映像 | ----------------- <2>----->调用---> | 派发代码 | <3><-----返回----- |-------------------| 从上面的图我们可以看出,要想在文件系统里做手脚几乎是不可能的,因为 DarkSpy 已经恢复了整个映像,甚至不依赖系统函数直接调用了派发代码。 现在开始改变我们的视角然后动点脑筋,我们能否在除了文件系统以外的地方拦截 I/O 处理呢? 答案是肯定的,因为文件系统会调用许多系统函数。 但我们必须找到一个恰当的调用,它要能够有机会接触 I/O 内容。哪个最好呢? 也许你会首先想到 IofCallDriver……但不幸的是 DarkSpy 已经在内部实现了它,因为 IofCallDriver 是非常容易实现的 :) 所以我们必须另外选择一个,它必须: a) 很难自己实现 b) 将会被文件系统调用 c) 可以接触到I/O内容 究竟哪一个是最好的呢? 没错,你说对了,是 IofCompleteRequest。好吧……这是我们的想法…… 通过 IofCompleteRequest 代码修改,检查我们是否被文件系统调用,如果是,我们将过滤 I/O 内容。这样,我们将可以完全绕过所有现代的基于 RAW I/O 的文件检测程序。 3. 主要代码: 参见—— http://www.rootkit.com/vault/cardmagic/hidefile.c |
|
沙发#
发布于:2013-08-24 20:04
看看先,谢谢了啊。
|
|
板凳#
发布于:2008-07-20 12:31
引用第31楼WQXNETQIQI于2007-04-10 21:22发表的 : 那你就在这里多多培养这些小流氓,以后你对付起来也有些意思点吧! 不像现在这么无聊呀。。。。。 最好开个流氓培训班出来。 呵呵!!!! |
|
地板#
发布于:2007-06-12 13:39
引用第54楼killvxk于2007-06-12 11:11发表的 : 看啥了? ![]() |
|
地下室#
发布于:2007-06-12 11:11
引用第53楼GoodOnline于2007-06-11 16:18发表的 : 最近看了一些东西觉得,他们真的没有啥品~ |
|
|
5楼#
发布于:2007-06-11 16:18
这个保密,那个保密,如果都保密,就别说出来.
估计以后大伙法贴吹牛吧. |
|
6楼#
发布于:2007-04-11 16:15
引用第51楼rhettxie于2007-04-11 14:39发表的“”: 可以过滤不少东西~比如键盘鼠标的玩意~~嘿嘿~~ 不过做得太多估计机器会很卡~ 一切过滤请用正规filter |
|
|
7楼#
发布于:2007-04-11 14:39
引用第50楼wangjianfeng于2007-04-11 14:37发表的“”: 顶 我想知道 hook IofCompleteRequest 这个函数还能做点什么 ? 谁暴点东西出来 ? |
|
|
驱动小牛
![]() |
8楼#
发布于:2007-04-11 14:37
引用第48楼killvxk于2007-04-11 12:14发表的“”: V大真的很谦虚,这些话说的太对了,看微软才是真正的有海洋的深度啊,这一点值提我们小牛们努力学习. Wo大也很谦虚,常给小牛们解答个问题, Doskey很伟大,常反些东西给我们学,Xikug也很伟大,嘿嘿. 我能说啥,我就会说这个,我是谁,我是小牛,这年头,装B与卖淫同罪. ![]() |
9楼#
发布于:2007-04-11 13:49
引用第47楼killvxk于2007-04-11 12:11发表的“”: 支持!!! |
|
10楼#
发布于:2007-04-11 12:14
我愿意花钱卖一个产品级的代码,但是绝对不会花钱卖一个poc代码~
虽然我也很希望看到代码,但是产品级和poc级之间的差距,就好比M$和我们 这些所谓的内核很熟的人之间的差距~ |
|
|
11楼#
发布于:2007-04-11 12:11
为啥要反呢?
人家可爱的ntfs for linux 的驱动代码在那里呢~读取ntfs的玩意,网上也不少代码,如果不考虑那个directDisk现在看来FileLib很容易实现,只是我不知道实现它有啥意思~ 从本质上说,我不相信一个几个人开发的东西,可以有一个几十人甚至上百人的开发的东西稳定和安全... |
|
|
12楼#
发布于:2007-04-11 10:06
这年月,有个bin,就基本上等于代码Open了。太可怕了
|
|
13楼#
发布于:2007-04-11 01:08
引用第43楼wowocock于2007-04-10 23:28发表的“”: 反出来,我是没有这个能力了。只是这个FileLib.sys的威力没有像作者描述的那么利害而已(其实就是直接打开“卷设备对象”),故有此感叹。真正有威力的应该是DirectDisk了,可惜没有bin。 |
|
14楼#
发布于:2007-04-11 00:38
很高兴能引起各位大牛的热烈讨论,不过千万不要让技术讨论演变成政治斗争啊……我还指望能偷学点东西呢……
![]() |
|
15楼#
发布于:2007-04-10 23:28
引用第42楼slwqw于2007-04-10 23:24发表的“”: 如果你认为很简单的话,就象DOSKEY那样反出来给大家说说,至少我觉得里面的有点东西,我还不是很清楚。 |
|
|
16楼#
发布于:2007-04-10 23:24
引用第41楼wowocock于2007-04-10 23:04发表的“”: 你放的那个只有 FileLib.sys吧,哪里有DirectDisk的bin? FileLib.sys刚开始看,吓了一跳,那么大,以为都是好货。结果一压缩,只有17K,又吓了一跳,直接使用UE打开,发现都是空白,晕,被忽悠了一把。 |
|
17楼#
发布于:2007-04-10 23:04
首先说明下,这玩意不是我写的,不过我认为他写的还算不错,所以给放出来给大家研究,虽然前面有N多的牛人都在自我吹捧,可也希望你们拿点东西出来,不要老是以自己搞什么高深的学术研究为借口来搪塞。。。。。。
|
|
|
18楼#
发布于:2007-04-10 22:44
说实话.这个东东原理上是不难的,只要知道了你要读写的文件系统是怎么读写的不就OK了.问题是什么东西都自己来那就是问题了,现在可是一个开源合法的时代.
|
|
19楼#
发布于:2007-04-10 22:37
引用第23楼killvxk于2007-04-10 20:04发表的“”: 请问老V,这个个开源工程指的是那个? |
|
上一页
下一页