北京天融信科技有限公司
01
LokiBot是一款竊取用戶敏感數(shù)據(jù)的惡意軟件,主要通過垃圾郵件、釣魚郵件傳播。竊取的數(shù)據(jù)包括瀏覽器、電子郵箱、ftp、sftp密碼及憑證等。隨著這些年的演化,LokiBot的特性和功能不斷更新。它從最初的銀行木馬發(fā)展到今天已經(jīng)成為一款強(qiáng)大的惡意家族軟件。本文將通過分析一次LokiBot攻擊事件來詳細(xì)介紹LokiBot木馬及其感染鏈特性。
02
感染過程
攻擊活動(dòng)從釣魚郵件發(fā)送惡意文檔附件開始,攻擊者通過模糊化文檔內(nèi)的圖片來引誘用戶開啟宏。開啟宏后該文檔顯示一個(gè)Microsoft Excel工作表,隨后立即執(zhí)行潛入在附件中的 VBS 宏代碼。
該宏下載了加強(qiáng)殼的第二階段代碼,由第二階段下載程序獲取加密的第三階段代碼,一共經(jīng)過三層加密。在提權(quán)之后,LokiBot在第三階段完成部署。
下圖是完整的感染鏈:
2.1 階段
當(dāng)用戶打開釣魚電子郵件時(shí)顯示一條西班牙語的社工消息(“查看附件里的付款日期")。下圖是其中一封釣魚郵件的截圖:
Excel工作表使用了另一種釣魚郵件中的常見誘導(dǎo)手段,文檔內(nèi)插入了一張模糊圖片,誘導(dǎo)受害者單擊“啟用宏"按鈕并執(zhí)行惡意宏代碼。
LokiBot樣本的宏主要通過十六進(jìn)制變量名做混淆處理。下面的截圖顯示了此宏的"Workbook_Open"功能的一部分。
去除混淆后如下:
該惡意程序從硬編碼字節(jié)中解密第二階段的URL,下載第二階段程序,保存到"Templates"文件夾中并執(zhí)行。宏下載的流量報(bào)文如下:
2.2 第二階段
第二階段程序使用基于Delphi的殼??梢杂^察到Form_main里有一個(gè)定時(shí)器"xvv",該定時(shí)器主要負(fù)責(zé)解壓殼代碼。
解壓殼代碼分為4個(gè)步驟:
加載名為"T__6541957882"的圖片資源到內(nèi)存中;
找到圖片資源中的"WWEX"數(shù)據(jù),并拷貝到緩沖區(qū);
對(duì)緩沖區(qū)的數(shù)據(jù)按照字節(jié)加0xEE解密,還原為一個(gè)dll;
在內(nèi)存里反射加載執(zhí)行dll。
下圖是資源"T__6541957882"中的圖片:
以下是圖片里的以"WWEX"標(biāo)識(shí)起始位置的加密dll數(shù)據(jù):
依次按字節(jié)加0xEE,還原為dll數(shù)據(jù):
2.3 DLL分析
解密出的dll也是由Delphi語言編寫,通過 dll中設(shè)置的定時(shí)器從硬編碼的URL里下載第三階段的payload。
Download3rdStage會(huì)解密出硬編碼的"",嘗試建立連接。并通過相關(guān)指令來檢測(cè)是否處于調(diào)試狀態(tài)。
如果dll檢測(cè)到自己處在被調(diào)試狀態(tài),就不會(huì)下載第三階段的payload。反之如果未檢測(cè)到調(diào)試狀態(tài),dll將解密出第三階段payload的URL并執(zhí)行下載。
下圖是dll下載第三階段payload的報(bào)文流量:
可以看到,服務(wù)器返回的是16進(jìn)制的字符串,通過三個(gè)步驟解密還原為第三階段的dll:
反轉(zhuǎn)16進(jìn)制字符串;
將16進(jìn)制字符串轉(zhuǎn)為16進(jìn)制字節(jié);
用硬編碼的"ZKkz8PH0"異或(XOR)計(jì)算16進(jìn)制字節(jié)數(shù)據(jù)的和。
2.4 第三階段
異或解密出的第三階段dll仍然使用Delphi語言編寫,在被第二階段的dll加載執(zhí)行后,向內(nèi)存加載名為"DVCLAL"的資源。使用key:"7x21zoom8675309"解密上述資源,解密算法是定制化的。解密后可以得到配置數(shù)的相關(guān)結(jié)構(gòu)體,各項(xiàng)之間用字符串
"*()%@5YT!@#G__T@#$%^&*()__#@$#57$#!@"隔開。詳細(xì)見下圖:
下圖是配置數(shù)據(jù)的解析:
目前仍有些配置數(shù)據(jù)的作用不明。
03
UAC繞過
LokiBot會(huì)檢測(cè)是否設(shè)置了InjectDLLToNotepadFlag標(biāo)志,以及C:\Users\
目前注入到notepad.exe進(jìn)程的dll采取兩種技術(shù)繞過UAC。
3.1 繞過方法一
檢測(cè)是否存在C:\Windows\Finex文件,若不存在則釋放C:\Users\Public\cde.bat文件。cde.bat內(nèi)容如下:
隨后釋放C:\Users\Public\x.bat文件:
再釋放C:\Users\Public\x.vbs文件:
繼續(xù)釋放C:\Users\Public\Natso.bat文件:
最后執(zhí)行"Natso.bat"。
注:該無文件繞過UAC方法的更多細(xì)節(jié)參考:https://www.tiraniddo.dev/2017/05/exploiting-environment-variables-in.html。
3.2 繞過方法二
如果C:\Windows\Finex文件仍然不存在,那么意味著繞過UAC失敗了,即更新如下Nasto.bat代碼:
注:該基于fodhelper.exe的無文件繞過UAC方法更多細(xì)節(jié)請(qǐng)參考:/netbiosX/a114f8822eb20b115e33db55deee6692。
04
解密執(zhí)行LokiBot
繞過UAC之后,第三階段的dll會(huì)檢測(cè)AutoRunKeyFlag標(biāo)志是否設(shè)置為1,若是則開始解密LokiBot。
第三階段的dll有3個(gè)方法運(yùn)行解密出的LokiBot,取決于配置里ExecutionFlag的值。
第三階段dll解密后配置數(shù)據(jù)里的shellcode采用process hollowing技術(shù)執(zhí)行解密后的LokiBot。
05
防護(hù)建議
提高口令強(qiáng)度:RDP遠(yuǎn)程服務(wù)器等連接盡量使用強(qiáng)密碼,避免多個(gè)服務(wù)器使用相同口令;
及時(shí)更新補(bǔ)?。洪_啟自動(dòng)更新功能并及時(shí)安裝系統(tǒng)補(bǔ)丁,尤其是服務(wù)器類終端;
關(guān)閉高危端口:在不影響工作使用的前提下,建議關(guān)閉135、139、445、3389等高危端口;
主機(jī)加固:對(duì)系統(tǒng)進(jìn)行滲透測(cè)試和安全加固。
06
總結(jié)
通過分析類似這些惡意郵件附件,安全運(yùn)營(yíng)團(tuán)隊(duì)能夠產(chǎn)生內(nèi)部威脅情報(bào),對(duì)于企業(yè)來說,內(nèi)部威脅情報(bào)比外部威脅情報(bào)更具有針對(duì)性。此外,樣本分析也能效判斷惡意程序?qū)ο到y(tǒng)的影響和危害。
在威脅分析能力中,惡意樣本分析只是其中的一部分,但也是比較關(guān)鍵的一部分。作為威脅分析人員,除了惡意樣本自身,也應(yīng)該關(guān)注整個(gè)攻擊事件和攻擊背景的分析,圍繞威脅判斷的完整流程,加速完成事件的響應(yīng)封堵或隔離,改善整體安全狀況。