Објашњено 7 фаза и корака испитивања пенетрације

Godine 1967, stručnjaci za računarsku bezbednost iz Rand Corporation, među kojima su bili Vilis Ver, Rein Turn, Harold Petersen i Benard Peters, analizirali su stanje nakon zajedničke konferencije posvećene računarima. Njihov zaključak je bio alarmantan: komunikacioni kanali između računara su izuzetno ranjivi.

Tako je nastala prva ideja o prodoru u sistem radi testiranja njegove bezbednosti. U skladu s tim, Džejms P. Anderson je osmislio metodološki pristup koji je poslužio kao osnova za testiranje penetracije.

Sama struktura testiranja bila je prilično jasna: timovi zaduženi za bezbednost prolazili bi kroz nekoliko faza, počevši od identifikacije slabosti do razvoja strategija za njihovo prevazilaženje. Detaljan prikaz istorije testiranja penetracije možete pronaći na navedenom linku.

Iskorišćavanje sigurnosnih propusta kompanija nije jednostavan zadatak i zahteva vreme i ekspertizu. Međutim, uz savremenu tehnologiju, zlonamernim akterima je znatno olakšano pronalaženje ranjivih tačaka u organizacijama. Penetraciona testiranja ciljaju na imovinu kompanije koja je vidljiva na internetu (kao što su veb aplikacije, veb sajtovi, DNS serveri i mejl sistemi) sa ciljem da se ostvari pristup i izvuče vredne informacije.

Upotrebom testova penetracije, kompanije mogu identifikovati i ojačati potencijalne mete napada pre nego što dođe do zloupotrebe. Istraživanja pokazuju da je čak 73% uspešnih upada rezultat iskorišćavanja ranjivosti veb aplikacija.

Danas je više nego ikada ranije, neophodno da organizacije provere sigurnost svojih aplikacija, sistema i mreža. Simulirana testiranja su efikasan način za potvrdu efikasnosti bezbednosnih mehanizama i kontrolnih mera. Ovo nije jednokratna aktivnost, već proces koji se ponavlja. Učestalost testiranja zavisi od specifične organizacione strukture kompanije i rizika koji proizilaze iz procena.

Srećom, testovi penetracije nisu previše komplikovani. Opremanjem IT timova neophodnim veštinama, organizacije mogu dosledno primenjivati bezbednosne mere, posebno pri značajnim ažuriranjima infrastrukture ili uvođenju novih digitalnih usluga i resursa.

Sve počinje razumevanjem osnovnih pojmova.

Šta je testiranje penetracije?

Pre nego što pređemo na to kako se testiranje sprovodi, važno je definisati šta je to i zašto je bitno. Testovi penetracije (često skraćeno kao „pen testovi“) su u osnovi simulirani sajber napadi usmereni na kompanije, koji se izvode u kontrolisanom i sigurnom okruženju.

U kombinaciji sa bezbednosnim revizijama, pen testovi imaju za cilj da otkriju slabosti u okviru definisanog okruženja organizacije. Taktički, pen testovi imaju sličan pristup kao što to rade hakeri. Neki od glavnih razloga zbog kojih je testiranje penetracije važno za vaše poslovanje uključuju:

  • Identifikovanje skrivenih ranjivosti pre nego što ih napadači otkriju.
  • Jačanje bezbednosnih procesa i strategija.
  • Smanjenje troškova sanacije i vremena za reagovanje.
  • Osiguravanje usklađenosti sa propisima koji se tiču bezbednosti i privatnosti.
  • Čuvanje ugleda brenda i održavanje lojalnosti klijenata.

Pen testovi proveravaju stanje vaše kompanije, tj. otpornost na napade, i ukazuju na jednostavnost s kojom hakeri mogu da prodru u vaše sisteme. Osim toga, dobijeni rezultati mogu biti korisni pri određivanju prioriteta ulaganja u sajber bezbednost, praćenju industrijskih standarda i poboljšanju odbrambenih strategija, radi zaštite kompanije od potencijalnih pretnji. Sve ovo je moguće uz pomoć automatizovanih alata, poznatih kao alati za penetraciono testiranje.

Šta su alati za testiranje penetracije?

Eticki haker koristi alate za penetraciono testiranje kako bi procenio otpornost računarske infrastrukture kroz simuliranje realnih napada. Korišćenjem ovih alata, bezbednosni timovi mogu da izbegnu ponavljajući posao testiranja, brže generišu izveštaje i smanje troškove upotrebe više skenera.

Postoji veliki broj različitih vrsta alata, uključujući: open source, alate za testiranje veb aplikacija, mreža, mobilnih aplikacija, cloud rešenja, manuelne i automatizovane alate, kao i usluge testiranja penetracije. Bez obzira na broj alata koji su dostupni, prilikom odabira treba obratiti pažnju na ključne funkcionalnosti, kao što su izveštaji na osnovu kojih se može reagovati, integracija CI/CD sistema, podrška pri sanaciji i sertifikati za pen testiranje (samo mali broj alata nudi javno dostupne sertifikate za pen testiranje).

Uz tu osnovu, razložimo proces testiranja penetracije.

Faze testiranja penetracije

Tipičan pen test uključuje nekoliko faza. Iako različiti izvori mogu da prikažu proces sa različitim brojem koraka, osnovna struktura se ne menja. Proces obuhvata: prikupljanje informacija, skeniranje, procenu ranjivosti, eksploataciju i izveštavanje.

Najbolji testeri se upoznaju sa mnogim alatima kako bi odabrali odgovarajući alat za svaku fazu testiranja. Svaka od ovih faza se može opisati na sledeći način.

Prikupljanje informacija

Ova faza se često zanemaruje, ali je ključna za uspostavljanje zajedničkog razumevanja između organizacije i pen testera. U ovoj fazi definišete obim testiranja, pravila angažovanja, rokove i logistiku, uz jasne ciljeve.

Kako biste imali kompletan i koristan pen test, ova faza vam pomaže da razumete oblasti koje treba testirati i najbolje metode. Kao početni korak, ovo se nikako ne sme propustiti.

Pre testiranja sistema, organizacija mora dati svoj pristanak testeru, inače se njegove akcije mogu smatrati ilegalnim. Organizacije uspostavljaju jasna pravila (u ugovoru) kako bi se osigurao nesmetan radni tok prilikom angažovanja testera. Ugovor takođe treba da definiše kritične resurse, ciljeve testiranja i mere predostrožnosti. Pored toga, ovaj korak utiče na sve naredne radnje. Na kraju, svi planovi se usklađuju sa očekivanim rezultatima testiranja.

Rekognosciranje/OSINT prikupljanje

U ovoj fazi, testeri prikupljaju sve dostupne informacije o sistemu. Dobijeni podaci se koriste u predstojećim testovima i rukovode se rezultatima prvog koraka. Na ovaj način, testeri dobijaju precizne informacije o podacima koje treba prikupiti i strategijama za implementaciju. Ukoliko se odlučite za aktivno izviđanje, tester direktno interaguje sa sistemima. Ako se primeni pasivno izviđanje, prikupljaju se javno dostupne informacije. Za detaljniju analizu, preporučuje se kombinovanje obe tehnike.

Aktivno prikupljanje podataka podrazumeva rad sa mrežama, operativnim sistemima, korisničkim nalozima, imenima domena, mail serverima i aplikacijama. Pasivno prikupljanje podataka se odnosi na open source obaveštajne podatke; može uključivati društvene mreže, poreske informacije, veb sajtove i druge javno dostupne podatke.

U nastavku se nalaze neki alati za prikupljanje otvorenih izvora informacija (OSINT) za koje su moje kolege i ja smatrali da su korisni i laki za korišćenje prilikom prikupljanja i povezivanja informacija na internetu. Koristeći OSINT okvir, možete kreirati detaljnu kontrolnu listu ulaznih tačaka i ranjivosti. Iako je ovaj korak ključan za interne i eksterne pen testove, obično se ne sprovodi prilikom testiranja veb aplikacija, mobilnih aplikacija i API-ja.

Skeniranje

Sledeći korak je detaljan tehnički pregled sistema. Korišćenjem alata za skeniranje, kao što su automatizovani skeneri ranjivosti i mrežni maperi, možete razumeti kako ciljni sistem reaguje na različite upade, otvorene portove, mrežni saobraćaj, itd.

Glavne komponente ove faze su skeniranje i analiza resursa. Možete koristiti alate kao što je Nmap za otkrivanje računarskih servisa i hostova, slanje paketa i analizu odgovora. Do kraja ove faze, raspolagaćete informacijama o resursima, uključujući operativne sisteme, servise koji su u radu i otvorene portove.

Analizom rezultata, dobijate osnovu za planiranje eksploatacije. Možete mapirati digitalni pejzaž sistema i locirati moguće tačke napada. Možete da sprovedete statičku i dinamičku analizu kako biste stekli jasno razumevanje odgovora sistema na različite uslove.

Statička analiza proverava kod vaših aplikacija dok one još nisu pokrenute; za ovo možete koristiti alate za besprekorno skeniranje baza kodova. Što se tiče dinamike, proveravate kod dok je aplikacija u radu. Važno je zapamtiti da informacije prikupljene ovde moraju biti tačne i pravilno dobijene, jer od toga zavisi uspeh narednih faza.

Procena/Dobijanje pristupa

U ovom trenutku, svi podaci prikupljeni u prethodnim koracima pomažu u utvrđivanju ranjivosti i proceni da li se one mogu iskoristiti. Iako je ova faza korisna sama po sebi, ona postaje izuzetno moćna kada se kombinuje sa drugim procesima testiranja penetracije.

Radi procene povezanih rizika otkrivenih ranjivosti, testeri koriste brojne izvore, uključujući Nacionalnu bazu podataka ranjivosti (NVD), koja analizira osetljivost softvera koji je prijavljen u okviru Common Vulnerabilities and Exposures (CVEs) baze podataka.

Nakon toga, identifikujete mete i mapirate vektore napada. Ciljana područja obuhvataju resurse visoke vrednosti kao što su podaci o zaposlenima, informacije o klijentima, podaci o partnerima/lancu snabdevanja, dobavljači, portovi, aplikacije i protokoli. Pokreću se napadi na veb aplikacije.

Najčešći su SQL injekcija, cross-site scripting i backdoor napadi. Sistem se eksploatiše povećanjem privilegija, presretanjem saobraćaja i krađom podataka, kako bi se uočili efekti štete. Prateći obim definisan u fazama prikupljanja informacija, tester radi u okviru definisanih ograničenja.

Eksploatacija

Poznata i kao faza održavanja pristupa, tester proverava da li se identifikovane ranjivosti mogu iskoristiti. Ova faza uključuje stvarni upad i pokušaj pristupa sistemu. Koristeći alate kao što je Metasploit, tester simulira realni napad.

Kako ova faza napreduje, tester preuzima odgovornost za resurse organizacije – osiguravajući da sistemi ne budu ugroženi nakon simulacije.

Metasploit se pokazao kao odličan alat zbog neometanog korišćenja pri eksploataciji ranjivosti. Ova faza meri efekte upada. Tester bi mogao pokušati šifrovati ili eksfiltrirati podatke, kao i simulirati ransomware i zero-day napade. Ključ uspešnog pen testa je uspostavljanje ravnoteže između probijanja granica i očuvanja integriteta sistema.

Preporučuje se saradnja sa stručnjacima, koji eksploatišu ranjivosti izbegavajući automatizaciju. Do kraja ove faze, ostvareni su pokušaji dobijanja privilegija visokog nivoa u sistemskim i mrežnim informacijama, identifikujući pri tome dostupne podatke. Etički haker takođe treba da objasni rezultate eksploatacije meta visoke vrednosti.

Analiza rizika i preporuka, pregled, izveštavanje

Nakon faze eksploatacije, tester generiše izveštaj koji dokumentuje nalaze. Izveštaj se koristi kao osnova za popravku otkrivenih ranjivosti.

Dobar izveštaj o pen testu je detaljan i sadrži dokumentovane ranjivosti, predstavljene u formatu koji pomaže organizaciji da otkloni bezbednosne rizike. Sveobuhvatan izveštaj treba da obuhvati sve otkrivene ranjivosti i njihove CVSS rezultate, kratke informacije o tehničkim rizicima, potencijalni uticaj na poslovanje, detaljan pregled poteškoća u eksploataciji i taktičke savete.

Pored toga, izveštaji treba da dokumentuju sve faze, modele testiranja, korišćene tehnike i ciljane resurse. Ukoliko je moguće, tester daje mišljenje o tome da li test ispunjava važeće zahteve. Zaključno, preporučuje se da se uz izveštaj dostavi i opšte objašnjenje i tehnički vodič.

Nakon izveštavanja i prezentacije izveštaja, čišćenje sistema je ključno. Podrazumeva vraćanje sistema u stanje pre testiranja. Aktivnosti čišćenja obuhvataju uklanjanje svih izvršnih datoteka, privremenih fajlova i skripti sa kompromitovanih sistema, brisanje korisničkih naloga kreiranih za potrebe testiranja, i uklanjanje rutkita u okruženju.

Poslednji korak je sanacija, za koju je zadužena organizacija. Na osnovu izveštaja i nalaza sa testiranja penetracije, organizacija cilja ranjivosti, analizirajući potencijalne uticaje, informišući donosioce odluka o narednim koracima i utičući na strategije ispravljanja.

Kako je ova faza zaokružena poboljšanjem grešaka iz prošlosti, rešavanje svih ranjivosti koje se mogu iskoristiti je vremenski ograničeno. Ponekad se ova faza može produžiti radi ponavljanja testova ili implementacije različitih testiranja.

Praktična primena pen testova: Vodič korak po korak

Za ovaj primer, odlučili smo da koristimo Metasploit okvir. Možete kreirati sopstveni prilagođeni radni tok, a ovo je tipičan tok koji vas može pokrenuti. Za početak, instalirajte okvir.

Ukoliko koristite Linux/macOS, koristite komandu:

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
  chmod 755 msfinstall && \
  ./msfinstall

Za korisnike Windows operativnog sistema, koristite najnoviji Windows instalater ili Shell komandu:

[CmdletBinding()]
Param(
    $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi",
    $DownloadLocation = "$env:APPDATA/Metasploit",
    $InstallLocation = "C:\Tools",
    $LogLocation = "$DownloadLocation/install.log"
)

If(! (Test-Path $DownloadLocation) ){
    New-Item -Path $DownloadLocation -ItemType Directory
}

If(! (Test-Path $InstallLocation) ){
    New-Item -Path $InstallLocation -ItemType Directory
}

$Installer = "$DownloadLocation/metasploit.msi"

Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer

& $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"

A onda…

Započnite projekat – Ovo će biti vaša prodavnica podataka i radni prostor. Budući da možete imati različite zahteve za različite podmreže unutar organizacije, organizovanje rada će poboljšati vašu efikasnost. Na primer, ukoliko imate pen test za IT i HR timove, poželjno je da generišete odvojene rezultate.

Izvor slike – Metasploit

Dobijte ciljne podatke – Ovde dodajete podatke u svoj projekat skeniranjem ili uvozom postojećih podataka. Skenirajte ciljeve kako biste naveli otvorene portove i identifikovali mrežne servise. Koristite opciju skeniranja, a zatim unesite IP adrese sa kojima želite da radite, jednu po jednu u svakom redu. Takođe, možete koristiti opciju uvoza da biste uvezli podatke iz lokalnog fajla.

Izvor slike – Metasploit

Pregled/upravljanje podacima hosta – Možete pogledati podatke sa nivoa hosta ili projekta. Možete pregledati svaki IP i dobiti pregled jednog hosta.

Izvor slike – Metasploit

Skeniraj ranjivosti – Pokrenite skeniranje ranjivosti preko Nexpose opcija. Ovaj korak koristi baze podataka o ranjivostima kako bi pronašao potencijalna podudaranja.

Iskorišćavanje ranjivosti – Možete iskoristiti ranjivosti pomoću čarobnjaka za validaciju. Alternativno, Nexpose će i dalje raditi.

Aktivnost nakon eksploatacije – Prikupite podatke iz eksploatacije preko kartice sesije, i kliknite na „sakupi“.

Izvor slike – Metasploit

Čišćenje – Kada završite sa prikupljanjem podataka, koristite opciju „čišćenje“ kako biste prekinuli sesiju i očistili sistem.

Generišite izveštaje – Na kraju pen testa, Metasploit vam nudi niz izveštaja koji su polazna tačka za konsolidaciju podataka i kompilaciju rezultata.

Detaljan vodič za brzi početak sa pen testovima možete pronaći u Metasploit-ovom vodiču.

Uobičajeni alati za pen testiranje

Neki od najčešće korišćenih alata su: Sn1per, Metasploit i Commix.

#1. Sn1per

Sn1per je alat za istraživanje ranjivosti koji verifikuje uticaj napada sa strane klijenta. Možete ga koristiti za simulaciju daljinskih i lokalnih napada u kontrolisanom okruženju. Sn1per ima više od 6k zvezdica na GitHub-u. Takođe se koristi kao medij za druge alate. Sa Sn1perom možete uštedeti vreme automatizovanjem otvorenih i komercijalnih alata za pronalaženje ranjivosti.

#2. Metasploit

Metasploit je veliki okvir za pen testiranje koji je nastao kao rezultat zajedničkog napora open-source zajednice. Ima 31,2 hiljade zvezdica na GitHub-u, što pokazuje veliko interesovanje zajednice. Metasploit je podržan saradnjom entuzijasta za bezbednost, sa ciljem da se bavi ranjivostima i poboljša svest o bezbednosti.

#3. Commix

Commix je odličan alat za eksploataciju komandi operativnog sistema. Iako je Commix specijalizovan za ranjivosti injektovanja komandi, jednostavan je za korišćenje, besplatan i otvorenog koda, kompatibilan je sa više platformi, prenosiv i modularan. Ima više od 4k zvezdica na GitHub-u. Takođe je besplatan i otvorenog koda.

Završne reči

Razumevanje faza testiranja penetracije je od suštinskog značaja za kompanije koje žele da poboljšaju otpornost svojih digitalnih proizvoda u kontekstu porasta sajber napada. Kako sajber kriminalci pronalaze načine da zaobiđu tradicionalna bezbednosna rešenja, simulacija realnih napada kroz pen testiranje predstavlja efikasan način da se zaštitite u okruženju sajber pretnji koje se stalno razvija.

Prilagođavanjem pen testova specifičnim potrebama organizacije, možete osigurati efikasnost bezbednosnih politika. Prolaskom kroz sve faze pen testa, dobijate najbolji povrat na ulaganja u sajber bezbednost.

Za uspešan pen test, važno je biti mudar. Započnite sa prikupljanjem informacija o testu, i nadogradite te informacije na nivo izviđanja. Dobra početna tačka za vaše izviđanje je definisanje ciljeva i opsega sistema koji se testira.

Zatim skenirajte sistem kako biste stekli dublje razumevanje i identifikovali ranjivosti. Nastavite sa pokretanjem napada sve dok ne želite da oštetite sistem. Zatim generišite korisne izveštaje koji vas vode kroz proces rešavanja problema. Ne zaboravite da očistite i vratite sistem u prvobitno stanje.

Kada se pravilno koriste, pen testovi poboljšavaju bezbednosni položaj organizacije, tako što identifikuju i popravljaju ranjivosti. Kako mnoge organizacije prelaze na cloud i prihvataju nove tehnologije, pen testovi postaju kritični za domen informacione bezbednosti. Zapravo, 75% preduzeća koristi pen testove radi procene bezbednosti ili radi usklađivanja sa propisima. Ukoliko pažljivo pristupite svakoj fazi testa, uvek ćete pronaći vrednost u pen testovima.

U nastavku možete pogledati besplatne alate za online pen testiranje (Pentest) radi testiranja bezbednosti aplikacija.