2019年10月12日 星期六

開源惡意軟體分析平台:Malice



在惡意軟體層出不窮的網路上,隨時會從各種管道如電子郵件等收到檔案,但是每個檔案是不是正常無害的內容,並不容易判斷。

而當我們對一個檔案有疑問時,若電腦上有掃毒軟體可以經由它進行檢測,若想要用更多套掃毒軟體進行檢測來判斷有沒有問題呢?

在網路上有一個知名的檢測平台 VirusTotal,是許多人會第一個想到將檔案上傳給他進行多種掃毒引擎檢測的首選。而在台灣的 TWCERT/CC (台灣電腦網路危機處理暨協調中心) 也有建置這樣的平台 Virus Check,使用上也相當容易。

但有些時候檔案的內容有機密性與特殊性的問題,不適合丟到這類公開平台時,就需要尋找自行建置的方案了。




方案介紹

運氣不錯,有一款開源的解決方案 Malice 就是可自架的版本,在官網上開宗明義寫著「Malice 的使命就是成為自由、開源版本的 VirusTotal」,令人印象深刻。

Malice 具有 VirusTotal 上較為常用的幾項功能:
  • 以 Web 介面檢視分析結果
  • 用多種掃毒引擎檢測檔案
  • 開發所用的程式語言
  • 分析檔案類型、目標機器、Hash、PEiD、Section、Resource 等
  • 程式數位簽章資訊
  • 可以保留歷史分析記錄,方便日後查閱
  • 連結 VirusTotal 查詢該檔案的分析結果 (提交檔案 Hash 比對是否有現存報告)

 
在檢測引擎上總共用到以下這些,至於全部的檢測外掛清單可以參考文末的最後一個連結。
  • Symantec
  • QuickHeal
  • Authentium
  • MicroWorld
  • Avast
  • Avira
  • FSecure
  • Sophos
  • K7
  • McAfee
  • FProt
  • TrendMicro
  • AhnLab
  • AVG
  • Ikarus
  • Clam
  • DrWeb
  • GData
  • Emsisoft
  • Eset
  • Fortinet
  • BitDefender
  • K7GW
  • Sunbelt  


Malice 可以安裝在 macOS 與 Linux 上,但目前的版本我實際使用後,我建議在 macOS 上安裝與使用會比較容易。








安裝方式

前面提到,建議在 macOS 上安裝比較容易成功,而且這也是目前官方手冊的主要安裝方式。在安裝之前,有幾個軟體必需先行安裝,否則後面一定執行不起來。

前置作業

首先請安裝 VirtualBox for macOS、 Docker Desktop for macOS 這兩套軟體,請至官網下載後依據標準安裝程序進行即可,本文末的參考資料有相關連結。

接下來,請安裝 macOS 上非常重要的套件管理工具「Homebrew」,對我這樣的 macOS 使用者來說,它的重要性不下於 Ubuntu 上的 apt 指令。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


接著安裝 docker-machine 套件。
brew install docker-machine



軟體安裝

到這裡開始,我們進入 Malice 軟體安裝的步䠫。

安裝與啟動

# 安裝主程式
brew install maliceio/tap/malice

# 建立 Malice VirtualBox 虛擬機與 Docker 容器環境
docker-machine create -d virtualbox malice

# 啟動 Malice Docker 容器
docker-machine start malice

# 將 Malice Docker 容器啟動後相關參數寫回 Host 取用
eval $(docker-machine env malice)


至此,Malice 的安裝步驟總算是完成了。






主要功能

要使用 Malice 很簡單,只要打開 Terminal 下 malice 指令,即可操作。它可以使用的指令如下:
  • scan:分析檔案
  • watch:監看資料夾
  • lookup:查詢檔案 Hash
  • elk:啟動/停止 ELK Docker 容器
  • plugin:列出、安裝或移除外掛程式
  • help:顯示可用指令清單或單一指令說明

例如以下這一行就是檢測 `duplicati-2.0.4.23_beta_2019-07-14-x64.msi` 這支程式:
malice scan ./duplicati-2.0.4.23_beta_2019-07-14-x64.msi


開始分析執行檔


若想要成為一個檢測自動化的服務主機,可以使用 watch 指令監看指定資料夾,只要把檔案丟進來 Malice 就會自動開始分析:
malice watch .


當分析完成以後,就可以開啟瀏覽器進入 http://localhost 查看精美的分析結果。


報表查看

進入 Kibana 平台後,點選左方的 `Malice` 項目,即可準備查看剛剛所分析完的結果。


分析報告-基本資訊


分析報告-檔案資訊


分析報告-執行檔資訊


分析報告-資源內容


分析報告-版本與簽章資訊


分析報告-字串混淆資訊

分析報告-掃毒引擎分析結果


問題處理

在某些環境,下 scan 指令檢測最後會失敗,並出現錯誤訊息:
failed to connect to database: failed to ping elasticsearch: get http://localhost:9200/: dial tcp [::1]:9200: connect: conncetion refuesd


不僅無法檢測完成,要開啟瀏覽器查看報表也會找不到網頁。經過研究後發現,這是 malice 內部啟動 elk 與 web 的問題,需要自行手動解決。

請到畫面最上方的選單列,點選 Docker Desktop 的圖示,並在彈出選單點選 Kitematic 並依據畫面引導將它安裝完成。


準備 Kitematic 工具程式

安裝完成之後將它開啟,此時可以在 Kitematic 的畫面看到有 malice-elasticmalice-kibana 這兩個容器在列表上,但卻是處於停止的狀態,請手動將它們給 `START` 啟動,並稍待運作一會後,即可再重新執行前面的 scan 指令順利運作了。







結論

經過 Malice 所提供的檢測功能,可以讓企業在內部準備自己的檢測服務,當對於手上檔案有問題或者想要分析檢測的時候,就可以在兼顧機密與安全性的考量下完成。

另外,因為 Malice 提供了資料夾監測的自動化機制,我們可以打造一個供內部使用的軟體檢測分析平台,俱備了良好的 Plugin 外掛程式能力,提供範本讓我們可以自己加入需要的功能整合。

而且 Malice 也支援 API 機制,雖然目前官方在 API 開發上的文件仍然缺乏,但隨著未來版本更新,相信我們可以利用這個 API 機制將它與內部的現有系統整合,例如郵件伺服器的附件檔自動檢測,相信會是一個非常棒的應用方式。

備註:官方文件有些步驟很容易一不小心漏掉就裝不起,一定要注意看每個細節。






參考資料