
Assistente de avaliação de deeplink, Intent e bridge WebView do Android para hacking ético
Ajudante de avaliação de deeplink, Intent e ponte WebView para Android
O apk-interceptor é um APK de teste Android portátil para avaliações de segurança de aplicações autorizadas. Ajuda engenheiros de segurança a verificar como uma aplicação Android lida com pontos de entrada externos, tais como esquemas URI personalizados, deeplinks, Activities exportadas e pontes JavaScript WebView.
A ferramenta é intencionalmente restrita:
android.permission.INTERNETcontent://Durante as avaliações de segurança de aplicações Android, muitas descobertas de análise estática ainda precisam de uma pequena prova de conceito no dispositivo antes de serem confirmadas: registar um esquema URI personalizado, enviar uma Intent explícita, servir um payload local content:// ou verificar se o JavaScript consegue alcançar uma ponte WebView.
Construir uma nova aplicação de teste descartável para cada caso é repetitivo e propenso a erros. Pequenas diferenças nas entradas do manifesto, autoridades, concessões URI, nomes de pacotes ou construção de Intent podem atrasar a verificação e tornar os resultados mais difíceis de reproduzir.
O apk-interceptor foi criado para tornar esse passo de confirmação repetível. Em vez de escrever um novo APK PoC para cada avaliação, constrói esta ferramenta com o esquema autorizado ou ID de aplicação de que precisas, executas o teste no dispositivo e manténs o fluxo de trabalho restrito por design: sem permissão INTERNET, sem transmissão de dados externos, sem execução de shell e sem dependência de root.
O apk-interceptor é útil para estas tarefas de avaliação:
| Cenário | Módulo | O Que Ajuda a Verificar |
|---|---|---|
| Hijacking de esquema URI personalizado | Interceptor | Se outra aplicação pode registar o mesmo esquema personalizado e receber links |
| Manipulação de parâmetros de deeplink | Sender | Se a aplicação avaliada aceita parâmetros inseguros de query/path |
| Exposição de Activity exportada | Sender | Se uma Activity exportada pode ser lançada diretamente por outra aplicação |
Exposição de ponte WebView via content:// | Payload + Sender | Se um payload HTML local consegue alcançar uma ponte JavaScript WebView |
| Verificação de sintaxe de payload local | Payload | Se o teu payload HTML/JS é executado no WebView de autoteste |
Walkthroughs detalhados de vulnerabilidades:
content://A aplicação mantém um registo de avaliação em memória para Intents enviadas, deeplinks recebidos, callbacks da ponte, resultados JavaScript e erros. Os registos desaparecem quando o processo da aplicação é morto. Como os registos não são persistidos, captura evidências com capturas de ecrã ou gravação do ecrã enquanto trabalhas.
O apk-interceptor é uma ferramenta de confirmação, não uma framework de descoberta ou exploração. Assume que já sabes o que testar (esquema, classe Activity, nome da ponte) a partir da análise estática, e dá-te uma forma segura e no dispositivo de verificar a alcançabilidade e capturar evidências. É construído para ser instalado num dispositivo de avaliação e até partilhado com um cliente, por isso não inclui permissão INTERNET, execução de shell, exfiltração de dados nem requisito de root.
Onde se posiciona em relação às ferramentas Android habituais:
| Ferramenta | Função | Como o apk-interceptor difere |
|---|---|---|
| jadx / MobSF / QARK / Semgrep | Encontrar pontos de entrada vulneráveis (estático) | O apk-interceptor não analisa nem descompila; confirma uma descoberta que já tens |
deep-C / NSdeepLink / adb am start | Enumerar e enviar deeplinks | O apk-interceptor também pode enviar, mas o seu diferencial é receber um esquema sequestrado e mostrar o URI exato e os parâmetros |
| drozer | Framework de ataque geral no dispositivo (agente + frequentemente root) | O apk-interceptor é um único APK leve com proteções de segurança deliberadas, âmbito mais reduzido e distribuição mais fácil e segura para o cliente |
| Metasploit / Frida | Armar ou hook (ex.: RCE com addJavascriptInterface) | O apk-interceptor apenas verifica a alcançabilidade da ponte com um payload inofensivo; nunca exfiltra nem executa comandos shell |
As duas áreas onde o apk-interceptor tem a vantagem mais clara sobre as alternativas:
adb/análise estática não consegue mostrar.content:// → WebView: um fornecedor não exportado de ficheiro único cujo payload é entregue apenas através de uma concessão de leitura de Intent temporária, além de um WebView de autoteste local para validar primeiro a sintaxe do payload.O apk-interceptor trata o envio e a interceção de forma diferente, e isto é o mais importante de compreender antes de o usar:
| Ação | Módulo | Esquema personalizado necessário em tempo de compilação? |
|---|---|---|
| Enviar uma Intent ou deeplink para outra aplicação | Sender | Não, escreve qualquer URI, pacote ou Activity em tempo de execução |
| Intercetar (receber) um deeplink para um esquema personalizado | Interceptor | Sim, o esquema é fixado no APK em tempo de compilação |
Para enviar um deeplink manipulado para a aplicação avaliada, não precisas de recompilar: usa o modo Implicit Deeplink do separador Sender e escreve qualquer URI.
Para intercetar um deeplink, ou seja, fazer com que o Android encaminhe um esquema personalizado para o apk-interceptor para poderes observar um possível hijack de esquema, deves compilar o APK com esse esquema via --scheme. O esquema é fixo em tempo de compilação propositadamente (uma salvaguarda de design); o apk-interceptor nunca regista esquemas arbitrários em tempo de execução. Se mudares o esquema que estás a avaliar, recompila e reinstala.
adb para instalação no dispositivo e teste opcional por linha de comandosCompila o APK com o esquema URI personalizado que estás autorizado a avaliar:
./build-interceptor.sh --scheme <esquema_personalizado_autorizado>
adb install ./out/apk-interceptor-<esquema_personalizado_autorizado>-debug.apk
Flags opcionais de compilação:
./build-interceptor.sh \
--scheme <esquema_personalizado_autorizado> \
--app-id <id.da.aplicação.personalizado> \
--output ./out