首页
社区
课程
招聘
[原创]X64 Kernel Shellcode获取Ntos Base
发表于: 2021-3-30 16:05 11955

[原创]X64 Kernel Shellcode获取Ntos Base

2021-3-30 16:05
11955

之前网上的思路是GetPcr()->IdtBase拿到isr地址对齐后往上爆搜 'MZ' 0x5A4D,来拿到ntos base。

在win10 2004以下版本中没什么问题。

isr本身位于.text中,往上很快就能得到pe头

但是在win10 2004下,ntos的区段结构变了,.text不再是第一个区段.几个data区段跑到了上面,还有3个区段不能访问

如果继续往上爆搜,则会直接裂开。


那么换个思路,可以看到在ntos的.text中还是有很多地方引用了image base了的


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-3-30 16:52 被xiaofu编辑 ,原因:
收藏
免费 9
支持
分享
最新回复 (9)
雪    币: 8715
活跃值: (8619)
能力值: ( LV13,RANK:570 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2021-3-30 16:26
0
雪    币: 4633
活跃值: (5266)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3

既然暴力搜索会裂开,那么不是就说明搜索代码不严谨,没有判断虚拟内存是否可读,那么ZwQueryVirtualMemory确定为是在上一个可读区域内搜索,没找到就继续再找上一个可读区域再搜索不是就好了?

最后于 2021-3-30 17:24 被sonyps编辑 ,原因:
2021-3-30 17:21
0
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
4
sonyps 既然暴力搜索会裂开,那么不是就说明搜索代码不严谨,没有判断虚拟内存是否可读,那么ZwQueryVirtualMemory确定为是在上一个可读区域内搜索,没找到就继续再找上一个可读区域再搜索不是就好了?
shellcode不能直接调用api,只有拿到base了再检索导出表调用
2021-3-30 17:28
0
雪    币: 137
活跃值: (1410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你要是R3写内核shellcode的 可以直接用ZW API解析base 并且得到那些API地址 都可以直接在R3完成
2021-3-30 20:05
0
雪    币: 4633
活跃值: (5266)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
xiaofu shellcode不能直接调用api,只有拿到base了再检索导出表调用
好吧
2021-3-30 21:33
0
雪    币: 2428
活跃值: (2597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
sonyps 既然暴力搜索会裂开,那么不是就说明搜索代码不严谨,没有判断虚拟内存是否可读,那么ZwQueryVirtualMemory确定为是在上一个可读区域内搜索,没找到就继续再找上一个可读区域再搜索不是就好了?
这个api本身也只能用于查询r3内存信息吧
2021-3-31 09:45
0
雪    币: 3785
活跃值: (3947)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
感谢分享!
2021-3-31 10:01
0
雪    币: 4402
活跃值: (1396)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
9

。。看错标题了

最后于 2021-3-31 23:58 被Adventure编辑 ,原因:
2021-3-31 23:57
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
sonyps 既然暴力搜索会裂开,那么不是就说明搜索代码不严谨,没有判断虚拟内存是否可读,那么ZwQueryVirtualMemory确定为是在上一个可读区域内搜索,没找到就继续再找上一个可读区域再搜索不是就好了?
2333,这波跨频道聊天了
2021-11-25 22:57
0
游客
登录 | 注册 方可回帖
返回
//