通过使用共享页面确定库地址来绕过Windows ASLR
我对ASLR非常熟悉,但今天我听到了一个关于在
Windows中实现ASLR的新的有趣事实.
为了优化性能,如果进程A和B加载相同的dll,Windows只会将其加载一次到物理内存,并且两个进程将通过共享页面共享同一个实例. 这是旧闻.但有趣的是,进程A和B都将在同一个虚拟地址中加载共享库(为什么??). 在我看来,任何本地攻击(例如权限提升)都可以通过以下方式轻松绕过ASLR: 1. Create a new dummy process 2. Check the address of dlls of interest (kernel32,user32 ..) 3. Attack the privileged process and bypass ASLR with the information from step 2. 我使用Olly做了一些简单的测试,发现共享库确实加载在同一个虚拟地址中. 如果确实如此,那么ASLR对于本地开发是否无用? 解决方法
你是对的,ASLR对本地攻击者的防御很小.它主要用于阻止远程攻击中的硬编码地址.
编辑:我之前的回答中的一些细节是不正确的,尽管上面的观点仍然存在.启用ASLR的DLL的基地址实际上是两者的函数:(1)Windows在启动时从一组256个可能值中选择的随机偏移量; (2)加载DLL的顺序,在系统启动期间,会话管理器将已知DLL随机化.因此,仅了解随机偏移量就不足以计算任意ASLR’d DLL的基址.但是,如果您能够直接观察共享内存中目标DLL的地址(如您所述),则无论如何都会关闭所有投注. 资料来源: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 网络流量监控器mrtg全攻略
- powershell – Vista上的WMF 4.0和DSC?任何机会?
- windows – 当不访问域的网络时,域中的计算机启动速度很慢
- windows – 如何以Bamboo的管理员身份运行批处理脚本?
- windows 平台使用 VS2017 编译openssl源码
- Qt Designer 无响应-解决失败
- windows-phone-8 – 为什么要警告Newtonsoft.Json.JsonConv
- 在Windows和活动目录上使用什么git服务器解决方案?
- Windows – 如何删除Server 2008 SP1的安装文件
- .net – Windows Phone 8上的UI测试和自动化