正常通过服务加载的驱动会显示在ark工具的列表里
原理是通过ZwQuerySystemInformation 或者驱动入口参数的_DRIVER_OBJECT结构中的双向循环链表遍历到
而恶意驱动模块为了躲避ark的扫描常常会使用无模块加载技术,使其无法通过正常手段查询。
下面介绍两种常见的无模块加载技术:1.傀儡驱动,通过傀儡驱动内存拉伸真正的驱动,并清理傀儡驱动痕迹。2.漏驱利用,通过白名单驱动的漏洞利用来加载我们自己的驱动,比较著名的项目为Kdmapper。
本文先介绍第一种技术:正常我们加载驱动会在DriverEntry里返回STATUS_SUCCESS表示加载成功如果我们返回STATUS_UNSUCCESSFUL,驱动会显示加载失败
运行驱动,我们发现显示驱动加载失败,但是盲点来了,我们发现夹在在中间的代码已经被执行完毕那么我们将入口点返回STATUS_UNSUCCESSFUL的驱动作为傀儡驱动,在DriverEntry和STATUS_UNSUCCESSFUL中间执行清理傀儡驱动加载痕迹和内存拉伸功能驱动的代码即可。
第一步删除自身驱动文件第二步删除注册表,要从内层向外层删,不然会留下痕迹第三步拉伸功能驱动文件到内存状态第四步修复重定位表第五步修复导入表
回复或点赞可查看完整内容
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-287672.htm