亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

比特幣偷竊程序Dyreza的實(shí)現(xiàn)思路分析

freebuf   發(fā)布時(shí)間:2015-11-10 10:56:19   作者:佚名   我要評(píng)論
這篇文章主要介紹了比特幣偷竊程序Dyreza的實(shí)現(xiàn)思路分析,Dyreza使用Python語(yǔ)言編寫(xiě),需要的朋友可以參考下

Dyreza,其目的是竊取銀行賬號(hào)和比特幣。整個(gè)流程首先是通過(guò)Upatre進(jìn)行Dyreza的下載,據(jù)研究,目前提供Dyreza下載的服務(wù)器均為路由器(大部分為AirOS和MicroTik)。而攻擊者利用入侵的路由器,存在多種加密的資源包,而受到感染的機(jī)器,會(huì)通過(guò)Upatre下載路由器中存放的加密惡意代碼程序,然后在用戶(hù)系統(tǒng)中進(jìn)行解密后得到Dyreza木馬。

我們要對(duì)其進(jìn)行分析的意義在于,惡意程序Dyreza家族目前存在有許多的變種,但是他們的主要行為軌跡還是存在共性的。我們通過(guò)分析其特性及共性,能更好地進(jìn)行防御。

0×00 樣本分析

-----

樣本:ff3d706015b7b142ee0a8f0ad7ea2911

Dyreza  的可執(zhí)行文件,一個(gè)僵尸網(wǎng)絡(luò)的客戶(hù)端,負(fù)責(zé)執(zhí)行主要的惡意操作。

-----
20151110110626561.png (690×295)

樣本:

5a0e393031eb2accc914c1c832993d0b – Dyreza DLL (32bit)

91b62d1380b73baea53a50d02c88a5c6 – Dyreza DLL (64bit)

-----

0×01行為分析

當(dāng) Dyreza開(kāi)始感染計(jì)算機(jī)的時(shí)候,它擁有較快的擴(kuò)散感染速度。我們可以通過(guò)在進(jìn)程管理中查看到它,同時(shí)最直觀的一點(diǎn),可以發(fā)現(xiàn)許多新的進(jìn)程被創(chuàng)建接著又結(jié)束,像explorer, svchost, taskeng等進(jìn)程,而所進(jìn)行的這一階段,就是為了混淆其執(zhí)行的流程,干擾安全人員的研究和分析。

接下來(lái),它將兩個(gè)通過(guò)正則表達(dá)式 [a-zA-Z]{15}.exe , i.e vfHNLkMCYaxBGFy.exe以偽隨機(jī)碼命名的惡意程序復(fù)制文件放進(jìn)C:\Windows以及%APPDATA%目錄下,然后通過(guò)在任務(wù)調(diào)度中添加一個(gè)新的任務(wù),在每分鐘不斷地執(zhí)行惡意程序樣本,確保惡意程序持續(xù)執(zhí)行。
20151110110649757.png (690×195)

接著通過(guò)將惡意代碼注入到其他進(jìn)程(如svchost, explorer),然后與外界的C&C服務(wù)器進(jìn)行通訊。
20151110110707352.png (690×159)

從以上觀察到的結(jié)果,我們可以在 VirusTotal上查詢(xún)到,上述與svchost,和explorer進(jìn)程進(jìn)行通訊的服務(wù)地址,其實(shí)早已經(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瀏覽器時(shí),它也會(huì)直接將惡意代碼注入到瀏覽器的進(jìn)程中去,然后進(jìn)行非法外聯(lián)。這是該惡意程序與外部C&C服務(wù)器保持連接的方式,同時(shí)也執(zhí)行著監(jiān)控用戶(hù)活動(dòng)以及竊取各類(lèi)身份憑證信息的功能。

通過(guò)研究也可以發(fā)現(xiàn),Dyreza在將獲取到的信息發(fā)送給 C&C服務(wù)器之前,會(huì)將信息作為一個(gè)小型數(shù)據(jù)庫(kù)存放在名為 TEMP的文件夾中。

0×02 代碼分析

環(huán)境檢測(cè)

1、執(zhí)行前的檢測(cè)-Dyreza如果檢測(cè)到機(jī)器上的 cpu數(shù)量少于2個(gè),它將不會(huì)運(yùn)行。該技術(shù)是為了進(jìn)行自我保護(hù),確保自身程序不是運(yùn)行在虛擬機(jī)環(huán)境上。因?yàn)閺哪壳暗氖袌?chǎng)及設(shè)備配置的情況來(lái)看,除了虛擬機(jī)經(jīng)常使用單核cpu之外,一般物理機(jī)都是雙核以上的,而Dyreza也是基于這一點(diǎn)作為判斷依據(jù)的。Dyreza是通過(guò)檢測(cè)進(jìn)程環(huán)境塊下的線(xiàn)程信息塊中的FS:[0x30]區(qū)域的信息來(lái)進(jìn)行判斷。而只有確認(rèn)cpu數(shù)量滿(mǎn)足大于2個(gè)(包括2個(gè))之后,惡意程序才會(huì)繼續(xù)執(zhí)行。
20151110110724922.png (690×148)

2、在執(zhí)行開(kāi)始的時(shí)候,惡意軟件加載額外的表單到一個(gè)新分配的內(nèi)存頁(yè)。在運(yùn)行的過(guò)程中,模塊名和函數(shù)開(kāi)始被解密。

3、執(zhí)行環(huán)境的檢測(cè)-通過(guò)LookupPrivilegeValue函數(shù)中的SeDebugPrivilege 參數(shù),來(lái)判斷是否在調(diào)試器下進(jìn)行安裝,如果檢測(cè)到返回值為非零值,惡意程序的執(zhí)行將終止。
20151110110741255.png (690×555)

4、進(jìn)行有效執(zhí)行通過(guò)如下幾個(gè)檢測(cè)方式。一開(kāi)始,根據(jù)初始的環(huán)境,通過(guò)對(duì)路徑進(jìn)行跟蹤檢測(cè),如當(dāng)程序運(yùn)行時(shí)可執(zhí)行的路徑和參數(shù)。當(dāng)它第一次安裝時(shí),它將會(huì)對(duì)自身進(jìn)行復(fù)制,并將復(fù)制的文件放至 C:\Windows以及%APPDATA% 目錄下,并將復(fù)制的程序作為一個(gè)新的進(jìn)程執(zhí)行安裝。如果它被部署到有效路徑和初始參數(shù)并通過(guò)了驗(yàn)證,則執(zhí)行下一步檢查-確認(rèn)是否是第一次安裝。該步驟是通過(guò)創(chuàng)建一個(gè)特定的全局互斥量(名稱(chēng)為計(jì)算機(jī)名和系統(tǒng)版本的哈希值,通過(guò) GetComputerName, RtlGetVersion兩個(gè)函數(shù)獲?。﹣?lái)實(shí)現(xiàn)的。

5、如果這個(gè)條件滿(mǎn)足,而互斥量也已經(jīng)存在,那么它接下來(lái)將進(jìn)行最重要的一步,執(zhí)行惡意代碼。一開(kāi)始,會(huì)將加密的數(shù)據(jù)和密鑰從可執(zhí)行的資源包中加載。
20151110110800495.png (690×645)

如上圖,T1RY615NR-加密的32位代碼,YS45H26GT -加密的64位代碼,UZGN53WMY-密鑰

接下來(lái)是解包,將代碼取出:
20151110110820059.png (690×376)

解包的算法也很簡(jiǎn)單,key_data中包含了數(shù)值和數(shù)據(jù)-在key_data中數(shù)值的索引列表。我們通過(guò)相應(yīng)的索引列表來(lái)讀取相應(yīng)的數(shù)值。相應(yīng)的代碼如下,


復(fù)制代碼
代碼如下:
</div> <div class="codeText">def decode(data, key_data):
decoded = bytearray()
for i in range(0, len(data)):
val_index = data[i]
decoded.append(key_data[val_index])
return decoded
解密執(zhí)行部分代碼如下,

復(fù)制代碼
代碼如下:
</div> <div class="codeText">import argparse
import hashlib
from Crypto.Cipher import AES
BS = 16
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s : s[:-ord(s[len(s)-1:])]
def aes_decrypt(enc, iv, key):
cipher = AES.new(key, AES.MODE_CBC, iv )
return unpad(cipher.decrypt(enc))

詳細(xì)執(zhí)行代碼,可參考 dyrezadll_decoder.py

解密出來(lái)的文件包括了一個(gè)用于注入的shellcode和一個(gè)用于調(diào)用惡意程序函數(shù)的DLL(兼容32/64位)。

0×03 核心惡意 DLL

在這個(gè)階段,惡意軟件的功能變得非常清晰。dll文件不包含太多混淆信息–它具有明顯的字符串和一個(gè)典型的導(dǎo)入表。

我們可以看到被用于與 C&C服務(wù)器進(jìn)行通訊的字符串。
20151110111011404.png (690×480)

32和64位的DLL都具有相似的功能。兩者之前只有架構(gòu)相關(guān)部分和字符串是不同的。而通過(guò)客戶(hù)端可以對(duì)系統(tǒng)進(jìn)行識(shí)別,然后將信息發(fā)送到 C&C服務(wù)器上。
20151110111033999.png (690×529)

類(lèi)似的程序在64位版本的DLL,只有在其硬編碼字符串上用“_64bit”代替了“_32bit”:
20151110111233260.png (690×188)

同時(shí),對(duì)網(wǎng)絡(luò)設(shè)置進(jìn)行檢查(確認(rèn)并告知與C&C客戶(hù)端是否可以建立后連接–命令:autobackconn)
20151110111250435.png (690×314)

將惡意模塊注入到瀏覽器中執(zhí)行代碼:
20151110111318188.png (690×209)

接下來(lái),嘗試發(fā)送竊取的賬戶(hù)信息。
20151110111339639.png (690×414)

此外除了監(jiān)測(cè)瀏覽器外,它也收集計(jì)算機(jī)上相應(yīng)的基本信息(比如配置,存在用戶(hù)等)
20151110111403195.png (690×773)

該惡意軟件不僅竊取信息和嗅探用戶(hù)的瀏覽活動(dòng),并且還試圖對(duì)系統(tǒng)進(jìn)行完全控制,目的是執(zhí)行各種shell命令,如進(jìn)行系統(tǒng)關(guān)機(jī)等,部分例子如下:
20151110111423731.png (690×740)

嘗試創(chuàng)建具備管理員權(quán)限的新用戶(hù):
20151110111518004.png (690×183)

可通過(guò)命令A(yù)UTOKILLOS來(lái)進(jìn)行關(guān)機(jī)操作。

0×04 C&Cs


該僵尸網(wǎng)絡(luò)為了防止被檢測(cè)到,服務(wù)器與客戶(hù)端之間的通信是采用加密的方式,并采取了許多策略。


首先,C&C服務(wù)器的地址是隨機(jī)從硬編碼池里面挑選的。該地址池是存儲(chǔ)在Dyreza DLL(通過(guò)AES加密算法進(jìn)行加密的)的資源包中。接下來(lái),在執(zhí)行payload的時(shí)候,我們可以看到它是如何進(jìn)行解密的。
20151110111540389.png (690×420)

以上,是本次的分析研究探討,具體的Dyreza代碼,可以在dyreza中獲取。

相關(guān)文章

最新評(píng)論