Objavljeno:

Napad na krmilnik trdega diska

V tokratnem članku, ki je bil objavljen tudi na spletišču Slo-Tech.com, si bomo ogledali kako je zlonamerno programsko kodo mogoče shraniti na krmilnik trdega diska. In sicer na način, da je ne zazna noben antivirus ali kakšna druga programska zaščita v računalniku. Gre za enega izmed napadov na strojno programsko opremo (ang. firmware), proti katerim zaenkrat ni na voljo praktično nobene uporabne zaščite, se pa o teh napadih kar precej špekulira, da jih pri svojem delu uporabljajo različne tajne službe (od NSA, do Kitajcev). V prihodnjih člankih bomo predstavili še druge podobne napade.

Jeroen Domburg, znan tudi kot Sprite, je na svoji spletni strani objavil zanimiv članek v katerem opisuje razvoj zlonamerne programske opreme za krmilnik trdega diska. Kot je namreč znano, je krmilnik trdega diska vmesnik med računalnikom in trdim diskom, oziroma del trdega diska, ki skrbi za fizično branje in zapisovanje podatkov iz oziroma na trdi disk.

Domburg se je podviga lotil z 88i9146 krmnilnikom Western Digital 3.5″ 2TB trdega diska. Priključil ga je na JTAG vmesnik ter ugotovil, da vsebuje tri ARM procesorje. Dva sta tipa ARM9, eden pa Cortex-M3. Nekaj raziskovanja je tudi pokazalo, da je Cortex-M3 mogoče izključiti, pa trdi disk kljub temu ohrani polno funkcionalnost. Kar pomeni, da ta ARM procesor ne počne nič (ali pa morda kaj prav posebno neopaznega).

Analiza kontrolerja preko JTAG vmesnika

Analiza krmilnika preko JTAG vmesnika

Domburg je nato v nadaljevanju na krmilnik preko JTAG vmesnika naložil svojo strojno programsko kodo (ang. firmware), ki je spreminjala podatke pri branju iz trdega diska. Da pa bi spremembe ostale trajne, je bilo to programsko kodo potrebno naložiti na tim. bliskovni bralni pomnilnik (ang. flash ROM). Domburg si je pri tem najprej pomagal s programatorjem, vendar ta postopek zahteva, da bliskovni bralni pomnilniški čip najprej odlotamo iz krmilnika, ga priklopimo na programator, nanj naložimo svojo programsko kodo in ga potem prilotamo nazaj na krmilnik.

V naslednjem koraku je nato skušal ugotoviti, ali bi bilo na bliskovni bralni pomnilnik mogoče podatke zapisati kar s pomočjo namenske aplikacije, preko računalnika. Malce raziskovanja je pokazalo, da Western Digital dejansko omogoča tim. flashanje svojih trdih diskov. Našel je tudi članek Ariela Berkmana o skrivanju podatkov na tim. rezervirane sektorje trdega diska ter posebno Linux orodje za nastavljanje obnašanja trdega diska v času mirovanja (gre za idle3-tools). To mu je na koncu omogočilo zapis svoje lastne programske kode na krmilnik trdega diska kar s pomočjo posebne aplikacije, ki jo je pognal na računalniku.

Nalaganje zlonamerne strojne programske opreme

Nalaganje zlonamerne strojne programske opreme

V nadaljevanju je nato svojo strojno programsko kodo modificiral tako, da je spreminjala podatke, ki jih je računalnik prebral iz trdega diska. Konkretno, je njegova strojna programska koda spreminjala vsebino prebrane /etc/shadow datoteke. V tej datoteki se namreč nahajajo tim. zgoščene vrednosti (ang. hash) gesel uporabnikov Linux sistema. Namesto prave vsebine datoteke je modificirana strojna programska koda računalniku pošiljala vnaprej pripravljeno vsebino, vendar pa se je ta mehanizem aktiviral šele po tem, ko je krmilnik trdega diska prejel tim. magični niz podatkov (s strani napadalca vnaprej pripravljeno zaporedje znakov), ki je zlonamerno programsko kodo aktiviral.

V praksi je torej napad mogoče izvesti na sledeč način. Napadalec pridobi neavtoriziran oddaljeni ali fizični dostop do ciljnega sistema ter na krmilnik njegovega trdega diska naloži zlonamerno strojno programsko opremo. Če napadalca kasneje odkrijejo in na računalnik namestijo povsem svež operacijski sistem, lahko napadalec preko te zlonamerne strojne programske opreme ponovno pridobi dostop do sistema. Na sistemu z magičnim nizom podatkov najprej aktivira svojo programsko kodo (npr. na cilji sistem pošlje spletni zahtevek (zapiše se na disk v dnevniško datoteko spletnega strežnika!) ali e-pošto (zapiše se na disk v uporabnikov poštni predal!)), nato pa se v sistem prijavi kot administrator (oz. root) svojim (vnaprej pripravljenim) geslom. Računalnik bo vpisano geslo preveril tako, da bo iz njega izračunal zgoščeno vrednost ter le to primerjal s tisto, ki jo ima shranjeno na disku. In ko bo disk to zgoščeno vrednost prebral, jo bo zlonamerna strojna programska koda lepo potihem zamenjala s svojo (lažno) ter jo posredovala računalniku. Prijava v sistem bo seveda uspešna. In to ne glede na vse antiviruse, SELinux, AppArmor, IDS sisteme in druge programske igračke. Naj omenimo, da trik z nekajmalega modifikacije deluje za vse operacijske sisteme (Linux, Windows, Mac OS, FreeBSD,…).

Strojna programska koda na krmilniku trdega diska pa lahko zazna tudi forenzično kopiranje diska (sekvenčno branje podatkov!) ter v tem primeru prične pošiljati lažne (npr. naključne) podatke. Na tam način si je mogoče pripraviti disk, ki ga ni mogoče forenzično kopirati oz. kloniranti, ob običajni rabi pa deluje povsem normalno. Nekaj podobnega je sicer na 29C3 konferenci decembra 2012 pokazal že Travis Goodspeed, ki je razvil USB ključek z imenom Facedancer. USB ključek zna zaznati tako forenzično kopiranje, kot tudi v katerem operacijskem sistemu ključek uporabljamo (npr. v okolju windows bo ključek prikazal drugačne podatke kot v okolju Linux).

Spreminjanje podatkov s strani zlonamerne strojne programske kode

Spreminjanje podatkov s strani zlonamerne strojne programske kode

In čisto za konec. Krmilnik trdega diska je v resnici čisto pravi računalnik v malem. Nanj je torej mogoče naložiti tudi lasten operacijski sistem. Domburg je tako za dokaz, da je to mogoče, na svoj trdi disk oziroma na njegov krmilnik – dobesedno – naložil Linux. Reč se sicer ne zažene do konca, a vseeno dovolj, da si lahko predstavljamo kako zmogljiv kos strojne opreme je pravzaprav krmilnik trdega diska.

Članek je vsekakor nadvse zanimiv iz tehničnega stališča, a v dobi po Snowdenovih odkritjih tudi informacijsko manj podkovanega bralca ne bo pustil hladnega. Vprašanje namreč ni samo ali zaupate svojemu ponudniku elektronske pošte. Vprašanje je tudi ali zaupate svojemu trdemu disku ali USB ključku. Da o mrežnih karticah niti ne govorimo.

Kategorije: Informacijska varnost, Zasebnost
Ključne besede: napadi na strojno programsko opremo