Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
apk-interceptor — Assistente de avaliação de deeplink, Intent e bridge WebView do Android para hacking ético | Kitploit
Ferramentas/GitHubGitHub/sterrasec/apk-interceptor
Segurança AndroidAnálise de VulnerabilidadesPentesting de Apps MóveisExploração de Aplicações WebColeta de InformaçõesTestes de Penetração
GitHubsterrasec/apk-interceptor

apk-interceptor

Assistente de avaliação de deeplink, Intent e bridge WebView do Android para hacking ético

Ver Repositório
91há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

apk-interceptor

Build Check

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:

  • Não declara android.permission.INTERNET
  • Não envia dados para servidores externos
  • Não executa comandos shell
  • Não requer root, Magisk, Frida ou instrumentação em tempo de execução
  • Serve apenas um ficheiro local de payload content://
  • Regista um esquema URI personalizado fixo em tempo de compilação

Motivação

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 Que Podes Testar

O apk-interceptor é útil para estas tarefas de avaliação:

Walkthroughs detalhados de vulnerabilidades:

  • Hijacking de Esquema URI Personalizado
  • Redirecionamento Aberto de Deeplink
  • Activity Exportada com Dados de Intent Não Confiáveis
  • Exposição de Ponte JavaScript WebView Via 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.

Como se Compara

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:

As duas áreas onde o apk-interceptor tem a vantagem mais clara sobre as alternativas:

  • Evidência de hijack de esquema: atuar como a segunda aplicação que realmente regista o esquema e registar todos os parâmetros recebidos, o que adb/análise estática não consegue mostrar.
  • Verificação de ponte 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.

Enviar vs. Intercetar

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çãoMóduloEsquema personalizado necessário em tempo de compilação?
Enviar uma Intent ou deeplink para outra aplicaçãoSenderNão, escreve qualquer URI, pacote ou Activity em tempo de execução
Intercetar (receber) um deeplink para um esquema personalizadoInterceptorSim, 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.

Requisitos

  • Android Studio com Android SDK 35
  • Dispositivo ou emulador Android 12+
  • JDK 17+
  • adb para instalação no dispositivo e teste opcional por linha de comandos

Compilar e Instalar

Compila o APK com o esquema URI personalizado que estás autorizado a avaliar:

root@kitploit:~
./build-interceptor.sh --scheme <esquema_personalizado_autorizado>
adb install ./out/apk-interceptor-<esquema_personalizado_autorizado>-debug.apk

Flags opcionais de compilação:

root@kitploit:~
./build-interceptor.sh \
  --scheme <esquema_personalizado_autorizado> \
  --app-id <id.da.aplicação.personalizado> \
  --output ./out

--app-id define o ID da aplicação instalada (a identidade do pacote no dispositivo e a autoridade content://<applicationId>.payload) em tempo de compilação. O padrão é com.sterrasec.apkinterceptor. Substitui-o com --app-id quando precisares de várias compilações instaláveis separadamente para diferentes avaliações. O equivalente no Windows é build-interceptor.bat.

O esquema padrão intercept-poc-example é um placeholder inofensivo. O script de compilação recusa-se a produzir um APK de avaliação com esse esquema padrão.

Primeiro Lançamento

No primeiro lançamento de cada versão da aplicação, o apk-interceptor mostra um diálogo de uso autorizado. Depois de tocares em I understand, a mesma versão não mostra o diálogo novamente. O separador Sender ainda mostra um aviso persistente porque pode enviar Intents para outras aplicações.

Diálogo de uso autorizado

Capturas de Ecrã

SenderPayloadInterceptor
Separador SenderSeparador PayloadSeparador Interceptor

Módulos da Aplicação

Interceptor

Usa este separador para verificar a interceção de esquemas URI personalizados.

O que mostra:

  • O esquema compilado neste APK
  • Um aviso se o esquema padrão fictício ainda estiver em uso
  • Registos de deeplinks recebidos
  • Um campo de parâmetro de query de teste
  • Send Test Deeplink
  • Clear

Fluxo de trabalho básico:

  1. Compila o APK com o esquema personalizado avaliado.
  2. Instala-o juntamente com a aplicação avaliada.
  3. Aciona um deeplink para esse esquema a partir do fluxo avaliado, navegador, adb ou do botão Send Test Deeplink incorporado.
  4. Se o Android encaminhar o link para o apk-interceptor, abre o separador Interceptor e revê o URI recebido e os parâmetros de query.

Sobre o Send Test Deeplink: envia sempre <scheme>://test?<os teus params> com um host test fixo, por isso destina-se a confirmar que o apk-interceptor recebe e regista o esquema, não para conduzir as rotas específicas de deeplink da aplicação avaliada. Para enviar um deeplink manipulado que corresponda ao host ou caminho exigido pela aplicação avaliada, usa antes o modo Implicit Deeplink do separador Sender.

Exemplo com adb:

root@kitploit:~
adb shell am start -W \
  -a android.intent.action.VIEW \
  -d 'my-authorized-scheme://test?source=adb\&message=hello%20world'

Usa \& ao enviar vários parâmetros de query através de adb shell; caso contrário, a shell do dispositivo pode tratar & como um separador de comandos.

Resultado esperado:

  • O apk-interceptor abre no separador Interceptor
  • Aparece uma entrada de registo RECEIVED
  • Tocar na entrada de registo expande o URI completo e a lista de parâmetros

Sender

Usa este separador para enviar Intents controladas durante um teste autorizado.

Modos:

  • Implicit Deeplink: envia Intent(ACTION_VIEW, Uri.parse(uri))
  • Explicit Activity: envia uma Intent para um pacote e classe Activity específicos

Campos e controlos:

  • URI para o modo de deeplink implícito
  • Package name para o modo de Activity explícita
  • Activity class para o modo de Activity explícita
  • Attach content:// URI para definir o URI do payload local como dados da Intent (mostrado apenas no modo Explicit Activity; ver nota abaixo)
  • FLAG_GRANT_READ_URI_PERMISSION para conceder acesso de leitura ao URI do payload anexado
  • Send Intent

Fluxo de trabalho de deeplink implícito:

  1. Seleciona Implicit Deeplink.
  2. Insere um URI que corresponda ao padrão de deeplink da aplicação avaliada.
  3. Toca em Send Intent.
  4. Observa o comportamento da aplicação avaliada e o registo do apk-interceptor.

Fluxo de trabalho de Activity explícita:

  1. Confirma que a Activity alvo está exportada e coberta pela tua autorização.
  2. Seleciona Explicit Activity.
  3. Insere o nome do pacote da aplicação avaliada.
  4. Insere o nome da classe Activity exportada.
  5. Opcionalmente, ativa Attach content:// URI.
  6. Toca em Send Intent.

Notas:

  • O apk-interceptor não sabe se a aplicação avaliada tratou a Intent de forma segura. Deves observar o comportamento, registos ou test harness da aplicação avaliada.
  • A anexação content:// é útil ao testar se uma Activity alvo passa dados não confiáveis de Intent para um WebView.
  • Attach content:// URI é oferecido apenas no modo Explicit Activity. O payload é entregue como data da Intent, o que substituiria o URI que escreves no modo Implicit Deeplink, por isso a opção está oculta nesse modo.
  • PayloadProvider não está exportado. A aplicação avaliada consegue ler o content:// anexado apenas porque a Intent lhe concede acesso temporário de leitura via FLAG_GRANT_READ_URI_PERMISSION. Mantém essa flag ativada e entrega o URI através da Intent. Um URI content:// aberto de qualquer outra forma não será legível por outra aplicação.

Payload

Usa este separador para criar um payload HTML local e validar a sintaxe da ponte JavaScript no próprio WebView de autoteste do apk-interceptor.

O que contém:

  • Editor HTML
  • Editor JavaScript evaluated after page load
  • Bridge object name
  • URI content:// gerado
  • Save Payload
  • Run Self-Test
  • WebView de autoteste
  • Resultado da ponte e registos da consola

Formato do URI do payload gerado:

root@kitploit:~
content://<applicationId>.payload/current.html

O fornecedor serve apenas este ficheiro fixo:

root@kitploit:~
filesDir/payloads/current.html

Fluxo de trabalho de autoteste do payload:

  1. Insere ou cola HTML no campo HTML.
  2. Insere o nome do objeto da ponte que queres testar localmente, por exemplo localBridge.
  3. Adiciona JavaScript dentro do teu HTML ou no editor JavaScript.
  4. Toca em Save Payload.
  5. Toca em Run Self-Test.
  6. Revê as entradas BRIDGE_RESULT, console.log e evaluateJavascript result no registo.

Exemplo de JavaScript de autoteste:

root@kitploit:~
console.log("payload loaded");
window.localBridge.logResult(window.localBridge.getInfo());

A ponte de autoteste expõe:

root@kitploit:~
window.<nomeDaPonte>.logResult("mensagem");
window.<nomeDaPonte>.getInfo();

Limitação importante:

O WebView de autoteste confirma que o teu payload local e a sintaxe de chamada à ponte funcionam dentro do apk-interceptor. Não consegue observar se o WebView de outra aplicação executou o teu payload ou chamou a sua própria ponte. Para a aplicação avaliada, verifica através da UI, registos, hooks de teste ou Chrome DevTools dessa aplicação, se a aplicação for debuggable.

Fluxos de Trabalho Orientados a Vulnerabilidades

1. Hijacking de Esquema URI Personalizado

Risco:

Uma aplicação Android regista um esquema URI personalizado em vez de um App Link verificado. Qualquer outra aplicação pode registar o mesmo esquema, pelo que o Android pode mostrar um seletor de aplicações ou encaminhar links para uma aplicação diferente.

Usa o apk-interceptor para verificar:

  • Se o esquema pode ser registado por outra aplicação
  • Se o Android oferece o apk-interceptor como manipulador
  • Se valores sensíveis aparecem nos parâmetros do deeplink

Passos:

  1. Identifica o esquema personalizado da aplicação avaliada a partir do seu manifesto ou documentação.
  2. Compila o apk-interceptor com esse esquema.
  3. Instala o apk-interceptor e a aplicação avaliada no mesmo dispositivo de teste.
  4. Aciona um deeplink a partir do fluxo de teste autorizado.
  5. Se o apk-interceptor o receber, inspeciona o registo do Interceptor.

Evidências a capturar:

  • Comportamento do seletor do SO, se exibido
  • URI completo recebido
  • Parâmetros de query e se contêm valores sensíveis
  • Interação do utilizador necessária para encaminhar o link

2. Injeção de Parâmetros em Deeplink

Risco:

A aplicação avaliada confia nos parâmetros do deeplink para navegação, carregamento de URL, flags de funcionalidade, seleção de conta ou renderização sem validação suficiente.

Usa o apk-interceptor para verificar:

  • Se parâmetros manipulados são aceites
  • Se a aplicação navega para um ecrã não pretendido
  • Se valores inseguros de URL/caminho/conteúdo são usados

Passos:

  1. Identifica o formato do deeplink da aplicação avaliada.
  2. Abre o Sender.
  3. Seleciona Implicit Deeplink.
  4. Insere um URI de teste autorizado com parâmetros controlados.
  5. Toca em Send Intent.
  6. Observa o comportamento da aplicação avaliada.

Exemplo de placeholder:

root@kitploit:~
my-authorized-scheme://open?next=https%3A%2F%2Fauthorized-test.example%2Flanding

Não utilizes domínios ou contas reais de terceiros a menos que estejam explicitamente no âmbito.

3. Controlo de Acesso a Activity Exportada

Risco:

Uma Activity exportada executa ações sensíveis ou exibe dados sensíveis sem verificar o chamador, o estado do utilizador ou a autorização necessária.

Usa o apk-interceptor para verificar:

  • Se a Activity exportada é lançada a partir de outra aplicação
  • Se executa comportamento sensível sem as verificações esperadas
  • Se os dados da Intent alteram o seu comportamento

Passos:

  1. Confirma que a Activity está exportada e está no âmbito.
  2. Abre o Sender.
  3. Seleciona Explicit Activity.
  4. Insere o nome do pacote e a classe Activity.
  5. Opcionalmente, anexa o URI do payload local content://.
  6. Toca em Send Intent.
  7. Observa se a aplicação avaliada impõe controlo de acesso.

Evidências a capturar:

  • Activity lançada ou bloqueada
  • Qualquer pedido de autenticação ou autorização
  • Ação sensível ou exposição de dados
  • Dados da Intent usados pela Activity

4. Exposição de Ponte JavaScript WebView Via content://

Risco:

A aplicação avaliada carrega dados não confiáveis de content:// da Intent num WebView que também expõe uma ponte JavaScript via addJavascriptInterface.

Usa o apk-interceptor para verificar:

  • Se um payload HTML local pode ser entregue como content://
  • Se o WebView alvo carrega o payload
  • Se o JavaScript dessa fonte consegue alcançar a ponte

Passos:

  1. Identifica a Activity alvo e o nome do objeto da ponte durante a análise autorizada.
  2. Abre o Payload.
  3. Cria HTML/JS que chame a ponte esperada.
  4. Usa Run Self-Test para validar a tua sintaxe localmente.
  5. Abre o Sender.
  6. Seleciona Explicit Activity.
  7. Insere o pacote alvo e a classe Activity.
  8. Ativa Attach content:// URI e mantém FLAG_GRANT_READ_URI_PERMISSION ativada.
  9. Toca em Send Intent.
  10. Observa a aplicação avaliada para determinar se o seu WebView carregou o payload e se as chamadas à ponte foram executadas.

Limitação importante:

O apk-interceptor não pode receber resultados de outra aplicação a menos que essa aplicação os devolva ou exiba explicitamente. A ferramenta foi concebida para entregar um payload local e validar sintaxe, não para exfiltrar dados.

Verificações por Linha de Comandos

Verifica que o APK não solicita acesso à rede:

root@kitploit:~
aapt dump permissions ./out/apk-interceptor-<scheme>-debug.apk

Esperado: sem android.permission.INTERNET.

Aciona um deeplink explicitamente para o apk-interceptor:

root@kitploit:~
adb shell am start -W \
  -n com.sterrasec.apkinterceptor/.InterceptActivity \
  -a android.intent.action.VIEW \
  -d 'my-authorized-scheme://test?source=adb'

Aciona um deeplink através do resolvedor do Android:

root@kitploit:~
adb shell am start -W \
  -a android.intent.action.VIEW \
  -d 'my-authorized-scheme://test?source=adb'

O comando explícito confirma o comportamento da InterceptActivity. O comando implícito confirma o intent-filter do manifesto e o comportamento do resolvedor.

Testes

Os testes unitários correm na JVM com Robolectric, por isso não é necessário dispositivo ou emulador. Abrangem o PayloadProvider, incluindo as verificações de whitelist de caminhos e traversal que impedem o fornecedor de servir qualquer coisa que não seja o único ficheiro current.html.

root@kitploit:~
./gradlew testDebugUnitTest

Os resultados dos testes são escritos em app/build/reports/tests/testDebugUnitTest/index.html. A mesma tarefa corre no CI em cada push e pull request para main.

Salvaguardas de Design

  • Sem android.permission.INTERNET
  • Sem transmissão de dados externos ou exfiltração automatizada
  • Sem funcionalidade de execução de comandos shell
  • Sem dependência de root, Magisk, Frida ou instrumentação
  • Sem registo em tempo de execução de esquemas arbitrários
  • Sem fornecedor de ficheiros genérico
  • Apenas /current.html é servido pelo PayloadProvider

Licença

MIT

Baixar ferramenta
CenárioMóduloO Que Ajuda a Verificar
Hijacking de esquema URI personalizadoInterceptorSe outra aplicação pode registar o mesmo esquema personalizado e receber links
Manipulação de parâmetros de deeplinkSenderSe a aplicação avaliada aceita parâmetros inseguros de query/path
Exposição de Activity exportadaSenderSe uma Activity exportada pode ser lançada diretamente por outra aplicação
Exposição de ponte WebView via content://Payload + SenderSe um payload HTML local consegue alcançar uma ponte JavaScript WebView
Verificação de sintaxe de payload localPayloadSe o teu payload HTML/JS é executado no WebView de autoteste
FerramentaFunçãoComo o apk-interceptor difere
jadx / MobSF / QARK / SemgrepEncontrar 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 startEnumerar e enviar deeplinksO apk-interceptor também pode enviar, mas o seu diferencial é receber um esquema sequestrado e mostrar o URI exato e os parâmetros
drozerFramework 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 / FridaArmar 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