Digitalizacijom poslovanja u modernom dobu, mnoge tvrtke su izložile veći broj internetskih stranica i servisa na javnu mrežu, Internet. Dodatni rizik predstavlja i „novo normalno“, odnosno povećan broj djelatnika koji rade od kuće. Samim time, tvrtke su postale i podložnije napadima zlonamjernih grupa i pojedinaca tzv. hakerima.
Mnogi misle kako tvrtke u Hrvatskoj nisu meta napada, međutim iz prakse se kod Combisovih korisnika pokazalo kako itekako jesu, prvenstveno u državnom i bankarskom sektoru.
Kao jedna od mjera zaštite i možda inicijalni korak u borbi protiv ovakvih grupa je penetracijsko testiranje. Riječ je o procesu kojim se određuje razina sigurnosti nekog informacijskog sustava. Osobno više volim reći legalno hakiranje. Penetracijsko testiranje zvuči dosadno, zar ne?
Primjeri van Hrvatske
Prije nego što nastavim, samo kratki pogled izvan Hrvatske. Europska regulacija GDPR je pretprošle godine izdala dosad najveću kaznu zbog kršenja zaštite podataka vlastitih korisnika British Airwaysu - 183 milijuna funti. British Airways je bio meta hakerskog napada u kojem je izvršen proboj u sustav kada je ukraden veliki broj podataka o korisnicima, od imena i prezimena do brojeva kreditnih kartica.
Multinacionalnoj kompaniji Marriot, koja se bavi lancima hotela, za sličan napad izdana je kazna od 123 milijuna dolara. Osim očitih financijskih posljedica, tim tvrtkama je značajno narušen ugled, što niti jednoj kompaniji nije cilj.
Jednostavna činjenica - vi ne znate kako će vas hakirati
Kroz svoje dugogodišnje iskustvo provođenja legalnih hakiranja nikad nisam od korisnika dobio isti odgovor o tome kako oni vide da bi ih netko mogao hakirati, gdje smatraju da su najvjerojatnije točke proboja, što očekuju od samog provođenja penetracijskog testiranja i u konačnici - kako će se taj proces odvijati. Baš zato, ispričat ću vam koje su to faze kvalitetnog hakiranja.
Prvi korak: Prikupljanje informacija (enumeracija)
Glavna mantra u svijetu pentestera (skraćeno od penetracijskog testera) je „enumerate, enumerate, enumerate!“ i to s dobrim razlogom jer je enumeracija 80 posto posla. Enumeracija je proces prikupljanja informacija o meti koju želite hakirati s ciljem pronalaženja čim veće količine vektora napada tj. potencijalnih točki proboja u sustav.
Nevjerojatna količina informacija o velikoj većini korisnika je dostupna na Internetu, pritom ne mislim samo na javno dostupne dokumente i stranice neke tvrtke, već i na informacije na društvenim mrežama kao što su LinkedIn i Facebook, javni forumi itd. Takve javno dostupne informacije često daju golemu količinu korisnog sadržaja za napadače u dijelovima datoteka koje korisnici obično ne vide, a to su metapodaci.
Nedavno sam samo iz metapodataka dokumenata dostupnih na službenoj stranici jednog korisnika (tvrtke) uspio izvući oko 700 validnih korisničkih imena iz čega se točno vidio format korisničkog imena (npr. ime.prezime) i onda, kombinirajući taj format s LinkedIn profilima zaposlenika tog korisnika, kreirao listu od oko 1200 potencijalnih korisničkih imena. Nastavio sam s napadom na e-mail sustav korisnika koristeći prikupljena korisničke imena i neke lako pogodljive lozinke pri čemu sam na kraju uspio provaliti 50-ak korisničkih računa zaposlenika tog korisnika. Proboj izvršen.
Nadalje, ovisno naravno o tipu testa, moramo pregledati i što je sve izloženo na internet. Ovdje je riječ o mrežnom skeniranju sa specijaliziranim alatima i tu često nalazimo e-mail, FTP, DNS servere, VPN agregacijske točke i, naravno, web aplikacije koje se vrte na raznim web serverima.
Tako dobivamo kompletan pregled vidljivosti izvana. Nerijetko sam čuo od korisnika „Mi nismo znali da nam je to uopće vani!“, a u izloženom sustavu se kriju npr. domenski korisnički računi i lozinke. Prikupljanje čim više podataka o tim servisima je izuzetno bitno za uspješno izvođenje napada pa se pritom spajamo na servere ne bismo li dobili odgovor na pitanja o verzijama servisa, pozadinskom operacijskom sustavu, web serveru itd. Web aplikacije često u zaglavlju HTTP odgovora odaju sočne informacije o verzijama pozadinskih servisa no isto tako odaju i vlastite miskonfiguracije koje mogu dovesti do proboja.
Jedan sjajan primjer takvog napada je bio kod korisnika koji je maknuo sve informacije o verzijama servera iz bannera, HTTP odgovora itd., ali ne i iz zadanih poruka greške web aplikacije koja se vrti na tom serveru. Konkretno se radilo o vrlo ranjivoj verziji Apache servera za koje postoje javno dostupni eksploatacijski kodovi (mini programčići koji iskorištavaju te ranjivosti). Pripremili smo eksploatacijski kod i uspješno preuzeli kontrolu nad ranjivim web serverom, sve zbog nepravilne konfiguracije web aplikacije koja se vrti na njemu.
Možda vam sve ovo djeluje komplicirano, naravno da i je komplicirano za one koji se time ne bave, no pišem ovo da imate dojam kako se kombiniranjem naizgled malenih greškica, miskonfiguracija i previda može napraviti veliki problem ili točnije rečeno - proboj.
Drugi korak: Big data analiza
Kao što možete pretpostaviti, sad kad ste skupili hrpu informacija pred sobom imate određene točke napada koje valja koristiti za pokušaj kompromitacije sustava.
Testeri u ovom koraku pripremaju napad, kreiraju vlastite skripte ili prilagođavaju gotove eksploatacijske kodove, pripremaju liste s raznim malicioznim payloadima ili korisničkim imenima, potencijalnim lozinkama itd.
Nakon mukotrpnog i realno dugog procesa enumeracije i analize, konačno dolazimo do zabavnog dijela za kojeg smo se pripremali.
Treći korak: Eksploatacija ranjivog IT sustava
Jednom kada su napadi spremni, testeri ih potom lansiraju prema svojim metama te u konačnici ispitaju prisutnost ranjivosti, bilo da se radi o zastarjelom Apache serveru ili lošoj politici lozinki. Treba napomenuti da se tu ne identificiraju samo visoko kritične ranjivosti koje uzrokuju potpuni proboj u sustav (što je cilj klasičnog hakera), već i one koje predstavljaju manji rizik za korisnika, ali koje u određenim scenarijima i uz prisutnost dodatnih ranjivosti, mogu dovesti do kompromitacije nekih dijelova sustava ili korisnika. Upravo je u tome dodatna vrijednost penetracijskog testiranja, kvalitetan test identificira i najmanji propust, ma koliko malo vjerojatno iskorištavanje tog propusta bilo.
Što u slučaju proboja? Ako uspijemo proći na bilo koji sustav, radimo isto što i klasični hakeri, širimo se dalje. To znači da se cijeli proces enumeracija-analiza-eksploatacija odvija ispočetka, samo ovaj put u unutrašnjoj mreži, i tako dalje, i tako dalje... sve dok nemamo maksimalni pristup sustavu kojega je moguće ostvariti kroz sigurnosne propuste.
Konačni rezultat legalnog hakiranja je pregled testiranog sustava, klasifikacija ranjivosti (opis, dokaz eksploatacije) i preporuke za uklanjanje ranjivosti čime se podiže svijest i razina informacijske sigurnosti.
Izvještavanje i komunikacija s korisnicima
Kada ste već dopustili nekome da vas legalno hakira, voljeli bi znati i što taj netko radi na vašem sustavu, zar ne? Tijekom trajanja testa će vas dobar pentester obavještavati o kritičnim ranjivostima koje usput otkrije, najavljivati što radi svaki dan itd. Na projektima koje ja radim, svaki dan prije početka testiranja šaljem najavu s izvorišnom adresom testova (da znate da ja stojim iza napada u slučaju alarma), opsegom testa (koji dio sustava se testira), opisom testova koji će se provoditi taj dan i potencijalnim rizikom za sustav (npr. moguće je neznatno usporavanje rada servisa).
Vrlo je bitno i odmah javiti svaku kritičnu ranjivost koja se otkrije tijekom testa jer se tu često radi o lako iskoristivim sigurnosnim propustima koje bilo tko u bilo kojem danom trenutku može iskoristiti, a imaju katastrofalne posljedice po sustav. Preporučam popravak kritičnih ranjivosti odmah po primitku obavijesti o uspješnoj eksploataciji tijekom trajanja testa.
To je u suštini to. Nadam se da imate dojam kako je pametno provoditi penetracijska testiranja i ispitivati sigurnost izloženih servisa u redovitim intervalima. Postoji nekoliko tvrtki u Hrvatskoj koje se bave provođenjem penetracijskih testiranja, a kako vas ne bih danas previše ugnjavio, idući put odgovaram na pitanje kako odabrati hakere za vaše legalno hakiranje. Stay tuned.
I dodatno - ako vas tema sigurnosti opširnije zanima, dobra prilika za saznati više je webinar Kako ostati siguran u doba nepovjerenja?, pa bacite pogled o čemu je riječ. Uz kolege, i ja sam tada online kao predavač, pa možemo temu odvesti u smjerove koji vas zanimaju, popričati, razmijeniti iskustva i slično.