本文仅作为学习记录,如有侵权,请联系删除!
前言:
马上要全国hw了,多学点总没错,技多不压身。
注册表:
注册表(英语:Registry)是Microsoft Windows操作系统和其应用程序中的一个重要的层次型数据库,用于存储系统和应用程序的配置信息。
注册表由键
(key,或称项
)、子键
(subkey,子项
)和值项
(value)构成的hive文件组成。
注册表的结构是一个树状结构,一个键就是一个节点,子键就是这个节点的子节点,子健也是键。键的一条属性被称为一个value(值项),value由名称、类型、数据类型和数据组成。一个键可以有多个值,每个值的名称不同,如果值名称是空,则该值为该键的默认值。
注册表的主键,也就是主分支有五个,分别是:
- HKEY_CLASSES_ROOT(HKCR):此处存储的信息可确保在Windows资源管理器中执行时打开正确的程序。包含启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等。
- HKEY_CURRENT_USER(HKCU):包含当前登录系统的用户的配置信息,包括用户的文件夹,环境变量,屏幕颜色和控制面板设置。HKEY_USERS中特定于用户的分支的别名。通用信息通常适用于所有用户,并且是HKU.DEFAULT。
- HKEY_LOCAL_MACHINE(HKLM):包含运行操作系统的计算机硬件特定信息。它包括系统上安装的驱动器列表以及已安装硬件和应用程序的通用配置。
- HKEY_USERS(HKU):包含系统上所有用户配置文件的配置信息,包括应用程序配置和可视设置。
- HKEY_CURRENT_CONFIG(HCU):存储当前硬件的配置信息。
注册表数据类型主要有以下几种:
- REG_SZ:字符串类型,文本字符串
- REG_BINARY:二进制类型,不定长度的二进制值,以16进制形式显示
- REG_DWORD:双字,32 位的二进制值,显示为 8 位的十六进制值
- REG_MULTI_SZ:多字符串,有多个文本值的字符串,字符串间用 nul 分隔、结尾两个 nul
- REG_EXPAND_SZ:可扩展字符串,包含环境变量的字符串
注册表的存储:
注册表在Windows NT操作系统C:\Windows\System32\config
中被分为多个文件存储,这些文件被称为Registry Hives,每一个文件被称为一个配置单元
主要配置单元有:
- SYSTEM:对应的注册表分支为
HKLM\SYSTEM
,对应的存储文件是%WINDIR%\System32\config\SYSTEM
,作用是存储计算机硬件和系统的信息。- NTUSER.DAT:对应的注册表分支是
HKCU
,存储在%UserProfile%\NTUSER.DAT
,与其他注册表文件是分开的,主要用于存储用户的配置信息。- SAM:分支是
HKEY_LOCAL_MACHINE\SAM
,对应的存储文件%WINDIR%\System32\config\SAM
,保存了用户的密码信息。- SECURITY:对应的分支
HKLM\SECURITY
,存储在%WINDIR%\System32\config\SECURITY
文件中,保存了安全性设置信息。- SOFTWARE:分支是
HKLM\SOFTWARE
,文件存储在%WINDIR%\System32\config\SOFTWARE中
,保存安装软件的信息。
此外,为了防止注册表出错和损坏,Registry hives还包括注册的事务日志文件和注册表的备份文件。事务日志文件名与注册表文件一致,且在同一个路径中,只是后缀不同。事务日志文件以.LOG为后缀,多个日志后缀会显示LOG1、LOG2这样。(如果要查看这些日志文件,需要打开文件夹选项,取消勾选隐藏受保护的操作系统文件
)
备份文件所在目录:C:\Windows\System32\config\RegBack
在发生修改将数据写入到主文件之前,Hive写入器会先将这些数据存储在事务日志文件中,如果写入事务日志时发生错误(比如系统崩溃),则主文件不会受影响。如果写入主文件时发生错误,可以通过事务日志包含的数据恢复主文件。
补充:确定受害者是否点击了 MS Word 文档中的恶意 URL:
HKEY_USERS\<SID>\SOFTWARE\Microsoft\Office\16.0\Common\Internet
参阅UseRWHlinkNavigation
的值。它包含最后访问的 URL
获取和分析Hive:
要获取Hive,可以通过reg save命令创建Registry Hives的副本:
reg save hklm\sam c:\sam
分析Hive可以使用开源软件RegRipper,RegRipper是一个用perl编写的开源工具,可以从注册表中提取和解析各种信息(Key、value、data)以供取证人员进行分析。
项目地址:https://github.com/keydet89/RegRipper3.0
选择Hive文件,设置好报告存储路径:
打开分析报告文件,可以看到用户和用户组的详细信息
Amcache.hve:文件位于C:\Windows\AppCompat\Programs
,这是Win8及更高版本的系统才有的。它存储与执行程序相关的信息,当用户执行某些操作(例如运行基于主机的应用程序、安装新应用程序或从外部设备运行便携式应用程序)时,它会记录程序相关的信息:如程序的创建时间、修改时间、名称、描述、程序厂商和版本、程序的执行路径、SHA-1哈希值等。即使程序从系统中删除,这些信息依然存在。
应用场景:
USB设备的注册表信息:
reg.exe save HKLM\SYSTEM C:\Users\sws123\Desktop\hive\SYSTEM
打开RegRipper工具,加载提供的SYSTEM文件,导出分析报告。
搜索USBSTOR
,这个key(SYSTEM\CurrentControlSet\Enum\USBSTOR
)存储了任何曾经连接过系统的USB设备的产品信息和设备ID),可以找到有关USB设备的注册表信息。
Amcache / RecentFileCache.bcf:
Windows中的使用这两个文件来跟踪具有不同可执行文件的应用程序兼容性问题,它可用于确定可执行文件首次运行的时间和最后修改时间。
- win7、windows 2008R2等系统保存位置:
只包含了程序的创建时间、上次修改时间、上次访问时间和文件名
C:\Windows\AppCompat\Programs\RecentFileCache.bcf
- win8、win10、windows server 2012等系统保存位置:
包含了文件大小、版本、sha1、二进制文件类型等等信息
C:\Windows\appcompat\Programs\Amcache.hve
注意:Win7系统安装KB2952664后,也会支持Amcache.hve
RecentFileCache.bcf解析工具:RecentFileCacheParser
RecentFileCacheParser.exe -f "C:\Windows\AppCompat\Programs\RecentFileCache.bcf" --csv "c:\temp"
RecentFileCacheParser.exe -f "C:\Windows\AppCompat\Programs\RecentFileCache.bcf" --json "D:\jsonOutput" --jsonpretty
从amcache.hve中得到用户的一些行为,如:运行主机上的程序、安装程序、运行外部设备上的程序。还可以用于分析一些具有自删除功能的恶意可执行文件。
当我们确定了windows主机被入侵的大概时间范围,就能够通过amcache.hve发现创建的文件
项目地址:https://github.com/EricZimmerman/AmcacheParser
AmcacheParser.exe -f C:\Windows\appcompat\Programs\Amcache.hve --csv c:\temp
以管理员权限执行该命令后,在c:\temp目录下能看到解析出的amcache.hve仓库的内容:
里面包含有关exe的相关信息:
Prefetch:
Prefetch是预读取文件夹,用来存放系统已访问过的文件的预读信息,记录文件运行次数、上次执行时间、Hash等,扩展名为PF。之所以自动创建Prefetch文件夹,是为了加快系统启动的进程。
Windows Prefetch(Windows 预读取)是一个查找文件执行证据的好地方,预读取文件中会保存文件的第一次和最后一次运行日期、文件路径和执行次数等信息。一个预读取文件的命名规则为可执行文件名+文件路径的哈希+后缀名.pf
。如果你的恶意软件文件名或路径哈希出现在了一个预读取文件(例如” DABEARS.EXE-12F3B52A.pf”)之中,那就说明这个恶意文件曾在你的电脑中执行过了。
注:Windows Server默认禁用了预读取功能。
文件位置于:C:\Windows\Prefetch
查看该功能是否开启:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher
键值代表的含义:
0 = Disabled
1 = Application launch prefetching enabled
2 = Boot prefetching enabled
3 = Applaunch and Boot enabled (Optimal and Default)
解析工具:PECmd
PECmd.exe -d "C:\Windows\Prefetch" --csv "C:\temp"
按csv导出的有两个文件:PECmd_Output.csv
和PECmd_Output_Timeline.csv
,前者保存了详情信息,后者只保存了运行时间和可执行程序的名称
解析工具2:https://nirsoft.net/utils/executed_programs_list.html
这个工具会解析如下路径:注:1 ~ 4无加密,5加密,1 ~ 5数据实时更新
- Registry Key: HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
- Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
- Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
- Registry Key: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store
- Windows Prefetch folder (C:\Windows\Prefetch)
SRUM (System Resource Usage Monitor):
自Win8以来,系统资源使用监视器(SRUM)对程序和网络活动进行详细记录
SrumECmd.exe -f C:\Windows\System32\sru\SRUDB.dat --csv C:\temp
会得到一堆csv文件:
优先关注以下文件:
SrumECmd_NetworkUsages_Output.csv(进程的数据发送量和接收量)
SrumECmd_Unknown312_Output.csv(进程的启动执行时间和结束时间)
MUICache:
每次开始使用新的应用程序时,Windows都会自动从exe文件的版本资源中提取应用程序名,并将其存储在名为MuiCache的注册表项中,供以后使用(无加密,记录实时更新)
在注册表中保存exe文件的绝对路径和对应exe文件的文件名称
注册表位置:
windows server 2003及以前:
当前用户:
HKEY_CURRENT_USER/Software/Microsoft/Windows/ShellNoRoam/MUICache
所有用户:
HKEY_USERS\<sid>\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
windows server 2003及以后:
当前用户:
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
所有用户:
HKEY_USERS\<sid>\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
解析工具:http://www.nirsoft.net/utils/muicache_view.html
RunMRU:
保存Win+R启动程序的历史记录,数据无加密,记录实时更新
- 当前用户:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
- 所有用户:
HKEY_USERS\<sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
- 命令行查询注册表
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"
ShimCache:
跟踪文件路径、上次修改时间和是否被执行(取决于操作系统),Windows XP的ShimCache被限制为96条记录,此后所有版本最多保留1024条记录。
注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache
注意:数据加密,重启之后更新
读取当前系统的注册表并将结果输出的到指定路径,按照上次修改的时间排序:
AppCompatCacheParser.exe -t --csv C:\temp
离线分析,我们可以用这个项目:https://github.com/ianxtianxt/ShimCacheParser
如果想要先导出注册表文件,然后在另一系统中获得解析结果,可使用python实现的脚本:https://github.com/mandiant/ShimCacheParser
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" ShimCache.reg
python2 ShimCacheParser.py -o out.csv -r c:\temp\ShimCache.reg -t
AppCompatFlags Registry Keys:
保存程序执行记录:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store
参考如下:
渗透技巧——Windows系统文件执行记录的获取与清除
如何确定恶意软件是否在自己的电脑中执行过?
Windows 取证之注册表
零组文库
Twitter
网友评论