Linux下的APT攻擊工具HDD Rootkit分析
一、概況
前段時間,卡巴斯基捕獲到Winnti網(wǎng)絡(luò)犯罪組織在Windows下進行APT攻擊的通用工具——HDD Rootkit。近期,騰訊反病毒實驗室在Linux系統(tǒng)下也捕獲到同類工具。Winnti組織利用HDD Rootkit在Windows和Linux系統(tǒng)下進行持續(xù)而隱蔽的APT攻擊。經(jīng)分析發(fā)現(xiàn),HDD Rootkit先是篡改系統(tǒng)的引導(dǎo)區(qū),然后在進入Linux系統(tǒng)前利用自帶的Ext文件系統(tǒng)解析模塊,將隱藏在硬盤深處的后門文件解密出來后加入到開機啟動腳本或系統(tǒng)服務(wù)里。目前受攻擊的系統(tǒng)有Centos和Ubuntu。
圖1:HDD Rootkit在Linux下的攻擊流程
二、HDD Rootkit在Linux下的詳細分析
1.過程展示
分析HDD Rootkit:
圖2:分析HDD Rootkit得到的參數(shù)提示
運行HDD Rootkit:
圖3:運行HDD Rootkit工具
通過圖3,能看出HDD Rootkit平臺已經(jīng)把RKimage和Backdoor解密并寫入扇區(qū)里面,而且計算了他們的Crc16值(這部分后面有更詳細的分析)。接下來,我們看看mbr的變化:一是第一扇區(qū)已經(jīng)被改寫(如圖4);二是開機瞬間顯示出HDD Rootkit的調(diào)試信息(如圖5)。當(dāng)系統(tǒng)中毒以后,第1扇區(qū)存放病毒的MBR,第25扇區(qū)存放BootCode,第26與第27扇區(qū)存放加密后的原始MBR?! ?/p>
圖4:左邊是被修改的mbr,右邊是原始的mbr
圖5:開機時RKimage的輸出信息,注意:debug版本才有信息輸出
2.安裝階段詳細分析
(1)運行安裝方式與參數(shù):
圖6:hdroot_32_bin安裝方式
在Linux下運行HDD Rootkit 如 ./root_32_bin inst ./createfile 1。其中第一個參數(shù)是安裝類型,第二個參數(shù)是后門文件,第三個參數(shù)是啟動類型(共三種開機啟動方式)。
?。?)HDD Rootkit的文件存儲和隱藏:
HDD Rootkit早期的版本是把MBR、Boot Code、RKimage等放在程序資源里面,在Linux系統(tǒng)下則是把這些文件加密存儲在安裝器里面。以下分析HDD Rootkit如何將加密好的MBR、Boot Code、RKimage解密出來,又重新加密寫入到第一個扇區(qū)和空閑的扇區(qū)里面。
圖7:左邊是加密的結(jié)構(gòu)體,右邊是解密過程
HDD Rootkit將Rkimage和Backdoor再次加密后寫入扇區(qū),將后門文件藏得更深?!?/p>
圖8:將RKimage和Backdoor文件寫入扇區(qū)
獲取引導(dǎo)盤,準(zhǔn)備寫入MBR和Bootcode,步驟如圖9和圖10所示?!?/p>
圖9:步驟一
圖10:步驟二
#p#
(3)RKimage 功能分析
RKimage是HDD Rootkit下釋放的子工具。RKimage不依賴于操作系統(tǒng),直接解析文件系統(tǒng),能根據(jù)不同的安裝情況,把后門加入開機啟動。
RKimage模塊:
◆由Bootcode拉起,將實模式切換到保護模式;
◆實現(xiàn)Ext文件系統(tǒng)解析與讀寫功能;
◆把隱藏在扇區(qū)的后門寫成文件,根據(jù)不同的情況增加開機啟動項。
圖11:RKimage的文件系統(tǒng)解析模塊的字符串提示
第一種開機啟動方式:
圖12:/etc/rc*.d/S7*cdiskmon 類型
第二種開機啟動方式:
圖13:/etc/rc.d/rc.local類型
第三種開機啟動方式:
圖14:SYSTEMD類型
?。?)后門文件
由于獲取的程序樣本有限,在分析過程中并沒有獲取真正有效的Backdoor文件,所以整個攻擊的完整流程和木馬如何把信息向外通信并未分析到。因此,自主構(gòu)造了一個寫文件的可執(zhí)行程序。
3.調(diào)試 HDD Rootkit的MBR、Bootcode、RKImage關(guān)鍵節(jié)點
圖15:中毒后的第一扇區(qū)
圖16:HDD加載Bootcode
圖17:從Bootcode進入到RKimage模塊
圖18:RKimage模塊加載GDTR
圖19:RKimage模塊里面準(zhǔn)備切換到保護模式
圖20:RKimage模塊準(zhǔn)備執(zhí)行功能
圖21:RKimage模塊輸出功能代碼的調(diào)息信息