Translated ['src/windows-hardening/active-directory-methodology/adws-enu

This commit is contained in:
Translator 2025-07-28 12:12:49 +00:00
parent e2f6c63a8b
commit 58e72c241e
3 changed files with 155 additions and 57 deletions

View File

@ -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)

View File

@ -0,0 +1,106 @@
# Enumeracja i cicha kolekcja Active Directory Web Services (ADWS)
{{#include ../../banners/hacktricks-training.md}}
## Czym jest ADWS?
Active Directory Web Services (ADWS) jest **włączone domyślnie na każdym kontrolerze domeny od Windows Server 2008 R2** i nasłuchuje na TCP **9389**. Mimo nazwy, **nie jest zaangażowane HTTP**. Zamiast tego, usługa udostępnia dane w stylu LDAP przez zestaw własnych protokołów ramkowych .NET:
* MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
Ponieważ ruch jest enkapsulowany w tych binarnych ramach SOAP i podróżuje przez nietypowy port, **enumeracja przez ADWS jest znacznie mniej prawdopodobna do inspekcji, filtrowania lub podpisywania niż klasyczny ruch LDAP/389 i 636**. Dla operatorów oznacza to:
* Cichsza rekonesans zespoły niebieskie często koncentrują się na zapytaniach LDAP.
* Wolność zbierania danych z **nie-Windowsowych hostów (Linux, macOS)** przez tunelowanie 9389/TCP przez proxy SOCKS.
* Te same dane, które uzyskałbyś przez LDAP (użytkownicy, grupy, ACL, schemat itp.) oraz możliwość wykonywania **zapisów** (np. `msDs-AllowedToActOnBehalfOfOtherIdentity` dla **RBCD**).
> UWAGA: ADWS jest również używane przez wiele narzędzi GUI/PowerShell RSAT, więc ruch może się mieszać z legalną aktywnością administracyjną.
## SoaPy Nattywny klient Python
[SoaPy](https://github.com/logangoins/soapy) jest **pełną re-implementacją stosu protokołów ADWS w czystym Pythonie**. Tworzy ramki NBFX/NBFSE/NNS/NMF bajt po bajcie, umożliwiając zbieranie danych z systemów podobnych do Unix bez dotykania środowiska uruchomieniowego .NET.
### Kluczowe cechy
* Obsługuje **proxy przez SOCKS** (przydatne z implantami C2).
* Szczegółowe filtry wyszukiwania identyczne do LDAP `-q '(objectClass=user)'`.
* Opcjonalne operacje **zapisów** ( `--set` / `--delete` ).
* **Tryb wyjścia BOFHound** do bezpośredniego wchłaniania do BloodHound.
* Flaga `--parse` do upiększania znaczników czasowych / `userAccountControl`, gdy wymagana jest czytelność dla ludzi.
### Instalacja (host operatora)
```bash
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
```
## Stealth AD Collection Workflow
Poniższy workflow pokazuje, jak enumerować **obiekty domeny i ADCS** przez ADWS, konwertować je na JSON BloodHound i szukać ścieżek ataku opartych na certyfikatach wszystko z systemu Linux:
1. **Tunel 9389/TCP** z sieci docelowej do twojego komputera (np. za pomocą Chisel, Meterpreter, SSH dynamic port-forward itp.). Eksportuj `export HTTPS_PROXY=socks5://127.0.0.1:1080` lub użyj `--proxyHost/--proxyPort` SoaPy.
2. **Zbierz obiekt domeny głównej:**
```bash
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
-q '(objectClass=domain)' \
| tee data/domain.log
```
3. **Zbierz obiekty związane z ADCS z NC konfiguracji:**
```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. **Konwertuj na BloodHound:**
```bash
bofhound -i data --zip # produces BloodHound.zip
```
5. **Prześlij ZIP** w interfejsie BloodHound i uruchom zapytania cypher, takie jak `MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c`, aby ujawnić ścieżki eskalacji certyfikatów (ESC1, ESC8 itp.).
### Pisanie `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....'
```
Połącz to z `s4u2proxy`/`Rubeus /getticket` dla pełnego **Resource-Based Constrained Delegation** łańcucha.
## Wykrywanie i Wzmocnienie
### Szczegółowe logowanie ADDS
Włącz następujące klucze rejestru na kontrolerach domeny, aby ujawnić kosztowne / nieefektywne wyszukiwania pochodzące z ADWS (i LDAP):
```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
```
Wydarzenia będą się pojawiać pod **Directory-Service** z pełnym filtrem LDAP, nawet gdy zapytanie dotarło przez ADWS.
### Obiekty SACL Canary
1. Utwórz obiekt zastępczy (np. wyłączony użytkownik `CanaryUser`).
2. Dodaj **Audit** ACE dla głównego _Everyone_, audytowanego na **ReadProperty**.
3. Kiedy atakujący wykonuje `(servicePrincipalName=*)`, `(objectClass=user)` itd., DC emituje **Event 4662**, który zawiera prawdziwy SID użytkownika nawet gdy żądanie jest proxy lub pochodzi z ADWS.
Przykład wstępnie zbudowanej reguły Elastic:
```kql
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
```
## Podsumowanie narzędzi
| Cel | Narzędzie | Uwagi |
|-----|-----------|-------|
| Enumeracja ADWS | [SoaPy](https://github.com/logangoins/soapy) | Python, SOCKS, odczyt/zapis |
| Import BloodHound | [BOFHound](https://github.com/bohops/BOFHound) | Konwertuje logi SoaPy/ldapsearch |
| Kompromitacja certyfikatu | [Certipy](https://github.com/ly4k/Certipy) | Może być proxy przez ten sam SOCKS |
## Odniesienia
* [SpecterOps Upewnij się, że używasz SOAP(y) Przewodnik operatora po dyskretnym zbieraniu AD za pomocą 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 specyfikacje MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nbfx/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,87 +1,78 @@
# BloodHound & Other AD Enum Tools
# BloodHound & Inne Narzędzia do Enumeracji Active Directory
{{#include ../../banners/hacktricks-training.md}}
{{#ref}}
adws-enumeration.md
{{#endref}}
> UWAGA: Ta strona grupuje niektóre z najbardziej przydatnych narzędzi do **enumeracji** i **wizualizacji** relacji Active Directory. Aby zebrać dane przez dyskretny kanał **Active Directory Web Services (ADWS)**, sprawdź powyższy odnośnik.
---
## AD Explorer
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) pochodzi z Sysinternal Suite:
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) (Sysinternals) to zaawansowany **wyświetlacz i edytor AD**, który umożliwia:
> Zaawansowany przeglądarka i edytor Active Directory (AD). Możesz użyć AD Explorer, aby łatwo nawigować po bazie danych AD, definiować ulubione lokalizacje, przeglądać właściwości obiektów i atrybuty bez otwierania okien dialogowych, edytować uprawnienia, przeglądać schemat obiektu i wykonywać zaawansowane wyszukiwania, które możesz zapisać i ponownie wykonać.
* Przeglądanie drzewa katalogów w GUI
* Edytowanie atrybutów obiektów i deskryptorów zabezpieczeń
* Tworzenie / porównywanie zrzutów do analizy offline
### Snapshots
### Szybkie użycie
AD Explorer może tworzyć migawki AD, abyś mógł je sprawdzić offline.\
Może być używany do odkrywania luk offline lub do porównywania różnych stanów bazy danych AD w czasie.
1. Uruchom narzędzie i połącz się z `dc01.corp.local` za pomocą dowolnych poświadczeń domenowych.
2. Utwórz zrzut offline za pomocą `Plik ➜ Utwórz zrzut`.
3. Porównaj dwa zrzuty za pomocą `Plik ➜ Porównaj`, aby zauważyć różnice w uprawnieniach.
Będziesz potrzebować nazwy użytkownika, hasła i kierunku połączenia (wymagany jest dowolny użytkownik AD).
Aby zrobić migawkę AD, przejdź do `File` --> `Create Snapshot` i wprowadź nazwę dla migawki.
---
## ADRecon
[**ADRecon**](https://github.com/adrecon/ADRecon) to narzędzie, które wydobywa i łączy różne artefakty z środowiska AD. Informacje mogą być przedstawione w **specjalnie sformatowanym** raporcie Microsoft Excel **raporcie**, który zawiera widoki podsumowujące z metrykami, aby ułatwić analizę i zapewnić całościowy obraz aktualnego stanu docelowego środowiska AD.
```bash
# Run it
.\ADRecon.ps1
[ADRecon](https://github.com/adrecon/ADRecon) wyodrębnia dużą liczbę artefaktów z domeny (ACL, GPO, zaufania, szablony CA …) i generuje **raport Excel**.
```powershell
# On a Windows host in the domain
PS C:\> .\ADRecon.ps1 -OutputDir C:\Temp\ADRecon
```
## BloodHound
---
From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
## BloodHound (wizualizacja grafów)
> BloodHound to aplikacja webowa w JavaScript na jednej stronie, zbudowana na bazie [Linkurious](http://linkurio.us/), skompilowana z [Electron](http://electron.atom.io/), z bazą danych [Neo4j](https://neo4j.com/) zasilaną przez zbieracz danych w C#.
[BloodHound](https://github.com/BloodHoundAD/BloodHound) wykorzystuje teorię grafów + Neo4j do ujawnienia ukrytych relacji uprawnień w lokalnym AD i Azure AD.
BloodHound wykorzystuje teorię grafów, aby ujawnić ukryte i często niezamierzone relacje w środowisku Active Directory lub Azure. Atakujący mogą używać BloodHound do łatwego identyfikowania bardzo złożonych ścieżek ataku, które w przeciwnym razie byłyby niemożliwe do szybkiego zidentyfikowania. Obrońcy mogą używać BloodHound do identyfikacji i eliminacji tych samych ścieżek ataku. Zarówno zespoły niebieskie, jak i czerwone mogą używać BloodHound do łatwego uzyskania głębszego zrozumienia relacji uprawnień w środowisku Active Directory lub Azure.
Tak więc, [Bloodhound ](https://github.com/BloodHoundAD/BloodHound)to niesamowite narzędzie, które może automatycznie enumerować domenę, zapisywać wszystkie informacje, znajdować możliwe ścieżki eskalacji uprawnień i przedstawiać wszystkie informacje za pomocą grafów.
BloodHound składa się z 2 głównych części: **ingestorów** i **aplikacji wizualizacyjnej**.
**Ingestory** są używane do **enumeracji domeny i ekstrakcji wszystkich informacji** w formacie, który zrozumie aplikacja wizualizacyjna.
**Aplikacja wizualizacyjna wykorzystuje neo4j** do pokazania, jak wszystkie informacje są ze sobą powiązane oraz do pokazania różnych sposobów eskalacji uprawnień w domenie.
### Instalacja
Po utworzeniu BloodHound CE, cały projekt został zaktualizowany w celu ułatwienia użytkowania z Dockerem. Najłatwiejszym sposobem na rozpoczęcie jest użycie jego wstępnie skonfigurowanej konfiguracji Docker Compose.
1. Zainstaluj Docker Compose. Powinno to być zawarte w instalacji [Docker Desktop](https://www.docker.com/products/docker-desktop/).
2. Uruchom:
### Wdrożenie (Docker CE)
```bash
curl -L https://ghst.ly/getbhce | docker compose -f - up
# Web UI ➜ http://localhost:8080 (user: admin / password from logs)
```
3. Zlokalizuj losowo wygenerowane hasło w wyjściu terminala Docker Compose.
4. W przeglądarce przejdź do http://localhost:8080/ui/login. Zaloguj się za pomocą nazwy użytkownika **`admin`** i **`losowo wygenerowanego hasła`**, które możesz znaleźć w logach docker compose.
### Zbieracze
Po tym musisz zmienić losowo wygenerowane hasło i będziesz miał gotowy nowy interfejs, z którego możesz bezpośrednio pobrać ingestry.
* `SharpHound.exe` / `Invoke-BloodHound` natywna lub PowerShell wersja
* `AzureHound` enumeracja Azure AD
* **SoaPy + BOFHound** zbieranie ADWS (zobacz link na górze)
### SharpHound
#### Typowe tryby SharpHound
```powershell
SharpHound.exe --CollectionMethods All # Full sweep (noisy)
SharpHound.exe --CollectionMethods Group,LocalAdmin,Session,Trusts,ACL
SharpHound.exe --Stealth --LDAP # Low noise LDAP only
```
Kolektorzy generują JSON, który jest wczytywany za pomocą interfejsu BloodHound.
Mają kilka opcji, ale jeśli chcesz uruchomić SharpHound z komputera dołączonego do domeny, używając swojego aktualnego użytkownika i wyciągnąć wszystkie informacje, możesz to zrobić:
```
./SharpHound.exe --CollectionMethods All
Invoke-BloodHound -CollectionMethod All
```
> Możesz przeczytać więcej o **CollectionMethod** i sesji pętli [tutaj](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained)
Jeśli chcesz uruchomić SharpHound używając innych poświadczeń, możesz utworzyć sesję CMD netonly i uruchomić SharpHound stamtąd:
```
runas /netonly /user:domain\user "powershell.exe -exec bypass"
```
[**Dowiedz się więcej o Bloodhound na 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) to narzędzie do znajdowania **vulnerabilities** w Active Directory związanych z **Group Policy**. \
Musisz **uruchomić group3r** z hosta wewnątrz domeny, używając **dowolnego użytkownika domeny**.
[Group3r](https://github.com/Group3r/Group3r) enumeruje **Group Policy Objects** i podkreśla błędne konfiguracje.
```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/) **ocenia bezpieczeństwo środowiska AD** i dostarcza ładny **raport** z wykresami.
Aby go uruchomić, można wykonać plik binarny `PingCastle.exe`, a rozpocznie on **interaktywną sesję** prezentującą menu opcji. Domyślną opcją do użycia jest **`healthcheck`**, która ustali podstawowy **przegląd** **domeny** oraz znajdzie **błędne konfiguracje** i **luki w zabezpieczeniach**.
[PingCastle](https://www.pingcastle.com/documentation/) przeprowadza **sprawdzenie stanu** Active Directory i generuje raport HTML z oceną ryzyka.
```powershell
PingCastle.exe --healthcheck --server corp.local --user bob --password "P@ssw0rd!"
```
{{#include ../../banners/hacktricks-training.md}}