歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

通過“熱補丁”執行惡意代碼實例分析

來源:本站整理 作者:佚名 時間:2019-09-17 TAG: 我要投稿

前兩天在“蜂鳥”圖標的社交網站看到一個高危樣本,便下載審查一番。文件是一個壓縮包,壓縮包中有兩個普通圖片、一個EXE和一個DLL文件(wwlib.dll)。

通過使用VirusTotal查詢MD5后發現只有wwlib.dll被殺毒引擎檢出為惡意文件,于是筆者不老道的經驗判斷這是一個普通的DLL劫持操作。在一番動態運行后發現確實如此,然后就按照DLL劫持的分析思路進行分析,結果并沒有找到具體得惡意代碼執行處。之后經過多個小時的奮斗,終于發現wwlib.dll使用類似“熱補丁”技術修改了系統ntdll.LdrLoadDLL函數的返回地址使其跳轉到wwlib.dll的惡意函數進而執行多層shellcode。
熱補丁:又稱為patch,指能夠修復軟件漏洞的一些代碼,是一種快速、低成本修復產品軟件版本缺陷的方式,可以運行狀態下對程序進行修復。
“熱補丁”位置
壓縮包中的exe文件作用只是用來加載wwlib.dll,所以我們只對wwlib.dll進行詳細分析。
文件名:wwlib.dll
MD5:6875f307d95790ca25c1da542ea736a8
wwlib.dll被加載后首先執行sub_1000101A函數,獲取ntdll.LdrLoadDll的函數地址并將其返回地址進行修改。

ntdll.LdrLoadDll的返回地址被修改為跳轉到wwlib.dll的sub_1000168E函數。
修改前:

修改后:

除了以上修改外作者還開辟了新的內存空間并寫入跳轉到ntdll.LdrLoadDll返回地址7c9364ee的代碼。但是在調試時并未發現有執行改代碼的操作,懷疑是作者的測試代碼。

修改了以上代碼就能確保惡意代碼被順利執行。
如何觸發執行惡意代碼?
以下結果是使用32位的win XP調試而得。當加載DLL文件時調用Kernel32.LoadLibraryA函數,經過下圖中的層層調用最終執行ntdll.LdrLoadDll函數。

由于ntdll.LdrLoadDll函數的返回地址“7c9364ee”被修改為跳轉到wwlib.1000168E地址。“熱補丁”設置成功后只要進行加載DLL動作即可觸發惡意代碼,下面是對惡意代碼下斷點分析的內容。
解密執行shellcode
惡意代碼首先將修改過的ntdll函數返回地址恢復,對比上一節的圖片可知將“E9 9B B1 6C 93”恢復為“C2 10 00 90 90”。

將解密后的shellcode拷貝到新開辟的內存空間并執行。

啟動線程進行連接C2操作。

獲取網卡信息。

線程解密C2地址后啟動新的線程進行網絡操作。

請求地址https:// cloud.doomdns.org/hk12獲取下一階段shellcode代碼。

執行下載的shellcode代碼。

總結
詳細分析后發現這并不是一個簡單的DLL劫持操作,而是通過精心構造的跳轉執行惡意代碼。shellcode代碼雖然有很多層,但是執行邏輯與代碼風格基本相同。只要耐下心來,一層一層跟下去就能找到惡意代碼的執行邏輯。
想到很多朋友不能在VirusTotal直接下載樣本,筆者將本文的樣本放置在github上供大家學習研究。本文種若有遺漏錯誤之處,歡迎大家批評指正、留言交流。
樣本地址:
https://github.com/ShareSample/Hot-Patch-Sample
IOC
3061f320d47a6c985bd219f5ac14ff8a
cloud.doomdns.org
https:// cloud.doomdns.org/hk12
 

【聲明】:黑吧安全網(http://www.gkrbnd.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        福彩原副主任