Spuštění programu bez práv správce a potlačení požadavku UAC. Zvýšení uživatelských oprávnění ve Windows Pokud selže zápis do souboru nebo registru, virtualizujte do umístění uživatele

Obecně jsou zde uvedeny způsoby, které nám pomohou dosáhnout cíle eskalace privilegií.

Výchozím bodem pro tento krátký článek je neprivilegovaný shell (účet). Možná jsme použili exploit nebo provedli útok a získali tento shell.

V podstatě v počátečním okamžiku nerozumíme stroji: co dělá, k čemu je připojen, jakou máme úroveň oprávnění nebo dokonce jaký je to operační systém.

Nejprve musíme získat informace, které potřebujeme, abychom pochopili, kde jsme a co máme:

Informace o systému | findstr /B /C:"Název OS" /C:"Verze OS"
Tento příkaz umožňuje určit, jak je z něj patrné, název a verzi OS. Můžete jej spustit bez parametrů, pak bude výstup příkazu úplnější, ale to nám stačí.

  • hostname - uživatelské jméno.
  • echo %username% - uživatelské jméno.
Dále se podívejme, jací uživatelé jsou stále na tomto hostiteli, a získejte podrobnější informace o vašem uživateli.
  • síťoví uživatelé – ostatní uživatelé
  • net user user1 - podrobné informace o uživateli, kde user1 je vaše uživatelské jméno.
Po obdržení informací o účtu se podíváme na informace o síťové interakci tohoto hostitele.

Nejprve se podívejme na dostupná rozhraní a směrovací tabulku.

  • ipconfig /all - informace o dostupných rozhraních.
  • tisk trasy - směrovací tabulka
  • arp -A - tabulka záznamů arp
Dále se podívejme na aktivní síťová připojení a pravidla brány firewall.
  • netstat -ano - aktivní síťová připojení.
-a - spuštění s tímto parametrem zobrazí všechna aktivní TCP spojení, stejně jako TCP a UDP porty naslouchající v systému;
-n - parametr umožňuje zobrazit aktivní TCP spojení s adresami a čísly portů;
-o - stejně jako předchozí přepínač zobrazuje aktivní TCP spojení, ale do statistik byly přidány procesní kódy, ze kterých již můžete přesně určit, která aplikace připojení využívá.
  • netsh firewall show state - stav firewallu
  • netsh firewall show config - konfigurace firewallu
Nakonec se krátce podíváme na to, co na napadeném hostiteli běží: naplánované úlohy, spuštěné procesy, spuštěné služby a nainstalované ovladače.

Schtasks /query /fo SEZNAM /v
Kde
/query - Zobrazí data o všech naplánovaných úlohách,
/fo SEZNAM - Výstup do seznamu.
/v – zobrazí podrobné informace o úloze.

Následující příkaz spojuje běžící procesy se spuštěnými službami.

Seznam úkolů/SVC
Kde,
/SVC - Zobrazení služeb pro každý proces.

Podíváme se také na seznam spuštěných služeb Windows.

Čistý start
Užitečné je také podívat se na informace o ovladačích napadeného systému.

DRIVERQUERY
Dále bych rád zmínil asi nejužitečnější příkaz Windows – wmic. Příkaz WMIC (Windows Management Instrumentation Command) se používá k získání informací o hardwaru a systému, správě procesů a jejich součástí a změně nastavení pomocí možností Windows Management Instrumentation (WMI). Dobrý popis.

Bohužel některé výchozí konfigurace systému Windows neumožňují přístup k WMIC, pokud uživatel není členem skupiny Administrators (což je opravdu dobrý nápad). Žádná verze XP neumožňovala přístup k WMIC z neprivilegovaného účtu.

Naproti tomu Windows 7 Professional a Windows 8 Enterprise umožňovaly uživatelům s nízkými oprávněními používat WMIC ve výchozím nastavení.

Jako obvykle - parametry programu:

Než půjdete dále, vyplatí se projít si informace, které jste shromáždili. Rovněž stojí za to věnovat pozornost záplatám nainstalovaným v systému, protože jakékoli informace o dírách v systému nám poskytnou další podporu pro zvýšení našich oprávnění. Číslo HotFix můžete použít k vyhledání chyb zabezpečení eskalace oprávnění.

Dále se podíváme na automatickou instalaci. Pokud je potřeba instalovat a konfigurovat velkou flotilu strojů, pak se technický personál zpravidla nebude přesouvat od stroje ke stroji, aby konfiguroval každý jednotlivě. Existuje několik řešení pro automatickou instalaci. Co tyto metody jsou a jak fungují, pro nás není tak důležité, ale důležité je, že ponechávají konfigurační soubory, které se používají pro proces instalace, obsahující mnoho důvěrných informací, jako je produktový klíč operačního systému a heslo správce. . Nejvíc nás zajímá heslo administrátora, kterým si můžeme navýšit oprávnění.

Obvykle se jedná o následující adresáře:

  • c:\sysprep.inf
  • c:\sysprep\sysprep.xml
  • %WINDIR%\Panther\Unattend\Unattended.xml
  • %WINDIR%\Panther\Unattended.xml
Vyplatí se ale zkontrolovat celý systém.

Tyto soubory obsahují hesla ve formátu prostého textu nebo kódování BASE64.
Příklady:

Sysprep.inf - heslo ve formátu prostého textu.

Sysprep.xml – heslo zakódované v base64.

"

Unattended.xml – heslo zakódované v base64.

U hostitelů připojených k doméně můžete také vyhledat soubor Group.xml, který obsahuje šifrované heslo AES256, které však lze dešifrovat, protože klíč je zveřejněn na msdn (https://msdn.microsoft.com/en-us/library/cc422924.aspx) a dalších zdrojích. Ale to v případě, že se použije politika vytváření lokálních uživatelů na hostitelích nebo například nastavení hesla pro lokálního Administrátora.

Mám to například zde:

Po otevření vyhledejte parametr „cpassword“.

Dále musíte tuto sekvenci dešifrovat. Používáme například CrypTool. Nejprve dekódujeme Base64.
Zvláštností Base64 je, že jeho délka musí být násobkem 4. Počítáme tedy bloky po 4, a pokud je v posledním bloku málo znaků, pak chybějící znaky doplníme znaky „=“.
Dostal jsem 2 "=".

Odstraníme přebytečné tečky oddělující znaky a získáme heslo.

Kromě Group.xml je zde několik dalších souborů předvoleb zásad, které mohou mít další sadu atributů „cPassword“:

  • Services\Services.xml
  • ScheduledTasks\ScheduledTasks.xml
  • Tiskárny\Printers.xml
  • Drives\Drives.xml
  • DataSources\DataSources.xml
Všichni však milujeme automatizovaná řešení, abychom se co nejrychleji dostali do cíle. Zde jsou dvě hlavní možnosti v závislosti na typu shellu/přístupu, který máme. Existuje modul metasploit, který lze spustit prostřednictvím vytvořené relace (https://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp) nebo můžete použít Get-GPPPassword, který je součástí PowerSploit .

Abychom to mohli použít, musíme zkontrolovat, zda jsou nastaveny oba klíče registru, a pokud ano, můžeme získat shell SYSTEM. Pojďme zkontrolovat:

Reg dotaz HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
Metasploit obsahuje speciální modul exploit/windows/local/always_install_elevated, který vytvoří MSI soubor se speciálním spustitelným souborem v něm vloženým, který je extrahován a spuštěn instalačním technikem se systémovými právy. Po spuštění soubor msi zastaví instalaci, aby zabránil registraci akce v systému. Pokud navíc spustíte instalaci s přepínačem /quiet, neuvidíte ani chybu.

Některé užitečné příkazy pro vyhledávání v systému:

Níže uvedený příkaz vyhledá v systému souborů názvy souborů obsahující určitá klíčová slova. Můžete zadat libovolný počet klíčových slov.

Dir /s *pass* == *cred* == *vnc* == *.config*
Při hledání konkrétních typů souborů podle klíčového slova může tento příkaz generovat velké množství výstupu.

Findstr /si heslo *.xml *.ini *.txt
Podobně lze dva níže uvedené příkazy použít k vyhledání klíčových slov v registru, v tomto případě „hesla“.

Reg dotaz HKLM /f heslo /t REG_SZ /s
reg dotaz HKCU /f heslo /t REG_SZ /s
V tuto chvíli již máme dost na získání systémového shellu. K dosažení požadovaného výsledku však existuje několik dalších útoků: podíváme se na služby Windows a oprávnění souborů a složek. Naším cílem je využít slabá oprávnění k eskalaci práv relace.

Budeme prověřovat mnoho přístupových práv, pomůže nám s tím accesschk.exe, což je nástroj od Microsoft Sysinternals Suite. Microsoft Sysinternals obsahuje mnoho skvělých nástrojů. Balíček lze stáhnout z webu Microsoft technet (https://docs.microsoft.com/ru-ru/sysinternals/downloads/sysinternals-suite).

Požadovanou úroveň oprávnění pro každou službu můžeme zkontrolovat pomocí accesschk.

Můžeme vidět oprávnění, která má každá uživatelská úroveň.

Accesschk dokáže automaticky zkontrolovat, zda máme přístup pro zápis do služby Windows s určitou uživatelskou úrovní. Obvykle jako uživatel s nízkým oprávněním chceme zkontrolovat "Uživatelé". Zkontrolujte, do kterých skupin uživatelů patříte.

C Název je služba Windows, například ssdpsrv (pro zobrazení všech služeb zadejte „*“)
-d Zpracovat pouze adresáře
-e Výstup pouze explicitně specifikovaných úrovní integrity (pouze Windows Vista)
-k Název je klíč registru, například hklm\software
-n Zobrazí pouze objekty, které nemají pravidla přístupu
-p Název je název nebo identifikátor procesu (PID), například cmd.exe (pro seznam všech procesů zadejte název jako „*“).
-q Vynechat název
-r Zobrazí pouze objekty, které mají přístup pro čtení
-s Rekurzivní zpracování
-v Tisk podrobných informací
-w Vypíše pouze objekty, které mají přístup pro zápis

Existuje také další zajímavý příkaz:

Autorunsc.exe -a | findstr /n /R "Soubor\ nenalezen"
Umožňuje najít záznam registru o souboru, který se spustil automaticky, ale již není v systému. Záznam by mohl zůstat, pokud byla například služba nesprávně smazána. Při každém spuštění se systém neúspěšně pokusí spustit tento soubor. Tuto situaci lze také využít k rozšíření vašich pravomocí. Místo tohoto souboru můžete jednoduše nahradit náš.

Za prvé: replikujeme výsledky příspěvku napsaného Parvezem z GreyHatHacker; „Zvýšení oprávnění využíváním slabých oprávnění složek“ (http://www.greyhathacker.net/?p=738).

Tento příklad je speciální případ únosu knihovny DLL. Programy obvykle nemohou fungovat samy o sobě, mají spoustu zdrojů, ke kterým se potřebují připojit (většinou dll, ale také vlastní soubory). Pokud program nebo služba načte soubor z adresáře, do kterého máme přístup pro zápis, můžeme toho zneužít ke spuštění shellu s oprávněními, pod kterými program běží.

Aplikace Windows obvykle použije předdefinované vyhledávací cesty k nalezení dll a zkontroluje tyto cesty v určitém pořadí. K únosu DLL obvykle dochází umístěním škodlivých knihoven DLL do jedné z těchto cest. Tento problém lze vyřešit poskytnutím aplikace s absolutními cestami k požadované dll.

Pořadí vyhledávání DLL:

  1. Adresář, ze kterého se aplikace spouští
  2. 32bitový systémový adresář (C:\Windows\System32)
  3. 16bitový systémový adresář (C:\Windows\System)
  4. Adresář Windows (C:\Windows)
  5. Aktuální pracovní adresář (CWD)
  6. Adresáře v proměnné prostředí PATH (systém pak uživatel)
Někdy se aplikace pokoušejí načíst dll soubory, které nejsou v počítači. To se může stát z několika důvodů, například pokud knihovnu dll vyžadují pouze některé zásuvné moduly nebo součásti, které nejsou nainstalovány. V tomto případě Parvez zjistil, že se některé služby Windows pokoušely načíst knihovny DLL, které ve výchozích instalacích neexistovaly.

Protože dll neexistuje, nakonec procházíme všemi cestami hledání. Jako uživatel s nízkými oprávněními máme malou šanci umístit škodlivý dll do položek 1-4, 5. Ale pokud máme přístup pro zápis do některého z adresářů, pak jsou naše šance na výhru velké.

Podívejme se, jak to funguje v praxi, pro náš příklad použijeme službu IKEEXT (IPSec IKE and AuthIP Key Modules), která se pokouší načíst wlbsctrl.dll.

Jakýkoli adresář v "C:\" poskytne přístup pro zápis ověřeným uživatelům, to nám dává šanci.

C:\Users\user1\Desktop> accesschk.exe -dqv "C:\Python27"
C:\Python27 Střední povinná úroveň (výchozí) RW BUILTIN\Administrators FILE_ALL_ACCESS RW NT AUTHORITY\SYSTEM FILE_ALL_ACCESS R BUILTIN\Users FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_AULETHTRAWREAD_READ.RON ověření uživatelé FILE_ADD_FILE FILE_ADD_SUBDIRECTORY FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE FILE_WRITE_ATTRIBUTES FILE_WRITE_EA DELETE SYNCHRONIZES
C:\Users\user1\Desktop> icacls "C:\Python27"
C:\Python27 BUILTIN\Administrators:(ID)F BUILTIN\Administrators:(OI)(CI)(IO)(ID)F NT AUTHORITY\SYSTEM:(ID)F NT AUTHORITY\SYSTEM:(OI)(CI)( IO)(ID)F BUILTIN\Users:(OI)(CI)(ID)R NT AUTHORITY\Authenticated Users:(ID)C NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(ID)C
F - plný přístup.
(OI) - dědičnost podle objektů.
(CI) - dědičnost po kontejnerech.
(IO) - pouze dědictví.
(NP) - zákaz šíření dědictví.
(I) - dědění oprávnění z nadřazeného kontejneru.

Než budete pokračovat, musíte zkontrolovat stav služby IKEEXT. V tomto případě vidíme, že je nastaveno na „AUTO_START“!

Sc qc IKEEXT
QueryServiceConfig SUCCESS SERVICE_NAME: IKEEXT TYPE: 20 WIN32_SHARE_PROCESS START_TYPE: 2 AUTO_START ERROR_CONTROL: 1 NORMÁLNÍ BINARY_PATH_NAME: C:\Windows\system32\svchost.exe -k netsvcs LOAD_ORDER_0IPKE_NAME: DISPLAY_NAME CIES: BFE SERVICE_START_NAME: LocalSystem
Nyní víme, že máme potřebné podmínky a můžeme vytvořit škodlivý dll a unést shell!

Používáme například Metasploit -> msfvenom.

Po přenesení evil.dll na náš cílový počítač, vše, co musíme udělat, je přejmenovat jej na wlbsctrl.dll a přesunout jej do „C:\Python27“. Jakmile je toto hotovo, musíme trpělivě čekat, až se počítač restartuje (nebo se můžeme pokusit restart vynutit) a získáme systémový shell.

Zkopírujte soubor evil.dll C:\Python27\wlbsctrl.dll
Poté zbývá jen počkat, až se systém restartuje.

V našem posledním příkladu se podíváme na naplánované úlohy. Popíšu princip, protože Případy každého mohou být jiné.

Najdeme proces, službu, aplikaci spuštěnou plánovačem úloh ze SYSTEM.
Zkontrolujeme přístupová práva ke složce, kde se nachází náš cíl.

Accesschk.exe -dqv "cesta_k_cíli"
Je zřejmé, že se jedná o vážný problém s konfigurací, ale co je ještě horší, je skutečnost, že jakýkoli ověřený uživatel (autentizovaný uživatel) má do této složky přístup pro zápis. V tomto příkladu můžeme jednoduše přepsat binární spustitelný soubor souborem vygenerovaným v metasploitu.

Lze dále kódovat.

Nyní zbývá pouze stáhnout škodlivý spustitelný soubor a přepsat jej ve složce spustitelných souborů. Jakmile je toto hotovo, můžeme snadno jít spát a získat systémovou úlevu brzy ráno.

Tyto dva příklady by nám měly poskytnout představu o zranitelnostech, které je třeba hledat při zvažování oprávnění k souborům a složkám. Naučit se všechny binární cesty pro služby Windows, naplánované úlohy a úlohy spouštění bude nějakou dobu trvat.

Na závěr pár tipů k používání accesschk.exe.

Najděte všechna slabá oprávnění pro složky na disku.

Accesschk.exe -uwdqs Users c:\ accesschk.exe -uwdqs "Ověření uživatelé" c:\
Najděte všechna slabá oprávnění pro soubory na disku.

Accesschk.exe -uwqs Users c:\*.* accesschk.exe -uwqs "Authenticated Users" c:\*.*
Vypadá to, že je to ono.

UAC(Řízení uživatelských účtů) je technologie řízení účtu, která se poprvé objevila v Windows Vista a starší. Tato technologie zabraňuje programům provádět akce, které vyžadují práva správce. Když program takové akce provede, jeho práce je pozastavena a uživateli se na chráněné ploše zobrazí okno s požadavkem (takže není možné programově stisknout tlačítko OK). Například pokud váš program potřebuje provést změny v klíči registru HKEY_LOCAL_MACHINE, pak bude potřebovat administrátorská práva.
K vyřešení tohoto problému můžete využít implementaci souboru manifestu do projektu, který operační systém načte a automaticky určí parametry nutné pro spuštění.
Zvažme zavedení souboru manifestu do aplikace " Formulář pro Windows" Chcete-li to provést, otevřete Visual Studio (v tomto příkladu je použita verze 2012) a vytvořte projekt " Formulář pro Windows" OTEVŘENO " Průzkumník řešení(Solution Explorer), který poskytuje organizovaný pohled na projekty a jejich soubory, přejděte do nabídky Pohled» - « Průzkumník řešení" Klikněte pravým tlačítkem na " Průzkumník řešení" podle názvu projektu a vyberte z kontextové nabídky, " Přidat» - « Vytvořit prvek...».

Otevře se nové okno " Přidávání nového prvku -..."vyhledejte prvek Visual C# s názvem" Soubor manifestu aplikace“, vyberte jej a klikněte na „ Přidat».

V " Průzkumník řešení"Budete mít novou položku s názvem souboru manifestu. Automaticky se také otevře v editoru kódu.

Chcete-li nakonfigurovat práva nezbytná ke spuštění aplikace, musíte určit úroveň zabezpečení a popsat prvek „ požadovanáExecutionLevel" Tento prvek nemá žádné podřízené prvky a má následující atributy:
1) Úroveň- Požadované. Nastavuje úroveň zabezpečení vyžadovanou aplikací. Pro tento atribut jsou k dispozici následující hodnoty:
  • jako Invoker- aplikace se spustí s právy nadřazeného procesu. To znamená, že pokud spustíte program z aplikace, která již běží s právy správce, bude mít automaticky stejná práva. Tento režim ve většině případů doporučuje společnost Microsoft. Tito. Jedná se o programy, které nevyžadují práva správce;
  • nejvyšší Dostupné— aplikace se spouští s vyššími právy, než má aktuální uživatel. Regedit.exe, Mmc.exe jsou spuštěny s těmito právy;
  • vyžadovatAdministrátora- jsou vyžadována plná administrátorská práva. Tito. vyžadováno pro aplikace, které nelze spustit bez práv správce.

Instalace aplikací " Klepněte jednou" je možné pouze s hodnotou "asInvoker". Jakákoli jiná hodnota instalaci neumožní.

2) uiAccess- Volitelné. Označuje, zda aplikace vyžaduje přístup k prvkům chráněného uživatelského rozhraní k implementaci funkcí usnadnění. Dostupné hodnoty" skutečný" A " Nepravdivé", výchozí hodnota je " Nepravdivé". Význam " skutečný" musí mít pouze podepsané aplikace a být spuštěn ze složek "\Program Files\" a "\windows\system32\". Většinou to není nutné.
Aby program při spuštění vyžadoval povýšení práv na administrátorskou úroveň, nahraďte atribut „ Úroveň" výchozí hodnota " jako Invoker"zapnuto" vyžadovatAdministrátora».

Vytvořte řešení stisknutím tlačítka " F6" Pokud jste vše udělali správně, v operačních systémech Windows Vista a starších se na ikoně spustitelného souboru programu objeví ikona štítu, která značí, že tento program vyžaduje zvýšení práv.

Chcete-li zkontrolovat oprávnění vaší aplikace, můžete použít níže uvedený seznam.
string s = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator) ? "Administrátor" : "Běžný uživatel"; Pokud máte konzolovou aplikaci, pak je princip fungování stejný.

Zvýšení oprávnění je možná jedním z klíčových bodů, na kterém závisí scénář dalšího pentestingu nebo útoku. Velmi často vše končí v této fázi, pokud není možné „rozšířit své síly“. Proto si dnes povíme něco málo o způsobech, které umožňují uživateli zvýšit svá oprávnění nejen správci, ale i systému.

Úvod

Eskalace oprávnění se v systémech Windows a Linux mírně liší. Ačkoli oba operační systémy nesou obvyklý počet zranitelností, výzkumníci poznamenávají, že plně opravený Windows server je mnohem běžnější než linuxový server, který byl aktualizován na nejnovější stav. Doba vydání záplat pro Windows je navíc často kratší, což dělá ze zvyšování oprávnění ve Windows poměrně zajímavý a ambiciózní úkol. Právě jí zasvětíme náš příběh.

Možnosti

Jaké příležitosti tedy máme, abychom ve světě Windows povstali? Za prvé, nedávno bylo v jádře operačního systému nalezeno dostatek zranitelností souvisejících s analýzou písem, což značně zjednodušuje proces eskalace oprávnění, pokud máte po ruce vhodný exploit. Pokud používáte Metasploit, stačí k získání systémového shellu pouze jeden příkaz. To vše však bude pravděpodobně úspěšně fungovat pouze v případě, že systém nebude kompletně opatchován. Pokud jsou na stroji nainstalovány všechny aktualizace, pak na rozdíl od Linuxu nebude možné najít binární soubory SUID a proměnné prostředí se obvykle nepředávají službám nebo procesům s vyššími oprávněními. Co nám ve výsledku zbývá?

Od admina po systém, aneb co každý zná

Obvykle, když přemýšlíte o eskalaci oprávnění, metoda, která vás okamžitě napadne, je použití plánovače úloh. Ve Windows můžete přidat úlohu pomocí dvou nástrojů: at a schtasks. Druhý spustí úlohu jménem uživatele, který úlohu přidal, zatímco první bude spuštěn jménem systému. Standardní trik, o kterém jste pravděpodobně slyšeli a který vám umožňuje spustit konzolu se systémovými právy:

Ve 13:01 /interaktivní cmd

Druhá věc, která mě napadá, je přidání služby, která spustí požadovaný soubor / provede příkaz:

@echo off @break off kořen názvu Cls echo Vytváření služby. sc create evil binpath= "cmd.exe /K start" typ= vlastní typ= interakce > nul 2>&1 echo Spouštění služby. sc start evil > nul 2>&1 echo Čeká se... ping 127.0.0.1 -n 4 > nul 2>&1 echo Odebírání služby. echo. sc smazat zlo > nul 2>&1

Třetí metodou je nahrazení systémové utility C:\windows\system32\sethc.exe například cmd. Pokud se poté odhlásíte a několikrát stisknete klávesu Shift, objeví se konzole se systémovými právy.

Co se týče automatizovaných metod, okamžitě mě napadne Metasploit a jeho getsystem. Alternativní možností je PsExec od Sysinternals (psexec -i -s -d cmd.exe).

Půjdeme jinou cestou

Všechny tyto metody mají společnou nevýhodu: jsou vyžadována oprávnění správce. To znamená, že eskalujeme oprávnění z privilegovaného účtu. Ve většině případů, když jste obdrželi administrátorská práva, máte spoustu možností, jak se posunout ještě výše. Není to tedy příliš obtížný úkol. Dnes si povíme o metodách eskalace oprávnění, které nevyužívají žádné 0day zranitelnosti, za předpokladu, že máme normální systém a účet běžného neprivilegovaného uživatele.

Honba za pověřeními

Jedním ze spolehlivých a stabilních způsobů, jak zvýšit oprávnění a prosadit se v systému, je získat hesla administrátorů nebo uživatelů s vyššími oprávněními. A nyní je čas vzpomenout si na automatickou instalaci softwaru. Pokud spravujete doménu, která zahrnuje velkou flotilu strojů, rozhodně nechcete chodit instalovat software na každý z nich ručně. A zabere to tolik času, že na žádné další úkoly nebude dost. Proto se používají bezobslužné instalace, které generují soubory obsahující administrátorská hesla v jejich nejčistší podobě. Což je prostě poklad pro pentestery i útočníky.

Bezobslužné instalace

V případě automatizované instalace zůstává na klientovi pro nás celkem zajímavý soubor Unattended.xml, který se obvykle nachází buď v %WINDIR%\Panther\Unattend\ nebo v %WINDIR%\Panther\ a může uložte heslo správce jako prostý text. Na druhou stranu, abyste získali tento soubor ze serveru, nepotřebujete ani žádné ověřování. Potřebujete pouze najít server „Windows Deployment Services“. K tomu můžete použít skript pomocný/scanner/dcerpc/windows_deployment _services z Metasploit. Přestože služba Windows Deployment Services není jediným způsobem, jak provádět automatizované instalace, soubor Unattended.xml je považován za standard, takže jeho objevení lze považovat za úspěch.

GPP

Soubory XML předvoleb zásad skupiny poměrně často obsahují sadu zašifrovaných přihlašovacích údajů, které lze použít k přidávání nových uživatelů, vytváření sdílených položek a tak dále. Naštěstí je metoda šifrování zdokumentována, takže můžete snadno získat hesla v jejich čisté podobě. Navíc tým Metasploit již udělal vše za vás – stačí použít modul /post/windows/gather/credentials/gpp.rb. Pokud vás zajímají podrobnosti, pak všechny potřebné informace najdete na tomto odkazu.

Uživatelská práva

Eskalace oprávnění je velmi často důsledkem nesprávně nakonfigurovaných uživatelských práv. Například když je uživatel domény místním správcem (nebo pokročilým uživatelem) na hostiteli. Nebo když jsou uživatelé domény (nebo členové doménových skupin) místními správci na všech hostitelích. V tomto případě opravdu nebudete muset nic dělat. Ale takové možnosti se moc často neobjevují.

AlwaysInstallElevated

Někdy správci umožňují běžným uživatelům instalovat programy sami, obvykle prostřednictvím následujících klíčů registru:

HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

HKCU\SOFTWARE\Policies\Microsoft\Window s\Installer\AlwaysInstallElevated

Říkají systému, že jakýkoli soubor MSI musí být nainstalován se zvýšenými oprávněními (NT AUTHORITY\SYSTEM). V souladu s tím můžete pomocí speciálně vytvořeného souboru opět provádět akce jménem systému a upgradovat svá oprávnění.

Metasploit obsahuje speciální modul exploit/windows/local/always_install_elevated, který vytvoří MSI soubor se speciálním spustitelným souborem v něm vloženým, který je extrahován a spuštěn instalačním technikem se systémovými právy. Po spuštění soubor MSI přeruší instalaci (voláním speciálně vytvořeného neplatného VBS), aby se zabránilo přihlášení akce do systému. Pokud navíc spustíte instalaci přepínačem /quiet, uživatel ani neuvidí chybu.

Chybí autostart

Často se stává, že systém uchovává záznam o souboru, který je třeba automaticky spustit, i poté, co samotný soubor již upadl v zapomnění. Možná byla některá služba odebrána nesprávně - neexistuje žádný spustitelný soubor, ale položka registru zůstává a pokaždé, když se systém neúspěšně pokusí spustit, naplní protokol událostí zprávami o selháních. Tuto situaci lze také využít k rozšíření vašich pravomocí. Prvním krokem je najít všechny takové osiřelé záznamy. Například pomocí nástroje autorunsc od Sysinternals.

Autorunsc.exe -a | findstr /n /R "Soubor\ nenalezen"

Poté, jak jste uhodli, už zbývá jen nějak vklouznout vašeho kandidáta na místo chybějícího souboru.

Kouzlo citátů

Ano, ano, uvozovky mohou nejen hrát krutý vtip v dotazech SQL, což umožňuje vkládání, ale také pomáhá zvýšit oprávnění. Problém je poměrně starý a je znám již od dob NT. Jde o to, že cesty ke spustitelným souborům některých služeb nejsou ohraničeny uvozovkami (například ImagePath=C:\Program Files\Common Files\Network Associates\McShield\McShield.exe) a v poli jsou mezery. cesta. V tomto případě, pokud útočník vytvoří soubor, který do systému přidá nové správce nebo provede nějaké jiné akce, a nazve ho C:\Program Files\common.exe , bude to při příštím spuštění služby běžné. exe, který bude spuštěn, a zbývající část cesty bude brána jako argument(y). Je jasné, že neprivilegovaný uživatel nebude moci do Program Files vložit nic, ale spustitelný soubor služby může být umístěn v jiném adresáři, to znamená, že uživatel bude mít možnost vložit svůj vlastní soubor.

Abyste mohli použít tuto techniku, musíte najít zranitelnou službu (která nebude používat uvozovky v cestě ke svému binárnímu souboru). To se provádí následovně:

Služba Wmic získá jméno, zobrazované jméno, cestu, startmode |findstr /i "auto" |findstr /i /v "c: \windows\\" |findstr /i /v """

Je pravda, že na XP to bude vyžadovat oprávnění správce, takže je lepší použít následující metodu: získat seznam služeb - dotaz sc , pak se podívat na informace pro každou službu - sc qc název_služby .

Vše podle plánu

Dalším mechanismem, který může pomoci zvýšit práva a na který se obvykle zapomíná, je plánovač úloh. Nástroj schtasks vám umožňuje přiřadit úkoly konkrétním událostem. Nejzajímavější jsou pro nás ONIDLE, ONLOGON a ONSTART. Jak názvy napovídají, ONIDLE se spustí pokaždé, když je počítač nečinný, ONLOGON a ONSTART - když se uživatel přihlásí, respektive když se spustí systém. Každé z událostí tak může být přiřazen samostatný úkol. Například, když se systém spustí, zkopírujte někde škodlivý binární soubor/keylogger/… a spusťte jej. Když se uživatelé přihlásí, spusťte výpis kreditních karet. Vše je zkrátka omezeno pouze vaší představivostí a daným úkolem.

Triky s oprávněními

Oprávnění k souborům jsou obvykle první obranou, která nám brání v eskalaci našich oprávnění. Bylo by lákavé jednoduše přepsat nějaký systémový soubor (například stejný sethc.exe zmíněný na samém začátku článku) a okamžitě získat systémová oprávnění. Ale to všechno jsou ve skutečnosti jen sny, máme povolení to číst, což nám nedává absolutně nic. Neměli byste však věšet nos, protože ani s povoleními nejde všechno tak hladce – i zde, stejně jako jinde, existují úskalí, jejichž znalost vám umožní udělat z nemožného možné.

Jeden ze systémových adresářů chráněných tímto mechanismem je zajímavý zejména z pohledu eskalace oprávnění - Program Files. Neprivilegovaným uživatelům je tam odepřen přístup. Někdy se však stává, že během procesu instalace instalátoři nesprávně nastaví oprávnění k souborům, což má za následek, že všichni uživatelé získají plný přístup ke spustitelným souborům. Co z toho vyplývá - už jste uhodli.

Dalším omezením je, že běžný smrtelník nesmí zapisovat do kořenového adresáře systémového disku. Například na XP však při vytváření nového adresáře v kořenovém adresáři disku skupina BUILTIN\Users obdrží oprávnění FILE_APPEND_DATA a FILE_WRITE_DATA (i když je vlastníkem složky správce):

BUILTIN\Users:(OI)(CI)R BUILTIN\Users:(CI)(zvláštní přístup:) FILE_APPEND_DATA BUILTIN\Users:(CI)(zvláštní přístup:) FILE_WRITE_DATA

Na „sedmičce“ se stane téměř to samé, povolení dostane pouze skupina AUTENTICOVANÍ UŽIVATELÉ. Jak se toto chování může stát problémem? Některé aplikace se pouze instalují mimo chráněné adresáře, což usnadňuje nahrazení jejich spustitelných souborů. K takovému incidentu došlo například u Metasploit Framework v případě jeho víceuživatelské instalace. Tato chyba byla opravena ve verzi 3.5.2 a nástroj se přesunul do Program Files.


Jak hledat takové adresáře/soubory

Nalezení adresáře s nesprávnými oprávněními je již polovina úspěchu. Nejprve jej však musíte najít. K tomu můžete použít následující dva nástroje: AccessChk a Cacls/ICacls. Chcete-li najít „slabé“ adresáře pomocí AccessChk, budete potřebovat tyto příkazy:

Accesschk.exe -uwdqs users c:\ accesschk.exe -uwdqs “Authenticated Users” c:\

Chcete-li vyhledat soubory se „slabými“ oprávněními, použijte následující:

Accesschk.exe -uwqs users c:\*.* accesschk.exe -uwqs “Authenticated Users” c:\*.*

Totéž lze provést pomocí Cacls/ICacls:

Cacls "c:\Program Files" /T | findstr Uživatelé

Triky se službami

Další možností, jak se posunout v systému nahoru, je využít chybné konfigurace a chyb služby. Jak ukazuje praxe, nejen soubory a složky, ale také služby běžící v systému mohou mít nesprávná oprávnění. K jejich odhalení můžete použít nástroj AccessChk od známého Marka Russinoviče:

Accesschk.exe –uwcqv *

Bude velmi povzbudivé vidět oprávnění SERVICE_ALL_ACCESS pro ověřené uživatele nebo pokročilé uživatele. Za velký úspěch lze ale považovat i následující:

  • SERVICE_CHANGE_CONFIG - můžeme změnit spustitelný soubor služby;
  • WRITE_DAC - oprávnění lze změnit, což vede k získání oprávnění SERVICE_CHANGE_CONFIG;
  • WRITE_OWNER - můžete se stát vlastníkem a měnit oprávnění;
  • GENERIC_WRITE - zdědí oprávnění SERVICE_CHANGE_CONFIG ;
  • GENERIC_ALL – zdědí oprávnění SERVICE_CHANGE_CONFIG.

Pokud zjistíte, že jedno (nebo více) z těchto oprávnění je nastaveno na neprivilegované uživatele, vaše šance na eskalaci vašich oprávnění se dramaticky zvýší.

Jak zvýšit?

Řekněme, že jste našli vhodnou službu, je čas na ní zapracovat. S tím vám pomůže konzolový nástroj sc. Nejprve získáme úplné informace o službě, o kterou máme zájem, řekněme, že je to upnphost:

Sc qc upnphost

Pojďme to nakonfigurovat pomocí stejného nástroje:

Sc config vulnsrv binpath= "net user john hello /add && net localgroup Administrators john /add" type= interact sc config upnphost obj= “.\LocalSystem” password=“”

Jak vidíte, při příštím spuštění služby se místo jejího spustitelného souboru provede příkaz net user john hello /add && net localgroup Administrators john /add, čímž se do systému přidá nový uživatel john s heslem hello. Zbývá pouze ručně restartovat službu:

Net stop upnphost net start upnphost

To je celé kouzlo.

jaký je výsledek?

Kdysi dávno jsem četl článek v časopise, který nastínil základní techniky eskalace oprávnění ve Windows. Tehdy jsem tomu nepřikládal velký význam, ale teorie mi utkvěla v hlavě a kdysi mi hodně pomohla. Doufám tedy, že v tomto článku pro sebe najdete něco nového, co vám jednoho dne pomůže překonat další bariéru.

Dnes budeme hovořit o eskalaci oprávnění Windows. Dozvíte se, jak může útočník eskalovat oprávnění a jak se před tím chránit.

Veškeré informace slouží pouze pro informační účely. Redakce stránek ani autor článku nenesou odpovědnost za jeho nesprávné použití.

Zvýšení oprávnění s BeRoot

Většina metod zvyšování oprávnění je spojena s chybami v konfiguraci nainstalovaného softwaru, ať už jde o cestu ke spustitelnému souboru služby, neobklopenou uvozovkami a obsahující mezeru (tuto situaci řeší Windows docela zajímavě), nebo nesprávně nastavit práva k adresáři s aplikací.

Člověk je tvor líný a nechce tohle všechno pokaždé ručně kontrolovat. Proto se dříve nebo později musel objevit nástroj, který by tuto rutinu zautomatizoval.

Sekundární přihlašovací rukojeť

Další zajímavý trik zahrnuje použití služby Sekundární přihlášení. Tato služba vám umožňuje spouštět programy, konzoly Microsoft Management a prvky ovládacího panelu jako správce, i když aktuální uživatel patří pouze do skupiny Users nebo Power Users. Jde o to, že tato služba nečistí kliky při vytváření nových procesů.

Pro nás je důležité, že téměř všechny verze Windows (x32 a x64) jsou náchylné k této chybě zabezpečení: od Vista po Windows 2012 Server. Existují však také omezení: pro úspěšné eskalování oprávnění musí mít systém nainstalovaný PowerShell 2.0 nebo vyšší a také dvě nebo více jader CPU. Metasploit Framework má speciální modul exploit/windows/local/ms16_032_secondary_logon_handle_privesc.

Jeho použití znamená, že již máme relaci meterpreter, kterou musíme specifikovat v parametrech: nastavte SESSION 1. No, v případě úspěšného využití budeme mít další relaci se zvýšenými oprávněními.

\ pentestlab > seznam wmic qfe | najít "3139914"

Závěr

Bez ohledu na to, jak moc se snažím vměstnat všechny možné možnosti navýšení privilegií do jednoho článku, to pravděpodobně nepůjde, nebo článek naroste do obřích rozměrů a stane se pro vás nezajímavým. Takže je čas to nazvat den. O ochraně si povíme v samostatném článku.