SMAP/SMEP:全称为Supervisor Mode Access Prevention(管理模式访问保护),其作用大致可以理解为,禁止内核对用户空间的访问,实现一个完全的用户空间权限控制,禁止以内核调用导致的超越权限操作,并不会以内核权限为最大而执行用户空间内的权限。
CR4寄存器:在系统内,存在控制寄存器(Control Register),其作用为可控制cpu的部分特性,其中,CR0、CR1、CR2、CR3、CR4分别控制cpu不同内容,CR4的21以及20位SMEP跟SMAP的标志位置,1具备开启功能,0具备关闭功能。
SMAP与copy_from_user的关系:某些情况下,可以采取copy_from_user的方式绕过SMAP限制,其原因在于,stac为关闭smap,copy_from_user系列函数之中,也采取stack指令来实现内核空间数据与用户空间数据的相互访问。
如何关闭SMAP:
首先需要查询是否开启。
grep smep /proc/cpuinfo
若产生回显,即开启状态。
在/etc/default/grub中写入
GRUB_CMDLINE_LINUX="nosmep/nosmap/nokaslr"
sudo update-grub
即可关闭SMEP
寻址可利用的ROP链
1、首先需要下载rp ++
2、利用rp ++寻址可利用的dll
win:
rp-win-x64.exe -f WindowsSystem32ntoskrnl.exe -r3 --colors>d:win.txt
3、在导出的文本内找寻ROP利用小工具
总结:初步探索了关于SMAPSMEP的技术原理,包括内核空间以及用户空间的隔离方法,以及copy_from_user是怎样将数据在不同空间中传递。
以及还基本了解了如何在不同程序之中寻址关于ROP链的可利用方法,需寻利用mov方法传递cr4。
原文始发于微信公众号(魅族安全应急响应中心):SMAP/SMEP 学习(一)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论