Zerologon: Kritická zranitelnost Windows AD
Název zranitelnosti úzce souvisí s hlavním vektorem útoku, který zranitelnost zneužívá – jedná se o chybu v nastavení inicializačního vektoru (IV) při šifrování zpráv Netlogon Remote Protokolu (MS-NRPC), díky čemuž může interní útočník šifrování zcela prolomit a vydávat se za libovolný počítač v síti.
Dopad zranitelnosti je obrovský, díky čemuž se její závažnost v Common Vulnerability Scoring Systému (CVSS) vyšplhala až na kritických 10 z 10. Její úspěšné zneužití umožňuje útočníkovi, který je schopen navázat TCP spojení s doménovým řadičem (Domain Controller), eskalovat svá privilegia až na úroveň doménového administrátora, čímž dochází k celkové kompromitaci celé domény a všech systémů k ní připojených. Ve většině případů (pokud není doménový řadič dostupný veřejně z internetu) je tedy útok možné provést pouze z vnitřní sítě, čímž je šance jeho zneužití snížena.
V současné době se již pohybuje internetem několik skriptů, které úspěšně zranitelnost zneužívají (převážně jako důkazy konceptu), a na základě dat z některých honeypot systémů (systémů, které jsou úmyslně zranitelné a přístupné z internetu, u kterých jsou aktivně monitorovány pokusy o její zneužití) již několik hackerských skupin zranitelnost aktivně a automatizovaně zneužívá v globálním měřítku.
Microsoft oznámil dvě záplaty opravující chybu umožňující tuto zranitelnost. První záplata byla vydaná 11. srpna 2020a byla označena jako kritická. Tato záplata opravuje chybu, která útok umožňuje a dovoluje útočníkovi autentizovat se za libovolný stroj v AD, a měla by být dostačujícím způsobem, jak zamezit jejímu zneužití. Z toho důvodu velmi doporučujeme záplatu aplikovat, a co nejdříve aktualizovat všechny doménové řadiče.
Druhá záplata je plánovaná na začátek příštího roku, a zabývá se vlastností protokolu RPC týkající se Podepisování a Pečetění RPC zpráv (RPC Signing and Sealing). Tato vlastnost, nastavená hodnotou v hlavičce každé zprávy, určuje, zda je komunikace mezi klientem a DC šifrovaná. Pouhým nastavením hodnoty hlavičky na 0 může útočník tuto vlastnost vypnout, a je mu umožněno posílat zprávy bez znalosti šifrovacího klíče. Tato záplata není kritická pro zamezení zranitelnosti, neboť pro její zneužití je nutné být autentizován vůči doménovému řadiči, čemuž je zamezeno první záplatou.
Technické detaily
Zranitelnost byla publikovaná ve zprávě vydané v záři roku 2020 bezpečnostním výzkumníkem Tomem Tervoortem ve jménu firmySecura, která popisuje nedostatky v implementaci šifrování protokolu Netlogon Remote Protokol (MS-NRPC) a způsob, kterým se lze na základě jednoduchého útoku hrubou silou autentizovat vůči doménovému řadiči za libovolný stroj nacházející se v síti, včetně samotného doménového řadiče.
Protokol MS-NRPC je v prostředí AD používán k úkolům ohledně autentizace uživatelských a strojových účtů. Nejčastěji se jedná o přihlašování k serverům za použití NTLM protokolu, ale také například ke změně uživatelského hesla v doméně.
Zvláštností tohoto protokolu je, že nepoužívá klasické doménové autentizační mechanismy, jako například Kerberos, a místo toho využívá jiného postupu. Zjednodušeně, pro úspěšnou autentizaci si klient a server vymění náhodná čísla (challenges), které zkombinují s hashem uživatelského hesla, čímž je vytvořen společný šifrovací klíč. V momentě, kdy se klíč vygenerovaný klientem shoduje s klíčem vygenerovaným serverem je dokázáno, že klient zná uživatelovo heslo, a může tedy být autentizován.
Problém nastává ve způsobu, jakým je tvořen šifrovací klíč dokazující, že klient zná své heslo. Pro tvorbu klíče je použito šifrování AES v relativně obskurním módu CFB-8, který je ještě nesprávně použit, neboť vždy obsahuje inicializační vektor ve tvaru 16-bitů nul (Inicializační vektor je jedním z hlavních mechanismů zajišťujících správnou funkci tohoto druhu šifer, a musí být vždy náhodný). Během výzkumu se ukázalo, že tato chyba způsobuje, že s nulovým IV, pro náhodně zvolený šifrovací klíč, se v jednom ze zhruba 256 případů data obsahující pouze nuly zašifrují jako pouze nuly (viz obrázek).
Zranitelnost Zerologon spoléhá na tuto vlastnost, a obchází výpočet výzvy klienta, kterou požaduje server pro dokázání, že klient zná správnou hodnotu šifrovacího klíče vypočteného pro tuto relaci. Hodnota, kterou server požaduje, je vypočítána zašifrováním zvoleného náhodného čísla (které si volí klient v předchozím kroku autentizace) za použití šifrovacího klíče vygenerovaného na základě obou náhodných čísel (od klienta a serveru). Vzhledem k výše popisované chybě šifrování je tedy možné tuto odpověď podvrhnout, neboť v případě, že si klient zvolí své náhodné číslo ve tvaru samých nul, bude zašifrovaná hodnota pro průměrně 1 z 256 šifrovacích klíčů rovna řetězci nul.
Útočníkovi tedy stačí proces přihlašování opakovat zhruba 256krát, dokud k tomuto jevu nedojde, čímž je úspěšně autentizován a získává možnost provádět akce týkající se uživatelského účtu, jako je například změna hesla.
Pro úspěšné dokončení útoku je nutné zneužití druhé části zranitelnosti, týkající se RPC Podepisování a Pečetění zpráv. Tato vlastnost určuje, zda bude zbytek komunikace mezi serverem a klientem šifrovaný (za použití šifrovacího klíče získaného v předchozím bodě), nebo zda bude komunikace probíhat bez šifrování. Součástí autentizačního handshaku je ale hlavička určená klientem, která umožňuje tuto vlastnost vypnout, čímž je útočníkovi (který nezná šifrovací klíč, neboť samotné přihlášení provedl bez jeho znalosti zneužitím první části zranitelnosti Zerologon), umožněno bez omezení posílat další požadavky na server, a pokračovat až k celkové kompromitaci serveru změnou hesla pro doménového administrátora.
Oprava zranitelnosti
Pro zamezení zneužití zranitelnosti je nutné aplikovat bezpečnostní záplaty na všechny servery Windows Server 2008 a novější, dle informací dostupných na https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-1472.
Použité zdroje
- https://www.secura.com/pathtoimg.php?id=2055
- https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-1472
- https://www.trendmicro.com/en_us/what-is/zerologon.html
- https://nukib.cz/cs/infoservis/hrozby/1636-upozorneni-na-zranitelnost-zerologon/
- https://threatpost.com/zerologon-attacks-microsoft-dcs-snowball/159656/
- https://github.com/VoidSec/CVE-2020-1472
- https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/hijacking-a-domain-controller-with-netlogon-rpc-aka-zerologon-cve-2020-1472/
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1472
Mikuláš Hrdlička Cyber Security Specialist AEC a.s. |