孫 亮,陳小春,王 冠,鄭樹劍
(1.中電科技(北京)有限公司,北京 100083;2.北京工業大學,北京100124)
基于UEFI固件的攻擊驗證技術研究*
孫 亮1,陳小春1,王 冠2,鄭樹劍1
(1.中電科技(北京)有限公司,北京 100083;2.北京工業大學,北京100124)
隨著信息技術飛速發展,木馬病毒和黑客攻擊也不斷花樣翻新。目前,已經出現了以固件木馬為手段,對路由器、防火墻、服務器進行滲透,對我國信息安全造成現實威脅。固件木馬的特點是先于操作系統啟動,不易被殺毒軟件發現和清除。對固件木馬攻擊方式進行研究,設計和實現了基于UEFI固件的攻擊驗證原型系統,模擬真實的固件木馬運行環境,驗證固件木馬對計算機的攻擊效果。
UEFI;固件木馬;攻擊驗證
隨著信息技術的飛速發展,以移動計算、云計算、物聯網為代表的互聯網產業呈現出空前繁榮的景象。但是,危害信息安全的事件也隨之不斷發生。從近期披露的安全事件和資料來看,終端滲透和攻擊的技術也一直在更新和變化。目前,已經出現了通過固件木馬等工具,針對特定網絡、特定終端進行攻擊和滲透的專業化組織。可以看出,僅僅依靠操作系統中運行的殺毒軟件或防火墻,已經不能滿足當前終端安全和網絡安全的需要[1]。
固件是計算機中不可缺少的重要部件,是連接計算機基礎硬件和系統軟件的橋梁。基本輸入輸出系統(Basic Input Output System,BIOS)是計算機上最重要的固件之一。在開機上電后,固件會對CPU中的寄存器、計時芯片、可編程中斷器及DMA控制器的狀態檢查,同時初始化設置主板芯片組、動態內存、顯卡及相關外圍的寄存器。在以上設備正常運行的前提下,固件將負責引導操作系統。
從開機上電到操作系統加載的過程中,固件擁有著系統極高權限。一旦固件中存在安全漏洞或被植入木馬,將會為計算機帶來嚴重的威脅。
通過在固件中增加后門程序,如使用系統管理模式(System Management Modal,SMM),可在操作系統無法察覺的情況下,隱蔽地獲取計算機數據、破壞系統正常運行。這些后門程序難以被操作系統下的殺毒軟件探測和刪除[2]。美國商貿部專門發布了sp800-147、sp800-147b、sp800-155 三個指南,用于指導對 BIOS的安全保護。美國國防部也專門就此發布備忘錄,要求美軍計算機采購時,固件需要滿足相應的保護標準。
因此,本文對固件木馬的特征進行了分析,設計了攻擊驗證的原型系統,并對關鍵技術進行了驗證。該系統支持X86計算機平臺和國產計算機平臺,支持擴展相應的外設,包括USB接口/PCI-E等接口的可信卡,能夠在此基礎上進行進一步擴展,檢測和發現固件的安全漏洞,并開發相應的補丁。
固件在形態上類似于硬件,是“固化”封裝在芯片中、安裝在電路板上的器件;固件在功能上又屬于軟件,固件芯片內是機器語言編寫的控制程序。這種“二象性”使得固件平滑地完成了將機器的控制權由處理器硬件轉交給操作系統的任務。固件的二象性構成了計算機軟硬件的重要橋梁,但也對計算機安全構成了潛在的威脅。
一方面,固件的物理形式是芯片,可以安裝在計算機主板、硬盤、顯卡等硬件設備中[3]。如果把固件木馬以非常隱蔽的方式固化到計算機主板或擴展板卡上的芯片中,并在特定條件下激活,將會立即執行滲透攻擊和情報收集工作,用戶在日常使用計算機的過程中卻很難察覺。
另一方面,固件是運行在計算機底層的軟件,是先于操作系統啟動而運行的。因此,固件中的惡意代碼是無法被殺毒軟件和安全工具發現的。固件的運行過程是具有極高權限,能夠對硬件、文件系統、操作系統和特定軟件進行篡改和破壞,具有極強的攻擊能力。
固件的運行過程分為四個階段,包括硬件初始化階段、驅動服務執行階段、啟動設備選擇階段和操作系統運行階段:
執行由匯編語言代碼實現的固件組件,主要實現對硬件平臺和固件初始啟動代碼進行安全驗證,初始化系統緩存,為后續的硬件初始化工作準備必要的存儲空間;同時,初始化處理器、內存、芯片組和其他芯片及設備。
硬件初始化階段是固件首先運行的階段,是保證計算機硬件和固件完整可信的基石。如果固件在這個階段中運行了惡意代碼,將能夠破壞這個階段對硬件和固件的安全校驗,破壞整個計算機的安全運行環境。
執行設備驅動程序,安裝及初始化與設備、總線、服務等相關的協議。驅動服務執行階段為后續操作提供協議/服務接口,提供給固件自身及操作系統和應用軟件調用。
驅動服務執行階段固件運行的核心階段,固件會加載硬件驅動和應用程序。如果計算機主機中接入了包含固件木馬模塊的硬件,其木馬模塊將在這個階段在固件層進行加載。在該階段中,固件能夠加載和執行文件系統驅動,對硬盤分區和文件系統進行識別和分析,能夠將操作系統中的木馬植入操作系統,并實現隨操作系統自啟動[4]。
根據系統中預先設置的配置規則或者用戶本次的選擇,尋找承載操作系統的設備(如USB設備、硬盤、光盤、網絡等)并加載操作系統。
啟動設備選擇階段提供了UEFI SHELL運行環境、UEFI驅動及操作系統加載的功能。因此,也存在操作系統加載過程中被劫持的攻擊漏洞。
固件將機器的控制權正式移交給操作系統。此時,仍然有部分固件服務/協議可用。
在該階段中,如果固件中存在可以執行的惡意代碼,操作系統中的殺毒軟件將無法覺察。
通過對固件運行過程分析可以看出,固件安全首先要保證在硬件初始化階段,對固件進行完整性驗證;其次,需要在驅動服務執行階段對加載的硬件和固件驅動進行驗證,禁止加載未經確認的固件驅動。這兩種安全措施能夠在一定程度上防止固件木馬的加載和執行。
固件層的木馬比操作系統的木馬更具有破壞性,更加難以發現和清除。CIH病毒是第一款對物理設備進行破壞的病毒,其在v1.2版本中加入了破壞硬盤和BIOS的代碼。CIH在1999年4月26日全球大規模爆發,導致全球近六千萬臺電腦遭到破壞,甚至無法啟動[5]。
文獻[6]提出了針對智能電源芯片的固件進行攻擊、重新編寫控制器程序,可以屏蔽電池過充、過熱等報警信號,并可導致電池爆炸等嚴重后果。
早期的BIOS采用匯編語言編寫,并且各大廠商對BIOS源碼進行嚴格的保密。因此,對固件進行攻擊的難度比較高。
John Heasman在2006年黑帽大會中,提出了利用高級電源管理接口(Advanced Configuration and Power Interface,ACPI),使用ASL(ACPI Source Language)語言,實現在固件中部署Rootkit惡意代碼[7]。該方式的特點是使用了ACPI的專用語言ASL,簡化了通過匯編語言編寫病毒的難度。其特點是硬盤上沒有痕跡,重裝系統和更換硬盤仍然能夠存在,難以發現,難以清除。在2007年黑帽大會上,John Heasman又提出基于主板PCI板卡上的擴展固件進行Rootkit的攻擊[8]。該方法首先在PCI板卡固件中植入惡意代碼。而后,在BIOS運行時,這些惡意代碼會從PCI板卡中讀取和自動加載。
文獻[9]提出了通過固件中的系統管理模式(System Management Mode,SMM)中隱藏Rootkit惡意代碼。SMM是特殊的處理器操作模式,可以執行特權指令和IO操作。該模式只能被固件調用,并且對操作系統完全透明。
目前,基于固件的攻擊不再作為單一的攻擊手段,而是作為多層次復合攻擊的基礎工具。如BMW病毒,能夠感染BIOS及MBR,在通過Windows系統加載惡意代碼。用戶即使重裝系統、格式化硬盤甚至更換硬盤都無法徹底清除病毒[10]。
同時,固件的攻擊已經不止對主板BIOS進行攻擊,而且包括了對外接設備的固件進行破壞。如近期出現的方程式病毒[11],已經開始針對硬盤中的固件進行攻擊,能夠繞過操作系統的監控,直接對硬盤數據進行修改。
文獻[12]提出了對顯卡固件進行攻擊的方法。該木馬能夠對用戶的鍵盤敲擊進行記錄,并將信息存儲在GPU中。這種針對外設板卡的攻擊,實現了跨平臺隱藏rootkit的效果,包括Windows、Linux、Mac OS 等操作系統。
可以看出,與操作系統攻擊和網絡攻擊不同,固件攻擊的的主要特點包括:
(1)固件木馬難以清除。固件木馬會駐留在被攻擊終端的主板或板卡上,通過重裝系統、硬盤格式化或更換硬盤無法清除固件木馬。
(2)固件木馬可對硬件直接進行攻擊。固件具有對計算機底層硬件進行訪問和控制的權限,在固件中植入的惡意代碼可在開機上電時,通過提升超出門限的電壓或配置破壞性的參數,對硬件進行破壞性配置,造成硬件損壞、無法開機,甚至導致電池爆炸等嚴重后果。
(3)操作系統難以發現固件層攻擊。固件中的惡意代碼在操作系統運行之前執行,往往難以被殺毒軟件發現。此外,操作系統也難以發現運行在系統管理模式的固件惡意代碼。
(4)固件木馬可以對操作系統進行直接攻擊。在固件執行過程中,可以對硬盤分區、文件系統進行解析,對操作系統中的文件進行復制、刪除、修改。也可以通過固件木馬,將特定的攻擊載荷寫入操作系統,并隨操作系統進行自啟動[13]。
可以看出,與操作系統攻擊和網絡不同,固件木馬是駐留在主板固件芯片之中,攻擊方式具有跨平臺特性,操作系統難以發現其攻擊行為,重裝系統甚至更換硬盤無法清除。隨著攻擊方式的多樣化、復合化、復雜化,固件木馬作為專用于潛伏隱藏的滲透工具進行應用。
固件木馬在操作系統下難以發現和清除。因此,固件木馬攻擊驗證系統需要首先提供固件木馬可以運行的硬件及軟件環境,以激活固件木馬的攻擊動作,抓取相應的固件層執行過程和運行狀態,才能深入了解固件木馬的攻擊特征,找到應對策略。
固件攻擊的主要方式包括以下三種:
(1)直接針對固件進行攻擊,如對固件或某些模塊進行篡改。
(2)通過外設板卡進行攻擊,如在顯卡、硬盤中植入惡意代碼。
(3)通過固件對操作系統進行攻擊,如在固件運行階段加載文件系統,對硬盤中的文件進行篡改。
因此,固件攻擊驗證系統需要對固件進行讀取和解析,判斷固件鏡像和固件模塊是否正確。其次,需要對固件加載外設板卡驅動和其他驅動模塊的執行過程進行記錄。再次,需要記錄固件層訪問操作系統的執行過程。
圖1展示了固件攻擊驗證系統的邏輯架構,包括硬件層、固件層、操作系統層和服務層四個層面:
(1)硬件層。由于固件與硬件平臺是緊密相關的,每一款硬件平臺都需對應特定的固件。因此,固件攻擊驗證系統需要提供多種平臺的基礎硬件支持,包括X86平臺、國產處理器平臺、可信密碼模塊和其他外設。這些外設能夠根據不同的需求進行相應的組合和定制,能夠模擬局域網或單臺終端的硬件實驗環境。

圖1 固件攻擊驗證系統邏輯架構
(2)固件層。為支持對固件進行攻擊驗證,需要將固件劃分為三個部分,一是固件基礎代碼,二是固件驅動模塊,三是固件模擬攻擊載荷。
固件基礎代碼包括對處理器和芯片組初始化、操作系統引導等基本功能。同時,該部分還包括固件狀態采集模塊,用于記錄固件運行過程中加載的硬件信息、固件驅動模塊的狀態信息及特征值。狀態采集模塊的目的是在固件層放置一個探針,對固件運行的過程進行記錄。
固件驅動模塊中包括了固件加載的所有驅動模塊,包括以OPROM方式加載的固件驅動。在固件驅動模塊中可以加載某些預設惡意代碼,用于模擬固件層漏洞攻擊。攻擊方式包括對硬件平臺芯片的破壞性參數配置,對文件系統的復制傳輸等。
固件攻擊載荷是固件層中預留的模擬攻擊的惡意代碼。固件木馬在執行過程中會識別硬盤分區和文件系統后,將惡意代碼寫入操作系統,評估攻擊效果。
(3)操作系統層。操作系統層中包括了固件攻擊驗證信息采集代理、固件鏡像和固件刷寫工具。
固件攻擊驗證信息配合固件中的固件狀態采集模塊,將固件文件、固件運行狀態等信息通過網絡發送到后臺服務端進行分析。
固件刷寫工具用于將固件鏡像刷入主板固件芯片。固件鏡像包括了可用于攻擊驗證的多種固件鏡像。在固件運行過程中,會將木馬和病毒寫入操作系統并執行自啟動。
(4)服務層。服務層中包括固件代碼樣本庫,固件攻擊檢測展示、固件攻擊檢測策略配置、固件驗證工具庫、固件特征值比對和日志記錄等功能模塊。
固件代碼樣本庫包括了已經采集的并且已授權的固件代碼特征值,用于對固件樣本進行驗證。
固件攻擊檢測展示用于對攻擊效果和檢測結果進行展示。攻擊檢測策略配置用于配置固件中的安全策略,如是否采用攻擊載荷,選用何種攻擊載荷等。
攻擊驗證工具庫用于存儲和提供固件攻擊工具。用戶可以通過配置界面,選擇固件攻擊方式和相應的工具。
固件特征值比對模塊用于對信息采集模塊獲取到的信息進行特征值比對。
日志記錄功能模塊用于對固件攻擊檢測的過程進行記錄,用于后續的固件漏洞效果分析。
固件攻擊驗證系統包括攻擊驗證靶機、攻擊實驗終端和攻擊驗證服務器三類終端,其網絡拓撲如圖2所示。

圖2 固件攻擊驗證系統拓撲
(1)固件攻擊驗證靶機。該類終端是可根據攻擊場景需求定制的X86及國產計算機主機。在靶機中已經安裝了固件信息采集代理和定制的固件。該類終端根據不同的實驗需求,可配插相應的板卡。
(2)固件攻擊驗證服務器。該類終端的作用包括兩個,一是用于對固件攻擊的效果進行跟蹤記錄,二是用于對靶機的固件進行安全檢測。
(3)固件攻擊驗證終端。該類終端主要部署了支持X86平臺和國產處理器平臺的固件開發工具和調試環境。開發和調試環境中集成了編譯工具、調試工具及擴展設備。
固件攻擊驗證系統能夠模擬通過固件漏洞,對多計算機終端進行遠程攻擊的場景。
固件攻擊驗證系統的工作原理如圖3所示,其工作過程主要包括設計階段、準備階段、植入階段、執行階段和評估階段共五個階段。
(1)設計階段。用戶首先需要登錄固件攻擊驗證服務器,根據攻擊驗證需求,設置攻擊策略,并選擇相應的木馬工具,包括固件刷新工具、固件木馬、工具載荷完成固件攻擊策略、流程和工具的設置后,將自動生成可執行的攻擊驗證腳本。
(2)準備階段。用戶在設計階段完成后,會將攻擊驗證腳本推送到固件攻擊終端。固件攻擊終端將會根據攻擊驗證腳本配置軟件運行環境、下載木馬工具,并按照腳本中的攻擊策略進行執行。

圖3 固件攻擊驗證系工作原理
(3)植入階段。固件刷新工具、木馬工具和攻擊載荷首先需要推送到固件攻擊靶機,并進行植入。植入的方法包括固件鏡像完全更新、固件攻擊載荷部分更新、固件木馬外設板卡接入三種方法。
(4)執行階段。固件刷新工具將固件木馬、攻擊載荷刷入固件。在計算機重啟過程中,固件木馬模塊將被加載和執行。固件木馬能夠識別硬盤、分區和文件系統,可以將攻擊載荷寫入操作系統,并隨操作系統自啟動。
(5)評估階段。在固件木馬執行過程中,固件層采集模塊還將對固件運行過程的狀態進行記錄,并將狀態記錄傳入操作系統,并最終傳輸到服務器中進行狀態記錄和分析,最終生成評估報告。
在對固件木馬攻擊驗證系統進行分析和設計的基礎上,已經研發了原型系統對攻擊效果進行驗證。該系統主要包括三個部分,包括固件模擬攻擊模塊、攻擊驗證服務器、攻擊驗證客戶端。
1)固件模擬攻擊模塊。
通過對固件將空間劃分為三個部分,一是固件核心鏡像,用于完成固件的基本功能;二是固件木馬模塊,用于完成將模擬植入的固件攻擊載荷回寫操作系統;三是固件攻擊模擬載荷,用于模擬要回寫操作系統的攻擊軟件。固件空間劃分如圖4所示。

圖4 固件空間劃分示意
2)攻擊驗證服務器。
攻擊驗證服務器用于選擇固件攻擊工具,定制固件攻擊策略,展示固件攻擊效果。
3)攻擊驗證客戶端。
統計驗證客戶端用于獲取被攻擊計算機信息采集和回傳給攻擊驗證服務器,用于展示攻擊效果。
圖5展示了固件攻擊驗證系統的攻擊選項配置界面,通過該配置界面,能夠定制需要植入的木馬和預定的攻擊路徑。圖6展示了該原型系統能夠對固件的關鍵信息進行驗證,并在信息異常時,進行記錄和提示。

圖5 固件攻擊驗證系攻擊選項界面

圖6 固件攻擊驗證系統攻擊效果
本文提出了基于UEFI固件的攻擊檢測技術,并設計和實現了以驗證固件木馬攻擊效果為目標的固件攻擊驗證系統。固件攻擊驗證系統能夠在上電開機和操作系統運行過程中,通過固件層和操作系統的狀態采集模塊對固件木馬的執行過程和狀態進行記錄;操作系統中的攻擊驗證客戶端還將對固件模塊進行讀取和解析;在服務器中還部署了固件樣本代碼庫,會將固件解析后的模塊特征值進行比對。
下一步,我們將在已有的基礎上繼續進行相應的研究,以該原型系統為基礎,對固件安全漏洞進行評估、檢測,并研究相應的防護機制。
[1] 池亞平,許盛偉,方勇.BIOS木馬機理分析與防護[J].計算機工程,2011,37(13):122-124.
[2] 唐文彬,祝躍飛,陳嘉勇.統一可擴展固件接口攻擊方法研究[J].計算機工程,2012,38(13):99-101.
[3] 張京生,韓勁松.硬盤固件病毒的工作原理及防治方法[J].北京信息科技大學學報:自然科學版:2013,28(01):42-45.
[4] 郭致昌,張平,龐建民等.基于行為特征的BIOS Rootkit檢測[J].計算機工程,2011,38(02):251-253.
[5] 李越,黃春雷.CIH病毒的分析與清除[J].計算機科學,2000,27(05):104-105.
[6] Charlie Miller.Battery Firmware Hacking:Inside the Innards of a Smart Battery[J].In Black Hat,2011.
[7] John Heasman.Implementing and Detecting an ACPI BIOS Rootkit[J].In Black Hat DC,2006.
[8] John Heasman.Implementing and Detecting an PCI Rootkit[J].In Black Hat DC,2007.
[9] Shawn Embleton and Sherri Sparks.SMM Rootkits:A New Breed of OS Independent Malware,Presented at BlackHat USA,Las Vegas,NV,USA,2008.
[10] BMW病毒感染量突破5萬遭全球殺毒廠商圍捕[J].電力信息化,2011,9(10):103.
[11] Equation:The Death Star of Malware Galaxy.http://securelist.com/blog/research/68750/equation -the death-starof-malware-galaxy/
[12] Vasiliadis G,Polychronakis M,Ioannidis S.GPU-Assisted Malware[J].International Journal of Information Security,2010:1-6.
[13] 楊培,吳灝,金然.BIOS安全防護技術研究[J].計算機工程與設計,2008,29(15):3840-3842.
VerificationTechnology based on UEFI Firmware Trojan
SUN Liang1,CHEN Xiao-chun1,WANG Guan2,ZHENG Shu-jian1
(1.ZD Technologies(Beijing)Co.,Ltd,Beijing 100083,China;2.Beijing University of Technology,Beijing 100124,China)
With the rapid development of information technology,various computer virus and hacking attacks emerge in an endless stream.At present,by means of fireware Trojans,the routers,firewalls,servers and other equipment are attacked and penetrated,thus causing great threat to the state information security.What is more,the firmware Trojan usually starts earlier than operating system,so it is not easy for virus-killing software to find and eliminate it.Firmware Trojan attack is studied in this paper and the prototype system based on UEFI firmware attack verification system is designed and implemented.Actual operating environment of firmware Trojan is simulated and the attack of firmware Trojan upon computers also verified.
UEFI;firmware Trojan;attack verification
TP309.5 [文獻標志碼]A [文章編號]1009-8054(2016)07-0089-05
2016-02-20
北京市教委科技項目:可信云計算安全體系及關鍵技術研究(No.007000546615020)
孫 亮(1980—),男,博士,工程師,主要研究方向為網絡安全、可信計算、固件;
陳小春(1980—),男,碩士,高工,主要研究方向為網絡安全、可信計算、固件;
王 冠(1968—),男,博士,副教授,主要研究方向為信息安全、可信計算、云計算;
鄭樹劍(1982—),男,碩士,工程師,主要研究方向為網絡安全、固件、操作系統內核。