Wannacry分析
一、加密程序(WannaCryptor.exe)
1.釋放
①概覽
②細節
加載資源(多個zip文件),使用開源代碼解壓,zip文件標志(PK…)
解壓所得:
b.wry (bmp)
c.wry (含有一些網址,torproject等)
m.wry (rtf)
r.wry (txt)
t.wry (加密的dll)
u.wry (vc6.0 MFC)
通過CSP獲取RSA_AES提供者句柄,導入RSA 私鑰句柄,這是用于解密dll
KEY BLOB(篇幅過長,僅顯示部分)
讀取被加密dll文件信息,加密文件頭部含有經2048RSA加密過的AES密鑰得到的256字節密文
解密256字節密文得到16字節明文(AES密鑰)再用AES密鑰解密文件得到dll
注:這時可以從內存中dump出dll文件(我的方式是直接從OD內存中復制16進制,粘貼到010ed
將dll 按0x1000粒度對齊并加載到imagebase。
實現:修復IAT,修復重定位,修復區段內存屬性,調用tls, 調用DllEntryPoint
獲取并調用dll唯一的一個導出函數
2.加密(StartSchedule)
Ⅰ.總覽
Ⅱ.細分
①設置當前目錄到注冊表
②如果系統版本為vista以后,創建計劃任務,否則,添加注冊表啟動項
創建計劃任務方式
命令行:
1.xml內容
查看計劃任務:
控制面板->系統和安全->管理工具->計劃任務
每一分鐘調用一次加密程序
③批處理添加!WannaDecryptor!.exe快捷方式
生成bat文件并調用
④生成勒索文檔
勒索內容:
⑤生成隨機2048RSA密鑰對,并將其公鑰存入文件,私鑰被導入的2048RSA公鑰加密,存入文件。
⑥線程一
每隔25秒,獲取當前時間,并向.res文件中(覆蓋式)寫入時間和隨機八字節數據
表層:
內層:
生成8字節隨機數據
線程內:
⑦線程二
測試RSA公鑰/私鑰(加密極小文件,演示解密所用密鑰),需要保存私鑰的文件存在才能運行。
⑧線程三
檢測新加的磁盤,加密,并寫入垃圾數據
⑨線程四
在前置條件成立情況下(初始不成立),創建進程 !WannaDecryptor!.exe
Ⅲ.加密
A.最核心加密函數(多次調用)被我命名為Encrypt_A_directory
其內部函數調用:
1.調用first_round_encrypt函數,遍歷文件,分別保存文件夾路徑和文件路徑在不同的雙向鏈表中,然后遍歷文件路徑鏈表,調用encrypt_by_fileType,將未加密文件的路徑放入新的鏈表,以待后續加密。
2.遍歷保存文件路徑的雙向鏈表,調用encrypt_by_fileType,實現對未加密文件的加密。
3.遍歷保存文件夾路徑的雙向鏈表,在每個文件夾下,添加勒索信息文件和解密工具快捷方式
4.釋放鏈表
B. first_round_encrypt函數分析
1.保存文件夾路徑
2.保存文件路徑
3.遍歷鏈表,加密文件,核心函數encrypt_by_fileType
C. encrypt_by_fileType函數分析
對文件類型進行選擇,調用aes_encrypt
D. aes_encrypt函數分析
根據文件類型,改后綴,或者加后綴,調用encrypt_file1
E. encrypt_file1函數分析
1.對于要處理文件,讀取其內容,進行判斷是否經過處理,并檢查其類型
2.對于小文件,創建新文件,其名為原文件后加T
3.對于大文件,將前0x10000字節復制到文件尾部,并清空前0x10000字節
4.生成隨機AES密鑰,用RSA公鑰加密,得到密文。進行密鑰擴展,得到DWORD[4*11],向文件中寫入WANNACRY, AES密文字節數,密文,文件類型,文件大小。
5.每次拷貝0x100000字節,進行加密
E.encrypt_分析
循壞每次取16字節,調用AES_encrypt_16bytes
F.AES_encrypt_16bytes分析
輪密鑰加變化
9輪變換
S盒變換
8.對于小文件的AES密鑰加密,可能會用另外RSA公鑰
如果是用的另外公鑰,將文件路徑寫入f.wry,待后面解密器演示
Ⅳ.加密流程分析
返回到分析Most_Important_Encrypt
1.導入密鑰
2.加密指定目錄
<desktop>
All UsersDesktop
My Documents
All UsersDocuments
3.全盤加密
先加密非網盤,再加密網盤
4. 啟動解密器,兩次全盤寫入大量垃圾數據覆蓋并刪除。
encrypt_and_wirte_junk_data
二、解密程序
解密程序為vc6.0 MFC 程序,根據命令行參數,有三種不同功能
OnInitDialog內部:
1.命令行參數為 v
Cmd 命令刪除shandowCopy
2.命令行參數c
下載torbrowser,連接tor服務器
①從文件中獲取網址
②下載torbrowser
失敗,已經沒有那個版本了,現在都10.0了
然后是以127.0.0.1去連tor服務器
3.無命令行參數
生成界面
總結
以上是生活随笔為你收集整理的Wannacry分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Matlab怎么实现鲸鱼优化算法
- 下一篇: Word尾注编号格式如何设置