天天看點

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

1.樣本概況 1.1 應用程式資訊 1.2 分析環境及工具 1.3 分析目标 2.具體分析過程 2.1 主函數 2.2 分析sub_40819c 2.2.2 存在Desktop_.ini檔案則删除 2.2.3 讀取目前檔案檢測是否是被感染者 2.2.4 若目前檔案是病毒 2.2.5 若目前檔案是被感染者 2.3 分析sub_40d18c 2.3.2 分析 sub_40C374 維護 2.3.3 分析 sub_40BACC 區域網路傳播 2.4 分析sub_40d088 2.4.1 分析sub_40CEE4 提權、關閉視窗、關閉程序、自啟動、隐藏屬性 2.4.2 分析 sub_40D040 QQ代理下載下傳惡意程式并運作 2.4.3 分析 sub_40D048 關閉C槽共享 2.4.4 分析 sub_407430 關閉安全相關 2.4.5 分析 sub_40CC4C 使用QQ代理下載下傳指定連結資料 2.4.6 分析 sub_40C728 使用QQ代理下載下傳惡意程式并執行 3.總結 3.1 分析結果總覽 3.2 本分析感悟總結

1.樣本概況

1.1 應用程式資訊

檔案: C:\Windows\System32\drivers\spo0lsv.exe

大小: 30001 bytes

修改時間: 2007年1月17日, 12:18:40

MD5: 512301C535C88255C9A252FDF70B7A03

SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870

CRC32: E334747C

簡單功能介紹:

  1. 自啟動
  2. 删除gho檔案
  3. 全盤感染指定類型檔案
  4. 區域網路傳播
  5. 從網絡下載下傳其他惡意檔案執行
  6. 删除安全管理軟體服務、啟動項
  7. 其他

說明: 該樣本是熊貓燒香的一個變種spo0lsv.exe,高危險級别

1.2 分析環境及工具

系統環境:windows 7 32bit

工具:火絨劍、PcHunter、IDA、OllyDebug

1.3 分析目标

使用火絨劍進行行為分析,結果如下:

  1. 檔案操作
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:在各敏感路徑建立了spo0lsv.exe、setup.exe、autorun.inf、Desktop_.ini等檔案并寫入了内容。其作用暫時不明,待後面具體分析。

  1. 系統資料庫操作
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:系統資料庫操作很多,能隻管看出的是在啟動項下建立了新的鍵值,以及設定了隐藏屬性。

  1. 網絡操作
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:網絡操作也有很多,能看到嘗試連接配接了很多目前區域網路内的其他主機,并連接配接了一些網站

  1. 程序操作
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:主要操作重複關閉開啟了spo0lsv.exe

  1. 執行監控
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:執行了很多次指令,包含删除C槽網絡共享等

  1. 其他行為
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:提取了檔案于C:Windows\System32\drivers\spo0lsv.exe,在不同檔案夾建立了很多Desktop_.ini檔案,等等。

2.具體分析過程

2.1 主函數

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:前面使用了“xboy”、“whboy”來進行解密,并進行比對,比對成功就開始逐個調用sub_40819c、sub_40d18c、sub_40d088三個函數,接下來我們詳細分析這三個函數

2.2 分析sub_40819c

2.2.1 檢測Desktop_.ini檔案

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析(序号對應圖檔裡的标号):

  1. 擷取目前檔案的絕對路徑(包含目前檔案名)
  2. 根據目前獲得的檔案路徑(包含目前檔案名)檔案名稱提取檔案所在目錄
  3. 拼接檔案路徑:目前檔案所在目錄 + “Desktop_.ini”
  4. 檢測拼接的檔案是否存在

2.2.2 存在Desktop_.ini檔案則删除

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:(前面還有檔案屬性的設定等小細節)

  1. 再次組合目标檔案Desktop_.ini的路徑
  2. 删除檔案

2.2.3 讀取目前檔案檢測是否是被感染者

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 讀取指定檔案(目前檔案)
  2. 擷取長度
  3. 判斷檔案長度是否小于等于0
  4. 判斷末尾是否是‘\0’即空字元
  5. 如果不是空字元,就往前拷貝一個位元組(ebx是下标)
  6. 判斷用來存儲末尾字元串的是否為空,辨別是病毒還是被感染者

注:

讀取檔案内容的函數分析如圖 2-5所示:

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

2.2.4 若目前檔案是病毒

分為兩種情況:

情況1:目前是非System32\drivers中的病毒,分析如下圖

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 打開spo0lsv.exe句柄并結束程序
  2. 組合system32路徑 + “drivers\” + “spo0lsv.exe”作為新檔案路徑
  3. 調用CopyFileA()複制目前檔案到新拼接的檔案名中
  4. 執行新拷貝的system32\drivers\spo0lsv.exe檔案,并結束自身程序,非system32\drivers檔案夾下的spo0lsv.exe到此執行完畢,程式結束

注:

終止程序的代碼分析如圖 2-7所示:

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

情況2:目前是System32\drivers 中的病毒

不做其他操作,目前部分結束

2.2.5 若目前檔案是被感染者

  1. 删除末尾辨別字元串
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結
  1. 提取感染辨別字元串中的資訊
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 删除“whboy”字元串,提取帶有雙.exe字尾的原檔案名稱
  2. 提取原檔案大小
  3. 提取并建立宿主PE檔案
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 以Rewrite()建立并打開一個新檔案,或覆寫已存在的檔案
  2. 根據長度資訊,從已讀資料中提取原PE檔案的資料
  3. 重新整理寫入緩沖區到外部檔案,確定前面的操作寫入成功
  4. 建立并執行批處理檔案

批處理檔案,建立在User\AppData\Local\Temp檔案夾中,名稱是一個随機數+“$$.bat”

批處理程式樣本如下:

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

循環等待删除成功,因為程式正在運作,是以一開始删除失敗;将新建立的程式重命名為單.exe字尾;最後删除bat檔案自生。

  1. 周遊程序,檢視spo0lsv.exe是否在運作
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 建立程序快照
  2. 擷取第一個程序資訊
  3. 比較程序名時候是“spo0lsv.exe”
  4. 擷取下一個程序資訊

注:

當周遊到“spo0lsv.exe”的時候就停止周遊,并傳回狀态碼1,代表正在運作。

  1. 如果沒有運作就删除然後重新建立并寫入新病毒程式
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 設定源檔案為普通檔案
  2. 拼接檔案路徑
  3. 删除System32\drivers\spo0lsv.exe檔案
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 提取病毒檔案内容,前面還有幾句,由于螢幕限制沒有截完全,有興趣的可以根據位址查找
  2. 拼接檔案路徑System32\drivers\spo0lsv.exe
  3. 将本檔案提取出的病毒塊寫入System32\drivers\spo0lsv.exe檔案,并執行

2.3 分析sub_40d18c

點選進入該函數後又出現了3個函數:sub_40A5B0、sub_40C374、sub_40BACC,接下來分别對其進行詳細的分析。

2.3.1 分析 sub_40A5B0 感染

一個開啟線程的函數,線程回調函數是sub_40A48c。主要作用是建立、維護每個檔案夾下面的Desktop.ini檔案以及感染指定類型的檔案,以及删除gho檔案。

點選進入該線程回調函數展開分析:

  1. 周遊盤符,存儲存在的盤符
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 使用一個個字母 + “:\”組合成根路徑使用GetDriveTypeA()擷取盤的類型
  2. 将固定硬碟、網絡盤的盤符存儲起來
  3. 控制是26次循環,對應26個字母
  4. 排除A、B盤符,對其他盤符拼接“:\”作為參數,調用sub_0x409348,進行全盤周遊感染

對sub_0x409348進行分析:

a) 進行檔案周遊,并判斷檔案是否是檔案夾以及檔案名是否是’.’

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 擷取第一個檔案
  2. 判斷檔案的類型是否是檔案夾以及檔案名是否是“.”

b) 如果是檔案夾

首先排除系統相關的檔案夾,比如下圖中的WINDOWS、WINNT、SYSTEM32等等檔案夾。

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

然後檢查目前檔案夾是否Desktop_.ini檔案

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

如果已經存在Desktop_.ini檔案就檢查内容,是否是最新的,如果不是就更新。

如果不存在Desktop_.ini檔案就建立并寫入目前的日期:

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 組合檔案全路徑(檔案目錄+檔案名)
  2. 擷取本地時間,并準換成Long型
  3. 再次拼接路徑
  4. 把檔案路徑和日期作為參數傳入ShowSQLWindow()函數,建立檔案并寫入内容(日期)

注:

ShowSQLWindow()其顯示是一個庫函數,但是查不到,就點進去分析了一下,是使用CreateFile()和WriteFile()兩個函數建立檔案和寫入檔案。

c) 如果不是檔案夾

- 判斷是否是gho檔案,如果是就删除

- 判斷是否是setup.exe\NTDETECT.COM檔案,如果是就跳過

由于剛才這幾部很簡單就不用貼代碼贅述了,接下來是感染檔案,感染的類型有exe、rsc、htm、html、asp、aspx、php等,我們詳細分析其中的感染EXE檔案 sub_407F00:

First. 周遊程序,觀察目前exe是否在運作

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

Second. 排除自身

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

Third. 讀取檔案内容

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

Fourth. 觀察特診“whboy”确定是否被感染

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

Fifth. 如果未被感染,開始感染序幕(把自己拷貝一份過去)

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

Sixth. 追加原PE + 感染辨別字元串

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

圖 2 - 25

分析:

  1. 生成辨別字元串”whboy”+程式名.exe+\2+長度+\1
  2. 以追加的方式打開檔案
  3. 把源檔案内容追加到病毒檔案末尾
  4. 把感染辨別字元串吹加到檔案末尾
  5. 關閉檔案

d) 其他檔案的感染就不一一贅述了

2.3.2 分析 sub_40C374 維護

點選進去可以發現這是一個定時器,定時器回調函數sub_40BE7C,然後再深入這個定時器函數裡面,你會發現邏輯非常簡單,就是建立\維護setup.exe、autorun.inf兩個檔案。

詳細分析如下:

  1. 周遊盤符(前面分析過此處略過)
  2. 排除A、B盤循環檢測每個盤下是否有setup.exe
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結
  1. Setup.exe不存在就建立,如果存在就檢查是否被修改,若被修改就删除目前setup.exe建立新的。

這裡分析較為複雜的已存在情況:

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 删除已存在檔案
  2. 拼接新檔案名
  3. CopyFileA()複制目前檔案到新檔案
  4. 判斷autorun.inf存在與否,存在或不存在的情況和setup.exe的處理方法一緻。
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 删除已存在的autorun.inf
  2. 建立檔案autorun.inf
  3. 寫入autorun.inf腳本内容
  4. 關閉檔案

注:

這裡的autorun.inf腳本内容如下,功能就是啟動setup.exe病毒

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

2.3.3 分析 sub_40BACC 區域網路傳播

細心地點發現這個函數傳入了一個參數0Ah,是用來辨別将要建立線程個數的,這個函數功能是建立10個子線程來嘗試使用弱密碼連接配接目前區域網路中的其他主機。

裡面首先線程回調函數是sub_40BA8C,點進去是loc_40B864,接下來我們詳細分析loc_40B864函數。

  1. 首先循環擷取目前網絡狀态
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

調用InternetGetConnectedState()函數擷取目前的網絡是否有連接配接

  1. 生成随機目前網絡IP
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

轉存失敗重新上傳取消

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

這裡的sub_40B520(我取得别名randomLocAreaNetIP)值得重點分析,主要功能是根據目前的IP生成一個目前網絡中的随機IP,分析如下圖:

a) 首先調用了sub_40A734,主要功能是調用GetHostName()擷取目前主機名,再調用GetHostByName()根據主機名擷取IP

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 調用WSADtartup()初始化網絡環境
  2. 調用gethostname()擷取主機名,再調用gethostbyname()根據前面的主機名擷取IP位址
  3. 調用inet_ntoa()把網絡序二進制IP轉換成點分十進制的IP位址
  4. 清理關閉網絡環境

b) 提取IP的每個部分

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 擷取IP的總長度
  2. 根據 ‘.’的位置,提取IP的第一部分,并轉換成LONG整型,通過ebx+4以供後面調用

注:

這裡我隻描述了IP的第一個部分的提取,第二、三部分的提取都一樣就不一一贅述了。

c) 随機生成主機ID号

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析;

生成一個0~255的随機數作為主機ID

d) 組合一個目前區域網路的IP

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

結合的IP個前三部分加上後面随機生成的主機ID,組合拼裝出新的IP

  1. 嘗試連接配接随機IP的139端口、445端口
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

連接配接139端口,connect()傳回值0代表成功。

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

連接配接445端口,connect()傳回0代表成功。

a) 如果端口連接配接成功,調用sub_40B40c,這是區域網路傳播的核心部分,分析sub_40B40c如下

i. 擷取系統版本資訊

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

調用GetVersionExA()函數擷取系統資訊。DetectIsWin32_是重命名的函數名,原是sub_40A7F4裡面就是調用GetVersionExA()很簡單,就是判斷是否是win32平台,是就傳回-1,不是就傳回0。

ii. 嘗試進行弱密碼連接配接

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 使用弱密碼進行網絡資源連接配接
  2. 連接配接成功調用sub_40A928,複制目前病毒檔案到網絡共享檔案夾
  3. 關閉網絡資源連接配接

分析sub_40A928

  • 共享檔案夾下複制病毒名為GameSetup.exe
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 生成目前共享的是否是目錄
  2. 如果是目錄則拼接該目錄下GameSetup.exe的全路徑
  3. 拷貝病毒資料自身于該檔案夾下的GameSetup.exe
  • 如果有admin$共享就周遊感染全盤
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 判斷是否有admin$ 共享
  2. 拼接網絡資源路徑
  3. 開始全盤周遊感染(此函數我們前面分析過,這裡就略過了)

2.4 分析sub_40d088

6個定時器,主要功能是使用系統資料庫啟動項、隐藏屬性、QQ代理下載下傳惡意程式并運作、連接配接網站下載下傳資源等,挨個分析定時器回調函數sub_40CEE4、sub_40D040、sub_40D048、sub_407430、sub_40CC4C、sub_40C728。

2.4.1 分析sub_40CEE4 提權、關閉視窗、關閉程序、自啟動、隐藏屬性

  1. 提權(具體代碼在sub_406E2C中的線程回調函數sub_4061B8中的sub_406108)
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 擷取目前的權限
  2. 修改(提升)目前的權限
  3. 周遊視窗,關閉防火牆、程序、VirusScan等視窗
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 周遊視窗
  2. 擷取視窗名
  3. 比對是否是目标視窗名
  4. 如果是目标視窗名就發送12h –WM_QUIT消息然視窗退出

注:

比對了很多視窗,這裡隻列出了防火牆,其他都一樣就不一一贅述了。

  1. 關閉工作列視窗
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 通過類名找到任務視窗的視窗
  2. 關閉視窗名為” pjf(ustc)”的視窗

注:

可以發現還模仿了很多鍵盤事件來關閉

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結
  1. 關閉程序
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

通過前面分析過的一個函數,打開很多指定程序名的句柄并調用TerminateProcess()來結束程序。

  1. 添加啟動項、指定隐藏屬性
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

直接調用兩個簡單的系統資料庫操作函數,修改了系統資料庫添加了病毒為自啟動,隐藏屬性打開。

2.4.2 分析 sub_40D040 QQ代理下載下傳惡意程式并運作

分析sub_40CC34

這還是一個線程函數,回調函數為sub_40C9B0,分析sub_40C9B0函數

  1. 從指定網頁上下載下傳檔案中的連結
    熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 解碼指定的字元串得出相關連結
  2. 使用QQ代理下載下傳該連結中的内容并傳回到eax内指針指向的緩沖區

注:

使用QQ代理的函數分析:

  • 設定QQ為代理程式
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結
  • 通過代理下載下傳、并将資料傳回
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 建立下載下傳句柄
  2. 讀取剛才下載下傳句柄中的資料
  3. 将資料通過eax傳回
  4. 下載下傳連結中的檔案并執行
熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 擷取Windows目錄的路徑
  2. 擷取連結中的檔案名稱
  3. 下載下傳檔案
  4. 拷貝下載下傳的資料
  5. 拼接檔案路徑并執行

2.4.3 分析 sub_40D048 關閉C槽共享

該函數有開啟了兩個線程,線程回調函數分别是sub_40CC34、sub_40CDEC,sub_40CC34的主要功能是使用QQ代理下載下傳一批連結,再這些連結指向的惡意軟體到Windows檔案夾下面運作起來。

  1. 分析 sub_40CC34 和前面的QQ代理下載下傳一緻就不再分析了略過
  2. 分析 sub_40CDEC 關閉C槽網絡共享
    熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

  1. 周遊盤符
  2. a) "cmd.exe /c net share 盤符$ /del /y"

    b) "cmd.exe /c net share admin$ /del /y" 删除網絡共享

2.4.4 分析 sub_407430 關閉安全相關

開啟線程關閉安全相關的服務,線程回調函數是sub_406E44。

分析 sub_406E44函數:

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

分析:

很直白的調用函數關閉安全相關的服務、删除系統資料庫鍵值等

2.4.5 分析 sub_40CC4C 使用QQ代理下載下傳指定連結資料

前面分析過,此處略過

2.4.6 分析 sub_40C728 使用QQ代理下載下傳惡意程式并執行

前面分析過,此處略過

3.總結

3.1 分析結果總覽

熊貓燒香_彙編級_超詳細分析1.樣本概況2.具體分析過程3.總結

3.2 本分析感悟總結

通過這次分析,讓我第一次領略了一個完整病毒的所有構成,越分析越感覺到舒服,因為一層層的解開病毒的神秘面紗,都想寫一個熊貓燒香變種的沖動。感謝給了充足的時間,給我完整的分析。

繼續閱讀