MBR欺騙代碼

MBR欺騙代碼

傳統木馬病毒普遍是基於檔案形式存在於機器上,儘管它們會通過各種加殼免殺技術逃避殺軟檢測,但隨著雲安全和主動防禦技術的發展,惡意程式想駐留系統已經變得越來越難。在這種情況下,基於MBR的BOOTKIT在近年來開始興起。

基於MBR的BOOTKIT特點是無檔案、無進程、無模組,可以只存在於運行的記憶體和位於作業系統之外的磁碟扇區空間裡,即使重灌系統、甚至格式化硬碟也無法清理乾淨。

基本介紹

  • 中文名:MBR欺騙代碼
  • 外文名:MBR spoofing code
  • 類別:計算機安全
定義,發展歷史,第一代典型:“鬼影”病毒,第二代典型:TDL4系列,第三代典型:BMW病毒,

定義

MBR是Master Boot Record的簡寫,又稱為主引導扇區,位於硬碟的第一個扇區。開機BIOS自檢後,所被載入的第一個扇區。
Trojan.Bootlock是賽門鐵克安全回響中心檢測到的一個木馬病毒。它會感染用戶計算機的主引導記錄(Master Boot Record,以下簡稱MBR)以阻止用戶計算機正常啟動,設下騙局以達到勒索受害用戶的目的。
運行時,Trojan.Bootlock首先會備份當前的MBR,隨後用一段惡意代碼覆蓋原來的MBR。感染後的MBR被檢測為Boot.Bootlock。這樣,當用戶啟動計算機時,該惡意代碼就會欺騙用戶,聲稱用戶硬碟已被加密;同時提供一個服務網站,引導用戶登錄該網站購買付費解密信息;並警告用戶,如果採用除此之外的其他任何方法來試圖還原硬碟信息都會導致數據丟失,以此手段來對用戶進行勒索。MBR欺騙代碼就是在木馬病毒攻擊MBR時的惡意代碼。

發展歷史

第一代典型:“鬼影”病毒

特點:只支持XP 系統,基於國外的開源版本修改。
  • 從MBR里,掛實模式磁碟讀寫中斷13H,駐留高端記憶體,掛 NTLDR 載入,對NTOS的函式進行HOOK,在NTOS初始化過程中,載入病毒驅動,從而進行一系列操作,載入病毒驅動,注入瀏覽器,刷流量,篡改系統圖示等。
  • 所有病毒代碼都在 MBR區域裡,位於作業系統之外,格式化硬碟,重灌系統均無法解決。
  • 弱點:只支持XP系統,對自己的保護不足,很容易檢測和修復,後續的變種增加了對磁碟類驅動和連線埠驅動的掛鈎,來保護自己 。
  • “鬼影”系列最經典的樣本是2011年的“鬼影3”。

第二代典型:TDL4系列

  • 在歐美流行,國內比較少見,技術水平高於鬼影。
  • 支持所有的WINDOWS作業系統。甚至是64位WIN7 ,並且在 64位WIN7上支持繞過PATCHGUARD及驅動載入簽名驗證,如果這種技術一旦流行開來,對64位Windows系統的安全打擊將是致命的。
其技術細節是MBR部分的主要功能是搜尋ROOTKIT加密分區中的 LDR16模組,並將其載入進記憶體,將控制權交給它。
LDR16
載入運行後會HOOK int 13h掛鈎硬碟的讀寫操作,然後會載入磁碟最後加密扇區中的原始備份MBR到記憶體中,並將控制權交給原始MBR去執行。而後者會載入作業系統引導模組。而系統引導模組則通過INT 13H來讀取載入系統啟動的檔案。而每次讀取操作都要經過TLD4的 鉤子處理。
在鉤子程式中判斷是否是讀取特定的檔案,是則進行處理,否則直接下傳。
其中要進行處理的一個檔案是kdcom.dll,這個DLL和系統調試相關。Ldr16會在掛鈎程式中對這個檔案的特徵進行判斷,是否符合,是則進行處理。包括了同時針對32位和64位程式的處理。
當發現載入該檔案時候,LDR16會搜尋加密分區中的LDR32,或LDR64組件,根據所處的不同系統,然後載入代替記憶體中的kdcom.dll。從而完成了記憶體中的劫持。除此之外LDR16還要做的一件事就是改變記憶體中的 BCD 信息。後者是 WINDOWS在VISTA以後引入用來代替BOOT.INI的註冊表hive檔案.
TDL4會修改BCD中的BcdLibraryBoolean_EmsEnabled鍵,默認的標誌是“16000020”,將其替換為“26000022”  BcdOsLoaderBoolean_WinPEMode鍵。從而啟動系統的 WINPE系統模式。而在WINPE模式下,將不會進行代碼完整性驗證,從而讓系統不會驗證kdcom.dll的數字簽名。而這種模式只需要挺過驗證期後,即可通過將/MININT參數設定為一個無效的值而禁止該模式。
LDR32/LDR64
為了確保系統初始化的成功,LDR32/LDR64必須支持kdcom.dll的功能函式
對於32位和64位系統來說,導出函式都是一樣的。但對於TDL4的LDR32/LDR64來說只需要在KdDebuggerInitialize1進行進行處理即可,對其他的函式則直接返回成功即可。通過這種簡單的方法,使TDL既能在系統啟動早期就進行初始化,又達到了禁止系統調試器的效果,真可謂一石二鳥的效果。
在系統初始化的早期階段Phase1Initialization 會調用KdDebuggerInitialize1,而後會進行TDL的初始化。
而對於LDR32/LDR64的代碼基本相同,因為採用同樣的C代碼編譯的。
當調用KdDebuggerInitialize1後 ,LDR32/LDR64會進行一系列的初始化。
調用未公開的函式IoCreateDriver來為LDR32/LDR64創建一個驅動對象,因為kdcom.dll本身不作為一個驅動程式被載入。同時將初始化函式作為參數傳遞給IoCreateDriver。
通過調用IoRegisterPlugPlayNotification,註冊一個即插即用的回調。
而當該即插即用回調被調用的時候,將會搜尋TDL4加密分區中的主ROOTKIT驅動DRV32/DRV64,是32位還是64位取決於當前是哪個作業系統。而後將該主ROOTKIT驅動(DRV32/DRV64)載入進記憶體並進行必要的配置後,調用其驅動程式的入口點
DRV32/DRV64
一旦LDR32/LDR64被成功初始化後,ROOTKIT主功能模組將被載入,其主要功能就是隱藏自身,防止被安全軟體發現。當安全軟體試圖訪問ROOTKIT關鍵部分的扇區的時候返回給虛假的結果,比如訪問MBR,磁碟最後區域的時候,返回的都是虛假的正常信息。
通過對ATAPI.SYS的設備對象劫持,而該種方式的掛鈎將不會引發PTACH GUARD的保護機制。
除此之外,該ROOTKIT還創建了監視執行緒,檢測其的 對象HOOK,及MBR是否被恢復,如果發現被恢復,則重新感染MBR.

第三代典型:BMW病毒

  • BMW病毒是連環感染BIOS、MBR、Windows的BIOS Rootkit。
  • BIOS是“Basic Input/Output System”的縮寫,中文譯名為“基本輸入輸出系統”。
BIOS是一組固化到計算機主機板上ROM晶片上的程式(這裡指主機板BIOS),其保存有計算機啟動需要的基本輸入輸出的程式、系統設定信息、開機上電自檢程式和系統啟動自舉程式。可以說,BIOS是一個軟硬體的結合體。它為主機板部件和主要外圍設備服務。從結構上說,BIOS是連在南橋晶片組上的記憶體晶片,保存所有的微程式和部分配置信息。剩餘的信息則保存在由電池供電的CMOS晶片上。
BIOS Rootkit具有極強威脅,包括:
  1. 能夠第一時間獲取系統主動權。由於固化於BIOS晶片中的程式在計算機啟動時是最先執行的,因此嵌入BIOS晶片中的BIOS Rootkit自然能夠第一時間獲得系統主動權。
  2. 不在硬碟上留下痕跡。BIOS Rootkit主要存在於BIOS晶片中,因此傳統的基於硬碟的安全檢測程式將會失去作用。
  3. 能夠重複感染已有作業系統或新裝系統。由於BIOS Rootkit存在於BIOS晶片中,因此重裝新系統對其毫無作用。
  4. 能夠對抗幾乎所有現有的HIPS、防毒、審計等安全軟體。現有的所有HIPS、防毒、審計等安全軟體幾乎都是基於作業系統的,對於存在於硬體中的BIOS Rootkit也毫無作用。
  5. 難以檢測。BIOS Rootkit一般作為BIOS設計規範中的標準ISA或PCI模組存在,因此難於判斷相應模組是否為BIOS Rootkit。
  6. 難以清除。即使發現並判斷出某個ISA/PCI模組為BIOS Rootkit,也只有通過硬體編程寫入的方式才能清除。而硬體編程器並不是每個人都有並能熟練掌握的。
BIOS Rootkit也有著自身的弱點:
  1. 程式編寫較為困難。BIOS Rootkit主要依靠彙編程式來進行編寫,並且彙編只能調用特定的BIOS中斷調用。比如int 19h系統引導中斷可以正常調用,而int 13h磁碟中斷就無法正常使用,原因是BIOS引導計算機時,磁碟設備還沒有準備好。
  2. BIOS類型較為繁雜,很難做到通用性很好的BIOS Rootkit。BIOS晶片類型以及其主機板類型甚至是主機板編號都對BIOS Rootkit有較大限制。加上Award、AMI、Phoenix類型的BIOS各自對硬體調用規範也不盡相同,因此通用性較好的BIOS Rootkit難於實現。
  3. BIOS相關技術資料奇缺。BIOS相關資料一直是各大BIOS廠商嚴格保守的機密,因此BIOS Rootkit編寫需要的許多相關電器特性、調用參數等資料都無法找到。
  4. 涉及作業系統實/保護模式轉換、系統引導等複雜問題。保護模式下的編程,特別就未開源的Windows作業系統來說,BIOS Rootkit對於作業系統流程控制的相關實現較為困難。
  5. BIOS空間限制。BIOS晶片空間較為寶貴,一般為512K大小。除了廠家初始加入的固定程式外,可用的剩餘空間往往不夠放下BIOS Rootkit。

相關詞條

熱門詞條

聯絡我們