Kradljivci šifri

- door key by woodleywonderworks
U prethodnom tekstu ove serije članaka bilo je riječi općenito o šiframa, šta su zapravo i kakve bi trebale biti. Utvrdili smo i osnovne principe zaštite para korisničko ime – šifra. Ipak, sva priča od prošli put ima jedan problem: zasniva se na premisi da su sistemi servera i klijenta sigurni, kao i da njihovu međusobnu komunikaciju ne prisluškuje neko treći. Na žalost, ovo nije uvijek slučaj i tako dolazimo do čitave nove grupe problema sa šiframa i korisničkim podacima općenito.
Ako ponekad odvojite koji trenutak i pročitate naslove vijesti sa polja računarske sigurnosti, često ćete naići na priče o krađi korisničkih podataka, narušenoj privatnosti i sličnom. Vjerujte nam na riječ: tamo negdje postoji neko ko želi vaše podatke. Želi pristup vašim korisničkim računima za razne usluge širom Interneta. Zašto?
Teško je uprijeti prstom u konkretan razlog, ne radi se uvijek o direktnoj koristi kakvu ilustrira npr. ukradeni broj kreditne kartice, ali obzirom da se redovito dešava da negdje budu pokradeni podaci o hiljadama korisničkih računa, lako je zaključiti da tu očito nečeg ima (špijunaža?). Kakvi god da su motivi nepoznate treće strane, treba se zaštiti. Čak i kad vam lopov provali u kuću i pritom ne ukrade ništa, ne osjećate se prijatno kad su vam kopali po stvarima. Preventiva je najbolji lijek.
“Zašto bi neko ukrao moje korisničko ime i šifru, ja nemam ništa vrijedno”, reći će naivan korisnik. Krađa ne mora biti ciljana da bi ‘upalila’, ide se nasumice i uzda u zakon velikih brojeva, negdje u toj masi će se sigurno ‘upecati’ nešto vrijedno. Poznati su i primjeri ciljanih napada na pojedince ili organizacije, ali to su već priče o (industrijskoj) špijunaži i ‘nacionalnoj sigurnosti’ koje izlaze iz okvira ovog teksta.
Obzirom da su šifre najčešće glavna prepreka između cyber-kriminalca i njegovog plijena, vrlo često su na udaru. Nije ‘probijanje’ ili ‘pogađanje’ šifre jedini način da se do nje dođe, postoji čitav niz metoda da se dokopa tuđih podataka. Nekada se radi o klasičnoj prijevari, a nekad i o infiltraciji korisničkog sistema softverom čiji je zadatak potraga za zanimljivim podacima i prosljeđivanje istih svom autoru.
Prevencija – hashiranje
Ukoliko se želite domoći velikog broja šifri, napast ćete, logično, mjesto gdje se veliki broj šifri čuva na jednom mjestu – server. Na sreću, servere održavaju ljudi koji su (bar bi trebali biti) znatno potkovaniji na polju računarske sigurnosti od prosječnog korisnika, a i sami serveri su dizajnirani mnogo robusnije i sigurnije. Ipak, mala nepažnja može dovesti do katastrofe, a rupe u sistemu i sigurnosni propusti se pronalaze svakodnevno. Najbolje bi bilo kad se šifre uopće ne bi pamtile na serverima, jer tad se ne bi imalo šta ni ukrasti, zar ne?
Proces tzv. hashiranja je već dugo općeprihvaćena praksa u informatici, primjenjivana na raznim poljima. Jedno od tih polja je i kriptografija gdje kriptografska hash funkcija podrazumijeva determinističku proceduru koja na osnovu ulaznog podataka daje izlaz fiksne dužine (da ne bi bilo zabune, svako spominjanje hash funkcije i hashiranja u nastavku odnosi se na kriptografske hash funkcije). Taj izlaz (često zvan i hash-kod ili samo hash) ima specifična svojstva, izuzetno bitna za kriptografske primjene. U idealnom slučaju, ta svojstva su:
- na osnovu hash-koda nemoguće je (bit ćemo korektni pa reći da je teoretski moguće, ali ne u razumnom vremenu) odrediti ulazni podatak algoritma koji ga je proizveo;
- nemoguće je promijeniti ulazni podatak bez da se ta promjena odrazi na njegov rezultirajući hash-kod;
- dva različita podatka ne mogu imati isti hash-kod.
U prijevodu, hash-kod nekog podatka je njegov ‘otisak prsta’. Baš kao što na osnovu otiska prsta ne možemo klonirati osobu kojoj pripada (bar ne 2010. godine), ni na osnovu hash-koda ne možemo klonirati podatak koji ga je proizveo. Također, jendako kao što otisak prsta jednoznačno identificira neku osobu, tako i hash-kod jednoznačno identificira neki podatak. Ukoliko se dva otiska prsta razlikuju, radi se o dvije različite osobe. Dakle, kriptografski hash-kod može se, između ostalih primjena, odlično upotrijebiti za potrebe autentikacije.
Dobro dizajniran sistem nikad neće pohraniti šifre svojih korisnika u bilo kom formatu koji je lako čitljiv. Jer, ne zaboravite, sve te šifre moraju negdje biti zapisane na ovaj ili onaj način, što znači da pod određenim uvjetima mogu biti čitljive ne samo sistemu za autentikaciju korisnika, već i drugom softveru koji tada može doći do korisničkih šifri. Obzirom da prilika čini lopova, česta praksa je da se korisničke šifre uopće ne pamte, već samo njihovi hash-kodovi. Prilikom svakog prijavljivanja korisnika u sistem, unesena šifra se iznova hashira i rezultat se uspoređuje sa hash-kodom pridruženom korisničkom računu korisnika koji se pokušava prijaviti. Ukoliko je rezultat identičan onom zabilježenom u arhivi, može se sa sigurnošću tvrditi da je korisnik unio dobru šifru. Drugim riječima, sistem uopće ne mora pamtiti šifre svojih korisnika, što nas dovodi u situaciju da sa tog sistema te šifre onda ni ne mogu biti ukradene. Ovo se smatra dobrom praksom za serversku stranu naše idealizirane priče o šiframa.
Trojanci
Vratimo se klijentima. Nije teško zaključiti da postoje situacije kada želimo da sistem zapamti naše šifre. Primjer ovakve situacije su password manageri web browser aplikacija. Njihov zadatak je u većoj mjeri automatizirati prijavljivanje svojih korisnika na brojnim lokacijama na webu, na način da automatski upišu zapamćeno korisničko ime i šifru na odgovarajućoj lokaciji. Dakako, browseri imaju ugrađene mjere zaštite svojih password managera, što opet ne znači da te mjere ne mogu biti probijene. Ipak, daleko najčešći uzrok ‘curenja’ šifri iz browsera su sami korisnici koji instaliraju dodatke i proširenja (popularne plugine) sumnjivog porijekla. Svaki put kad se korisnik prijavi na nekoj web lokaciji (unoseći podatke ‘ručno’ ili putem password managera, nebitno), podaci o toj prijavi (korisničko ime i šifra) putem malicioznog dodatka bivaju proslijeđeni njegovim autorima. Ovakvo ponašenje softvera se savršeno uklapa u definiciju tzv. trojanaca.
Trojanski konj ili trojanac je maliciozni softver koji se izdaje da obavlja neku korisnu funkciju. Vjerujući da je doista tako korisnici pokreću i/ili instaliraju takav program na svom kompjuteru. Trojanci nerijetko doista obavljaju funkcije pod kojima se ‘reklamiraju’, međutim, njihova prava svrha je skrivena od korisnika. Vrlo često prava zadaća je prikazivanje reklamnog sadržaja na neuobičajenim/neželjenim mjestima (npr. desktop), izbacivanje nekontroliranih pop-up prozora ili instaliranje alatnih traka (toolbar) u web browsere bez odobranja korisnika. Na žalost, trojanci mogu imati i daleko opasnije namjene.
Neki trojanci svojim autorima daju udaljeni pristup inficiranim mašinama. U takvim situacijama takav kompjuter može postati dio botneta, na njega se mogu instalirati drugi programi bez znanja i saglasnosti korisnika, te downloadati i općenito krasti podaci. Također se mogu pratiti unosi s tastature inficiranog računara. Potencijalnih problema može biti još, a svi odreda znatno ugrožavaju sigurnost i privatnost korisnika takvog kompjutera.
Također treba naglasiti da trojanci znaju pregledavati podatke na disku kompjutera zapisane u nešifrovanom obliku (uobičajene ekstenzije tipa .txt), u potrazi za šiframa i drugim osobnim podacima koji bi mogli donijeti korist autorima malicioznog koda. Iako je često neophodno imati negdje zapisane gomile šifri kojima u današnje vrijeme moramo žonglirati, nepreporučljivo je držati ih u plain text formatu negdje na disku. Postoje posebni programi koji se brinu o enkripciji arhivi šifri, o čemu će više riječi biti u nekom od narednih članaka.
Keyloggeri
Obzirom da su naša tema ipak šifre i da se o trojancima može napisati još puno toga a da za nju nije relevantno, fokusirat ćemo se na tzv. keyloggere. Keystroke logging, tj. praćenje tipkanja je proces kojim se bilježe sekvence utipkane na tastaturi, obično na način da toga korisnik nije svjestan. Softver koji obavlja zadatke keystroke logginga je keylogger i često se svrstava u kategoriju trojanaca i spywarea. Postoje i hardverski keyloggeri koji imaju istu funkciju kao i njihove softverske kolege, ali primjena im je nešto kompliciranija jer zahtjevaju fizički pristup kompjuteru-žrtvi.
Sjećate se lekcija informatike iz osnovne škole? Kompjuter ima ulazne, izlazne i centralnu jedinicu. Korisnik na ulazne jedinice unosi neke podatke, centralna jedinica ih obrađuje i korisniku vraća povratnu informaciju preko izlaznih jedinica. Primjer bi bio tipkanje korisničkog imena i šifre (ulazne jedinice), obrada unosa (to radi misteriozna crna kutija zvana centralna jedinica) i prikazivanje poruke dobrodošlice na ekranu nakon pravilnog unosa (izlazna jedinica). Srž kompjuterskog dizajna je praćenje korisničkih unosa i reagiranje na njih. I kompjuter autora ovog teksta prati njegovo pritiskanje dugmadi na tastaturi da bi kao reakciju na to formirao tekst koji vi upravo čitate. Dakle, praćenje korisničkih unosa je, logično, potpuno normalna stvar.
Međutim, normalna stvar nije te unose proslijeđivati trećoj strani bez znanja korisnika, a to je upravo ono što keyloggeri rade. Kao i većina drugog spywarea i keyloggeri na kompjutere-žrtve najčešće dolaze kao dodaci koji se moraju instalirati da bi radila neka besplatna aplikacija, kroz instant messaging, peer-to-peer downloade, download managere, online igre, stranice pornografskog ili warez sadržaja i slično. Također, uvijek je prisutna opasnost iskorištavanja sigurnosnih propusta pri interpretiranju Active-X ili JavaScript koda. Da bi obavili svoju prljavu rabotu mnogi keyloggeri se skrivaju od korisnika, tj. ponašaju se kao tzv. rootkiti tako da je gotovo nemoguće reći je li na nekom kompjuteru postavljen keylogger ili ne. Za razliku od drugih malicioznih programa, keyloggeri ne predstavljaju prijetnju samom sistemu, već samo njegovim korisnicima. Krade se sve: PIN kodovi i brojevi računa e-banking stranica, šifre za online igre, korisnička imena i šifre email accounta itd. Kompromitiranje šifre email accounta ujedno znači i kompromitiranje svih podataka u arhivama odlaznih / dolaznih email poruka. U doba Gmaila i gotovo neograničenog prostora za email arhivu (ništa se ne briše), problem može zahvatiti i duboko u prošlost. Vrlo neugodna situacija za poslovne korisnike.
Ovdje treba napomenuti da se keyloggeri mogu koristiti i u potpuno opravdane i legalne svrhe, npr. u svrhu roditeljskog nadzora (primjerice, mogu ih koristiti roditelji da saznaju šta im djeca rade u sitne sate u bespućima Interneta) ili kontrole uposlenika (koriste li se kompjuteri firme za privatne svrhe?), ali linija između opravdanog nadgledanja i špijunaže je jako tanka i granica je više etičke no tehnološke prirode. Postoje keyloggeri koji se normalno prodaju na tržištu i namijenjeni su za poptupno legalne svrhe, međutim, svi keyloggeri se vrlo lako mogu zloupotrijebiti.
Kako keyloggeri rade? Pokušat ćemo vam ugrubo dočarati njihov način rada, bez da ulazimo previše u detalje. Nakon što se pritisne tipka na tastaturi odvija se čitav lanac događaja prije nego se slovo pojavi na ekranu monitora. Ideja iza keyloggera je ubaciti se bilo gdje izmeđi dvije karike tog lanca i presresti poruku od tastature ka monitoru. Također, u slučaju da se želi dočepati šifri web lokacija, moguće je presresti poruku negdje u steku softvera između web browsera i drivera mrežne kartice. Ovo se može učiniti na mnogo načina, od hardverskih (npr. umetanje posebnog keylogging uređaja na kabl između tastature i kompjutera) do softverskih. Potonji mogu podrazumijevati zamjenu drivera za tastaturu, presretanje funkcija kernela (npr. zamjena memorijskih adresa u sistemskim tabelama), presretanje DLL funkcija ili zahtjevanje podataka od tastature koristeći uobičajene (propisane) načine – korištenjem APIja operativnog sistema. Također, česti su slučajevi kopiranja ClipBoarda i sadržaja web-formi koje često sadrže korisničko ime i šifru (podaci se kopiraju prije nego krenu putem Interneta, čime se zaobilazi https enkripcija). Moguće je i analiziranje mrežnog prometa povezanog sa HTTP POST događajima. Dovitljivost malicioznog korisnika je doista nepresušna.
Zašita
Keyloggeri i srodni im trojanci vrlo su popularni kod malicioznih korisnika upravo zato što su tako dobro prilagođeni dobavljanu korisničkih podataka koji lako mogu dovesti do direknte materijalne koristi (npr. krađa podataka o Internet bankarstvu). Ovo dovodi do njihove široke rasprostranjenosti, stoga se nameće logično pitanje: kako se zaštiti?
Postoji nekoliko općeprihvaćenih pristupa zaštite od keyloggera. Ugrubo se mogu podijeliti u tri grupe:
- jednokratne šifre i dvofazna autorizacija;
- proaktivna detekcija i zašita;
- virtualna tastatura.
Jendokratne šifre, kako im samo ime sugerira, mogu se koristiti samo jednom, nakon čega postaju bezvrijedne. Ovaj tip šifri vrlo je praktičan za korištenje na javnim kompjuterima, odnosno mašinama nad kojima nemate nadzor i kontrolu i niste sigurni koliko je dobra njihova proaktivna zaštita (tj. ima li aktivnih, vrebajućih keyloggera). No kada koristite jednokratne šifre, čak i ukoliko keylogger ukrade vaše podatke, oni su potpuno bezvrijedni tako da štete ne može biti (jendom iskorištena šifra više ne vrijedi). Dvofazna autorizacija je metoda vrlo popularna kod banaka i drugih financijskih institucija koje podržavaju poslovanje putem Interneta. Konkretno, da bi se prijavili u sistem sa dvofaznom autorizacijom potrebni su vam korisničko ime i dvije šifre. Korisničko ime i prva šifra su statični, dok se druga šifra mijenja pri svakoj prijavi. Ta dinamička šifra može se npr. generisati posebnim uređajima ili je banka izda u obliku matrice PINova ili slično. U svakom slučaju, obzirom da su podaci za prijavu svaki put drukčiji, efekt keyloggera je efektno anuliran nauštrb nešto kompliciranije procedure prijave (primjetite da je u ovom slučaju također nemoguće u browseru ‘zapamtiti’ podatke za prijavu, što dodatno pridonosi sigurnosti, ovog puta i sa fizičkog aspekta).
Proaktivna detekcija i zaštita mogu se razdijeliti na više ‘linja odbrane’ od keyloggera. Prva linija odbrane je, kao i u većini slučajeva kad je kompjuterska sigurnost u pitanju, zdrav razum. Ne instalirati sve i svašta što se nađe na Internetu, ne klikati na bannere na sumnjivim stranicama, sve ovo je našim čitatiljima dobro poznato, no mnogim korisnicima, na žalost, očito nije. Druga linija odbrane je ažuran softver. Veliki postotak malicioznih softvera koristi dobro poznate sigurnosne propuste kako bi obavili svoju prljavu rabotu; krpanje softvera (pogotovo operativnog sistema) krucijalno je u prevenciji upada. Treća, možda i najvažnija linija odbrane je kvalitetan, pravilno podešen i ažuran antivirusni program. Moderni ‘antivirusi’ obično imaju na raspolaganju čitav arsenal oružja kojima čuvaju sigurnost sistema koji im je povjeren. Jedno od tih oružja specijalizirano je za borbu protiv trojanaca, spywarea i keyloggera i ovakav modul prisutan je u velikoj većini današnji antivirusnih/sigurnosnih programa (ne sjećamo se kad smo vidjeli jedan da nije u mogućnosti prepoznati keyloggere). No kada ni sve ovo nije dovoljno, može pomoći firewall – posljednja linija odbrane. Spyware skupljene podatke mora nekako poslati svojim autorima – najčešće preko mreže. Tu na scenu stupa firewall koji će onemogućiti promet i efektivno spriječiti nastanak štete, usprkos činjenici da je spyware i dalje aktivan.
Virtualna tastatura je aplikacija koja prikazuje tastaturu na ekranu; tipka se klikovima miša. Ovaj pristup jedinstven je u tome što je efikasan protiv i harderskih i softverskih keyloggera (što nije slučaj za ostale). Ideja je jednostavna: ako se tipke ne pritišću, keylogger nema šta ‘uhvatiti’. Virtualne tastature su široko raširene aplikacije jer dolaze predinstalirane s opertivnim sistemom (u Windowsima su dio paketa namijenjenog licima s invaliditetom, program On-Screen Keyboard može se naći u start meniju). Na žalost, aktivnost ovakvih programa je lako presresti čime je njihova učinkovitost u prevenciji keystroke logginga upitna, no to ionako nije njihova osnovna funkcija tako da se ne može previše ni očekivati. Za izigravanje malicioznog softvera koriste se specijalizirane virtualne tastature koje su, opet, relativno rijetke. Virtualne tastature se relativno rijetko koriste jer si korisnici ne žele zagorčavati život mjerama zaštite koje percipiraju kao pretjerane.
Šta i kako dalje?
Nije sve baš tako crno kako se na prvi pogled čini. Malo opreza i ažuran softver (veliki naglasak na antivirusnom programu) i od keyloggera nema opasnosti. Međutim, to i dalje ne rješava sve naše probleme sa šiframa koje smo utvrdili u ova dva teksta. U narednom, trećem, dijelu napokon ćemo se uhvatiti u koštac s pravom problematikom šifri: kako ih sve pohraniti na siguran način, a da budu dostupne u svakom trenutku. Password manageri, dolazimo…
Ovaj tekst izvorno je objavljen 25.10.2010. godine pod nazivom ‘Kradljivci šifri‘ na portalu ITpro u rubrici ‘ICT Teme‘ . Sva prava zadržava IT PRO d.o.o.
Slike:
- naslovna: The Procession Of The Trojan Horse by Giovanni Domenico Tiepolo
- door key by woodleywonderworks
Pogledajte i ovo:
- Novosti BH weba
- Password managers – LastPass
- FireSheep i Session Hijacking – kad ti ovce spale farmu
- Sigurnost podataka
- Sigurnosni propusti – to update or not to update?








[...] vidjeti u jednom od prethodnih tekstova naše male sage o šiframa (pogledajte i O šiframa i Kradljivci šifri), sigurnost servera i klijenta, ali i njihove međusobne komunikacije, može pod određenim [...]