0x00 前言
2017年5月12日全球爆發大規模蠕蟲勒索軟件WanaCrypt0r感染事件,各大廠商對該軟件做了深入分析,但針對初學者的分析教程還比較少,復現過程需要解決的問題有很多,而且沒有文章具體介紹勒索軟件的實際運行流程,所以我寫了這篇面向初學者的教程,希望幫助大家。
0x01 簡介
本文將要介紹以下內容:
樣本實際運行流程
IDA動態調試方法
具體調試wcry.exe的過程
0x02 樣本分析
測試環境: Win 7 x86
測試工具: IDA 6.8
樣本下載地址: http://bbs.pediy.com/thread-217586-1.htm
樣本流程分析:
通過逆向分析,樣本流程如下圖
0x03 實際測試
1、啟動IDA,加載樣本文件wcry.exe
在IDA View-A窗口右鍵選着Graph view查看程序的整體流程圖。該程序函數你比較多,為了快速定位目標,可以使用查找功能,如下圖
找到sub_401225 函數雙擊,如下圖
首先會通過一個函數算出一個標識,本質就是通過GetComputerNameW獲取計算機名然后取隨機數算出一個唯一對應的標識,后面的執行過程會用到這個標識
接下來會做幾件事情,任意一項未執行成功都會退出 。
找到WinMain(x,x,x,x) 函數雙擊,如下圖
檢查命令行參數是否為兩個,並且是否有/i這個參數
檢查並嘗試獲取文件屬性和 Temp系統臨時目錄下創建前面算出的DisplayName為標識的目錄
創建tasksche.exe程序,
將tasksche.exe優先以服務方式啟動,如果失敗則以普通進程方式啟動(副本啟動的入口點和原始文件啟動的入口點不同,從而實現不同的邏輯)
通過互斥體Global\\MsWinZonesCacheCounterMutexA來判斷是否啟動成功以上幾項都成功完成后流程才會繼續,否則終止。
創建注冊表項HKEY_LOCAL_MACHINE\...\wd ,寫入當前路徑值
從資源中釋放PE文件taskdl.exe、taskse.exe,為了免殺,資源中的PE文件是加了密的;
通過‘WNcry@2ol7’密碼解密資源中的PE文件,
"attrib +h ." 命令是將其釋放的文件屬性設置成隱藏模式,
"icacls . /grant Everyone:F /T /C /Q" 此命令是允許所有用戶對全盤有完全訪問權限。
經過以上步驟程序釋放的PE文件
在當前目錄下讀取c.wnry文件
如果讀取到了c.wnry文件,就會將13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94通過一個隨機數加密后寫回到c.wnry,而這一串數字就是黑客的比特幣地址,也就是說c.wnry文件里保存的是加密后的黑客的比特幣地址(有三個地址)。
接下來是動態獲取所需的API地址
首先是獲取kernel32.dll中的文件相關的API
然后是獲取advapi32.dll中的加解密相關的API
CSP用的是系統默認或者是RSA and AES
加密文件以WANACRY!為特征頭
如下圖
修改桌面背景 顯示勒索信息,如下圖
彈出勒索窗口,顯示比特幣錢包地址和付款金額 ,如下圖
其中箭頭所指處為黑客收取比特幣的三個賬號地址之一