Zrovna včera tu vznikla taková zajímavá otázka. O Group Policy Preferences jsem tu už párkrát psal (tu a tu). Jak určitě víte, uvnitř máte možnost nastavit tzv. Local Users. Dají se tím nastavovat různé parametry lokálních uživatelů. Vytvářet takové uživatele, nastavovat jim hesla a přidávat a odebírat je ze skupin:
Jak si můžete všimnout, tak se do dialogového okénka dá zadat heslo. A to je právě ta otázka bezpečnosti.
Kde a jak je to heslo uloženo?
Heslo je samozřejmě uloženo uvnitř toho Group Policy Objectu (GPO). Tedy na disku řadiče domény (domain controller, DC), ve sdíleném adresáři SYSVOL. Do tohoto adresáře má přístup (pro čtení), ve výchozím nastavení, každý ověřený uživatel.
Je možné se nějak podívat na obsah té politiky? Ano, stačí kliknout pravým tlačítkem a vybrat Display XML:
Z obrázků je vidět, že se jedná o obyčejný, textový, XML soubor. V něm vidíte atribut cpassword, ve kterém je zřejmě ono heslo. A vypadá to zašifrované. Ale to je jenom zdání, samozřejmě.
Zašifrované heslo?
Ano, to heslo je skutečně zašifrované pomocí AES. Ale to znamená, že existuje nějaké heslo (klíč), kterým je to šifrované. A tento klíč musí znát každý klient (Group Policy Preferences Client Side Extensions), který má tu politiku aplikovat.
Stačí tedy, aby se někdo s debugerem podíval na kód toho klienta a vytvoří k tomu dešifrovač. A to se taky stalo, samozřejmě :-) Tady si můžete stáhnout PowerShell skriptík, kterým se to údajně dá dešifrovat. Nezkoušel jsem, ale to je principiálně nepodstatné.
Jak zní tedy závěr? Je to opravdu tak nebezpečné?
Analýza rizik vám řekne, že to nebezpečné není
Nejprve si uvědomme, jakým jiným způsobem byste dosáhli kýženého výsledku. Máte třeba několik poboček. V každé pobočce bych rád pro všechny stanice stejného lokálního administrátora. Se stejným heslem. Jsou to desítky stanic, například.
Můžete tedy ty stanice obejít, ručně na každé účet vytvořit, a ručně z klávesnice to heslo zadat.
Jaké je riziko ručního řešení? Riziko je v tom, že na nějaké ze stanic je nainstalován software, nebo hardware, keylogger. Jaké je riziko, když to heslo útočník získá? Stane se lokálním administrátorem na všech stanicích se stejným heslem. Tedy v celé pobočce.
Na to, aby útoční keylogger nainstaloval, musel už předtím být lokálním adminem na té jediné stanici.
Takže attack vector pro ruční nastavení je - lokální administrátor jedné ze stanic získá přístup na všechny stanice v pobočce.
Jaké je riziko použití Group Policy Preferences?
Ve výchozím stavu to heslo může čísto kdokoliv, kdo má účet v doméně. Ale to jde přece omezit. Stačí na tom GPO použít Security Filtering podle obrázků:
Vytvoříte si skupinu, která obsahuje všechny stanice z dané pobočky. Ve vlastnostech GPO použijete tuto skupinu na Security Filteringu. Výsledek je vidět na Security tabulce adresáře GPO v SYSVOL.
Najednou ten GPO (a tedy to .XML) může číst už jenom ona skupina stanic. A tím tedy i její lokální administrátor.
Jaký je pak attack vector a riziko v případě použítí Group Policy Preferences a Security Filteringu? Stejný jako v případě ručního zadávání. Lokální administrátor na jedné ze stanic na pobočce může získat přístup na ostatní stanice z dané pobočky.
Tak to klidně používejte!