MASTG-TECH-0074: 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 (ex.: 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. Pode-se extrair domínios recuperando strings (como discutido anteriormente) ou verificando as strings usando ferramentas como Ghidra. Esta última opção tem uma vantagem clara: pode fornecer contexto, já que você poderá ver em qual contexto cada domínio está sendo usado verificando as referências cruzadas.
A partir daqui, você pode usar essas informações para derivar mais insights que podem ser úteis posteriormente durante sua análise, por exemplo, você pode relacionar os domínios aos pinned certificates (certificados fixados) ou realizar um reconhecimento adicional nos nomes de domínio para saber mais sobre o ambiente alvo.
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 pacotes TCP simples, ou realizam certificate pinning na tentativa de impedir ataques MITM.
Lembre-se de que, na maioria dos casos, usar apenas análise estática não será suficiente e pode até se mostrar extremamente ineficiente quando comparado às alternativas dinâmicas, que produzirão resultados muito mais confiáveis (ex.: usar um proxy de interceptação). Nesta seção, apenas abordamos superficialmente o tema, portanto, consulte Monitoramento Básico de Rede/Sniffing no capítulo "Teste de Segurança Básico em iOS" e verifique os casos de teste no capítulo "Comunicação de Rede em iOS)" para obter mais informações.