前言:剛拿到這個樣本,然后花了些時間看了看,弄了個報告交差了。很多的細節分析純是猜測,因為我對SWIFT具體業務邏輯也不了解。當參考吧。
第一章 分析概述
該惡意木馬樣本為運行於winodws平台上的PE文件(名稱:evtdiag.exe)。文件大小為64KB,編譯時間是2016年2月5日。
經分析,該樣本為定制的攻擊SWIFT客戶端程序的惡意木馬程序,未做加殼和代碼混淆處理,主要功能是與本地的SWIFT客戶端軟件Alliance交互。該木馬以windows服務形式運行,通過遍歷讀取SWIFT客戶端軟件Alliance安裝目錄下的配置文件和交易記錄文件,從而獲取Alliance的重要授權等配置文件。通過監控Alliance軟件的收發報文並打印日志導出文件,攻擊者通過監控日志分析學習Alliance軟件的操作流程。該木馬可以查詢並修改Oracle數據庫中的數據,完成相關賬戶信息的篡改,以便讓程序完成偽造的轉賬請求。該惡意木馬還通過一系列技術手段完成痕跡的消除,比如在獲取Oracle操作結果時關閉數據校驗和反饋、修改Oracle連接進程中內存數據繞過Oracle數據校驗,並在最后刪除數據庫中獲取的賬戶相關數據信息。
可以看出,攻擊者完全獲取了SWIFT客戶端主機的控制權限,所以通過打印日志記錄各種命令執行結果並深入分析。木馬程序編寫者具有專業的金融知識背景,完全熟悉SWIFT Alliance的操作流程,深入了解該軟件的工作原理,甚至是數據庫表結構和文件網絡等各類信息格式,另外還做了很多反偵查的技術操作。
1.1 分析環境和方法
本次分析基於PE樣本(名稱:evtdiag.exe)進行,分析環境為WinXP,靜態代碼分析工具為IDA,動態調試工具為Ollydbg。
第二章 樣本分析過程
2.1 啟動方式分析
該惡意木馬在啟動時接收不同的啟動參數,從而實現不同的功能。所接收參數有-P、-g、-svc、resume、pause、on、off、queue等。如圖2-1所示。其中on、pause、resume、off、queue都是對日志記錄功能的操作,-svc參數則是將木馬以windows服務方式啟動。
圖2-1 啟動參數分析
如圖2-2所示,-svc參數則將木馬程序以windows服務方式啟動。該操作調用StartServiceCtrlDispatcherA函數完成,所運行的服務的名字為evtsys.exe,並且在服務啟動之后才進行后續的操作。
圖2-2 以windows服務方式啟動
2.2 枚舉Oracle連接進程,修改內存數據
該惡意木馬運行中,通過枚舉系統中的進程,查找加載了Oracle連接庫liboradb.dll的進程,該進程是SWIFT客戶端軟件Alliance與Oracle數據庫進行交互所依賴的。如下圖2-3所示。
圖2-3 枚舉加載了liboradb.dll模塊的進程
如圖2-4所示,木馬文件找到加載了liboradb.dll模塊的進程文件后,通過修改內存的方式,對模塊中的關鍵數據進行篡改。結合后續的一些運行行為初步推斷,是對模塊中的數據校驗功能進行篡改,防止在修改賬目過程中報錯。
圖2-4 修改Oracle連接進程中的內存數據
2.3 開啟日志打印功能並進入關鍵處理函數
惡意木馬開啟日志打印功能sub_409460,便於記錄每一步操作中的數據結果,如圖2-5所示。同時進入關鍵信息竊取邏輯sub_409AF0。
圖2-5 開啟日志打印記錄功能
如下圖2-6便進入關鍵竊取信息的處理邏輯sub_409AF0,前面提到,當木馬以服務方式啟動時,便會執行該功能。
圖2-6 sub_409AF0函數處理邏輯
圖2-7 服務方式啟動后即開始竊取信息
2.4 遍歷SWIFT客戶端軟件Alliance目錄文件
該惡意木馬接着遍歷swift客戶端軟件Alliance的安裝目錄,拼接不同的目錄路徑,讀取Alliance目錄文件,如下圖2-8所示。
圖2-8 讀取swift客戶端軟件alliance的目錄文件
其中,推斷gpca.dat文件可能為alliance軟件關鍵的配置文件,可能保存了用戶轉賬過程中的信息,並進行了加密。該木馬代碼獲取到該文件后進行了有效的破解。破解算法如下圖2-9所示。
圖2-9 可能的pgca.cat文件內容的解密算法
如果該木馬程序未讀取到gpca.dat時,會通過打印日志來記錄。如下圖2-10所示的CFG FAIL記錄。由此來推斷,gpca.cat是配置文件。
圖2-10 讀取swift客戶端軟件alliance的目錄文件
另外,alliance目錄下的mcm目錄下存放了in和out兩個子文件夾,該木馬程序對這兩個目錄進行了遍歷讀取,如圖2-11所示,並匹配查找其中.prc和fal文件,然后讀取文件內容,如圖2-12所示。初步推斷為SWIFT轉賬時的轉入和轉出操作時對應的目錄,其中存放了轉賬時轉入或者轉出的數據記錄文件。
圖2-11 遍歷Alliance的in和out目錄
圖2-12 遍歷匹配in、out目錄中的特定文件
2.5 操作Oracle數據庫,進行查詢、更新等操作
該木馬程序通過Alliance軟件操作數據庫,對Oracle數據庫進行查詢、篡改和刪除操作。同時將Oracle的相關屬性進行修改,清除Alliance客戶端軟件的記錄,同時將查詢到的數據信息導出到某一個文件中。程序最后還執行delete語句刪除Oracle的數據記錄。
如下圖2-13所示,該木馬程序通過設置一系列的set命令將數據反饋和校驗關閉。然后通過創建進程執行sql語句,將每個執行結果導出到一個文件中,同時Alliance並未留下操作記錄。
圖2-13 更改 Oracle相關屬性以屏蔽數據操作記錄
如下圖2-14所示,查詢結果有Login字段。推斷該操作應該是登錄的授權信息的查詢過程。
圖2-14 查詢登錄的賬戶信息
如下圖2-15所示,該查詢語句中有FIN_CCY_AMOUNT字段,推斷是在查詢賬戶的金額信息。
圖2-15 查詢賬戶金額信息
如下圖2-16所示,該UPDATE語句中有FIN_CCY_AMOUNT字段,推斷是在更新篡改賬戶的金額信息。
圖2-16 修改賬戶金額信息
如下圖2-17所示,最后通過delete語句刪除數據庫的信息,推測是轉賬交易結束后,對數據庫記錄的刪除,以消除痕跡。
圖2-17 刪除數據庫中相關信息
2.6 監控SWIFT客戶端軟件Alliance的通信信息
在確定配置文件路徑和文件信息之后,循環處理Alliance客戶端軟件的通信信息,即監控該軟件發出和接收的信息,如圖2-18所示。將信息記錄日志導出。推測攻擊者利用該監測功能觀察SWIFT通信過程中的交換報文格式,從而偽造轉賬的報文請求,篡改數據庫,從而讓SWIFT按照設定的指定發送轉賬交易請求,從而完成攻擊過程。
圖2-18 監控Alliance軟件的通信信息
第三章 分析總結
該惡意木馬樣本為運行於winodws平台上的PE文件。文件大小為64KB,編譯時間是2016年2月5日。
經分析,該樣本為定制的攻擊SWIFT客戶端程序的惡意木馬程序,未做加殼和代碼混淆處理,主要功能是與本地的SWIFT客戶端軟件Alliance交互。該木馬以windows服務形式運行,通過遍歷讀取SWIFT客戶端軟件Alliance安裝目錄下的配置文件和交易記錄文件,從而獲取Alliance的重要授權等配置文件。通過監控Alliance軟件的收發報文並打印日志導出文件,攻擊者通過監控日志分析學習Alliance軟件的操作流程。該木馬可以查詢並修改Oracle數據庫中的數據,完成相關賬戶信息的篡改,以便讓程序完成偽造的轉賬請求。該惡意木馬還通過一系列技術手段完成痕跡的消除,比如在獲取Oracle操作結果時關閉數據校驗和反饋、修改Oracle連接進程中內存數據繞過Oracle數據校驗,並在最后刪除數據庫中獲取的賬戶相關數據信息。
可以看出,攻擊者完全獲取了SWIFT客戶端主機的控制權限,所以通過打印日志記錄各種命令執行結果並深入分析。木馬程序編寫者具有專業的金融知識背景,完全熟悉SWIFT Alliance的操作流程,深入了解該軟件的工作原理,甚至是數據庫表結構和文件網絡等各類信息格式,另外還做了很多反偵查的技術操作。