
Comprobador masivo de suplantación de dominio mediante análisis autoritativo de registros SPF y DMARC con lógica de suplantación personalizada y probada en el mundo real, y enumeración opcional de DKIM.
Spoofy es un programa que comprueba si una lista de dominios puede ser suplantada en función de los registros SPF y DMARC. Quizás te preguntes: "¿Por qué necesitamos otra herramienta que compruebe si un dominio puede ser suplantado?"
Bueno, Spoofy es diferente y esta es la razón:
- Lógica de suplantación personalizada y probada manualmente (sin conjeturas ni especulaciones, resultados de pruebas del mundo real)
- Descubrimiento de registros basado en estándares: evaluación SPF según RFC 7208 y recorrido del árbol DMARC según RFC 9989, incluidos
sp/nppara subdominios- Búsquedas masivas precisas sobre un resolutor compartido con caché y failover (1.1.1.1, 8.8.8.8, 9.9.9.9)
- Contador de consultas DNS SPF y de búsquedas vacías, además de detección de dominios include SPF no registrados
- Enumeración opcional de selectores DKIM mediante API
Spoofy requiere Python 3.9+. Instálalo desde PyPI:
pip3 install spoofy
spoofy -d example.com
O ejecútalo desde un clon con pip3 install -r requirements.txt y ./spoofy.py en lugar de spoofy. El uso se muestra a continuación:
Usage:
spoofy -d [DOMAIN] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
OR
spoofy -iL [DOMAIN_LIST] -o [stdout, xls or json] -t [NUMBER_OF_THREADS] [--dkim] [--dns-server IP]
Options:
-d : Process a single domain.
-iL : Provide a file containing a list of domains to process (blank lines and # comments are skipped).
-o : Specify the output format: stdout (default), xls, or json.
-t : Set the number of threads to use (default: 4).
--dkim : Enable DKIM selector enumeration via API (optional).
--dns-server : Query this resolver instead of 1.1.1.1, 8.8.8.8 and 9.9.9.9.
Examples:
spoofy -d example.com -t 10
spoofy -d example.com --dkim
spoofy -iL domains.txt -o xls
spoofy -iL domains.txt -o json --dkim
(La tabla de suplantabilidad enumera todas las combinaciones de configuraciones SPF y DMARC que afectan a la entregabilidad en la bandeja de entrada, excepto los modificadores DKIM). Descargar aquí
| Código | Resultado | SPOOFING_POSSIBLE |
|---|---|---|
| 0 | Suplantación posible | true |
| 1 | Suplantación de subdominio posible | true |
| 2 | Suplantación del dominio organizativo posible | true |
| 3 | La suplantación podría ser posible (p=quarantine con pct < 100) | null |
| 4 | La suplantación podría ser posible (depende del buzón) | null |
| 5 | La suplantación del dominio organizativo podría ser posible (depende del buzón) | null |
| 6 | La suplantación de subdominio podría ser posible (depende del buzón) | null |
| 7 | Suplantación de subdominio posible, suplantación del dominio organizativo podría ser posible | true |
| 8 | La suplantación no es posible | false |
| 9 | No se puede determinar (falló una consulta DNS) | null |
El veredicto es el código probado para el mecanismo all del SPF del dominio y las etiquetas DMARC p, sp y aspf tal como las escriben los registros. spoofy/master_table.py contiene la hoja de cálculo como datos (python3 -m spoofy.master_table la reescribe después de que cambie la hoja de cálculo), y test.py comprueba que se reproduce cada fila. Las entradas que la tabla no cubre se gestionan de la siguiente manera:
p aplicado con aspf pero sin sp (24 combinaciones no probadas): sp toma el valor de p, por lo que se usa la fila probada con sp escrito explícitamente._dmarc): el resultado del subdominio probado para los registros SPF y DMARC del padre, con np en lugar de sp cuando el subdominio no existe.pct por debajo de 100 con p=quarantine: código 3, ya que el correo no muestreado recibe p=none. Con p=reject el correo no muestreado sigue en cuarentena, por lo que pct no cambia el veredicto.t=y (modo de prueba de RFC 9989): la política baja un nivel (reject a quarantine, quarantine a none) antes de la consulta.La creación de la tabla de suplantabilidad implicó enumerar todas las configuraciones relevantes de SPF y DMARC, combinarlas y luego realizar la recopilación de información de SPF y DMARC usando una versión temprana de Spoofy en un gran número de dominios del gobierno de EE. UU. Se probó si una combinación de SPF y DMARC era suplantable o no usando la suite de pentesting de seguridad de correo electrónico en emailspooftest con Microsoft 365. Sin embargo, las pruebas iniciales se realizaron con Protonmail y Gmail, pero se descubrió que estos servicios utilizan comprobaciones de búsqueda inversa que afectaban a los resultados, en particular para las pruebas de suplantación de subdominios. Como resultado, se usó Microsoft 365 para las pruebas, ya que ofrecía un mayor control sobre el manejo del correo.
Tras las pruebas iniciales con Microsoft 365, algunas combinaciones se volvieron a probar con Protonmail y Gmail debido a las diferencias en su manejo de los banners en los correos electrónicos. Protonmail y Gmail pueden colocar el correo suplantado en la bandeja de entrada con un banner o en spam sin banner, lo que provoca que algunas combinaciones de SPF y DMARC se informen como "Depende del buzón" al usar Spoofy. En cambio, Microsoft 365 coloca ambas condiciones en spam. El proceso de pruebas y recopilación de datos tardó varios días en completarse, tras lo cual se compiló una buena tabla maestra que se usó como base para la lógica de suplantabilidad de Spoofy.
Esta herramienta es solo para pruebas y fines académicos y solo puede usarse donde se haya dado consentimiento estricto. ¡No la uses para fines ilegales! Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no son responsables de ningún uso indebido o daño causado por esta herramienta y software.
Este proyecto está licenciado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial 4.0 - consulta el archivo LICENSE para más detalles