论坛首页 密码学讨论区 阅读主题

[原创]无"痕"加载驱动模块之漏驱利用(下)

211 浏览 19 回复
#1 楼主 2026-06-01 21:08:57
x64上微软增加了驱动签名机制,我们的傀儡驱动依旧需要签名,虽然泄露的sha1签名目测来看能用到微软倒闭,或者花钱买一张白签名(干坏事会被吊销)但是依然存在问题,如果能让微软的白驱动“帮忙”加载我们的功能驱动就好了。
早期驱动开发安全意识不足,导致很多微软或第三方常用驱动存在可利用漏洞,像知名的永恒之蓝漏洞或者罗技驱动利用。kdmapper也是如此项目:65dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6f1K9r3g2o6M7Y4g2K9i4K6u0r3K9$3c8E0j5i4m8H3k6i4t1`.kdmapper加载驱动原理与傀儡驱动一致都是内存加载,不过傀儡驱动换成了漏驱自己,自带白签。

漏驱为iqvw64e.sys是英特尔(Intel)网卡设备的一个驱动程序文件,被放在资源中,我们把它扒出来进行分析。
标准的驱动入口,没有任何壳或者加密,就差给pdb了。
创建设备链接,记住名字等下要在3环建立连接

注册了派遣函数对应 DriverObject->MajorFunction[IRP_MJ_CREATE] = CreateDriver;DriverObject->MajorFunction[IRP_MJ_CLOSE] = CloseDriver;DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = ControlDriver;我们利用的函数在三个中

这里有四个分支,项目中表明了是利用第一个,我们就不挨个分析了
进去第一个函数,根据上下文这里可以猜测a1是一个结构体指针

ReadMemory中调用了MemCopy对应漏驱中的0x33我们可以看到就是一个简单的拷贝内存函数,利用此函数将想要读的内容拷贝到缓冲区。(没想到这么一个小小的内存拷贝造成了任意地址读写的漏洞),读和写就是反着来,互换下缓冲区地址。同理推出结构体a1+16 是要读的地址,a1+24是缓冲区地址,a1+32是要读的长度
漏驱中还有其他可以直接调用的内核函数不过和主线无模块加载关系不紧密,本文就不放了这里是分析的申请内存函数的调用,其他函数同理 uint64_t AllocatePool(HANDLE device_handle, nt::POOL_TYPE pool_type, uint64_t size);这里先自写了获取内核导出函数,再进行调用


回复或点赞可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-287673.htm
#2 2026-06-01 21:08:57
看完了上,看下
#3 2026-06-01 21:08:57
感谢分享
#4 2026-06-01 21:08:57
感谢分享
#5 2026-06-01 21:08:57
学习学习看下
#6 2026-06-01 21:08:57
看看
#7 2026-06-01 21:08:57
感谢分享
#8 2026-06-01 21:08:57
研究一下
#9 2026-06-01 21:08:57
学习
#10 2026-06-01 21:08:57
学习
#11 2026-06-01 21:08:57
牛逼啊
#12 2026-06-01 21:08:57
感谢分享
#13 2026-06-01 21:08:57
学习了
#14 2026-06-01 21:08:57
感谢分享
#15 2026-06-01 21:08:57
感谢分享
#16 2026-06-01 21:08:57
学习了
‹ 上一页 1 2 下一页 ›

请登录后参与讨论

立即登录 注册账号