此章節將詳細說明幾項在本研究會使用到的技術。首先是本模組所需要的特 徵碼之相關技術,例如: PE File 檔案格式的說明、MD5 雜湊演算法。另外,也 將介紹 Windows Service 技術[12],此技術將用於開發本研究的防側錄模組。
2.2.1 PE File 檔案格式說明
PE 為 Portable Executable 之縮寫,為 Microsoft Windows 中可執行的二進位 碼,例如: EXE[2]和 DLL[3]檔案。此格式為 Microsoft 所設計,並在 1993 年由 TIS( Tool Interface Standard )標準化。在 B. Luevelsmeyer 之【PE 檔案格式 1.9 版】
[1]中對 PE File 的檔案架構有完整的說明,圖 17 為 PE File 的檔案格式。
圖 17 PE File 的檔案格式
在圖 17 的檔案格式說明圖中,DOS MZ Header 為 IMAGE_DOS_HEADER 結構,前兩個位元組必頇為 MZ 開頭,用於檢查是否為 Windows 的執行檔。接 下來的 DOS STUB 內容代表用於 OS/2 可執行檔、自解壓縮檔和其他程式。對於 PE File,它是 DOS2 相容可執行檔,包含 100 位元組的內容,若是執行時的作業 系統不相容,則會輸出一個錯誤訊息:”this program needs windows NT"。PE Header 中則記錄被仔入記憶體時所會用到的相關訊息。當程式開始執行時,PE 裝載器 將從 DOS MZ Header 中找到 PE Header 的起始偏移量,進而跳過 DOS stub 直接 定位到真正的 PE Header,並且從 PE Header 之後為該檔案實際內容。
圖 18 為使用 Ultra Edit 實際開啟一份可執行檔案,並以 16 近位顯示其內容,
圖中有標示 1 的地方,即為該檔的 PE Header 位置,從 PE Header 之後為該檔案 實際內容。
圖 18 以 Ultra Edit 開啟可執行檔案內容
2.2.2 MD5 雜湊演算法
MD5 ( Message-Digest algorithm 5)雜湊演算法可將任意長度的資料,以 MD5 雜湊演算法運算,得到一組固定長度為 128 位元的結果。
• 雖然不同的資料經由 MD5 雜湊演算法計算所得到的結果有可能相同,但 是根據統計顯示,重覆的機率低於百萬分之一。
• MD5 為一個單向雜湊演算法,亦即不易以逆向運算得到原始資料,例如:
要計算字串 abc 的 MD5 結果很簡單,但是要將 MD5 計算後的結果逆向運 算得到 abc 卻相當困難。
本研究將採用 MD5 演算法,將取得的資料雜湊計算出一個固定長度的字串,當 作代表該側錄程式的唯一特徵碼,未來若有更高安全性的考量,可改用 SHA-1、
或 SHA-2 雜湊演算法。
2.2.3 Windows Service
在 Windows 作業系統中,Windows Service 為可以長時間在 Session 0 之下運 作且不需要與使用者互動,並且提供特殊功能之具備管理者權限的 Windows 程 式。Windows Service 可以設定在作業系統開啟時開始運作,或者是由使用者手 動啟動它,因此它可以在使用者為登入之前就開始運作。
Session[15]為由已登入使用者的 processes 和 system objects 所組成。當使用 者登入作業系統直到該使用者登出作業系統的這段期間都是屬於 Session。
Session 底下的架構依序為 Windows station, Desktop, User application,如圖 19。
User applications 由 Desktop 所管理,例如:管理 User application 在桌面上的相關 訊息。Desktops 由 Windows station 所管理,例如:管理不同 Desktop 之間的切換。
Windows stations 由 Session 所管理,例如:管理在不同 Windows station 下的程式 之間的溝通。Session 1 是第 1 個登入者所對應之 Session,Session 2 是第 2 個登 入者所對應之 Session,以此類推。但是 Session 0 是保留給 System process 和 Windows Service 使用。
圖 19 Session 架構團
Windows Service 的管理與其他 Windows 程式不同,因為 Windows Service 不與使用者互動,所以 Windows Service 的管理皆是由 Service Control Manager ( SCM )所管理。可以透過 SCM 來 install, start, stop, pause, 或 restart Window Services,或是設定自動啟動或是手動啟動 Window Services。
因為 Windows Service 的權限與一般 Windows 程式不同,導致會成為那些正 在伺機提升自身權限級別的惡意代理的目標,所以 Microsoft 設計了 Session 0 Isolation 技術[18],用於提高 Windows Service 的安全性。在 Windows 作業系統 之下,不同程式之間的互動必頇藉由 Windows API 才能完成,例如:FindWindow, SendMessage 等等 Windows API。因此,Session 0 Isolation 技術主要就是禁止不 同 Session 之下的程式利用 Windows API 來進行互動,使得 Windows Service 與 一般的視窗程式隔離,以提高安全性,Session 0 Isolation 的示意圖如圖 20。但是 可以利用其他的作法進行互動,例如:Named Pipe, Sockets 等等的 Inter-process communication (IPC) 作法。
圖 20 Session 0 Isolation 示意圖
三、 防側錄系統分析
在本章節會針對本研究所實驗的對象的系統架構作說明,以及說明夠模組的 運作方式,接著以這些模組之分析為基礎來建構防側錄系統,對本研究的系統架 構、功能模組之間的溝通,以及系統流程做詳細的說明,並且說明防側錄模組在 功能上的設計考量。