查殼好幫手 – Exeinfo PE

唐任威 Vincent Tang

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

 

 

在進行程式靜態分析時,最基本的方式莫過於使用關鍵字查找 (Keyword Search) 查看程式中是否有可供識別的字串,透過這些字串找出更多線索。關鍵字查找可以透過像是 Strings 或 BinText 等工具將程式中的可讀字串抓出分析。

被抓出的字串中,最基本會有該程式所呼叫的函式名稱,或者一些其他被寫死的固定字串。這些固定字串通常是程式執行時的訊息,或者如果分析的程式是網路病毒,也許會是該病毒連線控制主機的網址、IP 甚至帳號、密碼。

但有時在抓取字串時,抓出的字串全都會是亂碼,這有一種極大的可能性是該程式已經被加殼處理。所謂的加殼是將原本的程式封裝成另一個程式,常見的封裝有壓縮跟加密二種方式,也就是一般所稱的壓縮殼與加密殼。壓縮殼的目的是讓執行檔的檔案大小變小,藉此節省儲存空間。而加密殼則會將執行檔加密存放,避免程式遭受逆向分析攻擊。而某些惡意程式也會透過類似方式躲避防毒軟體的偵測。

程式加殼與否可以用 Exeinfo PE2 工具檢測。使用方式只需將想檢測的執行檔拖曳至程式的執行畫面即可。

Strings: https://docs.microsoft.com/en-us/sysinternals/downloads/strings
Exeinfo PE: http://www.exeinfo.xn.pl/

Exeinfo PE 檢測程式畫面

主畫面的下方會顯示判別資訊。以下圖為例,該程式是以 UPX 加殼後的結果。另外在「Lamer Info」的部分則會顯示如何脫殼的相關資訊。

Exeinfo PE 檢測結果

如果想進一步瞭解程式的相關資訊,則可以透過中間偏右幾個按鈕的功能更進一步的檢視。相關功能說明如下:

Exeinfo PE 進階功能說明

首先第一個有放大鏡圖案的按鈕是用來搜尋程式中的 16 進制字串。 第二個有階層資料夾圖案的按鈕則是程式 PE 標頭的區段檢視器 (Sections viewer)。可用於檢視程式各區段資訊,如名稱、大小與偏移值等,用於確認程式區段標頭是否異常。

異常的執行檔區段標頭

第三個有資訊圖案的按鈕則是用於檢視程式的版本資訊。

程式版本資訊

第四個有 PE 字樣的按鈕則是用於檢視程式標頭。

程式標頭資訊

最後一個有證書圖案的圖示則是用來檢視程式的簽章資訊,若程式含有簽章則該圖示亮起。

含數位簽章的程式狀態