還有一個用戶注冊表NTUSER.DAT保存在用戶文件夾下,路徑為C:\users\用戶名,他們是隱藏文件,包含同名的ntuser.ini和ntuser.dat.LOG文件。
些數據庫文件是二進制文件,無法直接編輯,需要使用注冊表編輯器,編輯器位置在C:\Windows\regedit.exe,通常可以使用快捷鍵win+R打開運行,輸入regedit回車打開注冊表編輯器,win10和win11也可以直接在開始菜單中搜索注冊表打開。
注冊表是一個樹狀分層的數據庫,它有5個HKEY根鍵(H是handle句柄的意思)。
HKEY_CLASSES_ROOT,提取自HKEY_LOCAL_MACHINE\SOFTWARE\Classes目錄,保存著文件的分類信息,包括文件擴展名,默認啟動程序,程序和文件的圖標,文件右鍵菜單功能等。
HKEY_CURRENT_USER,包含當前登錄用戶的配置信息,提取自HKEY_USERS。
HKEY_LOCAL_MACHINE,注冊表的核心項,注冊表的大部分軟硬件和系統配置信息都保存在這里。
HKEY_USERS,包含計算機上所有用戶的配置文件的根目錄。創建的新用戶會根據這里的.DEFAULT配置信息生成自己的配置文件。
HKEY_CURRENT_CONFIG,包含本地計算機在系統啟動時所用的硬件配置文件信息,實際上是從兩個注冊表項創建而來的,即HKEY_LOCAL_MACHINE\System和HKEY_LOCAL_MACHINE\Software。因為是動態創建的,所以修改它的內容沒有什么實際意義。
其實仔細一看,注冊表也只包含HKEY_LOCAL_MACHINE和HKEY_USERS兩大根鍵,這樣看起來就清楚多了。
冊表(Registry)原意是登記本。Windows中的一個重要的數據庫,用于存儲系統和應用程序的設置信息。就像戶口本上登記家庭住址和郵編等信 息一樣。如果戶口登記資料丟失了,那我們在戶籍管理系統上就成了不存在的人。Windows也是一樣,如果注冊表中的環境信息或驅動信息丟失的話,就會造 成Windows的運行錯誤。
神秘的注冊表
注冊表是保存所有系統設置數據的存儲器。注冊表保存了Windows運行所需的各種參數和設置,以及應用程序相關的所有信息。從Windows啟動開始,到用戶登錄、應用程序運行等所有操作都需要以注冊表中記錄的信息為基礎。注冊表在Windows操作系統中起著最為核心的作用。
Windows運行中,系統環境會隨著應用程序的安裝等操作而改變,改變后的環境設置又會保存在注冊表中。所以可以通過編輯注冊表來改變Windows的環境。但如果注冊表出現問題,Windows就不能正常工作了。注冊表與系統的關系如圖所示:
注冊表與系統的關系
注冊表中保存著系統設置的相關數據,啟動Windows時會從注冊表中讀入系統設置數據。如果注冊表受損, Windows就會發生錯誤,還有可能造成Windows的崩潰。
每次啟動Windows時,電腦會檢查系統中安裝的設備,并把相關的最新信息記錄到注冊表中。Windows內核在啟動時,從注冊表中讀入設備驅動程序的信息才能建立Windows的運行環境,并選擇合適的.inf文件安裝驅動程序。安裝的驅動程序會改變注冊表中各個設備的環境參數、IRQ、DMA等信息。
操作系統完成啟動后,Windows和各種應用程序、服務等都會參照注冊表中的信息運行。
安裝各種應用程序時,都會在注冊表中登記程序運行時所需的信息。在Windows中卸載程序,就會在卸載過程中刪除注冊表中記錄的相關信息。
注冊表編輯器與Windows的資源管理器相似,呈樹狀目錄結構。資源管理器中的文件夾的概念到注冊表編輯器中叫作“鍵”。資源管理器最頂層的文件叫作“根目錄”,其下一層文件夾叫作“子目錄”。相似的注冊表編輯器的最頂層叫作“根鍵”,其下一層叫作“子鍵”。單擊鍵前面的 可以打開下一層的子鍵。
注冊表編輯器
windows為我們提供了一個注冊表編輯器(regedit.exe)的工具,它可以用來查看和維護注冊表,注冊表編輯器與資源管理器的界面相似,注冊表編輯器的左側是列表框,顯示了注冊表的結構,右側是顯示鍵的具體信息。
菜單欄:這里有導入、導出、編輯、查看等操作功能。
樹狀鍵:顯示了鍵的結構。
狀態欄:顯示所選鍵的路徑。
名稱:注冊表值的名稱。與文件名相似,注冊表鍵也有重復的現象,但在同一個注冊表鍵中也不能存在相同名稱的注冊表值。
類型:注冊表鍵存儲數據采用的數據形式。
數據:注冊表值的內容,注冊表值決定了數據的內容。
默認:所有的注冊表鍵都會有(默認)項目。應用程序會根據注冊表鍵的默認項來訪問其他數值。
注冊表的結構
它有六個分支(有的是五個):
hkey-classes-root 文件擴展名與應用的關聯及ole信息
hkey-current-user 當前登錄用戶控制面板選項和桌面等的設置,以及映射的網絡驅動器
hkey-local-machine 計算機硬件與應用程序信息
hkey-users 所有登錄用戶的信息
hkey-current-config 計算機硬件配置信息
hkey-dyn-data 即插即用和系統性能的動態信息
打開注冊表
注冊表不能像其他文本文件一樣用記事本打開,必須用注冊表編輯器來打開。方法是:單擊開始菜單,在搜索中輸入“Regedit”再按Enter鍵,雙擊搜索出來的Regedit程序,或按Win+R(+R)鍵調出運行窗口,在運行中輸入“Regedit”再按Enter鍵。
注冊表修改方法有:
1. 軟件修改(安全)
通過一些專門的修改工具來修改注冊表,比如:magicset、tweakui、winhacker等等。其實控制面板就是一個這樣的工具,只不過功能簡單一些。
2. 間接修改(比較安全)
將要修改的寫入一個.reg文件中,然后導入注冊表中。這樣做的好處是可以避免錯誤的寫入或刪除等操作,但是要求用戶了解注冊表的內部結構和.reg文件的格式。
3. 直接修改(最不安全,但最直接有效)
就是通過注冊表編輯器直接的來修改注冊表的鍵值數據項,,但是要求用戶有一定的注冊表知識,熟悉注冊表內部結構而且一定要小心謹慎,否則會把系統弄癱。
使用示例:
(1)修改鍵值:開始—運行-輸入 regedit --確定,打開注冊表編輯器,在左窗格選定你要修改的子鍵,在右窗格打到要修改的鍵值項,右擊該鍵值項,按要求修改,修改完畢。
例:以加快開關機修改“HKEY-LOCAL-MACHINE”-“Stem”“CurrentControlSet”-“Control”-將字符串“WaitToKillServceTimeout” 數值數據20000修改為1000。
開始—運行—輸入“Regedit”—在打開的注冊表編器中后步向下打到“Control”左擊打開右窗格,在右窗格打到“WaitToKillServceTimeout”雙擊打開“編輯字符串”對話框,在“數值數據”框中輸入要修改為的數據數值“1000”—確定。
(2)新建子鍵和鍵值:右擊父鍵,選“新建→項”,在打開的“新建#1“中輸入子鍵名,確定,右擊新建的子鍵,在右窗格添加新鍵值項和鍵值。
例:新建字符串,新建“HKEY-LOCAL-MACHINE”-“Stem”“CurrentControlSet”-“Control”-“HungAppTimeout”的數值數據為“200”。
開始—運行—輸入“Regedit”—在打開的注冊表編器中后步向下找到“Control”左擊打開右窗格,右擊右窗格空白處—新建—字符串—在名稱中輸入名稱“HungAppTimeout”,雙擊該名稱打開“編輯字符串”對話框,在“數值數據”框中輸入數據數值“200”—確定。
(3)刪除子鍵和鍵值:開始—運行-輸入 regedit --確定,打開注冊表編輯器,在左窗格右擊你要刪除的子鍵,選“刪除”;在右窗格右擊你要刪除的鍵值項,選“刪除”。
注意:為保險起見,修也注冊表前要備分注冊表,方法是:在注冊表編輯器窗口—文件—導出—選擇導出部分還是全部—輸入文件名—保存。一旦修改錯誤 可用“導入”方法恢復。如果修改出問題可以重啟電腦,連續按F8鍵,啟動菜單選擇最近一次正確配置進入。
注冊表(英語:Registry)是Microsoft Windows操作系統和其應用程序中的一個重要的層次型數據庫,用于存儲系統和應用程序的配置信息。
早在Windows 3.0推出OLE技術的時候,注冊表就已經出現。但是,從Windows 95開始,注冊表才真正成為Windows用戶經常接觸的內容,并在其后的操作系統中繼續沿用至今。隨后推出的Windows NT是第一個從系統級別廣泛使用注冊表的操作系統。(via 維基百科)
注冊表由鍵(key,或稱“項”)、子鍵(subkey,子項)和值項(value)構成的hive文件組成,關于Windows注冊表hive格式的詳情說明可以參考這篇文章:regf/Windows registry file format specification.md at master · msuhanov/regf · GitHub
注冊表的結構是一個樹狀結構,一個鍵(key,或稱“項”)就是一個節點,子鍵(subkey)就是這個節點的子節點,子健也是鍵。鍵的一條屬性被稱為一個value(值項),value由名稱、類型、數據類型和數據組成。一個鍵可以有多個值,每個值的名稱不同,如果值名稱是空,則該值為該鍵的默認值。
可以打開注冊表編輯器查看其結構組成:
注冊表的主鍵,也就是主分支有五個,分別是:
注冊表數據類型主要有以下幾種:
注冊表中時間格式有以下幾種:
FILETIME:64位值,代表間隔多少個單位為100納秒的時間(從UTC1601年1月1日開始)
Unix Time:32位值,代表間隔多少秒(從UTC1970年1月1日開始)。
DOS Date/Time:兩個16位值,詳細記錄了當地時間和年月日。
注冊表在Windows NT操作系統中被分為多個文件存儲,這些文件被稱為Registry Hives,每一個文件被稱為一個配置單元。
主要配置單元有:
修改注冊表的主要方式有:1、使用提供Windows提供的注冊表編輯器:%systemroot%\regedit.exe;2、使用reg命令,可以對注冊表進行增刪改查、導入導出注冊表文件(reg文件)、導入導出或加載配置單元(RegHive)等操作;3、使用reg文件,用戶可以通過注冊表編輯器導出注冊表某些項為一個reg文件,反之可以導入一個reg文件將項目還原或者修改。
此外,為了防止注冊表出錯和損壞,Registry hives還包括注冊的事務日志文件和注冊表的備份文件。事務日志文件名與注冊表文件一致,且在同一個路徑中,只是后綴不同。事務日志文件以.LOG為后綴,多個日志后綴會顯示LOG1、LOG2這樣。(如果要查看這些日志文件,需要打開文件夾選項,取消勾選“隱藏受保護的操作系統文件”)
備份文件則在\Windows\System32\config\RegBack\路徑中。
在發生修改將數據寫入到主文件之前,Hive寫入器會先將這些數據存儲在事務日志文件中,如果寫入事務日志時發生錯誤(比如系統崩潰),則主文件不會受影響。如果寫入主文件時發生錯誤,可以通過事務日志包含的數據恢復主文件。
要獲取Hive,可以通過reg save命令創建Registry Hives的副本。(在管理員權限的命令提示符中執行)
C:\WINDOWS\system32>reg save hklm\sam c:\sam
操作成功完成。
C:\WINDOWS\system32>
分析Hive可以使用開源軟件RegRipper,RegRipper是一個用perl編寫的開源工具,可以從注冊表中提取和解析各種信息(Key、value、data)以供取證人員進行分析。
RegRipper項目地址:https://github.com/keydet89/RegRipper3.0
打開RegRipper軟件,選擇Hive文件,設置好報告存儲路徑,選擇好Profile,然后點Rip It
它會創建兩個文件,一個是日志文件,一個是報告文件
打開SAM hive的分析報告文件,可以看到用戶和用戶組的詳細信息
來源:Cynet應急響應挑戰賽
題目描述:Podrick 說在2020 年 2 月 3 日午餐時間(下午 12:00 左右),有一個惡意的 USB 設備插入了他的電腦。他還提到他看到他的一位同事——Theon G,手里拿著 USB設備離開了他的辦公室。但Theon 聲稱他進入辦公室是為了拜訪 Aria(與Podrick在同一辦公室)。見Aria不在,他便離開了辦公室。Podrick沒有鎖屏的習慣,他懷疑Theon趁他不在的時候竊取了他的數據。
提示:1、檢查Podrick的電腦;2、確定2020年2月3日,是否有USB設備連接到Podrick的PC?;3、提交可疑 USB 設備的Serial/UID
題目提供的文件是幾個Hive文件
這些文件代表什么,在前面的小節中都已經介紹過了,除了Amcache.hve,這是Win8及更高版本的系統才有的。它存儲與執行程序相關的信息,當用戶執行某些操作(例如運行基于主機的應用程序、安裝新應用程序或從外部設備運行便攜式應用程序)時,它會記錄程序相關的信息:如程序的創建時間、修改時間、名稱、描述、程序廠商和版本、程序的執行路徑、SHA-1哈希值等。即使程序從系統中刪除,這些信息依然存在。
回到題目,我們要調查USB使用痕跡,根據前面的知識,我們需要分析SYSTEM這個Hive文件。
打開RegRipper工具,加載提供的SYSTEM文件,導出分析報告。
打開報告文件,通過搜索USBSTOR(這個key(SYSTEM\CurrentControlSet\Enum\USBSTOR)存儲了任何曾經連接過系統的USB設備的產品信息和設備ID),可以找到有關USB設備的注冊表信息。
通過查找和篩選比對,最終我們找到2020-12:12:32有一個USB設備插入了電腦,Serial/UID是: 4C530000281008116284
Registry Hives - Win32 apps | Microsoft Docs https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-hives
注冊表 - 維基百科,自由的百科全書 https://zh.wikipedia.org/wiki/%E6%B3%A8%E5%86%8C%E8%A1%A8
regf/Windows registry file format specification.md at master · msuhanov/regf · GitHub https://github.com/msuhanov/regf/blob/master/Windows%20registry%20file%20format%20specification.md
本文涉及相關實驗:FastIRCollector:Windows取證利器 https://www.hetianlab.com/expc.do?ec=ECID9d6c0ca797abec2016100814354600001&pk_campaign=toutiao-wemedia(FastIR Collector是一個Windows下的取證/信息收集工具,收集的東西攬括了所有你能想到的東西,不限于內存,注冊表,文件信息等。本實驗將介紹FastIR Collector在windows 7下的使用。)