您好,登錄后才能下訂單哦!
Wannacry勒索軟件母體主程序逆向分析
好了,說(shuō)正題,我從這里下載了Wannacry樣本,一些枯燥的匯編分析細(xì)節(jié)就不多講,我們盡量快速的了解到整體過(guò)程。
首先會(huì)通過(guò)一個(gè)函數(shù)算出一個(gè)標(biāo)識(shí),我們將這個(gè)函數(shù)命名為getDisplayName,本質(zhì)就是通過(guò)GetComputerNameW獲取計(jì)算機(jī)名然后取隨機(jī)數(shù)算出一個(gè)唯一對(duì)應(yīng)的標(biāo)識(shí)(我們命名為DisplayName),后面的執(zhí)行過(guò)程會(huì)用到這個(gè)標(biāo)識(shí)
接下來(lái)會(huì)做幾件事情,任意一項(xiàng)未執(zhí)行成功都會(huì)退出
檢查命令行參數(shù)是否為兩個(gè),并且是否有/i這個(gè)參數(shù)
檢查并嘗試在ProgramData目錄 或 Intel目錄 或 Temp系統(tǒng)臨時(shí)目錄下創(chuàng)建前面算出的DisplayName為標(biāo)識(shí)的目錄
將這個(gè)工作目錄設(shè)置為6也就是0×2 和 0×4(FILE_ATTRIBUTE_HIDDEN 和 FILE_ATTRIBUTE_SYSTEM )隱藏和系統(tǒng)
創(chuàng)建自身的副本并命名為tasksche.exe
將tasksche.exe優(yōu)先以服務(wù)方式啟動(dòng),如果失敗則以普通進(jìn)程方式啟動(dòng)(副本啟動(dòng)的入口點(diǎn)和原始文件啟動(dòng)的入口點(diǎn)不同,從而實(shí)現(xiàn)不同的邏輯)
通過(guò)互斥體Global\\MsWinZonesCacheCounterMutexA來(lái)判斷是否啟動(dòng)成功
以上幾項(xiàng)都成功完成后流程才會(huì)繼續(xù),否則終止。
創(chuàng)建注冊(cè)表項(xiàng)HKEY_LOCAL_MACHINE\Software\WanaCrypt0r\wd ,寫(xiě)入當(dāng)前路徑值
從資源中釋放PE文件taskdl.exe、taskse.exe,為了免殺,資源中的PE文件是加了密的,釋放過(guò)程中會(huì)解密,比較繁瑣
會(huì)給釋放的資源傳一個(gè)類似key之類的參數(shù)過(guò)去,參數(shù)值為WNcry@2ol7
然后在當(dāng)前目錄下讀取c.wnry文件
如果讀取到了c.wnry文件,就會(huì)將13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94通過(guò)一個(gè)隨機(jī)數(shù)加密后寫(xiě)回到c.wnry,而這一串?dāng)?shù)字就是***的比特幣地址,也就是說(shuō)c.wnry文件里保存的是加密后的***的比特幣地址
上圖就是c.wnry文件的加密算法,這個(gè)加密很簡(jiǎn)單,只用了兩句來(lái)實(shí)現(xiàn)
下面的臨時(shí)解決方案的自動(dòng)化工具里就用到了這三個(gè)***的比特幣地址
13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94
12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw
115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn
執(zhí)行這兩句命令
attrib +h .
icacls . /grant Everyone:F /T /C /Q
attrib命令將DisplayName工作目錄設(shè)置為隱藏
icacls命令開(kāi)放目錄的用戶權(quán)限
接下來(lái)是動(dòng)態(tài)獲取所需的API地址
首先是獲取kernel32.dll中的文件相關(guān)的API
然后是獲取advapi32.dll中的加解密相關(guān)的API
CSP用的是系統(tǒng)默認(rèn)或者是RSA and AES
加密文件以WANACRY!為特征頭
被加密的文件涉及到各種文檔、文本、虛擬機(jī)、壓縮包、鏡像、圖片、視頻、音樂(lè)、源代碼、腳本、數(shù)據(jù)庫(kù)、郵件、證書(shū)等近200種文件類型,幾乎涵蓋了方方面面,但確沒(méi)有BT種子文件,看來(lái)***還是有所為有所不為啊^_^
網(wǎng)上流傳了一個(gè)臨時(shí)解決方案的思路是:
獲取***收款地址的交易記錄
將別人支付贖金的記錄信息(交易hash值)冒充是自己付的發(fā)送給***來(lái)蒙混過(guò)關(guān)(挺賊的^_^)
通過(guò)https://btc.com/可以查詢到交易記錄,但是我們需要有***的收款地址,上面我們已經(jīng)分析出來(lái)了
13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94
12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw
115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn
網(wǎng)上有個(gè)python的自動(dòng)化腳本,這里再優(yōu)化一下,而且還有很多人不是搞IT的,不懂什么python,于是做了一個(gè)傻瓜式的exe程序來(lái)自動(dòng)獲取交易記錄
工具鏈接: http://pan.baidu.com/s/1hsbwQaC 密碼: p263
從下午開(kāi)始一直坐在電腦前就沒(méi)起過(guò)身,分析、碼字、寫(xiě)工具,一晃現(xiàn)在都到半夜了,搞這行傷不起啊。寫(xiě)不動(dòng)了,今天先休息了。不過(guò)也能猜到其他還要做什么,就是掃端口,找到開(kāi)放了445端口SMBv1的就使用NSA老大的Eternalblue Doublepulsar實(shí)現(xiàn)蠕蟲(chóng)式傳播
最后再分享下這次罪魁禍?zhǔn)椎墓ぞ撸?/p>
https://github.com/x0rz/EQGRP_Lost_in_Translation
https://github.com/misterch0c/shadowbroker
是工具(沒(méi)有源碼),用了一個(gè)python***框架Fuzzbunch簡(jiǎn)稱fb,這個(gè)框架怎么用,可以看這里http://www.freebuf.com/articles/system/133853.html
微軟的補(bǔ)丁信息:https://blogs.technet.microsoft.com/msrc/2017/04/14/protecting-customers-and-evaluating-risk/
文章地址:http://www.freebuf.com/vuls/134602.html
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。