Včera mi Michal Meravý (díky!) poslal super UAC bypass, trošku jsem to upravil na powershell a je to tu:
reg add hkcu\software\classes\mscfile\shell\open\command /d "cmd /c start powershell -NoExit" & eventvwr
nebo rovnou příklad zneužití
reg add hkcu\software\classes\mscfile\shell\open\command /d "cmd /c start powershell { 'chachá' | Out-File c:\uac-bypass.txt }" & eventvwr
Vo co gou? O UAC jsem tu už jednou hanlivě psal, že se jedná o "bezpečnostní" fíčuru pro domáčí uživatele. V podnikovém prostředí tak maximálně na to, aby to snížilo míru a frekvenci toho, jak si BFUčka dodrbávají počítače a kdo to pak musí pořád opravovat. Takže z mého pohledu o nic nejde. Ale líbí se mi to. Zrovna tahle metoda je prostě krásná, to se musí uznat.
Jak to funguje?
Od Windows 7 se UAC ve výchozím nastavení chová tak, že některé programy nevyžadují explicitní potvrzování čudlíkem, a přitom je systém rovnou spustí "elevated" (neboli "jako správce", neboli "as administrator"). To je případ různých systémových správcovských programů jako je control panel, nebo většina MMC konzolí (soubory s příponou .msc). A eventvwr.exe.
Zrovna tenhle eventvwr.exe je evidentně kamenem úrazu. Spustí se elevated a přitom sám v podstatě nic nedělá. Jenom spustí rovnou eventvwr.msc konzoli. A ta se spouští jen jako asociace .msc souboru.
Tento uac bypass tedy jen změní v uživatelském profilu asociaci .msc souboru z původního mmc.exe na powershell. A je to. Jakmile potom někdy spustíte eventvwr.exe, tak rovnou naskočí jako správce a spustí následně powershell už také jako správce.
Krásná ukázka exploitu, kterých bude nekonečně mnoho, pokud navrhnete nějaký software blbě. Dá se to fixnout? Ano, stačí opravit eventvwr.exe. Ale stejně bude dalších nekonečně moc cest. Stačí trošku hledat.
Pokud se jedná o pěknou historii různých UAC bypassů, tak se mrkněte sem - stránka UACMe - nabízí milión různých cest. Když si to pročtete, nabízí také seznam miliónu MS fixů, které každou tu cestu postupně opravují :-)
Jak se bránit?
Buď uživatelé nesmí být členem místní skupiny Administrators. Nebo můžete přepnout UAC tak, aby se to ptalo vždycky, když je to potřeba. To se provede buď v Group Policy, nebo lokálně v Local Security Policy:
Security Settings
Local Policies
Security Options
User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode
= Prompt for consent
Jednoduše - musíte to přepnout z výchozího Prompt for consent for non-Windows binaries na bezpečnější (ale otravnější) Prompt for consent.