Zerologon: Kritická zraniteľnosť Windows AD
Názov zraniteľnosti úzko súvisí s hlavným vektorom útoku, ktorý zraniteľnosť zneužíva – jedná sa o chybu v nastavení inicializačného vektoru (IV) pri šifrovaní správ Netlogon Remote Protokolu (MS-NRPC), vďaka čomu môže interný útočník šifrovanie úplne prelomiť a vydávať sa za ľubovoľný počítač v sieti.
Dopad zraniteľnosti je obrovský, v dôsledku čoho sa jej závažnosť v Common Vulnerability Scoring Systéme (CVSS) vyšplhala až na kritických 10 z 10. Jej úspešné zneužitie umožňuje útočníkovi, ktorý je schopný naviazať TCP spojenie s doménovým radičom (Domain Controller), eskalovať svoje privilégia až na úroveň doménového administrátora, čím dochádza k celkovej kompromitácii celej domény a všetkých systémov k nej pripojených. Vo väčšine prípadov (pokiaľ nie je doménový radič dostupný verejne z internetu) je útok možné uskutočniť iba z vnútornej siete, čím je šanca jeho zneužitia znížená.
V súčasnej dobe sa už internetom pohybuje niekoľko skriptov, ktoré úspešne zraniteľnosť zneužívajú (prevažne ako dôkazy konceptu), a na základe dát z niektorých honeypot systémov (systémov, ktoré sú úmyselne zraniteľné a prístupné z internetu, v prípade ktorých sú aktívne monitorované pokusy o ich zneužitie) už niekoľko hackerských skupín zraniteľnosť aktívne a automatizovane zneužíva v globálnej miere.
Microsoft oznámil dve záplaty opravujúce chybu, ktorá umožňuje túto zraniteľnosť. Prvá záplata bola vydaná 11. augusta 2020 a bola označená ako kritická. Táto záplata opravuje chybu, ktorá útok umožňuje a dovoľuje útočníkovi autentizovať sa ako ľubovoľný stroj v AD. Záplata by mala byť dostačujúcim spôsobom, na zamedzenie zneužitia chyby. Z tohto dôvodu veľmi odporúčame záplatu aplikovať a čo najskôr aktualizovať všetky doménové radiče.
Druhá záplata je plánovaná na začiatok budúceho roka, a zaoberá sa vlastnosťami protokolu RPC týkajúcich sa Podpisovaniu a Pečateniu RPC správ (RPC Signing and Sealing). Táto vlastnosť, nastavená hodnotou v hlavičke každej správy, určuje, či je komunikácia medzi klientom a DC šifrovaná. Jednoduchým nastavením hodnoty hlavičky na 0 môže útočník túto vlastnosť vypnúť a tým mu je umožnené posielať správy bez znalosti šifrovacieho kľúča. Táto záplata nie je kritická pre zamedzenie zraniteľnosti, pretože na jej zneužitie je nutné byť autentizovaný voči doménovému radiču, čo je už zamedzené prvou záplatou.
Technické detaily
Zraniteľnosť bola publikovaná v správe vydanej v septembri 2020 bezpečnostným výskumníkom Tomom Tervoortom v mene firmy Secura, ktorá popisuje nedostatky v implementácii šifrovania protokolu Netlogon Remote Protokol (MS-NRPC) a spôsob, ktorým sa dá na základe jednoduchého útoku hrubou silou autentizovať voči doménovému radiču za ľubovoľný stroj nachádzajúci sa v sieti, vrátane samotného doménového radiča.
Protokol MS-NRPC je v prostredí AD používaný k úlohám spojeným s autentizáciou užívateľských a strojových účtov. Najčastejšie sa jedná o prihlasovanie k serverom použitím NTLM protokolu, ale taktiež napríklad ku zmene užívateľského hesla v doméne.
Zvláštnosťou tohto protokolu je, že nepoužíva klasické doménové autentizačné mechanizmy, ako napríklad Kerberos, ale namiesto toho využíva iný postup. Zjednodušene, na úspešnú autentizáciu si klient a server vymenia náhodné čísla (challenges), ktoré skombinovaním s hashom užívateľského hesla vytvorenia spoločný šifrovací kľúč. V momente, keď sa kľuč vygenerovaný klientom zhoduje s kľúčom vygenerovaným serverom, je dokázané, že klient pozná užívateľove heslo a môže byť teda autentizovaný.
Problém nastáva v spôsobe, akým je tvorený šifrovací kľúč, ktorý dokazuje, že klient pozná svoje heslo. Na tvorbu kľúča je použité šifrovanie AES v relatívne obskúrnom móde CFB-8, ktorý je navyše aj nesprávne použitý, pretože vždy obsahuje inicializačný vektor v tvare 16-bitov núl (Inicializačný vektor je jedným z hlavných mechanizmov zaisťujúcich správnu funkciu tohto druhu šifier a musí byť vždy náhodný). V priebehu výskumu sa ukázalo, čo táto chyba spôsobuje. S nulovým IV pre náhodne zvolený šifrovací kľúč, v jednom zhruba z 256 prípadov, sa dáta obsahujúce iba nuly zašifrujú len ako nuly (viď. obrázok).
Zraniteľnosť Zerologon sa spolieha na túto vlastnosť a obchádza výpočet výzvy klienta, ktorý požaduje server na dokázanie toho, že klient pozná správnu hodnotu šifrovacieho kľúča vypočítaného pre prípad tejto relácie. Hodnota, ktorú server požaduje, je vypočítaná zašifrovaním zvoleného náhodného čísla (ktoré si zvolí klient v predchádzajúcom kroku autentizácie) za použitia šifrovacieho kľúča vygenerovaného na základe oboch náhodných čísel (od klienta a od servera). Vzhľadom k vyššie popisovanej chybe šifrovania, je možné túto odpoveď podvrhnúť. V prípade, že si klient zvolí svoje náhodné číslo v tvare samých núl, bude zašifrovaná hodnota pri 1 z 256 šifrovacích kľúčov, rovná reťazcu núl.
Útočníkovi stačí proces prihlasovania zopakovať zhruba 256krát, kým k tomuto javu nedôjde. Takto sa úspešne autentizuje a získava možnosť uskutočňovať akcie týkajúce sa užívateľského účtu, ako je napríklad zmena hesla.
Na úspešné dokončenie útoku je nutné zneužitie druhej časti zraniteľnosti, týkajúce sa RPC Podpisovania a Pečatenia správ. Táto vlastnosť určuje, či bude zvyšok komunikácie medzi serverom a klientom šifrovaný (za použitia šifrovacieho kľúča získaného v predchádzajúcom bode), alebo či bude komunikácia prebiehať bez šifrovania. Súčasťou autentizačného handshaku je hlavička určená klientom, ktorá umožňuje túto vlastnosť vypnúť, čím je útočníkovi (ktorý nepozná šifrovací kľúč, pretože samotné prihlásenie uskutočnil bez jeho znalosti zneužitím prvej časti zraniteľnosti Zerologon), umožnené bez obmedzenia posielať ďalšie požiadavky na server a pokračovať až k celkovej kompromitácii servera zmenou hesla pre doménového administrátora.
Oprava zraniteľnosti
Na zamedzenie zneužitia zraniteľnosti je nutné aplikovať bezpečnostné záplaty na všetky servery Windows Server 2008 a novšie, podľa informácií 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. |