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.
- Repositorio original de GitHub: https://github.com/GreyDGL/PentestGPT
- Artículo de investigación original (USENIX Security '24): https://www.usenix.org/conference/usenixsecurity24/presentation/deng
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.jsonflexible. - 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
-
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 -
Obtener sugerencias de tareas (
nextotodo):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.
-
Ejecutar tareas automatizadas (
auto):- Escriba
autoen 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.
- Escriba
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).