Manolo-kevitra ny hidina any amin'ny ambaratonga ambany indray izahay ary hiresaka momba ny fiarovana ny sehatra solosaina mifanentana amin'ny firmware x86. Amin'ity indray mitoraka ity, ny singa fototra amin'ny fikarohana dia ny Intel Boot Guard (tsy tokony hafangaro amin'ny Intel BIOS Guard!) - teknolojia boot azo itokisana amin'ny BIOS tohanan'ny hardware izay azon'ny mpivarotra rafitra informatika afaka mamela na manafoana mandritra ny dingana famokarana. Eny ary, efa fantatsika ny fomba fikarohana: tapaho manify ny fampiharana an'io teknolojia io amin'ny alàlan'ny reverse engineering, mamaritra ny maritranony, mameno azy amin'ny antsipiriany tsy misy antontan-taratasy, mameno azy amin'ny vectors fanafihana mba hanandrana sy hampifangaro azy. Andao hanampy afo miaraka amin'ny tantara iray momba ny fomba ahafahan'ny bibikely klone amin'ny famokarana mpivarotra maromaro mandritra ny taona maro ahafahan'ny mpanafika iray mampiasa io teknolojia io mba hamoronana rootkit miafina izay tsy azo esorina (eny fa na dia ny programmer aza) ao amin'ny rafitra.
Raha ny marina, ny lahatsoratra dia mifototra amin'ny tatitra "On Guard for Rootkits: Intel BootGuard" avy amin'ny fihaonambe ZeroNights 2016 ary fihaonana faha-29 DefCon Russia (fampisehoana roa eto).
Firmware ho an'ny sehatra solosaina miaraka amin'ny maritrano Intel 64
Hanombohana, andao hamaly ny fanontaniana hoe: inona ny firmware amin'ny sehatra solosaina maoderina miaraka amin'ny maritrano Intel 64? Mazava ho azy, UEFI BIOS. Tsy ho marina anefa io valiny io. Andeha hojerentsika ny sary, izay mampiseho ny desktop (laptop) dikan-ny maritrano.
Ny fototra dia ny rohy:
Processor (CPU, Central Processing Unit), izay, ankoatry ny tena cores, dia manana naorina-in sary fototra (tsy amin'ny modely rehetra) sy ny fahatsiarovana (IMC, Integrated Memory Controller);
Chipset (PCH, Platform Controller Hub), misy mpanara-maso isan-karazany hifaneraserana amin'ny fitaovana periferika sy fitantanana subsystems. Anisan'izany ny Intel Management Engine (ME) malaza, izay manana firmware ihany koa (Intel ME firmware).
Ny solosaina finday, ankoatry ny voalaza etsy ambony, dia mitaky fanaraha-maso mitambatra (ACPI EC, Fanaraha-maso Advanced sy Power Interface Embedded Controller), izay tompon'andraikitra amin'ny fampandehanana ny subsystem herinaratra, touchpad, fitendry, fanalahidy Fn (famirapiratan'ny efijery, feo, fitendry. backlight, sns.) sy ny maro hafa. Ary manana ny firmware manokana koa izy.
Noho izany, ny fitambaran'ny firmware etsy ambony dia ny firmware amin'ny sehatry ny solosaina (finday rafitra), izay voatahiry amin'ny fahatsiarovana tselatra SPI mahazatra. Mba tsy ho very hevitra ny mpampiasa an'io fitadidiana io hoe aiza no misy olona mandainga, dia zaraina amin'ireto faritra ireto ny votoatin'ity fahatsiarovana ity (araka ny aseho amin'ny sary):
UEFI BIOS;
ACPI EC firmware (faritra misaraka niseho niaraka tamin'ny Skylake processeur microarchitecture (2015), fa any an-tany dia mbola tsy nahita ohatra momba ny fampiasana azy, noho izany dia mbola ao anatin'ny UEFI BIOS ny rindrankajy controller embedded);
Ny fanavahana ny fidirana amin'ny faritra (araka ny fahazoan-dàlana voatondro) dia karakarain'ny tompon'ny fiara fitateram-bahoaka SPI - ny SPI controller naorina tao amin'ny chipset, izay idirana ity fahatsiarovana ity. Raha apetraka amin'ny soatoavina natolotry ny Intel (noho ny antony fiarovana) ny fahazoan-dàlana, dia ny mpampiasa tsirairay ny tselatra SPI dia manana fidirana feno (mamaky/manoratra) any amin'ny faritra misy azy ihany. Ny ambiny dia vakiana fotsiny na tsy azo idirana. Ny zava-misy fantatra: amin'ny rafitra maro, ny CPU dia manana fidirana feno amin'ny UEFI BIOS sy GbE, mamaky ny fidirana afa-tsy amin'ny famaritana flash, ary tsy misy fidirana amin'ny faritra Intel ME mihitsy. Nahoana no maro fa tsy izy rehetra? Tsy voatery izay aroso. Hilaza aminao bebe kokoa izahay ato amin'ny lahatsoratra.
Mekanisma hiarovana ny firmware amin'ny sehatra solosaina amin'ny fanovana
Mazava ho azy fa ny firmware amin'ny sehatra solosaina dia tokony harovana amin'ny mety ho marimaritra iraisana, izay ahafahan'ny mpanafika mety hahazo toerana ao aminy (tafavoaka ny fanavaozana OS / fametrahana indray), manatanteraka ny kaody ao amin'ny maodely manana tombontsoa, sns. Ary ny famerana ny fidirana amin'ny faritra fahatsiarovana tselatra SPI, mazava ho azy, dia tsy ampy. Noho izany, ny mekanika isan-karazany manokana amin'ny tontolo famonoana tsirairay dia ampiasaina mba hiarovana ny firmware amin'ny fanovana.
Noho izany, ny firmware Intel ME dia nosoniavina ho an'ny fanaraha-maso ny fahamendrehana sy ny maha-azo itokiana azy, ary nohamarinin'ny mpanara-maso ME isaky ny ampidirina ao amin'ny fahatsiarovana ME UMA. Ity dingana fanamarinana ity dia efa nodinihinay tamin'ny iray amin'ireo lahatsoratranatokana ho an'ny subsystem Intel ME.
Ary ny firmware ACPI EC, amin'ny ankapobeny, dia voamarina raha tsy misy ny fahamendrehana. Na izany aza, noho ny fisian'io binary io ao amin'ny UEFI BIOS, dia saika iharan'ny rafitra fiarovana mitovy amin'ny ampiasain'ny UEFI BIOS izy io. Andeha isika hiresaka momba azy ireo.
Ireo mekanika ireo dia azo zaraina ho sokajy roa.
Soraty ny fiarovana amin'ny faritra UEFI BIOS
Fiarovana ara-batana ny ao anatin'ny fahatsiarovana tselatra SPI miaraka amin'ny jumper miaro amin'ny fanoratana;
Fiarovana ny vinavinan'ny faritra UEFI BIOS ao amin'ny habaka adiresy CPU amin'ny alàlan'ny rejisitra PRx an'ny chipset;
Fanakanana ny fikasana hanoratra any amin'ny faritra UEFI BIOS amin'ny alàlan'ny famoronana sy fanodinana ny SMI mifanaraka amin'izany amin'ny fametrahana ny BIOS_WE / BLE sy SMM_BWP bits ao amin'ny rejisitra chipset;
Ny kinova mandroso kokoa amin'ity fiarovana ity dia Intel BIOS Guard (PFAT).
Ho fanampin'ireo mekanika ireo, ny mpivarotra dia afaka mamolavola sy mampihatra ny fepetra fiarovana azy manokana (ohatra, manao sonia kapsula miaraka amin'ny fanavaozana UEFI BIOS).
Zava-dehibe ny manamarika fa amin'ny rafitra manokana (miankina amin'ny mpivarotra), dia tsy azo ampiharina avokoa ireo rafitra fiarovana voalaza etsy ambony ireo, mety tsy hampiharina mihitsy, na mety hampiharina amin'ny fomba marefo. Azonao atao ny mamaky bebe kokoa momba ireo mekanika ireo sy ny zava-misy amin'ny fampiharana azy ireo ity lahatsoratra ity. Ho an'ireo liana dia manoro hevitra anao izahay hamaky ny andian-dahatsoratra manontolo momba ny fiarovana UEFI BIOS avy amin'ny CodeRush.
UEFI BIOS Authentication Verification
Rehefa miresaka momba ny teknolojia boot azo itokisana isika, ny zavatra voalohany tonga ao an-tsaina dia ny Secure Boot. Na izany aza, amin'ny lafiny ara-javakanto, dia natao hanamarina ny singa ivelan'ny UEFI BIOS (mpamily, loaders, sns.), fa tsy ny firmware mihitsy.
Noho izany, ny Intel ao amin'ny SoCs miaraka amin'ny Bay Trail microarchitecture (2012) dia nametraka fitaovana tsy azo afindra Secure Boot (Boot voamarina), izay tsy misy ifandraisany amin'ny teknolojia Secure Boot voalaza etsy ambony. Taty aoriana (2013), dia nohatsaraina ity rafitra ity ary, tamin'ny anarana hoe Intel Boot Guard, dia navoaka ho an'ny birao misy ny microarchitecture Haswell.
Alohan'ny hamaritana ny Intel Boot Guard, andeha hojerentsika ny tontolon'ny famonoana ao amin'ny rafitra Intel 64, izay, miaraka, no fototry ny fahatokisana an'ity teknolojia boot azo itokisana ity.
Intel CPU
Cap dia manoro hevitra fa ny processeur no tontolo famonoana lehibe ao amin'ny rafitra Intel 64. Nahoana koa no fototry ny fahatokisana? Hita fa ny fananana ireto singa manaraka ireto no mahatonga izany:
Microcode ROM dia fitadidiana tsy miovaova, tsy azo soratana ho an'ny fitehirizana microcode. Inoana fa ny microcode dia ny fampiharana ny rafitra fampianarana processeur amin'ny toromarika tsotra indrindra. Mitranga amin'ny microcode koa bibikely. Noho izany ao amin'ny BIOS dia afaka mahita binaries miaraka amin'ny fanavaozana microcode ianao (apetraka amin'ny fotoana boot izy ireo, satria tsy azo ovaina ny ROM). Ny votoatin'ireo binary ireo dia voasivana, izay manasarotra be ny fanadihadiana (noho izany, ny atiny manokana amin'ny microcode dia tsy fantatra afa-tsy izay mamolavola azy), ary nosoniavina mba hifehezana ny fahamendrehana sy ny maha-azo itokiana azy;
Fanalahidy AES hamadika ny votoatin'ny fanavaozana microcode;
RSA public key hash, izay manamarina ny sonian'ny Intel-developed ACM (Authenticated Code Module) code modules, izay azon'ny CPU atao alohan'ny hanombohan'ny BIOS (hello microcode) na mandritra ny fampandehanana azy, rehefa misy zava-mitranga.
Intel ME
Ity subsystem ao amin'ny bilaogy ity dia natokana ho an'ny roalahatsoratra. Tsarovy fa ity tontolo iainana azo tanterahana ity dia mifototra amin'ny microcontroller natsangana ao amin'ny chipset ary izy no tena miafina sy manana tombontsoa amin'ny rafitra.
Na eo aza ny halatra, ny Intel ME dia fototry ny fahatokisana, satria manana:
ME ROM - fahatsiarovana tsy miovaova, tsy azo averina (tsy misy fomba fanavaozana omena), misy ny kaody fanombohana, ary koa ny SHA256 hash an'ny RSA public key, izay manamarina ny sonia ny firmware Intel ME;
lakile AES amin'ny fitehirizana vaovao miafina;
fidirana amin'ny andiana fuse (FPFs, Field Programmable Fuses) tafiditra ao anatin'ny chipset ho fitahirizana maharitra ny vaovao sasany, ao anatin'izany ny fampahalalana nofaritan'ny mpivarotra rafitra informatika.
Intel Boot Guard 1.x
Disclaimer kely. Ny nomeraon'ny teknolojia Intel Boot Guard izay ampiasaintsika ato amin'ity lahatsoratra ity dia tsy misy dikany ary mety tsy misy ifandraisany amin'ny isa ampiasaina amin'ny antontan-taratasy Intel anatiny. Fanampin'izany, ny fampahalalana momba ny fampiharana an'ity teknolojia omena eto ity dia azo nandritra ny reverse engineering, ary mety misy tsy fahatomombanana raha oharina amin'ny fanondroana ny Intel Boot Guard, izay tsy azo avoaka mihitsy.
Noho izany, ny Intel Boot Guard (BG) dia teknolojia fanamarinana UEFI BIOS tohanan'ny hardware. Raha tsaraina amin'ny filazalazana kely ao amin'ilay boky [Nambara ny Teknolojian'ny Fiarovana Tafiditra ao amin'ny Platform, Fiakarana Toko Miaraka Amin'ny Fahamarinana, na Tsy Boot], dia toy ny rojo baoty azo itokisana izy io. Ary ny rohy voalohany ao anatiny dia ny code boot (microcode) ao anatin'ny CPU, izay ateraky ny hetsika RESET (tsy tokony hafangaro amin'ny vector RESET ao amin'ny BIOS!). Ny CPU dia mahita module code (Intel BG startup ACM) novolavolaina sy nosoniavin'i Intel amin'ny fahatsiarovana tselatra SPI, mampiditra azy ao amin'ny cache, manamarina izany (efa voamarika etsy ambony fa ny CPU dia manana fanalahidin'ny daholobe izay manamarina ny sonia ACM ) ary manomboka.
Ity module code ity dia tompon'andraikitra amin'ny fanamarinana ampahany kely amin'ny UEFI BIOS - Initial Boot Block (IBB), izay, ho setrin'izany, dia misy ny fampiasa amin'ny fanamarinana ny ampahany lehibe amin'ny UEFI BIOS. Noho izany, ny Intel BG dia ahafahanao manamarina ny maha-azo itokiana ny BIOS alohan'ny hanombohan'ny OS (izay azo atao eo ambany fanaraha-mason'ny teknolojia Secure Boot).
Ny teknolojia Intel BG dia manome fomba fiasa roa (ary ny iray dia tsy manelingelina ny iray hafa, izany hoe ny fomba roa dia azo alefa amin'ny rafitra, ary ny roa dia mety ho kilemaina).
Refesina Boot
Ao amin'ny mode Measured Boot (MB), ny singa baoty tsirairay (manomboka amin'ny CPU boot ROM) dia "mandrefy" ny manaraka amin'ny fampiasana ny fahaizan'ny Trusted Platform Module (TPM). Ho an'izay tsy mahalala dia avelao aho hanazava.
Ny TPM dia manana PCR (Platform Configuration Registers), izay mirakitra ny vokatry ny asa hashing araka ny formula:
Ireo. ny sandan'ny PCR amin'izao fotoana izao dia miankina amin'ny teo aloha, ary ireo rejistra ireo dia averina rehefa RESET ny rafitra.
Noho izany, amin'ny fomba MB, amin'ny fotoana iray, ny PCR dia maneho famantarana tokana (ao anatin'ny fahafahan'ny asa hash) ny kaody na data izay "refesina". Ny soatoavina PCR dia azo ampiasaina amin'ny fanafenana angon-drakitra sasany (TPM_Seal). Aorian'izany, ny famongorana azy ireo (TPM_Unseal) dia tsy azo atao raha tsy niova ny soatoavin'ny PCR vokatry ny fametahana (izany hoe, tsy misy singa iray "refesina" no novaina).
Boot voamarina
Ny zavatra mampatahotra indrindra ho an'ireo izay te hanova ny UEFI BIOS dia ny Verified Boot (VB) mode, izay ny singa boot tsirairay dia manamarina ny fahamendrehana sy ny maha-azo itokiana ny manaraka. Ary raha misy hadisoana fanamarinana, (iray amin'ireto) no mitranga:
fanakatonana amin'ny fe-potoana avy amin'ny 1 minitra ka hatramin'ny 30 minitra (mba ny mpampiasa dia manam-potoana mba hahatakatra ny antony tsy mandeha ny solosaina, ary, raha azo atao, dia miezaka ny hamerina ny BIOS);
fanakatonana avy hatrany (mba tsy hanam-potoana hahatakarana sy hanaovana izany ny mpampiasa);
fanohizana ny asa amin`ny mahitsy tarehy (ny tranga rehefa tsy misy fotoana ho an`ny fiarovana, satria misy zava-dehibe kokoa ny atao).
Ny safidy ny hetsika dia miankina amin'ny voatondro Intel BG configuration (izany hoe, amin'ny antsoina hoe fampiharana ny politika), izay voarakitra maharitra amin'ny solosaina sehatra mpivarotra amin'ny fitehirizana manokana - chipset fuses (FPFs). Hodinihintsika amin'ny an-tsipiriany bebe kokoa io hevitra io any aoriana.
Ho fanampin'ny fanamafisana, ny mpivarotra dia mamorona fanalahidy RSA 2048 roa ary mamorona rafitra data roa (aseho amin'ny sary):
Ny fanehoana fanalahidin'ny fakan'ny mpivarotra (KEYM, OEM Root Key Manifest), izay mametraka ny SVN (Security Version Number) amin'ity fisehoana ity, ny hash SHA256 amin'ny fanalahidin'ny besinimaro amin'ny fanehoana manaraka, ny fanalahidin'ny daholobe RSA (izany hoe ny ampahany ho an'ny daholobe amin'ny fanalahidin'ny fakan'ny mpivarotra) hanamarina ny sonia an'ity fanambarana ity sy ny sonia;
Ny IBB Manifest (IBBM, Initial Boot Block Manifest), izay mametraka ny SVN amin'ity manifestation ity, ny SHA256 hash an'ny IBB, ny fanalahidin'ny daholobe hanamarinana ny sonia an'ity fisehoana ity, ary ny sonia mihitsy.
Ny hash SHA256 an'ny OEM Root Key dia voasoratra maharitra amin'ny fuses chipset (FPFs), sahala amin'ny configuration Intel BG. Raha manome ny fampidirana an'io teknolojia io ny fanamafisana Intel BG, dia manomboka izao ity rafitra ity dia ny tompon'ny ampahany manokana amin'ny OEM Root Key ihany no afaka manavao ny BIOS (izany hoe afaka mamerina manitsy ireo fisehoana ireo), i.e. mpivarotra.
Rehefa mijery ny sary ianao, dia mipoitra avy hatrany ny fisalasalana momba ny filana rojo fanamarinana lava toy izany - afaka nampiasa fanehoana iray ianao. Nahoana no sarotra?
Raha ny marina, ny Intel dia manome ny mpivarotra ny fahafahana mampiasa fanalahidy IBB samihafa ho an'ny tsipika vokatra samihafa ary ny iray ho fototry. Raha tafaporitsaka ny ampahany manokana amin'ny fanalahidin'ny IBB (izay manamarika ny fisehoana faharoa), dia tsy hisy fiantraikany amin'ny tsipika vokatra iray ihany ny zava-nitranga ary mandra-pamoahan'ny mpivarotra mpivady vaovao sy ahafahan'ny fisehoana kajy indray amin'ny fanavaozana BIOS manaraka.
Fa raha ny fanalahidin'ny fakany no mandefitra (izay anasoniavana ny fanehoana voalohany), dia tsy azo atao ny manolo azy, tsy omena ny fomba fanafoanana. ny hash an'ny ampahany ho an'ny daholobe amin'ity fanalahidy ity dia voarindra ho FPF indray mandeha.
Intel Boot Guard Configuration
Andeha hojerentsika akaiky ny fikirakirana Intel BG sy ny fizotran'ny famoronana azy. Raha mijery ny tabilao mifanaraka amin'izany ianao ao amin'ny GUI an'ny Flash Image Tool avy amin'ny Intel System Tool Kit (STK), dia ho hitanao fa ny fanamafisam-peo Intel BG dia ahitana tenifototra amin'ny ampahany ampahibemaso amin'ny fanalahidin'ny fakan'ny mpivarotra, roa tsy fantatra. soatoavina, sy ny sisa. Intel BG profil.
Ny firafitry ity profil ity:
typedef struct BG_PROFILE
{
unsigned long Force_Boot_Guard_ACM : 1;
unsigned long Verified_Boot : 1;
unsigned long Measured_Boot : 1;
unsigned long Protect_BIOS_Environment : 1;
unsigned long Enforcement_Policy : 2; // 00b – do nothing
// 01b – shutdown with timeout
// 11b – immediate shutdown
unsigned long : 26;
};
Amin'ny ankapobeny, ny fanamafisam-peo Intel BG dia singa tena malefaka. Diniho, ohatra, ny saina Force_Boot_Guard_ACM. Rehefa voafafa izany, raha tsy hita ny maody ACM fanombohana BG amin'ny tselatra SPI, dia tsy hisy baoty azo itokisana hitranga. Tsy azo itokisana izany.
Efa nanoratra teo ambony izahay fa azo amboarina ny politikan'ny fampiharana ny fomba VB ka raha tsy nahomby ny fanamarinana, dia hisy fampidinana tsy azo itokisana.
Avelao ho an'ny mpivarotra ny zavatra tahaka izao...
Ny GUI an'ny utility dia manome ireto mombamomba "vonona" manaraka ireto:
isa
fitondrana
famaritana
0
Tsia_FVME
Ny teknolojia Intel BG dia kilemaina
1
VE
Nalefa ny maody VB, fanakatonana rehefa tapitra ny fotoana
2
VME
samy afaka ny fomba roa (VB sy MB), fanakatonana amin'ny fe-potoana
3
VM
samy afaka ny fomba roa, tsy mamono ny rafitra
4
FVE
Nalefa ny maody VB, fanakatonana avy hatrany
5
FVME
samy afaka ny fomba roa, fanakatonana avy hatrany
Araka ny efa voalaza teo aloha, ny fanamafisam-peo Intel BG dia tsy maintsy soratana indray mandeha sy ho an'ny rehetra amin'ny mpivarotra rafitra ao anaty chipset fuses (FPFs) - kely (araka ny fampahalalana tsy voamarina, 256 bytes ihany) fitahirizana fampahalalana momba ny fitaovana ao anaty chipset, izay azo alefa any ivelany. amin'ny trano famokarana Intel (ka izany no antony Field Programmable fuses).
Tena tsara amin'ny fitehirizana ny configuration satria:
Intel ME ihany no afaka mamaky sy manao fandaharana.
Noho izany, mba hametrahana ny fanamafisana ny teknolojia Intel BG amin'ny rafitra manokana, ny mpivarotra dia manao izao manaraka izao mandritra ny famokarana:
Amin'ny fampiasana ny Flash Image Tool (avy amin'ny Intel STK), dia mamorona sary mikirakira miaraka amin'ny fanamafisana Intel BG nomena ho miovaova ao anatin'ny faritra Intel ME (ilay antsoina hoe fitaratra vonjimaika ho an'ny FPF);
Mampiasa Flash Programming Tool (avy amin'ny Intel STK), manoratra ity sary ity amin'ny fahatsiarovana tselatra SPI an'ny rafitra ary manidy ilay antsoina hoe. fomba famokarana (amin'ity tranga ity, ny baiko mifanaraka amin'izany dia alefa any amin'ny Intel ME).
Vokatr'ireo asa ireo, ny Intel ME dia hanolo-tena amin'ny FPFs ny soatoavina nomena avy amin'ny fitaratra ho an'ny FPF ao amin'ny faritra ME, hametraka ny fahazoan-dàlana amin'ny SPI flash descriptors amin'ny soatoavina natolotry ny Intel (voalaza tany am-piandohan'ny lahatsoratra) ary manaova rafitra RESET.
Intel Boot Guard Implementation Analysis
Mba handinihana ny fampiharana an'io teknolojia io amin'ny ohatra iray manokana, dia nanamarina ireto rafitra manaraka ireto izahay momba ny dian'ny teknolojia Intel BG:
"Support" dia midika ny fisian'ny Intel BG startup ACM module, ny fisehoana voalaza etsy ambony ary ny code mifanaraka amin'ny BIOS, i.e. fampiharana ho an'ny fanadihadiana.
Voalohany indrindra, andeha isika hiresaka momba ny asan'ny processeur raha azo atao ny teknolojia Intel BG.
Tsy azo atao ny mahita santionany amin'ny microcode decrypted, noho izany, ny fomba fampiharana ireo hetsika voalaza etsy ambany (amin'ny microcode na amin'ny hardware) dia fanontaniana misokatra. Na izany aza, ny zava-misy fa ny processeur Intel maoderina dia "afaka" manatanteraka ireo hetsika ireo.
Aorian'ny fivoahan'ny fanjakana RESET dia mahita ny FIT (Tabilao Interface Firmware) ny processeur (eo amin'ny toerana misy ny adiresiny ny votoatin'ny fahatsiarovana tselatra). Mora ny mahita azy, ny tondro ho azy dia voasoratra ao amin'ny adiresy FFFF FFC0h.
Amin'ity ohatra ity, ity adiresy ity dia misy ny sanda FFD6 9500h. Mitodika amin'ity adiresy ity, ny processeur dia mahita ny latabatra FIT, izay mizara ho firaketana ny votoatiny. Ny fidirana voalohany dia ny lohatenin'ity rafitra manaraka ity:
typedef struct FIT_HEADER
{
char Tag[8]; // ‘_FIT_ ’
unsigned long NumEntries; // including FIT header entry
unsigned short Version; // 1.0
unsigned char EntryType; // 0
unsigned char Checksum;
};
Noho ny antony tsy fantatra dia tsy voaisa foana ao amin'ireo tabilao ireo ny checksum (avela ho tsy misy dikany ny saha).
Ny sisa tavela dia manondro ny binary isan-karazany izay mila asiana / tanterahana alohan'ny hamonoana ny BIOS, i.e. alohan'ny hidirana amin'ny vakoka RESET lova (FFFF FFF0h). Ny firafitry ny fidirana tsirairay dia toy izao manaraka izao:
typedef struct FIT_ENTRY
{
unsigned long BaseAddress;
unsigned long : 32;
unsigned long Size;
unsigned short Version; // 1.0
unsigned char EntryType;
unsigned char Checksum;
};
Ny saha EntryType dia manondro ny karazana sakana tondroin'ity fidirana ity. Mahafantatra karazana maromaro izahay:
Ankehitriny dia miharihary fa ny iray amin'ireo fidirana dia manondro ny toerana misy ny Intel BG startup ACM binary. Ny firafitry ny lohatenin'ity binary ity dia mahazatra amin'ny maody kaody novolavolain'ny Intel (ACM, fanavaozana microcode, fizarana kaody Intel ME, ...).
typedef struct BG_ACM_HEADER
{
unsigned short ModuleType; // 2
unsigned short ModuleSubType; // 3
unsigned long HeaderLength; // in dwords
unsigned long : 32;
unsigned long : 32;
unsigned long ModuleVendor; // 8086h
unsigned long Date; // in BCD format
unsigned long TotalSize; // in dwords
unsigned long unknown1[6];
unsigned long EntryPoint;
unsigned long unknown2[16];
unsigned long RsaKeySize; // in dwords
unsigned long ScratchSize; // in dwords
unsigned char RsaPubMod[256];
unsigned long RsaPubExp;
unsigned char RsaSig[256];
};
Ny processeur dia mampiditra ity binary ity ao amin'ny cache-ny, manamarina ary manomboka.
Intel BG fanombohana ACM
Noho ny famakafakana ny asan’ity ACM ity dia hita fa manao izao manaraka izao izy:
mandray avy amin'ny Intel ME ny fikirakirana Intel BG nosoratana tamin'ny fuse chipset (FPF);
mahita ny KEYM sy IBBM miseho, manamarina azy ireo.
Mba hahitana ireo fisehoana ireo dia mampiasa ny latabatra FIT ihany koa ny ACM, izay misy karazana fidirana roa hanondroana ireo rafitra ireo (jereo ny FIT_ENTRY_TYPES etsy ambony).
Andeha hojerentsika akaiky ny manifesto. Ao amin'ny firafitry ny fisehoana voalohany, dia mahita tsy miova tsy mazava maro isika, tenifototra amin'ny fanalahidin'ny daholobe avy amin'ny fisehoana faharoa, ary ny OEM Root Key ho an'ny daholobe nosoniavina ho rafitra misy akany:
Mba hanamarinana ny lakilen'ny OEM Root Key dia tsaroantsika fa ampiasaina ny hash SHA256 avy amin'ny fuses, izay efa voaray avy amin'ny Intel ME amin'izao fotoana izao.
Andao hiroso amin’ny manifesto faharoa. Misy rafitra telo izy io:
Ny faharoa dia misy ny tenifototra SHA256 an'ny IBB sy ny isan'ny mpamoritra izay mamaritra ny votoatin'ny IBB (izany hoe avy amin'ny inona ny hash):
typedef struct IBBS
{
char Tag[8]; // ‘__IBBS__’
unsigned char : 8; // 10h
unsigned char : 8; // 0
unsigned char : 8; // 0
unsigned char : 8; // x <= 0Fh
unsigned long : 32; // x & FFFFFFF8h = 0
unsigned long Unknown[20];
unsigned short : 16; // 0Bh
unsigned short : 16; // 20h == hash size ?
unsigned char IbbHash[32]; // SHA256 of an IBB
unsigned char NumIbbDescriptors;
};
Ny famaritana IBB dia manaraka ity rafitra ity, tsirairay avy. Manana endrika manaraka ireto ny votoatiny:
typedef struct IBB_DESCRIPTOR
{
unsigned long : 32;
unsigned long BaseAddress;
unsigned long Size;
};
Tsotra izany: misy ny adiresy/haben'ny ampahany IBB iray ny mpamoritra tsirairay. Noho izany, ny fampifangaroana ireo sakana tondroin'ireo mpamoritra ireo (amin'ny filaharan'ireo mpamoritra azy ireo) dia IBB. Ary, raha ny fitsipika, ny IBB dia fitambaran'ny maodely rehetra amin'ny dingana SEC sy PEI.
Ny fisehoana faharoa dia mifarana amin'ny rafitra misy ny fanalahidin'ny daholobe IBB (hamarinin'ny hash SHA256 avy amin'ny fanehoana voalohany) sy ny sonia an'ity manifestation ity:
Noho izany, alohan'ny hanombohan'ny famonoana BIOS UEFI, ny processeur dia hanomboka ACM, izay hanamarina ny maha-azo itokiana ny votoatin'ny fizarana miaraka amin'ny code phase SEC sy PEI. Avy eo, ny processeur dia miala amin'ny ACM, mandeha amin'ny RESET vector, ary manomboka manatanteraka ny BIOS.
Ny fizarazarana voamarina PEI dia tsy maintsy misy mody izay hanamarina ny sisa amin'ny BIOS (kaody DXE). Ity module ity dia efa novolavolain'ny IBV (Independent BIOS Vendor) na ny mpivarotra rafitra mihitsy. SATRIA Ny rafitra Lenovo sy Gigabyte ihany no teo am-pelatananay ary manana fanohanana Intel BG, andao hodinihintsika ny kaody nalaina tamin'ireo rafitra ireo.
UEFI BIOS module LenovoVerifiedBootPei
Raha ny momba an'i Lenovo, dia ny modely LenovoVerifiedBootPei {B9F2AC77-54C7-4075-B42E-C36325A9468D}, novolavolain'i Lenovo.
Ny asany dia ny mijery (amin'ny GUID) latabatra hash ho an'ny DXE ary manamarina ny DXE.
if (EFI_PEI_SERVICES->GetBootMode() != BOOT_ON_S3_RESUME)
{
if (!FindHashTable())
return EFI_NOT_FOUND;
if (!VerifyDxe())
return EFI_SECURITY_VIOLATION;
}
Хеш таблица {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} имеет следующий формат:
typedef struct DXE_DESCRIPTOR
{
unsigned char BlockHash[32]; // SHA256
unsigned long Offset;
unsigned long Size;
};
UEFI BIOS module BootGuardPei
Raha ny momba ny Gigabyte dia hita fa ny maody BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066}, novolavolain'ny AMI, ary noho izany dia misy amin'ny AMI BIOS misy fanohanana Intel BG.
Ny algorithm amin'ny fampandehanana azy dia somary hafa, na izany aza, mivadika ho mitovy:
int bootMode = EFI_PEI_SERVICES->GetBootMode();
if (bootMode != BOOT_ON_S3_RESUME &&
bootMode != BOOT_ON_FLASH_UPDATE &&
bootMode != BOOT_IN_RECOVERY_MODE)
{
HOB* h = CreateHob();
if (!FindHashTable())
return EFI_NOT_FOUND;
WriteHob(&h, VerifyDxe());
return h;
}
Ny latabatra hash {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} dia ahitana ity endrika manaraka ity:
typedef HASH_TABLE DXE_DESCRIPTORS[];
typedef struct DXE_DESCRIPTOR
{
unsigned char BlockHash[32]; // SHA256
unsigned long BaseAddress;
unsigned long Size;
};
Intel Boot Guard 2.x
Andao hiresaka fohifohy momba ny fampiharana iray hafa an'ny Intel Boot Guard, izay hita tao amin'ny rafitra vaovao miorina amin'ny Intel SoC miaraka amin'ny microarchitecture Apollo Lake - ASRock J4205-IT.
Na dia tsy hampiasaina amin'ny SoC fotsiny aza ity dikan-teny ity (ny rafitra vaovao miaraka amin'ny microarchitecture processeur Kaby Lake dia mbola mampiasa Intel Boot Guard 1.x), dia mahaliana tokoa ny mikaroka safidy momba ny maritrano vaovao ho an'ny sehatra mifototra amin'ny Intel SoCs, izay hita mibaribary. fanovana, ohatra:
Ny faritra BIOS sy Intel ME (na ny Intel TXE, araka ny voambolana Intel SoC) dia faritra iray IFWI izao;
na dia navela teo amin'ny lampihazo aza ny Intel BG, ny rafitra toy ny FIT, KEYM, IBBM dia tsy hita tao amin'ny fahatsiarovana tselatra;
Ankoatra ny TXE sy ISH cores (x86), ny fahatelo fototra (indray ARC, teny an-dalana) dia nanampy ny chipset - PMC (Power Management Controller), mifandray amin'ny fiantohana ny operability ny hery subsystem sy ny fanaraha-maso ny fampisehoana.
Ny votoatin'ny faritra IFWI vaovao dia fitambaran'ireto maody manaraka ireto:
Nandritra ny famakafakana ny firmware TXE dia nanjary niharihary fa taorian'ny RESET, TXE dia mitazona ny processeur amin'ity fanjakana ity mandra-panomanany ny votoatin'ny adiresy ho an'ny CPU (FIT, ACM, RESET vector ...). Ankoatr'izay, ny TXE dia mametraka ity angona ity ao amin'ny SRAM-ny, ary avy eo dia manome ny processeur amin'ny fidirana ao ary "mamoaka" azy amin'ny RESET.
Miaraka amin'ny rootkits
Eny ary, andeha isika hifindra amin'ny "mafana". Hitanay indray mandeha fa amin'ny rafitra maro SPI flash descriptors dia manana alalana hiditra amin'ny faritra misy ny SPI flash memory mba hahafahan'ny mpampiasa rehetra an'io fahatsiarovana io manoratra sy mamaky faritra rehetra. Ireo. tsisy fika.
Rehefa avy nanamarina tamin'ny MEinfo utility (avy amin'ny Intel STK), dia hitanay fa tsy nikatona ny fomba famokarana amin'ireo rafitra ireo, noho izany dia nijanona tao amin'ny fanjakana tsy fantatra ny chipset fuses (FPFs). Eny, ny Intel BG dia tsy mandeha na kilemaina amin'ny tranga toy izany.
Miresaka momba ireto rafitra manaraka ireto isika (momba ny Intel BG sy izay holazaina ato amin'ity lahatsoratra ity, hiresaka momba ny rafitra miaraka amin'ny microarchitecture Haswell processeur sy ambony kokoa isika):
Gigabyte Toa nanaiky ny vaovao momba ny fahalemena izy ireo, saingy tsy naneho hevitra tamin'ny fomba rehetra.
Fifandraisana amin'ny MSI nijanona tanteraka noho ny fangatahanay handefa ny fanalahidin'ny PGP ho an'ny daholobe (mba handefasana toro-hevitra momba ny fiarovana miafina ho azy ireo). Nambaran'izy ireo fa "mpanamboatra fitaovana izy ireo ary tsy manamboatra fanalahidin'ny PGP."
Saingy bebe kokoa amin'ny teboka. Satria ny fuses dia tavela amin'ny toe-javatra tsy voafaritra, ny mpampiasa (na ny mpanafika) dia afaka manamboatra azy ireo (ny sarotra indrindra dia mahita Intel STK). Mitaky ireto dingana manaraka ireto izany.
1. Ampidiro ao amin'ny Windows OS (amin'ny ankapobeny, ny dingana voalaza etsy ambany dia azo atao ihany koa amin'ny Linux, raha mamorona analogue Intel STK ho an'ny OS tianao ianao). Amin'ny fampiasana ny fampiasa MEinfo, ataovy izay hahazoana antoka fa tsy voarindra ny fuses amin'ity rafitra ity.
3. Sokafy ny sary vakiana amin'ny alàlan'ny fitaovana fanovana UEFI BIOS, ataovy ny fanovana ilaina (mampihatra rootkit, ohatra), mamorona / manova ny rafitra KEYM sy IBBM efa misy ao amin'ny faritra ME.
Ny ampahany ho an'ny daholobe amin'ny lakile RSA dia asongadina eo amin'ny sary, ny hash izay hapetraka ao amin'ny fuses chipset miaraka amin'ny sisa amin'ny fikirakirana Intel BG.
4. Ampiasao ny Flash Image Tool, manangana sary firmware vaovao (amin'ny fametrahana ny fikirakirana Intel BG).
5. Manorata sary vaovao tselatra amin'ny alàlan'ny Flash Programming Tool, hamarino amin'ny MEinfo fa ny faritra ME dia misy ny fikirakirana Intel BG ankehitriny.
6. Ampiasao ny Flash Programming Tool hanakatona ny fomba famokarana.
7. Haverina indray ny rafitra, aorian'izay, amin'ny fampiasana MEinfo, azonao atao ny manamarina fa efa voarindra izao ny FPF.
Ireo hetsika ireo mandrakizay avelao ny Intel BG amin'ity rafitra ity. Tsy azo atao ny manafoana ny hetsika, izay midika hoe:
ny tompon'ny ampahany manokana amin'ny fanalahidin'ny fakany (izany hoe ilay nanome fahafahana ny Intel BG) ihany no afaka manavao ny UEFI BIOS amin'ity rafitra ity;
raha mamerina ny firmware tany am-boalohany amin'ity rafitra ity ianao, ohatra, amin'ny fampiasana programa, dia tsy hirehitra akory izany (vokatry ny politikan'ny fampiharana raha misy hadisoana fanamarinana);
Mba hanesorana ny UEFI BIOS toy izany, dia mila manolo ny chipset amin'ny FPF voaprograma miaraka amin'ny "madio" ianao (izany hoe avereno indray ny chipset raha manana tobim-pandrefesana infrarouge amin'ny vidin'ny fiara ianao, na manolo fotsiny ny motherboard. ).
Mba hahatakarana ny zavatra azon'ny rootkit toy izany dia mila manombatombana ianao hoe inona no ahafahana manatanteraka ny kaody ao amin'ny tontolo UEFI BIOS. Lazao, amin'ny fomba malaza indrindra amin'ny processeur - SMM. Ny rootkit toy izany dia mety manana ireto toetra manaraka ireto:
hovonoina mifanaraka amin'ny OS (azonao atao ny manamboatra ny fanodinana amin'ny alàlan'ny famoahana SMI interrupt, izay ateraky ny fameram-potoana);
manana ny tombony rehetra amin'ny fomba SMM (fidirana feno amin'ny votoatin'ny RAM sy ny loharanon-karena, tsiambaratelo amin'ny OS);
Ny kaody rootkit dia azo encryption sy decrypted rehefa natomboka tamin'ny fomba SMM. Ny angon-drakitra tsy misy afa-tsy amin'ny fomba SMM dia azo ampiasaina ho fanalahidin'ny fanafenana. Ohatra, tenifototra avy amin'ny andiana adiresy ao amin'ny SMRAM. Mba hahazoana io fanalahidy io dia mila miakatra ao amin'ny SMM ianao. Ary azo atao amin'ny fomba roa izany. Tadiavo ny RCE ao amin'ny kaody SMM ary ampiasao izany, na ampio ny maodely SMM anao manokana amin'ny BIOS, izay tsy azo atao, satria navelanay ny Boot Guard.
Noho izany, ity vulnerability ity dia ahafahan'ny mpanafika iray:
tanteraho ny kaodinao amin'ny iray amin'ireo cores chipset ao anatin'ny Intel SoC, izany hoe amin'ny Intel ISH (jereo akaiky ny sary).
Na dia tsy mbola nojerena aza ny fahaizan'ny subsystem Intel ISH, dia toa vendrana fanafihana mahaliana ny Intel ME izany.
hitany
Ny fanadihadiana dia nanome famaritana ara-teknika ny fomba fiasan'ny teknolojia Intel Boot Guard. Mihena ny tsiambaratelo roa amin'ny fiarovana an'i Intel amin'ny alàlan'ny modely tsy mazava.
Misy scenario fanafihana atolotra izay mamela ny famoronana rootkit tsy azo esorina ao amin'ny rafitra.
Hitantsika fa ny processeur Intel maoderina dia afaka manatanteraka code proprietary be dia be alohan'ny hanombohan'ny BIOS.
Ireo sehatra miaraka amin'ny maritrano Intel 64 dia mihamalemy kokoa amin'ny fampandehanana rindrambaiko maimaim-poana: fanamarinana hardware, fitomboan'ny teknolojia sy subsystems manokana (fototra telo ao amin'ny chipset SoC: x86 ME, x86 ISH ary ARC PMC).
Fanalefahana
Ireo mpivarotra izay minia mamela malalaka ny fomba famokarana dia tokony hanidy izany. Hatreto dia manakimpy ny masony fotsiny izy ireo ary mampiseho izany ny rafitra Kaby Lake vaovao.
Ny mpampiasa dia afaka manafoana ny Intel BG amin'ny rafitra misy azy (izay voakasik'ilay vulnerability voalaza) amin'ny alàlan'ny fampandehanana ny Flash Programming Tool miaraka amin'ny safidy -closemnf. Voalohany, tokony ho azonao antoka (mampiasa MEinfo) fa ny fanamafisana ny Intel BG ao amin'ny faritra ME dia manome ny famonoana tanteraka an'io teknolojia io aorian'ny fandaharana amin'ny FPF.