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

继续阅读