Skip to content

Un laboratorio práctico para implementar, probar y analizar estrategias de ciberengaño desde la perspectiva del atacante y del defensor.

License

Notifications You must be signed in to change notification settings

Base4Security/cyberdeception-playground

Repository files navigation

Cyber Deception Playground

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.

Objetivo

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.

Arquitectura

┌────────────────────────────────────────────────────────────────────────────────┐
│                            "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             │    │    │
│  │  └──────────────┘    └──────────────┘    └─────────────────────────┘    │    │
│  └─────────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────────┘

Stack Tecnológico

  • 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

Arquitectura de Seguridad

  • 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

Estructura del Proyecto

/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

Instalación y Uso

Prerrequisitos

  • Docker y Docker Compose instalados
  • Al menos 4GB de RAM disponible
  • Puertos 3000, 22, 5601, 9200 libres (backend y MySQL son internos)

Niveles de Decepción

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)

1. Clonar y Levantar el Entorno

# 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

2. Verificar Servicios

# 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 whoami

3. Acceder a los Servicios

Frontend Web Application (Andesfinance Portal):

  1. Abrir navegador en http://localhost:3000
  2. Usar credenciales: admin / admin123
  3. Explorar las vulnerabilidades del portal financiero

Kibana Dashboard:

  1. Abrir navegador en http://localhost:5601
  2. Explorar eventos en menu "Discover"

Simulación de Ataques

Usar el Contenedor Atacante

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.py

Visualización en Kibana

El 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

Análisis de niveles

Observación de los diferentes niveles

Nivel None

  • Sin despliegue de engaño

Nivel Basico

✅ Señuelo SSH: Captura intentos de conexión SSH ✅ Credenciales falsas en users db ✅ Archivos señuelo: Documentos falsos atractivos

Nivel Completo

✅ 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

Nivel Imposible

✅ Completo + ✅ Cambios en banners y servicios "inslatados" ✅ Desinstalacion forzada de instalación reciente ✅ Cambios en ejecutables clave: Ejecutables especialmente modificados

Configuración Avanzada

Personalizar Actividad Falsa

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"
]

Configurar Más Honeypots

Agregar al docker-compose.yml:

services:
  ssh-honeypot-2:
    build: ./ssh-honeypot
    ports:
      - "2224:22"
    # ... resto de configuración

Integrar con SIEM Externo

Modificar filebeat/filebeat.yml:

output.elasticsearch:
  hosts: ["siem-externo:9200"]
  # ... configuración adicional

Troubleshooting

Logs de Debugging

# 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

Recursos Adicionales

Contribuciones

¡Las contribuciones son bienvenidas!

  1. Fork el proyecto
  2. Crear una branch para tu feature
  3. Commit tus cambios
  4. Push a la branch
  5. Abrir un Pull Request

Licencia

Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.


About

Un laboratorio práctico para implementar, probar y analizar estrategias de ciberengaño desde la perspectiva del atacante y del defensor.

Resources

License

Stars

Watchers

Forks