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。
🏷️