Metasploit Framework

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 22.6.2006
Hodnocení/Hlasovalo: 1.81/59

Myslíte si, že je použití exploitů nad vaše síly? Myslíte si, že vyznat se v nepřeberném množství exploitů je nadlidský úkol? Omyl je pravdou. Po přečtení tohoto článku pro vás již práce s exploity nebude o nic složitější než...



Exploitům již byly na Internetu věnovány spousty různých článků, ale člověk, který se s nimi seznamuje poprvé, z těchto článků moc nezjistí. Tyto dokumenty se totiž často věnují popisu toho, co to vlastně exploit je, nebo jaké techniky se používají pro jejich tvorbu. Skoro nikde však nenarazíte na návod, jak správně exploity použít a tak často bez úspěchu svůj pokus přiučit se novým technikám v těchto místech končí. O exploitech si po těchto nezdařených pokusech při hledání, začne začátečník myslet, že jsou mu děsně vzdálené a že se práci s nimi snad nikdy nenaučí.
Patříte-li do tohoto okruhu lidí, kteří by se s exploity rádi naučili z jakéhokoliv důvodu pracovat a zatím nevíte kde začít, je tento článek určen právě vám. Existuje totiž řešení, pomocí kterého se stane správa exploitů a jejich využívání zcela banální záležitostí. Toto řešení se jmenuje Metasploit Framework a v tomto článku si jej přeblížíme tak, že jej zvládne použít opravdu každý.

Úvod

Projekt Metasploit Framework je na světě již několik let a v současné době je již ve verzi 2.6. Za dobu jeho života využily jeho služby již desetitisíce bezpečnostních analytiků, penetračních testerů, vývojářů exploitů, hackerů a sript kiddies. Všichni v tomto projektu vidí vynikající nástroj pro vývoj, testování, správu a užití exploitů. Project Metasploit Framework je Open Source a i když byl původně vyvinut pro Unixové systémy, je dnes k dispozici také pro operační systém Windows, kde běží v prostředí Cygwin.

Instalace

Ač by se mohlo zdát, že bude instalace na systému Windows obtížná vzhledem k využití prostředí Cygwin, je tomu právě naopak. Vývojářům se podařilo vytvořit instalaci, která provede uživatele instalací přesně tak, jak je na tomto systému zvyklý, přičemž se osekaná verze Cygwinu nainstaluje zcela nepozorovaně a uživatel si tak ani nemusí uvědomit, že pracuje v tomto prostředí. Na linuxových systémech probíhá instalace standardním způsobem (rozbalením instalačního souboru framework-2.x.x.tar.gz). No a teď se konečně dostáváme k odkazu na download tohoto software. Obě verze, jak pro Linux tak pro Windows je možné stáhnout ze stránek projektu
http://www.metasploit.com/projects/Framework/downloads.html

MSFConsole

Celý project je rozdělen do několika částí, přičemž mi se v tomto článku zaměříme na práci s hotovými exploity. Pracovat můžeme buď s příkazovou řádkou nebo s webovým rozhraním. Doporučil bych vám práci s příkazovou řádkou, protože ostatní části projektu webovým rozhraním nedisponují a bude proto lepší, když si tento způsob práce osvojíte hned zpočátku.



Dříve než si popíšeme práci s exploity, je potřeba abych trochu objasnil některé pojmy.
Exploit – Krátký program, který má za úkol využít známé chyby v programu. Exploit využije například přetečení zásobníku a přepíše návratovou adresu, která bude po našem útoku ukazovat na náš payload.
Payload – Kód, kterému je předáno řízení po zdárné exploataci. Tyto programy plní různé úkoly. Mohou na cílovém stroji otevřít naslouchající spojení na určeném portu, který bude vracet shell, mohou zapříčinit download souboru ze sítě a jeho následné spuštění nebo založení nového uživatelského účtu.


Metasploit Framework 2.6 obsahuje již v základní instalaci sadu neuvěřitelných 143 remotních exploitů a 75 payloadů, přičemž tuto sadu můžeme dále rozšiřovat o nové exploity a payloady stažené ze sítě nebo osobně vytvořené. Práci s příkazovým řádkem zahájíme spuštěním MSFConsole. Budeme přivítáni obrazovkou s logem Metasploit Frameworku a promptem msg>.

MSFConsole má do vínku dánu základní sadu příkazů, kterou je možné zobrazit příkazem help.
Teď si některé z nich představíme:
show exploit– pomocí tohoto příkazu získáme seznam všech dostupných exploitů.
show payloads – slouží pro výpis všech dostupných payloadů
info exploit nazev_exploitu– pomocí tohoto příkazu se můžeme dozvědět o určitém exploitu více informací. Patří mezi ně detaily o zranitelnosti včetně odkazů na další zdroje, seznam napadnutelných systémů a požadavky exploitu
info payload nazev_payloadu– u některých payloadů můžete tímto příkazem získat také bližší informace o zadaném payloadu
use nazev_exploitu– načte zvolený exploit a připraví prostředí pro práci s ním

Příkazy dostupné po zvolení exploitu příkazem use:
show options – zobrazí seznam proměnných, které jsou potřeba pro běh exploitu
show payloads – zobrazí seznam payloadů, které je možné s vybraným exploitem použít
show targets – zobrazí seznam systémů, proti nimž je možné zvolený exploit použít
show advanced – zobrazí další informace
set proměnná hodnota – přiřadí proměnné zadanou hodnotu
check – ověří zranitelnost cílového systému
exploit – spustí exploataci cílového systému

Prakticky

Protože vždy nejlépe pochopíme práci s novým programem tehdy, když si ukážeme jeho praktické využití, nebude taková ukázka chybět ani v tomto článku. Projdeme si tedy celý proces exploitace pěkně krok za krokem, přičemž budeme uvažovat, že jsme narazili na systém, na kterém běží IIS 4.0 SP4.

Nejprve si tedy příkazem show exploits vypíšeme seznam dostupných exploitů a očima jej prohlédneme, zda nenarazíme na nějaký exploit vhodný pro tento systém. Zjistíme, že můžeme zkusit například exploit s názvem iis40_htr. Tento exploit si tedy vybereme příkazem use iis40_htr. V tuto chvíli se nám změní prompt z msf> na msf iis40_htr>, čímž nás program informuje o práci s tímto exploitem. Pomocí příkazu show targets si vypíšeme seznam zranitelných systémů a když vidíme že náš cíl s SP4 je zranitelný, vybereme právě tuto možnost příkazem set TARGET 1. Nyní si příkazem show options vypíšeme seznam proměnných, které musíme nastavit. Vidíme, že tento exploit pracuje s proměnnými SSL, RHOST a RPORT. Pomocí příkazu set nastavíme jednotlivým proměnným hodnoty. Proměnná RPORT obsahuje implicitní port 25, který nám vyhovuje a měnit jej proto nebudeme. Do proměnné RHOST však příkazem set RHOST 127.0.0.1 vložíme ip adresu našeho cíle. Můžeme znovu použít příkaz show options a překontrolovat zadané hodnoty. V tuto chvíli musíme zvolit payload, který nám bude nejvíce vyhovovat. Vypíšeme si tedy příkazem show payloads seznam dostupných payloadů pro tento exploit a vybereme si win32_bind, který spustí naslouchající shell. Jeho výběr provedeme příkazem set PAYLOAD win32_bind čím dojde ke změně promptu z iis40_htr> na iis40_htr(win32_bind)>. Jména payloadů se mohou s každou novou verzí změnit, takže se doporučuje po každém upgradu tyto názvy překontrolovat. Nyní si znovu vypíšeme seznam proměnných příkazem show options a zjistíme, které proměnné využívá ke své činnosti payload. Vidíme, že to jsou proměnné LPORT a EXITFUNC, kterým již je přiřazena implicitní hodnota. Proměnná LPORT obsahuje číslo portu, na kterém bude po provedené exploataci naslouchat shell a proto si můžeme tuto hodnotu přizpůsobit pomocí příkazu set LPORT 1234 na jiný, pokud nám implicitní nastavení nevyhovuje. Proměnnou EXITFUNC se doporučuje neměnit, takže zde její význam nebudu rozpitvávat. Systém vždy zvolí implicitní hodnotu, která nejlépe vyhovuje, kdežto chyba při ručním zadání by mohla vést k nevyzpytatelnému chování cílového systému. Příkazem show advanced můžeme ještě překontrolovat pokročilá nastavení, která ale v tomto případě nejsou k dispozici.

Poznámka k proměnným:
Názvy proměnných je nutné psát velkými písmeny. Po změně exploitu dojde k odstranění hodnot proměnných z paměti a proto je někdy vhodné používat globálního prostředí. V takovém případě se ukládají hodnoty proměnných pomocí příkazu setg a uvolňují se příkazem unsetg. Aktuální globální prostředí je také možné uložit příkazem save na disk pro pozdější využití.


Nyní máme vše připraveno k provedení exploitace cílového systému. Některé exploity umožňují použití příkazu check, pomocí kterého můžeme ověřit zranitelnost na cílovém stroji. Můžeme tak zjistit zda byla chyba na serveru již opravena, či nikoliv. Vlastní útok spustíme příkazem exploit a po zdárném útoku se již můžeme radovat nad vzdáleným shellem.

Sami jste se tedy přesvědčili, že provést exploataci vzdáleného systému bylo přinejmenším hračkou a to jsem se ještě nezmínil o nástroji MSFWeb, který slouží k ovládání Metasploit Frameworku z webového rozhraní. Stačí pouze službu MSFWeb spustit a přihlásit se webovým prohlížečem na lokální adresu http://localhost:55555. Pak stačí jen pár kliknutí myší a dosáhneme stejného výsledku jako výše uvedeným způsobem s využitím příkazové řádky.



Aktualizace a přidávání nových exploitů

Aktualizaci Metasploit Frameworku je možné provést spuštěním nástroje MSFUpdate. Kromě nových vlastností tak získáte i nové exploity a payloady, o které je vždy nová verze obohacena.
Do sbírky exploitů můžete také přidávat nové exploity, které naleznete na Internetu. Stačí aby byl takový exploit kompatibilní s programem Metasploit Framework a my jej uložily pod správným názvem do adresáře s exploity. Ve Windows je tímto adresářem ..\home\framework\exploits. Takto přidaný exploit je okamžitě k dispozici a to i bez restartu programu, o čemž se můžeme přesvědčit příkazem show exploits.

Závěrem

Project Metasploit Framework je velice flexibilní a rozšířitelný. Obsahuje velké množství přídavných modulů pro práci s exploity, k jejich vývoji a testování. Někdy se tedy znovu setkáme u pokračování tohoto článku a zaměřili bychom se na tyto další možnosti, které nám Metasploit Framework nabízí.

V dnešní době, kdy se čas od oznámení zratitelnosti do zveřejnění exploitu zkrátil na pouhých sedm dní, je pomoc nástroje Metasploit Framework skutečně ohromná a já doufám, že vám předchozí řádky jasně ukázali jakou roli hraje v počítačové bezpečnosti pravidelná a včasná aktualizace…

.cCuMiNn.