主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

编程语言
程序代码
WIN/*NIX编程
其他类别
JAVA专区

 
RHU阅读排行
·Windows网络编程经验小结
·Windows XP Service Pack 2 应用程序兼容性 — 补充脚本
·网络扫描器的设计与实现
·在VB中调用Office助手
·非法探取密码的原理及其防范
·XP终端服务远程登录批处理
·在LinuxShell程序中进行身份验证
·利用键盘钩子开发按键发音程序
·LB论坛(所有版本)跨站脚本漏洞
·通过 Visual C++ 的编程模型和编译器优化增强您的应用程序

 
 
RHU最新文章
·Win32平台下的Rootkit习作
·Linux如何在系统运行过程中修改内核参数
·Shell编程:Linux系统环境程序设计之路
·汇编创建简单的窗口
·深入浅出Win32多线程程序设计之线程控制
·VC实现Win2000下屏蔽Ctrl+Alt+Del键
·隐藏任意进程 目录/文件 注册表 端口
·Windows 的多线程程序设计初步 
·Windows应用程序设计的基本术语
·透过代理看世界 用VC++实现http代理

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 程序设计 -> WIN/*NIX编程
Win32平台下的Rootkit习作

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2008-6-23 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


Win32平台下的Rootkit习作
Zion是一套Rootkit攻防函数库,我(Liang)负责全部的攻击部分,检测部分由另一实习生同学完成,能够躲避常见的安全检测工具这是本次练习中的关键任务,针对这些流行的内核级Rootkit隐藏技术,我一一对它们进行了实现。用户可通过命令行输入特定命令,达到特定的隐藏目的。

目前的实现包括:

A 挂钩系统服务描述表隐藏进程与文件
用户可在用户模式下自定义挂钩函数,放在缓冲区中传入内核态。进入内核态后,程序分配一段非分页区存放该例程。利用这种方式,即使检测软件发现了SSDT HOOK的存在,也无法得知该HOOK 例程属于哪一驱动模块(因为分配的这段非分页区不在任何模块的地址空间范围中),达到了其隐藏目的。因而是本次练习的一个亮点所在。

B DKOM方式隐藏进程、驱动模块
对于DKOM,没有很好的创新思路,唯一的原则便是分析检测工具的原理,然后制定相应的执行体对象修改方案。在隐藏驱动以及注册表部分可以绕过ICESword检测。然而,IceSword检测进程使用了四种不同的方式,其中直接搜索内存的方式无法通过DKOM方式绕过。

C 驱动派遣例程挂钩方式隐藏网络连接信息
在《Subverting the Windows Kernel》中给出了隐藏TCP连接的示例代码,本次练习中我在此基础上对其进行了完善,使其能够绕过一些Anti-rootkit如IceSword 的检测(原版并不能绕过),并增加了过滤功能(例如用户可自定义需要隐藏的ip信息与端口,操作非常友好)。另外,逆向了tcpip中查询连接信息的代码,分析出UDP的相关查询结构,实现了UDP通信的隐藏。

D 文件过滤驱动实现隐藏文件或文件夹
修改自Winodws DDK的Sample Code: Sfilter。 删去了很多功能:例如,动态绑定卷等。 这种方式与驱动派遣例程挂钩原理类似,并没有实际意义,仅仅为了Zion的完整性而加入。

E 挂钩注册表储巢查询例程实现注册表隐藏
参考Pediy的《也谈rootkit 注册表信息隐藏》。

F 对检测工具的一点总结
无论是Cross-View检测技术还是扫描内核代码检测Hook的技术,要确保检测结果的正确性,就必须保证检测所采用的技术比Rootkit本身更底层。而Zion Rootkit之所以能绕过IceSword对内核模块、端口信息、注册表的检测,正是因为在隐藏手段上,Zion使用了更为底层的技术。
从本质上讲,内核态Rootkit之所以存在,是因为Windows为了提高查询操作的效率,在内核中预留了许多冗余信息,例如:Windows采用遍历 EPROCESS链表的方式枚举进程,然而CPU调度的最基本单位是线程,断链EPROCESS并不会影响到CPU对线程的调度。如果检测工具能够找到 CPU调度线程的真实链表对其进行枚举,那么得到的结果必将是准确的(这里排除了Shadow Walker这类Rootkit技术),因为一旦Rootkit断链了CPU调度线程列表,那么被断链的线程将永远得不到执行,这种操作应当视为“删除”,而非“隐藏”。
可以这么说,运行于Windows内核级的所有检测技术,永远是不可靠的。必须比内核级Rootkit优先级别高,才能真正实现可靠检测。将操作系统以虚拟化模式运行,在其之上进行实时监测,是一种比较理想的方法(如North Security Labs 推出的Hypersight RD),因为在这种情况下,Rootkit理论上不可能知道运行在其之上的检测程序的存在。(但是,对于目前最新的硬件级Rootkit,这种检测方式也是不可靠的。比如Bluepill Rootkit)

OVER

[1] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • Python写的蜘蛛程序代码
  • C#抓取alexa排名的代码
  • 一个超级mail蠕虫的诞生
  • 洪水攻击原理及代码实现全攻略(附源代码)
  • IE7自动完成口令获取
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com