最近我們收到了一封主題為“你的退稅”的郵件,郵件附件中包含了一個Dridex變種木馬和一個受密碼保護的宏。這個特殊的Dridex新變種采取了一些自我保護措施:例如添加了一個長密碼來防止被分析,程序內部添加了對虛擬機環境的檢測功能,使得它一旦它檢測到自己運行在虛擬機環境,就能自動退出運行。
本文就來一步一步對該木馬新變種進行分析,并通過Python腳本破解它的宏密碼;分析過程中,我們通過修改木馬的相關代碼,廢除了它對虛擬機環境的檢測功能,使得我們能夠在虛擬機中運行并分析該木馬。
首先,看一下釣魚郵件的截圖:
深入分析擅長“自我保護”的網銀木馬Dridex
一旦打開附件,惡意軟件將試圖運行宏。對Dridex來說,這不是什么新東西,接下來就出現了啟用宏的正常選項。
針對前面得到的Dridex樣本,我按下Alt+F11獲取該宏并對其進行檢測,然而攻擊者使用了密碼來保護它的宏。
參考上一篇對Dridex分析的博文,我使用了跟它相同的技術。為了破解這個密碼,我使用一些我知道的東西創建了一個空excel文件。然而,因為不知道密碼的位數,我不得不多次改變長度來破解,發現最終工作的密碼是一個擁有19個字符的密碼。
在修改這些字符并重新打開excel文件之后,按Alt+F11出現了以下宏頁面,下面我們看一下里面有什么內容(圖2)。
深入分析擅長“自我保護”的網銀木馬Dridex
通過展開模塊和類(圖3),我們可以看到里面包含了很多其他的模塊和類。看來,攻擊者付出了額外的努力來混淆他們的代碼。
深入分析擅長“自我保護”的網銀木馬Dridex
通過查看模塊文件夾下的“load”項,我們發現一些有趣的子程序,其中一個提到了調試技術(圖4)和可能的沙箱逃避策略。
通過查看其他模塊,我們發現模塊“dfsdf”中包含了函數IsVirtualPCPresent()以及實現代碼,該函數在“load”模塊中被調用。接著查看樣本宏代碼,其中有關虛擬機檢測和沙箱逃避技術的代碼令人印象深刻(圖5)。
通過查詢OSINT的報道,發現這段代碼至少從2008年就已經存在,貌似來源于一個西班牙黑客論壇。
攻擊者甚至尋找Sandboxie(圖6)和Anubis沙箱(圖7)。
既然現在我們知道代碼的位置了(圖8),那么下一步我們需要解決如何到達那里,并查看下一階段的攻擊。然而,有一個問題:我們感興趣的代碼卻是一堆混亂的數據(圖9)。
然而,當你查看宏里面的其他函數和模塊時,你將發現攻擊者對代碼做了很好的混淆工作。
雖然很難找出這些函數是干什么用的,但是我們可以看到一個子程序,它包含了有關虛擬機檢測的一些信息(圖10),然后是調用了編碼數據(圖11)的代碼。對于大多數惡意軟件來說,它們都會首先檢測是否存在合適的運行環境,如果檢測滿足條件,那么它將對重要的函數進行解碼。明白了這一點,就找到了我們將要“攻擊”惡意程序的地方。
通過修改包含虛擬機檢測代碼的函數,我們可以取消它對安全機制的檢測。此外,我們還可以在我們感興趣的數據位置設置一個斷點,以此來查看當代碼執行時,我們是否跳轉到了預期的位置。
在保存修改的.xls文件并重新執行它之后,我們將啟用宏。如果我們進入文件并運行了宏,可以看到(圖12)代碼停在了我們的斷點處,成功繞過了攻擊者所有的反虛擬機、反調試等程序。
成功繞過之后,我們看一下編碼數據,這些數據被存儲到了變量oPOJidsf中。好消息是,我們已經來到了這里,然而目前來看我們還沒有辦法查看這些數據。如果我們在代碼的下一行處添加一個消息框(圖13),并在這里設置一個斷點,那么我們將能夠查看攻擊者試圖向變量oPOJidsf中輸出的內容(圖14)。
因為很難從消息框中復制、粘貼(圖15),所以我們可以將這些數據寫入到Excel文件中的一個單元格中,然后復制并粘貼這些內容(圖16)。
簡而言之,攻擊者將試圖從IP地址85.143.166.190處下載一個文件,并將其保存為一個擴展名為.exe的CAB文件,保存目錄為%temp%,然后啟動它。
現在,我們可以構造一個GET請求,用以請求該文件(圖17),作者寫這篇分析時,該文件仍存在于服務器上。
有趣的是,惡意軟件是以.exe格式(圖18)下載的。
雖然該腳本期望下載的是一個cab文件,但即使擴展名不是.cab的文件也能夠正常工作,例如擴展名為.exe時。這可能是攻擊者的一個小掩飾手段,或者只是另一種不使用“copy”指令的方法。
一旦惡意軟件成功連接,它會作為95.163.121.33的信標(圖19),該IP就是它發送信息的目標地址。
從惡意軟件的角度來看,該樣本并不是很完美。從上到下,第一個可疑行為是對root目錄的POST請求。雖然這可能是合法請求,但這是可疑流量一個很好的預警指標。
第二個有趣的區域是內容類型。不得不再次懷疑,為什么要下載這個文件?而且它看起來也不像是視頻文件。
第三個有趣的地方是從https://google.com的引用字段。當你搜索并點擊一個鏈接時,大部分情況應該是以GET方式請求頁面,而不是POST。而此時這種情況,這樣做完全說不通。
最后一個可疑點是Host字段,因為通常情況下這個字段應該包含請求的域名,但是本例中,它并沒有一個真正的域名(圖20)。
此外,這個惡意軟件還與下面兩個IP地址通信:95.163.121.33和87.236.215.105。
惡意軟件樣本下載地址:
.xls文件
https://www.virustotal.com/en/file/9afa90370cfd217ae1ec36e752a393537878a2f3b5f9159f61690e7790904b0d/analysis/
.exe文件:
https://www.virustotal.com/en/file/37730a644aed8c76d8cc55bd2740c37d3ec488d3fa9b7c29aec4b52c160f0322/analysis/
附:破解Dridex的宏密碼
想要成功進行上面的分析,取決于一件事:破解Dridex的宏密碼。利用這些文件,很容易利用一個正常無害的xls文件進行反復實驗,以此來猜解密碼長度。為了簡化這些操作,我寫了一個腳本,它將嘗試從1個一直到20個字符長度,來破解宏密碼。圖21是腳本代碼的截圖。
圖22顯示了成功破解密碼時的輸出:
圖22 輸出內容
文章來源:FreeBuf黑客與極客(FreeBuf.COM)