Android保护机制及利用技巧总结
一、前言 本文总结了在Android上利用漏洞时遇到的一些新的保护机制以及在真机上的内核漏洞利用和调试技巧。虽然Android底层为Linux内核,但是相比较下Android内核更加难利用,主要体现在真机不能实时调试,可能开启了BTI保护、PAC保护和CFI保护,同时在近年新出的一些手机,如Pixel 10开启了内存标记访问保护Memory Tagging Extension(MTE)。本文还将介绍MTE保护在用户态时的一个特殊的绕过方法,通过探讨这些新的保护机制及其应对策略,我们希望能够帮助读者更好地理解当前Android安全环境,并为未来的漏洞研究提供新的思路和技术手段。 二、真机内核利用适配 对于一个真机内核,在编写漏洞利用程序期间可以编译一个版本一样的Linux内核用qemu模拟运行,便于掌握数据的处理过程。还可以使用Android模拟器,目前高版本的Android模拟器无法在x86/x64架构下模拟AARCH64的镜像,可以在AARCH64架构下的主机,如树莓派等下面运行模拟器。在模拟的内核中利用成功后,就是如何将其移植到真机上的问题。虽然真机不能实时调试,但是可以通过查看/sys/fs/pstore/目录下的日志文件以及dmesg来获取内核最后崩溃时的寄存器值。根据寄存器信息来定位漏洞利用程序中需要适配的位置。 root@apalis-imx8:~$ cat /sys/fs/pstore/dmesg-ramoops-0 Panic#1 Part1 <6>[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] <5>[ 0.000000] Linux version 5.4.77-5.1.0-devel+git.a2f08dfd79ae (eichest@eichest-laptop) (gcc version 10.2.0 (Ubuntu 10.2.0-8ubuntu1)) #19 SMP PREEMPT Tue Apr 6 17:18:18 CEST 2021 <6>[ 0.000000] Machine model: Toradex Apalis iMX8QM V1.1 on Apalis Evaluation Board ... <6>[ 64.111102] sysrq: Trigger a crash <0>[ 64.114539] Kernel panic - not syncing: sysrq triggered crash <4>[ 64....