
Détecteur de phishing utilisant Certstream
Capturer les domaines de phishing possibles en quasi temps réel en recherchant les émissions de certificats TLS suspectes signalées au Journal de transparence des certificats (CTL) via l'API CertStream. Les émissions « suspectes » sont celles dont le nom de domaine obtient un score supérieur à un certain seuil basé sur un fichier de configuration.
Ceci est juste une preuve de concept fonctionnelle. N'hésitez pas à contribuer et à modifier le code pour l'adapter à vos besoins. 👍

Le script devrait fonctionner correctement avec Python2 ou Python3. Dans les deux cas, installez les dépendances après avoir cloné ou téléchargé le code source :
pip install -r requirements.txt
Phishing Catcher utilise un simple fichier de configuration YAML pour attribuer un score numérique aux chaînes de caractères qui peuvent être trouvées dans le nom commun ou le champ SAN d'un certificat TLS (c'est-à-dire le nom de domaine du certificat). Le fichier de configuration, suspicious.yaml, est fourni avec des valeurs par défaut raisonnables, mais vous pouvez ajuster ou ajouter à la fois les chaînes qu'il contient et le score attribué à chaque chaîne en modifiant un fichier de remplacement, external.yaml.
Les deux fichiers de configuration, le fichier par défaut suspicious.yaml et le fichier modifiable par l'utilisateur external.yaml, contiennent deux dictionnaires YAML : keywords et tlds. Les clés des dictionnaires sont les chaînes de caractères et les valeurs sont les scores à attribuer si cette chaîne est trouvée dans le nom de domaine d'un certificat émis. Par exemple :
keywords:
'login': 25
Ici, un score de 25 est ajouté au mot-clé générique login lorsqu'il est trouvé dans le nom de domaine d'un certificat TLS. Augmenter cette valeur augmentera le niveau de suspicion envers les domaines contenant la chaîne login, vous permettant ainsi de soumettre ces émissions de certificats à un examen plus approfondi.
Cependant, pour être signalé comme suspect par Phishing Catcher, le score attribué à un certificat donné doit atteindre ou dépasser (>=, « supérieur ou égal à ») les seuils suivants :
| Score | Signalé comme |
|---|---|
| 65 | Potential |
| 80 | Likely |
| 90 | Suspicious |
💡 Consultez la fonction
score_domain()dans le code source pour plus de détails sur l'algorithme de notation.
Une fois configuré à votre goût, l'utilisation est aussi simple que d'exécuter le script :
$ ./catch_phishing.py

Si vous utilisez macOS ou si vous avez une version de système d'exploitation différente qui rendrait l'installation de phishing_catcher difficile, alors disposer de l'outil dans un conteneur Docker est l'une de vos options.
docker build . -t phishing_catcher

GNU GPLv3
Si cet outil vous a été utile, n'hésitez pas à me remercier en m'offrant un café.