首页
社区
课程
招聘
[原创]易受攻击驱动的分析和利用
发表于: 2019-3-17 18:58 7153

[原创]易受攻击驱动的分析和利用

2019-3-17 18:58
7153

在应用层和驱动的通讯中采用iocontrol的方式,应用层只要提供一个iocontrol码,就可以调用驱动中的内容。

Switch(iocontrol)

{

Case1:...

Case2:...

Case3:...

......

}

一般我们写程序,写好驱动和应用层,测试一下能用了就可以屁颠屁颠打游戏去了。但是这里面其实是存在一个问题的。

假如,别人写了一个应用层程序,他也需要一个驱动,但是他发现他想要实现的功能可以通过上面的case3里的内容实现,那他就不需要写驱动了,用别人的写的驱动就可以了。

总而言之,如果一个驱动不加校验,可以被任何应用层程序调用,这种驱动就有可能被利用。

今天我们要分析的驱动就是GPUZ驱动,从网上下载最新版GPUZ或者直接从我打包的文件里下载gpuz.sys文件。

Gpuz这种软件是肯定会加载驱动的,但是用pchunter只看到一个路径但是文件已经不存在


那是因为他加载完了就删除了,我们可以简单的写一个循环,对这个位置进行获取,可以使用以下代码

@echo off

set syspath=C:\Users\sword\AppData\Local\Temp\GPU-Z.sys

:loop

if exist "%syspath%" (copy "%syspath%" c:\sys.bak) else (

echo ...)

goto :loop

然后就获取到sys文件了。

接下来把sys文件拖到IDA里,找到driverentry一顿F5,就可以看到如下代码了

这里的MajorFunction14就是iocontrol函数,点进去之后,就找到了一开始说的switch结构了

这里的每个case我都瞟了一眼,挑有用的说

这个很简单就是readmsr的调用,只要调用的时候outlength和inputlength写成8和4就行。

还有一个有用的是这个


整个的代码可以以46行为分界线, 分为上半部分和下半部分。

根据这些API就可以把参数猜出来,我都已经把参数名改了,按照流程顺一遍

首先,outputlength=4  inputlenght=12这里简单的验证了一下

Output就是要一个四字节指针,input是struct{ULONG64 address;ULONG32 length;}这样的东西

MmMAPIOSPACE 是把一段物理内存映射到虚拟内存,这里的物理地址是应用层参数传过来的

MDL全称是memory descriptor list 内存描述符列表,网上有很多详细的介绍,而且一家有一种说法,反正知道他是描述内存的就行了

接下来的IoAllocateMdl  MmBuildMdlForNonPagedPool  MmMapLockedPagesSpecifyCache 就是mdl的一个配套用法,这里的mdl描述的就是那一段物理内存

看下MmMapLockedPagesSpecifyCache这个函数的第二个参数,


他这里指定的是1,也就是说是usermode,意思是把mdl描述的内存映射到用户空间


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 2
支持
分享
最新回复 (6)
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
ZwQuerySystemInformation SystemProcessInformation了解一下
2019-3-17 19:17
0
雪    币: 490
活跃值: (85)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
hzqst ZwQuerySystemInformation SystemProcessInformation了解一下
R3用不了这些函数啊
2019-3-17 19:31
0
雪    币: 6124
活跃值: (4646)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
西瓜霜 R3用不了这些函数啊
谁告诉你R3用不了的。
ps:现在至少IO buffer和cmp是加密的,想盗用几乎是不可能的。
2019-3-17 20:12
0
雪    币: 11
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我在测试过程中,gpuz.sys running successfully!后,gpuz.exe崩溃是什么情况???
2020-4-25 22:01
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很好
2020-4-26 10:01
0
雪    币: 622
活跃值: (1231)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
不错,刚好缺少驱动分析的资料,可以私信加个好友交流下
2020-4-28 11:12
0
游客
登录 | 注册 方可回帖
返回
//