Penetrační testování serverů

Penetrační testování

Penetrační testování (označované také jako pen testing) je taktika testování počítačových systémů, sítí nebo webových aplikací vedoucí k nalezení bezpečnostních mezer a slabin, které mohou být zneužity útočníky.

Hlavním cílem penetračního testování je nalezení a odhalení slabin testovaného systému. Testy mohou být použity rovněž na testování pravidel bezpečnosti organizace a zjištění reakční doby a následné schopnosti zaměstnanců reagovat na případný bezpečnostní incident. Díky tomu, že se v průběhu penetračního testování osoba či firma, která test provádí, snaží dostat do testovaného systému, je nutné rozlišovat pojem hacking a etický hacking. Ministerstvo vnitra České republiky definuje hacking jako:

„Neoprávněný průnik do konkrétního informačního systému, provedený zvnějšku, zpravidla ze vzdáleného počítače. Samotný průnik je podmínkou pro další neautorizovanou činnost v rámci cílového systému.“

Etický hacking by mohl být klasifikován jako synonymum pro penetrační testování. Společnost, která testování provádí, je oprávněna tuto činnost provádět na základě smlouvy uzavřené se společností zadavatele.

Během samotného penetračního testování získává etický hacker řadu důležitých a citlivých informací, jako jsou hesla do systémů, emailové komunikace vedení, tajné dokumenty a další skutečnosti, které by mohly společnost poškodit. Účelem penetračního testování tedy rozhodně není nabourání se do zákazníkova systému se záměrem získat jeho data či hesla. Testování by zákazníkovi mělo především ukázat, jak by takový útok mohl provádět skutečný hacker2 a k jakým datům by se za stávajících podmínek dostal.

Samotný proces penetračního testování

Celý proces jakéhokoliv bezpečnostního testování je v zásadě jednoduchý. Prozkoumáte svůj cíl, naleznete jeho chyby, ty následně zneužijete pro získání přístupu do systému a nakonec se o výsledky testů podělíte se zákazníkem. V této kapitole se pokusím objasnit, jaké typy penetračního testování existují a co znamená pojem „virtuální laboratoř“.

Typy penetračních testů

V současné době je využíváno několika typů penetračních testů, z nichž každý může být použit buď samostatně, nebo společně s dalším typy. Hlavní dělení je na externí a interní penetrační testy.

Externí penetrační testy

Jsou zaměřeny na prověření stupně zabezpečení prvků a služeb dostupných z vnějšího prostředí, z internetu. Testy se orientují hlavně na oblast bezpečného připojení k internetu a ověřují správnou konfiguraci nabízených služeb. Cílem externích testů je důkladná prověrka bezpečnostního nastavení a ověření zranitelnosti nástrojů staršími i novějšími druhy elektronických útoků.

Interní penetrační testy.

Při testech je simulován útok běžného neprivilegovaného uživatele z interní sítě (např. zaměstnance), který usiluje o neoprávněný přístup k datům uloženým prostřednictvím firemních informačních systémů. Testy prověří fungování vnitřních bezpečnostních mechanizmů, které by měly chránit firemní systémy a data před neoprávněnými přístupy ze strany běžných uživatelů. Neoprávněné přístupy mohou být jak úmyslné (např. získání citlivých dat za účelem jejich prodeje), tak neúmyslné (např. chyba v implementaci systému). V rámci interních penetračních testů lze provést následující doplňkové testy:

o testování síly vybraného vzorku uživatelských hesel.

o testování funkčnosti implementovaných antivirových a antispamových systémů.

o odposlech síťového provozu na interní síti – analýza datových toků, protokolů apod.

Testy webových aplikací

Jde o skupinu testů mající za cíl ověřit úroveň zabezpečení přístupu k vybraným webovým aplikacím, které jsou dostupné ze sítě Internet (z pozice hackera) nebo z interních sítí zákazníka (z pozice oprávněného uživatele). Specialisté prověřují odolnost aplikací vůči nejčastějším útokům a hrozbám, jež mohou přijít ze sítě Internet nebo z interní sítě.

U výše zmíněných typů penetračních testů dále rozlišujeme stupeň znalosti testovaného systému a informovanost zainteresovaných osob (správci sítě, administrátoři) o prováděných penetračních testech.

Penetrační test s omezenou nebo nulovou počáteční znalostí o testovaných systémech a prostředí zákazníka je označován jako tzv. black box testing. Představuje plnohodnotnou simulaci útoku hackera, který informace získává pouze na základě výsledků vlastního průzkumu nebo z veřejně dostupných zdrojů.

Penetrační test s plnou počáteční znalostí o testovaných systémech a prostředí zákazníka je pak označován pojmem white box testing. V tomto případě předchází samotné realizaci penetračního testu podrobné seznámení specialistů s prostředím a testovanými systémy

Takto lze rozlišovat testy z hlediska úrovní znalostí osoby, která se snaží do systémů proniknout. Následující odstavce naopak pojednávají o rozdělení testů z hlediska úrovní znalostí osoby či organizace, která by měla útok odhalit.

V rámci skrytého penetračního testu jsou o testování informovány pouze vybrané osoby mimo pracovníky IT, kteří se o testované systémy starají. Cílem tohoto typu testu je mimo jiné zjištění reakce administrátorů na průběh samotného testování (reakce na potenciální útok).

Posledním typem je tzv. otevřený penetrační test. Administrátoři testovaných systémů jsou v tomto případě informováni o probíhajícím testování a může při něm být využita jejich spolupráce. Administrátoři si rovněž mohou ověřit fungování implementovaných monitorovacích a bezpečnostních nástrojů.

Vytvoření testovací laboratoře

Vzhledem k tomu, že v současnosti existuje mnoho různých operačních systémů, vytvoření testovací laboratoře je opravdu důležité, jelikož každý operační systém má svoje bezpečnostně slabá místa. Jestliže se chystáte testovat operační systém Windows, budete muset mít připraveny různé edice operačního systému s různými service packy a počtem záplat. Dá se říci, že každý takovýto počítač bude jenom čekat na váš testovací útok. Není nezbytně nutné pro každý operační systém kupovat jeden fyzický počítač, ale můžete využit metod virtualizace, která vám dovolí na jednom fyzickém serveru spouštět více virtuálních počítačů. Pokud už virtuální počítač nebudete potřebovat, můžete ho bez problémů ze serveru odstranit nebo obnovit jeho stav do výchozího za předpokladu, že jste si udělali výchozí snímek virtuálního počítače. Touto metodou ušetříte prostor, čas i peníze a vše lze navíc dělat z jednoho místa.

Metodiky penetračního testování

Průběh penetračního testování by měl vždy podléhat předem stanoveným metodikám a postupům. Jedině tak je možné provádět jej komplexně a bez zbytečných opomenutí. Ani tyto metodiky bychom však neměli brát jako hotový a neměnný návod, který je nutné bez výjimky dodržet. Naopak je vhodné doplnit je o vlastní poznatky a přizpůsobit potřebám konkrétního testování.

Ve své práci budu vycházet z metodiky Information systems security assessment framework ve verzi 0.2.1 (ISSAF 0.2.1, kterou vydala Open Information systems security group), jenž je volně dostupná na webu. Tato obsáhlá metodika (1125 stran) obsahuje samostatnou část věnující se přímo penetračnímu testování.

Výše zmíněná metodika ISSAF se soustředí na obecný popis postupu pro penetrační testování s cílem postihnout a popsat co nejvíce slabin cílových síti. Není možné a ani žádoucí, aby metodiky postihly všechny situace, se kterými se člověk během testování může setkat. Právě proto je nutné v jeho průběhu improvizovat a vytvářet si vlastní postupy.

Obecná úroveň podle metodiky ISSAF obsahuje následující fáze, které by měly postihnout celý životní cyklus penetračního testování. Metodika rozeznává následující fáze:

1. Plánování (planning and preperation)

2. Analýza (assessment)

3. Eliminace rizika

4. Pověření

V následujících kapitolách budu vycházet z již zmíněně metodiky ISSAF. Zaměřím se pak především na její druhou fázi (assessment).

Plánování testů

Jakmile sestavíte tým, který bude testování provádět, můžete přistoupit k podrobnému plánování testů. V kooperaci se zákazníkem by měl být vytyčen časový plán, v rámci kterého bude testování předem definovaných systémů probíhat. Příprava časového plánu pomůže předejít situacím, kdy například v poslední den testování zpracovatel zjistí, že dosud byla otestována pouze půlka požadovaných systémů

Již během prvního setkání se zákazníkem by mu měly být vysvětleny jednotlivé kroky, které budou v rámci testování probíhat. Je žádoucí, aby je zadavatel dobře pochopil, z toho důvodu může být přínosem také účast dalších zainteresovaných osob (např. administrátora) na schůzce. Samotné testování může probíhat v řádu několika týdnů, ale jsou i testování trvající několik měsíců. Zákazník by měl předem určitě vědět, kdy může výsledky testů očekávat.

Analýza (assessment)

V rámci této fáze se již dostáváme k samotnému penetračnímu testování zákaznického systému, infrastruktury. Metodika ISSAF vytvořila model o devíti krocích, který by měl vést až k úplné kompromitaci systému a odhalení všech bezpečnostní slabin. Čím dále v hierarchii postupujeme, tím hlouběji se do systému dostáváme. Grafické znázornění modelu zachycuje obrázek 1.

Tento testovací model vypadá následovně:

1. Sběr informací (Information Gathering)

2. Mapování sítí (Network Mapping)

3. Identifikace bezpečnostních slabin (Vulnerability Identification)

4. Průnik do infrastruktury (Penetration)

5. Získání přístupu a vystopování přístupových oprávnění (Gaining Access & Privilege Escalation)

6. Hlubší průzkum (Enumerating Further)

7. Kompromitace vzdálených uživatelù (Compromise Remote Users/Sites)

8. Zajištění stabilního přístupu (Maintaining Access)

9. Zahlazení stop (Covering Tracks)

Sběr informací

Po fázi plánování testů následuje průzkum a sběr informací. Cílem tohoto kroku je získat co nejvíce informací o potenciálním cíli bez předchozí znalosti jakýchkoliv údajů. Je mnoho způsobů, které lze pro sběr informací využít, počínaje běžnými vyhledávači, které usnadní získat základní informace o společnosti, její struktuře či sídlech. Dalšími používanými databázemi jsou ARIN5 , RIPE6 , APNIC7 , pomocí kterých je možné získat přehled o jmenných serverech společnosti, DNS8 záznamy, jež pomohou zjistit název potenciálních serverů společnosti. V neposlední řadě lze díky těmto databázím získat informace o vlastnících domény, které mohou posloužit jako potenciální uživatelské jména. Ta můžeme následně podrobit slovníkovému útoku a v úspěšném případě získat heslo, pomocí něhož se dostaneme do vnitřní sítě. Všechny tyto kroky jsou v současnosti již automatizovány a uživatel má možnost použít nespočet freeware programů, které prohledávání databází udělají za něj. Stačí zadat název zkoumané domény a během chvilky máte k dispozici textový soubor s přehlednými výsledky. Jeden z těchto programů se jmenuje DMITRY9 od Jamese Greiga.

Mapování sítí

Jakmile získáme dostatek informací z dostupných informačních zdrojů, lze přejít k další fázi. Ta je oproti sběru informací zaměřena více technicky. Výsledkem této fáze by mělo být získání skutečné představy o fyzickém rozložení sítě, o službách, které se v dané síti nacházejí, a v neposlední řadě o používaném hardwaru a softwaru.

Fáze mapování sítí v sobě zahrnuje následující činnosti:

• Nalezení aktivních prvků

• Skenování portů a služeb

• Identifikace aktivních prvků (routery, firewally)

• Identifikace kritických služeb

• Identifikace operačního systému

V rámci této fáze lze použít některý z množství programů, které tyto činnosti podporují. Mezi ně můžeme zařadit programy Paketo Keretsu, EtterCap, Nmap, k nimž se blíže vrátím v průběhu následujících kapitol.

Identifikace bezpečnostních slabin

 

Tato část by mohla a měla být považována za jednu z nejdůležitějších, neboť právě zde bychom měli správně identifikovat, jakými způsoby se do testovaného systému lze dostat. Jde o fázi, která je z větší části automatizována za pomoci systémů, které v sobě mají obsaženu databázi již známých bezpečnostních chyb. Základní kroky pro provádění této fáze jsou následující:

1. Identifikace falešných pozitivních/negativních výsledků

2. Sepsání jednotlivých zranitelností

3. Klasifikace závaznosti zranitelnosti

4. Návrh využití zranitelností pro průnik do systému a sestavení scénáře průniku.

Do skupiny nástrojů podporující tuto fázi se řadí Metasploit, Nessus. V praktické části budu využívat program Mestasploit Express od společnosti Rapid7.

Průnik do infrastruktury

V momentě kdy zjistíme, jaké bezpečnostní slabiny systém uvnitř skrývá, nezbývá už nic jiného, než se pokusit o průnik do infrastruktury za pomoci potřebných nástrojů. Do této skupiny patří Metasploit Express nebo Core Impact od společnosti Core Security.

Tento proces může být rozdělen do následujících kroků:

1. Nalezení nástroje, který dokáže zneužít nalezenou zranitelnost

• Pokud se takový nástroj nachází někde na internetu, měli bychom ho nejdříve otestovat v isolovaném (virtuálním) prostředí, abychom předešli tomu, že nástroj bude mít nečekané dopady.

2. Vyvinutí nástroje

• V některých případech bude rychlejší a efektivnější si potřebný nástroj vyvinout.

3. Testování nástroje

4. Využití nástroje k průniku

5. Sepsání dokumentace

• V dokumentu by měl být obsažen detailní popis toho, jakým způsobem k průniku došlo, přes jakou bezpečnostní chybu a také důkaz o existenci chyby.

Získání přístupu a vystopování přístupových oprávnění

V této části testování bychom se měli pokusit o získání přístupu k systémům od nejnižší úrovně až po nejvyšší chráněné systémy.

Metodika definuje následující kroky:

1.     Získaní neprivilegovaného přístupu

• Uhádnutí uživatelských jmen a hesel (slovníkový útok)

• Zjištění prázdných, nebo výchozích hesel pro systémové účty

2. Kompromitace

3. Cílová kompromitace

Hlubší průzkum

Jakmile máme síť pod kontrolou, postupujeme dále tím, že se budeme snažit o následující:

• Sbírání emailových adres

• Získávání zašifrovaných hesel, které se později pokusíme off-line dešifrovat

• Za pomoci nainstalovaných snifferu se pokusit získat další hesla

Kompromitace vzdálených uživatelů

V případě, že jsme úspěšně provedli předcházejících šest kroků, můžeme se pokusit o rozšíření útoku i na uživatele, kteří se připojují na servery pomocí VPN.

Zajištění přístupu

Vzhledem k tomu, že je tato část využívána během penetračního testování velice zřídka, nebudu se jí ani já v této práci blíže zabývat. Ve stručnosti jde o to, že útočník na systém, který napadl, nainstaluje nějaký program, jenž bude nezjistitelný, a s jeho pomocí bude mít trvalý přístup do sítě.

Zahlazení stop

Obdobně jako přecházející fáze, také zahlazení stop se během penetračního testu využívá jenom zřídka. Pokud však nastane situace, při níž budeme muset zahladit stopy, je nezbytné, abychom si všechny logy vytvořené v průběhu testování někam zálohovali a díky nim následně mohli vytvořit výslednou zprávu pro zákazníka.

Pouze ve stručnosti jsou níže naznačeny kroky, které tato fáze obsahuje:

• Skrývání souborů

• Vyčištění logů

• Narušení kontroly integrity

• Narušení antivirového programu

Zhodnocení výsledků

Zákazník by měl po skončení testování obdržet minimálně tyto výstupy:

1. Verbální zpráva

Pokud během penetračního testování narazíme na nějakou chybu, kterou by útočník mohl okamžitě využít, je nezbytné o tom informovat pověřenou osobu

2. Závěrečná zpráva

Jakmile testování dokončíme, měli bychom pro zákazníka vytvořit přehlednou zprávu, v níž shrneme výsledky provedeného testování. Zpráva by se měla držet následující struktury:

• Shrnutí pro vedení společnosti

• Obsah projektu

• Používané nástroje (včetně exploitů)

• Přesné datum a časy, ve kterých byly testy prováděny

• Výstupy jednotlivých testů

• Seznam všech bezpečnostně slabých míst s doporučení, jak tato místa opravit

Nástroje používané pro penetrační testování

 

 

V rámci této kapitoly se zaměřím na konkrétní nástroje, které jsou pro penetrační testování používány. Kapitola je rozdělena do dvou hlavních částí. V první části nejprve poukážu na konkrétní nástroje, které lze při testování využívat. Náplní druhé části pak budou automatické systémy pro penetrační testování. Jedná se o kompletní User-Interface systémy, které v sobě obsahují jak nástroje pro odposlech sítě a identifikaci operačního systému, tak i různé exploity, které jsou při penetračním testování nezbytné. Pro výběr níže zmíněných nástrojů jsem si zvolil následující vlastnosti, které by měl mnou vybíraný program splňovat.

Nástroje jsem vybíral z volně dostupné databáze nacházející se na http://sectools.org/. Tato databáze obsahuje TOP 100 bezpečnostních nástrojů.

Z tabulky je zřejmé, že jediným placeným nástrojem používaný v této práci, byl Metasploit Express. Ostatní programy byly typu freeware.

Odposlech sítě

Metoda odposlechu síťové komunikace je založena na principu zachytávání paketů síťového protokolu. Ke zkoumání sítě se používají tzv. skenery, které naváží spojení k některé službě a poslouchají, zda jim daná služba odpoví.

Zjednodušeně můžeme síťový sken popsat takto:

1. Odeslání nějaké sondy

2. Poznání toho, co a kam jsme to poslali

3. Čekání na to, zda se nám něco vrátí a my se tak dozvíme něco o našem cíli

Před pár lety by skenování sítě typu B představující 216 aktivních prvků zabralo několik hodin. V současné době už však není problém projít celou síť během pouhých několika minut, v lepších případech postačí i čas v řádu desítek sekund. Tento pozitivní vývoj ovlivňují jak neustále dokonalejší programy, tak i technické možnosti výpočetní techniky, mezi nimi třeba rychlost přenosové linky či výkon hardwarového vybavení. V následujících odstavcích se budu věnovat konkrétním programům, které jsou v průběhu testování bezpečnosti sítí používány. Nepopisuji zde jejich přesnou funkčnost, ale zaměřuji se spíše na jejich představení a vyzkoušení v praxi. Pokud bude mít čtenář zájem o detailnější informace o funkčnosti konkrétních programů, může navštívit jejich webové stránky.

Paketo Keiretsu

Tento softwarový balík byl poprvé zveřejněn v roce 2002 Danem Kaminskym. Jedním z cílů projektu bylo prozkoumat do té doby málo probádané způsoby použití TCP/IP protokolu. Do tohoto balíku patří následující nástroje:

Scanrand – jedná se o velmi rychlý bezestavový TCP port skener

Minewt – jde o směrovač a překladač adres

Paratrace – jedná se o novější verzi programu traceroute, který dokáže obejít i stavové filtry

Traceroute a jeho varianta ICMP pro Windows tracert se pro sledování síťových uzlů na cestě k určenému cíli používají, dalo by se říci, už věky. Uživatel programu paratrace si za pomoci těchto nástrojů může udělat přehlednou představu o stavu a rozložení počítačové sítě. Program je navržen tak, aby se dostal i skrze firewally a topologii sítě zjistil i přes veškerá omezení.

Ettercap

Jedná se o jeden z nejvýznamnějších sniffovacích nástrojů, disponuje totiž řadou vyspělých sniff metod, některé z nich jsou velmi těžko odhalitelné. Použitelný pro útoky typu "man in the midle11", odposlech sítě skrz switche (arp poisoning), aktivní online zasahování do probíhající komunikace bez přerušení spojení (injecting), odchyt hesel řady protokolů (ftp, http, icq, pop3, nfs, ssh1, telnet, https, apod.). Umožňuje psaní vlastních filtrů, pomocí kterých lze různě zasahovat do probíhající komunikace, její sledování, zabíjení spojení. Program má textové i grafické rozhraní, ale může běžet i jako démon na pozadí systému.

 

Dsniff

Dsniff je kolekce nástrojů pro testování bezpečnosti sítě. Obsahuje například:

• arpspoof pro přesměrování provozu mezi dvěma počítači na jednom ethernetovém segmentu switchovaným hloupým či špatně nastaveným switchem na svůj počítač

• webmitm pro realizaci man-in-the-middle útoku na HTTPS spojení (získané například výše uvedeným arpspoofem)

• sshmitm pro totéž na SSH (podporuje pouze protokol verze 1)

Výše popisované nástroje jsou určeny výhradně pro testování bezpečnosti vlastních zařízení a demonstraci bezpečnostních postupů. Nástroje by neměly být pouštěny v cizích sítích. V některých zemích (např. v Německu) jsou považovány za zbraň a jejich držení bez povolení je zakázáno.

Identifikace operačního systému

Tak jako člověk na všem zanechává svůj jedinečný otisk, tak i operační systémy posílají kolem sebe informace, které je mohou snadno odhalit. Celé je to způsobeno tím, že jednotlivé aplikace využívají protokol TCP/IP, který je poměrně dobře definovaný, ale přesto se v něm najdou části, jež nejsou pevně specifikované. Tyto části dávají programátorům operačního systému volnost při vývoji a tím i k vytvoření chyb.

K čemu je dobré vědět, jaký operační systém je na daném počítači nainstalován? Taková identifikace se dá využit k různým činnostem. Útočníci, kteří se snaží o napadení počítače, tuto znalost reálně využívají. Díky identifikaci operačního systému mohou zjistit, jaké bezpečnostní slabiny testovaný stroj obsahuje, a následně svůj útok směřovat na konkrétní bezpečnostní chybu. Na druhou stranu je ale možné identifikaci operačního systému využívat i ke správným účelům, správci sítě dokážou identifikovat připojení jiného počítače do své sítě. Zákazník, který využívá webového hostingu, si může ověřit, že mu byla nabídnuta správná verze operačního systému.

Existují dva způsoby identifikace operačního systému - aktivní fingerprint a pasivní fingerprint.

Aktivní identifikace operačního systému

Aktivní skener, který identifikaci provádí, posílá aktivní požadavky na cílovou stanici a čeká na její odpovědi. Díky tomu skener dokáže s velkou přesností určit, jaký operační systém je na cílové stanici nainstalován. Nevýhodou aktivního skenu je možnost odhalení IDS. Ze skupiny aktivních fingerprint nástrojů jsem si pro testování zvolil program Xprobe2.

Xprobe2

Nástroj pro aktivní identifikaci operačního systému, který byl poprvé představen v roce 2001 ve verzi Xprobe v0.0.1, pochází od vývojářů Fyodor Yarochkin a Ofir Arkin. Systém se stal velkým hitem při identifikaci operačního systému díky tomu, že využívá každodenně používané síťové pakety (ICMP,TCP,UDP) a neodesílá žádné vadné pakety, které by IDS systém dokázal odhalit a tím přijít na útočníka.

Xprobe2 využívá jednu funkci, kvůli které se odlišuje od ostatních programů pro identifikaci operačních systémů. Tou je tzv. fuziness (logika). Logika systému vybírá z databáze známých operačních systémů ty, které se podle procentuálního výsledku přibližují testovanému systému. Pro každý známý operační systém se tedy provede řada nezávislých testů a vyhodnotí se jejich výsledky. Na konci procesu nám vznikne množina čísel, ze kterých je vypočítána pravděpodobnost výskytu testovaného systému. Následně jádro systému vytvoří přehlednou matici, do níž uloží výsledky testů.

Díky tomu můžeme poznat, jaký operační systém by se mohl na cílovém stroji nacházet.

Na následujícím obrázku je ukázáno použití programu za pomoci příkazu xprobe2 localhost. Operační systém byl identifikován se 100% přesností.

Pasivní identifikace operačního systému

Pasivní skener, který identifikaci provádí, neodesílá aktivní požadavky na koncová zařízení, ale spoléhá se jenom na to, jaká komunikace proběhne mezi ním a cílovou stanicí. K identifikaci operačního systému se používají TCP Sigantures (podpisy), díky kterým lze poznat, o jaký operační systém se jedná.

Mezi hlavní TCP Signatures, které pasivní skeny používají, patří:

• TTL – zbývající doba života

• Window Size – jaká je nastavena sada operačního systému

• DF – je možná fragmentace

• TOS – typ služby

Obrázek 7: Pasivní identifikace; zdroj: http://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting

Výhodou pasivního skenu je fakt, že je skoro nezjistitelný a tím pádem ho nelze nijak omezit. Cílová strana nemá ani ponětí o tom, že je skenována. Nevýhodou tohoto skenu je jeho nepřesnost, protože nelze vyvolávat nadstandardní situace.

Operační systém lze identifikovat i za pomocí metody otevřených portů. Tato metoda zkoumá, jaké jsou otevřené porty, a díky tomu lze určit, o jaký operační systém se jedná. Je to způsobeno tím, že každý operační systém používá určitou sadu síťových služeb. Metoda je však pracnější a vyžaduje vyšší znalost síťových protokolů a jednotlivý služeb, které jsou nabízeny jednotlivými servery. Další nevýhodou této metody je fakt, že správci sítě většinou síťové porty z důvodu bezpečnosti maskují za účelem zmatení útočníka.

P0f

Tento nástroj pro pasivní identifikaci operačního systému vyvinul polský bezpečnostní guru Michal Zalewski. Program má tři různé režimy provozu. Prvním a výchozím je SYN režim, ve kterém program na síti sleduje pouze úvodní pakety TCP spojení. Režim je vhodný pro zjištění stanic, jež se připojují ke stanici, na které běží p0f.

Druhý režim se nazývá SYN+ACK. Tento režim analyzuje SYN a ACK pakety, tudíž i odpovědi na požadavek pro navázání TCP spojení. Použití režimu je vhodné tehdy, chcete-li zjistit, k jakému počítači se stanice, na níž běží program, připojuje. Na následujícím obrázku je vidět použití nástroje ve druhém režimu.

Třetím režimem je RST+ACK/RST. Režim se podobá předchozímu, ale zkoumá jen RST pakety, které v průběhu pokusu o navázání spojení dostane. Použití tohoto režimu je vhodné v situacích, kdy vzdálený počítač odmítl vaše připojení (Connection Refused).

Podle mého názoru je nejlepší možnou variantou použití pasivního skenu. Tato varianta sice není stoprocentní, ale určitě je jak nezjistitelná přes IDS (oproti aktivní identifikaci), tak i rychlejší a kvalitnější ve srovnání s metodou zkoumání otevřených portů. Nástrojů pro identifikaci operačního systému jsem vyzkoušel několik. Předchozí dva nástroje jsem vyhodnotil jako nejlepší z hlediska mnou stanovených vlastností. Ostatními nástroji, které jsem vyzkoušel, byly tyto:

• Amap

• WinfingerPrint

Nástroje pro automatické penetrační testování

V této kapitole se zaměřím na kompletní nástroje pro penetrační testování. Tyto nástroje v sobě obsahují nástroje pro skenování sytému, identifikaci operačního systému, mají rozsáhlou databázi ověřených exploitů již použitých k průnikům do různých operačních systémů. Použití těchto nástrojů je velice efektivní a dá se říci, že celý proces ohodnocení podle metodiky ISSAF lze díky nim projít. To je první výhoda, kterou nám tyto nástroje dávají.

Za druhou výhodu by se dala bez pochyby považovat úspora času, kterou nástroje přináší. Potřebujete-li například otestovat stovky počítačů na stejnou chybu, nemusíte již testování provádět ručně, ale za pomocí nástroje, který vše udělá za vás. Databáze bezpečnostních chyb a exploitů se neustále rozrůstá a proto není možné zaručit, že na danou chybu bude v době vašeho testování existovat správný exploit. Je to způsobeno tím, že výskyt chyb při vývoji softwaru není přímo úměrný vývoji exploitů.

Metasploit

Metasploit projekt je open source bezpečnostní projekt, který poskytuje informace o bezpečnostní zranitelnosti a pomáhá při penetračním testování. Projekt byl vytvořen v roce 2003 H. D. Moorem. Poslední stable verze, která byla vydána, je 3.5.2 (09/02/2011). Projekt obsahuje rozsáhlou databázi exploitů (vytvořený programový kód, který dokáže využít nějakou zranitelnost na cílovém stroji) a payloadů (části kódu, které se spustí na vzdáleném stroji po proniknutí přes bezpečnostní slabinu, může se jednat o remote shell nebo instalaci nějakého trojského koně, který běží na pozadí a zajistí nám nepozorovanou kontrolu nad napadeným systémem). Po instalaci je nejdříve nutné pustit metasploit server a následně se může přihlásit přes konzolu nebo přes webový prohlížeč zadáním adresy http://localhost:3790.

Základními kroky pro využívání Metasploitu jsou:

1) Vybrání a konfigurace exploitu (v současné době je dostupných přes 680 různých exploitů, které jsou zaměřeny na Windows, Linux, Unix, Mac).

2) Výběr a konfigurace payloadu.

3) Volba správného kódování payloadu tak, aby IPS nezjistil přítomnost payloadu.

4) Spuštění exploitu.

 

Nessus

Tento produkt je řazen do skupiny vzdálených bezpečnostních skenerů. Jedná se o nástroj, který umožňuje vzdálené otestování cílového počítače a nalezení bezpečnostních slabin. Nessus se skládá ze dvou částí. První částí je démon nessusd, který realizuje všechny bezpečnostní testy, druhou je pak X11 rozhraní, pomocí kterého se provádí konfigurace, spouští se potřebné testy a prohlíží výsledky. Serverová část (v Linuxu označována jako démon) a klientská část spolu samozřejmě musí komunikovat. Klientská část říká, jaké testy mají byt prováděny a serverová část je vykonává. Stejně jako přecházející software, i tento má možnost šifrované komunikace přes SSL a možnosti ověřování pomocí uživatelského jména a hesla. Oproti programu Metasploit Express, který dokáže provádět i samostatné penetrační testy, Nessus tuto možnost nemá, avšak verze Nessus Home Feed je zdarma.

Pomocí programu dokážete otestovat následující kategorie:

• získání shellu

• zranitelnost CGI Martin Vovesný Penetrační testování serverů - 35 –

• backdoors (např. notoricky známý BackOrifice) • vzdálený přístup k souborům

• denial of Service útoky (DoS)

• nadbytečné síťové služby

• finger

• firewally

• ftp

• získání rootovského shellu

• chyby v nastavení SMTP démona

• skenování portů

• rpc

V době psaní této práce program obsahoval přes 280 modulů. Poslední verze, která byla zatím vydána, má označení 4. Tato verze umožňuje instalaci i na počítače s operačním systémem Windows. Samotná instalace, která zahrnovala stažení instalačního souboru, registraci produktu a stažení aktualizačních knihoven, nezabrala více než 15 minut. Po této době jsem byl schopen vytvořit uživatele a začít s testováním produktu. Produkt má velmi přímočaré a intuitivní ovládání, tudíž podle mého názoru může každý, kdo bude potřebovat otestovat bezpečnost počítačové sítě, po tomto programu sáhnout. Pro praktickou část této práce ho však nevyužiji a dám přednost programu Metasploit, který už má v sobě integrované exploity pro penetrační testování. Na následujících obrázcích je znázorněno grafické rozhraní programu.

BackTrack

Jedná se o distribuci Linuxu, která byla vytvořena jako Live CD vzniklé spojením WHAX a Sbírky kontrol bezpečnosti Maxe Morsera. Projekt BackTrack vytvořil Mati Aharoni a Max Moser. BackTrack 2 byl oficiálně vydán 6. března roku 2007 a v jeho útrobách se skrývá neuvěřitelných 300 bezpečnostních nástrojů. Mezi hlavní rysy této linuxové distribuce patří penetrační testování systémů.

Funkcionalita BackTracku je zvýšená především přehledným rozdělením nástrojů do následujících 16-ti kategorií:

• enumerace

• využívání slabostí

• scannery

• zjištění hesla

• hledání slabin kódu

• maskování

• odchytávání paketů

• tunelovací protokol

• nástroje bezdrátových spojení

• Bluetooth

• Cisco nástroje

• databázové nástroje

• forensní nástroje

• BackTrack služby

• zpětné inženýrství

• různé

Aplikace, které Live CD BackTrack mimo jiné obsahuje:

• Aircrack-ng - testování zranitelností WEP a WPA

• Metasploit - testování zranitelnosti software

• RFMON - ovladače

• Kismet - sniffer a stumbler

• Nmap - mapování počítačových sítí

• Ettercap - sniffing

• Wireshark (dříve pod jménem Ethereal) - analýza protokolů