GandCrab5.0.9樣本詳細分析

☣前言:
 WannaCry利用永恆之藍漏洞爆發以後,病毒安全的前沿對抗最頻繁種類則是勒索病毒了,17年初或者更早就有人捕獲了GandCrab家族的勒索病毒,直到18年已經更新迭代到了5.0版本,18年進入尾聲的時候,安全研究人員發現了GandCrab勒索病毒的V5.1最新版變種。
對於勒索個人看法:當第一次聽說勒索病毒的時候,就感覺一定是無法抗拒的利益驅動,纔會讓某一羣人去迭代、維護、研發勒索病毒。這道理就像開了一家公司一樣,能把病毒走向全世界,已經是很成功了,看似簡單,其實背後的關聯複雜。除了加密算法的複雜程度之外,勒索的潛伏與隱蔽(字符串混淆加密)也是比較到位。
 其實不管怎樣,那些API還是那些API,即使自己實現相仿得函數,時間足夠也能從函數功能與彙編,加以邏輯去推理過程,從而實現、還原。


1、預熱(收集系統信息、提權、註冊表操作、兼容匹配、加密解密關鍵字符串等)
2、枚舉掃描(網絡共享、資源枚舉,遍歷掃描文件)
3、加密文件(過濾、匹配的文件以不同方式進行加密)
4、收尾工作(發送勒索信息、刪除病毒、銷燬進程等)
 基本所分析的病毒大多數都會這樣幹,因爲他既要保證你係統的穩定性,也要保證自己的安全與功能的實現,這樣才能勒索到錢......

                               ps:文章最後附思維導圖

☛預熱分析:
1、線上分析:
GandCrab5.0.9樣本詳細分析
                    圖片一:線上分析
GandCrab5.0.9樣本詳細分析
                    圖片二:樣本信息

2、工具分析:
GandCrab5.0.9樣本詳細分析
                    圖片三:exeinfo pe

☛詳細分析:
①拉入IDA也許你會看到花指令混淆,如下所示:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片四:花指令混淆
②如上圖所示,GandCrab.00426F7A函數會標誌勒索病毒要開始了,當你發現桌面彈窗"我們很快就會回來",恭喜已經中了GandCrab勒索病毒,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片五:MessageBox
 ③GandCrab.00405FF7函數先是創建快照,遍歷進程,怕加密文件的時候影響加密效果,如文件被佔用等問題,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片六:初始化字符串
GandCrab5.0.9樣本詳細分析
                    圖片七:遍歷對比進程
GandCrab5.0.9樣本詳細分析
                    圖片八:匹配進程結束
④如圖三中GandCrab.00405944是最爲核心的函數,先來看看獲取windows版本信息,獲取SID也就是說當前的權限等級,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片九:Windows版本信息
GandCrab5.0.9樣本詳細分析
                    圖片十:當前權限級別
 ⑤GandCrab.004054BA函數對註冊表中鍵盤佈局鍵值獲取,獲取當前用戶和系統的默認安裝語言,比對如果匹配到419(俄羅斯),422(烏克蘭) ,423(比利時)等等,那麼將執行刪除文本且結束進程,這意味着不進行勒索......,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片十一:鍵值循環
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片十二:匹配成功
 ⑥繼續線性跟蹤,GandCrab.00405016函數負責獲取系統信息,檢索了磁盤目錄關聯的文件系統和卷的信息,然後用磁盤的數據hash獲取隨機字符串,創建.lock互斥體:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片十三:創建互斥體
⑦GandCrab.0040586C函數,加密與異或字符串獲取公鑰1,如下所示:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片十四:獲取RSA1
⑧參數入棧,安全進程掃描,關鍵系統數據異或解密,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片十五:入棧參數
GandCrab5.0.9樣本詳細分析
                    圖片十六:示意圖
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片十七:系統數據拼接
GandCrab5.0.9樣本詳細分析
                    圖片十八:安全服務遍歷
GandCrab5.0.9樣本詳細分析
                    圖片十九:拼接後數據
GandCrab5.0.9樣本詳細分析
                    圖片二十:解密
⑨系統不顯示critical-error-handler消息框,異常不顯示,初始化臨界區,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片二十一:SetErrorMode

 ⑩如上圖所示,GandCrab.00404DC5函數是GandCrab勒索的核心函數,先是利用微軟提供的CSP系列函數獲取隨機數,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片二十二:GetModuleHandleA
⑪解密字符串,解密後發現是文件名的後綴,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片二十三:文件後綴名
⑫隨機生成密鑰,且導出公鑰,私鑰,如下所示:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片二十四:導出Key
⑬接着創建了註冊表ex_data\data,並且設置了隨機字符,如下所示:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片二十五:設置註冊表
⑭導入公鑰,加密了數據:
GandCrab5.0.9樣本詳細分析
                    圖片二十六:硬編碼公鑰導入

⑮創建了key_datas\datas,設置了public=公鑰,private=硬編碼加密後私鑰(還加了隨機數等數據)
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片二十七:註冊表設置
⑯有意思的賦值方式,push入棧,pop彈出給寄存器,賦值給內存變量,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片二十八:賦值方式
⑰使用了Base64加密了之前的密鑰,然後拼接勒索警告字符串與獲取的pc數據,如下所示:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片二十九:勒索警告
⑱下面壓入了文件後綴格式,應該準備枚舉網絡資源,遍歷文件,加密文件了,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片三十:GandCrab.00403D8E
⑲內部創建了兩個線程,線程分析一,如下所示:
GandCrab5.0.9樣本詳細分析
                    圖片三十一:回調函數
GandCrab5.0.9樣本詳細分析
                    圖片三十二:局域網枚舉
GandCrab5.0.9樣本詳細分析
                    圖片三十四:遍歷局域網下文件目錄與磁盤
GandCrab5.0.9樣本詳細分析
                    圖片三十五:遞歸掃描
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片三十六:加密過濾
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片三十七:加密過程
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片三十八:硬編碼公鑰加密文件
⑳線程分析二,如下所示:
GandCrab5.0.9樣本詳細分析
GandCrab5.0.9樣本詳細分析
                    圖片三十九:本地文件加密且退出進程
最後調用了函數GandCrab.00405252執行了 ShellExecute,執行了如下指令:
GandCrab5.0.9樣本詳細分析

 ✎樣本中關於利用CVE漏洞提權代碼沒有分析,因爲在測試環境下沒有匹配0x1000,跳過了提權函數,上述有很多分析點不夠精準,但是還原了樣本的整體邏輯。
 關於硬編碼公鑰加密研究,使用的是CSP又稱"加密服務提供者(Cryptographic Service Provider)",微軟提供的一套API,後續有機會一起實現與深入研究一番。


思維導圖:
GandCrab5.0.9樣本詳細分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章