相关链接:
[原创](一)通过逆向PCHunter驱动学习64位 windows内核之 精准定位
[原创](二)通过逆向PCHunter驱动学习64位 windows内核之 识别隐藏进程
-----------------------------------------------------------------------------------------------------------------------------------------------------
PCHunter驱动3环到0环的通信协议分析
首先感谢下PCHunter的作者提供了这么优秀且还是免费的内核工具。
这次逆向是我在科锐学习32位内核课程后,
练手的小项目,
感觉自己写得比较用心的,
所以作为自己的首贴逆向贴,
发布到看雪上来,
与大家分享一下。
这篇作为第一篇,
主要内容是通过分析 PCHunte 3环请求到0环的通信协议内容,
来精准定位PCHunter驱动功能相关函数,
之后的篇幅会在此基础上,
逐篇分析PCHunter的各项内核功能的实现。
-----------------------------------------------------------------------------------------------------------------------------------------------------
样本信息:
样本名: PCHunter64ao.sys(之后简称 "样本")
版本号: 1.0.0.5
样本来源: PCHunter64.exe释放的驱动文件
调试环境: host: win7_64 + IDA + VirtualKd
dest: WMware(win7_64)
当前样本模块加载基址:
PCHunter64ao.sys FFFFF88003400000 --- 00000000000C0000
nt fffff800`03e00000 --- fffff800`043ea000
因为双机调试环境搭建相关的帖子很多,
所以略去。
在调试目标机开启PCHunter前,
IDA载入样本PCHunter64ao.sys。
-----------------------------------------------------------------------------------------------------------------------------------------------------
概述:
待IDA载入分析完如下图所示:
得知样本函数数量规模,大于等于1004个。
我的首要任务是解决在这众多的函数中,
如何找到我们要分析的功能?
根据自己开发驱动的经验,
功能较多的驱动服务中,
3环应用程序一般使用DeviceIoControl函数,
通过其提供的控制码功能,来实现与0环的功能请求通信,
0环则通过派遣回调函数表对应的IRP_MJ_DEVICE_CONTROL项中,
3环传入的控制码来实现用户请求功能的区分和功能向下派发。
但是在实际分析过程中我发现,
PCHunter 3环所有的用户请求控件码都是同一个,
样品并没有使用常归的通信手法,难道另辟蹊径或是加密了?
之后经过一系列努力,
最后发现作者确实是在设备控制的基础上,
又实现了一套 自己的 3 环与 0 环通信协议,
并对协议作了加密,
解密后的内容中又发现了动态与静态的2处校验码。
至此心中对作者又升起一股由衷的敬意。
一款免费的驱动工具,
作者却一点也不马虎。
下面开始具体介绍菜鸟分析挑战之旅(大神老鸟可以略过)。
-----------------------------------------------------------------------------------------------------------------------------------------------------
分析过程:
通过IDA很快找到样本入口处,
也就是DirverEntry,
F2设置断点,
在目标机中打开PCHunter工具,
于是IDA中断下来了.
如下图所示:
此时我已经有了pDriverObject对象指针
WINDBG>dt nt!_DRIVER_OBJECT
+0x000 Type : Int2B
+0x002 Size : Int2B
+0x008 DeviceObject : Ptr64 _DEVICE_OBJECT
//略
+0x068 DriverUnload : Ptr64 void
+0x070 MajorFunction : [28] Ptr64 long
下一目标是要找到 pDriverObject +0x070位置的写入,
也是注册其成员 派遣函数表的代码。
根据结构体信息参照,
从入口向下,
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-7-22 12:02
被hjbfa编辑
,原因: 整理链接