
Herramienta de Powershell para automatizar la enumeración de Active Directory.
# adPEAS v2 — Scripts de escalada de privilegios en Active Directory
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/4985/094efb3e3ea9d020e014d57d49df2544da13c1a85d28db14f491e55817bcc68f.jpg" alt="Logotipo de adPEAS" width="800">
</p>
<p align="center">
<strong>Evaluación integral de la seguridad de Active Directory — sin dependencias, un solo archivo, listo para usar.</strong>
</p>
---
## ¿Qué es adPEAS?
adPEAS es una herramienta de evaluación de seguridad basada en PowerShell que identifica configuraciones incorrectas, vulnerabilidades y rutas de escalada de privilegios en entornos de Active Directory. Está diseñada para pentesters, auditores de seguridad y equipos rojos que necesitan una herramienta fiable y autocontenida que funcione en cualquier sistema Windows — sin RSAT, sin el módulo ActiveDirectory y sin dependencias de terceros.
**adPEAS v2** es una reescritura completa de adPEAS v1. Sustituye el enfoque heredado basado en `DirectoryEntry`/`DirectorySearcher` por una arquitectura unificada de `System.DirectoryServices.Protocols.LdapConnection` y añade autenticación Kerberos nativa, informes avanzados y operaciones ofensivas — todo en PowerShell puro.
### Novedades en la v2
- **Pila Kerberos nativa** — AS-REQ/AS-REP, TGS-REQ/TGS-REP, Pass-the-Ticket, PKINIT, todo en PowerShell puro
- **Múltiples métodos de autenticación** — Contraseña, NT-Hash (OPtH), claves AES (PtK), certificados (PKINIT y Pass-the-Cert/Schannel), integrada de Windows
- **Más de 40 comprobaciones de seguridad** en 9 categorías con puntuación de gravedad
- **Informes HTML interactivos** con búsqueda, filtrado, puntuaciones de riesgo y tooltips
- **Exportación JSON** para conversión de informes sin conexión, escaneo incremental y comparación de escaneos
- **Colector de BloodHound CE** — recopilación de datos integrada para el análisis de rutas de ataque
- **Operaciones ofensivas** — Kerberoasting, AS-REP Roasting, Golden/Silver/Diamond Tickets, abuso de RBCD, Shadow Credentials y más
- **Flujo de trabajo basado en sesión** — conéctate una vez y ejecuta múltiples comprobaciones de forma interactiva
- **Autocompletado con tabulador** — autocompleta nombres de objetos de AD para la exploración interactiva
> **¿Eres nuevo en adPEAS?** Consulta la [Guía de inicio rápido](https://github.com/61106960/adpeas/blob/main/docs/02-Quick-Start.md) o lee la [serie de blogs en blog.sekurity.de](https://blog.sekurity.de/blog/adpeas-v2-introduction) para profundizar en la arquitectura, la autenticación y los aspectos internos.
---
## Características de un vistazo
| Categoría | Aspectos destacados |
|----------|-----------|
| **Autenticación** | Credenciales, PKINIT, Pass-the-Cert, NT-Hash, claves AES, autenticación de Windows, Kerberos primero con fallback automático |
| **Comprobaciones de seguridad** | Configuración del dominio, Kerberoast, ASREPRoast, ACLs, DCSync, delegación, rutas de escalada de AD CS, abuso de GPO, LAPS, claves de recuperación de BitLocker, sistemas obsoletos |
| **Informes** | Consola (con código de colores), texto plano, HTML interactivo, exportación JSON |
| **Operaciones ofensivas** | Kerberoasting, AS-REP Roasting, Golden/Silver/Diamond Tickets, RBCD, Shadow Credentials, Pass-the-Ticket |
| **BloodHound** | Colector de BloodHound CE integrado (exportación ZIP) |
| **Modo OPSEC** | Omite las pruebas activas (Kerberoast, ASREPRoast, BloodHound) |
| **Despliegue** | Un único archivo `.ps1`, sin RSAT, sin módulos externos, funciona sin conexión y en redes aisladas |
---
## Requisitos
- **SO**: Windows 10/11, Windows Server 2016/2019/2022/2025
- **PowerShell**: 5.1+ (Windows PowerShell)
- **.NET Framework**: 4.5+ (incluido en Windows)
- **Red**: LDAP (389), LDAPS (636), Kerberos (88), SMB (445)
No se requiere el módulo ActiveDirectory, RSAT ni módulos externos de PowerShell.
---
## Descarga
### Versiones de lanzamiento
| Archivo | Tamaño | Caso de uso |
|------|------|----------|
| `adPEAS.ps1` | ~4,5 MB | Desarrollo, depuración, revisión de código |
| `adPEAS_min.ps1` | ~3-4 MB | Uso habitual con menor huella |
| `adPEAS_ultra.ps1` | ~3 MB | Tamaño mínimo, sin comentarios |
| `adPEAS_obf.ps1` | <1 MB | Tamaño más pequeño, ofuscado para su transferencia |
Las cuatro versiones son funcionalmente idénticas. Elige según tu escenario de despliegue.
```powershell
# Clone the repository
git clone https://github.com/61106960/adPEAS.git
cd adPEAS
```
### Compilar desde el código fuente
La rama `main` siempre contiene una compilación actual de las cuatro variantes, recompilada con cada corrección y funcionalidad, por lo que las URL sin procesar anteriores sirven el código más reciente. Esas compilaciones llevan una cadena de versión de desarrollo (`2.5.1+20260917-1759`). Cada [GitHub Release](https://github.com/61106960/adPEAS/releases) etiquetado tiene las cuatro compilaciones estables adjuntas como recursos descargables, con una cadena de versión limpia (`2.5.1`); usa esas si necesitas una versión conocida y citable. Para compilar tú mismo desde el código fuente:
```powershell
git clone https://github.com/61106960/adPEAS.git
cd adPEAS
.\Build-Release.ps1
```
Esto produce las cuatro variantes (`adPEAS.ps1`, `adPEAS_min.ps1`, `adPEAS_ultra.ps1`, `adPEAS_obf.ps1`) en la raíz del repositorio. Requiere Windows PowerShell 5.1 y ninguna dependencia adicional.
---
## Inicio rápido
```powershell
# Option 1: Import as module (recommended)
Import-Module .\adPEAS.ps1
# Option 2: Dot-sourcing
. .\adPEAS.ps1
# Option 3: Read and execute in memory
Get-Content -Raw .\adPEAS.ps1 | Invoke-Expression
# Option 4: Load directly from GitHub into memory (no file on disk).
# Both variants work; on an older/hardened host that still defaults to TLS 1.0,
# prepend once: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# 4a: WebClient - shortest. DownloadString detects and strips the file's UTF-8 BOM
# itself, so nothing extra is needed. WebClient is a legacy API but works everywhere.
Invoke-Expression (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/61106960/adPEAS/main/adPEAS_obf.ps1')
# 4b: Invoke-WebRequest - the modern cmdlet. Its .Content keeps the BOM as a leading
# U+FEFF that Invoke-Expression cannot parse, so TrimStart removes it first.
Invoke-Expression ((Invoke-WebRequest -Uri "https://raw.githubusercontent.com/61106960/adPEAS/main/adPEAS_obf.ps1" -UseBasicParsing).Content.TrimStart([char]0xFEFF))
```
### One-Liner (compatible con v1)
```powershell
# Domain-joined machine (current user)
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth
# With credentials
Invoke-adPEAS -Domain "contoso.com" -Username "john.doe" -Password "P@ssw0rd!"
# OPSEC mode (skip Kerberoast, ASREPRoast, BloodHound)
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -OPSEC
```
### Basado en sesiones (estilo v2)
```powershell
# Connect once
Connect-adPEAS -Domain "contoso.com" -UseWindowsAuth
# Run full scan
Invoke-adPEAS
# Or run individual checks
Get-KerberoastableAccounts
Get-ADCSVulnerabilities
Get-DangerousACLs
# Disconnect when done
Disconnect-adPEAS
```
### Métodos de autenticación
```powershell
# Credentials
Connect-adPEAS -Domain "contoso.com" -Credential (Get-Credential)
# Overpass-the-Hash (NT-Hash)
Connect-adPEAS -Domain "contoso.com" -Username "admin" -NTHash "32ED87BDB5FDC5E9CBA88547376818D4"
# Pass-the-Key (AES256)
Connect-adPEAS -Domain "contoso.com" -Username "admin" -AES256Key "4a3b2c1d5e6f..."
# PKINIT (Certificate)
Connect-adPEAS -Domain "contoso.com" -Certificate "user.pfx"
# Pass-the-Cert / Schannel (LDAPS, no Kerberos)
Connect-adPEAS -Domain "contoso.com" -Certificate "user.pfx" -PassTheCert
# LDAPS
Connect-adPEAS -Domain "contoso.com" -UseWindowsAuth -UseLDAPS
```
### Salida y generación de informes
```powershell
# All formats (default) — creates .txt, .html, and .json
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -Outputfile .\report
# HTML only
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -Outputfile .\report -Format HTML
# Offline report conversion from JSON
Convert-adPEASReport -InputJson ".\report.json" -OutputPath ".\new_report"
# Compare two scans (diff report)
Compare-adPEASReport -Baseline ".\scan_q1.json" -Current ".\scan_q2.json" -OutputPath ".\diff"
```
## Módulos de comprobación de seguridad
| Módulo | Descripción |
|--------|-------------|
| `Domain` | Configuración del dominio, relaciones de confianza, política de contraseñas, firma LDAP, firma SMB |
| `Creds` | Kerberoast, ASREPRoast, acceso a claves de recuperación de LAPS y BitLocker, exposición de credenciales en SYSVOL |
| `Rights` | ACLs, DCSync, derechos de restablecimiento de contraseñas, permisos peligrosos en OU |
| `Delegation` | Delegación no restringida, restringida y restringida basada en recursos |
| `ADCS` | Plantillas de certificados y CAs: ESC1-ESC5, ESC8, ESC9, ESC13, ESC14, ESC15 (ESC10 mediante la comprobación de GPO). Las rutas de escalada que requieren acceso administrativo al host de la CA quedan fuera del alcance - véase [Security Checks](https://github.com/61106960/adpeas/blob/main/docs/04-Security-Checks.md) |
| `Accounts` | Cuentas privilegiadas, usuarios protegidos, cuentas de servicio, historial de SID |
| `GPO` | Permisos de GPO, pertenencia a grupos locales, tareas programadas, scripts, configuraciones de registro peligrosas (WDigest, AlwaysInstallElevated, OneLogon/Zerologon, …) y políticas de controladores de impresora Point and Print (PrintNightmare) desplegadas mediante GPO |
| `Computer` | LAPS, sistemas desactualizados, servidores de infraestructura |
| `Application` | Infraestructura de Exchange, SCCM, SCOM |
| `Bloodhound` | Recopilación de datos de BloodHound CE |
Ejecutar módulos específicos:
```powershell
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -Module Domain,Creds,ADCS
```
O ejecuta todo excepto unos pocos, sin listar el resto:
```powershell
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -ExcludeModule Bloodhound,Computer
```
---
## Documentación
La documentación completa está disponible en el directorio [docs/](https://github.com/61106960/adpeas/blob/main/docs):
| Documento | Tema |
| ------------------------------------------------------- | --------------------------------------- |
| [Instalación](https://github.com/61106960/adpeas/blob/main/docs/01-Installation.md) | Descarga, configuración, política de ejecución |
| [Inicio rápido](https://github.com/61106960/adpeas/blob/main/docs/02-Quick-Start.md) | Comienza en 5 minutos |
| [Autenticación](https://github.com/61106960/adpeas/blob/main/docs/03-Authentication-Methods.md) | Todas las opciones de autenticación |
| [Comprobaciones de seguridad](https://github.com/61106960/adpeas/blob/main/docs/04-Security-Checks.md) | Referencia completa de comprobaciones |
| [Recolector de BloodHound](https://github.com/61106960/adpeas/blob/main/docs/05-BloodHound-Collector.md) | Exportación de BloodHound CE |
| [Funciones principales](https://github.com/61106960/adpeas/blob/main/docs/06-Core-Functions.md) | Funciones de consulta LDAP |
| [Módulos Set- y New-](https://github.com/61106960/adpeas/blob/main/docs/07-Set-Modules.md) | Funciones de modificación de AD |
| [Funciones auxiliares](https://github.com/61106960/adpeas/blob/main/docs/08-Helper-Functions.md) | Funciones de utilidad |
| [Arquitectura](https://github.com/61106960/adpeas/blob/main/docs/09-Architecture.md) | Arquitectura técnica |
| [Puntuación de riesgo](https://github.com/61106960/adpeas/blob/main/docs/10-Risk-Scoring-System.md) | Puntuaciones de gravedad y riesgo |
| [Solución de problemas](https://github.com/61106960/adpeas/blob/main/docs/11-Troubleshooting.md) | Problemas comunes y soluciones |
| [Preguntas frecuentes](https://github.com/61106960/adpeas/blob/main/docs/12-FAQ.md) | Preguntas frecuentes |
### Serie de blogs
Una serie detallada de blogs que cubre el funcionamiento interno de adPEAS v2 está publicada en [blog.sekurity.de](https://blog.sekurity.de/blog/adpeas-v2-introduction).
---
## Licencia
adPEAS es **de código disponible (source-available)**. Las evaluaciones de seguridad internas de su propia organización son gratuitas. El uso comercial (consultoría, MSP, encargos remunerados) requiere una licencia comercial.
Consulte [LICENSE](https://github.com/61106960/adpeas/blob/main/license/LICENSE.md) para conocer los términos completos, [COMMERCIAL_AGREEMENT](https://github.com/61106960/adpeas/blob/main/license/COMMERCIAL_AGREEMENT.md) para el acuerdo comercial y [PRICING](https://github.com/61106960/adpeas/blob/main/license/PRICING.md) para las opciones de licencia.
- **Consultas sobre licencias:** [email protected]
- **Soporte técnico:** [email protected]
---
## Aviso legal
adPEAS está destinado únicamente a **pruebas de seguridad autorizadas**. Obtenga siempre autorización por escrito antes de realizar pruebas. Nunca lo utilice contra sistemas que no sean de su propiedad o para los que no tenga permiso de prueba. Los autores no se responsabilizan del uso indebido de esta herramienta. Cumpla con todas las leyes y normativas aplicables.
---
## Autor
**Alexander Sturz** — [SEKurity GmbH](https://sekurity.de)
- GitHub: [@61106960](https://github.com/61106960)
- Blog: [blog.sekurity.de](https://blog.sekurity.de)