
Capturador de phishing usando Certstream
Capture possíveis domínios de phishing em tempo quase real, analisando emissões suspeitas de certificados TLS reportadas ao Certificate Transparency Log (CTL) através da API CertStream. Emissões "suspeitas" são aquelas cujo nome de domínio ultrapassa um determinado limite de pontuação com base em um arquivo de configuração.
Isto é apenas um PoC funcional. Sinta-se à vontade para contribuir e ajustar o código conforme suas necessidades. 👍

O script deve funcionar bem usando Python2 ou Python3. Em ambos os casos, instale os requisitos após clonar ou baixar o código-fonte:
pip install -r requirements.txt
O Phishing Catcher utiliza um arquivo de configuração YAML simples para atribuir uma pontuação numérica para strings que podem ser encontradas no nome comum (common name) ou no campo SAN de um certificado TLS (ou seja, o nome de domínio do certificado). O arquivo de configuração, suspicious.yaml, já vem com valores padrão sensatos, mas você pode ajustar ou adicionar tanto as strings que ele contém quanto a pontuação atribuída a cada string editando um arquivo de substituição, external.yaml.
Tanto o arquivo padrão suspicious.yaml quanto o arquivo external.yaml, que pode ser modificado pelo usuário, contêm dois dicionários YAML: keywords e tlds. As chaves dos dicionários são as strings e os valores são as pontuações a serem atribuídas caso essa string seja encontrada no nome de domínio de um certificado emitido. Por exemplo:
keywords:
'login': 25
Aqui, uma pontuação de 25 é adicionada à palavra-chave genérica login quando ela é encontrada no nome de domínio de um certificado TLS. Aumentar esse valor elevará o nível de suspeita contra domínios que contenham a string login, permitindo assim que você submeta essas emissões de certificados a um escrutínio mais rigoroso.
No entanto, para que seja reportado como suspeito pelo Phishing Catcher, a pontuação atribuída a um determinado certificado deve atingir ou exceder (>=, "maior ou igual a") os seguintes limites:
| Pontuação | Reportado como |
|---|---|
| 65 | Potencial |
| 80 | Provável |
| 90 | Suspeito |
💡 Consulte a função
score_domain()no código-fonte para detalhes sobre o algoritmo de pontuação.
Depois de configurado a seu gosto, o uso é tão simples quanto executar o script:
$ ./catch_phishing.py

Se você estiver usando MacOs ou tiver uma versão diferente de SO que dificulte a instalação do phishing_catcher, ter a ferramenta dockerizada é uma das opções.
docker build . -t phishing_catcher

GNU GPLv3
Se esta ferramenta foi útil para você, sinta-se à vontade para me agradecer comprando-me um café.