Ka whakaaro matou kia heke ano ki te taumata iti me te korero mo te haumarutanga o te firmware mo nga papaaho rorohiko x86-hototahi. I tenei wa, ko te kaupapa matua o te ako ko te Intel Boot Guard (kaua e pohehe ki te Intel BIOS Guard!) - he hangarau whawhai BIOS whakawhirinaki e tautokohia ana e te taputapu rorohiko ka taea e te kaihoko rorohiko te whakaahei, te whakakore ranei i te waahanga whakaputa. Ana, kua mohio tatou ki te tunu rangahau: tapatapahia rawatia te whakatinanatanga o tenei hangarau ma te whakamahi i te miihini whakamuri, whakaahuatia tona hoahoanga, whakakiia ki nga korero kaore i tuhia, whakamaarama ki nga vector whakaeke ki te reka me te whakaranu. Me tapiri atu he wahie ki te korero mo te peera kua katihia mo nga tau maha i roto i te hanga o nga kaihoko maha ka taea e tetahi kaitukino te whakamahi i tenei hangarau ki te hanga i tetahi rootkit huna i roto i te punaha kaore e taea te tango (ahakoa me te kaihōtaka).
Ma te ara, ko te tuhinga kei runga i nga purongo "I te Kaitiaki o Rootkits: Intel BootGuard" mai i te huihuinga ZeroNights 2016 me te hui 29 DefCon Russia (nga whakaaturanga e rua konei).
Maama mo te papa rorohiko me te hoahoanga Intel 64
Tuatahi, me whakautu e tatou te patai: he aha te firmware o te papa rorohiko hou me te hoahoanga Intel 64? Ko te tikanga, UEFI BIOS. Engari e kore e tika te whakautu penei. Me titiro ki te pikitia, e whakaatu ana i te papamahi (pona) putanga o tenei hoahoanga.
Ko te turanga te hono:
Tukatuka (CPU, Central Processing Unit), i tua atu i nga matua matua, kei roto i te mahinga whakairoiro (kaore i roto i nga tauira katoa) me te kaiwhakahaere mahara (IMC, Integrated Memory Controller);
Chipset (PCH, Platform Controller Hub), kei roto nga momo kaiwhakahaere mo te taunekeneke me nga taputapu peripheral me te whakahaere i nga punaha iti. I roto i a raatau ko te Intel Management Engine (ME) rongonui, kei a ia ano te firmware (Intel ME firmware).
Ko nga rorohiko pona, hei taapiri i runga ake nei, me tono he kaiwhakahaere whakauru (ACPI EC, Whakahaere Arā Atu Ake me te Atanga Mana Whakamau), kei a ia te kawenga mo te whakahaere o te punaha mana, touchpad, papapātuhi, nga taviri Fn (te kanapa o te mata, te oro oro. , rama papapātuhi, aha atu ) me etahi atu mea. A kei a ia ano tana ake firmware.
Na, ko te katoa o te firmware i runga ake nei ko te firmware o te papa rorohiko (te punaha rorohiko), kei te rongoa i runga i te mahara flash SPI noa. Kia kore ai nga kaiwhakamahi o tenei mahara e poauau mo te waahi kei hea, ka wehewehea nga korero o tenei mahara ki nga rohe e whai ake nei (penei i te ahua o te ahua):
UEFI BIOS;
ACPI EC firmware (i puta mai he rohe motuhake me te Skylake processor microarchitecture (2015), engari i roto i te mohoao kaore ano kia kite i nga tauira o tana whakamahinga, na reira kei te whakauru tonu te firmware o te kaiwhakahaere i roto i te UEFI BIOS) ;
Intel ME mārō;
whirihoranga (Wāhitau MAC, me etahi atu) o te urutau whatunga GbE (Gigabit Ethernet) i hangaia;
Ko nga Kaituhi Flash te rohe matua o te mahara kohiko kei roto nga tohutohu ki etahi atu rohe, me nga whakaaetanga kia uru atu ki a raatau.
Ko te rangatira o te pahi SPI, he kaiwhakahaere SPI i hangaia ki roto i te maramara, e uru atu ai tenei mahara, he kawenga mo te whakakore i te uru ki nga rohe (i runga i nga whakaaetanga kua tohua). Mena ka whakatauhia nga whakaaetanga ki nga uara a Intel e taunaki ana (mo nga take haumarutanga), katahi ka whai waahi katoa (panui/tuhi) ia kaiwhakamahi kohiko SPI ki to ratou rohe anake. A ko te toenga he panui-anake, kaore ranei e taea. He korero rongonui: i runga i te maha o nga punaha, ka uru katoa te PTM ki te UEFI BIOS me te GbE, panui te uru ki nga kaiwhakaahua rama, kaore rawa he uru ki te rohe Intel ME. He aha i runga i te tini, kaore i runga i te katoa? Ko nga mea e taunaki ana kaore e hiahiatia. Ka korero atu matou ki a koe i nga korero i muri mai i te tuhinga.
Nga tikanga mo te whakamarumaru i te papaaho rorohiko mai i te whakarereketanga
Ma te mohio, me tiakina te firmware o te papaaho rorohiko mai i te taupatupatu ka taea, ka taea e te kaitukino te whai waahi ki roto (ka ora i nga whakahou OS / whakahou), mahia ta raatau waehere i roto i nga tikanga tino whai mana, etc. A ko te aukati i te uru ki nga rohe mahara flash SPI, he pono, kaore e ranea. Na reira, ki te tiaki i te firmware mai i nga whakarereketanga, ka whakamahia nga momo tikanga motuhake mo ia taiao whakahaere.
No reira, kua hainatia te rorohiko Intel ME hei whakahaere i te pono me te pono, ka tirohia e te kaiwhakahaere ME ia wa ka utaina ki te mahara ME UMA. Ko tenei tukanga manatoko kua korerohia e matou i tetahi o Tuhinga, i whakatapua ki te punaha-roto Intel ME.
Na ACPI EC firmware, hei tikanga, ka tirohia mo te pono. Heoi, na te mea kua whakauruhia tenei takirua ki roto i te UEFI BIOS, ka tata tonu ki nga tikanga whakamarumaru e whakamahia ana e te UEFI BIOS. Kia korero tatou mo ratou.
Ka taea te wehea enei tikanga ki nga waahanga e rua.
Tuhia he whakamarumaru ki te rohe UEFI BIOS
Te whakamarumaru a-tinana o nga ihirangi o te mahara flash SPI me te peke tiaki-tuhi;
Te tiaki i te matapaetanga o te rohe UEFI BIOS i roto i te waahi wahitau CPU ma te whakamahi i nga rehitatanga chipset PRx;
Te aukati i nga ngana ki te tuhi ki te rohe UEFI BIOS ma te whakaputa me te tukatuka i te aukati SMI e rite ana ma te whakatakoto i nga moka BIOS_WE/BLE me SMM_BWP ki nga rehita chipset;
Ko te putanga matatau ake o tenei whakamarumaru ko te Intel BIOS Guard (PFAT).
I tua atu i enei tikanga, ka taea e nga kaihoko te whakawhanake me te whakatinana i o raatau ake tikanga haumaru (hei tauira, te hainatanga i nga kapene me nga whakahou UEFI BIOS).
He mea nui kia mohiohia i runga i tetahi punaha motuhake (i runga i te kaihoko), kaore e taea te whakamahi i nga tikanga whakamarumaru katoa i runga ake nei, kaore pea e whakamahia, ka taea ranei te whakatinana i roto i nga tikanga whakaraerae. Ka taea e koe te panui atu mo enei tikanga me te ahuatanga me o raatau whakatinanatanga i roto tenei tuhinga. Mo te hunga e hiahia ana, ka tūtohu koe kia panui koe i nga raupapa tuhinga katoa mo te haumarutanga UEFI BIOS mai i CodeRush.
UEFI BIOS Motuhēhēnga Manatokonga
Ina korero tatou mo nga hangarau putunga whakawhirinaki, ko te mea tuatahi ka puta ki te hinengaro ko te Boot Haumaru. Heoi, ma te hoahoanga i hangaia hei manatoko i te pono o nga waahanga o waho o te UEFI BIOS (kaitaraiwa, bootloaders, me etahi atu), kaua ko te firmware ake.
Na reira, i whakatinanahia e Intel, i roto i nga SoC me te Bay Trail microarchitecture (2012), he taputapu Haumaru Haumaru (Boo Whakaaetanga), kaore he mea e rite ana ki nga hangarau o runga ake nei. I muri mai (2013), i pai ake tenei tikanga ka tukuna i raro i te ingoa Intel Boot Guard mo nga papamahi me Haswell microarchitecture.
I mua i te whakamaarama i te Intel Boot Guard, me titiro ki nga taiao mahi i roto i te hoahoanga Intel 64, ko te whakakotahitanga, ko nga putake o te whakawhirinaki mo tenei hangarau whawhai pono.
Intel PPU
E kii ana a Cap ko te tukatuka ko te taiao mahi matua i roto i te hoahoanga Intel 64. He aha te take o te whakawhirinaki? Ka puta ko te mea i penei ai ia ko te mana o nga waahanga e whai ake nei:
Ko te Microcode ROM he mahara kore-kore, e kore e taea te tuhi ano mo te rokiroki microcode. E whakaponohia ana ko te microcode te whakatinanatanga o te punaha whakahau tukatuka ma te whakamahi i nga tohutohu ngawari. Ka puta ano i roto i te microcode ngarara. Na i roto i te BIOS ka taea e koe te kite i nga taarua me nga whakahoutanga microcode (kua whakakikoruatia i te wa e whawhai ana, na te mea kaore e taea te tuhi i te ROM). Kua whakamunatia nga ihirangi o enei rua, e tino whakararu ana i te tātaritanga (no reira, ko nga korero motuhake o te microcode e mohiotia ana e te hunga e whakawhanake ana), ka hainatia hei whakahaere i te pono me te pono;
Kī AES hei wetewete i nga ihirangi o nga whakamohoatanga microcode;
Hash o te kī tūmatanui RSA i whakamahia hei manatoko i te waitohu o nga whakahōutanga microcode;
RSA Hash matua whanui, e manatoko ana i te hainatanga o nga waahanga waehere ACM (Motuhinga Waehere Whakamana) kua whakawhanakehia e Intel, ka taea e te PTM te whakarewa i mua i te mahi BIOS (hello microcode) i te waa ranei e mahi ana, ina puta etahi kaupapa.
Intel ME
Ko tenei punaha iti i roto i ta maatau blog i whakatapua ki ruaTuhinga. Kia maumahara tatou ko tenei taiao ka taea te hanga i runga i te microcontroller i hangaia ki roto i te maramara, a ko te mea tino huna me te whai mana i roto i te punaha.
Ahakoa tana huna, ko Intel ME ano te pakiaka o te whakawhirinaki na te mea kei a ia:
ME ROM - te mahara kore-kore, kaore e taea te tuhi ano (kaore he tikanga whakahou e whakaratohia ana) kei roto te waehere timatanga, me te SHA256 hash o te taviri whanui RSA, e whakamana ana i te hainatanga o te firmware Intel ME;
Kī AES mo te rokiroki korero ngaro;
te uru ki te huinga huinga (FPF, Field Programmable Fuses) kua whakauruhia ki roto i te maramara mo te rokiroki tuturu o etahi korero, tae atu ki tera i tohua e te kaihoko rorohiko rorohiko.
Intel Boot Guard 1.x
He whakakao iti. Ko nga nama putanga hangarau Intel Boot Guard e whakamahia ana e matou i roto i tenei tuhinga he mea noa, kaore pea he hononga ki te nama i whakamahia i roto i nga tuhinga o roto o Intel. I tua atu, ko nga korero e whakaratohia ana i konei mo te whakatinanatanga o tenei hangarau i riro mai i te wa o te hangahanga whakamuri, a kei roto pea nga hapa i whakaritea ki te korero mo te Intel Boot Guard, kaore pea e whakaputahia.
Na, Intel Boot Guard (BG) he hangarau whakamotuhēhēnga motuhēhēnga UEFI BIOS tautoko pūmārō. Ma te whakatau i tana whakamaarama poto i roto i te pukapuka [Te Hangarau Haumarutanga Whakamaua i te Puahoa, te pene Boot with Integrity, or Not Boot], ka mahi hei mekameka whirinaki. A ko te hononga tuatahi kei roto ko te waehere boot (microcode) i roto i te PTM, ka puta mai i te huihuinga RESET (kaua e pohehe ki te RESET vector i te BIOS!). Ka kitea e te PTM tetahi waahanga waehere i hangaia ka hainatia e Intel (Intel BG startup ACM) i runga i te mahara kohiko SPI, ka utaina ki roto i tana keteroki, ka manatoko (kua tohuhia i runga ake nei kei te PTM he tohu o te taviri a te iwi e whakamana ana i te ACM. hainatanga) ka timata.
Ko tenei waahanga waehere te kawenga mo te manatoko i tetahi waahanga iti o te UEFI BIOS - Poraka Whakaara Tuatahi (IBB), kei roto i te waa, kei roto nga mahi mo te manatoko i te waahanga matua o te UEFI BIOS. Na, Intel BG ka taea e koe te manatoko i te pono o te BIOS i mua i te utaina o te OS (ka taea te mahi i raro i te tirotiro a te hangarau Haumaru Boot).
Ko te hangarau Intel BG e whakarato ana i nga tikanga whakahaere e rua (kaore tetahi e pokanoa ki tetahi atu, ara, ka taea te whakahohe i nga aratau e rua i runga i te punaha, ka taea ranei te whakakore i nga mea e rua).
Boot ine
I roto i te aratau Ine Boot (MB), ko ia wahanga whawhai (timata mai i te CPU boot ROM) ka "ine" i te mea e whai ake nei ma te whakamahi i nga kaha o te TPM (Whakapono Kaupapa Whakapono). Mo te hunga karekau i te mohio, me whakamarama ahau.
Kei a TPM nga PCR (Platform Configuration Registers), ka tuhia ki roto te hua o te mahi hashing i runga i te tikanga:
Ko era. ko te uara PCR o naianei kei runga i te mea o mua, a ka tautuhia enei rehitatanga ina tauhou ana te punaha.
No reira, i roto i te aratau MB, i etahi wa, ka whakaatahia e nga PCR tetahi tohu motuhake (i roto i nga kaha o te mahi hashing) o te waehere, raraunga ranei i "ine." Ka taea te whakamahi i nga uara PCR ki etahi mahi whakamunatanga raraunga (TPM_Seal). Whai muri i tenei, ka taea te wetewete (TPM_Unseal) mena kaore i rereke nga uara PCR na te utaina (ara, kaore tetahi waahanga "ine" i whakarereketia).
Whakaara kua Tuturu
Ko te mea kino rawa atu mo te hunga e pirangi ana ki te whakarereke i te UEFI BIOS ko te aratau Verified Boot (VB), kei roto i ia waahanga o te boota ka tirohia te pono me te pono o te waa e whai ake nei. A, ki te he he manatokonga, (tetahi o) ka tupu:
katia ma te waahi mai i te 1 meneti ki te 30 meneti (kia whai wa te kaiwhakamahi ki te mohio he aha te kore e pupuhi ana tana rorohiko, a, ki te taea, ka ngana ki te whakaora i te BIOS);
katinga tonu (kia kore te kaiwhakamahi e whai wa ki te mohio, he iti rawa te mahi, tetahi mea);
te haere tonu ki te mahi i runga i te ahua marino (ko tera keehi karekau he wa mo te haumaru, na te mea he mea nui ake te mahi).
Ko te kowhiringa o nga mahi ka whakawhirinaki ki te whirihoranga Intel BG kua tohua (ara, i runga i te kaupapa here e kiia nei ko te uruhi), ka mau tonu te rekoata e te kaihoko papaa rorohiko i roto i te rokiroki kua oti te hanga - chipset fuses (FPFs). Ka noho maatau mo tenei kaupapa i roto i nga korero a muri ake nei.
I tua atu i te whirihoranga, ka hangaia e te kaihoko nga taviri RSA 2048 e rua me te hanga i nga hanganga raraunga e rua (e whakaatuhia ana i te ahua):
Ko te whakaaturanga matua matua a te kaihoko (KEYM, OEM Root Key Manifest), kei roto te SVN (Tau Putanga Haumarutanga) o tenei whakaaturanga, te SHA256 hash o te taviri a te iwi o te whakaaturanga e whai ake nei, te kī tūmatanui RSA (arā, te wahanga tūmatanui o te te matua o te kaihoko) hei manatoko i te hainatanga o tenei whakaaturanga me te hainatanga ano;
IBB Manifest (IBBM, Initial Boot Block Manifest), kei roto te SVN o tenei whakaaturanga, te SHA256 hash o IBB, te taviri a te iwi mo te manatoko i te hainatanga o tenei whakaaturanga me te hainatanga ake.
Ko te Hash SHA256 o te OEM Root Key kua mau tonu ki te rekoata ki roto i nga huu maramara (FPF), pera i te whirihoranga Intel BG. Mena ka whakaratohia e te whirihoranga Intel BG te whakauru o tenei hangarau, mai i tenei wa ka taea e te rangatira o te waahanga motuhake o te OEM Root Key te whakahou i te BIOS i runga i tenei punaha (ara, ka taea te tatau ano i enei whakaaturanga), ara. kaihoko.
I te wa e titiro ana ki te pikitia, ka puta ake nga feaa mo te hiahia mo te mekameka whakamana roa - ka taea e raatau te whakamahi i tetahi whakaaturanga. He aha i whakararu ai i nga mea?
Inaa, ka whakawhiwhia e Intel ki te kaihoko te whai waahi ki te whakamahi i nga taviri IBB rereke mo nga raina rereke o ana hua me tetahi hei matua matua. Mena ka pakaru te waahanga motuhake o te taviri IBB (e hainatia ana te whakaaturanga tuarua), ka pa te raru ki te raina hua kotahi noa iho ka hanga e te kaihoko he takirua hou me te whakauru i nga whakaaturanga kua tatauhia ki te whakahou BIOS e whai ake nei.
Engari ki te taupatupatuhia te matua matua (e hainatia ana te whakaaturanga tuatahi), kaore e taea te whakakapi, kaore he tikanga whakakore. Ko te hash o te waahanga whanui o tenei matua kua whakaritea ki roto i nga FPF mo te katoa.
Whirihoranga Intel Boot Guard
Inaianei me ata titiro ki te whirihoranga Intel BG me te tukanga o te hanga. Mena ka titiro koe ki te ripa e pa ana ki te GUI o te taputapu Utauta Whakaahua Flash mai i te Intel System Tool Kit (STK), ka kite koe kei roto i te whirihoranga Intel BG he hash o te waahanga whanui o te taviri pakiaka o te kaihoko, he takirua. nga uara kore marama, etc. kōtaha Intel BG.
Ko te hanganga o tenei kōtaha:
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;
};
I te nuinga o te waa, ko te whirihoranga Intel BG he hinonga tino ngawari. Whakaarohia, hei tauira, te haki Force_Boot_Guard_ACM. Ina tangohia, ki te kore e kitea te kōwae ACM whakaoho BG i runga i te rama SPI, karekau he putu whakawhirinaki ka puta. Ka kore e whakawhirinakihia.
Kua tuhia e matou i runga ake nei ka taea te whirihora i te kaupapa here uruhi mo te aratau VB na mena he hapa manatoko ka puta he tango kore pono.
Waiho nga mea penei i runga i te whakaaro o nga kaihoko...
Ko te whaipainga GUI e whakarato ana i nga korero "kua rite" e whai ake nei:
Room
Aratau
Whakaahuatanga
0
No_FVME
Kua monokia te hangarau Intel BG
1
VE
Ka whakahohehia te aratau VB, ka kati ma te wa poto
2
VME
kua whakahohea nga aratau e rua (VB me MB), katinga ma te waahi
3
VM
ka taea nga aratau e rua, me te kore e whakaweto i te punaha
4
FVE
Ka taea te aratau VB, ka mutu tonu
5
FVME
kua whakahohea nga aratau e rua, ka mutu tonu
Ka rite ki te korero kua korerohia, ko te whirihoranga Intel BG me tuhi kotahi mo te katoa e te kaihoko punaha ki roto i nga miihini chipset (FPFs) - he iti (e ai ki nga korero kaore i whakamanahia, 256 paita noa) te rokiroki o nga korero i roto i te chipset, ka taea te whakamahere. kei waho o nga whare whakangao a Intel (no reira Papatonotanga Marae Nga whao).
He pai mo te rokiroki whirihoranga na te mea:
he waahi kotahi-wa-whakataka mo te rokiroki raraunga (i te waahi ka tuhia te whirihoranga Intel BG);
Ka taea e Intel ME anake te panui me te hotaka.
Na, hei whakarite i te whirihoranga mo te hangarau Intel BG i runga i tetahi punaha motuhake, ka mahia e te kaihoko nga mea e whai ake nei i te wa e whakaputa ana:
Ma te whakamahi i te taputapu Utauta Whakaahua Flash (mai i te Intel STK), ka hangaia he ahua maru me te whirihoranga Intel BG i whakawhiwhia ki te ahua o nga taurangi i roto i te rohe o Intel ME (te mea e kiia nei ko te whakaata poto mo nga FPF);
Ma te whakamahi i te taputapu Flash Programming Tool (mai i te Intel STK), ka tuhia e ia tenei ahua ki te mahara flash SPI o te punaha ka kati i te mea e kiia ana. aratau hangahanga (i tenei keehi, ka tukuna te whakahau e tika ana ki a Intel ME).
Ko te hua o enei mahi, ka tukuna e Intel ME nga uara kua tohua mai i te whakaata mo nga FPF i te rohe ME ki nga FPF, ka whakatauhia nga whakataunga i roto i nga kaiwhakaahua rama SPI ki nga uara kua tohua e Intel (kua whakaahuatia i te timatanga o te tuhinga) me te mahi i te punaha RESET.
Te tātaritanga o te whakatinanatanga Intel Boot Guard
Hei tātari i te whakatinanatanga o tenei hangarau ma te whakamahi i tetahi tauira motuhake, i tirohia e matou nga punaha e whai ake nei mo nga tohu o te hangarau Intel BG:
pūnaha
parau
Gigabyte GA-H170-D3H
Skylake, he tautoko
Gigabyte GA-Q170-D3H
Skylake, he tautoko
Gigabyte GA-B150-HD3
Skylake, he tautoko
MSI H170A Gaming Pro
Skylake, kaore he tautoko
Lenovo ThinkPad 460
Skylake, tautokona, hangarau i whakahohea
Lenovo Yoga 2 Pro
Haswell, kaore he tautoko
Lenovo U330p
Haswell, kaore he tautoko
Na te "tautoko" te tikanga ko te aroaro o te Intel BG startup ACM module, nga whakaaturanga kua whakahuahia i runga ake nei me te waehere e rite ana ki te BIOS, i.e. whakatinanatanga mo te tātari.
Hei tauira, me tango te mea i tangohia mai i te tari. te ahua paetukutuku kaihoko o te mahara flash SPI mo Gigabyte GA-H170-D3H (putanga F4).
Intel CPU boot ROM
Tuatahi, me korero tatou mo nga mahi a te kaitukatuka mena ka taea te hangarau Intel BG.
Kaore i taea te kimi tauira o te moroiti moroiti kua wetemuna, na me pehea te whakatinanatanga o nga mahi e whakaahuatia ana i raro nei (i roto i te microcode, taputapu ranei) he patai tuwhera. Engari, he mea pono ka "ka taea" e nga kaitoro Intel hou te mahi i enei mahi.
I muri i te putanga atu i te ahua RESET, ka kitea e te tukatuka (ko nga ihirangi o te mahara flash ki te mokowā wāhitau) ka kitea te ripanga FIT (Ripanga Atanga Pūmau). He ngawari te rapu, ka tuhia te tohutoro ki te wahitau FFFF FFC0h.
I roto i te tauira e whakaarohia ana, ko te uara FFD6 9500h kei tenei wahi noho. Ma te uru atu ki tenei wahitau, ka kite te kaitukatuka i te ripanga FIT, ka wehewehea nga mea o roto ki nga rekoata. Ko te urunga tuatahi ko te pane o te hanganga e whai ake nei:
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;
};
Mo etahi take e kore e mohiotia, kaore i te tatauhia te kaute i enei ripanga i nga wa katoa (ka waiho te mara ki te kore).
Ko nga toenga o nga whakaurunga e tohu ana ki nga momo takirua e tika ana kia poroa/whakamahia i mua i te mahi a te BIOS, ara. i mua i te huri ki te vector RESET tuku iho (FFFF FFF0h). Ko te hanganga o ia urunga penei e whai ake nei:
typedef struct FIT_ENTRY
{
unsigned long BaseAddress;
unsigned long : 32;
unsigned long Size;
unsigned short Version; // 1.0
unsigned char EntryType;
unsigned char Checksum;
};
Ko te mara EntryType e whakaatu ana ki a koe te momo paraka e tohuhia ana e tenei urunga. E mohio ana matou he maha nga momo:
Inaianei kua kitea ko tetahi o nga urunga e tohu ana ki te waahi o te Intel BG startup ACM rua. Ko te anga pane o tenei rua he angamaheni mo nga waahanga waehere i hangaia e Intel (ACMs, whakamohoatanga microcode, Intel ME nga waahanga waehere, ...).
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];
};
Ka utaina e te kaitukatuka tenei rua ki roto i tana keteroki, ka manatoko ka whakahaere.
Intel BG whakaoho ACM
Ko te hua o te wetewete i nga mahi a tenei ACM, ka kitea e ia e whai ake nei:
ka whiwhi i te whirihoranga Intel BG mai i a Intel ME, kua tuhia ki roto i nga putunga chipset (FPFs);
ka kitea e KEYM me te IBBM te whakaatu me te manatoko.
Hei kimi i enei whakaaturanga, ka whakamahi ano a ACM i te ripanga FIT, e rua nga momo whakaurunga hei tohu i nga raraunga hanganga (tirohia te FIT_ENTRY_TYPES kei runga ake nei).
Kia ata titiro ki nga whakaaturanga. I roto i te hanganga o te whakaaturanga tuatahi, ka kite tatou i te maha o nga taaputanga kerekere, he hash o te taviri a te iwi mai i te whakaaturanga tuarua, me te Kī Putake OEM tūmatanui i hainatia hei hanganga kohanga:
Hei manatoko i te OEM Root Key matua whanui, ka maumahara matou kei te whakamahi matou i te SHA256 hash of fuses, i tenei wa kua riro mai i a Intel ME.
Me neke atu ki te whakaaturanga tuarua. E toru nga hanganga:
Kei roto i te tuarua te Hash SHA256 o te IBB me te maha o nga kaiwhakaahua e whakaatu ana i nga ihirangi o te IBB (arā, he aha te mea i tatauhia te 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;
};
Ko nga kaiwhakaahua IBB e whai ana i tenei hanganga, tetahi i muri i tetahi. Ko o raatau ihirangi ko te whakatakotoranga e whai ake nei:
typedef struct IBB_DESCRIPTOR
{
unsigned long : 32;
unsigned long BaseAddress;
unsigned long Size;
};
He ngawari noa: kei ia kaiwhakaahua te wahitau/rahi o te wahanga IBB. Na, ko te whakakotahitanga o nga poraka e tohuhia ana e enei kaituhi (i roto i te raupapa o nga kaituhi ake) ko te IBB. Na, hei tikanga, ko te IBB te kohinga o nga waahanga katoa o nga waahanga SEC me te PEI.
Ko te whakaaturanga tuarua ka oti e tetahi hanganga kei roto te IBB ki te iwi whanui (kua whakamanahia e te SHA256 hash mai i te whakaaturanga tuatahi) me te hainatanga o tenei whakaaturanga:
Na, ahakoa i mua i te tiimata o te UEFI BIOS ki te mahi, ka whakarewahia e te tukatuka ACM, ka whakamanahia te pono o nga ihirangi o nga waahanga me te waehere waahanga SEC me te PEI. I muri mai, ka puta te tukatuka i te ACM, ka whai i te RESET vector ka timata ki te mahi i te BIOS.
Ko te wehewehenga PEI kua whakamanahia me whakauru he kōwae hei tirotiro i te toenga o te BIOS (waehere DXE). Ko tenei waahanga kei te whakawhanakehia e IBV (Kaihoko BIOS Motuhake) te kaihoko punaha ranei. No te mea Ko nga punaha Lenovo me Gigabyte anake kei a maatau me te tautoko a Intel BG; me titiro ki te waehere i tangohia mai i enei punaha.
UEFI BIOS kōwae LenovoVerifiedBootPei
I roto i te take o Lenovo, i puta ko te LenovoVerifiedBootPei module {B9F2AC77-54C7-4075-B42E-C36325A9468D}, i whakawhanakehia e Lenovo.
Ko tana mahi he titiro ake (na GUID) te ripanga hash mo te DXE me te manatoko i te 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 kōwae BootGuardPei
I roto i te take o Gigabyte, i puta ko te BootGuardPei module {B41956E1-7CA2-42DB-9562-168389F0F066}, i whakawhanakehia e AMI, no reira, kei roto i tetahi AMI BIOS me te tautoko Intel BG.
He rereke te ahua o tana algorithm whakahaere, heoi, ka heke iho ki te mea kotahi:
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;
}
Ko te ripanga hash {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} e rapuhia ana e whai ake nei te whakatakotoranga:
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
Me korero poto mo tetahi atu whakatinanatanga o Intel Boot Guard, i kitea i roto i te punaha hou i runga i te Intel SoC me te Apollo Lake microarchitecture - ASRock J4205-IT.
Ahakoa ka whakamahia noa tenei putanga i roto i nga SoCs (ko nga punaha hou me te Kaby Lake processor microarchitecture kei te whakamahi tonu i te Intel Boot Guard 1.x), he mea tino pai ki te ako i te waahanga hoahoanga hou mo nga papaaho Intel SoC, kua kitea nga huringa nui, hei tauira:
ko nga rohe BIOS me Intel ME (he pai ake ranei a Intel TXE, e ai ki nga kupu mo Intel SoC) he rohe IFWI inaianei;
ahakoa i whakahohea a Intel BG i runga i te papanga, ko nga hanganga penei i te FIT, KEYM, IBBM kaore i kitea i roto i te mahara flash;
i tua atu i te TXE me te ISH cores (x86), he tuatoru tuatoru i whakauruhia ki te chipset (ARC ano, na te ara) - PMC (Power Management Controller), e hono ana ki te whakarite i te mahi o te punaha mana me te aroturuki mahi.
Ko nga ihirangi o te rohe hou o IFWI he huinga o nga waahanga e whai ake nei:
Motuhakaha
ingoa
Whakaahuatanga
0000 2000h
SMIP
he whirihoranga turanga, i hainatia e te kaihoko
I te wa o te tātaritanga o te firmware TXE, ka kitea i muri i te RESET, ka pupuri te TXE i te tukatuka i tenei ahuatanga tae noa ki te whakarite i nga kaupapa taketake o te waahi waahi mo te PTM (FIT, ACM, RESET vector ...). I tua atu, ka tukuna e TXE enei raraunga ki roto i tana SRAM, i muri iho ka tukuna e ia te waahi ki te tukatuka ki reira ka "tuku" mai i te RESET.
Ma te tiaki i nga rootkits
Ana, inaianei ka haere tatou ki nga mea "wera". I kitea e matou i runga i nga punaha maha, kei roto i nga kaiwhakaahua rama SPI nga whakaaetanga kia uru ki nga rohe o te mahara flash SPI kia taea ai e nga kaiwhakamahi katoa o tenei mahara te tuhi me te panui i tetahi rohe. Ko era. kahore he huarahi.
I muri i te tirotiro me te whaipainga MEinfo (mai i te Intel STK), i kite matou kaore i katia te aratau whakangao i runga i enei punaha, na reira, ka waiho nga miihini chipset (FPF) i roto i te ahua kore. Ae, karekau a Intel BG i whakawetohia, i whakawetohia ranei i enei keehi.
Kei te korero matou mo nga punaha e whai ake nei (mo te Intel BG me nga mea ka korerohia i muri mai i roto i te tuhinga, ka korero matou mo nga punaha me te Haswell processor microarchitecture me teitei ake):
hua Gigabyte katoa;
nga hua MSI katoa;
21 nga tauira o nga rorohiko rorohiko Lenovo me nga tauira e 4 o nga tūmau Lenovo.
Ae ra, i korerotia e matou te kitenga ki enei kaihoko, tae atu ki a Intel.
He tauhohenga tika i puta mai Lenovoko wai i mohio ki te raruraru me te i tukuna he papaki.
Tuhinga o mua Te ahua nei i whakaae ratou ki nga korero e pa ana ki te whakaraeraetanga, engari karekau i korero i tetahi huarahi.
Whakawhitiwhiti me MSI ka mutu i runga i ta matou tono ki te tuku i to taviri PGP mo te iwi (ki te tuku tohutohu haumaru ki a raatau i roto i te puka whakamunatia). I kii ratou "he kaihanga taputapu me te kore e whakaputa i nga taviri PGP."
Engari kia tae ki te kaupapa. I te mea ka waihohia nga whaa i roto i te ahua kaore i tohua, ka taea e te kaiwhakamahi (te kaitukino ranei) te whakamahere takitahi (ko te mea tino uaua ko kitea Intel STK). Ki te mahi i tenei, me whakaoti e koe nga mahi e whai ake nei.
1. Whakaohohia ki te Windows OS (i te nuinga o te waa, ko nga mahi e whakaahuatia ana i raro nei ka taea hoki te mahi i raro i te Linux, mena ka whakawhanakehia e koe he tauira o Intel STK mo te OS e hiahiatia ana). Ma te whakamahi i te whaipainga MEinfo, kia mohio kaore nga pire i whakaritea ki tenei punaha.
2. Pānuihia nga ihirangi o te mahara flash ma te whakamahi i te Utauta Papatono Flash.
3. Whakatuwherahia te ahua panui ma te whakamahi i tetahi taputapu whakatika UEFI BIOS, mahia nga huringa e tika ana (whakauruhia he rootkit, hei tauira), hanga/whakatika i nga hanganga KEYM me IBBM kei te rohe ME.
Ko te pikitia e whakaatu ana i te waahanga whanui o te taviri RSA, ko te hash ka whakauruhia ki roto i nga putunga chipset me te toenga o te whirihoranga Intel BG.
4. Ma te whakamahi i te Utauta Whakaahua Flash, hangahia he whakaahua firmware hou (ma te tautuhi i te whirihoranga Intel BG).
5. Tuhia he ahua hou hei kohiko mahara ma te whakamahi i te Utauta Papatono Flash, ka manatoko ma te whakamahi MEinfo kei roto i te rohe ME te whirihoranga Intel BG inaianei.
6. Whakamahia te Utauta Papatono Flash hei kati i te aratau hangahanga.
7. Ka whakaara ano te punaha, muri iho ka taea e koe te whakamahi i te MEinfo ki te manatoko kua whakaritea nga FPF inaianei.
Ko enei mahi ake ake whakahohea te Intel BG i runga i tenei punaha. Kaore e taea te whakakore i te mahi, ko te tikanga:
Ko te rangatira anake o te waahanga motuhake o te matua matua (arā, ko te tangata nana i whakahohe a Intel BG) ka taea te whakahou i te UEFI BIOS i runga i tenei punaha;
Mena ka whakahokia mai e koe te firmware taketake ki tenei punaha, hei tauira, ma te whakamahi i te kaihōtaka, karekau e huri (he hua o te kaupapa here uruhi mena he hapa manatoko);
ki te whakakore i taua UEFI BIOS, me whakakapi e koe te chipset me nga FPF kua whakamaheretia me te "ma" (arā, whakahoki i te maramara mena ka uru koe ki te teihana whakauru infrared te utu o te motuka, whakakapi noa ranei i te papahoahoa. ).
Kia mohio ai koe he aha te mahi a taua rootkit, me arotake koe he aha e taea ai te mahi i to waehere ki te taiao UEFI BIOS. Me kii, i roto i te aratau tukatuka tino whai mana - SMM. Ko taua rootkit pea nga ahuatanga e whai ake nei:
ka mahia i roto i te whakarara ki te OS (ka taea e koe te whirihora i te tukatuka ki te whakaputa i te haukoti SMI, ka puta mai i te taima);
kei a koe nga painga katoa o te noho i roto i te aratau SMM (te uru katoa ki nga ihirangi o te RAM me nga rauemi taputapu, muna mai i te OS);
Ka taea te whakamuna me te wetemuna te waehere papatono o te rootkit ina whakarewahia ki te aratau SMM. Ko nga raraunga e waatea ana i te aratau SMM ka taea te whakamahi hei kī whakamunatanga. Hei tauira, he hash mai i te huinga o nga wahitau kei SMRAM. Ki te tiki i tenei ki, me uru koe ki te SMM. A ka taea tenei ma nga huarahi e rua. Kimihia te RCE i roto i te waehere SMM ka whakamahi, ka taapirihia ranei to ake waahanga SMM ki te BIOS, kaore e taea mai i te wa i taea ai e matou te Boot Guard.
No reira, ko tenei whakaraeraetanga ka taea e te kaiwhaiwhai te:
hanga he puku huna, kore e taea te whakakore i te kaupapa e kore e mohiotia i roto i te punaha;
mahia to waehere ki runga i tetahi o nga putunga maramara i roto i te Intel SoC, ara, i runga i te Intel ISH (tirohia te pikitia).
Ahakoa ko nga kaha o te Intel ISH subsystem kaore ano kia tirotirohia, he ahua pai te ahua o te whakaeke mo Intel ME.
kitenga
Ko te rangahau i taea ai te whiwhi whakaahuatanga hangarau mo te mahi a te hangarau Intel Boot Guard. Nga mea ngaro e rua i roto i te haumarutanga o Intel na roto i te tauira pouri.
Ka whakaatuhia he ahuatanga whakaeke e taea ai e koe te hanga i tetahi rootkit ka taea te tango i roto i te punaha.
I kite matou ka taea e nga tukatuka Intel hou te mahi i te maha o nga waehere rangatira ahakoa i mua i te tiimata o te BIOS.
Kei te iti haere nga papahanga me te hangahanga Intel 64 mo te whakahaere rorohiko kore utu: manatoko taputapu, te piki haere o te maha o nga hangarau rangatira me nga punaha iti (e toru nga uho i roto i te maramara SoC: x86 ME, x86 ISH me ARC PMC).
Nga whakaheke
Ko nga kaihoko ka waiho kia tuwhera te aratau hangahanga me tino kati. I tenei wa, ko o ratau kanohi anake kua kati, a ko nga punaha hou o Kaby Lake e whakaatu ana i tenei.
Ka taea e nga kaiwhakamahi te whakakore i te Intel BG i runga i o raatau punaha (e whakaraerae ana ki te whakaraeraetanga kua whakaahuatia) ma te whakahaere i te Utauta Papatono Flash me te tawhā -closemnf. Tuatahi, me tino mohio koe (ma te whakamahi i te MEinfo) ko te whirihoranga Intel BG i roto i te rohe ME e whakarato ana mo te whakakore i tenei hangarau i muri i te mahinga i roto i nga FPF.