Penetracijsko testiranje informacijskega sistema in analiza varnostnih ranljivosti

Kaj je penetracijsko testiranje in zakaj ga podjetja potrebujejo?

Požarni zid, protivirusna zaščita, varnostne kopije in močna gesla so pomembni deli kibernetske varnosti. Toda kako lahko podjetje dejansko preveri, ali bi napadalec kljub vsem zaščitam lahko prišel v njegov informacijski sistem?

Eden od načinov je penetracijsko testiranje oziroma penetration testing, pogosto skrajšano tudi kot pentest.

Gre za nadzorovano varnostno preverjanje, pri katerem strokovnjak z dovoljenjem naročnika poskuša razmišljati in delovati podobno kot pravi napadalec. Cilj ni povzročiti škode, temveč ugotoviti, katere ranljivosti bi bilo mogoče izkoristiti, kaj bi napadalec z njimi lahko dosegel in kako jih odpraviti.

Če te zanima širše ozadje tega področja, preberi tudi članek Kaj je etični heker in kaj pravzaprav počne?.

Kaj je penetracijsko testiranje?

Penetracijsko testiranje je nadzorovano preverjanje varnosti informacijskega sistema z uporabo metod, ki lahko posnemajo resničen kibernetski napad.

Penetracijski tester lahko glede na dogovorjeni obseg preverja spletne aplikacije, strežnike, omrežja, brezžične povezave, uporabniške račune, oddaljeni dostop, oblačne storitve in druge dele informacijske infrastrukture.

Pri tem ne išče samo teoretičnih varnostnih pomanjkljivosti. Poskuša ugotoviti tudi, ali jih je mogoče v konkretnem okolju dejansko izkoristiti in kakšne bi bile posledice.

Preprosto povedano: varnostni pregled lahko pokaže, da so vrata odklenjena. Penetracijsko testiranje pa poskuša ugotoviti, ali je skozi ta vrata mogoče vstopiti in do česa bi lahko napadalec prišel.

Penetracijsko testiranje ni isto kot avtomatsko iskanje ranljivosti

Ta izraza se pogosto zamenjujeta, vendar med njima obstaja pomembna razlika.

Pregled ranljivosti oziroma vulnerability scan običajno izvaja programsko orodje, ki preveri sistem in išče znane pomanjkljivosti, zastarele različice programske opreme, napačne nastavitve in druge potencialne težave.

Penetracijsko testiranje gre korak dlje.

Strokovnjak rezultate preveri, povezuje različne ugotovitve in poskuša oceniti, ali lahko posamezna ranljivost ali kombinacija več manjših težav omogoči resničen napad.

Avtomatski pregled lahko na primer pokaže tri manj pomembne pomanjkljivosti. Posamezno morda nobena ni kritična. Izkušen tester pa lahko ugotovi, da kombinacija vseh treh omogoča dostop do podatkov, ki bi morali biti zaščiteni.

Kaj lahko odkrije penetracijski test?

Odvisno od sistema in dogovorjenega obsega lahko penetracijsko testiranje odkrije zelo različne težave.

  • nepravilno nastavljene strežnike in omrežne naprave,
  • zastarelo programsko opremo z znanimi ranljivostmi,
  • šibko zaščitene uporabniške račune,
  • neustrezno upravljanje pravic dostopa,
  • napake pri prijavi in preverjanju uporabnikov,
  • ranljivosti spletnih aplikacij,
  • nepravilno ločena omrežja,
  • nepotrebno izpostavljene omrežne storitve,
  • slabo zaščiten oddaljeni dostop,
  • napake pri konfiguraciji oblačnih storitev,
  • možnost dostopa do podatkov brez ustreznega dovoljenja,
  • pomanjkljivosti, ki omogočajo povečevanje uporabniških privilegijev.

Pomembno je, da končni cilj testa ni izdelava čim daljšega seznama napak. Veliko bolj pomembno je ugotoviti, katere težave predstavljajo resnično tveganje za organizacijo.

Kako poteka penetracijsko testiranje?

Profesionalen pentest se ne začne z napadom, temveč z dogovorom.

1. Določitev obsega testiranja

Najprej se natančno določi, kaj bo predmet testiranja.

To je lahko ena spletna aplikacija, določen strežnik, javno dostopna infrastruktura, poslovno omrežje ali širši informacijski sistem.

Hkrati se določi tudi, česa tester ne sme preverjati.

2. Zbiranje informacij

Tester poskuša razumeti okolje, ki ga preverja. Analizira izpostavljene sisteme, uporabljene tehnologije, omrežne storitve in druge informacije, ki bi bile lahko zanimive tudi resničnemu napadalcu.

3. Iskanje ranljivosti

Sledi tehnična analiza. Pri tem se lahko uporabljajo avtomatizirana orodja, vendar je pomemben tudi ročni pregled.

Orodje lahko pokaže potencialno težavo, izkušen strokovnjak pa mora ugotoviti, ali gre za resnično ranljivost in kakšen je njen pomen.

4. Preverjanje možnosti izrabe

V tej fazi tester v okviru dogovorjenih pravil preveri, ali je odkrito pomanjkljivost mogoče dejansko izkoristiti.

Pri tem mora biti posebej previden, saj cilj ni povzročiti prekinitve delovanja ali poškodovanja podatkov.

5. Ocena posledic

Če tester uspe pridobiti dostop, ga zanima predvsem vprašanje: kaj bi lahko v podobnem primeru dosegel pravi napadalec?

Bi lahko dostopal do podatkov? Bi lahko prevzel drug uporabniški račun? Bi lahko prišel iz enega sistema v drug del omrežja?

6. Poročilo in priporočila

Eden najpomembnejših rezultatov penetracijskega testa je kakovostno poročilo.

V njem so opisane ugotovljene ranljivosti, njihova resnost, možne posledice ter priporočila za odpravo.

Dober pentest zato ne pove samo:

»Našli smo varnostno luknjo.«

Pove tudi:

»To je težava, takšno tveganje predstavlja in na ta način jo priporočamo odpraviti.«

Black box, grey box in white box testiranje

Penetracijski test se lahko izvede na različne načine, odvisno od tega, koliko informacij tester prejme vnaprej.

Black box test

Pri black box testiranju tester prejme zelo malo informacij o sistemu.

Takšen pristop je podoben položaju zunanjega napadalca, ki mora najprej sam ugotoviti, kakšni sistemi in storitve so na voljo.

Grey box test

Pri grey box testiranju tester prejme del informacij ali uporabniški račun z omejenimi pravicami.

Takšno testiranje lahko na primer simulira napadalca, ki je že pridobil običajen uporabniški račun.

White box test

Pri white box testiranju ima tester na voljo precej več informacij o okolju. To lahko vključuje dokumentacijo, konfiguracijo, omrežno arhitekturo ali celo izvorno kodo aplikacije.

Tak pristop omogoča zelo temeljit pregled določenega sistema.

Penetracijsko testiranje spletne strani in spletne aplikacije

Spletne aplikacije so ena najpogostejših tarč kibernetskih napadov, saj so običajno neposredno dostopne z interneta.

Pri testiranju spletne aplikacije se preverjajo področja, kot so prijava uporabnikov, upravljanje sej, pravice dostopa, obdelava vhodnih podatkov, nalaganje datotek, komunikacija s strežnikom in poslovna logika aplikacije.

Pri tem se pogosto uporabljajo smernice organizacije OWASP, ki razvija Web Security Testing Guide in druge odprte vire za varnost spletnih aplikacij.

Pomembna razlika med avtomatskim pregledovalnikom in ročnim pentestom je predvsem pri poslovni logiki.

Program lahko zelo dobro išče znane tehnične vzorce ranljivosti. Veliko težje pa razume, da bi na primer uporabnik spletne trgovine zaradi napake v postopku naročila lahko prišel do podatkov drugega uporabnika ali obšel določeno poslovno pravilo.

Penetracijsko testiranje omrežja

Pri omrežnem penetracijskem testiranju se preverjajo strežniki, delovne postaje, omrežne naprave, požarni zidovi in druge storitve.

Test je lahko zunanji ali notranji.

Zunanji pentest preverja, kaj bi lahko napadalec dosegel prek interneta.

Notranji pentest pa simulira scenarij, kjer je napadalec že pridobil dostop do notranjega omrežja – na primer prek okuženega računalnika, ukradenega uporabniškega računa ali drugega varnostnega incidenta.

Takšen test lahko pokaže, ali je omrežje pravilno segmentirano in ali lahko napadalec iz manj pomembnega sistema doseže bistveno bolj občutljive dele infrastrukture.

Ali lahko penetracijski test povzroči težave?

Da, če je izveden neustrezno.

Penetracijsko testiranje lahko vključuje dejansko interakcijo z ranljivimi storitvami. Zato obstaja možnost preobremenitve sistema, prekinitve storitve ali drugih neželenih posledic.

Prav zato je treba pred začetkom določiti pravila testiranja, čas izvajanja, kritične sisteme, dovoljene metode in način odzivanja v primeru nepričakovanih težav.

Pri zelo občutljivih produkcijskih sistemih se lahko določene vrste testiranja namenoma omejijo ali izvedejo v ločenem okolju.

Zakaj je pisno dovoljenje tako pomembno?

Penetracijski tester uporablja tehnike, ki so lahko zelo podobne metodam dejanskega napadalca.

Ključna razlika je v tem, da ima jasno dovoljenje za izvedbo testiranja in natančno določen obseg.

Dogovor mora določiti, katere sisteme je dovoljeno testirati, katere metode so dovoljene in kaj mora tester storiti, če odkrije posebno občutljive podatke ali kritično ranljivost.

Tudi strokovni certifikat, kot so CEH, BSCP ali OSCP, posamezniku ne daje splošnega dovoljenja za testiranje tujih informacijskih sistemov.

Več o poti do teh certifikatov si lahko prebereš v članku Kako postati etični heker? Pot do CEH, OSCP in drugih certifikatov.

Kdaj naj podjetje izvede penetracijski test?

Ni univerzalnega pravila, ki bi veljalo za vsako organizacijo.

Smiselno pa je o penetracijskem testiranju razmisliti predvsem pred uvedbo pomembnega novega informacijskega sistema, po večji spremembi infrastrukture, po razvoju nove spletne aplikacije, pred izpostavitvijo nove storitve internetu ali kot del rednega preverjanja kibernetske varnosti.

Prav tako je lahko ponovni test smiseln po odpravi predhodno odkritih ranljivosti.

Temu pogosto rečemo retest. Njegov namen je preveriti, ali so bile težave res pravilno odpravljene in ali popravek ni povzročil novih pomanjkljivosti.

Ali penetracijski test zagotavlja popolno varnost?

Ne.

Noben penetracijski test ne more zagotoviti, da sistem nima nobene varnostne pomanjkljivosti.

Test predstavlja pregled določenega sistema, v določenem obsegu in v določenem časovnem obdobju.

Dan po opravljenem testu je lahko odkrita nova ranljivost v programski opremi. Podjetje lahko spremeni konfiguracijo sistema. Dodana je lahko nova aplikacija ali uporabnik.

Zato penetracijsko testiranje ni nadomestilo za redno posodabljanje, varnostne kopije, nadzor dostopov, spremljanje dogodkov in druge varnostne ukrepe.

Je eden od pomembnih delov širšega sistema kibernetske varnosti.

Penetracijsko testiranje, NIS2 in ZInfV-1

Kibernetska varnost je z evropsko direktivo NIS2 ter slovenskim Zakonom o informacijski varnosti (ZInfV-1) dobila še večji pomen.

Organizacije, ki sodijo med zavezance, morajo ustrezno upravljati kibernetska tveganja in izvajati primerne varnostne ukrepe.

Penetracijsko testiranje je lahko eno od orodij za tehnično preverjanje učinkovitosti zaščite, vendar NIS2 ne pomeni, da mora prav vsako podjetje avtomatično izvajati isti tip penetracijskega testa.

Varnostni ukrepi morajo biti prilagojeni tveganjem, informacijskim sistemom in okoliščinam posamezne organizacije.

Kaj se zgodi, če med testiranjem odkrijemo kritično ranljivost?

Pri naročenem penetracijskem testu se način ravnanja s takšnimi ugotovitvami določi že pred začetkom.

Če pa nekdo varnostno ranljivost odkrije zunaj dogovorjenega testa, je pomembno odgovorno oziroma usklajeno razkrivanje ranljivosti.

V Sloveniji ima pri tem pomembno vlogo SI-CERT, ki je koordinator za usklajeno razkrivanje ranljivosti.

Namen takšnega postopka je omogočiti upravljavcu ali razvijalcu, da ranljivost preveri in odpravi, preden bi javna objava podrobnosti povečala nevarnost njenega izkoriščanja.

Je penetracijsko testiranje smiselno tudi za manjše podjetje?

Velikost podjetja sama po sebi še ne pove, kako zanimivo je podjetje za napadalce.

Tudi manjše podjetje ima lahko spletno trgovino, oddaljen dostop, poslovne podatke, elektronsko pošto, NAS strežnik, kamere, oblačne storitve ali druge sisteme, katerih zloraba bi lahko povzročila precejšnjo škodo.

Obseg testiranja je zato mogoče prilagoditi dejanskemu okolju in tveganju.

Manjše podjetje morda ne potrebuje obsežnega večtedenskega penetracijskega testa celotne infrastrukture. Zelo koristno pa je lahko ciljno preverjanje javno dostopnih storitev ali najpomembnejše poslovne aplikacije.

Glavni namen pentesta ni napad, temveč izboljšanje varnosti

Čeprav penetracijsko testiranje uporablja napadalne tehnike, njegov končni cilj ni »vdreti v sistem«.

Cilj je pridobiti odgovor na bistveno pomembnejše vprašanje:

Kako varen je naš sistem, če ga nekdo dejansko poskuša napasti?

Dober penetracijski test organizaciji pokaže, katere ranljivosti obstajajo, kako resne so, kaj bi lahko pomenile v resničnem napadu in katere ukrepe je treba izvesti najprej.

Zato je penetracijsko testiranje predvsem orodje za boljše razumevanje tveganja in izboljšanje kibernetske varnosti.


Pogosta vprašanja o penetracijskem testiranju

Kaj pomeni penetration testing?

Penetration testing oziroma penetracijsko testiranje je nadzorovano varnostno preverjanje informacijskega sistema, pri katerem strokovnjak poskuša odkriti in v dogovorjenem obsegu preveriti možnost izrabe ranljivosti.

Je penetracijsko testiranje isto kot pregled ranljivosti?

Ne povsem. Pregled ranljivosti je pogosto avtomatiziran in išče znane pomanjkljivosti. Penetracijsko testiranje vključuje dodatno analizo ter preverjanje, ali je mogoče posamezne ranljivosti dejansko izkoristiti.

Koliko časa traja penetracijski test?

Čas je odvisen od velikosti in kompleksnosti sistema ter dogovorjenega obsega. Test posamezne spletne aplikacije je lahko bistveno krajši od pregleda večjega poslovnega omrežja z več strežniki in lokacijami.

Ali se penetracijski test izvaja na produkcijskem sistemu?

Lahko, vendar mora biti testiranje skrbno načrtovano. Pri občutljivih sistemih se določene metode omejijo ali pa se del preverjanja izvede v ločenem testnem okolju.

Ali pentest zagotavlja, da sistema ni mogoče vdreti?

Ne. Penetracijski test bistveno pomaga pri odkrivanju ranljivosti, vendar noben pregled ne more zagotoviti absolutne varnosti. Kibernetska varnost je neprekinjen proces.

Ali lahko sam izvedem penetracijski test tuje spletne strani?

Ne brez ustreznega dovoljenja. Varnostno testiranje je treba izvajati na lastnih sistemih, v namenskih učnih laboratorijih ali na sistemih, za katere imamo jasno dovoljenje lastnika oziroma upravljavca.