四 、 研 究 方 法
本分析平台主要由四個部分所組成:一)檔案來源子系統、二)儲存子系統、三)分析器 管理子系統、四)全系統層次的行為分析系統,彼此間的關聯性可由錯誤! 找不到參照來源。
及錯誤! 找不到參照來源。的架構看出。本平台主要分成兩大流程(圖表 10),第一,透過檔案 來源子系統來取得分析所需的檔案資料,接著依照固定的格式放入儲存子系統中。第二,分析 器管理子系統從儲存子系統中取得待分析的檔案資料後,開始進行分析。全系統層次的行為分 析系統為分析器管理子系統中的其中一模組,亦為本計畫的重點開發項目。以下將分部介紹之 上述四大子系統,並在最後以一個正規化的模式表現之。
圖 表 1 本 系 統 架 構 圖
檔案來源子系統
本系統需要接收大量的檔案作為分析的對象,而此系統必須具備以下特色:(1)
處理大量檔案的能力、(2)各種不同的檔案來源,例如:網際網路、檔案系統、P2P 網路、E-mail…等,以分析並取得各種不同型態的惡意軟體、(3)適用於各種不同的 使用方式,例如:網路爬取、使用者上傳。為滿足以上需求,本系統實做一個 PushTask 之函式庫,此 API 可將任意檔案輸入本系統進行分析,並指定該檔案的優先權。此 PushTask 函式庫先產生檔案的工作識別(UID),在將此 UID 放入 Redis 中,並將檔 案內容存入 Cassandra 中,將檔案輸入我們的系統中。利用此 API 為基礎,我們實做 了兩種檔案來源系統:網頁爬取系統和批次檔案輸入。
在網頁爬取部分,我們使用了 Nutch 為爬取的開發工具基礎。Nutch 為 Apache Fundation 名下的開放原始碼計畫,是一套由 Java 建構的網路搜尋引擎軟體,具有相
6
在 Nutch 爬取大量網頁時,會抓取許多不同格式的檔案,如:exe、jpg、zip、html…
等,而我們系統目前主要是以分析可執行檔為主,因此在爬取網頁檔案時,僅保留系 統可以分析的檔案格式(exe、zip、rar),過濾掉其他無法分析的檔案格式。在 Nutch 抓取檔案後,會執行 PushTask 函式,將檔案輸入到我們的系統中做分析儲存。Crawler 部分為此系統一長期穩定的檔案來源,僅具有最低程度的優先權。
我們選擇了兩個現有的資料庫系統 Cassandra 和 Redis,透過修改程式、設定檔案和內 部些許的程式碼,快速地達到本分析平台所需要的儲存能力。
Cassandra 是一套分散式的資料庫系統,在分析平台中用來儲存未分析的檔案內 容以及分析完的結果。會選用 Cassandra 的考量在於以下三點。
7
1.
NoSQL:Cassandra 是採用 Key-Value 的儲存方式,因此在資料庫有大量資
料的情況下,讀寫速度遠快於一般 SQL 的資料庫。此外,Cassandra 在資料庫的 欄位也有別於 SQL 資料庫,通常 SQL 資料庫的欄位必須在一開始就訂定,之後由於以上考量,本系統將 Cassandra 當作是整個系統的後端,專門儲存所有 的檔案以及其結果,相較於稍後會提及的 Redis,Cassandra 所存放的資料是屬於 永久性的。
8
COMMAND 執行分析器時所需的指令 COMMAND= ./scanner.sh LOG 分析報告的儲存位置 LOG = clamav.out
TYPE 分析器的名稱 TYPE=ClamAV
圖 表 4 分 析 器 設 定 檔 內 容
9
要將分析器運行於本系統中,只需要編寫一個額外的設定檔(config),以 key-value 的形式將分析器的啟動以及結果位置做設定,如圖表 4。 透過設定 設定檔中的 command 欄位(如:COMMAND= ./scanner.sh),可以指定分 析器執行的方式,本系統便可自動分配檔案並且執行分析。log 欄位則用來 指定最後的結果存放位置(如:LOG = clamav.out),本系統便會自動保存 分析結果。
我們實做 AnalyzerInvoker.rb,搜尋分析器目錄裡的設定檔(config),取得各分析器的啟動方 式以及輸出檔案。接著透過先從 Redis 中的佇列取得要分析的工作識別後,以該工作識別去查 詢 Cassandra 資料庫中抓取相對應的檔案。並利用設定檔中的起動方式將分析器啟動。分析完 畢後,則依據設定檔中的分析結果位置取得分析報告,將最後結果回存到資料庫中。
全系統層次的行為分析系統
在惡意程式分析系統部分,本計畫已開發一分析系統,藉由著整合虛擬機器與程式行為分 析來達成揭露隱藏行為的惡意程式。揭露方式主要以登錄檔、檔案系統、網路行為等為主,利 用去年開發的分析平台繼續增強其功能性。
圖 表 5 全 系 統 層 次 的 行 為 分 析 系 統
偵測程序修改行為:本子系統為了達到偵測所有程序的行為,進一步分析惡意程式的攻擊 行為,此實做系統將針對兩個方向進行分析:是否有新增的程序、是否有隱藏程序存在。基於 虛擬機器的應用上,根據虛擬機器內所得到的程序資訊以及從虛擬機器外取得系統資料並分析 後的資訊,進一步比對兩方程序紀錄是否存在差異,藉此來偵測出是否有可疑未知程序產生以 及隱藏程序的存在。我們將在 LINUX環境下以 QEMU 建立虛擬機器,當欲檢測之檔案輸入時,
將其運行在虛擬機器上,再利用 QEMU 的 SNAPSHOT功能來協助實做此系統。
10
如 HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES或
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\EXPL ORER\RUN這些機碼,都是現今最常見的檢驗點。因此,現今的惡意程式程式為了避免被發現,
C:\WINDOWS\SYSTEM32\CONFIG\SAM C:\WINDOWS\SYSTEM32\CONFIG\SECURITY C:\WINDOWS\SYSTEM32\CONFIG\SOFTWARE C:\WINDOWS\SYSTEM32\CONFIG\SYSTEM C:\WINDOWS\SYSTEM32\CONFIG\DEFAULT
%USERPROFILE%\NTUSER.DAT
請注意以上的抽取動作皆由系統外部進行,而不經由系統內部的 API 或系統呼叫。當以上 檔案從硬碟映像檔中抽取出來後,我們將解析這些 HIVE檔案,並列出某些重要登錄目錄下所 有的機碼值,如:
HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\EXPLORER\RUN
11
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\SESSION MANAGER\BOOTEXECUTE
HKLM\SOFTWARE\MICROSOFT\WINDOWSNT\CURRENTVERSION\WINLOGON\USERINIT
HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON\SHELL
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUNONCE
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUNONCEEX
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUNEX
HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUNONCE
HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN
HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUNONCEEX
HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUNEX
等等,之後由系統內部的觀察程式,以 WIN32API 去取得同樣目錄下所有的機碼值,並與
以利用SIGNATURE的方式來偵測記憶體裡,所存放的通訊阜開啟列表資訊。新增的通訊阜開啟
列表,會存在於兩個不同的時間點的清單差集內。整體流程大致如下: FindFileFirst 或 FindFileNext。因此,若 rootkit 想達到隱藏檔案的目的,就會攔截(hook)這
12
Rootkit 將會攔截到並且判斷此要求是否為 Rootkit 想要隱藏的檔案。如果是,Rootkit 將回傳 開檔失敗訊息或是將要求導到別的檔案藉此欺騙使用者或防毒軟體。當一個寫檔的 I/O 進來時,
Rootkit 可以竄改寫檔的內容或是改變讀檔的結果。
以下將透過正規化的方式,描述本平台的演算法以及各元件間的關係。
名詞 定義
ALLURL(u)
A set of links that can be traversed by a URL u.
File(u)
A file downloaded by network crawler with URL u
UUID(f)An universally unique identifier of file f
DB(uuid)
Query a File f with UUID uuid in database
DB_store(uuid , f)Store a File f with UUID uuid in database
DB_report(uuid , r)Store a Report r with UUID uuid in database
Q A global queue stores UUIDs wiht actions push()
and pop()
Analyze()
Action taken by analyzer and generate report
AnalyzerA set of analyzers used in this system
TBA
Taint-Based Malware Behavior Analyzer
ClamAV, Kaspersky
Anti-viurs software
關聯性 DB_store(uuid , f) push( uuid ) end
13
儲存子系統 與 分析器管理子系統 For each Analyzer in our system while( uuid pop() )
DB(uuid).
# start analyzing and generate report r Analyze()
DB_report(uuid , r) end
14 有的搜尋引擎客製化系統 Nutch,來達到上述之功能。Nutch 是一款基於 Hadoop 時實作出的網 路搜尋引擎,該系統可以爬取網路上的資料,透過分析建檔來提供資料搜索的服務。但本模組 並不需要後續對網頁分析的部分,並且有實作與後端資料庫存取的部分。
二)分散式的資料儲存(完成度:100%)
NoSQL 資料庫提供了 Key-Value 的存取方式,利用特殊的雜湊函式來保證讀取和寫入為常 數時間。本子系統將結合分散式資料庫 Cassandra 與集中式 Key-Value Redis 來實現分散式分析 資料儲存。由於 Cassandra 是分散式的資料庫,在存取的時間與存取的能力較傳統 Sql 系統來 的有優勢。但是其缺點是無法快速地列舉其儲存的資料。為了依序處理分析平台內待處理的分 析工作,我們使用了 Redis 內所提供的 List 資料結構來實現佇列的功能,依序地從工作佇列取 出欲分析的工作識別(tasd ID)。在按照取出的工作識別去 Cassandra 資料庫內尋找更多的檔 案資訊。
15
冗長,我們將會結合利用 libemu 來縮短此分析模組的開發時間。藉由著修改 libemu 的系統,
觀測模擬運算時記憶體的狀態,來實作出偵測取得堆疊位址資訊的可疑檔案。
五)全系統層次的行為分析系統(完成度:100%)
本分析系統將利用動態汙染源技術來分析惡意程式在虛擬機器上的攻擊行為。藉著整合汙染源 追蹤系統來觀測資訊流動的狀態,來判斷該程式之行為。由於資訊流動都是以機械碼為基礎來 觀測,故惡意程式的行為可以鉅細靡底的被列出。由於這些二進位的資料,對於一般安全人員 並無太大的意義。所以,本全系統層次的行為分析系統,將會把這些觀測到的資訊流動還原到 作業系統中對應的物件存取,以利判斷分析。該系統將包含下列:偵測程序修改行為(PRC)、
偵測檔案修改行為(FLM)、偵測登錄機碼修改行為(REG)、偵測網路通訊修改行為(NET)、偵測 驅動程式植入行為(DRV)。
16
委託 Open D-Link Routers Forum 建置、維護與測試技術與諮詢
服務 友訊科技
Technology Transfer on Network Threat Detection using
Security Log Correlation 趨勢科技
圖 表 6 產 學 合 作 計 畫 總 表