Prevračanje fizičnega pomnilnika
Brskanje po pomnilniku (RAM) je očitno postalo trend. V zadnjih mesecih je bilo objavljenih kar nekaj orodij in postopkov, ki omogočajo manipulacijo z delovnim pomnilnikom. Pridobivanje zaupnih podatkov (npr. šifrirnih ključev) ali premostitev preverjanja istovetnosti naj bi tako dobilo čisto nove razsežnosti. Pa poglejmo, ali to res drži.
Največ prahu je nedvomno dvignilo odkritje skupine raziskovalcev z Univerze v Princetonu, ki so svetovno javnost naravnost šokirali s trditvijo, podkrepljeno z dokazi, da se podatki v fizičnem pomnilniku dejansko ohranijo veliko dlje, kot smo bili dotlej sveto prepričani. Da, celo po izklopu računalnika so podatki kar nekaj časa še vedno tam. Nič manj pa niso zanimiva tudi odkritja o neposredni manipulaciji delovnega pomnilnika prek vmesnika firewire in manipulaciji datoteke hiberfil.sys, torej datoteke, v katero Windows shrani vsebino pomnilnika ob mirovanju (hibernation). Oba načina omogočata popoln dostop (pregledovanje in prepisovanje) fizičnega pomnilnika. Možnosti zlorab so torej omejene zgolj z domišljijo in znanjem vsiljivca.
Ko gre pomnilniški modul na hladno ...
Odkritje strokovnjakov s Princetona si velja ogledati nekoliko podrobneje. Skupina raziskovalcev s prestižne univerze je namreč objavila presenetljivo odkritje: podatki iz pomnilniških modulov DRAM se dejansko ne izgubijo v trenutku prekinitve napajanja (npr. izklop računalnika), temveč se izgubljajo s časom. Še več, z ohlajanjem na izjemno nizke temperature (od - 50° C do - 196° C) je mogoče vsebino modulov ohraniti od nekaj minut do nekaj ur. Raziskovalci so svoje odkritje podkrepili s prepričljivim dokazom: iz modulov DRAM jim je uspelo pridobiti kriptografske ključe nekaterih programov za šifriranje diskov. Kratko so tako povlekli BitLocker (Microsoft), FileVault (Apple), dm-crypt (Linux) in True Crypt. Iz varnostnih razlogov šifrirni programi kriptografskih ključev namreč ne zapisujejo na disk, temveč neposredno v fizični pomnilnik. Z objavo t. i. "cold boot" napada naj bi tako pogorel še zadnji steber zasebnosti, torej zaupanje v zanesljivost šifrirnih programov. Seveda pa se ni nič kaj veliko spremenilo, le da uporabniki tega do tedaj nismo vedeli.
Odkritje ekipe s Princetona dejansko temelji na dejstvu, znanemu strokovnim krogom, ki se imenuje "pomnilniški ostanek" (memory remanence), torej ohranjanju podatkov v čipih DRAM kljub prenehanju napajanja (osveževanja). Ostanek naj bi tako trajal od nekaj sekund do nekaj minut. Res pa je, da ekstremno ohlajanje učinek ohranjanja občutno podaljša.
Učinek podaljšanega pomnilniškega ostanka z ohlajevanjem čipov ter pridobivanje šifrirnega ključa BitLocker je v svoji predstavitvi "Penetration testing BitLocker drive encryption" omenil že eden izmed Microsoftovih strokovnjakov leta 2006. Sicer pa naj bi bila metoda, znana kot "duhovi fizičnega pomnilnika" oziroma "snežak" (Iceman attack), dokumentirana že konec sedemdesetih let prejšnjega stoletja. Tudi Intel v svoji strokovni literaturi omenja morebitne nevarnosti podaljšanega ostanka in s TXT (Trusted Execution Technology) predstavlja nekatere rešitve, vgrajene v določenih sistemskih naborih in procesorjih. Povečini gre za module, ki brišejo vsebino pomnilnika (npr. SCLEAN AC module) ali nadzirajo pomnilnik v stanju mirovanja (npr. Sleep state modules).
Nekakšna izpeljanka "cold boot" napada je tudi uporaba ostanka za pridobivanje izpisa fizičnega pomnilnika (physical memory dump) z uporabo metode, imenovane "giljotina" (forensiczone.blogspot.com/2008/01/guillotine-steps-and-conditions.html). Postopek je takle: odstranimo napajalni kabel operativnega (primarnega) diska, pritisnemo stikalo "Reset" in nato čim hitreje zaženemo priljubljeno distribucijo LiveCD ter naredimo izpis pomnilnika. Če nameravamo eksperimentirali s "cold boot" napadom ali "giljotino", nam bo namensko orodje msramdmp (mcgrewsecurity.com/projects/msramdmp) vsekakor zelo olajšalo delo in poenostavilo pridobivanje izpisa pomnilnika. Raziskovalci družbe Intelguardians pa so na nedavno končani konferenci CanSecWest predstavili skupek orodij, ki v izpisu pomnilnika išče vzorce gesel in ključev ter tako avtomatizira celoten postopek.
Nič novega v deželi bitov
Kakor se pogosto dogaja, so tudi tokrat mediji vse skupaj nekoliko napihnili. Morda gre za pomembna "odkritja", vendar v celoti temeljijo na že znanih dejstvih. Med strokovnjaki za računalniško forenziko je pregledovanje fizičnega pomnilnika (physical memory forensic) ustaljena praksa. V naši reviji smo že omenjali t. i. psevdonaprave (UNIX/Linux/Solaris: /dev/mem, /dev/mmem, /dev/kmem, /dev/allkmem, /proc/kcore; OS X: /var/vm; Windows: \\.\PhysicalMemory), torej komponente, ki preslikavajo različne segmente delovnega pomnilnika in omogočajo njegovo neposredno pregledovanje ali prepisovanje. V to kategorijo lahko pripišemo tudi manipulacijo datoteke hiberfil.sys. Po trditvah avtorja ogrodja "Sandman", s katerim lahko prek hibernacijske datoteke uspešno eskaliramo privilegije iz uporabniških v sistemske ali pridobimo različne šifrirne ključe, so ranljive vse različice Oken, ki podpirajo stanje mirovanja. Torej lahko sklepamo, da je bilo stanje v posvečenih krogih znano že kakšno leto pred uradno objavo. Postopek je bil dejansko prvič javno predstavljen na konferenci PacSecJP 2007.
Tudi t. i. "direktni dostop do pomnilnika" ob pomoči krmilnika firewire DMA (Direct Memory Access) oziroma, natančneje, vmesnika OHCI (Open Host Controller Interface) je znan že od leta 2004, čeprav je v javnosti povzročila vsesplošni "preplah" šele nedavna objava skripta "winlockpwn" s katerim lahko v Oknih zaobidemo začetno overjanje. Ironično je, da ob predstavitvi postopka na konferenci PacSecJP 2004, za razliko od MacOS, Linuxa in FreeBSD, Okna sploh niso bila ranljiva. Sicer pa krmilnik DMA podpirajo tudi vodila USB, PCI in PC-Card/PCMCIA. Manipulacijo fizičnega pomnilnika naj bi bilo torej mogoče izvesti tudi prek teh vodil.
Vendar, le zakaj bi nekdo uporabil npr. metodo Firewire DMA za premostitev uvodnega overjanja, če so znane številne preizkušene in preprostejše metode? Ko ima napadalec fizični dostop do računalnika, namreč popolnoma zadostuje sprememba zagonske procedure in nalaganje operacijskega sistema z diskete, zgoščenke ali ključa USB. No, v nekaterih primerih je lahko dostop do nastavitev BIOSa zaščiten z geslom, odstranitev CMOS baterije pa ni izvedljiva. Takrat sta s firewire podprta napravica (npr. prenosnik ali prirejeni iPod) in skript "winlockpwn" lahko zelo primerna rešitev.
Kako se lahko zaščitim?
Seveda so se kaj kmalu odzvali tudi razvijalci šifrirnih programov. V Microsoftu so tako zagotovili, da je napad nemogoče izvesti z BitLockerjem v naprednem načinu overjanja, torej overjanje ob pomoči kode PIN ali ključa USB, ki vsebuje (dodatno) geslo. Poleg tega lahko nekatere šifrirne programe nastavimo tako, da pobrišejo vsebino pomnilnika ob odklapljanju diska ter zaustavitvi ali sesutju sistema. Jedro obrambe pa je bilo zasnovano v sklicevanju na dejstvo, ki so ga navedli sami raziskovalci, torej da je uspeh napada precej odvisen od različnih dejavnikov. Med najpomembnejše nedvomno spadajo nastavitve BIOSa, saj ga lahko nastavimo tako, da pred zagonom počisti vsebino pomnilnika. Konec koncev pa je pomembna tudi (ne)kakovost modulov DRAM, saj pogojuje trajanje ostanka.
Rešitve torej so na voljo, vendar jih uporabniki seveda ne bomo uporabljali iz preprostega razloga: odščipnejo namreč nekaj sekund dragocenega časa. Le pomislimo, kako nestrpni postanemo, ko se sistem nalaga nekaj trenutkov dlje kot običajno. Kaj šele, da bi vpisovali dodatna gesla, številke PIN ali vstavljali ključe USB. Ne, to ne bo šlo.
Morda je najboljšo (najinovativnejšo) rešitev pred takimi napadi predstavila VIA. V nekatere svoje procesorje namreč vgrajuje šifrirni pogon (crypto-engine) AES. Tehnologijo sicer promovira pod imenom PadLock, ima pa najmanj dve dobri lastnosti: odpravlja potrebo po dodatnem programu za šifriranje in, kar je še pomembneje, šifrirni ključ ni shranjen v fizičnem pomnilniku. Vsekakor velja počakati na odziv preostalih izdelovalcev procesorjev. Zamisel kot taka je nedvomno hvalevredna.
Pred napadi hiberfil.sys in firewire dejansko ni ustrezne rešitve, razen če se odrečemo uporabi hibernacije (Nadzorna plošča/Možnosti porabe/Mirovanje) in onemogočimo delovanje firewire vodila (Nadzorna plošča/Sistem/Upravitelj naprav). Na srečo pa imajo vsi našteti napadi tudi slabost: zahtevajo namreč fizični dostop do računalnika. Vsakdo, ki mu računalniška varnost ni ravno španska vas, bi se moral zavedati preprostega dejstva: ko ima nepooblaščeni dostop do našega računalnika, ta ni več naš.
Koristne povezave:
citp.princeton.edu/memory/
sandman.msuiche.net/
www.storm.net.nz/projects/
DRAM (Dynamic Random Access Memory) - Dinamični pomnilnik z naključnim dostopom
Podatki (biti) so shranjeni v obliki električnega naboja v kondenzatorju. DRAM je dinamičen in zahteva nenehno osveževanje. Pomnilniški čipi svoje vrednosti ne morejo zadržati dolgo, zato s časom izgubljajo naboj in s tem tudi shranjene podatke. DRAM ima tako vgrajeno dodatno vezje, ki periodično osveži in obnovi vse vrednosti. Dokler je pod napetostjo, seveda.
Podatki iz pomnilniških modulov DRAM se dejansko ne izgubijo v trenutku prekinitve napajanja (npr. izklop računalnika), temveč se izgubljajo s časom.
V nekaterih primerih je lahko dostop do nastavitev BIOSa zaščiten z geslom, odstranitev CMOS baterije pa ni izvedljiva. Takrat sta s firewire podprta napravica (npr. prenosnik ali prirejeni iPod) in skript "winlockpwn" lahko zelo primerna rešitev.