GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>电脑问题 > 关于Windows上地址空间布局随机化防御机制的分析(下)

关于Windows上地址空间布局随机化防御机制的分析(下)

来源:Ghost系统之家浏览:时间:2023-03-17 12:22:50

上篇给大家介绍关于Windows上地址空间布局随机化防御机制的分析(上),这篇文章介绍了在Windows上实施的地址空间布局随机化的一些历史,并探讨了Windows实施的一些功能和局限性。

将32位程序重新编译为64位程序,以使地址空间布局随机化更有效

尽管Windows的64位版本已经成为主流十多年了,但32位版本的使用者仍然很多。有些程序确实需要保持与第三方插件的兼容性,比如web浏览器。有时,开发团队认为程序所需的内存远远少于4GB,因此32位代码可以节省空间。甚至VisualStudio在支持构建64位应用程序之后,在一段时间内还仍然支持32位应用程序。

实际上,从32位代码切换到64位代码会产生很小但可观察到的安全性好处。原因是随机化32位地址的能力是有限的。至于具体原因,请观察图1中32位x86内存地址的分解方式。更多详细信息,请参见“物理地址扩展”。

关于Windows上地址空间布局随机化防御机制的分析(下)

内存地址分为多个组件,其中只有一些可以在运行时轻松随机化

操作系统不能简单地将地址的任意位随机化,在页面部分(0到11位)中随机分配偏移量将打破程序对数据对齐的假设。页面目录指针(位30和31)也不能被更改,因为第31位是为内核保留的,而第30位被物理地址扩展用作存储体交换技术,以寻址2GB以上的RAM,这使得32位地址中的14位不能被随机化。

实际上,Windows只尝试随机化32位地址中的8位。这些是位从16到23,只影响地址的页目录条目和页表条目部分。因此,在暴力情况下,攻击者可能仅用256次猜测就能猜出EXE的基本地址。

将ASLR应用于64位二进制文件时,Windows能够随机分配地址的17-19位(具体取决于它是DLL还是EXE)。图2显示了对于64位代码,可能的基址数量以及相应的暴力猜测数量如何显着增加,这可以使端点保护程序或系统管理员可以在攻击发生之前检测出攻击。

将32位代码重新编译为64位会大大增加可供地址空间布局随机化选择的基本地址数量

总结起来就是:

1. 必须处理不可信数据的软件应该始终编译为64位,即使它不需要使用大量内存,也可以充分利用地址空间布局随机化。

在暴力攻击中,地址空间布局随机化使攻击64位程序的难度比攻击完全相同程序的32位版本的难度至少高了512倍。

2. 即使是64位ASLR也会受到暴力攻击,防御者必须集中精力检测暴力攻击,或者避免出现暴力攻击可行的情况。

假设攻击者每秒可以对一个脆弱的系统进行十次暴力尝试。在通常的情况下,由于多个实例正在运行,目标进程保留在同一地址,攻击者会在不到一分钟的时间内发现32位程序的基地址,而在数小时内就会发现64位程序的基地址。64位暴力攻击会产生更多的干扰,但是管理员或安全软件需要注意并采取行动。除了使用64位程序来提高地址空间布局随机化的效率外,系统还应避免重新生成崩溃程序,以避免让攻击者发现基址,为了以防万一最好强制重新启动,因此应保证进程崩溃后多次刷新地址空间。

3.针对32位和64位版本的程序开发概念验证攻击的研究人员应首先关注32位,只要32位程序仍然有效,针对程序的32位变体的概念验证攻击就可能更容易开发。由此产生的攻击可能更可行且更有说服力,从而导致供应商更快地修补程序。

Windows 10会比Windows 7更频繁地重用随机基址,这在某些情况下可能会使它变得容易受到攻击

请注意,即使Windows系统必须确保一个DLL或EXE的多个实例都在相同的基址加载,系统也不需要在卸载DLL或EXE的最后一个实例时跟踪基址。如果DLL或EXE再次被加载,它可以获得一个新的基地址,这是我们在使用Windows7时观察到的行为。Windows10可以以不同的方式工作,即使在DLL或EXE的最后一个实例被卸载后,它也可能至少在短时间内保持相同的基址,与DLL相比,EXE更是如此。在多进程调试器下重复启动命令行程序时,可以观察到这一点。但是,如果将该程序复制到新文件名然后启动,它将收到一个新的基地址。同样,如果经过了足够长的时间,该程序将加载到其他基址。当然,重新启动会为所有DLL和EXE生成新的基地址。

总结起来就是:除了每次启动随机化外,不要对WindowsASLR保证做任何假设。特别是,每当加载给定EXE或DLL的第一个实例时,不要依赖Windows7的行为来随机分配新的地址空间。不要以为Windows天生就能以任何方式防止针对地址空间布局随机化的暴力攻击,特别是对于32位进程,在这种情况下,暴力攻击可能需要256次或更少的猜测。

Windows10对地址空间布局随机化的利用更加积极,甚至对不与地址空间布局随机化兼容的exe和dll也能进行有效防护,这可能使地址空间布局随机化的应用范围更大

WindowsVista和Windows7是最早支持地址空间布局随机化的系统,因此地址空间布局随机化在设计之初在兼容性方面进行了一些权衡。具体来说,这些旧的实现不会将地址空间布局随机化应用于没有标记为与地址空间布局随机化兼容的映像,也不允许地址空间布局随机化将地址推送到4GB边界以外。如果一个映像没有选择加入地址空间布局随机化,这些Windows版本将继续使用首选的基本地址。

可以使用Microsoft的增强缓解经验工具包(通常称为EMET)进一步强化Windows7,以更积极地将地址空间布局随机化应用于甚至未标记为与它兼容的映像。Windows8引入了更多功能,可将ASLR应用于不兼容地址空间布局随机化的映像,以更好地使堆分配随机化,并增加64位映像的熵位数。

总结起来就是:

1. 确保程序项目使用正确的链接器标记来选择最积极的地址空间布局随机化实现,并且不使用任何削弱地址空间布局随机化的链接器标记。

如下表所示,链接器标记可能会影响地址空间布局随机化应用到映像的方式。请注意,对于VisualStudio2012及更高版本,“+”标记在默认情况下已经启用,并且只要不使用“-”标记,就会使用最佳的地址空间布局随机化实现。使用VisualStudio2010或更早版本(可能是出于兼容性原因)的开发人员需要检查链接器支持的标记,以及默认情况下启用的标记。

关于Windows上地址空间布局随机化防御机制的分析(下)

链接器标记可能会影响如何将ASLR应用到映像

2. 启用强制性地址空间布局随机化和自下而上的随机化,Windows8和Windows10包含一些可选的功能,可在未标记为与地址空间布局随机化兼容的映像上强制被启用,并随机分配虚拟内存分配,以便重新建立基础的映像来获得随机基址。当EXE与ASLR兼容,但它使用的某个dll不兼容时,这是很有用的。防御者应该使这些特性能够更广泛地应用地址空间布局随机化,而且重要的是,它有助于发现任何剩余的不兼容地址空间布局随机化的程序,以便可以对其进行升级或替换。

ASLR将整个可执行映像重新定位为一个单元

ASLR通过选择一个随机偏移量来重定位可执行映像,并将其应用于映像中与它的基本地址相关的所有地址。也意味着:如果EXE中的两个函数位于地址0x401000和0x401100,那么即使在重新定位映像之后,它们之间仍然保持0x100字节的距离。很明显,这很重要,因为x86代码中普遍存在相对调用和jmp指令。同样,无论位于何处,位于0x401000处的函数将与映像的基本地址保持0x1000字节的距离。同样,如果两个静态变量或全局变量在映像中相邻,则在应用地址空间布局随机化后它们仍将保持相邻。相反,堆栈和堆变量以及内存映射文件不是映像的一部分,可以随意随机分配,而不需要考虑选择的基址。

总结起来就是:

1. 可执行映像中仅一个指针的泄漏就可以暴露整个映像的随机地址。

ASLR最大的限制和烦人之处在于,一些看似无害的特性,如调试日志消息或堆栈跟踪会泄漏映像中的指针,从而成为漏洞。如果攻击者拥有相同程序或DLL的副本,并且可以触发它产生相同的泄漏,那么他们可以计算地址空间布局随机化和地址空间布局随机化之前指针之间的差异来确定随机化前后的偏移量。然后,攻击者可以将该偏移量应用到其攻击有效载荷中的每个指针,以绕过地址空间布局随机化。防御者应该培训软件开发人员关于指针暴露漏洞的知识,以便他们认识到这个漏洞的严重性,并且作为软件开发生命周期的一部分,定期评估软件的这些漏洞。

2. 某些类型的内存损坏漏洞超出了ASLR能够保护的范围。

并不是所有的内存损坏漏洞都需要直接实现远程代码执行,比如有这样一个程序,它包含一个缓冲区变量,用于从网络中接收不可信的数据,以及一个标记变量,该变量位于其后的内存中。标记变量包含一些位,这些位指定用户是否已登录以及该用户是否为管理员。如果程序在接收缓冲区的末尾写入数据,则“标记变量将被覆盖,攻击者可以同时设置已登录和is-admin标记。由于攻击者无需知道或写入任何内存地址,因此地址空间布局随机化不会阻止攻击。只有当另一种强化技术(如编译器强化标志)重新排序变量,或者更好地使变量在程序中的位置独立移动时,此类攻击才会被阻止。

总结

地址空间布局随机化是针对内存破坏漏洞的核心防御措施,这篇文章介绍了在Windows上实施的地址空间布局随机化的一些历史,并探讨了Windows实施的一些功能和局限性。通过阅读这篇文章,防御者可以熟知如何构建程序来更好地利用地址空间布局随机化和Windows中提供的其他功能。不过地址空间布局随机化的防御机制也不是完美的,攻击者可以利用地址空间布局随机化的限制,例如只在每次重启时应用地址空间随机化和将整个映像重新定位为一个单元随机化,从而使用暴力和指针泄漏攻击来绕过地址空间随机化的防护。

推荐系统

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户

  • 番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    语言:中文版系统大小:3.91GB系统类型:Win7

    欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统