MASTG-TECH-0022: Coleta de Informações - Comunicação de Rede

A maioria dos aplicativos que você pode encontrar se conecta a endpoints remotos. Mesmo antes de realizar qualquer análise dinâmica (por exemplo, captura e análise de tráfego), você pode obter algumas entradas iniciais ou pontos de entrada enumerando os domínios com os quais o aplicativo deve se comunicar.

Normalmente, esses domínios estarão presentes como strings dentro do binário do aplicativo. Uma maneira de fazer isso é usar ferramentas automatizadas como Apkleaks ou MobSF.

Alternativamente, você pode usar grep para os nomes de domínio usando expressões regulares. Para isso, você pode direcionar o binário do aplicativo diretamente ou realizar engenharia reversa e direcionar o código desmontado ou descompilado. Esta última opção tem uma vantagem clara: pode fornecer contexto, pois você poderá ver em qual contexto cada domínio é usado (por exemplo, classe e método).

A partir daqui, você pode usar essas informações para obter mais insights que podem ser úteis posteriormente durante sua análise, por exemplo, você pode relacionar os domínios com os pinned certificates ou o arquivo de Configuração de Segurança de Rede) ou realizar mais reconhecimento nos nomes de domínio para saber mais sobre o ambiente alvo. Ao avaliar um aplicativo, é importante verificar o arquivo de Configuração de Segurança de Rede, pois frequentemente configurações de depuração (menos seguras) podem ser enviadas por engano para as builds de lançamento final.

A implementação e verificação de conexões seguras pode ser um processo complexo e há inúmeros aspectos a considerar. Por exemplo, muitos aplicativos usam outros protocolos além de HTTP, como XMPP ou plain TCP packets, ou realizam certificate pinning na tentativa de impedir ataques MITM, mas infelizmente possuem graves falhas lógicas em sua implementação ou uma configuração de rede de segurança intrinsecamente errada.

Lembre-se de que na maioria dos casos, apenas usar análise estática não será suficiente e pode até se mostrar extremamente ineficiente quando comparado às alternativas dinâmicas, que fornecerão resultados muito mais confiáveis (por exemplo, usando um proxy interceptor). Nesta seção, apenas abordamos superficialmente o assunto; consulte Monitoramento Básico de Rede/Captura de Pacotes e também verifique os casos de teste no capítulo "Android Network Communication)".