黑箱測試的專業
這篇文章主要說明黑箱測試專業的提升有哪些技巧與工具。
筆者認為病毒分析的專業其實是黑箱測試的專業極致,
因為為了要判斷病毒的行為,許多情況是進行很多的黑箱測試並且做各種分析
這樣的分析方法其實可以應用在許多一般應用程式的黑箱測試。
運用相關黑箱測試的技巧與工具,將黑箱測試的專業進一步的提升。
黑箱測試一個檔案的行為可以分為下列幾類:
檔案基本屬性分析
Windows PE (DLL, EXE, SYS)檔案,都會有固定 PE File的檔案結構,
因此,觀察該檔案結構可以在尚未執行檔案前,可以知道該檔案的一些特徵。例如:該檔案是否有被 Packed過。
- PEview version 0.9.9 ( .zip 31KB )
- https://www.safer-networking.org/products/filealyzer/
- https://www.winitor.com/
筆者很推薦使用 PEStudio https://www.winitor.com/
因為使用簡單,分析的結果詳細,例如:檔案執行時所需要的 DLL, 檔案可疑的地方用紅色標明並且會加以說明
檔案ASCII分析
每個應用程式或是檔案都一定會有輸出的訊息、例如錯誤訊息、提示輸入、甚至是網路傳輸用的訊息
這些訊息大部分會是以 ASCII 的形式存在,因此如果可以將檔案內部所有的ASCII 字元取出,也可以對於該檔案的行為做某些程度的了解。
這邊就要介紹一個微軟提供的工具,Strings
https://technet.microsoft.com/en-us/sysinternals/bb897439.aspx
該程式使用上,僅需要指令列下執行,就會輸出該檔案內部所有 ASCII的文字
strings Targetfile |
這邊用 notepad.exe 為例子
notepad notepad.exe |
輸入擷取如下
Strings v2.51 Copyright (C) 1999-2013 Mark Russinovich Sysinternals – www.sysinternals.com!This program cannot be run in DOS mode. 91? ?1? /1? (1? 81? =1? 1Rich .text `.data .rsrc @.reloc ADVAPI32.dll KERNEL32.dll NTDLL.DLL GDI32.dll USER32.dll msvcrt.dll COMDLG32.dll SHELL32.dll |
!This program cannot be run in DOS mode.這是一個Windows PE檔案的明顯特徵。不管副檔名如何改變,檔案開頭都會有這樣的特徵。另外,相關該檔案會用到的DLL 也會列出。 |
<application xmlns=”urn:schemas-microsoft-com:asm.v3″> <windowsSettings> <dpiAware </windowsSettings> </application> |
檔案內部定義的一析資料結構與設定也會知道 |
除此之外,如果該檔案有對外連線的 URL 、IP Address、Email 信箱,也都可以透過這樣的方式取得。
還包含存取特定的檔案路徑 c:\windows\system 或是 registry key \runonce\等
Strings 是一個簡單,又不需要執行檔案就可以對檔案有初步了解的一個好用工具
檔案對於系統的影響
另外我們會分析該檔案執行後,會對於系統造成哪些影響,這些影響例如
- 啟動的 process
- 啟動的服務
- 修改的 Registry Key
- 存放的檔案
要知道這些就必須要將檔案執行起來觀察,筆者建議兩個工具。
- Process monitor: 可以將所有系統的”歷史”執行資訊不斷的記錄下來
- Process Explorer: 進階版的 Task Manager 只會顯是”當下”即時的訊息
https://technet.microsoft.com/en-us/library/bb896645.aspx
https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
建議可以使用 process monitor 將相關的歷史資訊紀錄,以方便事後分析。
檔案如何存取網路資源
檔案執行時候,該檔案如何對外連線? 使用哪些 protocol? 連到哪些網站 or IP address,連線的內容為何?
這部分最簡單的方式就是檔案執行時,直接啟動 WireShark 將相關的網路資訊記錄下來,最事後的分析
流程圖
另外一個分析的方式就是利用 IDA 這個工具進行 Reverse Engineering
其中最為推薦的,就是對於檔案流程的分析,儘管組合語言的部分不一定可以全然理解
透過一些錯誤訊息或是函數呼叫,該流程圖可以讓我們了解程式的基本邏輯。
小結
這些分析不外乎是知道該檔案執行後的行為,這篇沒有提起到的另外一個領域是 “效能”,當檔案對於系統效能的影響,
情境 | 使用工具 | 說明 |
如何在執行前知道檔案的一些基本行為? | Strings | 例如可以從 menu、button、使用者提示訊息、錯誤訊息等知道該檔案的基本 input/ouput可以根據此設計相關測試個案 |
網路行為 | WireSharkTCPView |
|
系統互動行為 | Process monitorProcess Explorer | 檔案的存取與建立process or 服務的啟動Registry key的存取與建立載入的 DLL |
透過這幾個層面的分析,就可以對該未知檔案的行為有某些程度的了解。這也是黑箱測試的另一個專業領域。