pestudio-靜態程式碼分析的銀色子彈

唐任威 Vincent Tang

  • 恆逸教育訓練中心-資深講師
  • 技術分類:資訊安全

 

 

惡意程式的分析,以執行程式與否,可以分成靜態分析與動態分析。其中靜態分析的部分是希望可以在不執行程式的情況下,將程式中的特徵取出,進而藉由這些特徵來判斷程式是否會對系統造成危害。

一般來說在靜態分析時,會希望確認的部分有:

  • 程式的雜湊值
  • 是否為已知的病毒
  • 執行檔標頭
  • 呼叫函數
  • 其他雜項等
  • 雖說上述項目都可以透過各式工具完成。但倘若可以用單一工具搞定,那勢必可以大幅增加靜態分析惡意程式的效率。而這次所要介紹的工具 – pestudio,就是這樣的工具。

    pestudio 的官方下載網址如下:https://www.winitor.com/binaries.html

    使用方式非常簡單,只要在啟動程式後,將需要分析的程式拖曳進去即可。

    分析完畢後,結果會分成不同的類別,直接顯示在操作畫面中。其中幾個比較實用的部分如下:

    • indicators:pestudio 基本內建了一些分析規則。當程式進行掃描時,被觸發的規則都會顯示在這個區塊。並且被觸發的規則會區分其嚴重性 (severity) 數字愈小,嚴重性越高。而嚴重值為 1 者,代表最為嚴重。因此嚴重值 1 的項目越多,代表該程式的風險越大。

    • virustotal:pestudio 會直接以程式的雜湊值在 VirusTotal 上查詢該程式。因此若該程式在 VirusTotal 上已經有結果,則該結果將直接顯示。若查無該程式,pestudio 預設也不會上傳程式,避免不必要的樣本外洩。

    • sections:PE 執行檔的結構是以一個個的區段 (section) 組成,每個區段的功能各不相同。例如 .text 區段是程式碼、.rdata 是唯讀資料、.data 是可讀寫資料等。在各個區段中值得注意的欄位有 raw size 與 virtual size,entry point 及 readable、writable 跟 executable 三種權限。
      其中 raw size 是實際大小,而 virtual size 是程式載入記憶體後的大小。原則上這兩個大小是差不多的。若落差太大,則代表該程式可能有加過壓縮殼。 而一般正常的情況下,不管該程式有幾個區段,其中只會有一個區段有 “entry point”,代表程式執行的進入點。如果該程式有一個以上的進入點,也代表該程式被加過殼。
      最後是區段權限 (readable、writable、executable) 的部分,原則上執行跟寫入權限不會在某個區段中同時並存。如果同時並存,也代表了加殼的可能性。

    • libraries、imports:由於程式的撰寫,不可能所有功能一手包辦。因此呼叫既有的函數,就成為撰寫程式的重要部分。也因此透過分析程式所載入的函式庫與所呼叫的函式,也就可以知道程式所具備的相關功能了。
      在 libraries 項目中,pestudio 會顯示該程式所連結的函式庫。而在 imports 項目中,pestudio 會顯示該程式所呼叫的函式。透過這些項目,可以用來判斷該程式所具備的能力。

    • strings:程式的內部通常會有一些可以直接讀懂的字串,透過這些字串也許可以瞭解到一些程式內部的蛛絲馬跡。strings 項目會找出這些字串並且比對黑白或關鍵字名單,藉此增加識別惡意程式的機會。

    • version、certificate:按照正規 Windows 程式的編譯原則,程式在編譯完成後,程式本身會包含一些程式的基本資訊如版號、說明、版權與憑證資訊等。原則上這些資訊越完整,程式有問題的可能性就越低。如果可以包含上數位簽章,程式的可信度,相對更高。

    • overlay:若程式已經被加縮或加殼,則相關資訊會顯示在此區塊。