基于MBR的BOOTKIT分析及安全防護(hù)措施
360反病毒工程師對(duì)BMW病毒技術(shù)分析如下:
BMW病毒主體分為BIOS、MBR和Windows三個(gè)部分,攻擊流程如下圖:
一、BMW病毒BIOS部分
增加了ISA模塊BIOS部分,名為HOOK.ROM,作用主要是通過檢測(cè)MBR部分是否被恢復(fù)。如果發(fā)現(xiàn)MBR部分已被修復(fù),就將BIOS內(nèi)的病毒代碼約 14個(gè)扇區(qū)寫入MBR中,導(dǎo)致用戶反復(fù)格式化、高格低格,或重新分區(qū)都無效。
Bios內(nèi)的檢測(cè)代碼如下:
檢測(cè)MBR偏移0X92處4個(gè)字節(jié)是否為int1來判斷MBR是否被還原了,如果不是這個(gè)數(shù)值,則直接從BIOS里重寫MBR其他部分的病毒代碼到磁盤開始扇區(qū)。
二、BMW病毒MBR部分
MBR部分病毒代碼執(zhí)行后,會(huì)從第2個(gè)扇區(qū)開始讀6個(gè)扇區(qū)的病毒代碼到0X7C00處,然后跳至該處執(zhí)行,然后讀取第7個(gè)扇區(qū)中的備份 MBR到內(nèi)存中,驗(yàn)證扇區(qū)的有效性;
通過驗(yàn)證后,讀取分區(qū)表中的引導(dǎo)扇區(qū)所在的扇區(qū)到 0X7C00處,驗(yàn)證引導(dǎo)分區(qū)的有效性;
通過驗(yàn)證后,判斷引導(dǎo)分區(qū)的類型,目前該病毒支持NTFS和 FAT32,根據(jù)不同的分區(qū)類型進(jìn)行不同的處理,再經(jīng)過解析文件系統(tǒng)找到文件所在扇區(qū),找到相應(yīng)的Windows系統(tǒng)文件讀取PE信息判斷其是否被感染過。(XP/2003系統(tǒng)為Winlogon.exe,Win7/Vista系統(tǒng)為Wininit.exe)
如果Windows系統(tǒng)文件已被感染,則在屏幕上顯示”Find it OK!”,然后調(diào)入原始MBR,跳到原始MBR處執(zhí)行;如果Windows系統(tǒng)文件沒有被感染,則進(jìn)行PE感染寫扇區(qū),之后在屏幕上顯示”Find it OK!”,然后調(diào)入原始MBR,跳到原始MBR處執(zhí)行。
三、BMW病毒W(wǎng)indows部分(Winlogon和Wininit文件執(zhí)行感染)
以Winlogon.exe為例進(jìn)行說明:
由于病毒修改了該文件入口點(diǎn),當(dāng)文件執(zhí)行時(shí)首先執(zhí)行加密過的病毒代碼,運(yùn)行時(shí)動(dòng)態(tài)解碼。
病毒代碼解密后加載指定文件,創(chuàng)建病毒調(diào)用CreateThread創(chuàng)建線程,同時(shí)跳回原始入口點(diǎn)執(zhí)行。
在病毒線程里先Sleep10秒,然后調(diào)用URLDownloadToFileA從黑客服務(wù)器下載一個(gè)Downloader到本地,驗(yàn)證文件下載成功后,調(diào)用WinExec執(zhí)行,從而下載運(yùn)行多種惡意程序;該病毒還會(huì)下載驅(qū)動(dòng),命名為c:my.sys,由之前的病毒代碼通過一系列服務(wù)函數(shù)來創(chuàng)建加載驅(qū)動(dòng),完成后該病毒線程進(jìn)入無限Sleep狀態(tài),my.sys為一個(gè)磁盤類驅(qū)動(dòng)disk.sys的HOOK 驅(qū)動(dòng),通過HOOK了磁盤的讀寫操作等,讓所有對(duì)MBR的讀取和寫入都達(dá)不到真正的效果。
安全軟件針對(duì)基于MBR的BOOTKIT防御和查殺
一般而言,具備“主動(dòng)防御”功能的安全軟件通過攔截RING3應(yīng)用層對(duì)MBR區(qū)域的寫操作,并阻止惡意驅(qū)動(dòng)的加載,均可防御MBR BOOTKIT。用戶在開啟安全軟件防御的前提下,基本不會(huì)感染BMW、鬼影等MBR BOOTKIT。
糟糕的是,MBR BOOTKIT總是和社會(huì)工程攻擊手段結(jié)伴出
現(xiàn)。比如你想用一個(gè)熱門游戲外掛獲得快速升級(jí)和精良裝備,又或者想弄一個(gè)收費(fèi)軟件的“注冊(cè)機(jī)”,它們經(jīng)常會(huì)提醒你先關(guān)閉安全軟件,MBR BOOTKIT就在此時(shí)趁虛而入,請(qǐng)神容易送神難。
最早期的鬼影系列,當(dāng)時(shí)殺軟對(duì)這種基于MBR 的BOOTKIT缺乏針對(duì)性措施,從而在進(jìn)行病毒掃描的時(shí)候,沒有去掃描MBR區(qū)域,所以病毒也沒有對(duì)該區(qū)域做任何保護(hù),基本上直接讀取MBR,就可以獲得真實(shí)的數(shù)據(jù),然后根據(jù)內(nèi)部定義的特征碼,恢復(fù)成原始的MBR。
但從鬼影3以后,隨著各個(gè)殺軟增加對(duì)MBR區(qū)域的檢測(cè),MBR木馬也進(jìn)行了相應(yīng)的保護(hù),比如鬼影3的掛鉤磁盤端口驅(qū)動(dòng)的startio地址來攔截所有對(duì)MBR的修復(fù),導(dǎo)致所有修復(fù)操作,在中毒狀態(tài)下完全無效。又比如TDL4等,也進(jìn)行了HOOK處理,讓殺軟讀不到真正的MBR。當(dāng)任何程序?qū)BR區(qū)域讀取的時(shí)候,木馬會(huì)返回一個(gè)虛假的MBR給殺軟,欺騙其認(rèn)為是正常的MBR。除此之外,該ROOTKIT還創(chuàng)建了監(jiān)視線程,檢測(cè)其對(duì)象HOOK,及MBR是否被恢復(fù),如果發(fā)現(xiàn)被恢復(fù),則重新感染MBR.
BMW木馬則更進(jìn)一步,加入了BIOS中的修復(fù)操作,即使在WINPE模式或DOS模式下恢復(fù)MBR,在系統(tǒng)重啟的時(shí)候還是被隱藏于BIOS 中的木馬代碼所恢復(fù),修復(fù)難度相當(dāng)高。
對(duì)于已經(jīng)感染MBR BOOTKIT的電腦,360系統(tǒng)急救箱提供了MBR檢測(cè)修復(fù)工具(頑固引導(dǎo)木馬專殺),專門用來檢測(cè)和修復(fù)被感染的MBR。
這個(gè)修復(fù)操作相比清除普通頑固木馬更復(fù)雜些,需要配合360系統(tǒng)急救箱的強(qiáng)力模式使用,可以查殺BMW、TDL4、鬼影系列等目前已知的MBR BOOTKIT并修復(fù)系統(tǒng)。
360急救箱包括32位版和原生64位版本,全面支持WINXP,VISTA WIN7,WIN8,及WIN7 64位,WIN8 64位。還支持WINPE,可以到以下地址下載相應(yīng)的版本。
http://www.#/jijiuxiang/index.html
對(duì)于BMW的BIOS修復(fù),可以使用專門的BMW BIOS修復(fù)工具,修復(fù)BIOS后,再用急救箱掃描修復(fù)MBR和WINDOWS系統(tǒng)文件即可。
可以在這里下載BMW BIOS 的修復(fù)工具。
http://bbs.360safe.com/thread-22137-1-1.html
360系統(tǒng)急救箱處理BMW病毒的操作截圖如下: