A. 惡意程式分析帄台
4.1.2 登錄機碼隱藏
目前會在登錄檔中註冊藉此達到特殊目的的木馬非常的多,例如 kavo 這隻 有名且流傳甚廣的隨身碟木馬就是一例。該木馬的症狀是會在各個磁碟機(包含 系統槽及外部隨身碟)中寫入一個隱藏的 autorun.inf 檔,使得使用者在檔案總管 中點選磁碟機想要開啟時,會觸發該檔案藉此執行惡意行為,並且阻止使用者 開啟磁碟機。此外還會在開機時啟動,以進行更多惡意行為。
為 了 達 到 這 個 目 的 , 他 會 在 登 錄 檔
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 中 註 冊,藉此讓自己在每次開機時都會自動執行。此外由於這個木馬主要的行為來 自於各個磁碟機下的 autorun.inf 檔案。因此為了保護這個檔案,該木馬會修改登
錄 檔
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Expl orer\Advanced\Folder\Hidden\SHOWALL 中的 CheckedValue 從 1 修改成 0。如此 一來,可以將檔案總管中的「隱藏保護的作業系統檔案」該選項鎖住,使得使 用者即使知道磁碟機下可能有 autorun.inf 也無法看到這個隱藏檔並刪除它。
由這個例子可以知道,登錄檔非常重要,一旦經過惡意程式修改,系統就會 變得非常的不安全,任何問題都有可能因此發生。故本計畫欲開發一套登錄檔 修改檢測的分析模組來幫助檢查系統的安全性。
(a) 登錄檔存取方式
33
一般人直覺上會認為,所有的登錄檔是儲存在一個檔案裡面,這個檔案裡就 包含了所有的登錄檔資料。在早期 Windows 3.x 系統上確實是以這種方式儲存。
然後在 Windows 95 之後,就開始採用將登錄檔分散儲存在多個檔案裡面的方式,
而這些檔案則被稱為 hive。
那麼為什麼在 regedit 中檢視時,顯示出來的會是一個完整的 Tree 的架構呢?
UNIX 的使用者可以用 UNIX 的檔案系統架構來想像:regedit 會先虛擬出一個 tree root,接著把分散在各個檔案的 Registry 資訊一個一個 mount 上來,最後就變成 了我們在 regedit 看到的 Registry 架構。至於實際的做法則是透過類似捷徑的方 式將各個檔案連起來,讓使用者可以很方便的存取。
圖表 4-2Windows 登錄機碼截圖
接著看看上圖 regedit 的開啟時的情況,看到這張圖再配上之前提到的架構,也 許會認為目前登錄檔的架構就是儲存在 5 個檔案裡面,由 regedit 將他們連接起 來。事實上並不是這樣,例如 HKEY_CURRENT_USER 並不是一個檔案,只是連接 到 HKEY_USERS 中有關目前登入的使用者設定的一個捷徑。也就是說 regedit 顯
34
示出來的東西,並不一定會真的存在一個檔案裡面,有可能是一個捷徑,也有 可能是另一種檔案:volatile hive。
Volatile hive 是一種特別的資料格式,他並沒有存在任何一個檔案中,而是 每次系統啟動時才去產生這些資料並儲存在記憶體中,當系統結束時資料就跟 著 消 失 , 直 到 下 次 啟 動 時 才 重 新 產 生 。 最 好 的 例 子 就 是 儲 存 硬 體 資 訊 的 HKEY_LOCAL_MACHINE\HARDWARE,由於硬體隨時都有可能變更,因此這些資訊 並沒有儲存下來的必要,每次即時產生可以讓系統的硬體資訊保持在最新的狀 態。
(b) 重要路徑介紹
在現行 Windows 版本中,提供了 regedit 這隻登錄編輯程式供使用者使用,使 用者可藉此工具來編輯及瀏覽 Windows 登錄檔。目前 Windows 將登錄檔分為五 個分支,有關這五個分支的簡略說明如下:
表格 4-1Windows 主要登錄機碼目錄名稱
HKEY_CLASSED_ROOT 連接到 HKEY_LOCAL_MACHINE\SOFTWARE\Classes HKEY_CURRENT_USER 連接到 HKEY_USERS 中屬於目前登入的使用者的設定
HKEY_LOCAL_MACHINE 有關 local 端的所有設定。HKEY_LOCAL_MACHINE 本身並不存在 於任何一個檔案,而是一個包含了很多 hive 的一個 key
HKEY_USERS 儲存所有使用者的設定
HKEY_CURRENT_CONFIG 連 接 到 HKEY_LOCAL_MACHINE\SYSTEM CurrentControlSet\Control\IDConfigDB\Hareware,包含了目前的 硬體設定
由 上 表 可 以 知 道 , 在 regedit 中 顯 示 出 來 的 幾 個 分 支 , 實 際 上 只 有
35