Įvadas
Metasploit – kompiuterių ir jų sistemų apsaugos projektas, teikiantis informacija apie sistemų ir jų komponentų pažeidžiamumus, taip pat orientuotas į pažeidžiamumų išnaudojimo testavimo programinės įrangos kūrimą. Šis projektas į informacijos saugos pasaulį įsiveržė 2004 metais, o projekto rezultatas bene geriausia pažeidžiamumų išnaudojimo testavimo programinės įrangos sistema Metasploit Framework (toliau – MSF). MSF yra pažangi atviro kodo struktūrinė sistema, skirta kurti, tobulinti ir naudoti pažeidžiamumų išnaudojimo kodus. Pridėtiniai modeliai, kurių pagalba pažeidžiamumų turiniai (angl. payloads), šifratoriai, no-op generatoriai ir pažeidžiamumų išnaudojimo kodai gali būti integruoti į MSF, padarė šią sistemą vieną iš pagrindinių įrankių pažangiame pažeidžiamumų tyrinėjime. Pačioje sistemoje pagal nutylėjimą jau yra įkelta šimtai pažeidžiamumų išnaudojimo kodų, kuriuos galima peržiūrėti modulių sąraše. Tokia egzistuojančių pažeidžiamumų išnaudojimo kodų gausa tik palengvina naujų išnaudojimo kodų kūrimą. Pagrindiniai šios sistemos naudotojai yra profesionalūs pažeidžiamumų testuotojai, kurie atlieka pažeidžiamumų kodų tobulinimą ir pačių techninių pažeidžiamumų tyrimus, tačiau ši sistema yra laisvai prieinama kiekvienam, besidominčiam informacijos sauga ir techninių pažeidžiamumų valdymų.
Atsiradimo istorija
2003 metais H.D. Moore‘as pradėjo Metasploit Project projektą, kuris buvo skirtas informacijos saugos bendruomenei su viešai prieinama pažeidžiamumų išnaudojimo tobulinimo programine įranga. Šio projekto rezultate atsirado MSF struktūrinė sistema.
Pirmoji MSF versija buvo pradėta H.D. Moore‘o naudojant Perl programavimo kalbą. Moore‘as sudarė pradinį sistemos vaizdą ir bazinį veikimo principą. Antrasis kūrėjas, žinomas Spoonm‘o vardu prisidėjo prie projekto 2003 metų gale ir pradėjo sumodeliuoti bendrą sistemos veikimo principą, kuris naudojamas iki šios dienos. 2004 metais prie Metasploit Project projekto prisidėjo ir trečiasis kūrėjas Matt‘as Miller‘is, dar žinomas Skape‘o vardu.
Pirmosios dvi MSF versijos buvo parašytos naudojant Perl programinę kalbą. Kadangi Perl programinė kalba turėjo daug trūkumų kūrėjams teko perrašyti sistemą naudojant Ruby programavimo kalbą. Šis darbas trūko dvejus metus, nuo 2005 m. iki 2007 m. 2007 metų pabaigoje Spoonm‘as ir Matt‘as Miller‘is paliko projektą ir nešini naujų idėjų subūrė naują kūrėjų komandą ir perėmė šaltinio kodo trijų sąlygų BSD (angl. three-clause BSD) licencijas pradedant nuo 3.2 versijos (2008 metai). Licencijos pasikeitimas, suderintas su naujai suburtos kūrėjų komandos energija ir idėjomis leido Metasploit projektui išlikti gyvam.
2009 metų lapkričio 21 dieną pažeidžiamumų valdymo sprendimų kompanija „Rapid7“ įsigijo Metasploit Project projektą. Prieš įsigijimą MSF sistemos tobulinimas vykdavo tik laisvų kūrėjų laiku, dažniausiai vakarais ir savaitgaliais. Kompanija „Rapid7“ sutiko kūrėjams finansuoti pilną darbo dieną ir paliko programiniam kodui galioti trijų sąlygų BSD licenciją.
Taigi, atviro kodo bendruomenės ir kompanijos „Rapid7“ bendradarbiavimas padėjo sukurti dar įvairesnę ir galingesnę Metasploit programinę įrangą, kuri padeda informacinių technologijų saugos profesionalams aptikti sistemų saugumo spragas, atrasti pažeidžiamumų mažinimo būdus, valdyti ekspertų atliekamus saugumo įvertinimus, bei suteikti tikslų sistemos pažeidžiamumų rizikos vertinimą. Į sistemos galimybes įeina: išmanusis pažeidžiamumų kodo išnaudojimas, slaptažodžių auditas, WEB aplikacijų skenavimas ir socialinės inžinerijos testai.
Metasploit architektūra
1 pav. Metasploit architektūros blokinis vaizdas
Metasploit architektūra sudaro penki pagrindiniai blokai, kurių viduje yra atskiri objektai. Žemiau pateikiamas blokų (didelis paryškintas šriftas) ir juos sudarančių objektų (paryškintas ir pasviręs šriftas) sąrašas su paaiškinimais. Grafinis Metasploit architektūros vaizdas pateiktas 1 pav..
1. Bibliotekos
1.1. Rex – pagrindinė biblioteka, skirta atlikti daugumai užduočių. Ši biblioteka valdo jungtis (angl. socket), įvairaus tipo protokolus, teksto transformacija ir kt. Pvz.: SSL, SMB, HTTP, XOR, Base64, Unicode.
1.2. MSF CORE – pagrindinė aplikacijos programavimo sąsaja (API). Nusako MSF struktūrinę sistemą.
1.3. MSF BASE – suteikia supaprastintą, vartotojui „draugišką“ aplikacijos programavimo sąsają.
2.Moduliai
2.1. Pažeidžiamumo išnaudojimo kodo turinys (angl. payload) – programinio kodo dalis, kuri veikia nuotolinėje aukos sistemoje.
2.2. Pažeidžiamumo išnaudojimas (angl. exploit) – programinio kodo dalis, duomenų rinkinys arba kodo seka, kuri pasinaudoja sistemos pažeidžiamumu ar klaidomis. Dar nusakomas kaip modulis, kuris naudoja pažeidžiamumo kodo išnaudojimo turinį.
2.3. Pagalbiniai moduliai (angl. auxiliary) – naudojami skenavimui, sistemos užtvindymui duomenimis (angl. fuzzing) siekiant aptikti sistemos klaidas ir atlikti kitas įvairias užduotis.
2.4. Post moduliai – skirti jau sukompromituotoms sistemoms siekiant surinkti įrodymams, kad į sistemą buvo įsilaužta arba naudoti šiuos modulius gilesniam įsibrovimui į tinklą ir pan. Post moduliai skirstomi į: Windows, Linux, OS X, Multi OS, Cisco, AIX, Solaris, Firefox.
2.5. Šifratorius (angl. encoder) – speciali programa, kuri šifruoja pažeidžiamumo išnaudojimo kodo turinį siekiant apeiti antivirusinių programų patikrą.
3. Įrankiai
- Tai yra specialūs įrankiai, kurie yra naudojami specifiniams veiksmams atlikti. Pvz., testuotojas norėdamas gauti aukos ekrano vaizdą pasinaudoją atitinkamu įrankiu.
4. Įskiepiai
Integruojamos specialios paslaugų programos (angl. utilities), tokios kaip: Nmap, NeXpose, Nessus ir t.t.
5. Sąsajos
5.1. msfconsole – bene populiariausia MSF sistemos sąsaja. Ši sąsaja suteikia taip vadinamas „viskas viename“ konsolės galimybes ir leidžia efektyviai pasiekti visas Metasploit Framework opcijas ir funkcijas. msfconsole sąsaja turi savitą komandų sistemą, kuri ne iškarto būną visiems suprantama. Tačiau perpratus šios sąsajos principą ir komandas msfconsole tinkamose rankose gali pavirsti į labai galingą pažeidžiamumų išnaudojimo ir testavimo įrankį.
Privalumai:
- Vienintelis palaikomas kelias pasiekti dauguma MSF funkcijų.
- Sąsaja su sistema paremta konsolės langu.
- Turi daugiausia funkcijų ir ypatybių ir yra stabiliausia MSF sąsaja.
- Galimas išorinių komandų vykdymas MSF konsolės lange, pvz., ping, nmap ir t.t.
5.2. msfcli – suteikia komandinės eilutės sąsają, susietą su MSF sistemą. Tai leidžia lengvai pridėti Metasploit išnaudojimo kodus į bet kokius kuriamus skriptus. msfcli sąsaja didžiausia dėmesį teikia skriptų rašymui ir jų interpretavimui. Šis įrankis taip pat labai pasitarnauja tuomet, kai yra tiksliai žinomas pažeidžiamumo išnaudojimas ir jo turinys.
Privalumai:
- Palaiko išnaudojimo kodų ir papildomų modulių naudojimą.
- Naudingas atliekant specifines užduotis.
- Tinkamas mokymuisi.
- Patogus kuriant ir tobulinant naujus pažeidžiamumų išnaudojimus.
Vienas iš msfcli trūkumų yra nepalaikomas toks didelis funkcijų kiekis kaip msfconsole sąsajoje bei palaiko tik vieną vartotojo sąsają (angl. shell) vienu metu. Taip pat nepalaiko patobulintų automatizavimo ypatybių.
5.3. WEB grafinės sąsajos (Community, PRO)
Metasploit Community – nemokama MSF versija, skirta studentams ir smulkaus verslo įmonėms. Metasploit Comumnity suteikia galimybę naudotojams grafinės vartotojo sąsajos pagalba lengvai atlikti tinklo komponentų nustatymą, pažeidžiamumų aptikimą ir jų išnaudojimą.
Ypatybės:
- Tinkle esančių komponentų nustatymas: sistemų identifikavimas, prievadų skenavimas, sistemose veikiančių OS nustatymas.
Integracija su pažeidžiamumų skeneriais: galimas skenavimo rezultatų importavimas į Metasploit Community iš Nessus, NMAP, NeXpose, Qualys ir kitų skenerių. NeXpose skenavimas gali būti inicijuotas tiesiogiai iš Metasploit Community grafinės vartotojo aplinkos.
- Aptikus pažeidžiamumus Metasploit Community parenka tinkamus pažeidžiamumų išnaudojimo modulius.
5.4. ARMITAGE – specialus priekinės (angl. frond-end) sąsajos įrankis, skirtas MSF sistemai. ARMITAGE yra atviro kodo programinė įranga sukurta Raphael‘io Mudget‘o kompanijos, leidžianti geriau suprasti pažeidžiamumų testavimo procesą ir pačią MSF sistemą.
MSF Pagrindai
6. Duomenų bazės
Atliekant pažeidžiamumų testavimą tampa sunku kaupti ir sekti visą informaciją, susijusią su testuojama sistema. Tokiu atveju laiko sutaupyti padeda tinkamai sukonfigūruota duomenų bazė. MSF turi integruotą PostgreSQL duomenų bazės sistemos palaikymą.
PostgreSQL duomenų bazės sistema suteikia greitą ir paprastą priėjimą prie skenavimo informacijos, leidžia testuotojui importuoti ir eksportuoti skenavimo rezultatus iš įvairių trečiosios šalies pažeidžiamumų skenavimo įrankių. Bene didžiausios šios duomenų bazės sistemos privalumas yra tas, kad sistema palaiko duomenis tinkamai sugrupuotus ir organizuotus.
7. Pažeidžiamumų išnaudojimai
MSF sistemoje visi pažeidžiamumų išnaudojimai skirstomi į du tipus: aktyvius ir pasyvius.
Aktyvūs išnaudojimai
- Brutalios jėgos moduliai nutrauks savo darbą gavus vartotojo sąsajos prieigą prie aukos sistemos.
- Modulio vykdymas nutraukiamas atsiradus klaidai.
- Galimas priversti aktyvųjį moduli veikti antrojo plano fone (angl. background).
Pasyvūs išnaudojimai
- Pasyvūs pažeidžiamumų išnaudojimai laukia prisijungiančių tinklo kompiuterių ir tuomet bando išnaudoti pažeidžiamumus.
- Pasyvūs išnaudojimai beveik visada orientuoti į klientus, tokius kaip WEB naršyklės, FTP klientai ir pan.
- Gali būti naudojami kaip papildiniai elektroninio pašto pažeidžiamumų išnaudojime.
- Įvykdžius pasyvųjį išnaudojimą galima peržiūrėti aktyvias sesijas (komanda -l) arba jomis naudotis (komanda -i).
8. Pažeidžiamumų išnaudojimo turiniai
MSF sistemoje išnaudojimo turiniai skirstomi į pagrindines tris grupes: pirminiai (angl. singles), paskirstytieji arba galutiniai (angl. stager) ir tarpiniai (angl. stages). Šie trys tipai suteikia pažeidžiamumų išnaudojimams universalumo ir pasitarnauja esant skirtingiems pažeidžiamumų scenarijams. Visi išnaudojimo turiniai pagal tipus yra atskiriami pasvyrojo brūkšnio (/) ženklu. Pvz., „windows/shell_bind_tcp“ yra pirminis ir vienas išnaudojimo turinys, kai tuo tarpu „windows/shell/bind_tcp“ susideda iš paskirstytojo (bind_tcp) ir tarpinio (shell) išnaudojimo turinių.
Pirminiai išnaudojimo turiniai
Tokie išnaudojimo turiniai yra savarankiški ir visiškai atskiri. Pirminiai išnaudojimo turiniai gali būti labai paprasti, tokie kaip naujo naudotojo pridėjimas atakuojamoje sistemoje arba calc.exe programos paleidimas. Pagal modeliavimo tipą šie išnaudojimo turiniai yra laikomi stabiliausiais, kadangi šiuo atveju laikomasi principo viskas viename.
Paskirstytieji išnaudojimo turiniai
Paskirstytieji išnaudojimo turiniai sudaro tinklo sujungimą tarp atakuotojo ir aukos. Kadangi sudėtingas užduotis kartais sunku atlikti naudojant vieną išnaudojimo turinį, todėl kartais geriau naudoti atskirus, mažus ir patikimus paskirstytuosius išnaudojimo turinius.
Tarpiniai išnaudojimo turiniai
Tarpiniai išnaudojimo turiniai naudojami kartu su paskirstytaisiais turiniais su tikslu atlikti specifines užduotis. Užmezgus su tinklo sujungimą su auka tarpinis išnaudojimo turinys yra nuskaitomas ir įvykdomas aukos sistemoje. Kartu su tarpiniais pažeidžiamumų turiniais yra išskiriami ir kiti išnaudojimo turiniai, tokie kaip: Meterpreter, PasiveX, NoNX, IPv6, Reflective, Ord, DLL injection.
9. Meterpreter pažeidžiamumų išnaudojimo turinys
Meterpreter – dinamiškai lankstus pažeidžiamumų išnaudojimo turinys, naudojantis operatyviosios atminties DLL bibliotekos injekcijas. Su aukos sistema Meterpreter komunikuoja naudojant paskirstytąjį sujungimą (angl. stager socket) ir suteikia išsamią Ruby kliento aplikacijos programavimo sąsają. Taip pat šis išnaudojimo turinys sugeba išsaugoti komandų storija, turi „TAB“ mygtuko paspaudimo komandos užbaigimo funkciją, skirtingų komunikacijos kanalų palaikymas ir dar daugiau kitų ypatybių.
Meterpreter veikimas
- Auka gavusi pradinę kenkėjišką programą įvykdo paskirstytąjį pažeidžiamumų išnaudojimo turinį (angl. stager). Tai dažniausiai būna vienas iš bind, reverse, findtag, passivex turinių.
- Paskirstytasis pažeidžiamumų išnaudojimo turinys užkrauna DLL prefixed Reflective modulį, kuris valdo DLL injekcijas.
- Meterpreter sukuria TLS/1.0 sujungimą ir siunčia GET užklausą. Metasploit gauna GET užklausą ir konfigūruoja klientą.
- Galiausiai Meterpreter užkrauna plėtinius.
- Siekiant išvengti maišaties laikoma, kad aukos sistema, kurioje veikia Meterpreter yra serveris, o Metasploit pusėje veikianti sistema vadinama klientu.
Meterpreter sukūrimo tikslai:
Slaptumas
- Meterpreter slypi vien tik operatyviojoje atmintyje ir nieko nerašo į standųjį diską.
- Meterpreter nekuria naujų procesų, yra įkeliamas į jau esantį procesą ir gali migruoti į kitą veikianti procesą.
- Pagal nutylėjimą Metrepreter naudoja šifruotą sujugimą.
Galingumas
- Meterpreter naudoja kanalų komunikacijos sistemą.
- TLV protokolas turi kelis apribojimus.
Lankstumas
- Naujos funkcijos gali būti pridėtos prie Meterpreter nereikalaujant perkompiliuoti Meterpreter turinio.
- Ypatybės gali būti praplėstos paleidimo metu.
10. APIBENDRINIMAS
MSF sistema yra lyderiaujanti tarp kitų pažeidžiamumų testavimo ir išnaudojimo programinės įrangos produktų. MSF pasižymi labai plačiomis pažeidžiamumų testavimo, išnaudojimo, kūrimo, tobulinimo ir integravimo galimybėmis. Šis įrankis gali žymiai pasitarnauti tiek profesionalams, atliekantiems saugumo auditus didelėse organizacijose, tiek ir paprastiems entuziastams tikrinant asmeninių sistemų saugumą. Tačiau kaip ir su kiekvienu informacijos saugumo įrankiu atsiranda galimybė MSF sistemą naudoti negeriems tikslams. Kadangi MSF sistema yra laisvai prieinama kiekvienam pageidaujančiam, tai yra kiekvieno individualus asmens reikalas nuspręsti, kokiais tikslais ir kaip jis naudos šią sistemą.
LIERATŪROS SĄRAŠAS
Metasploit istorija [interaktyvus]. Blgtech Blogspot [Žiūrėta 2014-04-09]. Prieiga per internetą: <http://blgtechn.blogspot.com/2012/08/metasploit.html>.
Metasploit unleashed [interaktyvus]. Offensive seurity Metasploit unleashed [Žiūrėta 2014-04-09]. Prieiga per internetą <http://www.offensive-security.com/metasploit-unleashed/Main_Page>.