Dyreza,其目的是竊取銀行賬號和比特幣。整個流程首先是通過Upatre進(jìn)行Dyreza的下載,據(jù)研究,目前提供Dyreza下載的服務(wù)器均為路由器(大部分為AirOS和MicroTik)。而攻擊者利用入侵的路由器,存在多種加密的資源包,而受到感染的機(jī)器,會通過Upatre下載路由器中存放的加密惡意代碼程序,然后在用戶系統(tǒng)中進(jìn)行解密后得到Dyreza木馬。 我們要對其進(jìn)行分析的意義在于,惡意程序Dyreza家族目前存在有許多的變種,但是他們的主要行為軌跡還是存在共性的。我們通過分析其特性及共性,能更好地進(jìn)行防御。 0×00 樣本分析 ----- 樣本:ff3d706015b7b142ee0a8f0ad7ea2911 Dyreza 的可執(zhí)行文件,一個僵尸網(wǎng)絡(luò)的客戶端,負(fù)責(zé)執(zhí)行主要的惡意操作。 ----- 樣本: 5a0e393031eb2accc914c1c832993d0b – Dyreza DLL (32bit) 91b62d1380b73baea53a50d02c88a5c6 – Dyreza DLL (64bit) ----- 0×01行為分析 當(dāng) Dyreza開始感染計算機(jī)的時候,它擁有較快的擴(kuò)散感染速度。我們可以通過在進(jìn)程管理中查看到它,同時最直觀的一點,可以發(fā)現(xiàn)許多新的進(jìn)程被創(chuàng)建接著又結(jié)束,像explorer, svchost, taskeng等進(jìn)程,而所進(jìn)行的這一階段,就是為了混淆其執(zhí)行的流程,干擾安全人員的研究和分析。 接下來,它將兩個通過正則表達(dá)式 [a-zA-Z]{15}.exe , i.e vfHNLkMCYaxBGFy.exe以偽隨機(jī)碼命名的惡意程序復(fù)制文件放進(jìn)C:\Windows以及%APPDATA%目錄下,然后通過在任務(wù)調(diào)度中添加一個新的任務(wù),在每分鐘不斷地執(zhí)行惡意程序樣本,確保惡意程序持續(xù)執(zhí)行。 接著通過將惡意代碼注入到其他進(jìn)程(如svchost, explorer),然后與外界的C&C服務(wù)器進(jìn)行通訊。 從以上觀察到的結(jié)果,我們可以在 VirusTotal上查詢到,上述與svchost,和explorer進(jìn)程進(jìn)行通訊的服務(wù)地址,其實早已經(jīng)被進(jìn)行標(biāo)記為惡意地址了,主要的結(jié)果如下, 141.8.226.14 -> virustotal/141.8.226.14/information 83.241.176.230 -> virustotal/83.241.176.230/information 197.231.198.234 -> virustotal/197.231.198.234/information/ 而當(dāng)安裝任意web瀏覽器時,它也會直接將惡意代碼注入到瀏覽器的進(jìn)程中去,然后進(jìn)行非法外聯(lián)。這是該惡意程序與外部C&C服務(wù)器保持連接的方式,同時也執(zhí)行著監(jiān)控用戶活動以及竊取各類身份憑證信息的功能。 通過研究也可以發(fā)現(xiàn),Dyreza在將獲取到的信息發(fā)送給 C&C服務(wù)器之前,會將信息作為一個小型數(shù)據(jù)庫存放在名為 TEMP的文件夾中。 0×02 代碼分析 環(huán)境檢測 1、執(zhí)行前的檢測-Dyreza如果檢測到機(jī)器上的 cpu數(shù)量少于2個,它將不會運行。該技術(shù)是為了進(jìn)行自我保護(hù),確保自身程序不是運行在虛擬機(jī)環(huán)境上。因為從目前的市場及設(shè)備配置的情況來看,除了虛擬機(jī)經(jīng)常使用單核cpu之外,一般物理機(jī)都是雙核以上的,而Dyreza也是基于這一點作為判斷依據(jù)的。Dyreza是通過檢測進(jìn)程環(huán)境塊下的線程信息塊中的FS:[0x30]區(qū)域的信息來進(jìn)行判斷。而只有確認(rèn)cpu數(shù)量滿足大于2個(包括2個)之后,惡意程序才會繼續(xù)執(zhí)行。 2、在執(zhí)行開始的時候,惡意軟件加載額外的表單到一個新分配的內(nèi)存頁。在運行的過程中,模塊名和函數(shù)開始被解密。 3、執(zhí)行環(huán)境的檢測-通過LookupPrivilegeValue函數(shù)中的SeDebugPrivilege 參數(shù),來判斷是否在調(diào)試器下進(jìn)行安裝,如果檢測到返回值為非零值,惡意程序的執(zhí)行將終止。 4、進(jìn)行有效執(zhí)行通過如下幾個檢測方式。一開始,根據(jù)初始的環(huán)境,通過對路徑進(jìn)行跟蹤檢測,如當(dāng)程序運行時可執(zhí)行的路徑和參數(shù)。當(dāng)它第一次安裝時,它將會對自身進(jìn)行復(fù)制,并將復(fù)制的文件放至 C:\Windows以及%APPDATA% 目錄下,并將復(fù)制的程序作為一個新的進(jìn)程執(zhí)行安裝。如果它被部署到有效路徑和初始參數(shù)并通過了驗證,則執(zhí)行下一步檢查-確認(rèn)是否是第一次安裝。該步驟是通過創(chuàng)建一個特定的全局互斥量(名稱為計算機(jī)名和系統(tǒng)版本的哈希值,通過 GetComputerName, RtlGetVersion兩個函數(shù)獲取)來實現(xiàn)的。 5、如果這個條件滿足,而互斥量也已經(jīng)存在,那么它接下來將進(jìn)行最重要的一步,執(zhí)行惡意代碼。一開始,會將加密的數(shù)據(jù)和密鑰從可執(zhí)行的資源包中加載。 如上圖,T1RY615NR-加密的32位代碼,YS45H26GT -加密的64位代碼,UZGN53WMY-密鑰 接下來是解包,將代碼取出: 解包的算法也很簡單,key_data中包含了數(shù)值和數(shù)據(jù)-在key_data中數(shù)值的索引列表。我們通過相應(yīng)的索引列表來讀取相應(yīng)的數(shù)值。相應(yīng)的代碼如下,
def decode(data, key_data): import argparse return unpad(cipher.decrypt(enc)) 解密出來的文件包括了一個用于注入的shellcode和一個用于調(diào)用惡意程序函數(shù)的DLL(兼容32/64位)。 0×03 核心惡意 DLL 在這個階段,惡意軟件的功能變得非常清晰。dll文件不包含太多混淆信息–它具有明顯的字符串和一個典型的導(dǎo)入表。 我們可以看到被用于與 C&C服務(wù)器進(jìn)行通訊的字符串。 32和64位的DLL都具有相似的功能。兩者之前只有架構(gòu)相關(guān)部分和字符串是不同的。而通過客戶端可以對系統(tǒng)進(jìn)行識別,然后將信息發(fā)送到 C&C服務(wù)器上。 類似的程序在64位版本的DLL,只有在其硬編碼字符串上用“_64bit”代替了“_32bit”: 同時,對網(wǎng)絡(luò)設(shè)置進(jìn)行檢查(確認(rèn)并告知與C&C客戶端是否可以建立后連接–命令:autobackconn) 將惡意模塊注入到瀏覽器中執(zhí)行代碼: 接下來,嘗試發(fā)送竊取的賬戶信息。 此外除了監(jiān)測瀏覽器外,它也收集計算機(jī)上相應(yīng)的基本信息(比如配置,存在用戶等) 該惡意軟件不僅竊取信息和嗅探用戶的瀏覽活動,并且還試圖對系統(tǒng)進(jìn)行完全控制,目的是執(zhí)行各種shell命令,如進(jìn)行系統(tǒng)關(guān)機(jī)等,部分例子如下: 嘗試創(chuàng)建具備管理員權(quán)限的新用戶: 可通過命令A(yù)UTOKILLOS來進(jìn)行關(guān)機(jī)操作。 0×04 C&Cs
以上,是本次的分析研究探討,具體的Dyreza代碼,可以在dyreza中獲取。 |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級,為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務(wù),與站長一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨!
掃一掃,關(guān)注站長網(wǎng)微信