
trueseeing v2.2.11
Scanner de vulnerabilidades para apps iOS/Android sem descompilação (DC25 demo lab, CB17)
README
trueseeing é um scanner de vulnerabilidades rápido, preciso e resiliente para aplicativos iOS/Android. Operamos no nível da Dalvik VM para Android — ou seja, não importa se o aplicativo alvo está ofuscado ou não.
Capacidade
Atualmente podemos:
- Escanear automaticamente o aplicativo em busca de vulnerabilidades, gerando relatórios em formato HTML/JSON/texto (veja abaixo)
- Manipular o aplicativo para facilitar a análise: por exemplo, ativar o bit de depuração, habilitar backup completo, desabilitar TLS pinning, manipular o nível da API alvo, injetar frida-gadget, etc.
- Examinar o aplicativo em busca de informações gerais
- Copiar dados para dentro/fora do aplicativo através da interface de depuração
- Procurar por determinadas chamadas/consts/sput/iput
- Deduzir constantes/conjuntos de tipos para argumentos de operações
- Escanear chamadas de API/privadas para códigos nativos (NB: você precisa do ts2-disasm-ghidra)
- Escanear aplicativos iOS para vulnerabilidades básicas (NB: você precisa do ts2-disasm-ghidra)
- Anexar scripts frida
- Fornecer sessão interativa frida
- Rastrear chamadas
- etc.
Instalação
Contêineres
NOTA:
- A partir da versão 2.1.9, estamos no ghcr.io. (Docker Hub está um tanto obsoleto)
- Requer adbd no host para controlar dispositivos.
Fornecemos contêineres para que você possa usar imediatamente da seguinte forma; agora esta também é a maneira recomendada, e a única maneira se você estiver no Windows, de executar:
$ docker run --rm -v $(pwd):/out -v ts2:/cache ghcr.io/alterakey/trueseeing
Se você quiser executar sem estado, omita a montagem do volume em /cache (não recomendado para uso diário; veja também #254):
$ docker run --rm -v $(pwd):/out ghcr.io/alterakey/trueseeing
Instalar com uv
Alternativamente, você pode instalar nosso pacote com uv da seguinte forma. Especialmente a forma de instalação uv tool install pode ser útil para extensões (veja abaixo), pois concede a elas a maior liberdade. Apenas lembre-se de que você precisa de um JRE e Android SDK (opcionalmente; para mexer com dispositivos):
$ uvx trueseeing
$ uv tool install trueseeing
$ trueseeing
Instalar com pip (obsoleto)
Claro, você sempre pode usar o bom e velho pip se necessário:
$ pip install trueseeing
Uso
Modo interativo
Você pode escanear/analisar/patch/etc. aplicativos interativamente — tornando-o a escolha ideal para análise manual:
$ trueseeing target.apk
[+] trueseeing x.y.z
ts[target.apk]> ?
...
ts[target.apk]> i # mostrar informações gerais
...
ts[target.apk]> pf AndroidManifest.xml # mostrar arquivo de manifesto
...
ts[target.apk]> a # analisar também recursos
...
ts[target.apk]> /s algo # pesquisar texto
...
ts[target.apk]> as # escanear
...
[+] concluído, encontrados 6403 problemas (174.94 seg.)
ts[target.apk]> gh report.html
Modo em lote
Aceitamos um comando inline (-c) ou arquivo de script (-i) para executar antes de exibir o prompt, bem como sair imediatamente em vez de exibir o prompt (-q; não exigimos um tty neste modo!).
Você pode usar esses recursos para realizar uma varredura em lote, como a seguir, por exemplo, para despejar resultados diretamente no stderr:
$ trueseeing -eqc 'as' target.apk
Para gerar um relatório em formato HTML:
$ trueseeing -eqc 'as;gh report.html' target.apk
Para gerar um relatório em formato JSON:
$ trueseeing -eqc 'as;gj report.json' target.apk
Para obter o relatório gerado na stdout, omita o nome do arquivo do comando g* final:
$ trueseeing -eqc 'as;gh' target.apk > report.html
$ trueseeing -eqc 'as;gj' target.apk > report.json
Modo de varredura não interativo (obsoleto)
Tradicionalmente, você pode escanear aplicativos com a seguinte linha de comando para listar os resultados no stderr:
$ trueseeing --scan target.apk
Para gerar um relatório em formato HTML:
$ trueseeing --scan --scan-output report.html target.apk
$ trueseeing --scan --scan-report=html --scan-output report.html target.apk
Para gerar um relatório em formato JSON:
$ trueseeing --scan --scan-report=json --scan-output report.json target.apk
Para obter o relatório gerado na stdout, especifique '-' como nome do arquivo:
$ 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 Avançados
Extensões
Você pode escrever seus próprios comandos e assinaturas como extensões. As extensões são colocadas em /ext (contêineres) ou ~/.trueseeing2/extensions/ (uv/pip). Alternativamente, você pode distribuir suas extensões como wheels. Fornecemos informações de tipo para que você não apenas possa verificar tipos de suas extensões com zuban, mas também obter assistência adequada das IDEs. Veja a seção de detalhes para mais informações.
Compilação
Você pode compilar da seguinte forma:
$ docker build -t trueseeing https://github.com/alterakey/trueseeing.git#main
Para compilar wheels, você pode fazer com flit, da seguinte forma:
$ flit build
Para hackear, você precisa criar um ambiente de compilação adequado. Com uv você pode simplesmente fazer:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ uv sync --locked --dev
$ (... hackear ...)
$ uv run trueseeing ... # para executar
$ uv run zuban check trueseeing && uv run ruff trueseeing # para validar
Success: no issues found in XX source files
$ uv run flit build # para compilar (wheel)
$ docker build -t trueseeing . # para compilar (contêiner)
Com pip, para criar um, primeiramente configure um venv, instale flit e as ferramentas de validação (zuban e ruff) nele, e faça com que o flit instale as dependências. Resumindo, faça algo assim:
$ 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) $ (... hackear ...)
(.venv) $ trueseeing ... # para executar
(.venv) $ zuban check trueseeing && ruff check trueseeing # para validar
Success: no issues found in XX source files
(.venv) $ flit build # para compilar (wheel)
(.venv) $ docker build -t trueseeing . # para compilar (contêiner)
Detalhes
Classes de Vulnerabilidade
Atualmente podemos detectar as seguintes classes de vulnerabilidades, em grande parte cobertas pelo OWASP Mobile Top 10 - 2016:
-
Uso Impróprio da Plataforma (M1)
- Depurável
- Publicação inadvertida de Activities, Services, ContentProviders, BroadcastReceivers
-
Dados Inseguros (M2)