病毒分析報告html
樣本名c++ |
WannaCrypt0r算法 |
版本網絡 |
原版函數 |
時間工具 |
2018-05-08測試 |
平臺加密 |
Windows 7-32位spa |
目錄命令行
1.樣本概況... 3
1.1 樣本信息... 3
1.2 測試環境及工具... 3
1.3 分析目標... 3
1.4 樣本行爲分析... 3
1.4.1查殼... 3
1.4.2 原樣本分析... 4
1.4.3 tasksche.exe分析... 6
1.4.3 crypt.dll分析... 12
2,感謝... 17
病毒名稱: 永恆之藍
所屬家族: 勒索性病毒/蠕蟲病毒(Worm)
大小: 3723264 bytes
MD5值: DB349B97C37D22F5EA1D1841E3C89EB4
SHA1值: E889544AFF85FFAF8B0D0DA705105DEE7C97FE26
CRC32: 9FBB1227
Win7 32位、OD/IDA/x64DBG/火絨劍/ExeiofoPE/
分析病毒利用漏洞方式,網絡鏈接,病毒的惡意行爲
Exeinfo 可查是該程序無殼,使用的是vc++/MFC 程序編寫
進入WinMain後,能夠發現入口處程序會嘗試鏈接一個域名:
http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
成功鏈接則程序不展開相關行爲;不然執行sub_408090;
在sub_408090函數內部,分爲兩個模塊:
在第一輪程序執行的是條件爲false的模塊,其功能主要是建立服務,釋放並執行一個tasksche.exe /i。
建立服務:
建立是一個名爲mssecsvc2.0,服務說明爲「Microsoft Security Center (2.0) Service」的是服務:
原始樣本會從資源中加載,釋放一個名爲tasksche.exe的文件,而且以tasksche.exe/i的方式啓動:
接着分析tasksche.exe;
tasksche.exe啓動後,首先,會將自身拷貝到C:\intel\lgxbrzjmuzoytl531
檢查命令行參數中是否有/i這個參數:
sub_401B5F中:檢查並嘗試在ProgramData目錄 或 Intel目錄 或 Temp系統臨時目錄 下建立前面以計算機名算出的標識的目錄:
將建立的目錄設置爲6即爲隱藏和系統:(FILE_ATTRIBUTE_HIDDEN 和 FILE_ATTRIBUTE_SYSTEM )
複製本身並重命名爲tasksche.exe:
將taskche.exe以服務方式啓動,若是失敗就以普通方式(/i)啓動,這樣啓動的入口點不同了,內部實現的邏輯就不同了:
互斥體檢測啓動是否成功:
上面幾項都成功完成後才能繼續,不然退出
建立註冊表項HKEY_CURRENT_USER\Software\WanaCrypt0r\wd,寫入當前路徑值:
而後就從資源中釋放加密過的taskdlexe、taskse.exe,有比較複雜的解密函數,key爲Wncry@2ol7:
在當前目錄下讀取c.wnry文件:
若是讀取到了c.wnry文件,就會把13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94經過隨機數加密後寫入c.wnry,而這串數字就是比特幣的地址,也就是說c.wnry文件中保存着加密後的比特幣地址:
下圖是c.wnry的加密算法:
執行這兩句命令:
attrib +h .
icacls . /grant Everyone:F /T /C /Q
attrib命令:將DisplayName工做目錄設置爲隱藏
icacls命令:開放目錄的用戶權限
接着,會讀取前期釋放的一個名爲t.wnry的文件,並對其中的內容進行解密,解密後的內容爲一個dll文件,可是該dll文件並不會寫入磁盤,而是在內存中直接執行:
將該文件從內存中dump 出來,重命名爲crypt.dll,再次分析
Crypt.dll僅有一個自定義的導出函數,這個導出函數是其行爲展開的入口:
先加載了kernel32.dll,動態獲取後續須要的API:
建立互斥體,用於判斷自身重入問題:
而後建立了四個線程:
分析後做用分別是:
1.將tasksc.exe加入到HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run項,用於開機自啓動
2.遍歷驅動器,並檢查是否有U盤等移動存儲插入
3.循環調用taskdl.exe
4.寫入並執行vbs腳本
遍歷文件並加密文件:
所加密的文件類型約有兩百多種:
羅列出部分加密文件的後綴名:
加密方法:
1,遍歷到要感染的文件,被AES加密,AES加密使用的KEY,是根據每一個文件隨機生成的。隨機生成的Key,以後會被下一步的RSA 2048加密。
2,樣本在針對每一臺機器上,會隨機生成一對RSA 2048密鑰,其中公鑰保存在00000000.pky中,用於加密上一步的AES KEY,私鑰將被加密後存在文件00000000.eky中
3,上一步的RSA私鑰,會被另外一個RSA 2048公鑰加密,該加密後的私鑰僅勒索者本人知道。、
文件加密以WANACRY爲特徵頭:
知道以上思路後,就比較容易理解該樣本的加密流程了:
1,新建文件,新文件名爲原始文件名.WANACRYT(T表示臨時文件,用於臨時處理文件加密)
2,在新的文件頭部寫入8字節的WANACRY!加密標誌
3,寫入4字節的長度標識,表示後面緊跟的加密後的文件加密密鑰的長度
4,寫入256字節長度的加密後的文件加密密鑰(該密鑰解密後爲16字節長度的字符串,使用該字符串AES加密文件)
5,寫入4字節長度的 勒索者做者定義的類型,不爲4的文件類型記錄到f.wnry文件中,用於後期免費解密。
6,寫入8字節長度的原始文件長度
7,使用隨機生成的16位字節的密鑰利用AES加密算法進行加密,並寫到上述內容以後。
8,修改新文件的文件時間爲源文件的時間。
9,刪除原文件,並將新文件重命名爲WANACRY。
10, 若文件爲可免費恢復的文件,則將文件名記錄到f.wnry文件中。
至此,分析基本結束。
上次有人問我,若是針對永恆之藍該怎麼作到抑制它,而不專殺掉:
抑制構思以下,
1,微軟補丁
2,它有檢測互斥體的位置,能夠從這裏入手,Hook 或者注入
3,它利用的CVE-2017-0143------CVE-2017-0148漏洞傳播自身,而此漏洞須要使用445端口傳播,在組策略中關閉此端口
Freebuff的epsky: http://www.freebuf.com/vuls/134602.html