GandCrab5.0.9樣本詳細分析

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


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

                               ps:文章最後附思惟導圖

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

二、工具分析:
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樣本詳細分析
                    圖片二十六:硬編碼公鑰導入windows

⑮建立了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樣本詳細分析 安全

相關文章
相關標籤/搜索