當前位置:
首頁 > 新聞 > 使用IDA動態調試WanaCrypt0r中的tasksche.exe

使用IDA動態調試WanaCrypt0r中的tasksche.exe

0x00 前言


2017年5月12日全球爆發大規模蠕蟲勒索軟體WanaCrypt0r感染事件,各大廠商對該軟體做了深入分析,但針對初學者的分析教程還比較少,復現過程需要解決的問題有很多,而且沒有文章具體介紹勒索軟體的實際運行流程,所以我寫了這篇面向初學者的教程,希望幫助大家。


0x01 簡介


本文將要介紹以下內容:


樣本實際運行流程

IDA動態調試方法


具體調試tasksche.exe的過程


0x02 樣本分析


測試環境: Win 7 x86


測試工具: IDA 6.8


經測試,該樣本為WanaCrypt0r母體mssecsvc.exe釋放出的敲詐者程序tasksche.exe


因此不包含「Kill Switch」開關和MS17-010漏洞利用代碼


樣本流程分析:


通過逆向分析,樣本流程如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe


註:樣本流程圖使用processon繪製


0x03 實際測試


1、啟動IDA,載入樣本文件wcry.exe


找到WinMain(x,x,x,x)函數,在初始位置下斷點(快捷鍵F2),如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



2、啟動調試器


選擇Debugger(快捷鍵F9)


選擇Local Win32 debugger,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



選擇Debugger-Continue process(快捷鍵F9),進入調試界面,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



3、開始單步調試


單步步入快捷鍵F7


單步步過快捷鍵F8


執行到 call sub_401225,按F7單步步入,查看該函數的反彙編代碼,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe


為了便於分析,可以輸入快捷鍵F5查看偽代碼,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



通過代碼猜測該函數的功能如下:


調用GetComputerNameW函數獲得計算機名


使用rand函數生成一個隨機數


二者結合生成一個唯一的ID


動態執行至該函數結束,寄存器EAX的值保存函數返回結果,對應到上述函數,EAX寄存器保存的是生成的ID值


以上操作過程如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



繼續調試,執行到jnz short loc_40208E,可看到程序出現分支,IDA會自動提示接下來要執行的分支為左側(該分支會閃爍),如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



對照前文的樣本流程圖,可知此時並未進入安裝模式


4、修改啟動參數,進入安裝模式


為了進入安裝模式,需要在程序啟動時加入參數/i


現在退出調試模式,選擇Debugger-Process options,填入參數/i,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe


再次啟動調試,執行到jnz short loc_40208E,程序跳入右側分支,進入安裝模式,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



繼續調試,執行到call sub_401B5F


該函數的功能如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



依次嘗試在c:ProgramData、c:Intel、%Temp%文件夾下創建以ID為名稱的文件夾,直到成功為止

使用IDA動態調試WanaCrypt0r中的tasksche.exe


繼續調試,接下來的功能為將程序自身複製到上述目錄,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



執行到call sub_401F5D,該函數的功能如下:


創建服務,服務名稱和顯示名稱均以ID命名,啟動參數為cmd.exe /c 「C:ProgramDatavxdxwoohuuxv276tasksche.exe」,對應子函數sub_401CE8,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



創建互斥量GlobalMsWinZonesCacheCounterMutexA,用來避免程序重複啟動,對應子函數sub_401EFF,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe


註:由於服務設置成自動執行,所以安裝服務後會自動執行C:ProgramDatavxdxwoohuuxv276tasksche.exe,不出意外,你的測試系統此時已經彈出勒索軟體的主界面,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



至此,安裝模式結束,如下圖,接下來完成對左側分支的調試

使用IDA動態調試WanaCrypt0r中的tasksche.exe



5、將啟動參數取消,重新進入調試模式,進入左側分支


如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe


執行到call sub_4010FD,該函數的功能如下:


創建註冊表項HKEY_LOCAL_MACHINESoftwareWanaCrypt0rwd


鍵值為程序絕對路徑,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



執行到call sub_401DAB,該函數釋放資源中的PE文件,文件包含:


b.wnry


c.wnry


r.wnry


s.wnry


t.wnry


taskdl.exe


taskse.exe


u.wnry


msg(目錄)


如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



執行到call sub_401E9E,該函數功能如下:


繼續調試,接下來執行cmd命令:


attrib.exe +h


用於將當前文件夾設置為隱藏屬性,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



接著執行cmd命令:


icacls.exe . /grant Everyone:F /T /C /Q


用於為當前文件夾添加許可權用戶組Everyone,主要用來開放訪問許可權,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



執行到call sub_40170A,該函數用來動態獲取API地址,主要為了實現接下來的內存載入dll


執行到call sub_4014A6,該函數用來解密dll,可以在特殊位置下斷點,從內存dump出該dll文件


通過分析代碼,發現解密函數位於sub_403A77,如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



對應該函數,函數執行前,EAX保存解密數據長度,函數執行後,EBX保存解密dll文件的起始地址


完整過程如下圖

使用IDA動態調試WanaCrypt0r中的tasksche.exe



函數執行前查看寄存器EAX的值,解密長度為0x10000(截圖未體現)


保存解密dll文件的起始地址001790C8,將以上解密數據(數據範圍001790C8-001890C8)dump並保存成dll文件,使用ida打開,識別為dll文件,導出函數為TaskStart


註:我已將解密的dll文件提取並上傳至github,地址如下:


https://github.com/3gstudent/WanaCrypt0r-Reverse-Analysis/blob/master/crypt.dll1


繼續調試,執行到call sub_402924,該函數用來內存載入dll,傳入導出函數TaskStart


至此,tasksche.exe任務完成,接下來的工作交由dll實現


0x04 小結


本文介紹了如何使用IDA對WanaCrypt0r中tasksche.exe進行動態調試,接下來會帶來對解密dll的逆向分析過程,介紹WanaCrypt0r的加密流程。


本文為 3gstudent 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

免殺新姿勢:利用線程將惡意代碼注入到內存中
密碼安全國際新標:不再強制用戶定期修改密碼和使用複雜字元密碼
黑客入侵Edmodo教育平台,竊取超7千萬教師、學生和家長賬戶信息
上嘶票,一鍵購中國網路安全大會門票

TAG:嘶吼RoarTalk |

您可能感興趣

如何使用Ghostscript調試PostScript
Undo 發布用於 Linux 調試的 Live Recorder 5.0
Eclipse Debug 調試
如何使用curl調試openstack的api
使用Visual Studio Code編譯、調試Apollo項目
Facebook 開源其調試平台 Sonar,支持 Android 與 iOS
喲,寫Bug呢?Facebook發布AI代碼調試工具SapFix
使用 Visual Studio Code 搭建 C/C+開發和調試環境
教你使用Vue.js的DevTools來調試你的vue項目
如何在 Linux 或者 UNIX 下調試 Bash Shell 腳本
Servlet 調試
A 站受黑客攻擊,近千萬條用戶數據外泄;Facebook 開源其調試平台 Sonar,支持 Android與iOS
linux性能調試之iostat
使用systemtap調試工具分析MySQL的性能
PyTorch代碼調試利器:自動print每行代碼的Tensor信息
使用pdb進行Python調試
基於vue2.0 +vuex+ element-ui後台管理系統:本地調試詳細步驟
Magic Leap首批AR頭顯調試機交付,Snap再次裁員
走近 WebAssembly 之調試大法
如何直接在瀏覽器中查看和調試Django-Restful介面