骷髏病毒簡單分析

骷髏病毒簡單分析

目錄

一、樣本信息

二、行為分析

三、詳細分析

四、博客數據:https://pan.baidu.com/s/1EUIguu7YV3pS7F7ej7aDNg

一、樣本信息

1. 樣本名稱:樣本.exe(脫殼後為樣本dump.exe)

2. md5:5b8bc92296c2fa60fecc6316ad73f1e2

3. 是否加殼:加殼UPX

4. 編譯語言:visual C++

二、行為分析

1. 通過註冊表判斷系統是否被感染

2. 獲取windows目錄,利用計時器實現隨機命名,把病毒copy到windows目錄實現隱藏

3. 刪除樣本文件

4. 創建服務,實現自啟

骷髏病毒簡單分析

5. 鏈接指定url,執行後門行為。

三、詳細分析

1. PEID查殼,發現是UPX加殼,ESP定律法脫去

2. 病毒先將currentcontrol\services\和15654656鏈接起來,並且利用RegOpenKey來打開這個註冊表。目的是:判斷這個服務是否被創建,換句話說看病毒是否在系統內存在

骷髏病毒簡單分析

骷髏病毒簡單分析

3. 如果這個服務不存在,病毒執行405A25,打開服務管理器。然後獲取windows目錄,比較c://windows,接著通過GetTick來獲取計數器,複製那個exe文件到windows目錄。目的是實現自身的隱藏,接著調用CreateService來創建病毒服務。判斷服務是否開啟,然後開啟服務,最後,先獲取獲取目錄信息,接著獲取當前進程信息,目的是獲取樣本文件的信息,以便為刪除做準備**然後調用shellEx利用cmd執行/c del >nul刪除樣本文件,設置進程的優先級。以便後續為破壞做準備

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

骷髏病毒簡單分析

4. 如果這個服務存在的話,執行後續操作。

5. 通過調用StartServiceCtrlDispatcher函數,執行線程

6. 分析該服務線程

1)先獲取例如closesocket和SDetServiceStatus等函數的地址

骷髏病毒簡單分析

2)創建一個互斥體,**目的是使系統中只有一個病毒實例在運行**

3)創建一個線程,然後枚舉資源列表,更新文件。

a)先和"2"一樣,打開15654656註冊表,判斷病毒是否運行成功。

骷髏病毒簡單分析

b)獲取文件屬性,並創建一個文件,讀取文件,替換文件資源

骷髏病毒簡單分析

骷髏病毒簡單分析

c)加載剛剛替換的資源文件hra%u.dll

骷髏病毒簡單分析

4)分析第一個線程

骷髏病毒簡單分析

a)獲取網絡主機名和地址

骷髏病毒簡單分析

b) 比較用戶名和密碼:

骷髏病毒簡單分析

c) 獲取當前文件路徑,並把文件分別複製到C,D,E盤中(E:\g1fd.exe)【調用copyfile函數執行】

骷髏病毒簡單分析

d) 如果在C,D,E中則會獲取當前時間,然後執行程序,否則把文件複製到F盤,然後休眠500ms後創建下個線程.

骷髏病毒簡單分析

5)分析第二個線程

a)初始化網絡配置,休眠100ms,獲取本地時間,轉化為int類型,和20030221比較,如果小於的話,則一直執行,然後創建CreateStartFun線程(本質是調用StartAddress函數)。

骷髏病毒簡單分析

骷髏病毒簡單分析

b)在StartAddress內部先訪問一個短地址aa.re67das.com,然後獲取IP地址利用socket鏈接。

c) 獲取機器的基本配置,然後load hra%u.dll’

骷髏病毒簡單分析

d) 利用send()發送剛剛獲取的機器信息。

骷髏病毒簡單分析

e) 利用SelectAndRev3這個函數去不斷的從服務器端接收控制信息,

骷髏病毒簡單分析

f)輸入16號控制碼:

骷髏病毒簡單分析

g)輸入18號控制碼(行為見腦圖):

骷髏病毒簡單分析

6)分析第三個線程

a)獲取本地時間,如果小於2013.02.21則線程不斷執行

骷髏病毒簡單分析

b)否則執行線程如c:

c)如上,分析線程2所示一致。只是比2多了一個文件寫入的函數

骷髏病毒簡單分析

7)分析第四個線程

骷髏病毒簡單分析

a) MainFun4只是比MainFun3多了一個連接特定url的函數,但是這個解密過程沒分析出來,但是你可以通過apadns來獲取相關信息。

骷髏病毒簡單分析

骷髏病毒簡單分析

關注看雪學院公眾號ikanxue,獲取更多幹貨哦!


分享到:


相關文章: