亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

Hacking Team:攻擊向量之Bios Rootkit

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

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

 

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

一、攻擊場景

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

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

二、Bios?Rootkit感染方式

HT內(nèi)部泄露文檔介紹,Bios?Rootkit是通過U盤,進入UEFI?Shell進行感染。要求目標系統(tǒng)cup?Intel?i3/i5/i7(2,3,4代),bios?uefi。
Bios?Rootkit的感染方式,決定傳播廣度有限,但從網(wǎng)絡滲透來說,絕對是一個可靠的突破口。目前還沒資料證明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結(jié)構

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

EFI?Driver和EFI?Application是FFS結(jié)構,安裝UDK(UEFI開發(fā)包),使用C語言,遵循接口,就可以開發(fā)EFI程序。
EFI程序開發(fā)必須要有.inf定義文件,定義應用名,guid,程序類型(應用或驅(qū)動),入口點,源碼文件,依賴庫等,其中GUID是模塊的標識,bios系統(tǒng)是以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(內(nèi)存映射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結(jié)構解析,然后改寫bios,插入.mod模板。

Bios文件系統(tǒng)是樹狀,F(xiàn)D相當于windows下整個硬盤,F(xiàn)V即分區(qū),F(xiàn)ile以GUID標志,Section里存儲實際的數(shù)內(nèi)容,相當widnows下的文件概念,如下圖:

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

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

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

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

7)把植入rootkit的bios系統(tǒng)刷到bios芯片上

擦除芯片上所有數(shù)據(jù):

刷入新bios系統(tǒng):

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

【Bios?Rootkit執(zhí)行階段】

3、rkloader.mod模塊功能

rkoader.mod是bios驅(qū)動程序,F(xiàn)FS結(jié)構文件頭如下。

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結(jié)構頭后PE是結(jié)構。rkloader.mod功能主要是創(chuàng)建事件,調(diào)用droper.mod模塊,UEFI下的事件,相當異步的事件通知,當事件觸發(fā)時,可中斷去處理例程。

.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)創(chuàng)建事件,把事件放到FIFO隊列去,高優(yōu)先級執(zhí)行

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

 

4、dropper.mod模塊功能

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

.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是否已經(jīng)安裝過。

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

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

讀取數(shù)據(jù)到buffer:

GUID:

3)安裝Agent到window啟動項

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

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

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

安裝agent:

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

創(chuàng)建文件鎖,拒絕用戶訪問elite文件。

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

5、ntfs.mod模塊功能

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

【輔助開發(fā)工具】

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執(zhí)行python腳本,uefi被玩轉(zhuǎn)。

輔助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、進行操作系統(tǒng)安全模式,查看系統(tǒng)自啟動目錄是否有可疑程序,如scout.exe,soilder.exe;

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

上一篇:通過灰盒Fuzzing技術來發(fā)現(xiàn)Mac OS X安全漏洞

下一篇:Hacking Team:WP8 監(jiān)控代碼分析