Windows取证:文件执行记录的获取与清除技术指南
前言
在Windows系统取证和安全分析中,文件执行记录是重要的信息来源。本指南详细总结了Windows系统中常见的文件执行记录位置、获取方法以及清除技术,适用于渗透测试、安全取证和系统管理员等多个场景。
一、从日志中获取执行记录
1. Audit Process Creation (4688/592事件)
适用系统:
- Windows 7/Server 2008及以上版本(Event ID 4688)
- Windows XP/2003(Event ID 592)
开启方法:
Edit Default Domain Policy ->
Computer Configuration ->
Policies ->
Windows Settings ->
Security Settings ->
Advanced Audit Configuration ->
Detailed Tracking ->
Audit Process Creation
查询方法:
wevtutil qe security /rd:true /f:text /q:"Event[System[(EventID=4688)]]"
清除方法:参考相关安全文章
2. Program Inventory Event Log
位置:
- 文件路径:
C:\Windows\System32\winevt\Logs\Microsoft-Windows-Application-Experience%4Program-Inventory.evtx - 事件查看器路径:
Applications and Services Logs\Microsoft\Application-Experience\Program-Inventory
重要事件ID:
- 800:软件活动摘要
- 900/901:新IE加载项
- 903/904:新应用程序安装
- 905:更新的应用程序
- 907/908:删除的应用程序
查询方法:
wevtutil qe /f:text Microsoft-Windows-Application-Experience/Program-Inventory
3. Program-Telemetry Event Log
位置:
- 文件路径:
C:\Windows\System32\winevt\Logs\Microsoft-Windows-Application-Experience%4Program-Telemetry.evtx - 事件查看器路径:
Applications and Services Logs\Microsoft\Application-Experience\Program-Telemetry
重要事件ID:500/505
查询方法:
wevtutil qe /f:text Microsoft-Windows-Application-Experience/Program-Telemetry
二、从注册表中获取执行记录
1. ShimCache (AppCompatCache)
功能:跟踪文件路径、大小、最后修改时间和执行状态
注册表位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache
解析工具:
导出方法:
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" ShimCache.reg
清除方法:
- 导出当前ShimCache
- 重启系统
- 导入之前导出的注册表
2. UserAssist
功能:跟踪资源管理器中打开的可执行文件和完整路径
注册表位置:
- 当前用户:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist - 所有用户:
HKEY_USERS\<sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
解析工具:UserAssistView
清除方法:删除对应键值
3. MUICache
功能:存储应用程序名称供以后使用
注册表位置:
- 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
- 当前用户:
解析工具:MUICacheView
查询方法:
reg query "HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"
4. 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"
5. AppCompatFlags Registry Keys
功能:保存以兼容模式启动的程序
注册表位置:
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
查询方法:
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
6. Background Activity Moderator (BAM)
适用系统:Windows 10 version 1709及以后版本
注册表位置:
HKLM\SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}
FILETIME转换方法:
from __future__ import division
import struct
import sys
from binascii import unhexlify
from datetime import datetime, timedelta
nt_timestamp = struct.unpack("<Q", unhexlify("dc14dd91be7cd501"))[0]
epoch = datetime(1601, 1, 1, 0, 0, 0)
nt_datetime = epoch + timedelta(microseconds=nt_timestamp / 10)
print(nt_datetime.strftime("%Y/%m/%d %H:%M:%S"))
7. RecentApps
适用系统:Windows 10及以上
注册表位置:
HKCU\Software\Microsoft\Windows\Current Version\Search\RecentApps
FILETIME转换方法:
w32tm.exe /ntte 131781889970180000
或PowerShell:
[datetime]::FromFileTime(0x1d42eee43808fa0)
三、从文件中获取执行记录
1. Prefetch
位置:C:\Windows\Prefetch
检查功能状态:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher
- 0 = 禁用
- 1 = 应用程序启动预读启用
- 2 = 启动预读启用
- 3 = 应用程序和启动预读都启用(默认)
解析工具:PECmd
使用方法:
PECmd.exe -f "C:\Temp\CALC.EXE-3FBEF7FD.pf"
PECmd.exe -d "C:\Temp" --csv "c:\temp"
2. JumpLists
位置:%APPDATA%\Microsoft\Windows\Recent
查询方法:
dir %APPDATA%\Microsoft\Windows\Recent
3. Amcache / RecentFileCache.bcf
Windows 7/Server 2008R2:
- 位置:
C:\Windows\AppCompat\Programs\RecentFileCache.bcf - 解析工具:RecentFileCacheParser
Windows 8/10/Server 2012:
- 位置:
C:\Windows\AppCompat\Programs\Amcache.hve - 解析工具:AmcacheParser
复制Amcache.hve方法:使用shadow copy
4. SRUM (System Resource Usage Monitor)
适用系统:Windows 8及以上
位置:C:\Windows\system32\sru\SRUDB.dat
解析工具:srum-dump
5. Windows 10时间轴(ActivitiesCache.db)
位置:
C:\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<random_char>\ActivitiesCache.db
重要表:Activity表(包含AppId、开始时间、结束时间等字段)
四、其他执行记录来源
计划任务
列出所有任务:
schtasks.exe
或PowerShell:
Get-ScheduledTask
查看任务详情:
schtasks.exe /query /v /tn test /fo list
删除任务:
schtasks.exe /delete /tn Task_name /F
五、总结
攻击者视角
- 获取执行记录有助于信息收集
- 清除记录可减少暴露风险
防御者视角
- 定期清理敏感执行记录
- 注意记录可能被伪造或删除
参考资源
- https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html
- 各工具GitHub仓库链接