mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/adws-enu
This commit is contained in:
parent
e0777ab227
commit
0be1b958d8
@ -260,6 +260,7 @@
|
||||
- [Ad Certificates](windows-hardening/active-directory-methodology/ad-certificates.md)
|
||||
- [AD information in printers](windows-hardening/active-directory-methodology/ad-information-in-printers.md)
|
||||
- [AD DNS Records](windows-hardening/active-directory-methodology/ad-dns-records.md)
|
||||
- [Adws Enumeration](windows-hardening/active-directory-methodology/adws-enumeration.md)
|
||||
- [ASREPRoast](windows-hardening/active-directory-methodology/asreproast.md)
|
||||
- [BloodHound & Other AD Enum Tools](windows-hardening/active-directory-methodology/bloodhound.md)
|
||||
- [Constrained Delegation](windows-hardening/active-directory-methodology/constrained-delegation.md)
|
||||
|
@ -0,0 +1,106 @@
|
||||
# Active Directory Web Services (ADWS) Enumeration & Stealth Collection
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Was ist ADWS?
|
||||
|
||||
Active Directory Web Services (ADWS) ist **standardmäßig auf jedem Domänencontroller seit Windows Server 2008 R2 aktiviert** und hört auf TCP **9389**. Trotz des Namens ist **kein HTTP beteiligt**. Stattdessen stellt der Dienst LDAP-ähnliche Daten über einen Stapel proprietärer .NET-Frame-Protokolle bereit:
|
||||
|
||||
* MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
|
||||
|
||||
Da der Datenverkehr in diesen binären SOAP-Frames gekapselt ist und über einen ungewöhnlichen Port reist, **ist die Enumeration über ADWS weitaus weniger wahrscheinlich, dass sie inspiziert, gefiltert oder signiert wird als klassischer LDAP/389 & 636 Verkehr**. Für Betreiber bedeutet dies:
|
||||
|
||||
* Stealthier Recon – Blaue Teams konzentrieren sich oft auf LDAP-Abfragen.
|
||||
* Freiheit, von **nicht-Windows-Hosts (Linux, macOS)** zu sammeln, indem 9389/TCP durch einen SOCKS-Proxy getunnelt wird.
|
||||
* Die gleichen Daten, die Sie über LDAP erhalten würden (Benutzer, Gruppen, ACLs, Schema usw.) und die Möglichkeit, **Schreibvorgänge** durchzuführen (z. B. `msDs-AllowedToActOnBehalfOfOtherIdentity` für **RBCD**).
|
||||
|
||||
> HINWEIS: ADWS wird auch von vielen RSAT GUI/PowerShell-Tools verwendet, sodass der Datenverkehr mit legitimen Administrationsaktivitäten vermischt werden kann.
|
||||
|
||||
## SoaPy – Native Python-Client
|
||||
|
||||
[SoaPy](https://github.com/logangoins/soapy) ist eine **vollständige Neurealisierung des ADWS-Protokollstapels in reinem Python**. Es erstellt die NBFX/NBFSE/NNS/NMF-Frames bytegenau und ermöglicht das Sammeln von Unix-ähnlichen Systemen, ohne die .NET-Laufzeit zu berühren.
|
||||
|
||||
### Hauptmerkmale
|
||||
|
||||
* Unterstützt **Proxying über SOCKS** (nützlich von C2-Implantaten).
|
||||
* Fein abgestufte Suchfilter identisch zu LDAP `-q '(objectClass=user)'`.
|
||||
* Optionale **Schreib**-Operationen ( `--set` / `--delete` ).
|
||||
* **BOFHound-Ausgabemodus** für die direkte Eingabe in BloodHound.
|
||||
* `--parse`-Flag zur Verschönerung von Zeitstempeln / `userAccountControl`, wenn menschliche Lesbarkeit erforderlich ist.
|
||||
|
||||
### Installation (Operator-Host)
|
||||
```bash
|
||||
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
|
||||
```
|
||||
## Stealth AD Collection Workflow
|
||||
|
||||
Der folgende Workflow zeigt, wie man **Domain- und ADCS-Objekte** über ADWS enumeriert, sie in BloodHound JSON konvertiert und nach zertifikatbasierten Angriffspfaden sucht – alles von Linux aus:
|
||||
|
||||
1. **Tunnel 9389/TCP** vom Zielnetzwerk zu deinem Rechner (z.B. über Chisel, Meterpreter, SSH dynamisches Port-Forwarding usw.). Exportiere `export HTTPS_PROXY=socks5://127.0.0.1:1080` oder verwende SoaPy’s `--proxyHost/--proxyPort`.
|
||||
|
||||
2. **Sammle das Root-Domain-Objekt:**
|
||||
```bash
|
||||
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
|
||||
-q '(objectClass=domain)' \
|
||||
| tee data/domain.log
|
||||
```
|
||||
3. **Sammeln Sie ADCS-bezogene Objekte aus dem Configuration NC:**
|
||||
```bash
|
||||
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
|
||||
-dn 'CN=Configuration,DC=ludus,DC=domain' \
|
||||
-q '(|(objectClass=pkiCertificateTemplate)(objectClass=CertificationAuthority) \\
|
||||
(objectClass=pkiEnrollmentService)(objectClass=msPKI-Enterprise-Oid))' \
|
||||
| tee data/adcs.log
|
||||
```
|
||||
4. **In BloodHound umwandeln:**
|
||||
```bash
|
||||
bofhound -i data --zip # produces BloodHound.zip
|
||||
```
|
||||
5. **Laden Sie die ZIP-Datei** in die BloodHound-GUI hoch und führen Sie Cypher-Abfragen wie `MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c` aus, um Zertifikatseskalationspfade (ESC1, ESC8 usw.) offenzulegen.
|
||||
|
||||
### Schreiben von `msDs-AllowedToActOnBehalfOfOtherIdentity` (RBCD)
|
||||
```bash
|
||||
soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \
|
||||
--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \
|
||||
msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....'
|
||||
```
|
||||
Kombinieren Sie dies mit `s4u2proxy`/`Rubeus /getticket` für eine vollständige **ressourcenbasierte eingeschränkte Delegation**-Kette.
|
||||
|
||||
## Erkennung & Härtung
|
||||
|
||||
### Ausführliches ADDS-Logging
|
||||
|
||||
Aktivieren Sie die folgenden Registrierungsschlüssel auf Domänencontrollern, um teure / ineffiziente Suchen von ADWS (und LDAP) sichtbar zu machen:
|
||||
```powershell
|
||||
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value 5 -Type DWORD
|
||||
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value 1 -Type DWORD
|
||||
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Search Time Threshold (msecs)' -Value 0 -Type DWORD
|
||||
```
|
||||
Ereignisse erscheinen unter **Directory-Service** mit dem vollständigen LDAP-Filter, selbst wenn die Abfrage über ADWS eingegangen ist.
|
||||
|
||||
### SACL Canary Objects
|
||||
|
||||
1. Erstellen Sie ein Dummy-Objekt (z. B. deaktivierter Benutzer `CanaryUser`).
|
||||
2. Fügen Sie eine **Audit** ACE für das _Everyone_ Prinzipal hinzu, die auf **ReadProperty** geprüft wird.
|
||||
3. Jedes Mal, wenn ein Angreifer `(servicePrincipalName=*)`, `(objectClass=user)` usw. ausführt, gibt der DC **Event 4662** aus, das die echte Benutzer-SID enthält – selbst wenn die Anfrage proxyisiert oder von ADWS stammt.
|
||||
|
||||
Beispiel für eine vorgefertigte Regel von Elastic:
|
||||
```kql
|
||||
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
|
||||
```
|
||||
## Tooling Summary
|
||||
|
||||
| Zweck | Tool | Anmerkungen |
|
||||
|-------|------|-------------|
|
||||
| ADWS Enumeration | [SoaPy](https://github.com/logangoins/soapy) | Python, SOCKS, lesen/schreiben |
|
||||
| BloodHound Ingest | [BOFHound](https://github.com/bohops/BOFHound) | Konvertiert SoaPy/ldapsearch Protokolle |
|
||||
| Zertifikat Kompromittierung | [Certipy](https://github.com/ly4k/Certipy) | Kann über denselben SOCKS proxyisiert werden |
|
||||
|
||||
## References
|
||||
|
||||
* [SpecterOps – Make Sure to Use SOAP(y) – An Operators Guide to Stealthy AD Collection Using ADWS](https://specterops.io/blog/2025/07/25/make-sure-to-use-soapy-an-operators-guide-to-stealthy-ad-collection-using-adws/)
|
||||
* [SoaPy GitHub](https://github.com/logangoins/soapy)
|
||||
* [BOFHound GitHub](https://github.com/bohops/BOFHound)
|
||||
* [Microsoft – MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF specifications](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nbfx/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -1,87 +1,78 @@
|
||||
# BloodHound & Andere AD Enum Tools
|
||||
# BloodHound & Andere Active Directory Enumerationswerkzeuge
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
{{#ref}}
|
||||
adws-enumeration.md
|
||||
{{#endref}}
|
||||
|
||||
> HINWEIS: Diese Seite gruppiert einige der nützlichsten Dienstprogramme zur **Enumeration** und **Visualisierung** von Active Directory-Beziehungen. Für die Sammlung über den stealthy **Active Directory Web Services (ADWS)** Kanal siehe den oben genannten Verweis.
|
||||
|
||||
---
|
||||
|
||||
## AD Explorer
|
||||
|
||||
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) ist aus der Sysinternal Suite:
|
||||
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) (Sysinternals) ist ein fortgeschrittener **AD-Viewer & Editor**, der Folgendes ermöglicht:
|
||||
|
||||
> Ein fortschrittlicher Active Directory (AD) Viewer und Editor. Sie können AD Explorer verwenden, um einfach durch eine AD-Datenbank zu navigieren, bevorzugte Standorte zu definieren, Objektattribute und -eigenschaften ohne Öffnen von Dialogfeldern anzuzeigen, Berechtigungen zu bearbeiten, das Schema eines Objekts anzuzeigen und komplexe Suchen auszuführen, die Sie speichern und erneut ausführen können.
|
||||
* GUI-Browsing des Verzeichnisbaums
|
||||
* Bearbeitung von Objektattributen & Sicherheitsbeschreibungen
|
||||
* Erstellung / Vergleich von Snapshots für die Offline-Analyse
|
||||
|
||||
### Snapshots
|
||||
### Schnelle Nutzung
|
||||
|
||||
AD Explorer kann Snapshots eines AD erstellen, sodass Sie es offline überprüfen können.\
|
||||
Es kann verwendet werden, um Schwachstellen offline zu entdecken oder um verschiedene Zustände der AD-Datenbank im Laufe der Zeit zu vergleichen.
|
||||
1. Starten Sie das Tool und verbinden Sie sich mit `dc01.corp.local` mit beliebigen Domänenanmeldeinformationen.
|
||||
2. Erstellen Sie einen Offline-Snapshot über `Datei ➜ Snapshot erstellen`.
|
||||
3. Vergleichen Sie zwei Snapshots mit `Datei ➜ Vergleichen`, um Berechtigungsabweichungen zu erkennen.
|
||||
|
||||
Sie benötigen den Benutzernamen, das Passwort und die Richtung, um eine Verbindung herzustellen (jeder AD-Benutzer ist erforderlich).
|
||||
|
||||
Um einen Snapshot von AD zu erstellen, gehen Sie zu `Datei` --> `Snapshot erstellen` und geben Sie einen Namen für den Snapshot ein.
|
||||
---
|
||||
|
||||
## ADRecon
|
||||
|
||||
[**ADRecon**](https://github.com/adrecon/ADRecon) ist ein Tool, das verschiedene Artefakte aus einer AD-Umgebung extrahiert und kombiniert. Die Informationen können in einem **speziell formatierten** Microsoft Excel **Bericht** präsentiert werden, der Zusammenfassungsansichten mit Metriken enthält, um die Analyse zu erleichtern und ein ganzheitliches Bild des aktuellen Zustands der Ziel-AD-Umgebung zu bieten.
|
||||
```bash
|
||||
# Run it
|
||||
.\ADRecon.ps1
|
||||
[ADRecon](https://github.com/adrecon/ADRecon) extrahiert eine große Menge an Artefakten aus einer Domäne (ACLs, GPOs, Vertrauensstellungen, CA-Vorlagen …) und erstellt einen **Excel-Bericht**.
|
||||
```powershell
|
||||
# On a Windows host in the domain
|
||||
PS C:\> .\ADRecon.ps1 -OutputDir C:\Temp\ADRecon
|
||||
```
|
||||
## BloodHound
|
||||
---
|
||||
|
||||
Von [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
|
||||
## BloodHound (Graphvisualisierung)
|
||||
|
||||
> BloodHound ist eine einseitige Javascript-Webanwendung, die auf [Linkurious](http://linkurio.us/) basiert, mit [Electron](http://electron.atom.io/) kompiliert wurde und eine [Neo4j](https://neo4j.com/) Datenbank verwendet, die von einem C# Datenkollektor gespeist wird.
|
||||
[BloodHound](https://github.com/BloodHoundAD/BloodHound) verwendet Graphentheorie + Neo4j, um versteckte Berechtigungsbeziehungen in On-Prem AD & Azure AD offenzulegen.
|
||||
|
||||
BloodHound verwendet Graphentheorie, um die verborgenen und oft unbeabsichtigten Beziehungen innerhalb einer Active Directory- oder Azure-Umgebung offenzulegen. Angreifer können BloodHound verwenden, um hochkomplexe Angriffswege leicht zu identifizieren, die sonst unmöglich schnell zu erkennen wären. Verteidiger können BloodHound nutzen, um dieselben Angriffswege zu identifizieren und zu beseitigen. Sowohl Blue- als auch Red-Teams können BloodHound verwenden, um ein tieferes Verständnis der Berechtigungsbeziehungen in einer Active Directory- oder Azure-Umgebung zu erlangen.
|
||||
|
||||
Also, [Bloodhound ](https://github.com/BloodHoundAD/BloodHound) ist ein erstaunliches Tool, das eine Domäne automatisch auflisten, alle Informationen speichern, mögliche Privilegieneskalationspfade finden und alle Informationen mithilfe von Grafiken anzeigen kann.
|
||||
|
||||
BloodHound besteht aus 2 Hauptteilen: **Ingestoren** und der **Visualisierungsanwendung**.
|
||||
|
||||
Die **Ingestoren** werden verwendet, um **die Domäne aufzulisten und alle Informationen** in einem Format zu extrahieren, das die Visualisierungsanwendung verstehen kann.
|
||||
|
||||
Die **Visualisierungsanwendung verwendet Neo4j**, um zu zeigen, wie alle Informationen miteinander verbunden sind und um verschiedene Möglichkeiten zur Eskalation von Berechtigungen in der Domäne anzuzeigen.
|
||||
|
||||
### Installation
|
||||
|
||||
Nach der Erstellung von BloodHound CE wurde das gesamte Projekt zur Benutzerfreundlichkeit mit Docker aktualisiert. Der einfachste Weg, um zu beginnen, ist die Verwendung der vorkonfigurierten Docker Compose-Konfiguration.
|
||||
|
||||
1. Installieren Sie Docker Compose. Dies sollte mit der [Docker Desktop](https://www.docker.com/products/docker-desktop/) Installation enthalten sein.
|
||||
2. Führen Sie aus:
|
||||
### Bereitstellung (Docker CE)
|
||||
```bash
|
||||
curl -L https://ghst.ly/getbhce | docker compose -f - up
|
||||
# Web UI ➜ http://localhost:8080 (user: admin / password from logs)
|
||||
```
|
||||
3. Lokalisieren Sie das zufällig generierte Passwort in der Terminalausgabe von Docker Compose.
|
||||
4. Navigieren Sie in einem Browser zu http://localhost:8080/ui/login. Melden Sie sich mit dem Benutzernamen **`admin`** und einem **`zufällig generierten Passwort`** an, das Sie in den Protokollen von Docker Compose finden können.
|
||||
### Sammler
|
||||
|
||||
Nachdem Sie dies getan haben, müssen Sie das zufällig generierte Passwort ändern, und Sie haben die neue Benutzeroberfläche bereit, von der aus Sie die Ingestoren direkt herunterladen können.
|
||||
* `SharpHound.exe` / `Invoke-BloodHound` – native oder PowerShell-Variante
|
||||
* `AzureHound` – Azure AD Enumeration
|
||||
* **SoaPy + BOFHound** – ADWS-Sammlung (siehe Link oben)
|
||||
|
||||
### SharpHound
|
||||
#### Häufige SharpHound-Modi
|
||||
```powershell
|
||||
SharpHound.exe --CollectionMethods All # Full sweep (noisy)
|
||||
SharpHound.exe --CollectionMethods Group,LocalAdmin,Session,Trusts,ACL
|
||||
SharpHound.exe --Stealth --LDAP # Low noise LDAP only
|
||||
```
|
||||
Die Sammler erzeugen JSON, das über die BloodHound-GUI aufgenommen wird.
|
||||
|
||||
Sie haben mehrere Optionen, aber wenn Sie SharpHound von einem PC ausführen möchten, der der Domäne beigetreten ist, und Ihren aktuellen Benutzer verwenden und alle Informationen extrahieren möchten, können Sie Folgendes tun:
|
||||
```
|
||||
./SharpHound.exe --CollectionMethods All
|
||||
Invoke-BloodHound -CollectionMethod All
|
||||
```
|
||||
> Sie können mehr über **CollectionMethod** und die Schleifensitzung [hier](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained) lesen.
|
||||
|
||||
Wenn Sie SharpHound mit anderen Anmeldeinformationen ausführen möchten, können Sie eine CMD netonly-Sitzung erstellen und SharpHound von dort aus ausführen:
|
||||
```
|
||||
runas /netonly /user:domain\user "powershell.exe -exec bypass"
|
||||
```
|
||||
[**Erfahren Sie mehr über Bloodhound auf ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux)
|
||||
---
|
||||
|
||||
## Group3r
|
||||
|
||||
[**Group3r**](https://github.com/Group3r/Group3r) ist ein Tool, um **Schwachstellen** in Active Directory zu finden, die mit **Gruppenrichtlinien** verbunden sind. \
|
||||
Sie müssen **group3r** von einem Host innerhalb der Domäne mit **einem beliebigen Domänenbenutzer** ausführen.
|
||||
[Group3r](https://github.com/Group3r/Group3r) enumeriert **Group Policy Objects** und hebt Fehlkonfigurationen hervor.
|
||||
```bash
|
||||
group3r.exe -f <filepath-name.log>
|
||||
# -s sends results to stdin
|
||||
# -f send results to file
|
||||
# Execute inside the domain
|
||||
Group3r.exe -f gpo.log # -s to stdout
|
||||
```
|
||||
---
|
||||
|
||||
## PingCastle
|
||||
|
||||
[**PingCastle**](https://www.pingcastle.com/documentation/) **bewertet die Sicherheitslage einer AD-Umgebung** und bietet einen schönen **Bericht** mit Grafiken.
|
||||
|
||||
Um es auszuführen, kann die Binary `PingCastle.exe` gestartet werden, und es wird eine **interaktive Sitzung** mit einem Menü von Optionen präsentiert. Die Standardoption, die verwendet werden soll, ist **`healthcheck`**, die eine Basislinie **Übersicht** über die **Domäne** erstellt und **Fehlkonfigurationen** sowie **Schwachstellen** findet.
|
||||
|
||||
[PingCastle](https://www.pingcastle.com/documentation/) führt einen **Gesundheitscheck** von Active Directory durch und erstellt einen HTML-Bericht mit Risikobewertung.
|
||||
```powershell
|
||||
PingCastle.exe --healthcheck --server corp.local --user bob --password "P@ssw0rd!"
|
||||
```
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user