
trueseeing v2.2.11
Escáner de vulnerabilidades de aplicaciones iOS/Android sin descompilación (laboratorio de demostración DC25, CB17)
README
trueseeing es un escáner de vulnerabilidades rápido, preciso y resistente para aplicaciones iOS/Android. Operamos en el nivel de la máquina virtual Dalvik para Android, es decir -- no nos importa si la aplicación objetivo está ofuscada o no.
Capacidad
Actualmente podemos:
- Escanear automáticamente la aplicación en busca de vulnerabilidades, reportando en formato HTML/JSON/texto (ver más abajo)
- Manipular la aplicación para un análisis más fácil: p. ej., habilitar el bit de depuración, habilitar la copia de seguridad completa, deshabilitar el pinning TLS, manipular el nivel de API objetivo, inyectar frida-gadget, etc.
- Examinar la aplicación para obtener información general
- Copiar datos de entrada/salida de la aplicación a través de la interfaz de depuración
- Buscar ciertas llamadas/constantes/sput/iput
- Deducir constantes/conjuntos de tipos para argumentos de operaciones
- Escanear llamadas API/privadas en busca de códigos nativos (NB: necesitas ts2-disasm-ghidra)
- Escanear aplicaciones iOS en busca de vulnerabilidades básicas (NB: necesitas ts2-disasm-ghidra)
- Adjuntar scripts de frida
- Proporcionar sesión interactiva de frida
- Rastrear llamadas
- etc.
Instalación
Contenedores
NOTA:
- A partir de la versión 2.1.9, estamos en ghcr.io. (Docker Hub está algo obsoleto)
- Requiere adbd en el host para controlar dispositivos.
Proporcionamos contenedores para que puedas usarlos de inmediato de la siguiente manera; ahora esta también es la forma recomendada, y la única si estás en Windows, para ejecutar:
$ docker run --rm -v $(pwd):/out -v ts2:/cache ghcr.io/alterakey/trueseeing
Si quieres ejecutarlo sin estado, omite montar el volumen en /cache (aunque no se recomienda para uso diario; ver también #254):
$ docker run --rm -v $(pwd):/out ghcr.io/alterakey/trueseeing
Instalar con uv
Alternativamente, puedes instalar nuestro paquete con uv de la siguiente manera. Especialmente la forma de instalación uv tool install puede ser útil para extensiones (ver más abajo), ya que les otorga la mayor libertad. Solo recuerda que necesitas un JRE y el SDK de Android (opcionalmente; para manipular dispositivos):
$ uvx trueseeing
$ uv tool install trueseeing
$ trueseeing
Instalar con pip (obsoleto)
Por supuesto, siempre puedes usar el viejo pip si es necesario:
$ pip install trueseeing
Uso
Modo interactivo
Puedes escanear/analizar/parchear/etc. aplicaciones de forma interactiva, lo que lo convierte en la opción ideal para el análisis manual:
$ trueseeing target.apk
[+] trueseeing x.y.z
ts[target.apk]> ?
...
ts[target.apk]> i # show generic information
...
ts[target.apk]> pf AndroidManifest.xml # show manifest file
...
ts[target.apk]> a # analyze resources too
...
ts[target.apk]> /s something # search text
...
ts[target.apk]> as # scan
...
[+] done, found 6403 issues (174.94 sec.)
ts[target.apk]> gh report.html
Modo por lotes
Aceptamos un comando en línea (-c) o un archivo de script (-i) para ejecutar antes de darte el prompt, así como salir inmediatamente en lugar de esperar input (-q; ¡no requerimos una tty en este modo!).
Puedes usar estas características para realizar un escaneo por lotes, como por ejemplo para volcar los hallazgos directamente en stderr:
$ trueseeing -eqc 'as' target.apk
Para generar un archivo de informe en formato HTML:
$ trueseeing -eqc 'as;gh report.html' target.apk
Para generar un archivo de informe en formato JSON:
$ trueseeing -eqc 'as;gj report.json' target.apk
Para que el informe se genere en stdout, omite el nombre de archivo del comando g* final:
$ trueseeing -eqc 'as;gh' target.apk > report.html
$ trueseeing -eqc 'as;gj' target.apk > report.json
Modo de escaneo no interactivo (obsoleto)
Tradicionalmente, puedes escanear aplicaciones con la siguiente línea de comandos para obtener hallazgos listados en stderr:
$ trueseeing --scan target.apk
Para generar un informe en formato HTML:
$ trueseeing --scan --scan-output report.html target.apk
$ trueseeing --scan --scan-report=html --scan-output report.html target.apk
Para generar un informe en formato JSON:
$ trueseeing --scan --scan-report=json --scan-output report.json target.apk
Para que el informe se genere en stdout, especifica '-' como nombre de archivo:
$ trueseeing --scan --scan-output - target.apk > report.html
$ trueseeing --scan --scan-report=html --scan-output - target.apk > report.html
$ trueseeing --scan --scan-report=json --scan-output - target.apk > report.json
Usos avanzados
Extensiones
Puedes escribir tus propios comandos y firmas como extensiones. Las extensiones se colocan en /ext (contenedores) o ~/.trueseeing2/extensions/ (uv/pip). Alternativamente, puedes distribuir tus extensiones como wheels. Proporcionamos información de tipos para que no solo puedas verificar los tipos de tus extensiones con zuban sino también obtener una asistencia decente de los IDE. Consulta la sección de detalles para más información.
Construcción
Puedes construirlo de la siguiente manera:
$ docker build -t trueseeing https://github.com/alterakey/trueseeing.git#main
Para construir wheels puedes hacerlo con flit, de la siguiente manera:
$ flit build
Para modificarlo, necesitas crear un entorno de compilación adecuado. Con uv simplemente puedes hacer:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ uv sync --locked --dev
$ (... hack ...)
$ uv run trueseeing ... # to run
$ uv run zuban check trueseeing && uv run ruff trueseeing # to validate
Success: no issues found in XX source files
$ uv run flit build # to build (wheel)
$ docker build -t trueseeing . # to build (container)
Con pip, para crear uno, primero configura un venv, instala flit y las cadenas de herramientas de validación (zuban y ruff) allí, y haz que flit obtenga las dependencias. En resumen, haz algo como esto:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ python3 -m venv wc/.venv
$ source wc/.venv/bin/activate
(.venv) $ pip install flit zuban ruff
(.venv) $ flit install --deps=develop -s
(.venv) $ (... hack ...)
(.venv) $ trueseeing ... # to run
(.venv) $ zuban check trueseeing && ruff check trueseeing # to validate
Success: no issues found in XX source files
(.venv) $ flit build # to build (wheel)
(.venv) $ docker build -t trueseeing . # to build (container)
Detalles
Clases de Vulnerabilidades
Actualmente podemos detectar las siguientes clases de vulnerabilidades, en gran medida las cubiertas en OWASP Mobile Top 10 - 2016:
-
Uso Inadecuado de la Plataforma (M1)
- Depurable
- Publicación inadvertida de Activities, Services, ContentProviders, BroadcastReceivers
-
Datos Inseguros (M2)