一款使用RTF文件作為傳輸向量的惡意軟件分析
在分析惡意軟件過程中,我們經(jīng)??吹剑粽咭詣?chuàng)新的方式使用特性傳輸和混淆惡意軟件。最近我們發(fā)現(xiàn),利用RTF臨時(shí)文件作為一種傳遞方法來壓縮和刪除惡意軟件的樣本數(shù)量有所增加。所以,本文中我們就分析一款利用RTF文件作為傳輸向量的惡意軟件。
0×01 攻擊過程
這種攻擊使用下面的過程在一個(gè)系統(tǒng)中刪除并執(zhí)行payload。
圖1 惡意軟件攻擊過程
1、用戶打開Office文檔并啟用宏。
2、宏將活動(dòng)文檔保存為一個(gè)RTF文件。
3、宏靜默地打開RTF文檔。
4、在打開RTF文檔時(shí),將嵌入的對(duì)象刪除為臨時(shí)文件。
5、宏執(zhí)行被刪除的文件。
為了更好地理解這個(gè)傳遞方法是如何工作的,我們需要看看二進(jìn)制文件在RTF文檔中是如何壓縮的,以及處理這些嵌入的對(duì)象時(shí)的默認(rèn)行為。
當(dāng)打開一個(gè)包含內(nèi)嵌對(duì)象(從一個(gè)文件中插入的對(duì)象)的RTF格式文檔時(shí),這些對(duì)象就會(huì)被提取到用戶的臨時(shí)目錄中,如果用戶在文檔中單擊了對(duì)象,那么對(duì)象就會(huì)在這里以默認(rèn)的處理程序啟動(dòng)。一旦文檔關(guān)閉,就會(huì)通過將它們從用戶臨時(shí)目錄中刪除而清理掉文件。所以,在文檔打開期間,系統(tǒng)中的其他進(jìn)程都能夠訪問這些文件。
當(dāng)一個(gè)對(duì)象被嵌入到一個(gè)文檔中時(shí),它將使用Packager對(duì)象服務(wù)器,OLE1中的一個(gè)遺留實(shí)現(xiàn)。不幸的是,Packager格式并未以文檔形式發(fā)布,且微軟開放規(guī)范中也未包含它的信息。
對(duì)象存儲(chǔ)在一個(gè)文檔中的內(nèi)嵌對(duì)象(objemb)部分。頭字段定義了對(duì)象服務(wù)器、大小以及其他有關(guān)底層內(nèi)嵌數(shù)據(jù)的元數(shù)據(jù)。
圖2 Object頭
關(guān)于頭格式的更多信息可以在MS-OLEDS—2.2.4節(jié)ObjectHeader中查看。
0×02 理解OLE1 Packager格式
通過分析大量樣本,我們已經(jīng)能夠理解Packager格式的大部分內(nèi)容,以及它與文檔中內(nèi)嵌對(duì)象的聯(lián)系。下表中列出了遺留Packager數(shù)據(jù)格式,并可用作解析包數(shù)據(jù)流的一個(gè)指導(dǎo)。
圖3 OLE1 Packager格式
除了嵌入的二進(jìn)制內(nèi)容,格式中還包括內(nèi)嵌對(duì)象的元數(shù)據(jù),這在DFIR中是很有用的。
1、默認(rèn)情況下,標(biāo)簽值將包含OrgPath中使用的文件名和ObjFile。如果這個(gè)值有所不同,表明標(biāo)簽被篡改了。
2、OrgPath將包括內(nèi)嵌二進(jìn)制文件的原始路徑。
3、ObjFile將包括編寫系統(tǒng)% localappdata %的路徑,它將包括用戶名C:\Users\ \...
為了幫助分析可疑的包數(shù)據(jù)流,我們編寫了一個(gè)python工具psparser,它會(huì)處理數(shù)據(jù)格式并將輸出元數(shù)據(jù),并選擇性地提取嵌入的對(duì)象。使用該工具能夠有助于分析最近發(fā)現(xiàn)的釣魚活動(dòng)中的惡意RTF文件,我們可以看到它與嵌入對(duì)象元數(shù)據(jù)之間具有很多潛在的相似性。
圖4 樣本分析
使用嵌入的元數(shù)據(jù)能夠給我們一些主要的指標(biāo),我們可以使用這些指標(biāo)來進(jìn)一步尋找相關(guān)的樣本進(jìn)行分析。
0×03 文檔轉(zhuǎn)換
為了完成這個(gè)傳遞方法,攻擊者以一個(gè)RTF文檔開始,并嵌入一個(gè)惡意可執(zhí)行文件,然后將該文檔轉(zhuǎn)換成一個(gè)Word文件(.doc)。一旦在Word中,攻擊者增加所需的宏調(diào)用來保存、打開和執(zhí)行壓縮在源文檔中的payload。
圖5 惡意宏
圖5展示了利用這種傳遞向量的惡意宏的一個(gè)示例。宏使用函數(shù)SaveAs來保存活動(dòng)的文檔,并以格式(wdFormatRTF)和CreateObject打開Word的一個(gè)新實(shí)例,而該Word靜默地打開了文檔。一旦RTF文檔打開后,宏會(huì)執(zhí)行被提取到用戶臨時(shí)目錄的payload。
雖然一旦Word實(shí)例被關(guān)閉,可執(zhí)行文件就會(huì)被刪除,但是宏寫入臨時(shí)目錄的RTF文件仍舊存在,并能夠在分流或響應(yīng)活動(dòng)中用作主機(jī)指標(biāo)。對(duì)宏的檢查可以快速確認(rèn)一旦payload被執(zhí)行,RTF文件是否也被刪除。
0×04 RTF到Doc以及反向轉(zhuǎn)換
當(dāng)Word打開時(shí),雖然默認(rèn)行為有所不同,嵌入對(duì)象不再被提取到臨時(shí)目錄中,但是分析嵌入的Ole10Native流顯示,當(dāng)文件被保存到新的格式時(shí)并未被修改。
當(dāng)惡意宏將文檔保存回RTF格式時(shí),整個(gè)文檔增加了新的字段和格式,但是惡意payload的流保持不變。
圖6 原始RTF與保存RTF文檔對(duì)比
一旦文檔轉(zhuǎn)成回原始格式,當(dāng)文件處于打開狀態(tài)時(shí),在嵌入的對(duì)象被自動(dòng)提取到臨時(shí)目錄的地方就會(huì)發(fā)生默認(rèn)行為。
0×05 結(jié)論
我們可以看到,這是一種創(chuàng)新性的方式來使用默認(rèn)行為壓縮和傳遞惡意二進(jìn)制文件。另外,我們還看到,攻擊者使用混淆(XOR)的附加層來更好地掩蓋文檔對(duì)二進(jìn)制文件的包含。
看著這些樣本中的惡意宏,并沒有顯式的調(diào)用來編寫或下載用作payload的二進(jìn)制文件。當(dāng)識(shí)別惡意二進(jìn)制文件初始的傳遞向量時(shí),惡意軟件分類過程中這可能會(huì)導(dǎo)致一些混亂。
0×06 參考資料
1、https://blogs.mcafee.com/mcafee-labs/dropping-files-temp-folder-raises-security-concerns/
2、https://isc.sans.edu/forums/diary/Getting+the+EXE+out+of+the+RTF/6703/
3、https://www.dshield.org/forums/diary/Getting+the+EXE+out+of+the+RTF+again/8506/
0×07 樣本
1、88c69cd7738b6c2228e3c602d385fab3
2、8cbb6205bb1619a4bde494e90c2ebeb6
3、836ff385edd291b1e81332c7c3946508
4、da86cbe009b415b3cf5cd37a7af44921