Metasploit Framework (MSF) (http://www.metasploit.com) je alat otvorenog koda (engl. open source) koji pruža sigurnosnim stručnjacima razvojnu okolinu za izvođenje penetracijskog ispitivanja. Projekt je inicijalno započeo kao mrežna igra da bi se razvio u moćan alat za penetracijsko ispitivanje, izradu exploita i alat za analizu ranjivosti sustava. [6]
Omogućuje jednostavnu i brzu izradu exploita i drugih alata za različite potrebe penetracijskog ispitivanja. MSF je na početku bio samo nakupina velike količine exploita i koda koji se mogao upotrijebiti za razvoj novih exploita. Danas MSF nije samo nakupina exploita nego je i razvojna okolina koja omogućava sigurnosnim stručnjacima istraživanje i razvoj novih tehnika ispitivanja sigurnosti u računarskim sustavima.
Originalno MSF je bio napisan u Perl skriptnom jeziku i uključivao je različite dijelove napisane u programskom jeziku C, Pythonu i asembleru. Od verzije 3.0 MSF je nanovo napisan u programskom jeziku Ruby. Trenutna verzija je licencirana pod MSF licencom.
Iako MSF ima mnoga dobra svojstva i karakteristike ima i neke slabosti, a neke od njih su: [6]
Podržane platforme su Windows, Linux, Mac OS X i većina BSD-ova. MSF se aktivno razvija i unapređuje. Trenutna verzija MSF-a je 3.1 i ima podršku za preko 200 exploita, 116 payloada, 17 kodera, 6 NOP generatora i 43 pomoćna alata.
Tri osnovne komponente MSF-a su sučelje (engl. interface), moduli (engl. modules) i kod koji se izvršava nakon uspješno izvršenog exploita (engl. payloads). [6]
Postoji nekoliko korisničkih sučelja za interakciju s korisnikom. Najpopularnije i najfleksibilnije sučelje je komandno-linijsko interaktivno sučelje (msfconsole). Postoji i Web sučelje (msfweb), od verzije 3.1 i grafičko sučelje (msfgui), te neinteraktivno komandno-linijsko sučelje (msfcli). Komandno-linijsko sučelje nije podržano u operacijskom sustavu Windows, pa se preporuča korištenje emulacije tog sučelja unutar Web sučelja ili grafičkog sučelja. [6]
Komandno-linijsko sučelje je tradicionalan i primarni način korištenja MSF-a. Dizajnirano je da bude fleksibilno i brzo. Ukoliko se unese naredba koja nije standardna naredba MSF-a, MSF skenira operacijski sustav u potrazi za tom naredbom. Ukoliko pronađe naredbu, naredba se izvršava s predanim argumentima. Ovo otvara mogućnost korištenja standardnih alata koji se koriste kod penetracijskog ispitivanja, a da se ne mora napustiti MSF. (Slika 5.3)
Sučelje podržava određeni broj naredbi. Popis svih podržanih naredbi unutar ovog sučelja dobiva se izvođenjem naredbe help
. (Slika 5.4)
Web sučelje je jedno od dva grafička sučelja raspoloživa u MSF-u. Web sučelje koristi WEBrick Web poslužitelj za obradu zahtjeva. Standardne postavke ovog poslužitelja su da se pokreće lokalno i sluša na portu 55555. Za spajanje na server može se koristiti bilo koji podržani Web pretraživač (Mozilla Firefox, Microsoft Internet Explorer ili Safari). Pristup ovom sučelju je jednostavan, a pristupa se tako da se u pretraživač jednostavno unese URL http://127.0.0.1:55555, ako je poslužitelj pokrenut sa standardnim postavkama. Ne osigurava nikakvu sigurnost, nema autentifikacije korisnika koji se spajaju na pokrenuti poslužitelj. Na pokrenuti poslužitelj može se spojiti bilo tko i ako želi može iskoristiti ovaj propust za zlonamjerne radnje.
Nakon što se pretraživač spoji na poslužitelj dobije se Web sučelje MSF-a unutar samog pretraživača. Na vrhu se nalazi alatna traka koja sadržava nekoliko ikona, te je na sredini ekrana prikazan MSF logo. (Slika 5.5)
Ukoliko se iz ovog sučelja žali pristupiti komandno-linijskom sučelju to je moguće odabirom linka Console iz alatne trake. Ovo sučelje je skoro identično pravom komandno-linijskom sučelju, ima neke manje razlike. Odabirom nekog od linkova Exploits, Auxiliaries i Payloads, na alatnoj traci, pokreće se proces odabira, konfiguracije i pokretanja odabranog modula. Nakon što je exploit uspješno pokrenut i izvršen, te nakon što je kreirana sjednica, sjednici se može pristupiti klikom na link Sessions. Klikom na bilo koji od ovih linkova otvara se novi prozor unutar samog prozora Web pretraživača. Taj prozor moguće je micati, povećavati i smanjivati, ali samo u granicama pokrenutog Web pretraživača.
Grafičko sučelje je najnovije sučelje MSF-a. Dolazi tek s verzijom 3.1 i pruža mogućnosti koje ima i komandno-linijsko sučelje uz još neke nove dodatke. (Slika 5.6)
Pristup komandno-linijskom sučelju moguć je odabirom Console iz izbornika Window. Za pretraživanje modula potrebno je u polje za pretraživanje unijeti naziv modula ili regularni izraz, te kliknuti na gumb Find. Željeni modul može se odabrati dvostrukim klikom miša na naziv modula ili desnim klikom miša pa odabirom opcije Execute. Ako se želi vidjeti izvorni kod bilo kojeg modula potrebno je kliknuti desnim klikom miša na željeni modul, te odabrati opciju View Code. Izvorni kod modula otvara se u novom zasebnom prozoru.
Nakon što se odabere željeni modul i pokrene pokreće se čarobnjak koji korisnika vodi kroz cijeli postupak, od postavljanja potrebnih parametara, do pokretanja i izvršavanja modula. Ukoliko se radilo o Exploit modulu sav ispis vezan uz izvođenje exploita prikazuje se u kartici Module Output, na dnu ekrana. Ukoliko je exploit uspješno izveden, stvorena sjednica prikazuje se u pogledu Sessions u glavnom prozoru. Za pristup sjednici dovoljno je napraviti dvostruki klik mišem na željenu sjednicu.
Ukoliko se kao payload koristio meterpreter desni klik na stvorenu sjednicu daje i mogućnost listanja procesa odabirom opcije Process i pretraživanja datoteka odabirom opcije Browse. Ova mogućnost znatno olakšava manipulaciju s pokrenutim procesima i datotekama na udaljenom računala.
Ovo sučelje koristi se za automatizirano pokretanje exploita ili ukoliko se iz nekog drugog razloga ne želi koristiti interaktivno komandno-linijsko sučelje. Od verzije 3.1 ovo sučelje može se koristiti i za automatizirano pokretanje pomoćnih alata unutar MSF-a.
Sučelje se pokreće tako da mu se kao prvi parametar predaje ime modula koji se pokreće. Nakon toga slijede opcije modula oblika VAR=VAL (varijabla=vrijednost), te na kraju kod akcije kako bi se specificiralo što se želi napraviti (npr. O za opcije, A za napredne opcije, E za exploit, itd.).
Svi moduli napisani su u programskom jeziku Ruby. MSF sadrži nekoliko vrsta modula, a to su:
Exploiti su glavni fokus MSF-a. Exploiti se koriste kako bi se iskoristila ranjivost unutar sustava da se na sustavu izvrši željeni kod ili da se provede neka korisna akcija.
Pomoćni moduli podržavaju neke druge funkcionalnosti, kao što su npr. skeniranje portova, izvršavanje napada uskraćivanjem usluga (DoS), izvođenje fuzzing metode otkrivanja sigurnosnih propusta i sl. Cilj u budućnosti je da se u MSF integriraju pomoćni moduli koji će automatizirati cijeli proces penetracije u sustav, a isto tako omogućiti automatsko generiranje dokumentacije. Ove funkcionalnosti moguće je postići i vlastitim programiranjem takvih pomoćnih modula, te dodavanjem tih modula u MSF.
NOP generatori koriste se kod izrade exploita. Olakšavaju kreiranje vlastitih exploita. Koriste se za generiranje instrukcija bez operacije (engl. no-operation instructions) koje se mogu koristiti za dopunjavanje spremnika, kod iskorištavanja sigurnosnog propusta (npr. preljev spremnika). Različiti NOP generatori omogućuju maskiranje NOP niza kako bi se izbjeglo detektiranje izvođenja exploita različitim IDS (Intrusion Detection Systems) sustavima.
Koderi se koriste za kodiranje payloada, tj. za maskiranje payloada. Različiti IDS i IPS (Intrusion Prevention Systems) sustavi identificiraju i filtriraju poznate payloade, pa se koderi koriste kako bi se izbjegla detekcija od strane takvih sustava. S maskiranjem payloada povećava se mogućnost uspješnog izvršavanja exploita.
Payload je programski kod (shell programski kod, shellcode) koji se izvršava nakon što se pokrenuti exploit uspješno izvrši. Obično ostvaruje komunikacijski kanal između MSF-a i kompromitiranog računala. Ukoliko se exploit uspješno izvrši postoji nekoliko mogućnosti što napravit na kompromitiranom računalu. Moguće je dodati korisnika, izvršiti neku specifičnu naredbu, dobiti konekciju na komandnu ljusku kompromitiranog računala i još puno toga. Najzanimljivije mogućnosti od svih su meterpreter i injekcija VNC DLL servera kako bi se dobila potpuna kontrola nad sustavom preko grafičkog sučelja. [6]
Meterpreter je napredni multifunkcionalni payload ali samo za Windows operacijske sustave. Meterpreter je sličan tehnikama koje se koriste u komercijalnim alatima za preuzimanje kontrole nad procesom i iskorištavanje njegovih privilegija. Moglo bi se reći da meterpreter nije samo payload, nego platforma za exploitanje pokrenuta na udaljenom računalu. [13]
Često je centar pažnje penetracijskog ispitivanja na pronalasku sigurnosnih propusta i iskorištavanju nekog od njih, a manja važnost se pridaje radnjama nakon uspješnog iskorištavanja sigurnosnog propusta. Neki od glavnih izazova nakon uspješnog izvođenja exploita su: [6]
Meterpreter je dizajniran da prevlada ova spomenuta ograničenja i pruži API koji omogućava penetracijskom ispitivaču da isprogramira različite radnje u fazi nakon uspješnog exploitanja sustava. Meterpreter ima svoju vlastitu komandnu ljusku koja je u biti napadačka platforma. Meterpreter ljuska ubacuje se u memoriju pokrenutog ranjivog procesa i nikada ne ostavlja nikakvih tragova na disku exploitanog računala. Na taj način izbjegava otkrivanje od različitih HIDS sustava i zaobilazi ograničenja sustava, te zaobilazi detektiranje od strane antivirusnih programa. Meterpreter ljuska pruža API s kojim je moguće provesti različite akcije na samom sustavu, a da se stanje sustava značajno ne mijenja. Meterpreter ima veliki set ugrađenih naredbi koje omogućuju različite radnje i značajno povećavaju fleksibilnost exploitanja sustava. S ugrađenim naredbama moguće je izvoditi proizvoljne naredbe na exploitanom sustavu, prebacivati datoteke na i sa exploitanog računala, preusmjeravati portove na exploitanom sustavu, pokretati i terminirati proizvoljne procese, lagano doći u posjed sistemskih korisničkih lozinki i još puno toga.
Korištenjem komandno-linijskog sučelja nakon što se uspješno izvede exploit i pokrene meterpreter dobije se meterpreter komandna ljuska koja je pokrenuta na exploitanom računalu. Nakon toga dobivena je potpuna kontrola nad kompromitiranim računalom. Za popis svih raspoloživih ugrađenih naredbi potrebno je pokrenuti naredbu help
. [13]
Naredbe su podijeljene u nekoliko grupa. [6] Osnovna grupa naredbi (Core Commands) pruža osnovnu funkcionalnost. Omogućuje pokretanje različitih meterpreter skripti, dodavanje meterpreter dodataka, izlazak iz ljuske, ispis pomoći i sl. Jedna od najzanimljivijih naredbi je naredba migrate
. Omogućuje prebacivanje, migriranje, meterpretera na neki drugi pokrenuti proces. (Slika 5.7)
Druga grupa su naredbe za rad s datoteka (File system Commands). Omogućuju izlistavanje sadržaja direktorija, prebacivanje datoteka sa i na exploitano računalo, editiranje datoteka, preimenovanje datoteka i sl. (Slika 5.8)
Treća grupa naredbi su mrežne naredbe (Network Commands). Omogućuju ispis svih raspoloživih mrežnih sučelja na kompromitiranom računalu, usmjeravanje lokalnih portova i prometa. (Slika 5.9)
Četvrta grupa naredbi su sistemske naredbe (System Commands). Koriste se za manipulaciju s procesima kompromitiranog računala, dobivanje sistemskih informacija, resetiranje i gašenje računala, modificiranje registrya i sl. (Slika 5.10)
Zadnja grupa naredbi su naredbe za manipulaciju s korisničkim sučeljem (User interface Commands). Omogućuju kontrolu perifernih uređaja (tipkovnice i miša), te ispis vremena koliko je kompromitirani sustav neaktivan. (Slika 5.11)
Koristi se za ubacivanje VNC DLL servera u memoriju pokrenutog procesa na kompromitiranom računalu. VNC injekcija je prilično korisna mogućnost. Omogućuje pristup grafičkom sučelju kompromitiranog računala sa sistemskim privilegijama koristeći neki od VNC klijenta. Pruža potpunu kontrolu nad grafičkim sučeljem. Prilikom izvršavanja pokreće i potpuno funkcionalnu komandnu ljusku kompromitiranog računala. Dobivena komandna ljuska omogućuje potpunu kontrolu nad grafičkim sučeljem ako je ono i zaključano. Pomoću dobivene komandne ljuske moguće je pokrenuti Explorer (utipkavanjem explorer.exe
) za jednostavno pretraživanje sadržaja na disku kompromitiranog računala. Isto tako, iz komandne ljuske moguće je dodati novog korisnika i dodijeliti mu prava lokalnog administratora sustava, te se spojiti na kompromitirani sustav koristeći podatke od tog novog korisnika. [6]
Neovisno o sučelju koje se koristi, način korištenja je više-manje isti. Nakon što se pokrene željeno sučelje potrebno je odabrati modul koji se želi koristiti. Nakon što se odabere modul potrebno je postaviti određene parametre da bi se modul mogao pokrenuti. Nakon što su postavljeni svi potrebni parametri modul se izvršava. Rezultat izvršavanja modula ovisi o zadanim parametrima i vrsti modula. [12]
Za prikaz korištenja MSF-a koristi se komandno-linijsko sučelje.
Nakon što je pokrenuto komandno-linijsko sučelje koristi se za pokretanje exploita izvodeći sljedeće korake:
Izvođenjem naredbe show exploits
dobiva se popis svih raspoloživih exploita unutar MSF-a. (Slika 5.12)
Prikaz detaljnih informacija o žaljenom exploitu dobiva se izvođenjem naredbe info < naziv exploita >
. (Slika 5.13)
Željeni exploit odabire se naredbom use < ime exploita >
. Nakon što se odabere željeni exploit potrebno je odabrati i payload. Prikaz svih raspoloživih payloada dobiva se naredbom show payloads
. Željeni payload odabire se naredbom set PAYLOAD < ime payloada >
. Nakon što se odabere exploit i payload potrebno je postaviti potrebne parametre za izvođenje. Za prikaz raspoloživih opcija koristi se naredba show options
ili show advanced
za prikaz naprednih opcija. Neke od opcija koje je moguće postavljati su:
Nakon što su postavljeni svi potrebni parametri za pokretanje exploita, exploit se pokreće naredbom exploit
. (Slika 5.15)
Pomoćni moduli koriste se na isti način kao i exploiti. Naredbe su iste. Prvo se odabire željeni modul, nakon toga postavljaju se željeni parametri za izvođenje, te nakon toga se pokreće odabrani modul. Odabrani pomoćni modul pokreće se naredbom exploit
ili run
. [6] (Slika 5.16)
![]() |
![]() |
![]() |