
Strumento Powershell per automatizzare l'enumerazione di Active Directory.
Valutazione completa della sicurezza di Active Directory — zero dipendenze, file singolo, pronto all'uso.
adPEAS è uno strumento di valutazione della sicurezza basato su PowerShell che identifica configurazioni errate, vulnerabilità e percorsi di escalation dei privilegi negli ambienti Active Directory. È progettato per penetration tester, security auditor e red team che necessitano di uno strumento affidabile e autonomo che funzioni su qualsiasi sistema Windows — senza RSAT, senza modulo ActiveDirectory, senza dipendenze di terze parti.
adPEAS v2 è una riscrittura completa di adPEAS v1. Sostituisce l'approccio legacy basato su DirectoryEntry/DirectorySearcher con un'architettura unificata System.DirectoryServices.Protocols.LdapConnection e aggiunge autenticazione Kerberos nativa, reporting avanzato e operazioni offensive — il tutto in puro PowerShell.
Nuovo su adPEAS? Consulta la Guida rapida o leggi la serie di blog su blog.sekurity.de per un approfondimento su architettura, autenticazione e funzionamento interno.
| Categoria | Punti salienti |
|---|---|
| Autenticazione | Credenziali, PKINIT, Pass-the-Cert, NT-Hash, chiavi AES, autenticazione Windows, Kerberos-first con fallback automatico |
| Controlli di sicurezza | Configurazione del dominio, Kerberoast, ASREPRoast, ACL, DCSync, delegation, percorsi di escalation AD CS, abuso di GPO, LAPS, chiavi di ripristino BitLocker, sistemi obsoleti |
| Reporting | Console (con colori), testo semplice, HTML interattivo, esportazione JSON |
| Operazioni offensive | Kerberoasting, AS-REP Roasting, Golden/Silver/Diamond Tickets, RBCD, Shadow Credentials, Pass-the-Ticket |
| BloodHound | Collector BloodHound CE integrato (esportazione ZIP) |
| Modalità OPSEC | Salta i test attivi (Kerberoast, ASREPRoast, BloodHound) |
| Distribuzione | File .ps1 singolo, nessun RSAT, nessun modulo esterno, funziona offline e in ambienti air-gapped |
Nessun modulo ActiveDirectory, RSAT o modulo PowerShell esterno richiesto.
| File | Dimensione | Caso d'uso |
|---|---|---|
adPEAS.ps1 | ~4,5 MB | Sviluppo, debug, revisione del codice |
adPEAS_min.ps1 | ~3-4 MB | Uso regolare con footprint ridotto |
adPEAS_ultra.ps1 | ~3 MB | Dimensione minima, senza commenti |
adPEAS_obf.ps1 | <1 MB | Dimensione più piccola, offuscato per il trasferimento |
Tutte e quattro le versioni sono funzionalmente identiche. Scegli in base al tuo scenario di distribuzione.
# Clone the repository
git clone https://github.com/61106960/adPEAS.git
cd adPEAS
Il branch main contiene sempre una build aggiornata di tutte e quattro le varianti, ricompilata a ogni correzione e funzionalità, quindi gli URL grezzi sopra riportati servono il codice più recente. Tali build riportano una stringa di versione di sviluppo (2.5.1+20260917-1759). Ogni GitHub Release con tag ha le quattro build stabili allegate come asset scaricabili, con una stringa di versione pulita (2.5.1) — usa quelle se hai bisogno di una versione nota e citabile. Per compilare tu stesso dal codice sorgente:
git clone https://github.com/61106960/adPEAS.git
cd adPEAS
.\Build-Release.ps1
Questo produce tutte e quattro le varianti (adPEAS.ps1, adPEAS_min.ps1, adPEAS_ultra.ps1, adPEAS_obf.ps1) nella radice del repository. Richiede Windows PowerShell 5.1 e nessuna dipendenza aggiuntiva.
# 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))
# 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
# 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
# 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
# All formats (default) — creates .txt, .html, and .json
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -Outputfile .\report