构建内核HOOK框架
2015-01-05 15:45:20
阅读:0次
感谢白帽子@0x01f的投稿,以下内容供安全爱好者参考学习,本文获得投稿奖励500元,即将打入作者账户,投稿请发送邮件至 huangyuan#360.cn。
分析漏洞或者提取病毒行为,调试器是必不可少的,不过面对rootkit或者其它有驱动辅助的程序,OD或者windbg硬上可能会蓝屏,驱动级的anti还是不容小觑的;此外不少企业或者团队还希望有自己的模拟器,可以去半自动跑一些样本。不管怎么说,内核HOOK框架都是必不可少的。
内核HOOK需要关注的类型并不多:SSDT、ShadowSSDT、IDT内核关口HOOK;文件系统过滤,可以自建控制设备和卷设备过滤,也可以使用MiniFilter;网络控制,TDI/WPF驱动必不可少,甚至需要自己的NDIS驱动;重点当然是内核入口,现在的主流是KiFastCallEntry,我们也是处理了这个点。
单纯的HOOK这些点以及加一些过滤是没有意义的,重要的还是人为地参与和控制。首先需要重载内核,即加载磁盘文件,而不使用系统正在使用的内核,考虑到磁盘文件可能也有问题,可以根据操作系统版本号加载自己的文件;调试框架也需要自己重新构建,最好自己定义结构采集进程信息,仿造windows的DebugPort;文件和注册表重定位,这个是比较重要的,也是记录行为的关键;驱动和应用层通信,通信可以有很多种方式,可以简单实用DeviceIoControl。
作为一个HOOK框架