
Un marco modular para la evaluación comparativa de LLMs y estrategias de agentes en desafíos de seguridad a través de HackTheBox, TryHackMe, PortSwigger Labs, Cybench, picoCTF y más.
Un experimento divertido para ver hasta dónde pueden llegar los Modelos de Lenguaje de Gran Escala (LLMs) por sí solos resolviendo desafíos CTF y laboratorios de seguridad. Comenzó con HackTheBox y ahora abarca muchas plataformas y solucionadores agénticos.
BoxPwnr proporciona un sistema plug-and-play que se puede utilizar para probar el rendimiento de diferentes arquitecturas agénticas: --solver [claude_code, codex, cursor-cli, grok, kiro_cli, external, single_loop_xmltag, single_loop, single_loop_compactation, hacksynth].
Plataformas compatibles: --platform [htb, htb_ctf, htb_challenges, portswigger, ctfd, local, xbow, hackbench, cybench, cybergym, exploitbench, picoctf, tryhackme, levelupctf, argus]
Consulte Implementaciones de Plataformas para obtener documentación detallada sobre cada plataforma compatible.
Todas las trazas de resolución están disponibles en BoxPwnr Trazas y Benchmarks. Cada traza incluye registros completos de conversaciones que muestran el razonamiento del LLM, los comandos ejecutados y las salidas recibidas. Puede reproducir cualquier traza en un visor web interactivo para ver exactamente cómo se resolvió la máquina paso a paso.
BoxPwnr utiliza LLMs (o agentes CLI como Claude Code, Codex, Grok o Cursor) para resolver de forma autónoma objetivos CTF / laboratorios a través de un proceso iterativo:
--executor docker)single_loop_* por defecto):claude_code, codex, grok, cursor-cli, kiro_cli) ejecutan su propio bucle de agente y transmiten los resultados de vuelta a BoxPwnrClonar el repositorio con submódulos ```bash git clone --recurse-submodules https://github.com/0ca/BoxPwnr cd BoxPwnr
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
2. Docker
- BoxPwnr requiere que Docker esté instalado y en ejecución
- Las instrucciones de instalación se pueden encontrar en: [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)
### Ejecutar BoxPwnr```bash
uv run boxpwnr --platform htb --target meow [options]
En la primera ejecución, se te pedirán las claves de API necesarias. Las claves se guardan en .env para uso futuro. Los solucionadores CLI (Claude Code, Codex, Grok, Cursor, Kiro) utilizan su propia autenticación de suscripción en lugar de (o además de) las claves de API.
--platform: Plataforma a utilizar (htb, htb_ctf, htb_challenges, portswigger, ctfd, local, xbow, hackbench, cybench, cybergym, exploitbench, picoctf, tryhackme, levelupctf, argus)--keep-target: Mantener el objetivo (máquina/laboratorio) en funcionamiento después de la finalización (útil para seguimiento manual)--analyze-attempt: Analizar intentos fallidos usando TraceAnalyzer después de la finalización--generate-summary: Generar un resumen de la solución después de la finalización--generate-progress: Generar un archivo de transferencia de progreso (progress.md) para intentos fallidos/interrumpidos. Este archivo se puede usar para reanudar el intento más tarde.--resume-from: Ruta a un archivo progress.md de un intento anterior. El contenido se inyectará en el prompt del sistema para continuar desde donde se dejó el intento anterior.--generate-report: Generar un nuevo informe desde un directorio de trazas existente--solver: Solucionador LLM a utilizar (claude_code, codex, cursor-cli, grok, kiro_cli, external, single_loop_xmltag, single_loop, single_loop_compactation, hacksynth)--model: Modelo de IA a utilizar (predeterminado: openrouter/openai/gpt-oss-120b). Los modelos compatibles incluyen:
claude-sonnet-4-0, , )El solucionador external permite a BoxPwnr delegar en cualquier herramienta externa (Claude Code, Aider, scripts personalizados, etc.):
--external-timeout: Tiempo de espera para el subproceso del solucionador externo en segundos (predeterminado: 3600)--: El comando externo a ejecutar (ej., -- claude -p "$BOXPWNR_PROMPT")Variables de entorno disponibles para herramientas externas:
BOXPWNR_PROMPT: Prompt completo del sistema con información del objetivoBOXPWNR_TARGET_IP: Información de conexión del objetivo (IP/hostname)BOXPWNR_CONTAINER: Nombre del contenedor Docker (útil para escenarios VPN)BoxPwnr admite diferentes entornos para ejecutar comandos usando --executor:
docker (predeterminado): Ejecuta comandos dentro de un contenedor Docker de Kali Linux aislado que BoxPwnr construye y gestiona automáticamente. Esta es la opción recomendada para la mayoría de plataformas y casos de uso.ssh: Ejecuta comandos en un host remoto vía SSH. Útil para configuraciones de red personalizadas o cuando se ejecuta en tu propia infraestructura. Requiere --ssh-host (y opcionalmente --ssh-username, --ssh-key-path, --ssh-port).platform: Enruta comandos a través del attackbox/terminal propio de la plataforma (WebSocket). Esto es requerido cuando se usa --platform levelupctf.Opciones relacionadas:
--keep-container: Mantener el contenedor Docker en ejecución después de la finalización (acelera siguientes intentos).--architecture: Forzar una arquitectura de contenedor específica (amd64 es útil en Apple Silicon).--image: Usar una imagen Docker personalizada en lugar de la imagen Kali incorporada.--ctf-id: ID del evento CTF (requerido al usar --platform htb_ctf)--ctfd-url: URL de la instancia CTFd (requerido al usar --platform ctfd)--exploitbench-config: Nombre de configuración del benchmark (predeterminado: v8)--exploitbench-success-cap: Capacidad que cuenta como éxito (predeterminado: ace)--exploitbench-seed: Semilla del episodio (predeterminado: 1)uv run boxpwnr --platform htb --target meow --debug
uv run boxpwnr --platform htb --target meow --debug --keep-container
uv run boxpwnr --platform htb --target meow --architecture amd64
uv run boxpwnr --platform htb --target meow --max-turns 10
uv run boxpwnr --platform htb --target meow --max-cost 1.5
uv run boxpwnr --platform htb --target meow --attempts 5
uv run boxpwnr --platform htb --target meow --model claude-sonnet-4-0
uv run boxpwnr --platform htb --target meow --model claude-haiku-4-5-20251001 --max-cost 0.5
uv run boxpwnr --platform htb --target meow --model gpt-5-mini --max-cost 1.0
uv run boxpwnr --platform htb --target meow --model grok-4 --max-cost 2.0
uv run boxpwnr --platform htb --target meow --model openrouter/openrouter/free --max-cost 0.5
uv run boxpwnr --platform htb --target meow --model openrouter/openai/gpt-oss-120b --max-cost 1.0
uv run boxpwnr --platform htb --target meow --model openrouter/moonshotai/kimi-k2.5 --max-cost 1.0
uv run boxpwnr --platform htb --target meow --model cline/minimax/minimax-m2.5
uv run boxpwnr --platform htb --target meow --model z-ai/glm-5 --max-cost 1.0
uv run boxpwnr --platform htb --target meow --model kilo/z-ai/glm-5
uv run boxpwnr --platform htb --target meow --model kimi/kimi-k2.5 --max-cost 1.0
uv run boxpwnr --platform htb --target meow --model opencode/big-pickle --max-cost 0.5
uv run boxpwnr --platform htb --target meow --solver claude_code --model claude-sonnet-4-0 --max-cost 2.0
uv run boxpwnr --platform htb --target meow --solver codex --model gpt-5.3-codex --max-time 60
uv run boxpwnr --platform cybench --target "[Very Easy] Dynastic" --solver grok --max-time 60
uv run boxpwnr --platform htb --target meow --solver cursor-cli --model composer-2.5 --max-time 60
uv run boxpwnr --platform htb --target meow --solver kiro_cli --max-time 60
uv run boxpwnr --platform htb --target meow --solver hacksynth --model gpt-5 --max-cost 1.0
uv run boxpwnr --platform htb --target meow --solver single_loop_compactation --model gpt-5 --max-turns 100
uv run boxpwnr --platform htb --target meow --solver single_loop_compactation --compaction-threshold 0.70 --preserve-last-turns 15
uv run boxpwnr --platform htb --target meow --model nvidia/moonshotai/kimi-k2.6 --max-cost 1.0 uv run boxpwnr --platform htb --target meow --model nvidia-web/moonshotai/kimi-k2.6 --max-time 60
uv run boxpwnr --generate-report machines/meow/traces/20250129_180409
uv run boxpwnr --platform htb_challenges --target "Flag Command"
uv run boxpwnr --platform htb_ctf --ctf-id 1234 --target "Web Challenge"
uv run boxpwnr --platform ctfd --ctfd-url https://ctf.example.com --target "Crypto 101"
uv run boxpwnr --platform htb --target meow --custom-instructions "Focus on privilege escalation techniques and explain your steps in detail"
uv run boxpwnr --platform htb --target meow --generate-progress --max-turns 20
uv run boxpwnr --platform htb --target meow --resume-from targets/htb/meow/traces/20250127_120000/progress.md --max-turns 30
uv run boxpwnr --platform xbow --target XBEN-060-24 --model gpt-5 --max-turns 30
uv run boxpwnr --platform xbow --list
uv run boxpwnr --platform cybench --target "[Very Easy] Dynastic" --model gpt-5 --max-cost 2.0
uv run boxpwnr --platform cybench --target "benchmark/hackthebox/cyber-apocalypse-2024/crypto/[Very Easy] Dynastic" --model gpt-5 --max-cost 2.0
uv run boxpwnr --platform cybench --list
uv run boxpwnr --platform exploitbench --target sample-stack-bof --solver grok --exploitbench-success-cap ace --max-time 60 uv run boxpwnr --platform exploitbench --list
uv run boxpwnr --platform argus --list uv run boxpwnr --platform argus --target APEX-001 --model gpt-5 --max-cost 1.0
uv run boxpwnr --platform cybergym --list uv run boxpwnr --platform cybergym --target arvo:10013 --model gpt-5 --max-cost 2.0
uv run boxpwnr --platform htb --target meow --solver external -- bash -c 'claude --dangerously-skip-permissions -p "$BOXPWNR_PROMPT"'
uv run boxpwnr --platform htb --target meow --solver external -- bash -c 'codex --yolo "$BOXPWNR_PROMPT"'
uv run boxpwnr --platform htb --target meow --solver external --external-timeout 7200 -- bash -c 'claude --dangerously-skip-permissions -p "$BOXPWNR_PROMPT"'
uv run boxpwnr --platform htb --target meow --solver external --
bash -c 'docker exec -e IS_SANDBOX=1 -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" "$BOXPWNR_CONTAINER" claude --dangerously-skip-permissions -p "$BOXPWNR_PROMPT"'
## ¿Por qué HackTheBox?
Las máquinas de HackTheBox proporcionan un excelente campo de pruebas integral para evaluar sistemas de IA porque requieren:
- Capacidades de razonamiento complejo
- Pensamiento creativo "fuera de lo común"
- Comprensión de diversos conceptos de seguridad
- Capacidad de encadenar múltiples pasos
- Habilidades dinámicas de resolución de problemas
## ¿Por qué ahora? *(escrito el 26 de enero de 2025)*
Con los recientes avances en tecnología LLM:
- Los modelos se están volviendo cada vez más sofisticados en sus capacidades de razonamiento
- El costo de ejecutar estos modelos está disminuyendo (ver DeepSeek R1 Zero)
- Su capacidad para comprender y generar código está mejorando
- Están mejorando en mantener el contexto y resolver problemas de múltiples pasos
Creo que en los próximos años, los LLMs tendrán la capacidad de resolver la mayoría de las máquinas HTB de forma autónoma, marcando un hito significativo en las capacidades de pruebas de seguridad con IA y resolución de problemas.
## Desarrollo
### Pruebas
BoxPwnr admite la ejecución de flujos de trabajo de GitHub Actions localmente usando `[act](https://github.com/nektos/act)`, que simula el entorno exacto de CI antes de subir a GitHub:```bash
# Install act (macOS)
brew install act
# Run CI workflows locally
make ci-test # Run main test workflow
make ci-integration # Run integration tests (slow - downloads Python each time)
make ci-docker # Run docker build test
make ci-all # Run all workflows
Este proyecto es solo para fines de investigación y educación. Siga siempre los términos de servicio y las pautas éticas de cada plataforma al utilizar esta herramienta.
| Plataforma | Resueltos | Completado | Trazas |
|---|
| HTB Starting Point | 25/25 | 770 | |
| HTB Labs | 268/526 | 783 | |
| HTB Challenges | 324/818 | 732 | |
| PortSwigger Labs | 163/270 | 377 | |
| XBOW | 102/104 | 525 | |
| Cybench | 40/40 | 2165 | |
| CyberGym | 476/1507 | 977 | |
| picoCTF | 502/503 | 1215 | |
| TryHackMe | 213/477 | 905 | |
| HackBench | 11/16 | 27 | |
| ExploitBench | 2/42 | 58 | |
| LevelUpCTF | 50/254 | 146 | |
| Argus | 47/60 | 1026 | |
| BSidesSF CTF 2026 | 43/51 | 76 | |
| Cloud Village CTF 2026 | 12/20 | 30 | |
| Neurogrid CTF: The ultimate AI security showdown | 17/36 | 197 |
--target: Nombre del objetivo (ej., meow para máquina HTB, "SQL injection UNION attack" para laboratorio PortSwigger, o XBEN-060-24 para benchmark XBOW)--debug: Habilitar registro detallado (muestra nombres y descripciones de herramientas)--debug-langchain: Habilitar modo depuración de LangChain (muestra solicitudes HTTP completas con esquemas de herramientas, trazas de LangChain y cargas útiles de API sin procesar - muy detallado)--max-turns: Número máximo de turnos antes de detenerse (ej., --max-turns 10)--max-cost: Costo máximo en USD antes de detenerse (ej., --max-cost 2.0)--max-time: Tiempo máximo en minutos por intento (ej., --max-time 60)--attempts: Número de intentos para resolver el objetivo (ej., --attempts 5 para benchmarks pass@5)--default-execution-timeout: Tiempo de espera predeterminado para la ejecución de comandos en segundos (predeterminado: 30)--max-execution-timeout: Tiempo de espera máximo para la ejecución de comandos en segundos (predeterminado: 300)--custom-instructions: Instrucciones personalizadas adicionales para añadir al prompt del sistemaclaude-opus-4-0claude-haiku-4-5-20251001gpt-5, gpt-5-nano, gpt-5-minideepseek-reasoner, grok-4, gemini-3-flash-previewopenrouter/company/model (ej., openrouter/openrouter/free, openrouter/openai/gpt-oss-120b, openrouter/x-ai/grok-4-fast, openrouter/moonshotai/kimi-k2.5)nvidia/company/model (ej., nvidia/moonshotai/kimi-k2.6) vía integrate.api.nvidia.comnvidia-web/company/model (ej., nvidia-web/moonshotai/kimi-k2.6)z-ai/model-name (ej., z-ai/glm-5, z-ai/glm-5.2) para modelos Zhipu AI GLMkilo/model-name (ej., kilo/z-ai/glm-5) vía gateway Kilokimi/model-name (ej., kimi/kimi-k2.5, kimi/kimi-k2.7) para suscripción Kimi Codecline/minimax/minimax-m2.5, cline/moonshotai/kimi-k2.5 (requiere cline auth, ver más abajo)ollama-cloud/model-name (ej., ollama-cloud/minimax-m3:cloud)ollama:model-name--reasoning-effort: Nivel de esfuerzo de razonamiento para modelos con capacidad de razonamiento (minimal, low, medium, high). Solo se aplica a modelos que soportan razonamiento como gpt-5, o4-mini, grok-4. El valor predeterminado es medium para modelos de razonamiento.