
Cacciatore di phishing basato su Certstream
Cattura possibili domini di phishing in tempo quasi reale cercando emissioni di certificati TLS sospette segnalate al Certificate Transparency Log (CTL) tramite l'API CertStream. Le emissioni "sospette" sono quelle il cui nome di dominio supera una certa soglia basata su un file di configurazione.
Questa è solo una PoC funzionante. Sentiti libero di contribuire e modificare il codice per adattarlo alle tue esigenze. 👍

Lo script funziona bene con Python2 o Python3. In entrambi i casi, installa i requisiti dopo aver clonato o scaricato il codice sorgente:
pip install -r requirements.txt
Phishing Catcher utilizza un semplice file di configurazione YAML per assegnare un punteggio numerico alle stringhe che possono essere trovate nel campo common name o SAN di un certificato TLS (cioè il nome di dominio del certificato). Il file di configurazione, suspicious.yaml, viene fornito con impostazioni predefinite ragionevoli, ma è possibile modificare o aggiungere sia le stringhe che contiene sia il punteggio assegnato a ciascuna stringa modificando un file di override, external.yaml.
Sia il file di configurazione predefinito suspicious.yaml che il file modificabile dall'utente external.yaml contengono due dizionari YAML: keywords e tlds. Le chiavi dei dizionari sono le stringhe e i valori sono i punteggi da assegnare se quella stringa viene trovata nel nome di dominio per un certificato emesso. Ad esempio:
keywords:
'login': 25
Qui, un punteggio di 25 viene aggiunto alla parola chiave generica login quando viene trovata in un nome di dominio di un certificato TLS. Aumentare questo valore aumenterà il livello di sospetto nei confronti dei domini con la stringa login, permettendoti così di sottoporre queste emissioni di certificati a un maggiore controllo.
Tuttavia, per essere segnalato come sospetto da Phishing Catcher, il punteggio assegnato a un determinato certificato deve raggiungere o superare (>=, "maggiore o uguale a") le seguenti soglie:
| Score | Reported as |
|---|---|
| 65 | Potential |
| 80 | Likely |
| 90 | Suspicious |
💡 Vedi la funzione
score_domain()nel codice sorgente per dettagli sull'algoritmo di punteggio.
Una volta configurato a tuo piacimento, l'uso è semplice come eseguire lo script:
$ ./catch_phishing.py

Se stai usando macOS o hai una versione diversa del sistema operativo che rende difficile l'installazione di phishing_catcher, allora avere lo strumento dockerizzato è una delle tue opzioni.
docker build . -t phishing_catcher

GNU GPLv3
Se questo strumento ti è stato utile, sentiti libero di ringraziarmi offrendomi un caffè.