áĽáá°áá áá° áá
á°á á°á¨á áááá¨áľ áĽá áľá firmware x86-á°áłáá á¨áŽáááŠá°á ááľá¨áŽá˝ á°á
áááľ áááááá áĽááááŤááᢠá áá
áá á¨áĽááą áá ááĽá¨ ááá Intel Boot Guard (á¨á˘áá´á áŁáŽáľ Guard áá áááłáłáľ á¨áá áľá!) - á áááľáá á¨á°á°áá áŁáŽáľ á¨áłáá á¨ááľááť á´áááá á¨áŽáááŠá°á á˛áľá°á áťá á áááľ á°á¨á áá á ááááľ ááĽáŤáľ ááá ááĽááľ áá˝ááᢠá¨áááá á áááááąá á áľááľáá á ááááᥠá¨áá
á á´áááá á á°ááŁá á á á°ááá˘áŚá˝ áá
ááľáľá á áľááš ááá á
á ááŁáᣠá ááá´áá¸ááá ááá˝áŁ á°ááľ á ááá¸á ááááŽá˝ á ááááľáŁ ááá
ááľ áĽá ááá°áŁáá
á á áĽá áŹáá°á áá
áľá˘ ááááłáľ á á ááŤáł á á
áŤá˘áá˝ áááľ ááľáĽ áŤáá ááááľ áłá፠áĽáá´áľ á áĽá áá
áá á´áááá á°á á
á á áľáááą ááľáĽ ááááľ á¨ááá˝á (á ááŽááŤá áŁáááŤá á˘áá) ááááľ á¨ááá˝á á¨á°á°á á rootkit áĽáá˛ááĽá áĽáá°ááá° á¨áááá˝ áłáŞá áá áĽáłáľ áĽáá¨ááá˘
á áááŤá˝á áá á˝áá á¨á°áá°á¨á°á á¨áŽááá¨ááą "On Guard for Rootkits: Intel BootGuard" á á°áŁááľ áŞáááśá˝ áá áá.
Firmware ááŽáááŠá°á ááľá¨á ᨠIntel 64 architecture áá
áááááᣠááĽáŤáá áááľ áĽááľáĽáĄ á¨áááá áŽáááŠá°á ááľá¨á á¨á˘áá´á 64 á ááá´áá¸á áá áŤáá firmware áááľá áá? á áĽáááĽ, UEFI BIOS. áá áá áááľ áľáááá á áááá. á¨áá á á ááá´áá¸á á¨á´áľááśá (áááśá) áĽáŞáľ á¨ááŤáłá¨áá áĽááá áĽáááá¨á°áá˘
áá°á¨áą á ááá áááĄ-
- ááŽá°á°á (á˛ááŠ, á´ááľáŤá ááŽá°á˛áá áŠááľ), áĽáąá á¨áá ááááš á á°á¨ááŞ, á áĽáŽ á¨á°á°áŤ á¨ááŤáááľ áŽá (á ááá áá´áá˝ ááľáĽ á áá°áá) áĽá á¨ááľáłááť áááŁá áŞáŤ (IMC, á¨á°ááá áá á°á¨ áľááľáł áááŁá áŞáŤ);
- áşáá´áľ (PCHᣠPlatform Controller Hub)ᣠá¨á°ááŤáŠ ááłáŞáŤáá˝ áá ááľá°ááĽá áááá á áĽá áááľ áľáááśá˝á áááľá°áłá°á á¨á°ááŤáŠ á°ááŁáŁáŞáá˝á á¨áŤáᢠá¨áĽááá á ááŤá¨á áłááá á¨á˘áá´á ááá áááľ á˘ááá (ME) á ááą á˛áá á ááľáĄá firmware (Intel ME firmware) á ááá˘
áááśáá˝ á¨áá á¨á°á ááąáľ á á°á¨á᪠á¨á°ááá áááŁá áŞáŤ áŤáľáááá¸áá (ACPI EC, á¨áá ááĽáĽá áĽá á¨ááá á áááá˝ á¨á°á¨á°á° áááŁá áŞáŤ), áááá áááľ áľáááľ, áááłá°áť á°ááł, áááá á°ááł, á Fn áááá˝ (á¨áľááŞá áĽáŠá ááľ, á¨áľáá áá á, á¨ááá á°ááł) á á áŤá áááááľ á áá áľ. á¨ááᣠáĽááá, ááá°) áĽá á°á¨ááŞ. áĽá áĽáą á°áá á¨áŤáą firmware á ááá˘
áľááá , á¨áá áŤáá á¨á˝á áľááá áĽáá¨áľ á á፠ᨠSPI ááá˝ áá á°á¨ áľááľáł áá á¨á°ááá á á¨áŽááá°á ááľá¨á (á˛áľá°á firmware) firmware áá. á¨áá áá á°á¨ áľááľáł á°á áááá˝ á ááľ á°á á áá°áá áľ áŚáł á፠áĽááłááᥠᣠá¨áá áá á°á¨ áľááľáł áááľ á áá¨á°ááľ áááá˝ áá¨ááá (á áĽáá áá áĽáá°ááłá¨á)
- UEFI áŁáŽáľ;
- ACPI EC firmware (á¨á°áᨠááá ᨠSkylake ááŽá°á°á ááááŽá ááá´áá¸á (2015) áá áłá¨ ᣠááá áá á áąá ááľáĽ áĽá á¨á á ááá ááłááá˝á áá á áá¨áá ᣠáľááá á¨á°á¨á°á°á áááŁá áŞáŤ firmware á ááá ᨠUEFI BIOS á áŤá áá á˘
- Intel ME firmware;
- á áĽáŽááἠGbE (Gigabit Ethernet) á¨á ááłá¨ áá¨áĽ á áľáá áá á (MAC á áľáŤáťáŁ ááá°.)
- ááá˝ ááá - ááá á¨ááá˝ áá á°á¨ áľááľáł ááá, áá° ááá˝ áááá˝ á áááá˝á áĽá áĽáá˛áá áĽááąá áááľá¨áľ áááśá˝á ááá.
áá° áááá˝ á¨ááłá¨áť ááŠááľ (á á°á ááąáľ áááśá˝ áá á¨áľ) á SPI á ááśáĄáľ ááľá°á - á áşáá´áľ ááľáĽ á¨á°áááŁá ᨠSPI áááŁá áŞáŤ, áá
áá
á°á¨ áľááľáł á¨áá°á¨áľá áľ áá. áááśáš á á˘áá´á áá°ááá¨áŠáľ áĽá´áśá˝ (áá°á
áááľ á˛áŁá) á¨á°ááአáĽáŤááłáṠᨠSPI ááá˝ á°á áá áá° áááá¸á áĽáť áá ááłá¨áť (ááá áĽ/ááá) á ááᢠá¨á°ááŠáľ áá á°ááŁá˘-áĽáť ááá á°á°áŤá˝ á áá°ááᢠá¨ááłáá
áĽáááł: á áĽá áľáááśá˝, á˛áአáá° UEFI BIOS áĽá GbE áá ááłá¨áť á áá, á¨ááá˝ ááááá˝á áĽáť ááá ἠáĽá áá° Intel ME ááá ááá ááłá¨áť á¨ááá. ááá áĽá áĽá ááá á áá°áá? á¨ááá¨á á ááŤá ááᢠá á˝áá ááľáĽ á¨á áá áĽááááŤá˝áááá˘
á¨áŽááá°á ááľá¨áá ááááá á¨ááá¨á ááá á á áá´áá˝
á ááá˝ ááá¨áľ áĽáá°ááťáá á¨áŽáááŠá°á áááľááá ááááá ááá á á¨áá˝áá áľááááľ á¨á°á á á ááá á áá ᾠᣠáá á á áĽá á áĽáą ááľáĽ áŚáł áĽáá˛áŤáá (á¨áľááá° ááá ááááá˝á / áłáá ááŤáá) ᣠáŽáłá¸áá á áŁá áአá áá áááłáὠᣠááá°. áĽá ᨠSPI ááá˝ áá á°á¨ áľááľáł áááá˝ ááłá¨áťá ááá°áĽ, á áĽááἠá á á áá°áá. áľááá ááĽáŤááłááą á¨ááľáá¸á፠á áŤáŁá˘ áአáአáľááśá˝ firmware á á¨ááťáťáŤáá˝ ááá á á áĽá á áá ááááá˘
áľááá
ᣠá¨Intel ME firmware ááá
á°áľ áĽá ááľááááááľ ááĽáĽá á¨á°áá¨á á˛áá áá° ME UMA áá
á°á¨ áľááľáł á á°áŤá ááĽá á ME á°ááŁáŁáŞá ááŁáŤáᢠáá
á¨áá¨áá፠áá°áľ á á áá°áá ááľáĽ á áľááľá á áĽá á°áĽáŤááˇáá˘
áĽá ACPI EC firmware áĽáá° á°áᥠá¨á°á¨ááá á ááłááááľ áĽáť ááᢠááá áĽáá áá áááľáŽá˝ á UEFI áŁáŽáľ ááľáĽ á¨á°áŤá°á° á ááá áááá áááľ ááťáá ᨠUEFI áŁáŽáľ á áá áááŁá¸á á°ááłáłá á¨áĽá á áá´áá˝ á°áᢠáá. áľááĽááą áĽááááá.
áĽááá áá´áá˝ á áááľ ááľáŚá˝ áá¨áá áá˝áá.
áĽá áá áá° UEFI áŁáŽáľ ááá ááá
- ᨠSPI ááá˝ áá á°á¨ áľááľáłá áááľ á á˝áá á¨áá¨áá¨áá ááá፠á áŤáá áĽá á;
- ᨠáşáá´áľ PRx ááááŚá˝á á áá áá á á˛áአá áľáŤáť áŚáł ááľáĽ ᨠUEFI BIOS ááá áľáá ፠áĽá á;
- á áşáá´áľ ááááá˘áŤ ááľáĽ BIOS_WE / BLE áĽá SMM_BWP á˘áľ á áááááľ á°ááłá á¨SMI áááŤá¨áĽá á áááá¨áľ áĽá á ááľáŹáľ áá° UEFI áŁáŽáľ ááá áááťá á¨áá°á¨á áá¨áŤáá˝á áááľá¤
- á¨áá áĽá á á¨á áá á¨áá áľáŞáľ Intel BIOS Guard (PFAT) ááá˘
á¨áĽááá áľááśá˝ á á°á¨á᪠áťáŽá˝ á¨áŤáłá¸áá á¨á°á áááľ áĽááááá˝á (áááłá á UEFI BIOS ááááá˝ ááááá˝á ááá¨á) ááłá á áĽá áá°áá á áá˝ááá˘
á á ááľ á¨á°áá°á áľáááľ (á á á
áŤá˘á áá á áááľá¨áľ) ááá á¨áá á¨á°á ááąáľá á¨áá¨áá¨áŤ áá´áá˝ áá°áá አáĽáá°ááá˝á, á¨ááś áá°áá አáĽáá°ááá˝á ááá á á°ááá ááááľ áá°áá አáĽáá°áá˝á ááááἠá áľááá áá. áľááĽááá
áľááśá˝ áĽá á á á°ááŁá አááľáĽ áľááá áááł á¨á áá ááá ἠáá˝ááá˘
ᨠUEFI áŁáŽáľ áá¨áá፠áá¨áááŤ
áľá á¨áłáá á¨áĄáľ á´áááááá˝ áľááááá áá° á áĽááŻá˝á á¨áááŁá á¨ááááŞáŤá ááá Secure Boot ááᢠááá ᣠá áĽá-ááá ᣠᨠUEFI BIOS (ážááŽá˝ ᣠáá°áŽá˝ ᣠááá°) áá áŤááľá á áŤááľ ááá¨ááἠá¨á°áá°á áá ᣠáĽá firmware áŤáą á áá°ááá˘
áľááá ᣠIntel in SoCs with the Bay Trail microarchitecture (2012) áááľáá á¨áááá¨á á°á áááą á¨á°á á á áĄáľ (á¨á°á¨ááá áĄáľ) á°á°ááĽáŻáᣠáá á á¨áá á¨á°á áá°á Secure Boot á´áááá áá ááá áááááľ á¨áááᢠá áá (2013) áá áá´ á°áťá˝áá áĽá á Intel Boot Guard áľá á ááľáá ááááŽá ááá´áá¸á áá´áľááśáá˝ á°áááá˘
Intel Boot Guardá á¨ááááťá˝á á ááľáŁ á Intel 64 architecture ááľáĽ áŤááá ᨠruntimesá áĽááᣠáĽááá á á áĽáá¨áľ á¨áá á¨áłáá áĄáľ á´áááá á¨áá°ááá áľá áá¸áá˘
Intel CPU
áŤá ááŽá°á°áŠ á á˘áá´á 64 á ááá´áá¸á ááľáĽ áááá á¨ááľáá¸á፠á áŤáŁá˘ áááá áá áááᢠááááľáá á¨áĽáááľ áá°á¨áľ á¨ááá? áá á á¨ááŤá°ááá á¨áá¨á°ááľ ááĽá¨ áááŽá˝ áŁáá¤áľááľ áááĄ-
- á¨ááááŽáŽáľ áŽá á¨ááááááĽáŁ á¨áááᎠáŽáľá ááá¨áá¸áľ áĽáá°áá ááá á¨ááá˝á áá
á°á¨ áľááľáł ááᢠááááŽáŽáľ á áŁá ááá á áá áááŞáŤáá˝ áá á¨á áááŁáŁáŞ áááŞáŤ áľáááľ áá°áá á áĽáá°áá ááłááá. á áááᎠáŽáľ ááľáĽá áá¨á°áłá
áłááŤáá˝ . áľááá á BIOS ááľáĽ á¨ááááŽáŽáľ ááťáťáŤ áŤáá¸á áááľáŽá˝áá˝á ááááľ áá˝áá (áĽááą á áááłá áľ áá á°á°áŤá˘ áá¸á ᣠááááŤáąá ROM ááá áľáááá˝á)ᢠá¨áĽááá áááľáŽá˝ áááľ á˘áááŞááľ á¨á°á°á¨á áá, áá á áľááłáá á áĽá á áŤááłáľá áá (áľááá , á¨ááááŽáŽáľ áአáááľ áááŤáłáĽáŠáľ áĽáť ááłááá), áĽá áłááááľá áĽá áľááááááľá ááááŁá á á¨á°áá¨á áá; - á¨ááááŽáŽáľ ááťáťáŤáá˝á áááśá˝ ááá á°á ᨠAES ááá;
- á¨áááᎠáŽáľ ááááá˝á ááá á¨ááŤá¨ááἠá¨RSA á¨á áἠááá áá˝;
- á˛áአáŁáŽáľ (áá ááááŽáŽáľ) á¨áááአá ááľ ááá á áľáŤá áá áľ á ááłááľ áááśá˝ á˛á¨á°áą ááŤááľáŁá¸á á¨áá˝áá¸áá á˘áá´á-á¨áłá ᨠACM (á¨á°á¨ááá áŽáľ ááąá) áŽáľ áááá˝á ááá á¨ááŤá¨ááἠá¨RSA á¨á áἠááá áá˝á˘
á˘áá´á ME
á áĽááá˝á ááľáĽ áŤáá áá
áááľ áľáááľ á¨á°á°á á á
ááá áĽááłá áľáĽá ááľ á˘ááá ᣠIntel ME áĽáá˛á á¨áá°ááá áľá áá ᣠááááŤáąá áĽáą á áá-
- ME ROM - á¨áááááἠᣠá¨áááááľ áá á°á¨ áľááľáł (á¨áááá áá´ á áá°á°á á) ᣠá¨áááť áŽáľá ᣠáĽáá˛áá ᨠSHA256 áὠᨠRSA á¨á áἠááá ᣠᨠIntel ME firmware ááááá á¨ááŤá¨áááĽ;
- ááľáĽáŤá áá¨áá ááá¨áá¸áľ ᨠAES ááá;
- á áŽáááŠá°á á˛áľá°á á á áŤá˘ á¨á°ááá¸áá áá¨á á¨áᎠá ááłááľ áá¨ááá˝á ááá áá¨ááť á áşáá´áľ ááľáĽ á¨á°ááá á¨ááá áľáĽáľáĽ (á¤áá¤áá¤á ᣠá¨ááľá ááŽááŤá ááá) ááááľá˘
Intel Boot Guard 1.x
áľáá˝ ááľá°áŁá áŤá˘ á áá á˝áá ááľáĽ á¨ááá ááá á¨Intel Boot Guard á´áááá áľáŞáľ ááĽáŽá˝ á¨áááá° áá¸á áĽá á ááľáŁá á˘áá´á áśáááá´á˝á ááľáĽ áĽá á áá á¨áááá á¨ááĽá á áá áá ááá áááááľ ááááŤá¸á áá˝ááᢠá á°á¨ááŞá á¨áá á´áááá á á°ááŁá á áá¨á á¨á°ááá á á°ááá˘áŚá˝ áá ááľáľá áá áľ ááᣠáĽá áá˘áá´á áĄáľ á áŁá á¨á°ááá¸á áá á˛ááťá¸á á¨á°áłáłáą ááá áá˝ááᣠáá á á ááŤá˝ ááłá°á á¨ááá˝á ááá˘
áľááá ᣠIntel Boot Guard (BG) á áááľáá á¨áá°áá UEFI áŁáŽáľ á¨áá¨áá፠á´áááá ááᢠá áá˝áá ááľáĽ áŁáá áľáá˝ ááá [á¨áááľááá á¨á°áŤá°á° á¨á°á áááľ á´áááá á°ááá ᣠáááŤá áĄáľ ᨠá˘áá°ááŞá˛áŁ ááá áĄáľ áĄáľ á áá°áá]ᣠáĽáá° áłáá á¨áĄáľ á°áá°ááľ áá°áŤáᢠáĽá á ááľáĄ áŤáá á¨ááááŞáŤá áááá á á˛áአááľáĽ áŤáá á¨ááľááť áŽáľ (áááᎠáŽáľ) áá, áá á á RESET ááľá°áľ (BIOS ááľáĽ áŤáá RESET áŹáá°á áá áááłáłáľ á¨áá áľá!). á˛áአá á¤áľáá á ááá˝ áá᪠áá á˘áá´á áŤááááá áĽá á¨á°áá¨á á¨áŽáľ áááá (Intel BG startup ACM) á áááś áá° áá¸ááŤá áááłáᣠá á¨áááŚáłá (á¨áá áĽáá°á°áááá á˛áአá¨á¤á˛á¤á ááááá á¨ááŤá¨ááἠá¨á áἠááá áá˝ áĽááłáá áá°á á˛á á°á á áˇáᢠ) áĽá ááááŤáá˘
áá
á¨áŽáľ ááá ᨠUEFI BIOS áľáá˝ áááť áááá á¨áá¨ááἠáááááľ á áá áľ - á¨ááááŞáŤ á°á¨á áĄáľ á ááľ (IBB) , áĽáąá á á°áŤá, ᨠUEFI BIOS áá áááá á¨áá¨ááἠá°ááŁá ááá. áľááá
, Intel BG áľááá° ááááá á¨ááááá á áᾠᨠBIOS áľááááááľá áĽáá˛áŤá¨ááᥠááá
áľáááłá (áá
á á Secure Boot á´áááá ááĽáĽá áľá áá¨ááá áá˝áá).
ᨠIntel BG á´áááá áááľ á¨á á áŤá áá´áá˝á áŤáááŁá (áĽá á ááą á ááá áá áŁáá á áááŁá, áááľá áááąá áááłáá˝ á á˛áľá°á áá ááá áá˝áá, áĽá áááąá áá°áá¨á áá˝áá).
á¨áá፠áĄáľ
á Measured Boot (MB) áááł áĽáŤááłááą á¨ááľááť á áŤá (á¨á˛áአáĄáľ áŽá áááŽ) á¨áłáá á¨ááłáŞáŤ áľáááľ ááąá (TPM) á á áá á áá áá ááŁáŠá "áááŤáᢠáááŤáááľ ááľá¨áłá˝áá˘
TPM PCRs (á¨áááľááá áá á¨áľ á°áááá˘áá˝) á ááľáŁ áĽáąá á áááá áá°á¨áľ á¨ááşáá áľáŤáá áá¤áľ áááááŁááĄ-
áĽáááŤá˘ á¨á áá PCR áá á ááľáá áá á¨á°áá°á¨á° áá, áĽá áĽááá ááááŚá˝ áĽáá°áá á¨ááááŠáľ áľáááą áłáá á˛ááá áĽáť áá.
áľááá ᣠá MB áááłáŁ á á°áá°á ááᣠPCRs áአá¨áá (á áá˝ áŚááŹá˝á á á á ááľáĽ) áŽáľ ááá áłáł áá፠"á¨á°ááŤ" áŤáááŁáááᢠᨠPCR áááá˝ á á ááłááľ ááἠ(TPM_Seal) á á áŤá ááľá ፠ááľáĽ áá áá áá˝ááᢠá¨á፠á áá á¨áĽááą á˛ááŞááľ (TPM_Unseal) á¨ááťáá á ááŤá ááááŤáľ ᨠPCR áááá˝ áŤáá°áá¨áŠ áĽáť áá (áááľá á ááľ âá¨á°ááŤâ ááá á áá°áá¨á¨á)á˘
á¨á°á¨ááá áĄáľ
ᨠUEFI BIOS á ááťáťá ááááá á°áá˝ á áŁá á áľááŞá ááá á¨á°á¨ááá áĄáľ (VB) áááł áá, áĽáŤááłááą á¨ááľááť á áŤá á¨áááĽááá áľááááááľ áĽá áľááááááľ á ááľá ፠áŤá¨áááŁá. áĽá á¨áá¨áá፠áľá á°áľ á¨á°áá ᨠ(á¨áá¨á°ááľ ááľáĽ á ááą) áá¨á°áłááĄ
- ᨠ1 á°áá áĽáľá¨ 30 á°áááá˝ áŁáá áá ááááľ (á°á ááá áŽáááŠá°áŠ ááá áĽáá°ááááł ááá¨áłáľ áá áĽáá˛áá¨á áĽá á¨á°áťá áŁáŽáľ (BIOS) áá°áá á¨á áľ áááááľ ááááŤá)
- áá˛áŤáá ááááľ (á°á ááá ááá¨áłáľ áá áĽááłááá¨á áĽá á á°á¨ááŞá áááľá¨á);
- áἠáŤá ááľ áŤáá áĽáŤ ááá á (áá°á áááľ áá á¨ááá ᣠááááŤáąá á¨á áá á áľááá áááŽá˝ áľááááŠ)á˘
á¨áĽáááá áá፠á¨ááá°áá á á°á áá°á ᨠIntel BG áá á (áááľá á¨ááľáá¸á፠ááᲠá°áĽá á áá áŤá) áá áá, áá á á ááááľ á áŽáááŠá°á ááľá¨á á á áŤá˘á á á°áᨠáááł á á°ááá áá¨ááť ááľáĽ - áşáá´áľ ááá (á¤áá¤áá¤á) áááááŁá. á áá ááĽáĽ áá á áľááľ áĽáááŤááá˘
á¨áááአá á°á¨á᪠áťáŠ áááľ RSA 2048 áááá˝á áŤáááŤá áĽá áááľ á¨ááἠá ááááŽá˝á áááĽáŤá (á áĽáá áá á¨ááłá¨á)
- á¨áá á á áá¸áŁáŤá SVN (á¨á°á áááľ áĽáŞáľ ááĽá) áŤáľááá á á¨á á áŤá˘á áľáá ááá ááááľáľ (KEYMᣠOEM Root Key Maifest)ᣠá¨ááŁáŠ ááá፠á¨á áἠááá SHA256 áá˝áŁ ᨠRSA á ááŁá ááá (áááľá á¨á áἠááá á¨á á áŤá˘á áľá ááá) á¨áá á á áá¸áŁáŤá ááá áĽá ááááá áá¨áááĽ;
- á¨áá á á áá¸áŁáŤá SVNᣠSHA256 ᨠIBB áá˝áŁ á¨áá á á áá¸áŁáŤá ááá á¨ááŤá¨áááĄá áľ á¨á áἠááá áĽá áááá áŤáą áŤáľááá á á¨IBB ááááľáľ (IBBMᣠInitial Boot Block Manifest) ááá˘
ᨠSHA256 áá˝ á¨áŚáŞááá áá á ááŤá˝ áľáá ááá áá áĽáá° á˘áá´á á˘á áá á á chipset fuses (FPFs) á ááááľ ááááᢠᨠIntel BG áá á áá áá á´áááá áááŤá°áľ á¨ááŤááἠá¨áá á¨á áá á áá á áá áľáááľ ááľáĽ ᨠOEM Root Key á¨áá ááá áŁáá¤áľ áĽáť áŁáŽáľ áááá áá˝áá (áááľá áĽááá á ááááŤáá˝ áĽáá°áá ááľááľ áá˝áá) ᣠáááľáᢠáťá.
áľááá á˛ááá¨áą, áĽáá°áá
á áááľ á¨á
á á¨áá¨áá፠á°áá°ááľ á áľáááááľ áá áĽááŁáŹáá˝ áá˛áŤáá áááłá - á ááąá á áá¸áŁáŤá áá áá áá˝á áá á. ááá áŤááłáľá áá?
áĽáá° áĽáááą á¨áá á˘áá´á áľááá áá á áŤá˘á á¨á°ááŤáŠ ᨠIBB áááá˝á áá°ááŤáŠ á¨áááľ ááľááŽá˝ áĽá á ááąá áĽáá° áľá áĽáá˛á áá áĽáľá áá°áŁá. á¨IBB ááá (á¨ááá°áá á áá¸áŁáŤá ááááľ á¨ááá) á¨áá ááá á¨á°ááá ááľá°áą á¨áááŤá á á ááľ á¨áááľ ááľáá áá áĽáť áá áĽá áťáŠ á á˛áľ áĽááľ áĽáľáŞáŤááá áĽá á áááĽáá áŁáŽáľ ááťáťáŤ áá áĽáá°áá á¨á°á°á áááááśá˝á áĽáľáŞáŤáá áľá¨áľ áĽáť ááá˘
ááá áá á¨áľá ááá á¨á°á áḠ(á¨ááááŞáŤá á áá¸áŁáŤá á¨á°áá¨áá áľ) á¨áá, áĽáąá áá°áŤáľ á ááťáá, á¨ááťá áá°áą á áá°á°á á. á¨áá ááá á¨á áἠááá áá˝ áá áá´á ááá¨á¨áť áá áá° FPFs á°áááá˘
Intel Boot Guard áá á
á áá ᨠIntel BG áá á áĽá á¨ááĽá¨áąá áá°áľ á áááá áĽáááá¨áľá˘ á¨á˘áá´á á˛áľá°á ááŁáŞáŤ áŞáľ (STK) á ááá˝ ááľá ááŁáŞáŤ GUI ááľáĽ áŤááá á°ááá áľá á¨á°ááá¨áąáŁ á¨Intel BG áá á á¨á á áŤá˘áá áľáá ááá á¨ááἠááá áá˝ áĽáá°áá¨áá áŤáľá°áááᢠáĽá´áśá˝, ááá°. Intel BG ááááŤ.
á¨áá
ááá፠á áááááĄ-
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;
};
á á á ááá ᨠIntel BG áá á á áŁá á°áááá á áŤá áá. áááłá á¨Force_Boot_Guard_ACM áŁáá˛áŤ á°ááá¨áľá˘ á˛á¸áłáŁ á SPI ááá˝ áá áŤáá á¨BG ááľáááŞáŤ ACM ááá áŤáá°ááᣠááá á¨áłáá áĄáľ á áá¨á°áľáᢠá¨áááłáá áááá.
á¨VB áááł á¨ááľáá¸á፠ááᲠáááá áĽáá°áá˝á á áľááľáá á˝áááᣠáľááá á áá¨áááŤá áŤáá°áłáŤáŁ áĽáá°ááᣠá¨áááłáá ááá¨áľ áá¨á°áłáá˘
áĽáá°áá á áááľ áááŽá˝á ááťáŽáš áá°ááľ...
á¨áááááŤá GUI á¨áá¨á°ááľá "ááá-á¨á°á°áŠ" ááááŤáá˝á áŤáááŁá:
ááá
ááá´
ááááŤ
0
ááá_FVME
á˘áá´á á˘á á´áááá á°á°ááááá˘
1
VE
á¨áŞá˘ áááł áá
áˇáᣠá áá ááĽá፠áááá
2
áŞá¤áá˘
áááąá áááłáá˝ áá
á°áá (VB áĽá MB)ᣠá áá ááĽá፠áááá
3
VM
áááąá áááłáá˝ áá
á°áá, áľáááąá áłáŤá á
4
FVE
á¨áŞá˘ áááł áá
áˇáᣠáá˛áŤáá á°áááˇáá˘
5
FVME
áááąá áááłáá˝ áá
á°ááᣠáá˛áŤáá ááááá˘
áá°á á˛á áĽáá°á°áááá á¨á˘áá´á á˘á áá á á áľáááą áťá áá áá´á ááá¨á¨áť áá ááá á áá áľ áá° áşáá´áľ ááá (á¤áá¤áá¤á) - áľáá˝ (áŤáá°á¨ááá áá¨á 256 áŁááľ áĽáť) á áşáá´áľ ááľáĽ á¨áááľáá áá¨á áá¨ááť áá áááá áá˝ááᢠá¨á˘áá´á ááá¨áť á°áááľ (áááŤá áá á¨ááľá ááŽááŤá áá°á¨á á¨áá˝á ááá)á˘
áá á¨áľá ááá¨áá¸áľ á áŁá áĽáŠ áá ááááŤáąá
- á¨á ááľ áá ááŽááŤá áá°á¨á á¨áá˝á á¨ááἠáá¨ááť áŚáł á áá (á¨á˘áá´á á˘á áá á á¨á°áťáá áľ áĽáť)á˘
- á˘áá´á ME áĽáť áá ááá ἠáĽá ááŽááŤá ááľá¨á á¨áá˝ááá˘
áľááá á¨Intel BG á´ááááá á á ááľ á¨á°áá°á áľáááľ áá ááááá áťáŠ á áááľ áá á¨áá¨á°ááľá áŤá°áááá˘
- á¨ááá˝ ááľá ááŁáŞáŤá á áá áá (á¨á˘áá´á STK) ᣠᨠIntel BG áá á áá á¨á˝ááá ááľáá áááĽáŤá á Intel ME ááá ááľáĽ áĽáá° á°ááááŽá˝ (áá¤áá¤áá¤á áááŤá ááľáłááľ á°áĽá á¨áá áŤá)á˘
- á¨ááá˝ ááŽááŤááá ááŁáŞáŤá á áá áá (á¨á˘áá´á STK) áá áá ááľá áá° áľááṠᨠSPI ááá˝ áá á°á¨ áľááľáł áá˝áá áĽá á¨áá áŤáá ááááᢠá¨ááááá¸áŞáá áááł (á áá ááłá áá, á°ááłá áľááá áá° Intel ME áááŤá).
á áĽááá ááááá˝ ááááŤáľ á˘áá´á ME á ME ááá ááľáĽ áŤáᾠᨠFPFs ááľá°ááśá˝ ááľáĽ á¨á°ááášáľá áĽá´áśá˝ áá¤áá¤áá¤á áá°áŁá ᣠáááśášá á SPI ááá˝ ááá ááááŤáá˝ á˘áá´á áááá¨áŠáľ áĽá´áśá˝ áŤáááá (á áá ááááŞáŤ áá á¨á°ááášáľ) á˝áá) áĽá á¨áľáááľ áłáá ááľáááá áŤá¨áááá˘
Intel Boot Guard áľáá ፠áľáá°á
á á ááľ á¨á°áá°á ááłá áá á¨áá á á´áááá á á°ááŁá á ááá°áá°á áá˘áá´á á˘á á´áááá ááááśá˝ á¨áá¨á°ááľá áľáááśá˝ á á¨ááá áá-
áľáááľ
á ááá¨á°
áááŁááľ GA-H170-D3H
Skylake, áľáá á á
áááŁááľ GA-Q170-D3H
Skylake, áľáá á á
áááŁááľ GA-B150-HD3
Skylake, áľáá á á
MSI H170A Gaming Pro
Skylakeᣠááá áľáá á¨ááá˘
Lenovo ThinkPad 460
Skylakeᣠáľáá á áᣠá´áááá áá
áˇáá˘
Lenovo Yoga 2 Pro
ááľáá ᣠááá áľáá á¨ááá˘
Lenovo U330p
ááľáá ᣠááá áľáá á¨ááá˘
"áľáá" ááᾠᨠIntel BG á áá ACM ááá, á¨áá á¨á°á ááąáľá ááááŤáá˝ áĽá á BIOS ááľáĽ áŤáá á°ááá áŽáľ, áááľá. ááá°áá°á á á°ááŁá á.
áĽáá° ááłá á¨á˘áŽ á¨áá¨á°áá áĽááá°áľá˘ ááááŁááľ GA-H170-D3H (áľáŞáľ F4) ᨠSPI ááá˝ áá á°á¨ áľááľáł á¨á á áŤá˘ áŁá˘áŤ ááľáá˘
Intel CPU boot ROM
á ááááŞáŤ á¨á˘áá´á á˘á á´áááá á¨áá áľá ááŽá°á°áŠ á°ááŁá áĽáááááá˘
á˛ááŞááľ á¨á°á°á¨áá ááááŽáŽáľ ááááá˝á ááááľ á áá°áťááᣠáľááá á¨áá á áłá˝ á¨á°ááášáľ áľáááśá˝ áĽáá´áľ áĽáá°áá°áá አ(á áááᎠáŽáľ ááá á áááľáá) áááľ áĽáŤá ááᢠá˘áááᣠá¨áááá á˘áá´á ááŽá°á°ááľ áĽááá á áľáááśá˝ áá¨ááá ááťá áĽáááľ ááá˘
á¨RESET áááł á¨áᣠá áá ááŽá°á°á (á á áľáŤáť áŚáłá ááľáĽ á¨ááá˝ áá á°á¨ áľááľáł áááśá˝ ááľááá á áŤááł á°ááááá) FIT (Firmware Interface Table) á áŤáááᢠááááľ ááá ááᣠááĽáą á ááá á FFFF FFC0h á áľáŤáť á°á˝ááá˘
á áá
ááłáᣠáá
á áľáŤáť FFD6 9500h áá á ááᢠáá°áá
á áľáŤáť á ááá ááŽá°á°áŠ ᨠFIT á áá á¨áĽá áŤáŤá, áááą áá° ááááŚá˝ á¨á°á¨ááá áá. á¨ááááŞáŤá áá¤áľ á¨áá¨á°áá ááá
á áááľ áá.
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;
};
áŁááłáá ááááŤáľáŁ áźááąá áááá á áĽááá
á°áá á¨áŚá˝ ááľáĽ á áá°áá (ááľáŠ áŁáś áááŤá)á˘
á¨á°ááŠáľ áá¤áśá˝ áŁáŽáľ á¨áá°áá አá ááľ áá°áá°á / ááá¸á á¨ááŤáľáááá¸áá á¨á°ááŤáŠ áááľáŽážá˝á áŤááááłá, áááľá. áá° áááľ RESET vector (FFFF FFF0h) á¨ááá¨áá á ááľá˘ á¨áĽáŤááłááą áĽáá°áá á áááľ áá¤áľ ááá á áĽáá°áá¨á°áá áá.
typedef struct FIT_ENTRY
{
unsigned long BaseAddress;
unsigned long : 32;
unsigned long Size;
unsigned short Version; // 1.0
unsigned char EntryType;
unsigned char Checksum;
};
á¨EntryType ááľáŠ áá
áá áá¤áľ á¨ááŤáááá°á á¨ááááá á áááľ áŤáłáŤáᢠá ááŤáł ááááśá˝á áĽááááá-
enum FIT_ENTRY_TYPES
{
FIT_HEADER = 0,
MICROCODE_UPDATE,
BG_ACM,
BIOS_INIT = 7,
TPM_POLICY,
BIOS_POLICY,
TXT_POLICY,
BG_KEYM,
BG_IBBM
};
á áá á¨ááá˘áŤááš á ááą á¨á˘áá´á á˘á á áá ACM áááľáŽá˝ á¨áááá áľá áŚáł áĽáá°ááŤááááľ ááá˝ ááᢠá¨áá áááľáŽá˝ á¨áŤáľá ááá á á á˘áá´á áá°ááá á¨áŽáľ áááá˝ á¨á°ááá° áá (á¤á˛á¤áá¤áľáŁ áááᎠáŽáľ ááááá˝áŁ á¨á˘áá´á 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];
};
ááŽá°á°áŠ áá
áá áááľáŽá˝ áá° áá¸ááŤá ááááᣠáŤá¨ááἠáĽá áŤáľáááŤáá˘
Intel BG á áá ACM
á áá á¨á¤á˛á¤á áĽáŤ áľáá°á ááááŤáľ á¨áá¨á°ááľá áĽáá°ááŤá°áá ááá˝ ááá˘
- áá° áşáá´áľ ááá (á¤áá¤áá¤á) á¨á°áťááá ᨠIntel BG áá á ᨠIntel ME ááá áá;
- KEYM áĽá IBBM ááááŤáá˝á áŤáááᣠáŤá¨áááŁá¸ááá˘
áĽááá á á áá¸áŁáŤááá˝ áááááľ á¤á˛á¤á á¨FIT á°áá á¨áĄáá áá áááᣠáá°áĽááá ááá áŽá˝ ááá áá áááľ á áááľ áá¤áśá˝ á ááľ (á¨áá FIT_ENTRY_TYPES áááá¨áą)á˘
ááááľáśáášá á áĽáááľ áĽáááá¨áłá¸áᢠá ááááŞáŤá á áá¸áŁáŤá ááá á ááľáĽáŁ á ááŤáł ááá˝ áŤááá áááá˝áŁ á¨ááá°áá á áá¸áŁáŤá á¨á°áá á¨á áἠááá áá˝ áĽá á¨á áἠOEM Root Key áĽáá° áá ááá á á¨á°áá¨á áĽááŤááá˘
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];
};
á¨áŚáŞááá áá á ááŤá˝ áľáá áááá ááá ááá ááá¨ááἠá¨áááśáš SHA256 hash áĽá
á áá áĽáá°áá áĽááľáłááłáá áá
á á á áá áá á¨á˘áá´á á¤á á°ááĽááá˘
áá° ááá°áá ááááľáś áĽáááľá˘ áśáľáľ ááá áŽá˝á áŤáá áá-
typedef struct IBB_MANIFEST
{
ACBP Acbp; // Boot policies
IBBS Ibbs; // IBB description
IBB_DESCRIPTORS[];
PMSG Pmsg; // IBBM signature
};
á¨ááááŞáŤá á¨á°áá°á áááá˝á áááá-
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
};
ááá°áá ᨠIBB SHA256 áá˝ áĽá á¨IBBá áááľ á¨ááááš ááááá˝ áĽááľ (áááľá áá˝ á¨áá áĽáá°áá°á) áááá˘
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;
};
ᨠIBB ááááá˝ áá áá ááá á á ááľ á á ááľ áá¨á°áá. áááłá¸á á¨áá¨á°áá á áá¸áľ á ááá˘
typedef struct IBB_DESCRIPTOR
{
unsigned long : 32;
unsigned long BaseAddress;
unsigned long Size;
};
ááá ááᥠáĽáŤááłááą ááá á¨IBB ááŤá á áľáŤáť/áá á áááᢠáľááá á áĽááá ááá ááááá˝ (á áŤáłá¸á ááááá˝ á á°á á°á¨á°á) á¨á°á áááľ á¨áĽááŽá˝ áľáľáľá IBB áá. áĽá áĽáá° á ááľ á°áἠᣠIBB á¨ááá ᨠSEC áĽá ᨠPEI á°á¨ááá˝ áááá˝ áĽáá¨áľ ááá˘
ááá°áá á áá¸áŁáŤá ᨠIBB á ááŁá áááá á áŤá ááá á (á¨ááááŞáŤá á áá¸áŁáŤá á SHA256 áá˝ á¨á°á¨ááá ) áĽá á¨áá á áá¸áŁáŤá ááá áŤá áááĄ-
typedef struct PMSG
{
char Tag[8]; // â__PMSG__â
unsigned char : 8; // 10h
BG_RSA_ENTRY IbbKey;
};
áľááá
ᨠUEFI áŁáŽáľ á áááá á¨áááአá ááľ áĽááłá ááŽá°á°áŠ ACM á áŤáľááłá ᣠáá
á á¨áááá˝á áááľ á SEC áĽá PEI á°á¨á áŽáľ áľááááááľ áŤá¨áááŁá ᢠá ááá á ááŽá°á°áŠ á¨á¤á˛á¤á ááĽáś á RESET áŹáá°á á áŠá ááááłááłá áĽá áŁáŽáľ (BIOS) ááľáŹáľ ááááŤáá˘
á¨PEI á¨á°á¨ááá ááááá ááŞáá áŁáŽáľ (DXE áŽáľ) á¨ááŤá¨ááἠááá ááŤá á áá áľá˘ áá ááá á áľááľá á IBV (Independent BIOS Vendor) ááá á á˛áľá°á á á áŤá˘á áĽá¨á°ááá ááᢠááááŤáąá á¨ááᎠáĽá áááŁááľ á˛áľá°áá˝ áĽáť áá¸á á áĽáá˝á á¨ááááľ áĽá á¨á˘áá´á á˘á áľáá áľááá¸á á¨áĽááá á˛áľá°áá˝ á¨ááŁáá áŽáľ áĽááľáĽá˘
UEFI áŁáŽáľ ááąá LenovoVerifiedBootPei
á Lenovo áááłáŁ á Lenovo á¨á°á°áŤá LenovoVerifiedBootPei {B9F2AC77-54C7-4075-B42E-C36325A9468D} ááá áá á°ááá˘
áľáŤá áDXE (á GUID) á¨áá˝ á á¨á´áá áááá áĽá 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 áŁáŽáľ ááąá BootGuardPei
á áááŁááľ áááłáŁ á á¤á¤áá á á¨á°áááŁá BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066} ááá áá á°ááᣠáĽá áľááá á ááááá AMI áŁáŽáľ ᨠIntel BG áľáá áá á áá˘
á¨á á áŤáŠ áľáá°-ááá á á°áá°á á°á¨á á¨á°áᨠáá ᣠáá áá° á°ááłáłáááľ ááááłá-
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;
}
á¨ááłá¨á á¨áá˝ á áá á¨áĽ {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} á¨áá¨á°áá á áá¸áľ á ááá˘
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
áľá á˘áá´á áĄáľ á áŁá á á˛áľ á á áŤá á á áá ááá ááááŽá ááá´áá¸á - ASRock J4205-IT áá áľáá°ááá áľá á˘áá´á áĄáľ á áŁá á á áአáĽáááááá˘
ááá áĽááłá áá áĽáľá á áśá˛áá˝ ááľáĽ áĽáť áĽá á áá á¨ááá á˘ááá (á áłá˛áľ áľáááśá˝ á¨áŤá˘ ááá ááŽá°á°á ááááŽá ááá´áá¸á áá á˘áá´á áĄáľ á áŁá 1.x áá ááá¸áá á˘ááĽáá) á Intel SoCs áá áá°áá°á¨áą á¨ááŁáŞáŤ áľáááśá˝ á á˛áľ á¨áľá-á áá á ááŤá áá°áľ áľáá ááááľ á áá áŁáá á á°á¨áŁá áłááˇáᢠáááŚá˝ áááłá:
- áŁáŽáľ áĽá á˘áá´á ME áááá˝ (ááá áááááľ Intel TXE, áĽáá° Intel SoC áááśá˝) á áá á áᾠᨠIFWI ááá áá¸á;
- ááá áĽááłá á˘áá´á á˘á á ááľá¨áŠ áá á¨áá á˘ááá áĽáá° FITᣠKEYMᣠIBBM áŤá ááá áŽá˝ á ááá˝ áá á°á¨ áľááľáł ááľáĽ á áá°áááá˘
- ᨠTXE áĽá ISH áŽáŽá˝ (x86) á á°á¨á᪠áśáľá°áá áŽá (áĽáá°áá ARC, á áááŤá˝á áá) áá° áşáá´áľ - PMC (á¨ááá á áľá°áłá°á áááŁá áŞáŤ) á°á¨ááŻá, á¨ááá áááľ áľáááľá áĽá á¨á áááá ááľáľáá á¨áá¨ááἠáá á¨á°áŤáŤá.
á¨á á˛áą IFWI ááá áááľ á¨áá¨á°ááľ áááá˝ áľáĽáľáĽ ááá˘
á áľáá
áľá
ááááŤ
0000 2000 á¸
á áá ááŁáŞ
á ááłááľ á¨ááłáŞáŤ áľáááľ áá
á¨áľáŁ á á á
áŤá˘á á¨á°áá¨á
0000 6000 á¸
á áá˘á˘á
Intel TXE á¨á˝á áŽáľ ááá, x86, á˘áá´á á¨á°áá¨á
0001 0000 á¸
PMCP
á¨á˝á áľááá áŽáľ ááá Intel PMC, ARC, á Intel á¨á°áá¨á
0002 0000 á¸
FTPR
Intel TXE á¨á˝á áŽáľ ááá, x86, á˘áá´á á¨á°áá¨á
0007B000h
UCOD
á Intel á¨á°áá¨á á¨á˛áአáááᎠáŽáľ ááááá˝
0008 0000 á¸
IBBP
UEFI áŁáŽáľáŁ SEC/PEI á°á¨ááá˝áŁ x86ᣠáťá á°ááŤáááá
0021 8000 á¸
á á.á¤áľ.áŹ.
ᨠIntel ISH firmware áŽáľ ááá x86ᣠá á á
áŤá˘á á¨á°áá¨á
0025 8000 á¸
á¤áá¤áá˛á
Intel TXE á¨á˝á áŽáľ ááá, x86, á˘áá´á á¨á°áá¨á
0036 1000 á¸
IUNP
áŤááłáá
0038 1000 á¸
áŚá˘á
UEFI áŁáŽáľáŁ DXE á°á¨áᣠx86ᣠáŤáá°áá¨á
á TXE firmware áľáá°á áá áľáŁ á¨áłáá ááľááá á ááᣠTXE á¨á áľáŤáť áŚáłáá áá°á¨áłá áááśá˝ áá˛áአ(FITᣠACMᣠRESET vector ...) áĽáľáŞáŤááá áľá¨áľ ááŽá°á°áŠá á áá áááł áĽáá°ááŤáá ááá˝ ááᢠá¨áá á á áá TXE áá áá ááἠá SRAM ááľáĽ áŤáľááá áá, á¨á፠á áá ááŽá°á°áŠá áááá áĽá፠áľá¨áľ áŤáááŁá áĽá á¨RESET "ááááá".
á rootkits áĽá á áá
á°á á, á áá áá° "áľáŠáľ" áĽáááľ. á á ááľ áá áľ á áĽá á˛áľá°áὠᨠSPI ááá˝ ááááὠᨠSPI ááá˝ áá᪠áááá˝á á¨ááľá¨áľ áááľ áĽááłáá¸á á°áá°áá áłá áľááá ááá á¨áá áá á°á¨ áľááľáł á°á áááá˝ áááááá ááá ááá áĽá ááá ἠáá˝ááᢠáĽáááŤá˘ á ááŤá˝.
ᨠMEinfo áááá፠(á¨á˘áá´á STK) áá á¨á°ááá¨áľá á áá á áĽááá áľáááśá˝ áá áŤáá á¨ááá¨áť áááł á áá°ááá ᣠáľáááá ᨠáşáá´áľ ááá (á¤áá¤áá¤á) á áááłáá áááł ááľáĽ áááˇáᢠá áᣠá˘áá´á á˘á á áĽáá°áá á áááľ ááłáŽá˝ áá á áááá ááá á áá°á°áá¨ááá˘
áĽá¨á°ááááá áŤááá áľááá¨á°ááľ áľáááśá˝ áá (áľá á˘áá´á á˘á áĽá á á áááš ááľáĽ á áá áá áĽáá°ááĽáŤáŤ ᣠáľá Haswell ááŽá°á°á ááááŽá ááá´áá¸á áĽá á¨á፠á áá áľááá áľáááśá˝ áĽáááááŤáá)
- ááá á¨áááŁááľ áááśá˝;
- ááá ᨠMSI áááśá˝;
- 21 Lenovo áááśá áá´áá˝ áĽá 4 Lenovo á áááá áá´áá˝.
á áĽááἠáááąá ááĽááá á á áŤá˘áá˝ áĽáá˛áá áá˘áá´á á áłááááá˘
á á ááá˝ á¨á°á¨á°áá ᨠáĽáť ááᢠLenovoá˝ááŠá á¨á°áá áá áĽá
áááŁááľ áľá á°áááááą áá¨á á¨á°áá á áááľááᣠáá á ááá ááአá áľá°áŤá¨áľ á áá°áĄáá˘
áá áááááľ MSI á¨áá ááá á¨ááá ááá áááá áŁáá¨áĽáá áĽáŤá áá á áá ááá (á¨á°áá°á ᨠá¨á°á áááľ ááá áááá)ᢠáĽááą "á¨áááľáá á ááŤážá˝ áá¸á áĽá á¨ááá áááá˝á á áŤáááąá" áĽááá.
áá á¨á áá áá° ááĽáĄá˘ áááááš áŁáá°ááḠáááł ááľáĽ áľáááአá°á ááá (ááá á áĽáá) áĽáŤáąá ááŽááŤá ááľá¨á áá˝áá (á áŁá á áľá¸ááŞá
1. áá° áááśááľ áŚááŹá˛áá á˛áľá°á ááľááłáľ (á á á ááá á¨áá á áłá˝ á¨á°ááášáľ áĽááááá˝á á¨ááááľ áľá áá°á¨á áá˝áá ᣠáá°áááá áľááá° ááá ᨠIntel STK á ááá áŤááá)ᢠá¨MEinfo áááááŤá á áá áá á áá áľáááľ áá áŤááľ ááá á ááŽááŤá áŤáá°ááá áááá¸áá áŤá¨áááĄá˘
2. á¨ááá˝ ááŽááŤááá ááŁáŞáŤá á áá áá á¨ááá˝ áá
á°á¨ áľááľáłá áááľ áŤááĽáĄá˘
3. áááááá ᨠUEFI BIOS á ááľááľ ááłáŞáŤ á áá áá á¨á°áá á áá ááľá áááṠᣠá áľááá áááŚá˝á áŤáľáá (áááłá rootkit áá°ááĽáŠ) ᣠá ME ááá ááľáĽ áŤááľá á¨KEYM áĽá IBBM ááá
áŽá˝ ááá አ/ áŤááľáá˘
ᨠRSA ááá á¨á
áἠááá á áĽáá áá áááś ááłáŤá ᣠᨠhash áá˝ á¨á°áá¨á á¨á˘áá´á á˘á áá
á áá áá° áşáá´áľ ááá áááááá˘
4. á¨ááá˝ ááľá ááłáŞáŤá á áá áá á á˛áľ á¨á˝ááá ááľá áááᥠ(á¨Intel BG áá á á áááááľ)á˘
5. á¨ááá˝ ááŽááŤááá ááłáŞáŤá á áá áá á á˛áľ ááľá áááᣠME ááá á áá á¨á˘áá´á á˘á áá
á áĽáá°áŤá MEinfo á áá áá áŤá¨áááĄá˘
6. á¨ááá¨áť áááłá áááááľ á¨ááá˝ ááŽááŤááá ááŁáŞáŤá áá ááá˘
7. áľáááą áĽáá°áá ááááŤáᣠá¨á፠á ááᣠMEinfoá á áá ááᣠFPFs á áá ááŽááŤá ááŤáá¸áá áá¨ááἠáá˝ááá˘
áĽááá
áľáááśá˝ áááááá á áá
áľáááľ áá Intel BG á á áá. áľáááąá ááááá áľ á¨áááťá ááááᣠáá
á áááľáĄ-
- á áá áľáááľ áá ᨠUEFI BIOS á áááá á¨áá˝áá á¨áľá ááá á¨áá ááá áŁáá¤áľ áĽáť áá (áááľá á˘áá´á á˘áá á¨ááá)á˘
- áááá firmware áá°áá áľáááľ á¨ááṠᣠáááłá ᣠááŽááŤááá á áá áá ᣠáĽáą áĽááłá á áá áŤá (á¨áá¨áá፠áľá á°áľ á áá¨á°áľá áľ áá á¨ááľáá¸á፠ááᲠáá¤áľ)á˘
- áĽáá˛á ááááąá UEFI BIOS áááľáááľ áşáá´áľá á ááŽááŤá á á°ááá FPFs á âááá â áá°áŤáľ áŤáľáááááłá (áááľá á ááŞá áá áá° á˘áááŤáŹáľ áá¸áŤ áŁá˘áŤ áŤáá áşáá´áľ áĽáá°áá áá¸áĽ ááá ááááŚááľá áĽáť ââáá°áŠ) ).
áĽáá°áá áŤá rootkit áá ááľá¨á áĽáá°áá˝á ááá¨áłáľ áŽáľáá á UEFI áŁáŽáľ á áŤáŁá˘ ááľáĽ áááľááá áá áĽáá°ááŤáľá˝á ááááá áŤáľáááááłáᢠá áá ᣠá á áááŁáŁáŞá á áŁá áአá ááá áááł - á¤áľá¤áá¤áᢠáĽáá˛á ááááą rootkit á¨áá¨á°ááľá ááĽá¨áśá˝ ááá¨á áá˝áá:
- á¨áľááá° áááá áá á áľáአáááá (ᨠSMI ááá¨áĽá á áááá¨áľ áá°áąá áááá áá˝áá, áá á á á°ááľ ááŁáŞ á¨áááł áá);
- á á¤áľá¤áá¤á áááł ááľáĽ á¨ááá ááá áĽá áá˝ á ááľ (ᨠRAM áĽá á¨áááľáá ááĽáśá˝ áááśá˝ áá ááłá¨áť ᣠá¨áľááá° áááá ááľá˘á);
- á á¤áľá¤áá¤á áááł á˛ááá ᨠrootkit áŽáľ áááľá á áĽá á˛ááŞááľ áá°á¨á áá˝ááᢠá á¤áľá¤áá¤á áááł áĽáť á¨ááá ááááá ááἠáĽáá° ááľá ፠ááá ááŤáááá áá˝ááᢠáááłáᣠá SMRAM ááľáĽ áŤá á¨á áľáŤáťáá˝ áľáĽáľáĽ áá˝á˘ áá áá ááá áááááľ áá° SMM áááŁáľ áŤáľáááááłáᢠáĽá áá á áááľ ááááśá˝ áá¨ááá áá˝áá. á á¤áľá¤áá¤á áŽáľ ááľáĽ RCE á áááá áĽá áá ááá áľ ááá á¨áŤáľáá á¨á¤áľá¤áá¤á ááá áá° áŁáŽáľ áŤááᾠᣠáá á¨áááťá áá ᣠááááŤáąá áĄáľ á áŁáá áľááááá˘
áľááá áá á°áááááľ á áĽá á¨áá¨á°ááľá áĽáá˛áŤá°áá áŤáľá˝áááá˘
- á áľáááą ááľáĽ á¨áááłáá ááá á¨á°á°á á ᣠá¨áááááá rootkit ááá á áŁ
- áŽáľáá á Intel SoC ááľáĽ áŤááľ áşáá´áľ áŽááśá˝ á á ááą áá áŤáľááᾠᣠáááľá ᣠá Intel ISH (ááľáá á á áá áľ áááá¨áą)á˘
ááá áĽááłá ᨠIntel ISH áááľ áľáááľ á á
á áá á áá°áá¨áá¨á ᣠá Intel ME áá á áľá°áłá˝ á¨áĽááľ áŹáá°á áááľááá˘
áááśá˝
- áĽááą á¨Intel Boot Guard á´áááá áĽáá´áľ áĽáá°áá°áŤ á´áááŤá ááá፠á°áĽáˇáᢠá á˘áá´á á°á áááľ ááľáĽ á áľáĽá áá´á ááľáĽ áááľ ááľáĽáŽá˝á ááááľá˘
- á áľáááą ááľáĽ á¨áááááá rootkit áááá á á¨ááŤáľá˝á á¨áĽááľ áááł ááá§áá˘
- áááá á¨á˘áá´á ááŽá°á°áŽá˝ áŁáŽáľ (BIOS) á¨áááአá ááľ áĽá á¨áŁáá¤áľááľ áŽáľá áá°áá á áĽáá°áá˝á á áá°ááá˘
- á¨á˘áá´á 64 á ááá´áá¸á áŤáá¸á ááľá¨áŽá˝ áá áśááľááŽá˝á áááľáŹáľ á°áľáá áĽá¨áá ááĽá°ááᥠá¨áááľáá áá¨áááŤáŁ ááĽáŤá¸á áĽá¨á¨áᨠá¨áᣠá¨áŁáá¤áľááľ á´áááá áĽá áááľ áľáááśá˝ (á áśá˛ áşáá´áľ ááľáĽ áśáľáľ áŽáŽá˝áĄ x86 MEᣠx86 ISH áĽá ARC PMC)á˘
á ááłáá˝
áá áĽáá á¨ááá¨áť áááłá áááľ á¨áá°á áťáŽá˝ á áĽááá áááľ ááááľ á ááŁá¸áᢠáĽáľáŤáá áľá¨áľ ááááťá¸áá áĽáť áĽá¨áá áá áĽá á á˛áą á¨áŤá˘ áá áľáááśá˝ áá áá áŤáłáŤá.
á°á áááá˝ á¨ááá˝ ááŽááŤááá ááłáŞáŤá ᨠ-closemnf áá á áááľ á˘áá´á á˘áá á áľáááłá¸á (á á°áááá á°áááááľ á¨á°ááą) áá°áá¨á áá˝ááᢠá ááááŞáŤ ᣠ(MEinfoá á áá áá) á ME ááá ááľáĽ áŤáá á¨Intel BG áá
á áá
áá á´áááá á á¤ááá¤á ááľáĽ á¨ááŽááŤá á áá á áľááá áááĽááľ á¨ááŤáľá˝á áááá áá¨ááἠá ááĽááľá˘
ááá: hab.com