5.5 KiB
ASLR
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群组 或 电报群组 或在Twitter上关注我们 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
基本信息
地址空间布局随机化(ASLR)是操作系统中使用的一种安全技术,用于随机化系统和应用程序进程使用的内存地址。通过这样做,它显著增加了攻击者预测特定进程和数据位置(如堆栈、堆和库)的难度,从而减轻了某些类型的利用,特别是缓冲区溢出。
检查ASLR状态
要在Linux系统上检查ASLR状态,可以从/proc/sys/kernel/randomize_va_space
文件中读取值。存储在此文件中的值确定应用的ASLR类型:
- 0:无随机化。一切都是静态的。
- 1:保守随机化。共享库、堆栈、mmap()、VDSO页面被随机化。
- 2:完全随机化。除了保守随机化随机化的元素外,通过
brk()
管理的内存也被随机化。
您可以使用以下命令检查ASLR状态:
bashCopy codecat /proc/sys/kernel/randomize_va_space
禁用 ASLR
要禁用 ASLR,您需要将 /proc/sys/kernel/randomize_va_space
的值设置为 0。通常不建议在测试或调试场景之外禁用 ASLR。以下是禁用方法:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
您还可以通过以下方式禁用ASLR进行执行:
setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args
启用ASLR
要启用ASLR,您可以将值2写入/proc/sys/kernel/randomize_va_space
文件。通常需要root权限。可以使用以下命令启用完全随机化:
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
跨重启保持
使用echo
命令进行的更改是临时的,将在重新启动时重置。要使更改持久化,您需要编辑/etc/sysctl.conf
文件并添加或修改以下行:
kernel.randomize_va_space=2 # Enable ASLR
# or
kernel.randomize_va_space=0 # Disable ASLR
编辑/etc/sysctl.conf
后,使用以下命令应用更改:
sudo sysctl -p
这将确保您的ASLR设置在重新启动后保持不变。
绕过32位ASLR
32位暴力破解
PaX将进程地址空间分为3组:
- 代码和数据(已初始化和未初始化):
.text
、.data
和.bss
—>delta_exec
变量中的16位熵。该变量在每个进程中随机初始化,并添加到初始地址中。 - 由
mmap()
分配的内存和共享库 —> 16位,称为delta_mmap
。 - 堆栈 —> 24位,称为
delta_stack
。但实际上只使用11位(从第10到第20个字节,包括在内),对齐到16字节 —> 这导致524,288个可能的真实堆栈地址。
上述数据适用于32位系统,降低的最终熵使得可以通过多次尝试执行来绕过ASLR,直到利用成功完成。
暴力破解思路:
- 如果利用是本地的,您可以尝试暴力破解libc的基地址(适用于32位系统):
for off in range(0xb7000000, 0xb8000000, 0x1000):
- 如果攻击远程服务器,您可以尝试暴力破解
libc
函数usleep
的地址,将10作为参数传递。如果某个时刻服务器需要额外10秒才能响应,则找到了该函数的地址。
{% hint style="success" %} 在64位系统中,熵要高得多,这是不可能的。 {% endhint %}
Ret2ret
尝试绕过ASLR,滥用堆栈内部的地址:
{% content-ref url="../stack-overflow/ret2ret.md" %} ret2ret.md {% endcontent-ref %}
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 发现PEASS家族,我们的独家NFTs收藏品
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。