Kernel-Pwn-FGKASLR保护绕过
💡
原文中文,约13400字,阅读约需32分钟。
📝
内容提要
FGASLR是KASLR的加强版,增加了更细粒度的地址随机化。通过泄露内核程序基地址,可以绕过FGKASLR并获取提权。
🎯
关键要点
- FGASLR(Function Granular KASLR)是KASLR的加强版,增加了更细粒度的地址随机化。
- 在开启FGASLR的内核中,泄露内核程序基地址不能调用任意内核函数。
- fgkaslr.c文件中存在着随机化的明细,涉及节区的数量和节区名称的处理。
- 细粒度地址随机化只对同时具备SHF_ALLOC与SHF_EXECINSTR标志位的节区进行。
- 绕过FGKASLR的方法是挑选不受影响的节区中的gadget进行ROP链的构造。
- 需要泄露内核程序基地址以绕过FGKASLR,利用符号表进行地址读取。
- 通过特定的函数调用实现提权返回用户态,涉及commit_creds和prepare_kernel_cred函数。
- 在内核态利用时,可以通过内联汇编读取寄存器的值。
- FGKASLR保护的绕过是利用其特点,在特定区域中选取适合的gadget。
➡️