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
e2f6c63a8b
commit
58e72c241e
@ -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 @@
|
||||
# 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}}
|
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user