Objavljeno: 11.6.2019 | Avtor: Simon Peter Vavpotič | Monitor Posebna 2019

Smo varni pred hekerskimi napadi?

Ko menimo, da smo naredili vse, da bi hekerjem preprečili vdor v lastno intranetno omrežje, je pametno to tudi preizkusiti. Kako testiramo? Katero programsko opremo uporabljamo? Lahko testiranje naročimo?

Namen varnostnega testiranja je razkritje napak in pomanjkljivostih v intranetni strojni in programski opremi, ki lahko poslabšajo informacijsko varnost. Nepooblaščeni dostop in kraje osebnih podatkov, osebnih digitalnih potrdil, zbirk znanj in avtorskih del imajo lahko za prizadete uporabnike hude moralne, materialne in pravne posledice. Za osnovno zagotavljanje kibernetske varnosti mora skrbeti operater dostopa do interneta, ki je k temu običajno tudi zakonsko zavezan, medtem ko je naša naloga varovanje intranetne računalniške strojne in programske opreme.

Samo za lastno uporabo, lastno strojno opremo in na lastno odgovornost!

Časi, ko so nadobudne najstniške hekerje, ki so vlomili v strogo varovane informacijske sisteme, slavili kot junake, ki so s svojimi dejanji pomembno prispevali k večji informacijski varnosti, in mnoge kasneje zaposlili kot strokovnjake za informacijsko varnost, so davno mimo. Danes vemo, da imata lahko vlom v tuj informacijski sistem in morebitno kopiranje podatkov iz njega zaradi kršenja osnovne človekove pravice do zasebnosti veliko hujše posledice kot vlom v tuje stanovanje. Metode za preverjanje ranljivosti intranetnih omrežij moramo zato uporabljati izključno v lastnem informacijskem sistemu, za tuj informacijski sistem pa kvečjemu v dogovoru z njegovim lastnikom in skrbnikom.

Čeprav je včasih veljalo, da smo vsaj doma varni pred hekerji, danes to zaradi vsako leto odkritih novih ranljivosti računalniške opreme in zmogljivejših hekerskih programskih orodij iz temnega dela interneta več ne drži. Zlonamerna vohunska programska oprema, ki se neopazno prikrade v naše računalnike, lahko pomeni potencialno nevarnost usmerjenega hekerskega napada v prihodnosti, če bi hekerji ocenili, da bodo imeli od njega koristi. Denimo, lahko bi namestili ransomware in čez čas zahtevali odkupnino.

Prebojni test

Prebojni test (angl. penetration test) simulira hekerski napad na intranet z namenom preverjanja kibernetske varnosti, vendar je izveden izključno z našim dovoljenjem. Pokaže šibke točke oziroma ranljivosti, zaradi katerih bi lahko nepooblaščeni zunanji uporabnik dostopal do storitev ali podatkov v naših računalnikih in omrežni infrastrukturi, v poročilu pa navede tudi dobre lastnosti obstoječih zaščit.

Domača stran BlackArch, s katere lahko prenesemo posebno distribucijo Arch Linux za izvajanje prebojnih testov.

V splošnem ločimo dva načina prebojnega testiranja: testiranje varnosti intraneta s poznavanjem njegovih arhitekture, zgradbe in delovanja (t. i. bele škatle, angl. white box) in testiranje intraneta kot neznanega informacijskega sistema (t. i. črne škatle, angl. black box). Vmesna možnost je testiranje intraneta kot sive škatle (angl. gray box), pri katerem pred začetkom izvajalcu in/ali programskim orodjem za testiranje podamo le tiste podatke, za katere verjamemo, da bi jih lahko hekerji dovolj enostavno izvedeli.

Cilji prebojnega testa so odvisni predvsem od mogočih aktivnosti intranetnih računalnikov in njihovih uporabnikov. Pri iskanju ranljivosti upoštevamo arhitekturo in nastavitve intranetne strojne ter programske opreme. Denimo, če dovolimo samo namestitev in uporabo enega spletnega brskalnika (npr. Microsoft Internet Explorer), ranljivosti drugih spletnih brskalnikov (npr. Google Chrome) ni treba preverjati.

Rezultati prebojnega testa so ponavadi vsaj nekaj časa skrivnost, saj ne želimo, da bi za morebitne odkrite ranljivosti izvedeli tudi spletni kriminalci, ki bi jih lahko s pridom izkoristili za kasnejši zlonamerni vdor v naše računalnike, še preden bi nam uspelo ranljivosti odpraviti.

Kako poteka testiranje?

Najprej se lotimo pregleda in preverjanja podatkov o intranetnih omrežnih napravah in računalnikih ter sistemski in aplikacijski programski opremi, ki jo uporabljamo. Tako lažje predvidimo morebitne ranljivosti in s spleta prenesemo ustrezno programsko opremo za njihovo odkrivanje.

Testiranje ranljivosti po naročilu

V svetu ne manjka ponudnikov testiranja ranljivosti intranetnih omrežij, nekaj pa jih je menda tudi v Sloveniji. Prednost zunanjega testiranja je v tem, da preizkus opravi neodvisna ekipa strokovnjakov za informacijsko varnost, v kateri so pogosto tudi (bivši) hekerji. Pri odkrivanju ranljivosti lahko zato uporabi tudi alternativno programsko opremo in metode, ki jih morda sami ne poznamo.

Pri odkrivanju ranljivosti domačega interneta smo (predvsem finančno) omejeni le na uporabo takih ali drugačnih (zastonjskih) preizkuševalnih orodij in gradiv z interneta, saj si dragega zunanjega testiranja ne bi mogli privoščiti.

Sledi preverjanje možnosti vdora z interneta na načine, ki bi jih lahko uporabil zunanji napadalec. Pri tem imamo na voljo različne zastonjske in plačljive programske pakete, kot so Nmap, FScan in Free Port Scanner, s katerimi lahko poiščemo različne vrste strežnikov in storitev v intranetu, za katere morda za zaradi kompleksnosti novodobnih operacijskih sistemov in druge sistemske programske opreme niti ne vemo. Obenem izvemo tudi njihove naslove IP in vrata IP ter nato poskušamo s posebnimi programskimi orodji odkriti njihove ranljivosti, pri čemer si lahko pomagamo z različnimi javno dostopnimi spletnimi zbirkami znanja.

V tretjem koraku posnemamo delo hekerjev in poskušamo na različne načine izrabiti odkrite ranljivosti in zaobiti zaščite posameznih spletnih storitev ter »nepooblaščeno« pridobiti podatke iz vsakega od (ključnih) računalnikov v intranetu ali jih celo spremeniti.

Dejavnost hekerjev se navadno ne konča z vdorom v intranet in enkratnim kopiranjem podatkov, temveč v računalnikih pustijo odzadnja vrata ter drugo neželeno in vohunsko programsko opremo, ki omogoča zajemanje tipk s tipkovnice, snemanje zaslona med delom uporabnikov, zvokovno in slikovno snemanje, če ima računalnik mikrofon in kamero, namerno namestitev programske opreme za predvajanje oglasov med našim brskanjem po spletu (adware) pa tudi spreminjanje v računalniku shranjenih uporabniških podatkov in vsebine sistemskega registra ter drugih sistemskih datotek.

Zadnji korak je iskanje možnosti, ki jih ima heker za prikrivanje svojih aktivnosti v sistemskih in aplikacijskih beležkah. Zanima nas predvsem, ali je v programski in/ali strojni opremi zagotovljeno trajno hranjenje neizbrisljivih sledi skrbniških in uporabniških dostopov. To je pri strojni in programski opremi za domače računalnike pogosto neizvedljivo, je pa mogoče namestiti dodatno programsko opremo za hrambo kontrolnih sledi, s katero se te shranijo na sistemske podatkovne nosilce na težko izsledljiv in izbrisljiv način. Ta je neodvisen od zapisov, ki ga tvori storitev za beleženje sistemskih dogodkov operacijskega sistema.

Programska oprema

Odkrivanje ranljivosti ni vselej trivialno, zato na spletu najdemo kar nekaj namenskih distribucij operacijskih sistemov (predvsem Linuxa) s priloženimi programskimi orodji za prebojno testiranje, kot so BlackArch na osnovi Arch Linuxa, BackBox na osnovi Ubuntuja, Kali Linux in Parrot Security OS na osnovi Debiana, Pentoo na osnovi Gentooja in WHAX na osnovi Slackwareja, ki se osredotočajo na različna področja prebojnega testiranja. Na voljo so tudi različice, ki so posebej prilagojene za delovanje v navideznih računalnikih, najpogosteje za okolji VMware in VirtualBox. Ni odveč, če rezultate testiranj vsaj v grobem dodatno preverimo vsaj še z eno distribucijo.

BackBox, posebna distribucija različice Linuxa Ubuntu, z orodji za izvajanje prebojnih testov.

Obsežna zbirka znanja na GitHubu

GitHub je dandanes eden izmed glavnih svetovnih portalov, na katerem lahko programerji in programerski timi objavljajo svojo izvorno in izvedljivo kodo, v zadnjem času pa tudi zbirke znanja. Projekt Strahospoštovano prebojno testiranje (angl. Awesome Prenetration Testnig) je v resnici le zbirka spletnih naslovov: literature, izobraževanj, programerskih okolij, orodij, pripomočkov in knjižnic, primerov programov ter programskih okvirov za socialno inženirstvo, ki je ena od temeljnih hekerskih dejavnosti v spletu. Vključuje tudi spletne povezave do zbirke znanih ranljivosti in orodij za raziskovanje računalniških omrežij. Ne manjkajo niti ofenzivna programska orodja, s katerimi lahko simuliramo napad na svoj intranet. Najdemo tudi orodja za zagotavljanje spletne anonimnosti, s katerimi lahko po eni strani komurkoli otežimo ali preprečimo, da bi sledil našim spletnim aktivnostim, če tega ne želimo, po drugi strani pa enaka orodja uporabijo tudi hekerji, da zakrijejo sledi svojih kriminalnih dejanj.

Še posebej velja izpostaviti izčrpen seznam literature o računalniški varnosti. Defenzivno programiranje je namenjeno avtorjem, tehnologom in programerjem spletnih aplikacij, ki želijo svoje izdelke zasnovati na celovitih in varnih programerskih praksah. Številni hekerski priročniki predstavijo logiko in način razmišljanja hekerjev, da bi tako sami lažje izdelali varne programske aplikacije. Avtorji se lotevajo najrazličnejših področij: od varnosti spletnih brskalnikov, podatkovnih zbirk, operacijskih sistemov (Mac OS X, iOS in Microsoft Windows), varnosti programiranja v skriptnih programskih jezikih do varnosti in ranljivosti spletnih aplikacij.

Celovito prodorno testiranje predstavlja obsežen seznam literature, pri čemer so nekateri priročniki v celoti posvečeni rabi določenih programskih orodij in programskih okvirov, kot je Metasploit. Drugi obravnavajo različne tehnike vdora v intranetna omrežja, denimo fuzzing, ki spada med načne vdora z uporabo grobe sile. Tretji se lotevajo raziskovanja zlonamerne programske opreme v popularnih skriptnih programskih jezikih (npr. Python). Med hekerskimi priročniki najdemo tudi take, ki se že v naslovu pohvalijo s t. i. vlamljanjem ključavnice (angl. lock picking), ki je v računalniškem žargonu sinonim za prodorno testiranje, vendar namiguje tudi na zlonamerno vlamljanje v informacijske sisteme. Veliko pozornosti je namenjene tudi forenzični analizi zlonamerne programske opreme in praktičnim rešitvam za njeno odkrivanje ter obravnavo intranetnih ranljivosti.

Na svoj račun lahko pridejo tudi ljubitelji povratnega inženirstva. Vsekakor pa sta tu v ospredju preprečevanje tovrstnih nezakonitih programerskih praks in pisanje lastne programske opreme na način, ki otežuje povratno inženirstvo.

Številni priročniki na temo socialnega inženirstva pojasnjujejo, kako hekerji brez uporabe visoke tehnologije z raznimi zvijačami (npr. lažno predstavljanje za skrbnika informacijskega sistema, ki od uporabnika zahteva njegovo geslo, da bi lahko nekaj preveril …) od uporabnikov pridobijo različne podatke, ki jim nato omogočijo vdore v intranetna omrežja.

Kot jagodo na torti najdemo na koncu še obsežen seznam povezav do spletnih strani varnostnih konferenc, kjer strokovnjaki za računalniško varnost, pogosto pa tudi hekerji (odvisno od organizatorja in tipa konference), predstavijo izsledke svojih raziskav, eksperimentalno programsko opremo za prodorno testiranje in na novo odkrite ranljivosti v velikoserijski strojni in programski opremi. Še posebej velja izpostaviti ameriške konference Black Hat, Hackfest, RSA Conference USA in DEF CON. Kot zanimivost pa povejmo, da se tovrstne konference odvijajo tudi na področju bivše Jugoslavije, denimo varaždinski Fsec in novosadski BalCCon.

Na spletu najdemo tudi različne programske okvire s programskimi orodji za prebojno testiranje in varnostno analizo, kot so Buro Suite, Metasploit Project, Nessus, Nmap, OpenVAS, OWASP ZAP in W3af. Namenjeni so predvsem izkušenim inženirjem s področja informacijske varnosti, ki jih želijo sami namestiti v ustrezno predpripravljene operacijske sisteme svojih računalnikov. Pri tem je dostikrat potrebno mukotrpno prevajanje programske kode, pri katerem moramo pogosto s spleta prenesti manjkajoče programske knjižnice. V določenih operacijskih sistemih je predhodno treba namestiti tudi ustrezne različice prevajalnikov za posamezne programske jezike (denimo za Python).

Po drugi strani lahko na spletu poiščemo tudi posebne distribucije operacijskih sistemov z namerno vgrajenimi ranljivostmi (Damn Vulnerable Linix (DVL), OWASP Web Testing Environment (WTW), Metasploitable …), ki jih lahko poganjamo kot učne tarčne operacijske sisteme za odkrivanje in odpravljanje različnih vrst ranljivosti.

Opcije za namestitev BlackArch, ki vsebujejo tudi programsko opremo za preverjanje pravilnosti delovanja glavnega pomnilnika.

Nevarne ranljivosti

Ena ranljivost v zgradbi kompleksne programske opreme navadno še ne pomeni katastrofe oziroma nenamernih odzadnjih vrat. Kljub temu je kombinacija velikega števila varnostnih lukenj nemalokrat usodna, saj lahko hekerji s svojimi samodejnimi programskimi orodji izkoriščajo vse ranljivosti hkrati in si pri tem postopno ustvarijo odzadnja vrata.

Mnogi računalniški laiki verjamejo, da prek spletnega strežnika in zalednega strežnika podatkovne zbirke ni mogoče vdreti v intranet, vendar to ne drži. Programerji morajo pri pisanju programske kode še kako paziti, da ne vgrajujejo (usodnih) ranljivosti, in morajo vsako aplikacijo pred namestitvijo na produkcijske strežnike temeljito preizkusiti. S samodejnimi programskimi orodji za prebojno testiranje lahko ugotovijo, ali morebiti obstajajo nepodprte podatkovne poti, pri katerih spletni strežnik uporabniku posreduje podrobna obvestila o sistemskih napakah, ki nastanejo pod ravnjo aplikacije. Heker lahko iz njih pridobi veliko podatkov o sistemski programski opremi ter spletnem in podatkovnem strežniku, ki poganjata spletno stran.

Hekerji lahko poskušajo na spletni strežnik tudi injicirati zlonamerno programsko kodo prek morebiti nezaščitenih izravnalnikov za branje vhodnih podatkovnih tokov (podatki o seji, vnosna polja spletne strani, kolački, preverjanje in nalaganje datotek na spletni strežnik …), ki pritekajo. Ta nevarnost obstaja predvsem v primerih, ko si programerji obravnavo podatkov iz vhodnih polj spletne strani in drugih vhodnih tokov poenostavijo z uporabo posebnega programskega stavka (execute), ki omogoča izvajanje poljubnega stavka SQL iz poljubnega znakovnega niza. Z dinamično tvorbo stavkov SQL v programski kodi si resda olajšajo izvajanje kompleksnejših poizvedb v podatkovni zbirki, a obenem lahko hekerji prek vnosnih tokov namesto pričakovane alfanumerične vsebine podtaknejo celoten ugnezdeni stavek SQL, ki ga podatkovni strežnik izvede brez potrebnega pregleda. Z dodatnimi programerskimi triki se lahko prek izpisov napak pri dostopu do spletne strani dokopljejo celo do shranjenih procedur na podatkovnem strežniku ali pa jih nemara spremenijo in dodajo svoje.

Domača stran Exploitpedije z zbirko znanja za izvajanje prebojnih testov in odkrivanje ranljivosti.

Dobro je razmišljati tudi o varnostnem kodiranju ali drugih zaščitah neprevedene programske kode, ki jo izvajajo interpreterji številnih skriptnih programskih jezikov (npr. VBscript) pa tudi Jave. Tovrstno enostavno berljivo programje pogosto povezuje različne programske aplikacije na intranetnih strežnikih na najvišji ravni in s tem hekerju omogoči spoznavanje z arhitekturo strojne in programske opreme intraneta.

Prebojno testiranje domačega računalnika

Domači računalniki, ki so stalno vklopljeni in povezani z internetom, navadno ne dajejo znakov, da bi bilo z njimi kaj narobe. Kljub temu pa ni izključeno, da nimajo varnostnih pomanjkljivosti ali odzadnjih vrat, prek katerih so morda že vključeni v temne dele interneta in ob pomoči katerih hekerji zakrivajo sledi svoje dejavnosti predvsem takrat, ko se lotevajo napadov na večje tarče, pri katerih potrebujejo veliko zasužnjenih računalnikov.

Domači računalnik lahko najhitreje začnemo celovito testirati, če v operacijski sistem namestimo podporo za gostovanje navideznih računalnikov ali pa imamo na voljo star PC, ki ga sicer ne uporabljamo in ga lahko izkoristimo kot računalnik, iz katerega izvajamo prebojno testiranje. Nato s spleta potegnemo eno izmed prej omenjenih distribucij operacijski sistemov za prebojno testiranje in jo namestimo. Po drugi strani v sodobnih pecejih z 8 GB ali več delovnega pomnilnika s poganjanjem navideznih računalnikov ne bi smeli imeti težav, saj je na spletu voljo tudi zastonjska podpora za gostovanje navideznih računalnikov, kot sta VirtualBox in VMware (le za osebno uporabo).

Standardizirane vladne prebojne storitve

Razvite države dajejo informacijski varnosti velik pomen. V ZDA je za standardizacijo storitev izvajanja prebojnih testov za računalniško programsko in strojno opremo zadolžena vladna služba GSA (angl. General Services Administration), ki ima na svoji spletni strani objavljen prebojni test za hitro oceno potencialnih ranljivosti in preprečevanje njihovega izkoriščanja, s katerim želijo preprečiti hekerske vdore v informacijske sisteme državne administracije. Na svoji spletni strani redno posodabljajo seznam visoko prilagodljivih storitev na področju kibernetske varnosti, HACS (angl. Highly Adaptive Cybersecurity Services). GSA vodi tudi seznam ključnih tehnično usposobljenih ponudnikov storitev preverjanja spletne varnosti, ki omogoča vladnim službam hitro naročanje in namestitev tovrstnih storitev ter zagotavlja varovanje in zaščito informacijske infrastrukture administracije ZDA.

Standardizirano prebojno testiranje 132-45A posnema izvedbo dejanskih hekerskih napadov z metodami, s katerimi hekerji zaobidejo varovalne elemente aplikacije, informacijskega sistema ali računalniškega omrežja. Storitve prebojnega testiranja, HACS, so namenjene strateškemu testiranju preventivnih in detekcijskih ukrepov (vladnih) organizacij za zaščito podatkov in dobrin. Testiranje 132-45A vključuje tudi sodelovanje certificiranih etičnih hekerjev, ki izvedejo simulacijo napada na informacijske sisteme, sistemske aplikacije ali druge izbrane tarče, v katerih iščejo ranljivosti.

Po testiranju varnostni inženirji in certificirani etični hekerji pripravijo poročilo s popisom ranljivosti in pregledom učinkovitih obrambnih postopkov ter programske opreme in tistih obrambnih postopkov ter programske opreme, ki jih lahko hekerji premagajo ali izkoriščajo za napade na druge informacijske sisteme.

Osnovna uporaba namenskih distribucij operacijskih sistemov je sorazmerno enostavna, vendar ne smemo pozabiti prepisati pristopnih gesel in uporabniških imen, ki jih ponudniki namenskih distribucij operacijskih sistemov navajajo na svojih spletnih straneh. Večina orodij za izvajanje prebojnih testov je v veliki meri avtomatiziranih in omogočajo sorazmerno enostaven začetek uporabe (npr. Wire Shark za spremljanje podatkovnega prometa po omrežjih IP). Vsekakor pa so za napredno uporabo potrebna številna teoretična in praktična računalniška znanja.

Komu zaupati?

Vsakoletna nova strojna in programska oprema z več varovali pred vdori hekerjev s spleta nas sili v pogoste posodobitve strojne opreme, ki poganjajo računalniško industrijo, zato je malo verjetno, da bomo v prihodnosti dobili strojno in programsko opremo, ki bo popolnoma varna pred napadi hekerjev. Bolj verjetno je, da bomo prisiljeni še naprej nalagati številne varnostne popravke operacijskih sistemov in večjih paketov programske opreme, kot je Microsoftov Office.

Eno izmed spletnih izobraževanj v obliki predstavitve, ki jih lahko prenesemo z interneta.

Ob vsem napisanem se lahko kaj hitro začnemo spraševati, kako se najučinkoviteje lotiti preverjanja varnosti in prebojnosti svojega intraneta. Redno varnostno testiranje z zadnjimi različicami namenske programske opreme sproti razkriva nezakrpane stare in nove ranljivosti. Če te poznamo, svoje računalnike, omrežno strojno opremo in vso programsko opremo veliko lažje zavarujemo.

Vendar tudi posvet z računalniškim strokovnjakom s področja informacijske varnosti ali z dobrim (etičnim) hekerjem vsekakor ni odveč. Ta bo znal svetovati o mogočih ranljivostih intraneta in predlagal najučinkovitejši način izvedbe prebojnega testa. Če te možnosti nimamo, se lahko odpravimo v knjigarno (npr. Amazonovo) in (prek spleta) nabavimo katerega od obsežnih priročnikov. Žal splošnega recepta, kako neprebojno zaščititi sodobne domače računalnike pred vdori z interneta, za zdaj še ni …

Zanimivo branje

Koncept in pomen varnostnega testiranja, ki vključuje tudi prebojno testiranje: en.wikipedia.org/wiki/Security_testing

Zbirka znanja oziroma spletnih naslovov, Awesome Prenetration Testning: github.com/enaqx/awesome-pentest

Zbirka znanja, organizirana podobno kot Wikipedija, za varnostne strokovnjake, ki se profesionalno ukvarjajo s prebojnim testiranjem: wiki.exploitpedia.org

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji