Ovo je stara izmjena dokumenta!
UEFI (Unified Extensible Firmware Interface) kritična je poveznica između hardvera i operacijskog sustava koja, zbog smještaja na SPI flash memoriji matične ploče, omogućuje napadačima trajnu prisutnost (perzistenciju) neovisnu o reinstalaciji OS-a ili zamjeni diska. Firmware forenzika bavi se pouzdanim prikupljanjem sadržaja flash čipa i analizom UEFI postavki (NVRAM) kako bi se otkrile neovlaštene izmjene, npr. umetnuti zlonamjerni moduli ili pokušaji da se tijekom paljenja računala pokrene nepouzdan (nepotpisan) kod. Ova wiki stranica definira postupke hardverskog i softverskog snimanja (izrade slike) firmware-a te ključne artefakte nužne za detekciju kompromitacije na najnižoj razini računalnog sustava.
Za razliku od klasičnog BIOS-a koji je bio monolitni komad koda, UEFI (Unified Extensible Firmware Interface) je složeniji softverski sustav koji djeluje kao “mini operacijski sustav” prije pokretanja glavnog OS-a. Razumijevanje njegove strukture nužno je za lociranje malicioznog koda.
Sav firmware (BIOS/UEFI) pohranjen je na SPI Flash čipu koji se nalazi na matičnoj ploči. Forenzička važnost leži u tome što je čip fizički odvojen od tvrdog diska (HDD/SSD) pa brisanje ili zamjena diska ne uklanja podatke (ni malware) s ovog čipa. Sadržaj čipa nije nasumičan, nego je organiziran prema strogim pravilima (npr. Intel Flash Descriptor).
Logička struktura Intel SPI Flash memorije. (0) Flash Descriptor definira početak i kraj svih ostalih regija. (1) BIOS (ili UEFI) Region sadrži glavni UEFI kod i NVRAM varijable, dok (2) Intel CSME (Converged Security and Management Engine) sadrži firmware za zasebni sigurnosni procesor. Ostale regije poput (3) GbE (mrežne postavke) i (4) EC (Embedded Controller) su specifične za platformu.
NVRAM je dio flash memorije rezerviran za pohranu postavki koje moraju moći preživjeti gašenje računala. On sadrži boot redoslijed (BootOrder), postavke jezika, i najvažnije, Secure Boot ključeve (PK, KEK, db, dbx). Forenzička važnost leži u tome što napadači ovdje mogu promijeniti način bootanja ili ubaciti svoje ključeve kako bi njihov malware bio “ovlašten” za pokretanje, zato ovdje često forenzičar traži anomalije.
Podaci unutar NVRAM-a spremaju se u obliku varijabli te svaka varijabla ima svoje ime i jedinstveni identifikator (GUID). Primjer sumnjive varijable: Ako bi bila pronađena varijabla nepoznatog imena koja sadrži veliku količinu binarnih podataka (koda), to može biti maliciozni payload.
Napadači ciljaju firmware jer omogućuje trajnu prisutnost (perzistenciju) ispod razine operacijskog sustava, što znači da malware preživljava reinstalaciju OS-a, zamjenu diska ili skeniranje antivirus softverom. UEFI arhitektura nudi nekoliko “ulaznih točaka” koje napadači iskorištavaju kako bi ugradili zlonamjerni kod.
DXE (Driver Execution Environment) je dio UEFI pokretanja u kojem se učitavaju driveri za hardver i pripremaju usluge koje će OS koristiti. Napadači mogu umetnuti zlonamjerni DXE driver ili modificirati postojeći legitiman driver, s čime osiguraju da se njihov kod izvršava pri svakom pokretanju računala prije nego što operacijski sustav preuzme kontrolu. Ovaj pristup je učinkovit jer se DXE driveri izvršavaju s najvećim privilegijama, a primjer takvog napada je CosmicStrand, koji je koristio modificirani DXE driver kako bi “ubacivao” malware u memoriju OS-a tijekom svakog pokretanja.
Bootkit je vrsta rootkita koja modificira bootloader, program kojeg učitava operacijski sustav. U UEFI kontekstu, napadači mogu zamijeniti legitimni EFI bootloader (npr. za Windows je to bootx64.efi) sa zlonamjernom verzijom ili ga omotati dodatnim kodom koji se izvršava prije legitimnog dijela. BlackLotus je poznati primjer UEFI bootkita koji je iskorištavao ranjivost u Secure Boot mehanizmu kako bi zaobišao provjeru potpisa i učitao nepotpisani maliciozni kod. Bootkit ostavlja tragove u EFI System Partition (ESP) particiji na disku, ali može biti integriran i direktno u BIOS regiju SPI flash čipa, čime bi bio otporniji na detekciju.
Secure Boot je sigurnosni mehanizam koji osigurava da se tijekom pokretanja pokreću samo potpisane i odobrene komponente. Ovaj sustav oslanja se na kriptografskim ključevima pohranjenima u NVRAM varijablama: PK (Platform Key, “vlasnik” platforme), KEK (Key Exchange Key, posredni ključevi) i db/dbx (database/revocation database, tj. popis dozvoljenih i zabranjenih potpisa). Napadač koji dobije mogućnost pisanja u NVRAM može dodati vlastite ključeve u db ili ukloniti opoziv zlonamjernog potpisa iz dbx, čime omogućuje pokretanje nepouzdanog koda bez alarmiranja sustava. Ovakvi napadi su rijetki jer zahtijevaju povišene privilegije ili fizički pristup, ali kada se dogode, vrlo su teški za uočavanje jer ne mijenjaju sam izvršni UEFI kod, nego samo konfiguraciju povjerenja.
Option ROM je firmware koji dolazi na dodatnim karticama (grafička, mrežna, RAID). Budući da se ovaj kod učitava vrlo rano tijekom bootanja (kako bi inicijalizirao karticu), napadači mogu pokušati zamijeniti taj kod sa svojim zlonamjernim. Iako je teži za izvedbu jer često zahtijeva fizički pristup ili specifične alate za flashanje tog firmwarea, ovaj vektor je opasan jer sigurnosni alati koji skeniraju glavnu matičnu ploču često preskaču provjeru firmwarea na dodatnim karticama.
Akvizicija firmwarea je proces stvaranja kopije (dump/image) sadržaja SPI flash čipa, a postoje dvije glavne metode, ovisno o dostupnosti opreme i sigurnosnim preprekama na sustavu.
Ova metoda koristi alate pokrenute unutar operacijskog sustava (Windows/Linux) ili iz EFI shell-a za čitanje sadržaja flash memorije. Najpoznatiji alati su Intel Flash Programming Tool (FPT) iz Intel CSME paketa i open-source alat Flashrom. Primjer naredbe za dump je: fptw64.exe -D full_dump.bin
Ova metoda uključuje fizičko spajanje na SPI flash čip dok je računalo isključeno, čime se zaobilaze sve softverske zaštite i ograničenja OS-a. Postupak je sljedeći: Koristi se SPI programator (kao što je popularni i jeftini CH341A ili profesionalni DediProg) koji se spaja na USB port forenzičke radne stanice. Na čip na matičnoj ploči spaja se pomoću SOIC8/SOIC16 testne kvačice (POMONA clip), bez potrebe za odlemljivanjem čipa.
Primjer hardverske akvizicije: CH341A USB programator (vidljiv lijevo u slici) spojen je na laptop, dok je testni clip (u ovom slučaju SOIC8 clip) izravno spojen na SPI flash čip promatranog računala. Ovakvo spajanje omogućuje čitanje i pisanje po čipu bez potrebe za odlemljivanjem ili uključivanjem napajanja matične ploče promatranog računala.
[1] Brenda Buckman, What is UEFI and Why It Matters in Cybersecurity
[2] Alex Matrosov, Eugene Rodionov, UEFI Firmware Rootkits: Myths and Reality
[3]
Jim Mortensen & Dick Wilkins, PhD,
Phoenix Technologies, Ltd., UEFI Firmware
Security Concerns and Best Practices
[4] Paul Asadoorian, Firmware Security Realizations - Part 3 - SPI Write Protections
[5] Erik Bjorge and Maggie Jauregui (Intel), Attacking and Defending the Platform
[6] Xeno Kovah, John Butterworth, Corey Kallenberg, Sam Cornwell, Analyzing UEFI BIOS from Attacker & Defender Viewpoints
[7] Stefan Kiltz, Robert Altschaffel, Jana Dittmann, Hidden in Plain Sight - Persistent Alternative Mass Storage Data Streams as a Means for Data Hiding With the Help of UEFI NVRAM and Implications for IT Forensics
[8] Great (Kaspersky Lab), CosmicStrand: the discovery of a sophisticated UEFI firmware rootkit
[9] ESET, https://www.eset.com/us/about/newsroom/research/eset-research-analyzes-blacklotus-a-uefi-bootkit-that-can-bypass-uefi-secure-boot-on-fully-patched-systems/
[10] Johannes Stuttgen, Stefan Voemel and Michael Denzel, Acquisition and Analysis of Compromised Firmware Using Memory Forensics
[11] Izvor slike CH341A USB programatora