Drive, kdyz byl cas, jsem se docela zabyval hackovanim BIOSu (jedna relevantni ukazka prace zde: http://rayer.g6.cz/romos/romos.htm ), tak bych k tomuto tematu pridal par myslenek...
Hned na zacatek rikam, ze o tom badbiosu mam malo informaci, takze si netroufam soudit jesi je to fake nebo ne. Nicmene bylo a jsou tu moznosti, ktere by neco takoveho teoreticky umoznovali, i kdyz dat nec otakoveho dohromady by jiste stalo spoustu prace a spis nez na nake nezavisle hackery bych to prisuzoval organizacim jako NSA a pod, kde cas a penize nehrajou roli.
Ano hlavnich vyrobcu BIOSu neni mnoho, ti dodavaji vyrobcum MB naky genericky zaklad kery se dal upravuje, takze kuli ruznym konfiguracim HW neni mozne poustet bios pro jeden MB na jinem (i velmi podobnem MB), takze predstava, ze nekdo udela kompletni univerzalni nahradu fake BIOSu je mylna. Nicmene nektere moduly jsou podobne nebo stejne a tam by se dalo zamerit na modifikaci. Spise jen v nakem spolecnem modulu vytvorit hook, kterym se spusti novy modul pridani do image utocnikem. Taky je tu problem s tim, ze kazdy vyrobce BIOSu (i ruzne verze) maji jinou strukturu a nekdy i modifikace (rozlozeni na moduly a slozeni) pomoci standardnich toolu je obtizna. Hlavni vyrobci jsou asi 3 - Award, AMI a Phoenix (nevim jak zrovna ted aktualne), k tomu ale dalsi velci vyrobci (Dell, HP) pouzivaji svoje, kere maji zas jinou strukturu a na ne ani zadne nastroje k dispozici nemam. Samozrejme z pohledu vladnich organizaci tohle nemusi byt prekazka, patrne muzou dostat i zdrojaky a vse potrebne od vyrobcu, pak ta prace jde hned lepe od ruky...
Kdyz se podivate na muj web, tak tam najdete jeden zpusob, jak uz na starych BIOSech bylo mozne vlozit specificky ROM modul (signatuta 55AA, max. velikost 64kB), ktery bylo mozne po POSTu spustit. Ja jsem ho vyuzival k celkem mirumilovnemu ucelu spusteni FreeDOSu primo z BIOSu, pokud napr. selze nebo neni disk ani jine boot medium. Spusteni tohoto ROM modulu (podobne jako bootrom sitovky) je podmineno zapnutim v setupu, ale i to by se dalo patrne obejit. Tusim ze rusky program BIOS patcher neco takoveho umel. Pak uz jen staci vytvorit dropper se zabudovanym flashovacim programem, kery ziska ring0 prava nebo je nak vyexploituje aby mohl provest flashnuti a je celkem velka sance, ze se to na MB beznych vyrobcu uchyti...
Do tech 64kB ROM modulu se toho da napsat docela dost. Me se tam veslo jadro FreeDOSu, osekany command.com, 2-panelovy spravce souboru MikroManazer a par utilit. Dnes kdy kazdy novy CPU podporuje virtualizaci, tak by stalo za to tam nakodit naky jednoduchy hypervizor. Uz jsem o tom cetl nake dokumenty, ze timto zpusobem lze vytvorit pro OS docela tezko zistitelny malware a nejaky proof of concept snad tez existuje. Zkratka ten ROM modul nacte do pameti hypervisor (VMM) a pak pod nim ve VM normalne pusti OS. OS si toho nemusi vsimnout, v CPU totiz neexistuje naky flag, kery by primo rikal ted bezim ve VM, virtualizace je az prilis dokonala. Samozrejme jsou techniky jak to zistit, treba podle mereni casu nakych instrukci atd, coz se zas muze pokouset VMM nejak skryvat... VMM bezici na pozadi nemusi delat vecunu doby skoro nic, takze si tezko nekdo neceho vsimne. Muze treba odchytavat komunikaci s klavesnici a sitovou kartou, tech hezkych veci se da vymyslet spousta... Navic muze i aktivne branit preflashovani cisteho biosu od vyrobce, takze pak nezbyde nez vypajet brouka a prehrat vedle (pokud ten zmetek mezitim neinfikuje treba este VGA BIOS :)
Co se tyce to komunikace po audiu. Nekdo se tu holedbal HDA 192k/32b - jen si zmerte skutecny SNR kolik bitu realne ma ta shitova onboard zvukovka dynamiky. K tomu pripocist sum mikrofonu, ruseni v mistnosti atd. Na nake veci vzdalenosti bych tomu moc neveril. Nicmene komunikace by mohla teoreticky probihat na f pobliz 20kHz, kde uz skoro nikdo neslysi (ja uz s vekem tech 20k nedavam) nakou robustni pomalou modulaci, napr. prepinai 2 blizkych frekvenci, neco na zpusob DTMF, kera je docela odolna a da se dekodovat i pod prahem sumu). Pokud by na to dorozumivani mely pocitace cely den, tak by treba par desitek kB slo prenest...
Dalsi vec, kera to dnes zjednodusuje je UEFI. Do toho jsem se zatim osobne nerypal, ani nemam patricne tooly, ale co vim, je velka cast UEFI kodu postavena na nakem opensource frejmworku, kery si upravuji vyrobci a doplnuji o specificke binarni moduly treba na init inteliho radice pameti. Nicmene se tim platforma dosti sjednocuje a tim i klesa potreba ruznych variant. Navic UEFI musi byt tak 10x komplexnejsi a slozitejsi nez stary BIOS a umerne tomu tam bude i chyb, kere pujdou vyexploitovat. A kolik lidi casto nebo vubec BIOS upgraduje ze... Navic UEFI je diametralne odlisne v tom, ze bezi v pmode a prinasi mnohem sirsi API a spoustu pokrocilych driveru treba na USB zarizeni, SVGA, FAT32 FS, je to v podstate maly OS. Takze UEFI aplikace uz nemusi mit vendor sepc. drivery na vsechny periferie ale vyuzije prave ty UEFI drivery, coz zjednodusuje psani a velikost kodu. Navic velikost flash chipu se neustale zvetsuje, ja mam na desce treba 0,5MB SPI flash, ale dnes je bezne klidne 8MB aby se tam vesly ty zasrany omalovanky a este spousta mista zbyde, takze v tomhle uz dnes neni problem.
Taky bych upozornil na technologii intel Vpro ci AMT
http://en.wikipedia.org/wiki/Intel_Active_Management_Technology , coz uz je v podstate sam o sobe takovy rootkit pro vzdalenou spravu PC, kery umoznuje i takove veci jako zapnuti pres LAN a nainstalovani OS. Takze by stacilo, kdyby ten malwer tyhle funkce vhodne vyuzil a zpristupnil vzdalenemu utocnikovi.
No proste ritime se do jedne velke prdele, tak abych to na zaver odlehcil, tak kdo neznate, prectete si skvelou (nadcasovou) povidku Troglodyt a Maska
http://josef.pecinovsky.cz/Povidky/MASKA.htm
:)
// psano dost ve spechu, tak prosim grammar_nazi=0
Co jsem si precetl ten clanek na arstechnica.com, tak to zni dost pochybne, bezpecnosti expert s tim "bojuje" uz 3 roky a pritom zadne konkretny vysledky, DASM modulu, ze by ho napadlo treba preflashnout cip v programatoru.
Docela pritazeny za vlasy mi pride, ze by infekce z USB klice probihala nakym buffer overflow. USB komunikaci prece obsluhuji konkretni ovladace USB xHCI, kery sou na kazdy platforme napsany jinak a v ruznych verzich. BIOS pouziva vlastni obsluhu jen kdyz je zapla v podpora pro legacy USB, kde pak v DOSu pridava rozsireni INT13h a umoznuje tak pristup DOSu na flashdisky. Takze tam by teoreticky mohla byt chybka, ze by nak vhodne upraveny USB device deskriptor zpusobil buffer overflow a nasledne spusteni nakeho kodu. Totez pri pokusu bootovat z takove flash. Ale pokud uz tam bezi treba linux a zasunu USB, tak si to resi kernel driver a ne BIOS. Mozna je to jinak u UEFI, ale nevim o tom, ze by se na UEFI PC v normalnim OS pouzival jiny USB driver (iterni UEFI) nez na neUEFI (kernelovy)...