Tikiake Whirinaki a Schrödinger. Intel Boot Guard

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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

  1. Te whakamarumaru a-tinana o nga ihirangi o te mahara flash SPI me te peke tiaki-tuhi;
  2. 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;
  3. 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;
  4. 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 rua Tuhinga. 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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard

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:

Tikiake Whirinaki a Schrödinger. Intel Boot Guard

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):

  1. 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;
  2. 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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard

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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard

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:

  1. 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);
  2. 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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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;
};

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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;
};

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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:

enum FIT_ENTRY_TYPES
{
	FIT_HEADER = 0,
	MICROCODE_UPDATE,
	BG_ACM,
	BIOS_INIT = 7,
	TPM_POLICY,
	BIOS_POLICY,
	TXT_POLICY,
	BG_KEYM,
	BG_IBBM
};

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];
};

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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:

typedef struct KEY_MANIFEST
{
	char           Tag[8];          // ‘__KEYM__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned char  : 8;             // 1
	unsigned short : 16;            // 0Bh
	unsigned short : 16;            // 20h == hash size?
	unsigned char  IbbmKeyHash[32]; // SHA256 of an IBBM public key
	BG_RSA_ENTRY   OemRootKey;
};

typedef struct BG_RSA_ENTRY
{
	unsigned char  : 8;             // 10h
	unsigned short : 16;            // 1
	unsigned char  : 8;             // 10h
	unsigned short RsaPubKeySize;   // 800h
	unsigned long  RsaPubExp;
	unsigned char  RsaPubKey[256];
	unsigned short : 16;            // 14
	unsigned char  : 8;             // 10h
	unsigned short RsaSigSize;      // 800h
	unsigned short : 16;            // 0Bh
	unsigned char  RsaSig[256];
};

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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:

typedef struct IBB_MANIFEST
{
	ACBP Acbp;         // Boot policies
	IBBS Ibbs;         // IBB description
	IBB_DESCRIPTORS[];
	PMSG Pmsg;         // IBBM signature
};

Kei roto i te tuatahi etahi taumau:

typedef struct ACBP
{
	char           Tag[8];          // ‘__ACBP__’
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 1
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned short : 16;            // x & F0h = 0
	unsigned short : 16;            // 0 < x <= 400h
};

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:

typedef struct PMSG
{
	char           Tag[8];            // ‘__PMSG__’
	unsigned char  : 8;               // 10h
	BG_RSA_ENTRY   IbbKey;
};

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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 HASH_TABLE
{
	char          Tag[8];            // ‘$HASHTBL’
	unsigned long NumDxeDescriptors;
	DXE_DESCRIPTORS[];
};

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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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

0000 6000h
RBEP
Intel TXE wāhanga waehere firmware, x86, hainatia Intel

0001 0000h
PMCP
Intel PMC firmware wāhanga waehere, ARC, hainatia Intel

0002 0000h
FTPR
Intel TXE wāhanga waehere firmware, x86, hainatia Intel

0007 B000h
UCOD
Ko nga whakahoutanga moroiti CPU i hainatia e Intel

0008 0000h
IBBP
UEFI BIOS, SEC/PEI wāhanga, x86, hainatia e te kaihoko

0021 8000h
ISHC
Ko te wahanga waehere firmware Intel ISH, x86, i hainatia e te kaihoko

0025 8000h
NFTP
Intel TXE wāhanga waehere firmware, x86, hainatia Intel

0036 1000h
IUNP
is unknown

0038 1000h
OBBP
UEFI BIOS, wahanga DXE, x86, kaore i haina

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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
2. Pānuihia nga ihirangi o te mahara flash ma te whakamahi i te Utauta Papatono Flash.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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).

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
6. Whakamahia te Utauta Papatono Flash hei kati i te aratau hangahanga.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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.

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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).

Tikiake Whirinaki a Schrödinger. Intel Boot Guard
Tikiake Whirinaki a Schrödinger. Intel Boot Guard
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

  1. 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.
  2. Ka whakaatuhia he ahuatanga whakaeke e taea ai e koe te hanga i tetahi rootkit ka taea te tango i roto i te punaha.
  3. 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.
  4. 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.

Source: will.com

Tāpiri i te kōrero