
Capturador de phishing usando Certstream
Capture posibles dominios de phishing en tiempo casi real al buscar emisiones sospechosas de certificados TLS reportadas al Registro de Transparencia de Certificados (CTL) a través de la API CertStream. Las emisiones "sospechosas" son aquellas cuyo nombre de dominio supera un cierto umbral basado en un archivo de configuración.
Esto es solo un PoC funcional. Siéntete libre de contribuir y ajustar el código para que se adapte a tus necesidades. 👍

El script debería funcionar correctamente usando Python2 o Python3. En cualquier caso, instala los requisitos después de clonar o descargar el código fuente:
pip install -r requirements.txt
Phishing Catcher usa un archivo de configuración YAML simple para asignar una puntuación numérica a cadenas que se pueden encontrar en el nombre común o el campo SAN de un certificado TLS (es decir, el nombre de dominio de un certificado). El archivo de configuración, suspicious.yaml, incluye valores predeterminados razonables, pero puedes ajustar o agregar tanto las cadenas que contiene como la puntuación asignada a cada cadena editando un archivo de anulación, external.yaml.
Tanto el archivo de configuración predeterminado suspicious.yaml como el archivo modificable por el usuario external.yaml contienen dos diccionarios YAML: keywords y tlds. Las claves de los diccionarios son las cadenas y los valores son las puntuaciones que se asignan si esa cadena se encuentra en el nombre de dominio de un certificado emitido. Por ejemplo:
keywords:
'login': 25
Aquí, se añade una puntuación de 25 a la palabra clave genérica login cuando se encuentra en el nombre de dominio de un certificado TLS. Aumentar este valor elevará el nivel de sospecha contra los dominios que contengan la cadena login, lo que te permitirá someter estas emisiones de certificados a un mayor escrutinio.
Sin embargo, para que Phishing Catcher lo reporte como sospechoso, la puntuación asignada a un certificado debe cumplir o superar (>=, "mayor o igual que") los siguientes umbrales:
| Score | Reportado como |
|---|---|
| 65 | Potencial |
| 80 | Probable |
| 90 | Sospechoso |
💡 Consulta la función
score_domain()en el código fuente para obtener más detalles sobre el algoritmo de puntuación.
Una vez configurado a tu gusto, el uso es tan simple como ejecutar el script:
$ ./catch_phishing.py

Si estás usando MacOs o tienes una versión de sistema operativo diferente que dificulte la instalación de phishing_catcher, una de tus opciones es tener la herramienta dockerizada.
docker build . -t phishing_catcher

GNU GPLv3
Si esta herramienta te ha sido útil, no dudes en agradecerme invitándome a un café.