1. 程式人生 > >APT樣本分析--海蓮花樣本分析

APT樣本分析--海蓮花樣本分析

樣本不是我發現的,是原來報告中的MD5,我下載到,進行分析的,主要是對APT攻擊手法,和攻擊樣本進行分析學習

基本資訊
原檔名:NetcaEKeyClient.exe
MD5:41bced8c65c5822d43cadad7d1dc49fd
SHA256:d3cf53d74868625d4ee00e367162798f829acf532bad69cf1b7ce959de0e072a

靜態基本資訊
檔案版本: 2.3.13.2
產品名稱: 網證通安全客戶端(中交建)
檔案大小: 8.2 MB ( 8608256 bytes )
檔案編譯時間:2010年4月25日 18點51分02秒
檔案簽名: 無
Importhash: b61aa023ee45488779b855ef5e43c3a0
Exeinfo: Microsoft Visual C++ v.10 – 2010

動態分析
樣本首先會取得計算機名稱,並轉化位小寫
這裡寫圖片描述
這裡寫圖片描述
然後類MD5的演算法算出了一個128bit的hash值
這裡寫圖片描述

樣本會比較引數的前6位是否為 –ping

這裡寫圖片描述

然後樣本會解密出Schedule這個服務,並開啟這個最後啟動這個服務,這個服務是windows系統自帶的服
這裡寫圖片描述
這裡寫圖片描述
Windows對這個服務的介紹,主要是定時開啟程式等等

這裡寫圖片描述

並取得臨時資料夾路徑,獲取臨時檔名稱

這裡寫圖片描述

並生成一個0x40位的隨機數,用於加密原始檔案
這裡寫圖片描述

並將隨機數轉化位ASCII

這裡寫圖片描述

並對原檔案進行修改

這裡寫圖片描述

並建立臨時檔案,將修改過的檔案進行寫入

這裡寫圖片描述

可以看出雖然檔案大小一樣,但是樣本的MD5完全不一樣
這裡寫圖片描述


這裡寫圖片描述

最後將原檔案路徑和隨機數字進行拼接進行啟動

這裡寫圖片描述
最後啟動2.tmp
這裡寫圖片描述

在啟動後在判斷引數時候進行跳過,然後sleep,然後進行呼叫函式,並在判斷引數時候進行跳過

這裡寫圖片描述

然後讀取資原始檔,重新寫回原檔案,有一次啟動了原檔案。但是這次就是一個正常的客戶端了,用與欺騙使用者。

這裡寫圖片描述
這裡寫圖片描述

接下來子系統裡面有一些反虛擬機器的操作
檢測VirtualPC
這裡寫圖片描述

檢測VMware

這裡寫圖片描述

過掉反虛擬機器後繼續除錯
繼續將原加密檔案解密出來
這裡寫圖片描述

迴圈遍歷程序進行hash,然後比較如果比較成功則退出(反除錯的一種)

這裡寫圖片描述
這裡寫圖片描述

可以看出在解密之後釋放了一個QQ.exe和Bundle.rdb檔案

這裡寫圖片描述


這裡寫圖片描述

在釋放之後開始設定登錄檔值將檔案路徑寫入登錄檔

這裡寫圖片描述

並將QQ設定位計劃任務

這裡寫圖片描述

接下來繼續分析QQ.exe,從檔案型別中可以看出是QQ國際版
這裡寫圖片描述

原檔名: qq.exe
MD5:5d0431db51b6516842419443ce0fda84
SHA256: 271e02e6e46c50e89b2f1aa528b78949e322229f8beaa80030fa5f855942ed2d

靜態基本資訊
檔案版本:1.75.2626.0
產品名稱:QQ International
檔案大小:20.2MB
檔案編譯時間:2003年9月7日
檔案簽名: 無
Importhash: 187c81703ce143544a7f52177e8d9cd2
Exeinfo: Microsoft Visual C++ 9.0 - Visual Studio 2008 (E8) - no sec. CAB

動態分析
程式首先會動態獲取需要呼叫的API,然後進行程序提權操作
這裡寫圖片描述
這裡寫圖片描述

OD1.0載入不起來,所以用OD2.0載入進行分析
判斷上一個程序的存在在登錄檔的資料是否存在,如果不存在,則退出
這裡寫圖片描述

並判斷釋放的Bundle.rdb是否存在,如果不存在,則退出
這裡寫圖片描述

取得使用者是否是administrators

這裡寫圖片描述

比較這個執行程式是否和”rundll32.exe /safemode”相同

這裡寫圖片描述

如果相等將會死迴圈睡眠

這裡寫圖片描述

在不相等的情況下,開啟程序遍歷,並當使用者名稱等於administrators時候,遍歷程序模組,遍歷完之後如果有Bundle.rdb,則停止

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

遍歷程序,並將程序名稱進行HASH 運算,並進行判斷,如果等於以下HASH值,則進行相應操作

這裡寫圖片描述

HASH演算法

這裡寫圖片描述

比較檔案路徑是否和rundll32.exe /m相等

這裡寫圖片描述

在不相等的時候,對QQ.exe做一些加密處理,並連線引數rundll32.exe /n 進行處理
這裡寫圖片描述

此時這個QQ已經完成任務
新啟動的QQ程序,會首先解密出這個msiexec.exe,並判斷這個檔案是否存在
這裡寫圖片描述

然後啟動這個程序
並對這個程序進行注入
這裡寫圖片描述
第一次注入將要注入的dll檔案路徑注入到,第二次注入程式碼
這裡寫圖片描述

遠端恢復程式碼

這裡寫圖片描述

可以發現程式對注入程式進行了掛鉤,跳到執行函式

對退出函式進行了掛鉤
這裡寫圖片描述
這裡寫圖片描述

這段shellcode主要是啟動DLL檔案,列舉視窗,進行退出,從而觸發鉤子

這裡寫圖片描述

Bundle.rdb是對網路流分析,進行了詳細的加解密,可以檢視
基本資訊
原檔名:Bundle.bin
MD5:0eb2c47fdd5aada4640c0c6e06589b7f
SHA256:f5a171be8bf1da3b33acd7eeb0e8bfd744ea811cc2d30f6a5ec04952e0ed2e5b

靜態基本資訊
檔案大小: 37.3 MB (39,118,848 位元組)
檔案編譯時間:2007年3月19日 2點02分51秒
檔案簽名: 無
Importhash: b61aa023ee45488779b855ef5e43c3a0
Exeinfo: Microsoft Visual C++ v7.10/8.0/9.0 DLL ( 8B )

先寫一個載入dll的小程式

這裡寫圖片描述

總的來說,樣本主要的功能為對三個C&C地址進行解析,並連線。在連線後進行命令傳輸
三個C&C地址分別是,由於已經失效,並不能進一步進行分析
active.soariz.com
zone.mizove.com
sin04s01.listpaz.com
可以看到是個死迴圈,在不停的進行連線

這裡寫圖片描述

不停的進行連線,連線上進行接收資料

這裡寫圖片描述