IceSword&Rootkit Unhooker驱动简析

Rootkit Unhooker驱动逆向分析  这个驱动本来准备端午节搞的,但后来端午节去了躺北京玩了几天,也就搁置了...最近连续花了4个晚上,大致把它搞的差不多了,有些收获...初学 window驱动,水平很菜,有些东西我也未必清明,加上3环的代码还没有吃透,期间也没有用调试器跟踪,全是IDA(F5)静态分析的,谬误在所难免, 高手请飘过,希望对菜鸟学习有点帮助.1.SSDT检测这个功能有三个IoControlCode与之对应,他们分别是 阅读详情
IceSword版本:1.20cn 修订号:061022
----------------------------------------------------

0. 进程
  (略)

1. 端口
  IS调用IoBuildDeviceIoControlRequest分别向Tcpip.sys所创建的TCP设备对象和UDP设备对象发送IRP,在输出缓冲区中将返回端口/IP/状态/PID的结构数组(DS也是这么搞的,只不过没关联到进程)。

2. 驱动
  IS在驱动部分中通过调用NtQuerySystemInformation (SYSTEMMODULEINFORMATION) 来枚举内核模块,这里顺便插一句,在应用部分中,IS调用EnumServiceStatusExA函数把所有已运行模块枚举出来。每当枚举出一个模块时,到注册表中查找其ImagePath值,并与在内核部分列举出来的相应模块对比路径,若路径相同则认为已存在,若不同或没找到则说明是隐藏模块。

3. 注册表
  IceSword中注册表处理比较简单,即调用ZwOpenKey,ZwQueryKey,ZwClose,ZwEnumerateKey,ZwEnumerateValueKey来枚举。在调用它们之前都要对其前几十字节进行恢复。

4. 文件系统
  这部分算是重点了,也是IS处理得比较巧妙的地方,即采用所谓的Raw FSD I/O来枚举文件和目录。其实就是调用IoAllocateIrp,然后自己填好各个域(先发IRP_MJ_CREATE,再发IRP_MJ_DIRECTORY_CONTROL(IRP_MN_QUERY_DIRECTORY)),最后“直接”发到ntfs.sys/fastfat.sys的DispatchCreate和DispatchDirecotryControl派遣例程,但这里有两个问题需要注意:

a. IS在填充IRP_MJ_DIRECTORY_CONTROL的IRP时,在下层堆栈中设立了SL_RETURN_SINGLE_ENTRY标志,这就直接导致FSD每次只会返回给我们一个FILE_BOTH_DIRECTORY_INFORMATION结构,而不是全部返回(DS是全部返回的)。当IoStatus.Status == STATUS_NO_MORE_FILES时确认枚举完毕。

b. IS是有办法直接定位到上面说的派遣例程的地址的(通过特征搜索),人家也没直接调用IoCallDriver,而是直接call过去的,并且会变态的不停恢复派遣例程的前几十个字节,所以你用什么FSD dispatch routine table HOOK,什么FSD HOOK都白扯。  


RkU版本:3.30.150.400
------------------------------------------------

0. 进程
  (略)

1. 驱动
"Hidden drivers detection
Detection of drivers hidden from Windows API
combines four different methods of detection and including special five (c) Stealth Walker technology
and six (c) KMSE - Kernel Memory Scanning Engine"   ---- RkU

  正如其在帮助文档中所说的那样,RkU确实费了一定量代码在驱动枚举模块上,分析时差点被它搞疯,还是分条列举吧:
a. 遍历IoDriverObjectType对象类型的类型链表(POBJECT_TYPE->TypeList),这样可以获得所有DRIVER类型的对象体信息,也即DRIVER_OBJECT结构。然后取出:PDRIVER_OBJECT->DeviceObject,再遍历DeviceObject->AttachedDevice,得到相应DRIVEROBJECT信息,这些东西凡是不重复的统统放入输出缓冲区。
b. 遍历IoDeviceObjectType对象类型的类型链表,思路同上。

  当然a和b成功实现枚举的前提是NtGlobalFlags变量设置了Maintain type list标志,否则输出缓冲区什么也没有。

c. 先调用ZwOpenDirectoryObject打开目录对象获得句柄,然后调用ObReferenceObjectByHandle获得目录对象的指针(其结构为OBJECT_DIRECTORY),然后开始枚举:    
I. 先从HashBuckets数组中取得索引为0的对象目录项指针
II. 判断是否为0,若为0则取下一项。
III. 若不为0,取得POBJECT_DIRECTORY_ENTRY->Object,即对象体。然后根据对象头Object_Header中的类型域判断是否是IoDriverObjectType或IoDeviceObjectType,按照a,b的方式分别处理。若都不是则判断是否是“目录”类型,若是则递归枚举。否则,从POBJECT_DIRECTORY_ENTRY->ChainLink中取下一项继续遍历。

d. 通过DRIVER_OBJECT.DriverSection(即PsLoadedModuleList链表)枚举驱动模块。

  好了,已经说了4项了,至于最后的"special five (c) Stealth Walker technology and six (c) KMSE",其实就是从内核地址空间0x80000000-0xffff0000之间暴力搜PE映像,然后综合某些条件来判断是否驱动的PE映象,变态吧???

2. Disk Low-Level Scanning
  调用IoBuildAsynchronousFsdRequest创建一个主功能码为IRP_MJ_READ的IRP发到下层卷管理器驱动ftdisk.sys读磁盘扇区信息,这里是绕过了FSD的。 
rootkit unhooker 很好的检测工具,功能比Icesword更强大。检测隐藏的驱动,rootkit,隐藏的进程,文件等,可以检测很多隐藏的病毒。内核学习必备。 立即下载

相关推荐

Rootkit Unhooker

Rootkit Unhooker. SSDT shadow SSDT ring0 HOOK 不多说.用了就知道

网安面试必看:RootKitUnhooker检测工具的使用

Rootkit是一种获取系统root权限的恶意软件,能隐藏自身及关联文件、进程和网络链接。Rootkit Unhooker是专用于检测和清除Rootkit的工具,支持32位Windows系统。主要检测功能包括:SSDT钩子检测恢复(可追踪挂钩模块并清理)、隐藏进程/驱动/文件检测(识别未在系统列表中显示的可疑对象)、隐藏代码检测(发现驱动中的可执行代码片段)、用户模式钩子检测(处理进程注入)以及生成详细报告。该工具通过内核级扫描,有效对抗90%的Rootkit威胁,需管理员权限运行。

Andytoe的博客 688

RootkitUnhooker(Rootkit卸载工具)

Rootkit卸载工具,可以看到hide process,hide IAT,SSDT 等,且可以卸载rootkit.

RK检测工具Rootkitunhooker使用实验

SSDT钩子的检测和恢复,显示了内核系统调用表的所有函数、函数地址、挂钩标记和挂钩此函数的模块名字,单单是这个标签页提供了足够的信息来检测和清除90%的rootkit,在检测到一个钩子并且追踪到了挂钩些函数的模块名字(和安全软件对抗的模块)后,你可以清除所有的SSDT钩子,在注册表里搜索目标模块并且删除引用了模块的项,然后删除目标模块并重启。潜藏代码检测,这应该是Rootkit Unhooker特有的功能,主要是检测无标识的可执行代码片段(如驱动中隐藏的可执行代码)。5. 隐藏文件检测“Files”

m0_70405138的博客 690

Rootkit Unhooker中文版

可以查看inline hook或SSDT的一个工具

RKUnhookerLE3.8.389.593

强大的rootkit 工具,懂系统安全的都知道这个软件 2011-02-26编译的 支持xp/vista/win7

RK检测工具RootkitUnhooker使用实验

rootkit unhooker的使用

xiao_ZHEDA的博客 309

win-unhooker:anti-rootkit-Windows Unhooker的简单实现

双赢 anti-rootkit-Windows Unhooker的简单实现。

Android应用程序窗口(Activity)的视图对象(View)的创建过程分析

Android应用程序窗口(Activity)的视图对象(View)的创建过程分析

ufryyfdf的博客 317

【Android】条形码/二维码扫描——ZXing源码分析

正在更新中 针对3.2.1版本源码 与其他版本代码可能会有出入,但核心思想基本不变。 首先从com.google.zxing.client.android包中的目录结构分析:Book:这个文件夹中有5个类: BrowseBookListener 实现了adapter的点击事项响应,通过获取ISBN,然后跳转到Google books中查询响应的详细信息。 SearchBookContents

年轻的学徒 2453

华为昇腾 910B 实战:DeepSeek-R1 蒸馏模型高效部署与性能调优全解析

本文详细解析了在华为昇腾910B硬件平台上高效部署DeepSeek-R1蒸馏系列模型(14B/32B版本)的完整实战流程。内容涵盖从MindIE环境搭建、镜像获取、模型准备,到服务配置、内存参数调优、性能测试及常见问题排查,为开发者提供了基于昇腾910B进行大模型部署与优化的全链路指南。

weixin_28235513的博客 211
上一篇: Borland 传奇拾遗: CodeGear RAD Studio 2007, 转折继续,产品诱人
下一篇: Linux下一个Proxy的分析[很多地方代码有错误,从新找了真的代码
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值