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