Herramienta educativa de laboratorio para enseñar suplantación de remitente en correo electrónico (email spoofing) y las defensas que existen: SPF, DKIM, DMARC y MX. Interfaz 100% web, multiplataforma (Windows, macOS, Linux) porque corre sobre Node.js / Docker.
⚠️ Uso exclusivamente educativo y en entornos controlados. Suplantar el remitente de correos de terceros sin autorización es ilegal en la mayoría de países. Usa esta herramienta solo con dominios propios, laboratorios de práctica, o destinatarios que te dieron consentimiento explícito.
- 🔍 Verificar dominio — consulta en vivo los registros DNS de cualquier dominio (SPF, DMARC, MX y DKIM si conoces el selector) y explica, en lenguaje simple, qué tan fácil sería suplantarlo y por qué.
- ✉️ Enviar correo de prueba — arma un correo con remitente (
From) arbitrario y lo envía en uno de dos modos:- Modo laboratorio (por defecto): el correo va a un servidor SMTP de mentira (Mailpit) que corre en tu propia máquina. Nunca sale a Internet ni llega a una bandeja real — lo ves en una webmail local. 100% seguro para hacer la demo en clase.
- Modo SMTP externo: usas tus propias credenciales SMTP para enviar a un destinatario real. Está pensado para practicar en un dominio propio (por ejemplo un dominio de pruebas que tú controlas) o con consentimiento explícito del destinatario.
No incluye envío masivo, ni firma DKIM falsa, ni técnicas para evadir filtros antispam — el objetivo es mostrar el mecanismo y su defensa, no producir una herramienta de ataque real.
Es JavaScript puro (Express + Nodemailer, sin dependencias con compilación
nativa), así que corre idéntico con Node.js 18/20/22 en Windows, macOS y
Linux. La CI del repositorio (.github/workflows/ci.yml)
lo verifica automáticamente en cada cambio, ejecutando npm test (un smoke
test que arranca el servidor y valida sus endpoints) en las tres plataformas.
La vía Docker usa imágenes multi-arquitectura (node:20-alpine y
axllent/mailpit), por lo que también funciona igual en Apple Silicon,
Intel/AMD y Linux ARM.
- Opción A (recomendada): Docker + Docker Compose — funciona igual en Windows, macOS y Linux, e incluye automáticamente el servidor de laboratorio (Mailpit).
- Opción B: Node.js 18+ instalado — si prefieres correrlo nativo sin Docker (necesitarás tu propio servidor SMTP de pruebas para el modo laboratorio, ver más abajo).
docker compose up --buildLuego abre:
- App: http://localhost:3000
- Bandeja de laboratorio (Mailpit): http://localhost:8025
Todo lo que envíes en "Modo laboratorio" aparecerá en esa bandeja web, mostrando el remitente falsificado tal como lo vería un cliente de correo.
Para detener: Ctrl+C y luego docker compose down.
npm install
npm startAbre http://localhost:3000.
Sin Docker no tienes Mailpit integrado. Para el modo laboratorio puedes:
- Instalar Mailpit por tu cuenta
(
brew install mailpiten macOS, binarios para Windows/Linux en su repo) y dejarlo corriendo (mailpit), o - Usar directamente el modo SMTP externo con un servidor SMTP propio.
Variables de entorno opcionales (.env o exportadas antes de npm start):
| Variable | Default | Uso |
|---|---|---|
PORT |
3000 |
Puerto de la app web |
MAILPIT_HOST |
localhost |
Host del SMTP de laboratorio |
MAILPIT_PORT |
1025 |
Puerto del SMTP de laboratorio |
MAILPIT_WEBUI_URL |
http://localhost:8025 |
URL que se muestra para ver el correo |
- Con la pestaña Verificar dominio, analiza un dominio real con buena configuración (ej. un banco grande) y uno mal configurado, para comparar los veredictos de SPF/DMARC.
- Con la pestaña Enviar correo de prueba, en modo laboratorio,
suplanta el remitente (ej.
soporte@bancox.com) y envíalo a cualquier dirección de prueba. - Abre la bandeja de Mailpit (http://localhost:8025) y muestra cómo el
cliente de correo despliega el remitente falso sin ninguna alerta visual
— y explica que en el mundo real, si
bancox.comtuvieraDMARC p=reject, ese mismo correo habría sido rechazado antes de llegar. - Vuelve a la pestaña de verificación para mostrar en vivo el registro DMARC real del dominio que acaban de suplantar, cerrando el círculo entre "ataque" y "defensa".
spoofing edu tool/
├── server.js # Backend Express: checker DNS + envío SMTP
├── public/
│ ├── index.html # Interfaz web
│ ├── app.js # Lógica del frontend
│ └── style.css # Estilos
├── docker-compose.yml # App + Mailpit (modo laboratorio)
├── Dockerfile
├── data/audit.log # Registro local de cada envío (auditoría)
└── package.json
- Cada envío (modo, remitente, destinatario, fecha) queda registrado en
data/audit.logpara que un instructor pueda revisar qué se hizo. - El botón de envío permanece deshabilitado hasta marcar la casilla de confirmación de autorización.
- El modo laboratorio es el que viene seleccionado por defecto.
- Las credenciales SMTP del modo externo solo se usan en memoria para ese envío puntual; no se guardan en disco ni en el navegador.