123456789012
驱动牛犊
驱动牛犊
  • 注册日期2006-04-07
  • 最后登录2009-11-08
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望61点
  • 贡献值0点
  • 好评度60点
  • 原创分1分
  • 专家分0分
阅读:11162回复:57

强力的文件隐藏手段:绕过 Raw 模式文件系统 I/O Rootkit 检测程序

楼主#
更多 发布于:2007-04-09 21:07
说明:我第一次翻译技术含量如此高的文章,所以肯定有很多错误、不严谨、不贴切、拗口(例如标题)等等问题,请大家谅解。


强力的文件隐藏手段:绕过 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
haidejintou
驱动牛犊
驱动牛犊
  • 注册日期2009-04-24
  • 最后登录2014-10-22
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望301点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2013-08-24 20:04
看看先,谢谢了啊。
quren
驱动牛犊
驱动牛犊
  • 注册日期2008-06-11
  • 最后登录2011-04-24
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望43点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-20 12:31
引用第31楼WQXNETQIQI于2007-04-10 21:22发表的  :

放个TESTER就挂了,无数XX人虎视耽耽,怎敢放BIN~~~我们的小得很。。呵呵
不过读写都稳定得很
以前打算用来删流氓的,后来发现那些小流氓们根本不够资格~



那你就在这里多多培养这些小流氓,以后你对付起来也有些意思点吧!
不像现在这么无聊呀。。。。。

最好开个流氓培训班出来。

呵呵!!!!
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-12 13:39
引用第54楼killvxk于2007-06-12 11:11发表的  :


最近看了一些东西觉得,他们真的没有啥品~


看啥了?
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地下室#
发布于:2007-06-12 11:11
引用第53楼GoodOnline于2007-06-11 16:18发表的  :
这个保密,那个保密,如果都保密,就别说出来.

估计以后大伙法贴吹牛吧.


最近看了一些东西觉得,他们真的没有啥品~
没有战争就没有进步 X3工作组 为您提供最好的军火
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-06-11 16:18
这个保密,那个保密,如果都保密,就别说出来.

估计以后大伙法贴吹牛吧.
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
6楼#
发布于:2007-04-11 16:15
引用第51楼rhettxie2007-04-11 14:39发表的“”:





.......


可以过滤不少东西~比如键盘鼠标的玩意~~嘿嘿~~
不过做得太多估计机器会很卡~

一切过滤请用正规filter
没有战争就没有进步 X3工作组 为您提供最好的军火
rhettxie
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望65点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-04-11 14:39
引用第50楼wangjianfeng2007-04-11 14:37发表的“”:

装B与卖淫同罪.






我想知道 hook IofCompleteRequest 这个函数还能做点什么 ? 谁暴点东西出来 ?
静水流深
wangjianfeng
驱动小牛
驱动小牛
  • 注册日期2004-05-28
  • 最后登录2013-10-02
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望263点
  • 贡献值0点
  • 好评度260点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-04-11 14:37
引用第48楼killvxk2007-04-11 12:14发表的“”:
我愿意花钱卖一个产品级的代码,但是绝对不会花钱卖一个poc代码~
虽然我也很希望看到代码,但是产品级和poc级之间的差距,就好比M$和我们
这些所谓的内核很熟的人之间的差距~


V大真的很谦虚,这些话说的太对了,看微软才是真正的有海洋的深度啊,这一点值提我们小牛们努力学习. Wo大也很谦虚,常给小牛们解答个问题, Doskey很伟大,常反些东西给我们学,Xikug也很伟大,嘿嘿.

我能说啥,我就会说这个,我是谁,我是小牛,这年头,装B与卖淫同罪.
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-04-11 13:49
引用第47楼killvxk2007-04-11 12:11发表的“”:
为啥要反呢?
人家可爱的ntfs for linux 的驱动代码在那里呢~读取ntfs的玩意,网上也不少代码,如果不考虑那个directDisk现在看来FileLib很容易实现,只是我不知道实现它有啥意思~
从本质上说,我不相信一个几个人开发的东西,可以有一个几十人甚至上百人的开发的东西稳定和安全...


支持!!!
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
10楼#
发布于:2007-04-11 12:14
我愿意花钱卖一个产品级的代码,但是绝对不会花钱卖一个poc代码~
虽然我也很希望看到代码,但是产品级和poc级之间的差距,就好比M$和我们
这些所谓的内核很熟的人之间的差距~
没有战争就没有进步 X3工作组 为您提供最好的军火
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
11楼#
发布于:2007-04-11 12:11
为啥要反呢?
人家可爱的ntfs for linux 的驱动代码在那里呢~读取ntfs的玩意,网上也不少代码,如果不考虑那个directDisk现在看来FileLib很容易实现,只是我不知道实现它有啥意思~
从本质上说,我不相信一个几个人开发的东西,可以有一个几十人甚至上百人的开发的东西稳定和安全...
没有战争就没有进步 X3工作组 为您提供最好的军火
sosojohn
论坛版主
论坛版主
  • 注册日期2006-01-29
  • 最后登录2021-06-25
  • 粉丝0
  • 关注1
  • 积分1047分
  • 威望535点
  • 贡献值1点
  • 好评度178点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2007-04-11 10:06
这年月,有个bin,就基本上等于代码Open了。太可怕了
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-04-11 01:08
引用第43楼wowocock2007-04-10 23:28发表的“”:

如果你认为很简单的话,就象DOSKEY那样反出来给大家说说,至少我觉得里面的有点东西,我还不是很清楚。


反出来,我是没有这个能力了。只是这个FileLib.sys的威力没有像作者描述的那么利害而已(其实就是直接打开“卷设备对象”),故有此感叹。真正有威力的应该是DirectDisk了,可惜没有bin。
123456789012
驱动牛犊
驱动牛犊
  • 注册日期2006-04-07
  • 最后登录2009-11-08
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望61点
  • 贡献值0点
  • 好评度60点
  • 原创分1分
  • 专家分0分
14楼#
发布于:2007-04-11 00:38
很高兴能引起各位大牛的热烈讨论,不过千万不要让技术讨论演变成政治斗争啊……我还指望能偷学点东西呢……
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2007-04-10 23:28
引用第42楼slwqw2007-04-10 23:24发表的“”:


你放的那个只有 FileLib.sys吧,哪里有DirectDisk的bin?

FileLib.sys刚开始看,吓了一跳,那么大,以为都是好货。结果一压缩,只有17K,又吓了一跳,直接使用UE打开,发现都是空白,晕,被忽悠了一把。

如果你认为很简单的话,就象DOSKEY那样反出来给大家说说,至少我觉得里面的有点东西,我还不是很清楚。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-04-10 23:24
引用第41楼wowocock2007-04-10 23:04发表的“”:
首先说明下,这玩意不是我写的,不过我认为他写的还算不错,所以给放出来给大家研究,虽然前面有N多的牛人都在自我吹捧,可也希望你们拿点东西出来,不要老是以自己搞什么高深的学术研究为借口来搪塞。。。。。。


你放的那个只有 FileLib.sys吧,哪里有DirectDisk的bin?

FileLib.sys刚开始看,吓了一跳,那么大,以为都是好货。结果一压缩,只有17K,又吓了一跳,直接使用UE打开,发现都是空白,晕,被忽悠了一把。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
17楼#
发布于:2007-04-10 23:04
首先说明下,这玩意不是我写的,不过我认为他写的还算不错,所以给放出来给大家研究,虽然前面有N多的牛人都在自我吹捧,可也希望你们拿点东西出来,不要老是以自己搞什么高深的学术研究为借口来搪塞。。。。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-04-10 22:44
说实话.这个东东原理上是不难的,只要知道了你要读写的文件系统是怎么读写的不就OK了.问题是什么东西都自己来那就是问题了,现在可是一个开源合法的时代.
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-04-10 22:37
引用第23楼killvxk2007-04-10 20:04发表的“”:
还不如开源工程那个ntfs的Win驱动在linux运行有意思


请问老V,这个个开源工程指的是那个?
上一页
游客

返回顶部