压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

Hacking Team:攻擊向量之Bios Rootkit

攻擊向量(attack?vector)指的是黑客用來攻擊計算機或者網絡服務器的一種手段,攻擊向量能夠幫助黑客尋找系統可能存在的任何漏洞,包括人為因素,攻擊向量簡單理解就是網絡滲透攻擊的各種維度,如通過病毒,電子郵件,網頁,聊天室等配合社工欺騙方法來完成。

從泄露代碼來看,Hacking Team有自己完善一套攻擊向量,有許多維度,如Bios?Rootkit攻擊,ipa攻擊,java?applet掛馬,假文檔圖標欺騙,短信欺騙,光盤或U盤存儲介質攻擊。技術與非技術完美配合,來實現RCS遠程控制功能。

 

以下從Bios?Rootkit攻擊向量進行分析。

一、攻擊場景

想像類似著名電影《碟中諜》的場景。XX黑客組織為了入侵A機構的網絡系統,決定派遣一個臥底(wd)進入A機構。突破重重困難,最終wd以一名記 者身份得以采訪A機構領導,進入了領導的辦公室,談笑間,領導離開一會兒,wd立即警惕起來,盯緊領導的辦公桌的電腦,連忙掏出U盤,開機,進入 bios,種下Bios?Rootkit后門病毒,熟練連貫的操作。三分鐘的時間,神不知鬼不覺的,A機構網絡系統已經被從內部打開了一個缺口,而且是一 個檢測極困難的后門……

場景像拍電影,有點夸張。實際上并不能排除可能性,Bios?Rootkit通過物理的接觸,如通過U盤,進行感染。 這樣的場景可以延伸出來,或發生在電腦維修店、二手電腦、網吧、學校電腦室等。Bios?Rootkit是比較高水平的技術,檢測很困難。在泄露的源碼中,因此更多的人可以從這基礎上衍生更多的Bios?Rootkit病毒,降低了技術門檻。

二、Bios?Rootkit感染方式

HT內部泄露文檔介紹,Bios?Rootkit是通過U盤,進入UEFI?Shell進行感染。要求目標系統cup?Intel?i3/i5/i7(2,3,4代),bios?uefi。
Bios?Rootkit的感染方式,決定傳播廣度有限,但從網絡滲透來說,絕對是一個可靠的突破口。目前還沒資料證明Bios?Rootkit其它感染方式,但并不能排除可能性。

泄露的文檔資料:

三、示意圖

Bios?Rootkit有三個模塊:rkloader.mod,dropper.mod和ntfs.mod,攻擊示意圖如下:

在攻擊時,插入U盤,進行UEFI?Shell,Startup.nsh引導啟動chipsec.efi,然后chipsec.efi把三個.mod模塊寫到Bios?ROM上去,重啟電腦時,Bios?Rootkit就開始干活了。

四、Bios?Rootkit分析

1、UEFI結構

UEFI使用了模塊化設計,類似windows操作系統,UEFI?Image(UEFI實體)有EFI?Driver(驅動),EFI?Application(應用程序),os?Loader(操作系統引導程序),如下圖。

EFI?Driver和EFI?Application是FFS結構,安裝UDK(UEFI開發包),使用C語言,遵循接口,就可以開發EFI程序。
EFI程序開發必須要有.inf定義文件,定義應用名,guid,程序類型(應用或驅動),入口點,源碼文件,依賴庫等,其中GUID是模塊的標識,bios系統是以GUID來標識程序。

【感染階段】

2、chipsec.efi模塊功能

.inf部分定義:

INF_VERSION????????????????????=?0x00010005
BASE_NAME??????????????????????=?chipsec
FILE_GUID??????????????????????=?C2AA29A2-065C-4FC5-BE01-7FAA761EAA7E
MODULE_TYPE????????????????????=?UEFI_APPLICATION
VERSION_STRING?????????????????=?1.0
ENTRY_POINT????????????????????=?ShellCEntryLib
1)檢測U盤中當前目錄是三個模塊是否存在,如果不存在直接退出程序

2)檢測cpu芯片類型,初始化spi總線得到SPI_obj,可以進行spi進行各種操作,

得到spi?MMIO(內存映射I/O)的地址,如下,方便下面讀寫bios芯片

3)然后關閉bios寫保護,以便刷bios:

4)進入界面選擇功能,有:安裝Bios?Rootkit,卸載Bios?Rootkit,檢測Bios?Rootkit

5)選擇安裝Bios?Rootkit,先備份原先的bios到\\temp\\bios.bin下,

讀出bios到buffer:

保存bios到bios.bin:

6)讀出bios后,在buffer進行bios結構解析,然后改寫bios,插入.mod模板。

Bios文件系統是樹狀,FD相當于windows下整個硬盤,FV即分區,File以GUID標志,Section里存儲實際的數內容,相當widnows下的文件概念,如下圖:

層層解析后,找到第一個File:

這時File可能是壓縮的,如果是壓縮的,分別用lzma,EfiDecompress,Tiano嘗試解壓。解壓后,在File最后的section里寫分別寫入ntfs.mod,rkload.mod和dropper.mod:

ntfs.mod和rkloader.mod是uefi驅動文件(FFS文件結構),需要校驗和,確保程序能正常運行。

接著,以原來的壓縮格式壓縮File,構造成一個植入rootkit的bios:

7)把植入rootkit的bios系統刷到bios芯片上

擦除芯片上所有數據:

刷入新bios系統:

到這里,完成Bios?Rootkit注入。

【Bios?Rootkit執行階段】

3、rkloader.mod模塊功能

rkoader.mod是bios驅動程序,FFS結構文件頭如下。

typedef?struct?{
EFI_GUID????????????????Name;
EFI_FFS_INTEGRITY_CHECK?IntegrityCheck;
EFI_FV_FILETYPE?????????Type;
EFI_FFS_FILE_ATTRIBUTES?Attributes;
UINT8???????????????????Size[3];
EFI_FFS_FILE_STATE??????State;
UINT32?????ExtendedSize;
}?EFI_FFS_FILE_HEADER2;
緊跟著FFS結構頭后PE是結構。rkloader.mod功能主要是創建事件,調用droper.mod模塊,UEFI下的事件,相當異步的事件通知,當事件觸發時,可中斷去處理例程。

.inf部分定義:

[Defines]
INF_VERSION????????????????????=?0x00010005
BASE_NAME??????????????????????=?rkloader
FILE_GUID??????????????????????=?f50258a9-2f4d-4da9-861e-bda84d07a44c
MODULE_TYPE????????????????????=?UEFI_DRIVER
VERSION_STRING?????????????????=?1.0
ENTRY_POINT????????????????????=?_ModuleEntryPoint
1)初始化得到全局服務指針,gBootServices

2)創建事件,把事件放到FIFO隊列去,高優先級執行

3)加載dropper.mod,并執行。

 

4、dropper.mod模塊功能

dropper.mod是uefi應用程序,資源里面包含windows操作系統下的scounte.exe、solier.exe和elite的 遠控木馬,并用特定的字符串標識資源,如下圖。Droper.mod功能是把三個遠控木馬放到windows操作系統自啟動項里,所以當前操作系統啟動起 來時,遠控木馬得到執行。

.inf?部分定義:

[Defines]
INF_VERSION????????????????????=?0x00010005
BASE_NAME??????????????????????=?fsbg
FILE_GUID??????????????????????=?eaea9aec-c9c1-46e2-9d52-432ad25a9b0b
MODULE_TYPE????????????????????=?UEFI_APPLICATION
VERSION_STRING?????????????????=?1.0
ENTRY_POINT????????????????????=?UefiMain
1)檢測agent是否已經安裝過。

Agent安裝后,會設置一個全置標志GUID,如下圖,如果這個全局變量存在,就是已經安裝過Agent了,就不會重復安裝。

2)解析FFS結構,在dropper.mod通過GUID查找EFI_SECTIOM_RAW類型數據,這數據包含scout.exe,soldier.exe和elite文件數據。

讀取數據到buffer:

GUID:

3)安裝Agent到window啟動項

這個步聚是最關鍵的,UEFI?bios如何寫數據到硬盤?讀取文件需要一個協議:EFI_SIMPLE_FILE_SYSTEM_PROTOCOL,simplefilesystem.h文件里定義這個協議的id,如下,通過這個id可以對硬盤進行讀寫。

extern?EFI_GUID?gEfiSimpleFileSystemProtocolGuid;
得到硬盤卷句柄組HandleList,如下,由Handle可以訪問與讀寫硬盤文件。

然后遍歷所有卷文件,檢測根目錄是否有\\User文件夾,如下圖:

安裝agent:

scout.exe,soldier.exe和elite安裝路徑:

創建文件鎖,拒絕用戶訪問elite文件。

最后,設置安裝agent標志,防止重復安裝。

5、ntfs.mod模塊功能

提供接口,讓rootkit可以讀寫NTFS文件。

【輔助開發工具】

vector-edk-master\vector-uefi\insyded.dll

vector-edk-master\vector-uefi\tesy.py

vector-edk-master\vector-uefi\UEFITool-master???各種壓縮算法

vector-edk-master\AppPkg\Applications\Python???UEFI下python解釋器,可在UEFI執行python腳本,uefi被玩轉。

輔助dropper.mod的生成,依靠insyded.dll和tesy.py。源碼編譯后,dropper.mod是一個DLL文件,然后利用 insyded.dll把遠控scout.exe,soldier.exe和elite添加到dropper.mod里面,再利用 genffs.exe(intel公司的工具)把dropper.mod生成ffs文件。

p?=?subprocess.Popen(('genffs.exe',?“-o”,?“dropper”,?“-t”,?“EFI_FV_FILETYPE_APPLICATION”,?“-g”,?“eaea9aec-c9c1-46e2-9d52-432ad25a9b0b”,?“-s”,?“-a”,?“1”,?“-i”,?“dropper.tmp”))
最后,.mod模塊放到modules目錄下,然后構成一個完整的Bios?Rootkit!

五、防御與檢測

防御:

1、開啟UEFI?SecureFlash;

2、及時更新BIOS修復安全漏洞;

3、設置BIOS/UEFI密碼。

檢測:

1、進行操作系統安全模式,查看系統自啟動目錄是否有可疑程序,如scout.exe,soilder.exe;

2、借助工具dump下uefi?bios,查看是否有可疑模塊。

上一篇:通過灰盒Fuzzing技術來發現Mac OS X安全漏洞

下一篇:Hacking Team:WP8 監控代碼分析