Opět tu máme novou zranitelnost, která se objevuje u všech serverů Windows – chyba v autentifikaci pomocí protokolu Kerberos….
Útoky umožněné chybou Bronze Bit jsou rozšířením dalších známých útoků, které vycházejí z delegování protokolu Kerberos. Bronze Bit exploit obchází dvě možné mitigace stávajících útočných cest, což zvyšuje jejich účinnost a univerzálnost. Útočník nyní může provádět následující:
Útok: Při standardní konfiguraci DC se přihlásíme se na server Service1 jako User1. To simuluje získání opory v prostředí (krok č. 1 v útočné cestě). Spustíme relaci PowerShellu a potvrdíme, že uživatelé User1 a Service1 nemohou aktuálně přistupovat k Service2 na základě své vlastní autorizace. Pokračujeme krokem 2 cesty útoku: získání hash pro Service1. V tomto scénáři použijeme program secretsdump.py společnosti Impacket k získání hash AES256-CTS-HMAC-SHA1-96 a LM: NTLM pro účet stroje Service1. Po získání potřebných hashů se nejprve pokusíme spustit program getST.py bez příznaku -force-forwardable. To selhalo podle očekávání. Jak již bylo řečeno, výměna S4U2self stále vrací servisní lístek na Service1 pro uživatele2, ale příznak tohoto lístku není nastaven z důvodu omezení delegování služby a ochrany uživatele před delegováním. To způsobí chybu, když je lístek použit jako důkaz na výměně S4U2proxy. To je okamžik, na který všichni čekáme: spustíme exploit! Toto je krok č. 4 naší cesty útoku. Zopakujeme předchozí příkaz, ale tentokrát včetně argumentu příkazového řádku -force-forwardable.
Použitím příznaku -force-forwardable se exploit provede automaticky a převede servisní lístek přijatý z výměny S4U2self na předatelný lístek. To se provádí dešifrováním tiketu pomocí hash služby Service1, změnou druhého bitu v hodnotě příznaků z 0 na 1 a opětovným zašifrováním tiketu. Tento předatelný lístek je odeslán na burze S4U2proxy a servisní lístek pro Service2 jako User2 je vrácen a zapsán na disk v User2.ccache.
Dále použijeme Mimikatz k načtení servis ticketu do naší cache ticketů pro použití. Po načtení uvidíme, že Mimikatz potvrzuje, že se jedná o platný lístek pro User2 do služby cifs Service2.
Se service ticketem přidaným do naší cache nyní můžeme přistupovat k Service2, jako bychom byli User2. Ve službě Service2 máme veškerá oprávnění uživatele User2. K získání relace PowerShell na serveru Service2 použijeme PSExec od Marka Russinoviche a spustíme některé příkazy. Toto je náš poslední krok č. 5 cesty útoku.
Překlopili jsme bity a zneužili jsme delegování Kerberos k eskalaci našich privilegií a kompromitování jiné služby vydáváním se za chráněného uživatele.
Nová oprava protokolu Kerberos bude k dispozici v únoru 2021. Přidá podporu pro hodnotu registru PerformTicketSignature , která umožňuje ochranu serverů řadičů domény služby Active Directory. Ve výchozím nastavení tato hodnota neexistuje. Aktualizace bude ve dvou režimech. Zmírnění a vynucení. Fáze vynucení vynutí změny adresy CVE-2020-17049. Řadiče domény služby Active Directory teď můžete mít v režimu vynucení. V režimu vynucení vyžaduje, aby všechny řadiče domény služby Active Directory měly nainstalovanou aktualizaci, 2020 nebo novější verzi systému Windows. V současné době se nastavení klíče registru PerformTicketSignature ignorují a režim vynucení nelze přepsat.
Před instalací této aktualizace musíte mít nainstalované tyto požadované aktualizace. Pokud používáte Windows Update, budou tyto požadované aktualizace nabídnuty automaticky podle potřeby.
Po instalaci těchto požadovaných aktualizací je nutno restartovat zařízení.