
Outil PowerShell pour automatiser l'énumération d'Active Directory.
# adPEAS v2 — Scripts Awesome d'Escalade de Privilèges Active Directory
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/4985/094efb3e3ea9d020e014d57d49df2544da13c1a85d28db14f491e55817bcc68f.jpg" alt="Logo adPEAS" width="800">
</p>
<p align="center">
<strong>Évaluation complète de la sécurité Active Directory — zéro dépendance, fichier unique, prêt à l'emploi.</strong>
</p>
---
## Qu'est-ce que adPEAS ?
adPEAS est un outil d'évaluation de sécurité basé sur PowerShell qui identifie les mauvaises configurations, les vulnérabilités et les chemins d'escalade de privilèges dans les environnements Active Directory. Il est conçu pour les testeurs d'intrusion, les auditeurs de sécurité et les red teams qui ont besoin d'un outil fiable et autonome fonctionnant sur n'importe quel système Windows — sans RSAT, sans module ActiveDirectory, sans dépendances tierces.
**adPEAS v2** est une réécriture complète d'adPEAS v1. Il remplace l'approche héritée `DirectoryEntry`/`DirectorySearcher` par une architecture unifiée `System.DirectoryServices.Protocols.LdapConnection` et ajoute l'authentification Kerberos native, des rapports avancés et des opérations offensives — le tout en PowerShell pur.
### Nouveautés de la v2
- **Pile Kerberos native** — AS-REQ/AS-REP, TGS-REQ/TGS-REP, Pass-the-Ticket, PKINIT, le tout en PowerShell pur
- **Méthodes d'authentification multiples** — Mot de passe, NT-Hash (OPtH), clés AES (PtK), certificats (PKINIT & Pass-the-Cert/Schannel), Windows intégré
- **Plus de 40 contrôles de sécurité** répartis en 9 catégories avec notation de gravité
- **Rapports HTML interactifs** avec recherche, filtrage, scores de risque et infobulles
- **Export JSON** pour la conversion hors ligne des rapports, l'analyse incrémentielle et la comparaison de scans
- **Collecteur BloodHound CE** — collecte de données intégrée pour l'analyse des chemins d'attaque
- **Opérations offensives** — Kerberoasting, AS-REP Roasting, Golden/Silver/Diamond Tickets, abus de RBCD, Shadow Credentials, et plus encore
- **Flux de travail basé sur des sessions** — connexion unique, exécution interactive de plusieurs contrôles
- **Complétion par tabulation** — autocomplétion des noms d'objets AD pour l'exploration interactive
> **Nouveau sur adPEAS ?** Consultez le [Guide de démarrage rapide](https://github.com/61106960/adpeas/blob/main/docs/02-Quick-Start.md) ou lisez la [série d'articles sur blog.sekurity.de](https://blog.sekurity.de/blog/adpeas-v2-introduction) pour une plongée approfondie dans l'architecture, l'authentification et les mécanismes internes.
---
## Fonctionnalités en un coup d'œil
| Catégorie | Points forts |
|----------|-----------|
| **Authentification** | Identifiants, PKINIT, Pass-the-Cert, NT-Hash, clés AES, authentification Windows, Kerberos en priorité avec repli automatique |
| **Contrôles de sécurité** | Configuration du domaine, Kerberoast, ASREPRoast, ACLs, DCSync, délégation, chemins d'escalade AD CS, abus de GPO, LAPS, clés de récupération BitLocker, systèmes obsolètes |
| **Rapports** | Console (code couleur), texte brut, HTML interactif, export JSON |
| **Opérations offensives** | Kerberoasting, AS-REP Roasting, Golden/Silver/Diamond Tickets, RBCD, Shadow Credentials, Pass-the-Ticket |
| **BloodHound** | Collecteur BloodHound CE intégré (export ZIP) |
| **Mode OPSEC** | Ignorer les tests actifs (Kerberoast, ASREPRoast, BloodHound) |
| **Déploiement** | Fichier `.ps1` unique, sans RSAT, sans modules externes, fonctionne hors ligne et en environnement isolé |
---
## Prérequis
- **OS** : Windows 10/11, Windows Server 2016/2019/2022/2025
- **PowerShell** : 5.1+ (Windows PowerShell)
- **.NET Framework** : 4.5+ (inclus dans Windows)
- **Réseau** : LDAP (389), LDAPS (636), Kerberos (88), SMB (445)
Aucun module ActiveDirectory, RSAT ou module PowerShell externe requis.
---
## Téléchargement
### Versions de publication
| Fichier | Taille | Cas d'usage |
|------|------|----------|
| `adPEAS.ps1` | ~4,5 Mo | Développement, débogage, revue de code |
| `adPEAS_min.ps1` | ~3-4 Mo | Utilisation régulière avec une empreinte réduite |
| `adPEAS_ultra.ps1` | ~3 Mo | Taille minimale, sans commentaires |
| `adPEAS_obf.ps1` | <1 Mo | Taille la plus petite, obfusqué pour le transfert |
Les quatre versions sont fonctionnellement identiques. Choisissez selon votre scénario de déploiement.
```powershell
# Clone the repository
git clone https://github.com/61106960/adPEAS.git
cd adPEAS
```
### Compilation depuis les sources
La branche `main` contient toujours une compilation à jour des quatre variantes, reconstruite à chaque correctif et fonctionnalité, de sorte que les URL brutes ci-dessus servent le code le plus récent. Ces compilations portent une chaîne de version de développement (`2.5.1+20260917-1759`). Chaque [GitHub Release](https://github.com/61106960/adPEAS/releases) étiquetée dispose des quatre compilations stables jointes en tant qu'assets téléchargeables, avec une chaîne de version propre (`2.5.1`) — utilisez celles-ci si vous avez besoin d'une version connue et citable. Pour compiler vous-même depuis les sources :
```powershell
git clone https://github.com/61106960/adPEAS.git
cd adPEAS
.\Build-Release.ps1
```
Cela produit les quatre variantes (`adPEAS.ps1`, `adPEAS_min.ps1`, `adPEAS_ultra.ps1`, `adPEAS_obf.ps1`) à la racine du dépôt. Nécessite Windows PowerShell 5.1 et aucune dépendance supplémentaire.
---
## Démarrage rapide
```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))
```
### En une ligne (compatible 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
```
### Basé sur les sessions (style 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éthodes d'authentification
```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
```
### Sortie et rapports
```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"
```
## Modules de vérification de sécurité
| Module | Description |
|--------|-------------|
| `Domain` | Configuration du domaine, approbations, politique de mots de passe, signature LDAP, signature SMB |
| `Creds` | Kerberoast, ASREPRoast, accès aux clés de récupération LAPS et BitLocker, exposition d'identifiants dans SYSVOL |
| `Rights` | ACL, DCSync, droits de réinitialisation de mot de passe, autorisations dangereuses sur les OU |
| `Delegation` | Délégation non contrainte, contrainte, contrainte basée sur les ressources |
| `ADCS` | Modèles de certificats et AC : ESC1-ESC5, ESC8, ESC9, ESC13, ESC14, ESC15 (ESC10 via la vérification GPO). Les chemins d'escalade nécessitant un accès administratif à l'hôte de l'AC sont hors périmètre - voir [Security Checks](https://github.com/61106960/adpeas/blob/main/docs/04-Security-Checks.md) |
| `Accounts` | Comptes privilégiés, utilisateurs protégés, comptes de service, historique SID |
| `GPO` | Autorisations GPO, appartenance aux groupes locaux, tâches planifiées, scripts, paramètres de registre dangereux (WDigest, AlwaysInstallElevated, OneLogon/Zerologon, …) et politiques de pilotes d'imprimante Point and Print (PrintNightmare) déployées via GPO |
| `Computer` | LAPS, systèmes obsolètes, serveurs d'infrastructure |
| `Application` | Infrastructure Exchange, SCCM, SCOM |
| `Bloodhound` | Collecte de données BloodHound CE |
Exécuter des modules spécifiques :
```powershell
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -Module Domain,Creds,ADCS
```
Ou exécutez tout sauf quelques-uns, sans lister le reste :
```powershell
Invoke-adPEAS -Domain "contoso.com" -UseWindowsAuth -ExcludeModule Bloodhound,Computer
```
## Documentation
La documentation complète est disponible dans le répertoire [docs/](https://github.com/61106960/adpeas/blob/main/docs) :
| Document | Sujet |
| ------------------------------------------------------- | --------------------------------- |
| [Installation](https://github.com/61106960/adpeas/blob/main/docs/01-Installation.md) | Téléchargement, configuration, politique d'exécution |
| [Quick-Start](https://github.com/61106960/adpeas/blob/main/docs/02-Quick-Start.md) | Prise en main en 5 minutes |
| [Authentication](https://github.com/61106960/adpeas/blob/main/docs/03-Authentication-Methods.md) | Toutes les options d'authentification |
| [Security Checks](https://github.com/61106960/adpeas/blob/main/docs/04-Security-Checks.md) | Référence complète des vérifications |
| [BloodHound Collector](https://github.com/61106960/adpeas/blob/main/docs/05-BloodHound-Collector.md) | Export BloodHound CE |
| [Core Functions](https://github.com/61106960/adpeas/blob/main/docs/06-Core-Functions.md) | Fonctions de requête LDAP |
| [Set- & New-Modules](https://github.com/61106960/adpeas/blob/main/docs/07-Set-Modules.md) | Fonctions de modification AD |
| [Helper Functions](https://github.com/61106960/adpeas/blob/main/docs/08-Helper-Functions.md) | Fonctions utilitaires |
| [Architecture](https://github.com/61106960/adpeas/blob/main/docs/09-Architecture.md) | Architecture technique |
| [Risk Scoring](https://github.com/61106960/adpeas/blob/main/docs/10-Risk-Scoring-System.md) | Scores de gravité et de risque |
| [Troubleshooting](https://github.com/61106960/adpeas/blob/main/docs/11-Troubleshooting.md) | Problèmes courants et solutions |
| [FAQ](https://github.com/61106960/adpeas/blob/main/docs/12-FAQ.md) | Questions fréquemment posées |
### Série d'articles de blog
Une série détaillée d'articles de blog couvrant les rouages internes d'adPEAS v2 est publiée sur [blog.sekurity.de](https://blog.sekurity.de/blog/adpeas-v2-introduction).
---
## Licence
adPEAS est **à code source disponible** (source-available). Les évaluations de sécurité internes de votre propre organisation sont gratuites. L'utilisation commerciale (conseil, MSP, missions rémunérées) nécessite une licence commerciale.
Consultez [LICENSE](https://github.com/61106960/adpeas/blob/main/license/LICENSE.md) pour les conditions complètes, [COMMERCIAL_AGREEMENT](https://github.com/61106960/adpeas/blob/main/license/COMMERCIAL_AGREEMENT.md) pour l'accord commercial, et [PRICING](https://github.com/61106960/adpeas/blob/main/license/PRICING.md) pour les options de licence.
- **Demandes de licence :** [email protected]
- **Support technique :** [email protected]
---
## Mention légale
adPEAS est destiné **exclusivement à des tests de sécurité autorisés**. Obtenez toujours une autorisation écrite avant de procéder à des tests. Ne l'utilisez jamais contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation de tester. Les auteurs ne sont pas responsables d'un usage abusif de cet outil. Respectez toutes les lois et réglementations applicables.
---
## Auteur
**Alexander Sturz** — [SEKurity GmbH](https://sekurity.de)
- GitHub : [@61106960](https://github.com/61106960)
- Blog : [blog.sekurity.de](https://blog.sekurity.de)