Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Pentest Agent — Agente Ofensivo Autónomo

Proyecto Final · Curso AI Hacking · 8dot8 Academy 2026
Instructor: Galoget Latorre (@galoget) · Hackem Cybersecurity


⚠️ Advertencia Legal

Este agente SOLO puede ejecutarse contra sistemas que tú mismo hayas desplegado o para los que tengas autorización escrita explícita.

El objetivo de referencia es OWASP Juice Shop (instancia local o demo oficial). Prohibido atacar sistemas de terceros. El uso no autorizado es ilegal.

Todo el procesamiento es local — sin telemetría ni APIs cloud externas.


📋 Descripción

AI Pentest Agent es un agente de pentesting autónomo en Python que:

  • 🤖 Usa un LLM local (Ollama) o remoto (API OpenAI-compatible) como motor de razonamiento
  • 📚 Implementa RAG con archivos .md de la carpeta kb/ como base de conocimiento
  • ⚡ Sigue el patrón ReAct (Observe → Think → Act) de LangChain/LangGraph
  • 🔧 Usa herramientas nativas de Kali Linux (nmap, nikto, gobuster, whatweb) con fallback Python
  • 📊 Mapea hallazgos a OWASP Top 10 2021 y MITRE ATLAS
  • 📄 Genera un informe técnico completo en Markdown

Fases del Pentest

# Fase Herramientas
1 🔍 Reconocimiento whatweb, curl, requests, BS4
2 🔌 Escaneo de Puertos nmap, socket Python, gobuster
3 🔎 Identificación de Vulnerabilidades nikto, checks manuales, LLM
4 💥 Explotación SQLi, FTP Exposure, BAC/IDOR, DOM XSS
5 📊 Métricas y Mapeo ESR, OWASP, MITRE ATLAS
6 🛡️ Remediación Blue Team LLM + RAG knowledge base

🏗️ Estructura del Proyecto

Final/
├── src/
│   ├── ai_pentest_agent.py      # Script principal (menú interactivo + ReAct)
│   ├── rag_engine.py            # Motor RAG TF-IDF sobre archivos .md
│   ├── llm_client.py            # Cliente LLM (Ollama local / OpenAI remoto)
│   ├── report_generator.py      # Generador de informe Markdown
│   └── tools/
│       ├── kali_runner.py       # Wrappers para herramientas Kali Linux
│       ├── recon.py             # Fase 1: Reconocimiento
│       ├── port_scan.py         # Fase 2: Escaneo de puertos + endpoints
│       ├── vuln_check.py        # Fase 3: Identificación de vulnerabilidades
│       └── exploit.py           # Fase 4: Explotación
├── kb/                          # Base de conocimiento RAG (archivos .md)
│   ├── owasp_mitre_rag_reference.md
│   ├── OWASP Top 10 para Aplicaciones de LLM 2025 (es).md
│   ├── Guia Completa de Pwning OWASP Juice Shop.md
│   └── ... (39 archivos .md)
├── logs/                        # Trazas ReAct y logs de ejecución
├── reports/                     # Informes generados en Markdown
├── README.md
└── requirements.txt

⚙️ Requisitos

Sistema Operativo

  • Kali Linux (recomendado) o Ubuntu/Debian
  • Python 3.10+

Herramientas del Sistema (Kali Linux)

# Instalar herramientas necesarias
sudo apt update && sudo apt install -y \
    nmap nikto gobuster dirb sqlmap whatweb curl

Modelo LLM Local (Ollama)

# Instalar Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Descargar el modelo de referencia
ollama pull llama3.2

# Prueba de humo
ollama run llama3.2 "responde OK"

# API disponible en: http://localhost:11434

Objetivo de Prueba (OWASP Juice Shop)

# Desplegar Juice Shop con Docker (puerto 3000)
docker run --rm -d -p 3000:3000 --name juiceshop bkimminich/juice-shop

# Verificar
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:3000  # → 200

# Demo pública (alternativa sin Docker):
# https://juice-shop.herokuapp.com

🚀 Instalación

# 1. Clonar / descomprimir el proyecto
cd /path/to/Final

# 2. Crear entorno virtual
python3 -m venv .venv
source .venv/bin/activate

# 3. Instalar dependencias Python
pip install -r requirements.txt

💻 Uso

Modo interactivo (recomendado)

python src/ai_pentest_agent.py

El menú te guiará para ingresar:

  • URL/IP del objetivo
  • Puerto a escanear
  • Modelo LLM a usar
  • Modo: local (Ollama) o remoto (API compatible)
  • Activar/desactivar RAG

Modo línea de comandos

# Target local con llama3.2
python src/ai_pentest_agent.py --target http://localhost:3000 --model llama3.2

# Target remoto con rango de puertos personalizado
python src/ai_pentest_agent.py \
    --target http://192.168.1.100:3000 \
    --model qwen2.5 \
    --port-range 1-2000 \
    --no-menu

# Con LLM remoto (API OpenAI-compatible)
python src/ai_pentest_agent.py \
    --target http://localhost:3000 \
    --remote \
    --llm-url https://api.openai.com \
    --api-key sk-... \
    --model gpt-4o-mini

Opciones disponibles

  --target, -t      URL del objetivo (default: http://localhost:3000)
  --model, -m       Modelo LLM (default: llama3.2)
  --llm-url         URL base del LLM (default: http://localhost:11434)
  --remote          Usar LLM remoto (OpenAI-compatible API)
  --api-key         API Key para LLM remoto
  --no-rag          Deshabilitar el RAG
  --port-range      Rango de puertos (default: 1-1024)
  --no-menu         Omitir menú interactivo

📊 Outputs

Informe Markdown

Generado en reports/reporte_pentest_<timestamp>.md con:

  1. Resumen ejecutivo
  2. Alcance y reglas de compromiso
  3. Arquitectura del agente (diagrama)
  4. Metodología y fases ejecutadas
  5. Tabla de hallazgos (ID, severidad, OWASP, ATLAS, evidencia)
  6. Explotaciones detalladas (payload, petición, evidencia)
  7. Métricas (ESR, severidades, tiempos)
  8. Defensa y remediación (Blue Team)
  9. Conclusiones y limitaciones
  10. Traza ReAct completa

Log de ejecución

  • logs/run_<timestamp>.log — Log completo de la sesión
  • logs/react_trace_<timestamp>.json — Traza ReAct en formato JSON

🗺️ Mapeo OWASP / MITRE ATLAS

Vulnerabilidad OWASP ID MITRE ATLAS Severidad
SQL Injection A03:2021 AML.T0051 / T1190 CRÍTICA
Broken Access Control A01:2021 AML.T0012 / T1078 ALTA
Sensitive Data Exposure A02:2021 ATT&CK T1552 ALTA
DOM XSS A03:2021 ATT&CK T1059.007 MEDIA
Security Misconfiguration A05:2021 ATT&CK T1562 MEDIA

🧠 Arquitectura del Agente (ReAct)

INPUT (URL) ──▶ MENÚ INTERACTIVO
                     │
              ┌──────▼──────┐
              │  RAG ENGINE  │ ◀── kb/*.md (39 docs, TF-IDF)
              └──────┬──────┘
                     │ Contexto
              ┌──────▼──────┐
              │  LLM CLIENT  │ ─── llama3.2 / Ollama / Remoto
              └──────┬──────┘
                     │
           ┌─────────▼─────────┐
           │    REACT LOOP     │
           │ Observe→Think→Act │
           └─────────┬─────────┘
                     │
    ┌────────────────▼────────────────┐
    │         TOOLS (Kali Linux)      │
    │  Fase 1: whatweb, curl          │
    │  Fase 2: nmap, gobuster         │
    │  Fase 3: nikto, checks          │
    │  Fase 4: SQLi, FTP, BAC, XSS   │
    └────────────────┬────────────────┘
                     │
              ┌──────▼──────┐
              │   REPORT     │ ──▶ reports/*.md
              └─────────────┘

🛡️ Base de Conocimiento RAG

La carpeta kb/ contiene 39 archivos .md que incluyen:

  • OWASP Top 10 para LLM 2025
  • MITRE ATLAS Reference Guide
  • Guía completa de Pwning OWASP Juice Shop
  • Guías de certificación CAISR, CLLMSP
  • Material de las 10 sesiones del curso

El RAG recupera contexto relevante para cada fase y lo inyecta en los prompts del LLM.


🔧 Resolución de Problemas

Ollama no responde

# Iniciar Ollama
ollama serve &

# Verificar
curl http://localhost:11434/api/tags

Modelo no encontrado

# Listar modelos disponibles
ollama list

# Descargar modelo
ollama pull llama3.2

Herramientas Kali no disponibles

El agente detecta automáticamente qué herramientas están disponibles y usa fallback Python cuando no las encuentra. No es necesario instalar todas las herramientas para que el script funcione.

Juice Shop no accesible

# Verificar que está corriendo
docker ps | grep juiceshop

# Reiniciar si es necesario
docker restart juiceshop

📚 Recursos


📜 Licencia y Ética

Este proyecto es de uso exclusivamente educativo en entornos autorizados.

  • No usar contra sistemas sin autorización escrita explícita
  • No exponer el objetivo vulnerable a Internet
  • No enviar datos a servicios externos de IA
  • Respetar la privacidad y no registrar datos personales reales en logs

AI Pentest Agent · Proyecto Final · Curso AI Hacking · 8dot8 Academy 2026
Hackem Cybersecurity · Instructor: Galoget Latorre (@galoget)

About

Agente de pentesting autonomo con ReAct, RAG y LLM local (Ollama). Proyecto Final - Curso AI Hacking 8dot8 Academy 2026.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages