Skip to content

djfatbody/pentest-ia

 
 

Repository files navigation

PentestIA - Sistema Automatizado de Pruebas de Penetración

PentestIA es un sistema automatizado de pruebas de penetración que combina inteligencia artificial con herramientas tradicionales de seguridad para realizar evaluaciones de vulnerabilidades de manera eficiente y escalable.

🚀 Características

  • Interfaz Web Moderna: UI desarrollada con Vue 3 y PrimeVue
  • API RESTful: Backend construido con FastAPI y Python
  • Base de Datos: PostgreSQL para almacenamiento persistente
  • Arquitectura Modular: Servicios MCP (Model Context Protocol) para diferentes tipos de pruebas
  • Inteligencia Artificial: Motor de decisiones basado en Llama 3.2
  • Monitoreo en Tiempo Real: Estadísticas y métricas de rendimiento
  • Gestión de Targets: Administración de objetivos de prueba
  • Sistema de Reglas: Configuración flexible de reglas de detección
  • Reportes Automatizados: Generación de informes de seguridad
  • Descubrimiento Automático: Reconocimiento automático de endpoints

🏗️ Arquitectura

PentestIA/
├── data/
│   ├── brain/           # Backend API (FastAPI)
│   ├── ui/              # Frontend (Vue 3 + PrimeVue)
│   ├── static/          # Archivos estáticos (build del frontend)
│   ├── mcps/            # Servidores MCP
│   │   ├── reconnaissance/  # Descubrimiento de endpoints
│   │   ├── xss/            # Detección de XSS
│   │   ├── sqli/           # Detección de SQL Injection
│   │   └── dom-analyzer/   # Análisis del DOM
│   └── dvvca/           # Aplicación vulnerable de prueba
├── build/               # Dockerfiles y configuraciones
│   ├── brain/
│   ├── ui/
│   ├── mcps/
│   ├── dvvca/
│   └── ollama/
├── db/                  # Datos de PostgreSQL
└── docker-compose.yaml  # Orquestación de servicios

🧠 Servicios MCP (Model Context Protocol)

PentestIA utiliza una arquitectura modular basada en MCP para diferentes tipos de pruebas de seguridad:

🔍 MCP Reconnaissance (Puerto 8001)

  • Función: Descubrimiento automático de endpoints y estructura de aplicaciones
  • Capacidades:
    • Crawling automático de sitios web
    • Descubrimiento de endpoints ocultos
    • Análisis de estructura de directorios
    • Detección de tecnologías utilizadas
    • Mapeo de superficie de ataque

🎯 MCP XSS (Puerto 8002)

  • Función: Detección de vulnerabilidades Cross-Site Scripting
  • Capacidades:
    • Análisis de parámetros de entrada
    • Detección de reflejado XSS
    • Detección de almacenado XSS
    • Análisis de filtros de seguridad
    • Generación de payloads de prueba

💉 MCP SQL Injection (Puerto 8003)

  • Función: Detección de vulnerabilidades de inyección SQL
  • Capacidades:
    • Análisis de formularios de login
    • Detección de inyecciones booleanas
    • Detección de inyecciones de tiempo
    • Análisis de parámetros de base de datos
    • Explotación de vulnerabilidades SQLi

🔬 MCP DOM Analyzer (Puerto 8004)

  • Función: Análisis profundo del DOM para vulnerabilidades
  • Capacidades:
    • Análisis de JavaScript del lado cliente
    • Detección de DOM-based XSS
    • Análisis de eventos y listeners
    • Detección de manipulaciones inseguras del DOM
    • Análisis de frameworks JavaScript

🛠️ Tecnologías

Backend

  • FastAPI: Framework web moderno y rápido
  • SQLAlchemy: ORM para base de datos
  • PostgreSQL: Base de datos principal
  • Redis: Caché y sesiones
  • Pydantic: Validación de datos
  • Ollama: Motor de IA local con Llama 3.2

Frontend

  • Vue 3: Framework de JavaScript progresivo
  • PrimeVue: Biblioteca de componentes UI
  • Vite: Herramienta de construcción
  • Axios: Cliente HTTP

Infraestructura

  • Docker: Contenedores para todos los servicios
  • Docker Compose: Orquestación de servicios
  • PostgreSQL: Base de datos
  • Redis: Caché y colas
  • Nginx: Servidor web y proxy reverso

🚀 Instalación y Uso

Prerrequisitos

  • Docker y Docker Compose
  • Git
  • Mínimo 8GB RAM (recomendado 16GB para IA)

Instalación

  1. Clonar el repositorio:
git clone <repository-url>
cd pentestia
  1. Configurar variables de entorno (opcional):
cp .env.example .env
# Editar .env según sea necesario
  1. Ejecutar con Docker Compose:
docker-compose up -d
  1. Construir frontend para producción:
./build-frontend.sh
  1. Acceder a la aplicación:

Servicios Disponibles

Servicio Puerto Descripción
pentestia-ui 3000 Interfaz de usuario (desarrollo)
pentestia-nginx 80 Servidor web (producción)
pentestia-brain 8000 API Backend
pentestia-ollama 11434 Motor de IA (Llama 3.2)
postgres 5432 Base de datos
redis 6379 Caché
mcp-reconnaissance 8001 Servidor MCP de reconocimiento
mcp-xss 8002 Servidor MCP de XSS
mcp-sqli 8003 Servidor MCP de SQL Injection
mcp-dom-analyzer 8004 Servidor MCP de análisis DOM
pentestia-dvvca 5000 Aplicación vulnerable de prueba

🔄 Flujo de Trabajo

1. Creación de Proyecto

  • Crear proyecto con dominio objetivo
  • El sistema crea automáticamente un target principal

2. Reconnaissance Automático

  • MCP Reconnaissance descubre endpoints automáticamente
  • Se crean targets adicionales basados en hallazgos
  • Análisis de estructura y tecnologías

3. Análisis Inteligente

  • Motor de IA (Llama 3.2) decide qué vulnerabilidades buscar
  • Selección automática de MCPs apropiados
  • Priorización de endpoints críticos

4. Escaneo de Vulnerabilidades

  • Ejecución paralela de múltiples MCPs
  • Detección de XSS, SQLi, y otras vulnerabilidades
  • Análisis del DOM para vulnerabilidades del lado cliente

5. Generación de Reportes

  • Consolidación de hallazgos
  • Eliminación de duplicados
  • Generación de reportes detallados

📚 Documentación de la API

La API está documentada automáticamente con Swagger UI en:

Endpoints Principales

Projects

  • GET /projects/ - Listar proyectos
  • POST /projects/ - Crear proyecto
  • GET /projects/{id} - Obtener proyecto específico
  • POST /projects/{id}/scans/ - Iniciar escaneo de proyecto

Targets

  • GET /targets/ - Listar targets
  • POST /targets/ - Crear target
  • GET /targets/{id} - Obtener target específico
  • POST /targets/discover - Descubrir targets automáticamente

Scans

  • GET /scans/ - Listar escaneos
  • POST /scans/ - Crear escaneo
  • GET /scans/{id} - Obtener escaneo específico
  • POST /scans/{id}/resume - Reanudar escaneo

Reports

  • GET /reports/ - Listar reportes
  • POST /reports/ - Generar reporte
  • GET /reports/{id} - Obtener reporte específico

🔧 Desarrollo

Estructura del Backend

data/brain/
├── main.py              # Punto de entrada de la aplicación
├── database.py          # Configuración de base de datos
├── decision_engine.py   # Motor de decisiones IA
├── scan_worker.py       # Worker de escaneos
├── models/              # Modelos Pydantic
│   ├── __init__.py
│   ├── target.py
│   ├── rule.py
│   ├── scan.py
│   ├── project.py
│   ├── report.py
│   └── enums.py
├── routes/              # Rutas de la API
│   ├── __init__.py
│   ├── targets.py
│   ├── rules.py
│   ├── projects.py
│   ├── scans.py
│   ├── reports.py
│   └── statistics.py
└── requirements.txt     # Dependencias Python

Estructura del Frontend

data/ui/
├── src/
│   ├── components/      # Componentes Vue
│   ├── views/           # Vistas de la aplicación
│   │   ├── HomeView.vue
│   │   ├── ProjectsView.vue
│   │   ├── TargetsView.vue
│   │   ├── ScansView.vue
│   │   ├── ReportsView.vue
│   │   └── SettingsView.vue
│   ├── services/        # Servicios de API
│   ├── router/          # Configuración de rutas
│   └── assets/          # Recursos estáticos
├── package.json
└── vite.config.js

Comandos de Desarrollo

Backend

# Entrar al contenedor del backend
docker exec -it pentestia-brain bash

# Instalar dependencias
pip install -r requirements.txt

# Ejecutar en modo desarrollo
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

Frontend

# Entrar al contenedor del frontend
docker exec -it pentestia-ui bash

# Instalar dependencias
npm install

# Ejecutar en modo desarrollo
npm run dev

# Construir para producción
npm run build

Construcción del Frontend para Producción

# Construir y copiar archivos estáticos
./build-frontend.sh

# Reiniciar nginx para servir archivos actualizados
docker-compose restart pentestia-nginx

🧪 Pruebas

Ejecutar Pruebas del Backend

# Desde el contenedor del backend
python -m pytest tests/

Ejecutar Pruebas del Frontend

# Desde el contenedor del frontend
npm run test

Pruebas de Integración

# Probar conexión con MCPs
curl http://localhost:8000/debug/mcp-status

# Probar motor de decisiones
curl http://localhost:8000/debug/scan-worker

📊 Monitoreo

Métricas Disponibles

  • Sistema: CPU, memoria, disco, red
  • Aplicación: Proyectos, targets, escaneos, reportes
  • Rendimiento: Tiempo de respuesta, throughput
  • Seguridad: Vulnerabilidades detectadas por tipo
  • IA: Decisiones del motor de IA

Logs

Los logs de cada servicio están disponibles a través de Docker:

# Ver logs del backend
docker logs pentestia-brain

# Ver logs del frontend
docker logs pentestia-ui

# Ver logs de la base de datos
docker logs pentestia-db

# Ver logs de Ollama (IA)
docker logs pentestia-ollama

# Ver logs de MCPs
docker logs pentestia-mcp-recon
docker logs pentestia-mcp-xss
docker logs pentestia-mcp-sqli
docker logs pentestia-mcp-dom-analyzer

🔒 Seguridad

Configuración de Seguridad

  • Variables de entorno: Credenciales y configuraciones sensibles
  • CORS: Configurado para desarrollo (ajustar para producción)
  • Validación de datos: Pydantic para validación automática
  • Autenticación: Sistema de autenticación implementado
  • Rate Limiting: Protección contra ataques de fuerza bruta

Recomendaciones para Producción

  1. Cambiar credenciales por defecto
  2. Configurar HTTPS
  3. Limitar acceso a la base de datos
  4. Implementar rate limiting
  5. Configurar backups automáticos
  6. Monitorear logs de seguridad
  7. Actualizar dependencias regularmente

🤝 Contribución

  1. Fork el proyecto
  2. Crear una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abrir un Pull Request

📄 Licencia

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

🆘 Soporte

Para soporte y preguntas:

  • Crear un issue en GitHub
  • Contactar al equipo de desarrollo
  • Revisar la documentación de la API

🗺️ Roadmap

  • Implementación de MCPs básicos (Reconnaissance, XSS, SQLi)
  • Motor de decisiones con IA
  • Descubrimiento automático de endpoints
  • Generación de reportes automatizada
  • Implementación de más tipos de pruebas (CSRF, File Upload, etc.)
  • Integración con herramientas de seguridad externas
  • Sistema de reportes avanzado con gráficos
  • Dashboard de métricas en tiempo real
  • API para integración con CI/CD
  • Soporte para múltiples entornos
  • Sistema de alertas y notificaciones
  • Análisis de dependencias vulnerables
  • Integración con sistemas de gestión de vulnerabilidades

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 75.7%
  • Vue 14.7%
  • JavaScript 5.1%
  • Shell 1.7%
  • Dockerfile 1.2%
  • PLpgSQL 1.1%
  • Other 0.5%