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.
- 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
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
PentestIA utiliza una arquitectura modular basada en MCP para diferentes tipos de pruebas de seguridad:
- 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
- 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
- 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
- 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
- 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
- Vue 3: Framework de JavaScript progresivo
- PrimeVue: Biblioteca de componentes UI
- Vite: Herramienta de construcción
- Axios: Cliente HTTP
- 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
- Docker y Docker Compose
- Git
- Mínimo 8GB RAM (recomendado 16GB para IA)
- Clonar el repositorio:
git clone <repository-url>
cd pentestia- Configurar variables de entorno (opcional):
cp .env.example .env
# Editar .env según sea necesario- Ejecutar con Docker Compose:
docker-compose up -d- Construir frontend para producción:
./build-frontend.sh- Acceder a la aplicación:
- UI: http://localhost:3000
- API: http://localhost:8000
- Documentación API: http://localhost:8000/docs
| 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 |
- Crear proyecto con dominio objetivo
- El sistema crea automáticamente un target principal
- MCP Reconnaissance descubre endpoints automáticamente
- Se crean targets adicionales basados en hallazgos
- Análisis de estructura y tecnologías
- Motor de IA (Llama 3.2) decide qué vulnerabilidades buscar
- Selección automática de MCPs apropiados
- Priorización de endpoints críticos
- Ejecución paralela de múltiples MCPs
- Detección de XSS, SQLi, y otras vulnerabilidades
- Análisis del DOM para vulnerabilidades del lado cliente
- Consolidación de hallazgos
- Eliminación de duplicados
- Generación de reportes detallados
La API está documentada automáticamente con Swagger UI en:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
GET /projects/- Listar proyectosPOST /projects/- Crear proyectoGET /projects/{id}- Obtener proyecto específicoPOST /projects/{id}/scans/- Iniciar escaneo de proyecto
GET /targets/- Listar targetsPOST /targets/- Crear targetGET /targets/{id}- Obtener target específicoPOST /targets/discover- Descubrir targets automáticamente
GET /scans/- Listar escaneosPOST /scans/- Crear escaneoGET /scans/{id}- Obtener escaneo específicoPOST /scans/{id}/resume- Reanudar escaneo
GET /reports/- Listar reportesPOST /reports/- Generar reporteGET /reports/{id}- Obtener reporte específico
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
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
# 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# 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# Construir y copiar archivos estáticos
./build-frontend.sh
# Reiniciar nginx para servir archivos actualizados
docker-compose restart pentestia-nginx# Desde el contenedor del backend
python -m pytest tests/# Desde el contenedor del frontend
npm run test# Probar conexión con MCPs
curl http://localhost:8000/debug/mcp-status
# Probar motor de decisiones
curl http://localhost:8000/debug/scan-worker- 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
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- 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
- Cambiar credenciales por defecto
- Configurar HTTPS
- Limitar acceso a la base de datos
- Implementar rate limiting
- Configurar backups automáticos
- Monitorear logs de seguridad
- Actualizar dependencias regularmente
- Fork el proyecto
- Crear una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abrir un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Para soporte y preguntas:
- Crear un issue en GitHub
- Contactar al equipo de desarrollo
- Revisar la documentación de la API
- 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