該惡意木馬樣本爲運行於winodws平臺上的PE文件(名稱:evtdiag.exe)。文件大小爲64KB,編譯時間是2016年2月5日。算法
經分析,該樣本爲定製的攻擊SWIFT客戶端程序的惡意木馬程序,未作加殼和代碼混淆處理,主要功能是與本地的SWIFT客戶端軟件Alliance交互。該木馬以windows服務形式運行,經過遍歷讀取SWIFT客戶端軟件Alliance安裝目錄下的配置文件和交易記錄文件,從而獲取Alliance的重要受權等配置文件。經過監控Alliance軟件的收發報文並打印日誌導出文件,攻擊者經過監控日誌分析學習Alliance軟件的操做流程。該木馬能夠查詢並修改Oracle數據庫中的數據,完成相關帳戶信息的篡改,以便讓程序完成僞造的轉帳請求。該惡意木馬還經過一系列技術手段完成痕跡的消除,好比在獲取Oracle操做結果時關閉數據校驗和反饋、修改Oracle鏈接進程中內存數據繞過Oracle數據校驗,並在最後刪除數據庫中獲取的帳戶相關數據信息。sql
能夠看出,攻擊者徹底獲取了SWIFT客戶端主機的控制權限,因此經過打印日誌記錄各類命令執行結果並深刻分析。木馬程序編寫者具備專業的金融知識背景,徹底熟悉SWIFT Alliance的操做流程,深刻了解該軟件的工做原理,甚至是數據庫表結構和文件網絡等各種信息格式,另外還作了不少反偵查的技術操做。數據庫
本次分析基於PE樣本(名稱:evtdiag.exe)進行,分析環境爲WinXP,靜態代碼分析工具爲IDA,動態調試工具爲Ollydbg。swift
該惡意木馬在啓動時接收不一樣的啓動參數,從而實現不一樣的功能。所接收參數有-P、-g、-svc、resume、pause、on、off、queue等。如圖2-1所示。其中on、pause、resume、off、queue都是對日誌記錄功能的操做,-svc參數則是將木馬以windows服務方式啓動。windows
圖2-1 啓動參數分析網絡
如圖2-2所示,-svc參數則將木馬程序以windows服務方式啓動。該操做調用StartServiceCtrlDispatcherA函數完成,所運行的服務的名字爲evtsys.exe,而且在服務啓動以後才進行後續的操做。函數
圖2-2 以windows服務方式啓動工具
該惡意木馬運行中,經過枚舉系統中的進程,查找加載了Oracle鏈接庫liboradb.dll的進程,該進程是SWIFT客戶端軟件Alliance與Oracle數據庫進行交互所依賴的。以下圖2-3所示。學習
圖2-3 枚舉加載了liboradb.dll模塊的進程加密
如圖2-4所示,木馬文件找到加載了liboradb.dll模塊的進程文件後,經過修改內存的方式,對模塊中的關鍵數據進行篡改。結合後續的一些運行行爲初步推斷,是對模塊中的數據校驗功能進行篡改,防止在修改帳目過程當中報錯。
圖2-4 修改Oracle鏈接進程中的內存數據
惡意木馬開啓日誌打印功能sub_409460,便於記錄每一步操做中的數據結果,如圖2-5所示。同時進入關鍵信息竊取邏輯sub_409AF0。
圖2-5 開啓日誌打印記錄功能
以下圖2-6便進入關鍵竊取信息的處理邏輯sub_409AF0,前面提到,當木馬以服務方式啓動時,便會執行該功能。
圖2-6 sub_409AF0函數處理邏輯
圖2-7 服務方式啓動後即開始竊取信息
該惡意木馬接着遍歷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目錄中的特定文件
該木馬程序經過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 刪除數據庫中相關信息
在肯定配置文件路徑和文件信息以後,循環處理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的操做流程,深刻了解該軟件的工做原理,甚至是數據庫表結構和文件網絡等各種信息格式,另外還作了不少反偵查的技術操做。