English Version Available: README_EN.md
Este proyecto busca difundir el punto de vista de un adversario y un defensor sobre las oportundiades de aplicación de actividades de ciberengaño. Permite desplegar un entorno producitivo fictivio con su monitoreo, distintos niveles de engaño junto con una propuesta de atacante. El entorno simula una organización financiera ficticia llamada Andesfinance con servicios web vulnerables.
Mostrar cómo se ve un entorno con:
- ✅ Multilpes actividades de engaño desplegadas
- ✅ Monitoreo de actividades
- ✅ Un adversario aumentando su dificultad en la toma de decisiones.
┌────────────────────────────────────────────────────────────────────────────────┐
│ "EXTERNAL" NETWORK │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ Attacker Container │ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Scripting │ │ Manual │ │ Recon Tools │ │ │
│ │ │ Attacks │ │ Testing │ │ │ │ │
│ │ │ │ │ (SSH/Web) │ │ (nmap, etc.) │ │ │
│ │ │ Port 5000 │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────────────┘
│
│
▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│ DMZ NETWORK │
│ │
│ ┌───────────────────────────────────┐ │
│ │ Frontend │ │
│ │ │ │
│ │ Employee Portal │ │
│ │ Port 3000 │ │
│ └─────────────────────┬─────────────┘ │
│ │ │
│ │ Backend Communication │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ SERVER NETWORK │ │
│ │ │ │
│ │ ┌───────────────┐ ┌──────────────┐ ┌─────────────────────────┐ │ │
│ │ │ Backend │ │ SSH Honeypot │ │ Fake Activity │ │ │
│ │ │ │ │ │ │ Generator │ │ │
│ │ │ Financial API │ │ Port 22 │◄───│ │ │ │
│ │ │ Port 3001 │ │ │ │ │ │ │
│ │ └───────┬───────┘ └──────────────┘ └─────────────────────────┘ │ │
│ │ │ │ │
│ │ │ Database Access │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────────────────────────────────┐ │ │
│ │ │ DATABASE NETWORK │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │
│ │ │ │ MySQL Database │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ Financial Database │ │ │ │
│ │ │ │ Port 3306 │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ └─────────────────────────────────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ MONITOR NETWORK │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────────────────┐ │ │
│ │ │ Filebeat │────│Elasticsearch │────│ Kibana │ │ │
│ │ │ (Log Shipper)│ │ (Storage) │ │ (Visualization) │ │ │
│ │ │ │ │ Port 9200 │ │ Port 5601 │ │ │
│ │ └──────────────┘ └──────────────┘ └─────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────┘
- Frontend: Portal de empleados de Andesfinance (Node.js/Express)
- Backend: API financiera de Andesfinance
- MySQL: Base de datos financiera con datos sensibles
- SSH Honeypot: Honeypot SSH personalizado
- Fake Activity: Generador de actividad falsa
- Elastic Stack: Filebeat + Elasticsearch + Kibana
- Docker Compose: Orquestación de contenedores
- Frontend: Accesible desde localhost (puerto 3000) - punto de entrada controlado
- Backend: Solo accesible internamente - protegido de acceso externo
- MySQL: Solo accesible internamente - base de datos aislada
- SSH Honeypot: Solo Accesible internamente desde la red de servidores
- Elastic Stack: Accesible desde localhost (Puerto 5601) - punto de entrada para monitoreo
/cyberdeception-playground/
├── docker-compose.yml # Orquestación de servicios
├── frontend/ # Aplicación web vulnerable
│ ├── Dockerfile # Imagen del frontend
│ ├── package.json # Dependencias Node.js
│ ├── server.js # Servidor web vulnerable
│ ├── start-with-monitor.sh # Script de inicio con monitoreo
│ ├── apk-monitor.sh # Monitor de paquetes APK
│ ├── wait-for-backend.js # Script de espera para backend
│ ├── wait-for-mysql.js # Script de espera para MySQL
│ ├── public/ # Archivos estáticos
│ │ └── index.html # Página principal
│ └── config/ # Archivos de configuración
│ ├── access.txt # Control de acceso
│ ├── aws-credentials.json # Credenciales AWS falsas
│ ├── database.conf # Configuración de base de datos
│ ├── environment.env # Variables de entorno
│ ├── export-test-customer-data.csv # Datos de prueba
│ └── export2-employee-database.xlsx # Base de datos empleados
├── backend/ # API backend vulnerable
│ ├── Dockerfile # Imagen del backend
│ ├── package.json # Dependencias Node.js
│ ├── server.js # Servidor API vulnerable
│ ├── deception-endpoints.js # Endpoints de decepción
│ └── wait-for-mysql.js # Script de espera para MySQL
├── mysql/ # Base de datos MySQL
│ ├── Dockerfile # Imagen de MySQL
│ ├── init.sql # Script de inicialización básico
│ ├── init-basic.sql # Inicialización nivel básico
│ ├── init-complete.sql # Inicialización nivel completo
│ ├── init-impossible.sql # Inicialización nivel imposible
│ └── select-init.sh # Script de selección de inicialización
├── ssh-honeypot/ # Honeypot SSH
│ ├── Dockerfile # Imagen del honeypot
│ ├── ssh_honeypot.py # Honeypot SSH personalizado
│ ├── startup.sh # Script de inicio
│ ├── config/
│ │ └── userdb.txt # Usuarios y contraseñas
│ └── logs/ # Logs del honeypot
│ ├── ssh_connections.json # Conexiones SSH registradas
│ └── ssh_honeypot.log # Log del honeypot
├── fake-activity/ # Generador de actividad falsa
│ ├── Dockerfile # Imagen del generador
│ ├── requirements.txt # Dependencias Python
│ └── app.py # Aplicación generadora
├── attacker/ # Contenedor atacante
│ ├── Dockerfile # Imagen con herramientas de ataque
│ ├── requirements.txt # Dependencias Python
│ └── attack_scripts/ # Scripts de ataque automatizados
│ ├── main_attacker.py # Script principal de ataque
│ └── components/ # Componentes de ataque
│ ├── base_attacker.py # Clase base del atacante
│ ├── command_injection.py # Inyección de comandos
│ ├── data_exfiltration.py # Exfiltración de datos
│ ├── port_scanning.py # Escaneo de puertos
│ ├── reconnaissance.py # Reconocimiento
│ ├── sql_injection.py # Inyección SQL
│ ├── ssh_bruteforce.py # Fuerza bruta SSH
│ └── web_application_discovery.py # Descubrimiento web
├── filebeat/ # Agente de recolección de logs
│ ├── Dockerfile # Imagen de Filebeat
│ └── filebeat.yml # Configuración de Filebeat
├── dashboards/ # Dashboards de Kibana
│ └── setup-kibana.sh # Script de configuración de Kibana
├── logs/ # Logs del sistema
│ ├── backend/ # Logs del backend
│ ├── frontend/ # Logs del frontend
│ └── mysql/ # Logs de MySQL
├── scripts/ # Scripts de utilidad
│ ├── startup.bat # Script de inicio (Windows)
│ └── shutdown.bat # Script de parada (Windows)
├── LICENSE # Licencia del proyecto
└── README.md # Este archivo
- Docker y Docker Compose instalados
- Al menos 4GB de RAM disponible
- Puertos 3000, 22, 5601, 9200 libres (backend y MySQL son internos)
El sistema ahora soporta diferentes niveles de decepción cibernética:
- None - Sin engaño (servicios mínimos)
- Basic - Engaño básico (honeypots básicos)
- Complete - Engaño completa (todos los honeypots y señuelos)
- Impossible - Engaño máximo (técnicas avanzadas)
# Clonar el repositorio
git clone https://github.com/Base4Security/cyberdeception-playground.git
cd cyberdeception-playground
# Levantar con nivel específico de decepción
./scripts/startup.sh <level>
./scripts\startup.bat <level>
# Verificar que todos los servicios estén corriendo
docker-compose ps# Verificar Kibana
curl http://localhost:5601
# Verificar Frontend (aplicación web)
curl http://localhost:3000
# Verificar que el contenedor atacante esté funcionando
docker exec attacker-tools whoamiFrontend Web Application (Andesfinance Portal):
- Abrir navegador en
http://localhost:3000 - Usar credenciales:
admin/admin123 - Explorar las vulnerabilidades del portal financiero
Kibana Dashboard:
- Abrir navegador en
http://localhost:5601 - Explorar eventos en menu "Discover"
El proyecto incluye un contenedor con herramientas de ataque para simular intrusiones contra los servicios de Andesfinance:
# Acceder directamente al contenedor atacante
docker exec -it attacker-tools /bin/bash
# Desde el contenedor atacante, se puede explotar una vulnerabilidad de command injection para explorar el frontend de Andesfinance
curl -X POST http://frontend:3000/diagnostics -H "Content-Type: application/json" -d '{"system_check": "ping", "target_host": "localhost | hostname"}'
curl -X POST http://frontend:3000/diagnostics -H "Content-Type: application/json" -d '{"system_check": "ping", "target_host": "localhost | sshpass -p admin ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no admin@172.22.0.2 whoami 2>/dev/null && echo SSH_SUCCESS:admin:admin@172.22.0.2"}'
# Para ejecutar una serie de ataques contra el fronend utiliza desde el contentedor atacante:
cd attack_scripts/
python3 main_attacker.pyEl dashboard incluye:
- Eventos por Tipo: Distribución de tipos de eventos
- Actividad en Tiempo Real: Timeline de actividad
- IPs de Origen: Top IPs que intentan acceder
- Comandos Ejecutados: Comandos más frecuentes
- Logs Detallados: Vista detallada de todos los eventos
- Sin despliegue de engaño
✅ Señuelo SSH: Captura intentos de conexión SSH ✅ Credenciales falsas en users db ✅ Archivos señuelo: Documentos falsos atractivos
✅ Basico + ✅ Generador de actividad sobre señuelo: Rastros de patrones de uso diario ✅ Api endpoints señuelo: Api endpoint señuelo ✅ Cambios en estructura en base de datos: Columnas adicionales en DB especialmente monitoreadas
✅ Completo + ✅ Cambios en banners y servicios "inslatados" ✅ Desinstalacion forzada de instalación reciente ✅ Cambios en ejecutables clave: Ejecutables especialmente modificados
Editar fake-activity/app.py:
# Agregar nuevos usuarios
USERS = ["alice", "bob", "carol", "nuevo_usuario"]
# Agregar nuevos comandos
COMMANDS = [
"ls -la",
"cat /etc/passwd",
"nuevo_comando_interasante"
]Agregar al docker-compose.yml:
services:
ssh-honeypot-2:
build: ./ssh-honeypot
ports:
- "2224:22"
# ... resto de configuraciónModificar filebeat/filebeat.yml:
output.elasticsearch:
hosts: ["siem-externo:9200"]
# ... configuración adicional# Ver logs de todos los servicios
docker-compose logs -f
# Ver logs de un servicio específico
docker-compose logs -f ssh-honeypot
docker-compose logs -f fake-activity
docker-compose logs -f filebeat- A Practical Guide to Adversary Engagement
- Honeypot Best Practices
- Diseño de estrategias de ciberengaño a partir de inteligencia de ciberamenazas
¡Las contribuciones son bienvenidas!
- Fork el proyecto
- Crear una branch para tu feature
- Commit tus cambios
- Push a la branch
- Abrir un Pull Request
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.