首页
社区
课程
招聘
[未解决,已结帖] [求助]Windows驱动键盘保护 50.00雪花
发表于: 2019-8-7 00:34 2327

[未解决,已结帖] [求助]Windows驱动键盘保护 50.00雪花

2019-8-7 00:34
2327
目前想到的攻击方式:
1.  设备过滤驱动:在kbdclass驱动上层做过滤
2.  HOOK IDT中的ISR(int 16),即修改ISR的地址
2.1 .  Inline Hook ISR
3.  HOOK kbdclass驱动的IRP_MJ_READ dispatch函数
4.  Inline HOOK IoCompleteRequest和IoCallDriver函数
5.  Inline HOOK  READ_PORT_UCHAR函数

尴尬的是,我知道怎么去攻击,却不知道该怎么去防护

1. 怎么防住上层的过滤?
2. 怎么检测这些函数被HOOK?当知道被HOOK后,我该怎么去还原
目前纠结的是我知道这些函数被HOOK了,可不知道原来的opcode是什么,它到底改了多少字节,我该怎么改回去。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 6977
活跃值: (1780)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
pchunter中我看到有显示原函数地址和当前函数地址,还有inline hook被修改了哪些字节,它是怎么做到的?
2019-8-7 00:38
0
雪    币: 9626
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
3
pch是对比文件来判断是否被hook和提取原始字节的。
2019-8-7 01:03
0
雪    币: 4402
活跃值: (1316)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
4
这个还原,不是类似内核重载吗? 
2019-8-7 10:54
0
雪    币: 6977
活跃值: (1780)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
Adventure 这个还原,不是类似内核重载吗?[em_2]
内核重载需要过pg吗?首先过pg我不会,比如恢复kbdclass的dispatch我是不是重载了kbdclass.sys?
2019-8-7 11:38
0
雪    币: 4402
活跃值: (1316)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
6
TopC 内核重载需要过pg吗?首先过pg我不会,比如恢复kbdclass的dispatch我是不是重载了kbdclass.sys?
从磁盘读取kbdclass.sys文件内容,找到dispatch中的函数处代码。 和内存中已经加载的kbdclass的函数对比一下,如果不一样,说明被inline hook了。

这个就是普通卸载inline hook的思路呀!你在论坛搜搜,应该有很多文章的:https://www.4hou.com/system/9112.html
2019-8-7 13:05
0
雪    币: 6977
活跃值: (1780)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
InLine Hook检测方法:自己实现一个PeLoader,修复重定位的时候用原模块基址修复,根据函数地址和模块基址的相对偏移,从自己加载的模块中找到这个未被hook的函数,进行对比即可。
过滤驱动的防护:获取kbdclass驱动的设备对象,检测是否有设备attach在它上面。正常情况下kbdclass的设备就在设备栈顶层,如果上面还有设备的话,直接detach
IRP dispatch函数hook检测:首先看当前的函数地址是否在当前模块地址空间内,如果不在的话,那一定是被hook了,要恢复的话,可以通过pdb获取函数地址,再替换回来就可以了
最后于 2019-10-31 11:04 被TopC编辑 ,原因:
2019-10-31 10:58
0
游客
登录 | 注册 方可回帖
返回
//