1. 程式人生 > 實用技巧 >《惡意程式碼分析實戰》實驗——Labs-09

《惡意程式碼分析實戰》實驗——Labs-09

《惡意程式碼分析實戰》實驗——Labs-09

記錄《惡意程式碼分析實戰》中的實驗,提供相關連結:

標題

Labs-09-01實驗

Labs-09-02實驗

Labs-09-03實驗

靜態分析:

1. 查殼,無殼
在這裡插入圖片描述
2. 檢視匯入表:

  • KERNEL32.dll, (讀取、複製、建立和修改檔案,獲取檔名和
  • 刪除檔案,建立程序,對比字串,獲取系統版本資訊)
  • ADVAPI32.dll, (建立和刪除服務,建立、修改和刪除登錄檔,)
  • SHELL32.dll, (遠端執行系統命令)
  • WS2_32.dll,(進行網路連線和資料傳輸)

在這裡插入圖片描述
在這裡插入圖片描述
3. Strings 分析: 出現可能會連線的網址,一個系統路徑可能用於存放其他惡意檔案,-cc, -re 和 -in 像是命令列的引數。
在這裡插入圖片描述
4. IDA分析

  1. 開啟IDA分析,觀察整體的流程圖,發現會根據程式的引數進行跳轉,發現當僅僅只有預設引數(即雙擊程式)時程式的邏輯會非常簡單,不會有特別的程式碼執行;另一個多引數的分支則邏輯更加就複雜,挨個分析:
    在這裡插入圖片描述
  2. 左邊的邏輯分支會進行指定登錄檔的獲取和分析,如果該鍵值不存在則直接會呼叫一個函式進行自我刪除,如果存在的話,則會呼叫sub_402360 函式,然後結束。
    在這裡插入圖片描述在這裡插入圖片描述
  3. 跟進sub_402360 函式進行分析,發現存在一個死迴圈,其中僅呼叫了兩個函式sub_401280和sub_402020函式

在這裡插入圖片描述
4) 先分析sub_401280,發現該函式會獲取指定登錄檔下的鍵值對,並且放入指定的快取中
在這裡插入圖片描述
5) 再分析sub_402020函式,發現該函式是一個後門執行的函式,其中包括 “sleep”, “upload”, “download”, “cmd” 等指令;其中獲取的指令是通過函式sub_401E60獲得的。
在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述
6) 再跟入函式sub_401E60進行分析,發現其中的sub_401AF0函式非常可疑,傳給它的引數帶有hots和name等關鍵詞,猜測該函式可能涉及網路資料傳送。
在這裡插入圖片描述
7) 跟入該函式,發現該函式為一個網路資料傳送和接受函式;其中網路資料包的相關引數來著前面函式sub_401470 和 sub_401D80從指定登錄檔的鍵值中獲取。

在這裡插入圖片描述
8) 右邊分支發現一個函式sub_402510呼叫,此函式的呼叫直接影響下面的邏輯跳轉,跟進去分析,發現該函式是一個程式執行密碼的檢測函式,通過引數輸入的字串,挨個比較,從而決定下一步的跳轉邏輯:

  • 先檢查密碼的長度是否為4,再依次檢查第一位是否為‘a‘,第二位是否是’b‘,第三位是否是’c‘,第四位是否是’d‘ .

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
9) 再根據邏輯往下分析,發現程式將根據命令列輸入的另一個引數進行不同的程式碼執行,分別有幾種模式 ‘-in‘, ‘-re’, ‘-c’, ‘-cc’

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
10) 分析 “-in” 的模組,該模組又會進行引數個數的判斷,但是在引數個數為3和為4的兩個分支中都會呼叫同一個函式,經過分析,我們可以確定該函式為惡意程式的安裝程式碼部分,重新命名為Func_install,

在這裡插入圖片描述

  • 選中該函式,然後F5進行虛擬碼分析,發現改程式碼會進行服務的建立和程式的自我複製到系統目錄檔案下。
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 但是在該段程式碼的一個分支呼叫了一個函式sub_4015B0,跟進該函式後發現該函式修改該新複製的檔案的時間戳與系統檔案一樣。
    在這裡插入圖片描述
  • 同時該段程式碼還會跳轉到下一個模組呼叫sub_401070函式,同時出現了可疑的字串“60”,“80” 和 “http://www.practicalmalwareanalyss.com” 被作為引數傳入到該函式。
    在這裡插入圖片描述
  • 跟入該函式進行分析,發現該函式會建立一個登錄檔項 “HKLM\SOFTWARE\Microsoft \XPS” 的 “configuration”鍵,並且修改相應的鍵值為輸入的引數即上面的字串。
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  1. 分析 ‘-re‘ 模組,與 ’-in‘ 模組一樣,該模組同樣會判斷引數的個數,三個引數和四個引數會跳轉到不同的邏輯,但最終也會呼叫同一個函式sub_402900,右邊函式在呼叫sub_402900之前還呼叫了sub_4025B0函式,該函式非常簡單,用於獲取當前程式的執行的絕對路徑從而得到函式sub_402900的輸入引數;而在左邊的部分,該引數是由命令列輸入提供的,也就是說兩個分支會根據命令列輸入引數的個數來獲取呼叫函式sub_402900的引數。
    在這裡插入圖片描述
  • 跟進函式sub_402900 進行分析:發現該函式會根據傳入的服務名刪除程式建立的服務,同時根據指定路徑進行程式的自我刪除。
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  1. 分析 “-c” 模組,該模組有兩個邏輯分支,一個指向 “-cc” 模組,此處分析另一個模組,該模組需要7個引數,同時該函式還呼叫了sub_401070 函式來修改指定的鍵值。
    在這裡插入圖片描述
    在這裡插入圖片描述
  2. 再分析 “-cc” 模組,除了一些自我刪除的函式呼叫邏輯模組外,另一個邏輯分支呼叫了函式sub_401280和sub_402E7E,
    在這裡插入圖片描述
  • 其中sub_401280 已經在第4)處分析過,該函式會獲取指定註冊項下的鍵值對,並且放入指定的快取區中。
  • 另一個函式sub_402E7E 被IDA劃分為系統函式之列,同時該函式的輸入引數為一個字串和四個變數,這個與printf函式的格式非常相似,該函式為字串列印函式。
    在這裡插入圖片描述在這裡插入圖片描述

5. 到此,該惡意程式的分析基本就結束了,對於惡意程式的分析,切記不能調入某一個細節中。

6. 接下來進行總結:

  • 1) 該惡意程式需要命令列 ‘-in’ 進行安裝,同時安裝需要密碼 ‘abcd’
  • 2) 該惡意程式還能能執行多種指令 ‘-in’ 進行安裝,‘-re’ 進行惡意程式的徹底清楚,‘-cc’ 進行登錄檔列印,‘-c’ 進行登錄檔配置
  • 3) 此惡意程式在成功安裝後自我複製到指定系統目錄下,並且建立服務進行自啟動。
  • 4) 另外,該程式還會建立後門與C&C通訊,執行任意命令。