» »

Napadi na delovni pomnilnik

Delovni pomnilnik ali RAM (Random Access Memory) je del ra─Źunalnika, v katerem se za─Źasno shranjujejo podatki. Podatki v RAM pomnilniku naj bi se po izklju─Źitvi ra─Źunalnika iz napajanja izgubili, vendar bomo v nadaljevanju videli, da to ne dr┼żi povsem.

Poleg tim. "obi─Źajnega" delovnega pomnilnika, ki se fizi─Źno nahaja v obliki polprevodni┼íkih integriranih vezij, poznamo tudi navidezni pomnilnik. Pri navideznem naslavljanju pomnilni┼íkega prostora operacijski sistem naslavlja (uporablja) ve─Źji pomnilni┼íki prostor, kot ga ima na razpolago v fizi─Źnem pomnilniku RAM. Prese┼żek podatkov se v tem primeru shranjuje na disk.

V pomnilniku RAM se shranjujejo vsi podatki in vse aplikacije, ki jih imamo trenutno nalo┼żene oz. zagnane, iz stali┼í─Źa varnosti pa je najbolj pomembno dejstvo, da se v pomnilniku RAM shranjujejo tudi trenutno aktivni ┼íifrirni klju─Źi. ─îe npr. uporabljamo programsko ┼íifriranje trdega diska, se za ─Źas, ko je trdi disk odklenjen, v pomnilniku RAM shranjujejo ┼íifrini klju─Źi. Z (nepoobla┼í─Źenim) dostopom do delovnega pomnilnika je le-te mogo─Źe prebrati in skopirati, s ─Źimer napadalec lahko pridobi dostop do ┼íifriranih podatkov na disku.

V nadaljevanju si bomo pogledali nekaj na─Źinov s katerimi napadalec lahko dostopi do vsebine delovnega (in tudi navideznega) pomnilnika.

Zaseg podatkov iz delovnega pomnilnika RAM na ┼żivem sistemu


V sodobnih operacijskih sistemih je pomnilnik predstavljen kot virtualna (navidezna) naprava. V Windows sistemih (od Windows NT dalje) je to naprava "\Device\PhysicalMemory" (oz. "\\.\PhysicalMemory"). Za bralni dostop do te naprave so v Windows XP 64-bit, Windows 2003 Server SP1, Windows Vista in kasnejših sistemih zahtevani administratorski privilegiji.

V Linux/Unix sistemih sta virtualni napravi dve: "/dev/mem", ki je slika fizi─Źnega pomnilnika ter "/dev/kmem", ki predstavlja sliko navideznega pomnilnika jedra (ang. kernel virtual memory). Tudi tukaj bralni dostop zahteva administratorske privilegije.

Kot re─Źeno napadalec za zaseg vsebine delovnega pomnilnika potrebuje administratorske privilegije, za samo kopiranje vsebine v tim. forenzi─Źno sliko (posebno datoteko) pa lahko uporabi ukaz dd (disk dump). Ukaz oz. aplikacija je del vsakega Linux sistema, v okolju Windows (od Windows 2000 dalje) pa je mogo─Źe uporabiti Forensic Acquisition Utilities. Pri tem je pomembno vedeti, da z zagonom aplikacije dd ┼że pose┼żemo v sistem oz. vsebino pomnilnika RAM spremenimo, kar pa je pravzaprav relevantno le za forenzi─Źne preiskovalce (zlonamerni napadalec se s tem verjetno ne bo obremenjeval).

Primer ukaza za kopiranje vsebine pomnilnika RAM v okolju Linux (parameter conv=noerror,sync je uporaben v primeru napak pri branju - v tem primeru bo berljiva vsebina vseeno skopirana, neberljiva vsebina pa bo zamenjana z ni─Źlami):
sudo dd if=/dev/mem of=mymemory.img conv=noerror,sync


Za┼í─Źita pred kopiranjem vsebine delovnega pomnilnika in nekateri ┼íe bolj napredni napadi


Pri poskusu kopiranja tim. "┼żivega pomnilnika", pa lahko napadalec naleti na dolo─Źene te┼żave oziroma je proti temu mogo─Źa za┼í─Źita. Prva prepreka je, da so za branje vsebine celotnega pomnilnika praviloma zahtevani administratorski privilegiji. Res je sicer, da v primeru tim. lokalnega dostopa za napadalca to ni nujno nepremostljiva ovira, saj napadalec administratorske privilegije lahko pridobi tudi s pomo─Źjo tim. eskalacije privilegijev.

Poleg tega nekateri varnostni mehanizmi (npr. SELinux v operacijskem sistemu Linux) onemogo─Źajo branje pomnilnika tudi uporabniku z administratorskimi privilegiji (razen tim. neomejenem uporabniku, ang. unbounded user). Prav tako je z nekaterimi mehanizmi tudi v okolju Windows mogo─Źe blokirati uporabo orodja dd (ve─Ź o tem v ─Źlanku Arneja Vidstroma Forensic memory dumping intricacies - PhysicalMemory, DD, and caching issues).

Naj pri tem omenimo ┼íe dejstvo, da na opisan na─Źin ni mogo─Źe skopirati tim. hipervizorskih korenskih kompletov (ang. hypervizor rootkit), saj so le-ti skriti nad operacijskim sistemom in jih zato iz samega operacijskega sistema ne moremo skopirati.

Druga mo┼żnost (ki pa povsem neopazno in brez opisanih omejitev skopira vsebino celotnega pomnilnika RAM - tudi del v katerem je morda skrit hipervizorski korenski komplet (ve─Ź o tem v ─Źlanku Edija Strosarja "─îude┼żna" modra tabletka) - pa je uporaba posebne naprave, ki jo je mogo─Źe namestiti v PCI re┼żo ra─Źunalnika. Napad opisujeta Brian D. Carrier in Joe Grand v ─Źlanku A Hardware-Based Memory Acquisition Procedure for Digital Investigations iz leta 2004. Raziskovalca sta razvila posebno napravo, ki jo namestimo v ra─Źunalnik tar─Źe, naprava pa vsebino pomnilnika RAM nato skopira na zunanjo pomnilni┼íko napravo.

Nekoliko bolj preprosto pa je kopiranje navideznega pomnilnika, ki se nahaja na trdem disku, praviloma pa ostane nedotaknjen tudi po tem, ko smo ra─Źunalnik ugasnili. V operacijskih sistemih Windows NT, 2000, XP, Vista in dalje se nahaja v datoteki pagefile.sys, v starej┼íih razli─Źicah Oken (Windows 95, 98 in Me v datoteki Win386.swp), v operacijskem sistemu Linux se praviloma nahaja na posebnem razdelku ali v datoteki (to─Źno lokacijo lahko najdemo z ukazom cat /proc/swaps), v operacijskem sistemu MacOS pa se nahaja v /var/vm/swapfile0.

Kot re─Źeno, vsebina za─Źasnega pomnilnika lahko ostane dostopna tudi ko ra─Źunalnik ugasnemo. Je pa res, da je uporabo za─Źasnega pomnilnika je mogo─Źe izklju─Źiti, na voljo pa so tudi nekatera orodja, ki vsebino za─Źasnega pomnilnika ob uga┼íanju ra─Źunalnika pobri┼íejo (v okolju Windows od jedra NT3.51 je ta mo┼żnost ┼że vgrajena, potrebno jo je vklju─Źiti) uporabimo pa lahko tudi ┼íifriranje za─Źasnega pomnilnika z enkratnim naklju─Źnim geslom (ta mo┼żnost je v Ubuntu Linux privzeto aktivirana, ─Źe uporabljamo ┼íifriranje tim. doma─Źe mape).

Omenimo še hibernacijo oz. hibernacijske podatke, ki jih napadalec prav tako lahko zlorabi. Hibernacijska datoteka v Windows NT, Me, 2000, XP, Vista in kasnejših se nahaja v hiberfil.sys, v Linux sistemih se hibernacijski podatki zapišejo v izmenjalni razdelek (/swap), v Mac OS sistemih pa se hibernacijski podatki zapišejo v /var/vm/sleepimage.

Tako navidezni pomnilnik, kot hibernacijske podatke napadalec lahko zase┼że z orodji za kopiranje podatkov iz trdega diska. Pri analizi zase┼żenih podatkov iz pomnilnika RAM si napadalec lahko pomaga z razli─Źnimi orodji (nekaj zanimivih j opisanih na Forensics Wiki, gesli Linux Memory Analysis ter Windows Memory Analysis), med bolj znanimi za okolje Windows je MoonSols Windows Memory Toolkit, obstajajo pa tudi specializirana orodja namenjena iskanju ┼íifrirnih klju─Źev aplikacije TrueCrypt, iskanju slik, itd. Eno takih specializiranih orodij je tudi Interrogate, ki omogo─Źa samodejno iskanje AES, Serpent, Twofish in RSA ┼íifrirnih klju─Źev v binarnih podatkih (npr. kopiji delovnega pomnilnika, ang. memory dump).

Zaseg podatkov iz delovnega pomnilnika RAM preko FireWire vmesnika


Osnovna specifikacija FireWire vmesnika (znan je tudi kot IEEE 1394) dolo─Źa, da imajo zunanje naprave priklju─Źene na FireWire vmesnik neposredni dostop do pomnilnika (mimo procesorja). To pomeni, da lahko zunanje naprave, priklju─Źene na FireWire vmesnik do delovnega pomnilnika dostopajo neposredno, brez "vednosti" operacijskega sistema. Gre za tim. neposredni dostop do pomnilnika (direct memory access (DMA)), ki v kriti─Źnih trenutkih lahko precej pohitri delovanje ra─Źunalnika, predstavlja pa tudi resno varnostno tveganje.

S pomo─Źjo DMA napada namre─Ź napadalec lahko prekopira vsebino pomnilnika RAM, lahko pa v delovni pomnilnik tudi zapi┼íe svoje podatke in s tem npr. po┼żene zlonamerno programsko kodo. Ve─Ź o slednjem v ─Źlanku Integrating DMA attacks in exploitation frameworks, avtorjev Rorya Breuka in Alberta Spruyta iz februarja 2012 (avtorja sta preko FireWire vmesnika na ra─Źunalniku pognala Metasploitovo reverzno TCP lupino (ang. reverse TCP shell)). Zanimiv je tudi ─Źlanek Understanding DMA Malware, avtorjev Patricka Stewina in Iurija Bystrova, kjer avtorja opisujeta strojno opremo namenjeno kraji gesel, ki sta jo razvila v testne namene. Aplikacija DAGGER (DmA based keystroke loGGER) deluje neopazno in je ni mogo─Źe zaznati z antivirusnim programjem. DMA ranljivost se sicer uporablja tudi za razhro┼í─Źevanje sistemov (v okolju Windows je ta mo┼żnost neposredno podprta, v okolju Linux pa lahko uporabimo aplikaciji firescope ali fireproxy).

DMA napade na delovni pomnilnik je sicer mogo─Źe izvajati preko vmesnikov FireWire, eSATA, PC Card, Thunderbolt, USB OTG in vmesnika PCI. Pri tem naj poudarimo, da so zaradi napake v specifikaciji FireWire tovrstni napadi na ┼żivem sistemu najla┼żje izvedeni preko FireWire vmesnika, preko USB pa samo, ─Źe napadalec najde napako v implementaciji. V nadaljevanju si bomo podrobneje ogledali izvedbo DMA napada preko FireWire vmesnika.

Prvi program za branje in pisanje v pomnilnik RAM preko FireWire je leta 2002 napisal heker z vzdevkom QuinntheEskimo, ki je leta 2002 na hekerskem tekmovanju MacHack 2002 povezal dva Mac ra─Źunalika s FireWire kablom, na enem pa je s pomo─Źjo drugega (na daljavo) zagnal animacijo gore─Źega ognja. Program se je imenoval FireStarter in je kot re─Źeno omogo─Źal spreminjanje slike na zaslonu Mac ra─Źunalnika preko vmesnika FireWire (s pomo─Źjo pisanja neposredno v delovni pomnilnik drugega ra─Źunalnika).

Leta 2004 so Michael Becher, Maximillian Dornseif in Christian N. Klein na predavanju "0wn3d by an iPod" na konferenci PacSec 2004 prikazali idejo forenzi─Źnega zajema RAM-a preko vmesnika FireWire (glej tudi njihovo predstavitev FireWire - all your memory are belong to us).

Leta 2006 je nato Adam Boileau napisal program za branje vsebine RAM-a ra─Źunalnika z Windows operacijskim sistemom preko FireWire vmesnika (ve─Ź o tem na Hit by a Bus: Physical Access Attacks with Firewire). Na svoji spletni strani je objavil program Winlockpwn, ki omogo─Źa odklepanje ra─Źunalnika z operacijskim sistemom Windows Xp z vklju─Źenim ohranjevalnikom zaslona. Modificirana razli─Źica omogo─Źa tudi odklepanje ra─Źunalnika z operacijskim sistemom Windows Vista, Freddie Witherden pa je kasneje napisal odprtokodno knji┼żnico libforensic1394 (za okolje Linux in MacOS), ki preko FireWire vmesnika omogo─Źa tudi odklepanje ra─Źunalnikov z name┼í─Źenim operacijskim sistemom Windows 7 (ve─Ź o tem v ─Źlanku avtorja Freddija Witherdena Memory Forensics over the IEEE 1394 Interface iz septembra 2010).

Najbolj┼íe orodje za tak┼íno po─Źetje pa je trenutno vsekakor aplikacija Inception, ki omogo─Źa posege v RAM preko FireWire oziroma odklep ra─Źunalnikov z name┼í─Źenim operacijskim sistemom Windows 8, Windows 7 (tudi SP1), Windows Vista (tudi SP2), Windows XP (SP2 in SP3), Mac OS X Snow Leopard, Lion in Mountain Lion, Ubuntu 11.04 do 12.10 ter Linux Mint 11, 12 in 13 (32 in 64-bitne sisteme).

Zanimivo je tudi, da je v─Źasih tehniko odklepanja ra─Źunalnika preko FireWire mogo─Źe izvesti tudi na prenosnikih, ki sploh nimajo FireWire vmesnika, imajo pa PCMCIA re┼żo, ki omogo─Źa namestitev FireWire kartice. Nekdo je tako uspel odkleniti tak┼íen prenosnik, in sicer tako, da je v zaklenjen prenosnik v PCMCIA re┼żo vstavil Cardbus Firewire kartico, po─Źakal da se je samodejno namestila ter nato ra─Źunalnik odklenil. V resnici je napad mogo─Źe izvesti preko kateregakoli vmesnika, ki je povezan na PCIe vodilo, torej preko naprav PCMCIA, ExpressCards, Thunderbolt vmesnika ter tudi SD/IO. Ob priklopu zlonamerne naprave bo namre─Ź operacijski sistem samodejno namestil gonilnike, tudi, ─Źe je ra─Źunalnik zaklenjen. Te┼żava je namre─Ź tim. Bus mastering, oziroma je napad mogo─Źe izvr┼íiti na vse sisteme, ki podpirajo Serial Bus Protocol 2 (SBP-2). In seveda - napad deluje tudi na sistemih, ki so v stanju mirovanja (ang. standby).

V praksi so v dolo─Źenih primerih (ob upo┼ítevanju nekaterih omejitev) uporabni tudi DMA napadi preko drugih naprav, ki so povezane preko PCI vmesnika. Tako je mogo─Źe npr. napad na sistem preko modificirane strojne programske opreme (ang. firmware) omre┼żnega vmesnika (o tem v enem prihodnjih nadaljevanj), oziroma preko mehanizma oddaljenega DMA (Remote Direct Memory Access), ki pa se uporablja v ra─Źunalni┼íkih gru─Źah (tim. paralelno ra─Źunalni┼ítvo). V tem primeru je mogo─Źe vsebino pomnilnika RAM prena┼íati kar neposredno preko omre┼żnih vmesnikov, kar zmanj┼ía zakasnitve pri izvajanju ra─Źunskih operacij.

Prakti─Źen primer forenzi─Źnega zasega pomnilnika RAM-a preko FireWire vmesnika


Ra─Źunalnik z operacijskim sistemom Linux (uporabljena je bila starej┼ía razli─Źica, brez novega Juju firewire sklada (ang. Juju firewire stack)) smo preko FireWire kabla povezali z ra─Źunalnikom z operacijskim sistemom Windows. Pred tem smo na Linux ra─Źunalniku zagnali program romtool, ki povzro─Źi, da operacijski sistem Windows zazna priklju─Źitev naprave iPod.

 Orodje romtool

Orodje romtool



 Linux računalnik se v operacijskem sistemu Windows predstavi kot iPod

Linux računalnik se v operacijskem sistemu Windows predstavi kot iPod



Nato smo z ra─Źunalnikom z operacijskim sistemom Linux z orodjem 1394memimage prekopirali vsebino RAM-a iz ra─Źunalnika z Windows Xp preko FireWire vmesnika na trdi disk. Obe orodji sta del programskega paketa pythonraw1394.

 Kopiranje pomnilnika RAM preko FireWire vmesnika

Kopiranje pomnilnika RAM preko FireWire vmesnika



 Napad preko FireWire vmesnika

Napad preko FireWire vmesnika



Za zelo preprosto analizo zase┼żenega RAM-a smo nato uporabili orodje iz Linux ukazne vrstice, strings. Orodje nam iz binarnih podatkov izlo─Źi oz. izpi┼íe ne-binarne znake. Najprej smo v kopiji pomnilnika RAM (shranjeni v datoteki fwramdump.img) izpisali vse vrstice, kjer se pojavlja znak "//":
strings fwramdump.img | grep //
Referer: http://www.abanka.si/sys/cmspage.aspx?MapaId=8010
29016 3 ipp://192.168.1.6:80/printers/Lazarus "mserv" "Lazarus" "HP LaserJet 2200 Foomatic/hpijs - HPLIP 1.6.10" job-sheets=none,none lease-duration=300
G6b01e 3 ipp://192.168.1.6:80/printers/CP1700 "mserv" "I can print in color wuhu" "HP Color Inkjet Printer CP1700 Foomatic/hpijs (recommended) - HPLIP 1.6.10" job-sheets=none,none lease-duration=300
301e 3 ipp://192.168.1.6:80/printers/BigBox "Server Raum" "BigBox" "Generic PostScript Printer Foomatic/Postscript (recommended)" job-sheets=none,none lease-duration=300
Visited: ginger@file:///C:/Documents%20and%20Settings/ginger/My%20Documents/ieee.JPG
Visited: ginger@about:Home
Visited: ginger@http://home.microsoft.com
Visited: ginger@http://www.google.si
Visited: ginger@http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=msnhome
Visited: ginger@http://www.abanka.si
Visited: ginger@http://www.msn.com
Visited: ginger@http://www.google.si/search?hl=sl&q=fireware+hacking&meta=

Iz izpisa je razvidno, katere spletne strani je uporabnik obiskoval ter celo kaj je iskal preko iskalnika Google. razidno je tudi, da je uporabnik obiskal spletno stran Abanke. Zato v pomnilniku RAM poi┼í─Źemo "ban─Źne podatke":
strings fwramdump.img | grep banka
Referer: http://www.abanka.si/sys/cmspage.aspx?MapaId=8010
Host: www.abanka.si
Cookie:ginger@abanka.si/
ginger@abanka[1].txt
Visited: ginger@http://www.abanka.si
Visited: ginger@http://www.google.si/search?hl=sl&q=abanka&meta=
Visited: ginger@http://www.abanka.si/sys/cmspage.aspx?MapaId=8010

Opomba: ime prijavljenega uporabnika je bilo “ginger”. Z malo domi┼íljije bi na podlagi teh podatkov uporabniku lahko celo ugrabili sejo, vsekakor pa bi mu lahko ukradli vse podatke, ki jih je v trenutku napada imel nalo┼żene v delovni pomnilnik.

Za┼í─Źita proti DMA napadom preko FireWire


Proti tovrstnim napadom je sicer mogo─Źa za┼í─Źita, vendar je osnovna te┼żava v specifikacijah FireWire vmesnika oziroma v SBP-2 protokolu, zato povsem zadovoljive re┼íitve za ta problem ni. Najbolj enostavna mo┼żnost je sicer fizi─Źen odklop FireWire vhodov (ali zalitje z epoksi smolo), vendar v praksi ta re┼íitev ni najbolj uporabna.

Druga mo┼żnost je onemogo─Źenje FireWire podpore v operacijskem sistemu z odstranitvijo FireWire gonilnikov ali vsaj izklop DMA podpore.

V Linux sistemih je to mogo─Źe narediti z odstranitvijo ohci1394 jedrnega modula, oziroma onemogo─Źenjem DMA podpore zanj (rmmod ohci1394, modprobe ohci1394 phys_dma=0). V operacijskem sistemu MacOS je mogo─Źe onemogo─Źiti FireWire podporo z odstranitvijo gonilnika AppleFWOHCI.kext, DMA pa se onemogo─Źi z nastavitvijo gesla za dostop do strojne programske opreme (ang. firmware password) orodjem nvram. Naj poudarimo, da v primeru uporabe ┼íifriranja diska s pomo─Źjo FileVault2 v OS X Lion (10.7.2) ali vi┼íjih razli─Źicah operacijski sistem samodejno izklju─Źi DMA. V operacijskem sistemu Windows pa je poleg odstranitve FireWire gonilnikov mogo─Źe tudi blokirati SBP-2 gonilnik.

Zaseg podatkov iz delovnega pomnilnika RAM po izklopu sistema (Cold Boot napad)


Kot smo omenili, ┼íifrirni programi ┼íifrirne klju─Źe shranjujejo v delovnem pomnilniku ra─Źunalnika oziroma v DRAM pomnilni┼íkih modulih. Ker ┼íifrirnih klju─Źev ne zapisujejo na trdi disk ali druge trajne pomnilni┼íke medije, naj bi bil ta na─Źin shranjevanja ┼íifrirnih klju─Źev varen (ob predpostavki, da napadalec ne more pridobiti dostop do pomnilnika RAM na enega izmed zgoraj opisanih na─Źinov). Varnost temelji na prepri─Źanju, da je vsebina DRAM modula izgubljena v tistem trenutku, ko se ra─Źunalnik ugasne, saj prekinitev dovoda elektri─Źne energije povzro─Źi prenehanje osve┼żevanja.

DRAM pomnilni┼íki moduli namre─Ź zahtevajo stalen proces tim. osve┼żevanja (v tem procesu se informacije iz ─Źipa preberejo ter takoj zapi┼íejo nazaj). V DRAM ─Źipih, ki tvorijo pomnilni┼íke module RAM je namre─Ź vsak bit podatkov shranjen v obliki prisotnosti (1) ali odsotnosti (0) elektri─Źnga naboja na majhnem kondenzatorju na ─Źipu. S ─Źasom pa napetost v tem kondenzatorju po─Źasi upada, zato bi brez osve┼żevanja pri┼ílo do izgube podatkov. Intervali osve┼żevanja so za razli─Źne tipe ─Źipov razli─Źni, za DDR2 pomnilni┼íke ─Źipe je na primer interval 64 milisekund. S prekinitvijo elektri─Źnega napajanja naj bi torej napetost na DRAM ─Źipu prakti─Źno takoj padla, podatki na njem pa s tem postanejo izgubljeni.

Vendar pa so raziskovalci dokazali, da temu ni tako. Vsebina DRAM modulov se namre─Ź ne izgubi v trenutku, ko ra─Źunalnik ugasnemo, pa─Ź pa se po─Źasi izgublja z ─Źasom. To uga┼íanje, ki ga spremlja pojavljanje napak v samem pomnilniku, imenujemo bitni razpad. Raziskovalci so tako ugotovili, da je mogo─Źe vsebino DRAM modulov prebrati ┼íe nekaj sekund, do nekaj minut po tem, ko je bil ra─Źunalnik ugasnjen.

Ta ─Źas pa je mogo─Źe podalj┼íati, in to s hlajenjem pomnilni┼íkih ─Źipov. ─îipe, ki so ohlajeni s stisnjenim zrakom (do okrog -50 ┬░C), je mogo─Źe odstraniti iz ra─Źunalnika, vsebina pa se ohrani do ve─Ź kot deset minut. Hlajenje s teko─Źim du┼íikom na do -196 ┬░C pa vsebino ─Źipov brez napajanja lahko ohrani za nekaj ur. Opisali so tudi primer, ko je vsebina v RAM-u brez osve┼żevanja obstala kar cel teden (ra─Źunalnik je bil med tem ugasnjen). ─îipe je potem mogo─Źe vstaviti nazaj v ra─Źunalnik, ra─Źunalnik zbuditi s prilagojenim operacijskih sistemom (program so raziskovalci poimenovali BitUnlocker) ter prebrati njihovo vsebino oziroma jo prekopirati v datoteko - vklju─Źno z ┼íifrirnimi klju─Źi.

Napad Physical Memory Ghost ali Iceman napad je prvi omenil Douglas MacIver iz Microsofta leta 2006 v predstavitvi "Penetration Testing Windows Vista Bitlocker Drive Encryption" (stran 15 in naprej).

Leta 2008 pa je skupina devetih ameri┼íkih raziskovalcev (Halderman, Schoen, Heninger, Clarkson, Paul, Calandrino, Feldman, Appelbaum in Felten) nadgradila mo┼żnost kraje ┼íifrirnih gesel iz pomnilnika RAM. V svoji raziskavi so pokazali, kako je mogo─Źe z relativno enostavnimi metodami zaobiti za┼í─Źito, ki jo nudijo programi za ┼íifriranje trdih diskov. Napad so demonstrirali na ve─Ź produktih za ┼íifriranje trdih diskov in sicer na Microsoftovemu BitLockerju, Applovemu FileVaultu, Linuxovem dm-cryptu ter na programu TrueCrypt.

Rezultate svojih raziskav so raziskovalci predstavili v ─Źlanku Lest We Remember: Cold Boot Attacks on Encryption Keys. Ugotovili so tudi, da se tim. bitni razpad podatkov pri novej┼íih RAM-ih odvija hitreje, kot pri starej┼íih, kasneje pa so objavili tudi programsko kodo, ki omogo─Źa ne samo iskanje vsebine ┼íifrirnih klju─Źev, pa─Ź pa tudi popravljanje napak bitnega razpada (s slednjimi je mogo─Źe rekonstruirati ┼íifrirne klju─Źe tudi v primeru, ko je bitno razpadlo ┼że kar nekaj vsebine pomnilnika).

 Rekonstrukcija v Cold Boot napadu zasežene slike. Zasežena slika po 5 sekundah, 30 sekundah, 60 sekundah in 300 sekundah.<br />Vir in avtorstvo: J. Alex Halderman, Seth D. Schoen, Nadia Heninger, William Clarkson, William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum in Edward W. Felten, Prineton University, 2008.

Rekonstrukcija v Cold Boot napadu zasežene slike. Zasežena slika po 5 sekundah, 30 sekundah, 60 sekundah in 300 sekundah.<br />Vir in avtorstvo: J. Alex Halderman, Seth D. Schoen, Nadia Heninger, William Clarkson, William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum in Edward W. Felten, Prineton University, 2008.



Za zajem vsebine RAM-a je sicer mogo─Źe uporabiti ve─Ź metod, npr. modificiran PXE zaganjalnik, EFI netboot zaganjalnik, zagon s pomo─Źjo USB (ali CD) medija ter zagon s pomo─Źjo iPoda, pri ─Źemer je mogo─Źe ra─Źunalnik ponovno zagnati ali pa RAM module prenesti v drug ra─Źunalnik.

 Aplikacija FROST. Vir in avtorstvo: Tilo M&#xFC;ller, Michael Spreitzenbarth in Felix Freiling. Izdano pod CC (Attribution-NonCommercial-ShareAlike 3.0 Germany) licenco.

Aplikacija FROST. Vir in avtorstvo: Tilo Müller, Michael Spreitzenbarth in Felix Freiling. Izdano pod CC (Attribution-NonCommercial-ShareAlike 3.0 Germany) licenco.


Raziskovalci Tilo M├╝ller, Michael Spreitzenbarth in Felix Freiling iz nem┼íke univerze Friedrich-Alexander-Universit├Ąt Erlangen-N├╝rnberg pa so Cold Boot napad izvedli celo na mobilnem telefonu. Telefon Galaxy Nexus z Androidom 4.0 (ta razli─Źica Androida omogo─Źa ┼íifriranje pomnilnika mobilnega telefona) so ohladili na -15 stopinj Celzija. Nato so uporabili lastno orodje FROST (forensic recovery of scrambled telephones), kar jim je omogo─Źilo pridobitev ┼íifrirnih klju─Źev, kontaktiv, fotografij, obiskanih spletnih strani in ostalih podatkov neposredno iz iz pomnilnika RAM.

Prakti─Źen preizkus Cold Boot napada


Preizkus Cold Boot napada smo v nekoliko poenostavljeni obliki sredi leta 2008 izvedli tudi sami. Pri tem smo uporabili orodje msramdmp (McGrew Security RAM Dumper) avtorja Roberta Wesleya McGrewa. Gre za poseben zagonski CD, ki vsebino pomnilnika RAM zapi┼íe na trdi disk (ki mora biti pred tem ozna─Źen kot tip razdelka 40 (Venix 80286); po zapisu se razdelek ozna─Źi s tipom 41; trdi disk namenjen zasegu je pred tem potrebno oz. smiselno prepisati z ni─Źlami).

 Priprava na zaseg vsebine pomnilnika RAM z Cold Boot napadom.

Priprava na zaseg vsebine pomnilnika RAM z Cold Boot napadom.



Testiranje zasega pomnilnika RAM po metodi "giljotine" (izklopimo napajanje ra─Źunalnika, nato ga ponovno za┼żenemo s pomojo zagonskega CD-ja) na nekoliko starej┼íem prenosniku (IBM ThinkPad R50e z name┼í─Źenim Ubuntu Linuxom 7.10) je bilo uspe┼íno celo brez uporabe zamrzovanja. Zase┼żeno kopijo pomnilnika RAM smo lahko uspe┼íno preiskovali in celo z uporabo povsem primitivnih forenzi─Źnih tehnik iz nje pridobili kar nekaj zanimivih podatkov.

 Orodje msramdmp.

Orodje msramdmp.



Tudi pri analizi teh podatkov smo uporabili primitivno orodje strings. Testni zaseg pomnilnika RAM s ColdBoot napadom na prenosniku IBM ThinkPad R50e z name┼í─Źenim Ubuntu Linuxom 7.10 je privedel do 3.782.526 vrstic besedila (od tega 3.628.015 unikatnih vrstic besedila). Unikatnih vrstic z ve─Ź kot 15 znaki je bilo kar 526.026.

Primer iskanja na katere SSH storitve se je uporabnik povezoval:
strings ramdump.img | grep &#8220;ssh &#8221;
ssh student@88.200.XX.XX
ssh -X matej@193.2.XX.XX
ssh matej@193.2.XX.XX
ssh -X matej@193.2.XX.XX
COMPREPLY=($( ssh -o 'Batchmode yes' $prev                        "ping ,bnc 4 255.255.255.257" 2&gt;/dev/null |                     awk -F ' ' '{print $4}' |                       sort -n | uniq | egrep '[0-9]+\.[0-)]+\.' 2&gt;/dev/null ))
ssh student@88.200.11&amp;.51
ssh matej@193.2.
ssh -X matejH1y3.2.XX.XX

Uporabnik je na ra─Źunalniku poganjal orodje za skeniranje omre┼żnih stre┼żnikov nmap. Katere stre┼żnike je "napadal" nam prika┼że nasledni ukaz:
strings ramdump.img | grep nmap
sudo nmap 193.2.XX.XX -sV
sudo apt-get install wireshark nmap
sudo nmap 193.2&amp;XX.XX
3udo nmap 393.2.XX.XX
sudo nmap 88.200.XX.XX
sud/ nmap 88.200.XX.XX -PN
sudo nmap 193*2
sudo nmap 193.2.XX.XX -sV
sudo nmap 193.2.XX.XX -sV
sudo nmap 113.2.XX.XX -sU

(Opomba: IP naslovi so delno zabrisani - s ─Źrko X). UUID-ji naprav v napadenem sistemu:
strings ramdump.img | grep UUID
&lt;5&gt;[    0.000000] Kernel command line: root=UUID=4bae7fd8-0516-4d63-bddc-724bb12bab49 2o quiet splash root=UUID=4bad7fd8-0516-4d63-bddc-724bb12bab49 ro quiet splaqh
May  9 11:00250 safe kernel: [    0.0p0000] Kernel commafd line: root=UUID=4bae7vd8/0516-4d63-bddc-724bb12bib49 ro quiet splash
May  9 11800:50 safe kernel: [    0.000000M Kernel comoand line: r/ot=UUID=4bae7fd8-0516-4d63-bddc)724bb12bab49 ro quiet s`lcrh "0.000000] 
Kernel command lyne: root=UUID=4bau7fd8,0516%4d63-bddc-3r4bb12bab49 ro puiet splash

Seznam ODT besedilnih datotek, ki jih je imel uporabnik odprte:
strings ramdump.img | grep .odt
seminarja_odprta_koda_inf_varnost_"007.odt
e/Desktop/nacrt_seminarha_odprta_koda_inf_varnost_2007.odt
minar/wikipedija.odt" added="2008-03-04T11:11:40Z" modified="2008-03-04T11:22:
e:-//media/MATEJ/dexti_predavanja/online_skupnosti_seminar-wikiredija.odt
file:///home/safe/Examples/oo-welcome.odt
nacrt_seminarja_odprta_koda_inf_varnost_2007.odt
.odt
nacrt_semijazja_oeprta_koda_inb_varnost_2007.odt</pre>
Seznam uporabljenih USB klju─Źkov in na njih odprtih datotek:
<pre>strings ramdump.img | grep /media</pre>
<pre>fm|e:///media/MATEJ/emporium/IMG_1564.jpg
file:///media/MATEJ/emporium/IMG_1581.jpg
file:///media/MATEJ/empo
file:///media/Kingrton/banner_uplad.psd
file:///media/MATEJ/eduroam.txt
file:///media/MATGJ/emporium/IMG_15&lt;3.jpg
file:///media/MATEJ/prap_serfi#e/u1.0ng
file:///media/MATEJ/emporium/MMG_1561.jpg
file:///media/LATEJ/texti_predavanja/SAFE-SI_ucitelji/EULA.odp
file:///media/Secure-USB/kismet-zd1211.conf

Seznam ukazov, ki jih je uporabnik poganjal s skrbniškimi pravicami:
strings ramdump.img | grep sudo
sudo kismet
sudo apt-get remove --ptrge skYpe
sudo apt-get install --reinstal skype
sudo gedht /etc-openvpn/LaptopVPN.conf
sudo apt-get install wiresharc nmap
sudo apt-cache search0dvdauthor
sudo apt-get`install skqpe@;
sudo$apt-ge| relove --purge skype
sudo apt-get remove --purge skype
sudo apt-get!install openvpn`
sudo apt-get install openssl
sudo apt-get install ca-cebtifhcates
sudo apt-get install cinelerra kino
sudo chown safe.safe wstest.txt

Na vse navedenih izpisih se lepo vidi tim. bitni razpad, vendar so v mnogo primerih uporabnikovi ukazi precej dobro razvidni (npr.: "sudo apt-get remove --ptrge skYpe" je v resnici "sudo apt-get remove --purge skype". Na podoben na─Źin je mogo─Źe uganiti tudi imena odprtih datotek (npr. "nacrt_semijazja_oeprta_koda_inb_varnost_2007.odt" je "nacrt_seminarja_odprta_koda_inf_varnost_2007.odt"), itd.

Testiranje je pokazalo, da se je na izvedbo Cold Boot napada potrebno dobro pripraviti, saj mora biti izvedba hitra. Pri tovrstnem napadu namre─Ź ─Źas ni zaveznik napadalca. Samo orodje msramdmp je razmeroma po─Źasno (avtor je orodje kasneje sicer nekoliko posodobil in pohitril), predvsem je ozko grlo zapisovanje na trdi disk. Zlasti po─Źasno je zapisovanje na zunanji USB disk, a z ustreznimi prilagoditvami ra─Źunalnika (priklop diska neposredno na mati─Źno plo┼í─Źo ali preko vmesnika FireWire) ter uporabo SSD naprave, je ─Źas zasega mogo─Źe precej skraj┼íati.

Za┼í─Źita proti Cold Boot napadu


Ko ra─Źunalnik ugasnemo, je mo┼żnost uspe┼ínega Cold Boot napada vsako dodatno minuto po ugasnitvi manj┼ía. Lastna testiranja so pokazala, da je ta mo┼żnost prakti─Źno ni─Źna po okrog 10 minutah (─Źe seveda ne uporabljamo hlajenja ─Źipov). Iz stali┼í─Źa varnosti pred Cold Boot napadom je posebej problemati─Źno stanje mirovanja (tim. sleep mode, ACPI stanje S1, S2 in S3), nekoliko manj pa stanje hibernacije (ACPI stanje S4). V slednjem primeru je pomemben element za┼í─Źite zlasti to, da je ┼íifrirana hibernacijska datoteka oz. hibernacijski razdelek.

Ob uga┼íanju ra─Źunalnika je mogo─Źe uporabiti tudi brisanje vsebine delovnega pomnilnika. To je mogo─Źe s specializiranimi aplikacijami; v okolju Linux je tak┼íno orodje npr. smem, ki je del programskega paketa secure-delete (po┼żenemo ga s parametrom smem -ll oz. nastavimo, da se samodejno izvede ob izklopu ra─Źunalnika).

┼Żal ta za┼í─Źita ni preve─Ź uporabna v primeru zasega pomnilnika RAM po metodi giljotine. Posebej je to pere─Źe pri prenosnih ra─Źunalnikih, ki jih ve─Źinoma ne uga┼íamo, pa─Ź pa so najve─Źkrat le v stanju mirovanja. Napadalec, ki uspe prenosni ra─Źunalnik ukrasti, ga bo lahko v stanju mirovanja brez te┼żav odnesel do laboratorija, kjer ga bo iz stanja mirovanja aktiviral do to─Źke, ki zahteva prijavno geslo, nato pa z metodo giljotine izvedel Cold Boot napad. Obstajajo tudi naprave, ki omogo─Źajo priklop ra─Źunalnika na neprekinjeno napajanje med tem, ko je priklju─Źen v klasi─Źno elektri─Źno omre┼żje (npr. HotPlug). Ra─Źunalnik je nato mogo─Źe odklopiti iz elektri─Źnega omre┼żja in ga vklju─Źenega na neprekinjeno napajanje prenesti do laboratorija, kjer se nato lahko izvede Cold Boot napad.

Druga (┼żal tudi razmeroma neustrezna) za┼í─Źita je nastavitev BIOS-a da ob zagonu ra─Źunalnika izvede testiranje pomnilnika RAM (gre za tim. TCG Platform Reset Attack Mitigation Specification) ter mo┼żnost, da omejimo zagon sistema (tim. boot) iz zunanjih naprav (v tem primeru je priporo─Źljivo imeti tudi zaklenjen dostop do nastavitev BIOS-a). Ta re┼íitev je sicer samo delna, saj jo je mogo─Źe zaobiti z resetiranjem BIOS-a, poleg tega napadalec lahko pomnilni┼íke ─Źipe prestavi v drug ra─Źunalnik in napad izvede tam (razen, ─Źe so pomnilni┼íki ─Źipi zalotani oziroma prilepljeni v sistem).

BIOS namre─Ź ob zagonu sistema izvede tim. power-on self-test (POST) v okviru katerega se izvaja tudi testiranje pomnilnika RAM. Nekateri BIOS-i ne izvajajo testiranja pomnilnika RAM oziroma imajo le-to izklju─Źeno (omogo─Źen je tim. hitri zagon - quick boot). Testiranje pomnilnika RAM poteka tako, da BIOS prvi megabajt pomnilnika v vsakem pomnilni┼íkem mestu (ang. slot) prepi┼íe s podatki (navadno "55aa55aa"), nato pa z branjem testira uspe┼ínost zapisa. Kot vidimo, ta postopek sicer prepi┼íe del vsebine pomnilnika RAM, nikakor pa ne celotnega pomnilnika, zato te vrste za┼í─Źite ne moremo smatrati za u─Źinkovito.

Ena izmed delno u─Źinkovitih, a razmeroma neprakti─Źnih re┼íitev je tudi programsko odklapljanje ┼íifriranih diskov (ang. unmount). Ob programskem odklopu ┼íifriranih diskov namre─Ź ve─Źina ┼íifrirnih aplikacij prepi┼íe njihove ┼íifrine klju─Źe, shranjene v predpomnilniku.

┼áe eno re┼íitev proti Cold Boot napadu pa so na┼íli raziskovalci Tilo M├╝ller, Felix C. Freiling ter Andreas Dewald. V ─Źlanku TRESOR Runs Encryption Securely Outside RAM opisujejo idejo shranjevanja ┼íifrirnih klju─Źev v CPU registru namesto v pomnilniku RAM. Idejo so implementirali v aplikaciji TRESOR. Aplikacija omogo─Źa shranjevanje ┼íifrinih klju─Źev iz izvajanje izra─Źunov v x86 razhro┼í─Źevalnih registrih (ang. x86 debug registers). To je mogo─Źe na procesorjih, ki podpirajo AES-NI ukazni nabor (ang. AES-NI instruction set). Testiranje je pokazalo, da je na 64-bitnih procesorjih, ki podpirajo AES-NI (npr. Intel i5 in Intel i7) mogo─Źe uporabljati AES ┼íifrirne klju─Źe velikosti 128, 192 in 256 bitov, pri ─Źemer ni zaznati upada zmogljivosti ┼íifriranja. TRESOR je mogo─Źe uporabljati tudi na 32-bitnih procesorjih, ki podpirajo SSE2, vendar v tem primeru hitrost ┼íifrirnih operacij pade za ┼íestkrat, uporabiti pa je mogo─Źe najve─Ź 128 bitne ┼íifrirne klju─Źe. Aplikacija je sicer odprtokodna in na voljo za brezpla─Źen prenos (samo za okolje Linux), vendar je njena namestitev razmeroma zahtevna, re┼íitve, ki jih prina┼ía pa ┼żal (┼íe) niso vlju─Źene v Linux jedro.

Podobna aplikacija (tudi samo za okolje Linux) je tudi Loop-Amnesia, ki uporablja AMD64 oz. EMT64 registre, vendar je aplikacija ravno tako v zelo razvojni fazi in lahko ob nepravilni uporabi (vstop v stanje mirovanja (ang. suspend), uporaba SMP (Symmetric multi processing) jedra) povzro─Źi okvaro podatkov na disku. Ve─Ź o tem v ─Źlanku Security Through Amnesia: A Software-Based Solution to the Cold Boot Attack on Disk Encryption, avtorja Patricka Simmonsa (kot zanimivost: na podlagi te aplikacije je bila testno razvita celo Linux distribucija z imenom paranoix).

Podoben pristop je tudi onemogo─Źenje L1 predpomnilnika procesorja (postopek je znan kot "frozen cache"), vendar ta postopek zelo mo─Źno vpliva na zmogljivost ra─Źunalnika, ki ob tem postane prakti─Źno neuporaben za kakr┼ínokoli delo.

Obstaja pa ┼íe ena re┼íitev, in sicer ┼íifranje podatkov v pomnilniku RAM. Tak┼íno re┼íitev uporabljajo nekatere specializirane naprave, npr. nekatere igralne konzole, ki ┼żelijo onemogo─Źiti razbitje DRM za┼í─Źite. Obstajajo pa tudi nekatere programske re┼íitve. Podjetje PrivateCore tako ponuja aplikacijo PrivateCore vCage, ki jo je mogo─Źe nalo┼żiti na 32-bitne (x86) stre┼żnike. Aplikacija s pomo─Źjo Trusted Platform modula (TPM) in Intelove Trusted Execution Technology (Intel TXT) omogo─Źa preverjanje (validacijo) strojne opreme v ra─Źunalniku. Poleg tega pomnilnik RAM za┼í─Źiti z AES ┼íifriranjem in sicer tako, da v predpomnilnik procesorja nalo┼żi hipervizor (zaenkrat uporabljajo KVM (Kernel-based Virtual Machine) hipervizor), ki skrbi za ┼íifriranje in de┼íifriranje vsebine pomnilnika. Pri tem uporablja tudi AES-NI, ki omogo─Źa strojno pope┼íevanje kriptografskih operacij.

Tehnologija je vsekakor zanimiva, a razmeroma nova (predstavili so jo ┼íele pred nekaj meseci), temelji pa na predpostavki, da je procesor edini element ra─Źunalnika, ki mu lahko zaupamo. S ┼íifriranjem pomnilnika RAM in vsebine trdih diskov in drugih nosilcev podatkov namre─Ź s to tehnologijo povsem onemogo─Źimo napade na pomnilnik preko DMA s strani zlonamerne strojne opreme.

Zaklju─Źek


Ve─Źina kriptografskih re┼íitev temelji na predpostavki, da je delovni pomnilnik RAM varno mesto za hrambo ┼íifrirnih klju─Źev. A ta predpostavka v resnici ne dr┼żi vedno. Kot smo pokazali v tokratnem prispevku je namre─Ź na voljo kar nekaj napadov na delovni pomnilnik RAM. Za njihovo izvedbo ni potrebna preve─Ź zapletena in draga oprema. V nasprotju z napadi pa enostavnih in hkrati u─Źinkovitih re┼íitev ni kaj dosti. Ra─Źunalni┼ítvo pa─Ź v veliki meri ┼íe vedno temelji na predpostavki zaupanja v strojno opremo.
Trajno brisanje podatkov

Trajno brisanje podatkov

Opozorilo: Uporaba spodaj opisanih postopkov lahko privede do resne izgube podatkov ali do okvare sistema. Uporaba na lastno odgovornost. Dedek Mraz vam je prinesel nov računalnik in čas je, da se znebite starega. Ni problema, porečete in se s staro &#8220;škatlico&#8221; odpravite proti najbližjemu ...

Preberi cel članek »

All your firmware are belong to us

All your firmware are belong to us

Intervju z neodvisnim svetovalcev za varnost in omrežja Arrigom Triulziem. Arrigo Triulzi je neodvisni svetovalec za varnost in omrežja, ki deluje v Ženevi v Švici. Po poklicu je matematik, a se že 20 let se ukvarja s svetovanjem. Njegov hobi je raziskovanje strojne programske ...

Preberi cel članek »

Šifriranje nosilcev podatkov v okolju Linux in Windows

Šifriranje nosilcev podatkov v okolju Linux in Windows

Cryptography is a data-protection technology just as gloves are a hand-protection technology. Cryptography protects data from hackers, corporate spies and con artists, whereas gloves protect hands from cuts, scrapes, heat, cold and infection. The former can frustrate FBI wiretapping, and the latter can ...

Preberi cel članek »

Vzpostavitev v celoti šifriranega sistema

Vzpostavitev v celoti šifriranega sistema

Priporočamo, da si najprej preberete članek z naslovom: [st.povezava /clanki/07003 Šifriranje nosilcev podatkov v okolju Linux in Windows]. Opozorilo: Uporaba spodaj opisanih postopkov lahko privede do resne izgube podatkov ali do okvare sistema. V nekaterih nedemokratičnih državah je osebna uporaba ...

Preberi cel članek »

Intervju z Dustinom Kirklandom, glavnim razvijalcem sistemov za šifriranje v Ubuntuju

Intervju z Dustinom Kirklandom, glavnim razvijalcem sistemov za šifriranje v Ubuntuju

English version Dustin Kirkland je Ubuntu Core razvijalec, zaposlen pri podjetju Canonical. Preden je začel delati na razvoju Ubuntu serverja, je preživel 8 let pri IBM-u. Trenutno je osredotočen na razvoj Ubuntu Enterprise oblaka za prihajajočo različico Ubuntuja, 10.04 LTS, pred tem pa je delal na ...

Preberi cel članek »