win10x64内核中断门提权
0x0 SMEP SMAP
首先来说一下改变,win10新增了SMEP和SMAP
SMEP:禁止内核执行用户空间的代码(3环代码)
SMAP:禁止内核CPU访问用户空间
所以就算提权到0环也是无法运行读取的,所以应该怎么办呢?!
0x1 解决SMEP和SMAP
首先查intel文档,找到SMAP和SMEP 可以看见就是CR4的20位和21位
解决方法显而易见了,改变CR4这两个的标志位。
0x2 第一种办法
第一种就是直接改变CR4 改成 250ef8 就过了 SMEP
改成050ef8 直接删除3就解决了
0x3 第二种方法
研究win10 dll是怎么运行的
可以看见这个stac这指令 我百度是没搜到解释,直接写stac也是识别不出来的
它的作用就是过SMAP
解决方法就是直接用硬编码 0F, 01, CB
0x4 构造中断门
查看一下 idt表 我是改了 21断点
0x5 代码
mov rax,[这里的值是 gdtr 地址] 提权读取gdt表
然后成功提权获得值
0x6总结
主要最近要比赛复现学习,不太想花太多时间详细写,坑还是挺多的,如何构造中断门啊,原理是什么啊,stac的原理,还有visual studio2019 怎么编译asm代码。就把关键位置记录了一下。