PentestGPT-MCP

Una herramienta avanzada de pruebas de penetración para evaluaciones de seguridad automatizadas impulsadas por LLM, utilizando herramientas como nmap y dirb.

Documentación

PentestGPT-MCP

Este proyecto es una herramienta avanzada de pruebas de penetración basada en el artículo original "PentestGPT". Extiende las capacidades principales integrando servidores del Protocolo de Contexto de Modelo (MCP) para realizar evaluaciones de seguridad automatizadas impulsadas por LLM.

Se basa en el proyecto PentestGPT.

🇰🇷 Leer esto en coreano

Características

  • Integración dinámica de servidores MCP: Se conecta a varios servidores de herramientas que se ejecutan local o remotamente mediante un archivo de configuración mcp_servers.json flexible.
  • Ejecución automatizada de tareas (modo auto): Ejecuta automáticamente tareas sugeridas por el LLM utilizando herramientas proporcionadas por un servidor MCP conectado.
  • Modo interactivo "Human-in-the-Loop": Admite la confirmación del usuario antes de cada ejecución de herramienta, mejorando la seguridad y el control durante los escaneos automatizados.
  • Soporte flexible de modelos: Funciona con una amplia gama de proveedores de LLM, incluidos OpenAI (serie GPT) y Google (serie Gemini).

Instalación

1. Clonar el repositorio y configurar un entorno virtual

git clone https://github.com/your-username/PentestGPT-MCP.git
cd PentestGPT-MCP
python -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`

2. Instalar dependencias

Instale los paquetes de Python requeridos desde requirements.txt.

pip install -r requirements.txt

3. Configurar claves de API

PentestGPT-MCP requiere claves de API para interactuar con los Modelos de Lenguaje Grande. Establezca las variables de entorno apropiadas para el modelo que desee utilizar.

Para OpenAI (p. ej., gpt-4o):

export OPENAI_API_KEY="your-openai-api-key"

Para Google (p. ej., Gemini):

export GOOGLE_API_KEY="your-google-api-key"

4. Configurar servidores MCP

La herramienta gestiona las conexiones a los servidores MCP a través de un archivo de configuración JSON central.

1. Copiar la configuración de ejemplo

Copie el archivo de ejemplo del directorio config/ a la raíz del proyecto.

cp config/mcp_servers.json.example ./mcp_servers.json

2. Editar el archivo de configuración

Abra mcp_servers.json y personalícelo para que coincida con su entorno.

Ejemplo de configuración:

{
    "mcpServers": {
        "pentest-tools": {
            "command": "python",
            "args": [
                "mcp_servers/pentest_tools_server.py"
            ]
        },
        "kali_mcp": {
            "command": "python3",
            "args": [
                "/absolute/path/to/mcp_server.py",
                "http://LINUX_IP:5000/"
            ]
        }
    }
}

Estructura de configuración:

  • mcpServers: El objeto raíz que contiene todas las configuraciones del servidor.
  • "server-name": Un nombre único definido por el usuario para cada servidor (p. ej., "pentest-tools").
  • command: El comando para ejecutar el servidor (p. ej., python, python3, node).
  • args: Una matriz de argumentos para pasar al comando. El primer argumento suele ser la ruta al script del servidor.

Importante: El mcp_servers/pentest_tools_server.py predeterminado asume que herramientas como nmap y dirb están instaladas y disponibles en el PATH del sistema. Se recomienda encarecidamente ejecutar esto en un entorno donde estas herramientas estén presentes, como Kali Linux.

Uso

1. Ejecutar PentestGPT-MCP

Inicie la aplicación desde el directorio raíz del proyecto.

python main.py

Puede utilizar varios argumentos de línea de comandos para personalizar la sesión:

  • Cambiar modelos:
    python main.py --reasoning gpt-4o --parsing gpt-4o
    
  • Listar modelos disponibles:
    python main.py --models
    
  • Especificar una ruta de configuración MCP personalizada:
    python main.py --mcp-config /path/to/your/mcp_servers.json
    

2. Flujo de trabajo básico

  1. Proporcionar información inicial: Cuando se le solicite, describa brevemente el objetivo y el propósito de la prueba de penetración.

    Please describe the penetration testing task in one line...
    > Penetration test on the web server at http://10.0.2.15
    
  2. Obtener sugerencias de tareas (next o todo):

    • next: Ingrese los resultados de un escaneo manual o cualquier texto que desee analizar. PentestGPT procesará la entrada y sugerirá los siguientes pasos en el Árbol de Pruebas de Penetración (PTT).
    • todo: Pida a PentestGPT que recomiende la siguiente tarea basándose en el PTT actual.
  3. Ejecutar tareas automatizadas (auto):

    • Escriba auto en el prompt para ejecutar la tarea sugerida más recientemente a través de un servidor MCP.
    • Se le pedirá que seleccione qué servidor MCP configurado desea utilizar para la tarea.
    • Elija el modo interactivo (y) para revisar y confirmar cada comando de herramienta antes de la ejecución, garantizando un proceso seguro y controlado.

Referencia de comandos

  • next: Envíe los resultados de las pruebas para su análisis y reciba sugerencias para la siguiente tarea.
  • todo: Solicite una recomendación sobre qué hacer a continuación.
  • more: Solicite una explicación más detallada de la tarea actual.
  • auto: Ejecute automáticamente la última tarea sugerida utilizando un servidor MCP conectado.
  • discuss: Participe en una conversación libre con PentestGPT.
  • quit: Finalice la sesión actual (se le pedirá que guarde la sesión antes de salir).