mcpField
A
analyzing-windows-registry-for-artifacts

analyzing-windows-registry-for-artifacts

github.com/mukul975安全35.2k244 次安装8 周前更新
代码仓库

关于 analyzing-windows-registry-for-artifacts

用于检查 Windows 注册表 Hive 并提取系统及用户活动痕迹的数字取证技能,介绍使用 RegRipper 和 python-registry 等工具的调查流程。

主要功能

  1. 01提取注册表 Hive
  2. 02使用 RegRipper 分析痕迹
  3. 03检查持久化与自动运行项
  4. 04重建用户活动
  5. 05提取系统和网络信息

适用场景

  1. 01调查恶意软件持久化
  2. 02重建事件期间的用户操作
  3. 03查找未经授权安装的软件
  4. 04追踪数据外泄调查中的 USB 设备使用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-windows-registry-for-artifacts

安装后在 Claude Code 中输入/analyzing-windows-registry-for-artifacts确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

分析 Windows 注册表中的痕迹

何时使用

  • 在事件调查期间调查 Windows 系统上的用户活动时
  • 识别恶意软件使用的自启动/持久化机制时
  • 追踪已安装软件、USB 设备和网络连接时
  • 在内部威胁调查中重建用户操作时
  • 将注册表时间戳与其他取证痕迹关联时

前提条件

  • 取证镜像或提取出的注册表配置单元文件
  • RegRipper、Registry Explorer (Eric Zimmerman) 或 python-registry
  • 可访问注册表配置单元位置(SAM、SYSTEM、SOFTWARE、NTUSER.DAT、UsrClass.dat)
  • 了解 Windows 注册表结构(配置单元、项、值)
  • SIFT Workstation 或取证分析环境

工作流

步骤 1:从取证镜像中提取注册表配置单元
# Mount the forensic image read-only
mkdir /mnt/evidence
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence

# Copy system registry hives
cp /mnt/evidence/Windows/System32/config/SAM /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SYSTEM /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SOFTWARE /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SECURITY /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/DEFAULT /cases/case-2024-001/registry/

# Copy user-specific hives
cp /mnt/evidence/Users/*/NTUSER.DAT /cases/case-2024-001/registry/
cp /mnt/evidence/Users/*/AppData/Local/Microsoft/Windows/UsrClass.dat /cases/case-2024-001/registry/

# Copy transaction logs (for dirty hive recovery)
cp /mnt/evidence/Windows/System32/config/*.LOG* /cases/case-2024-001/registry/logs/

# Hash all extracted hives
sha256sum /cases/case-2024-001/registry/* > /cases/case-2024-001/registry/hive_hashes.txt
步骤 2:使用 RegRipper 进行自动化痕迹提取
# Install RegRipper
git clone https://github.com/keydet89/RegRipper3.0.git /opt/regripper

# Run RegRipper against NTUSER.DAT (user profile)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
   -f ntuser > /cases/case-2024-001/analysis/ntuser_report.txt

# Run against SYSTEM hive
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
   -f system > /cases/case-2024-001/analysis/system_report.txt

# Run against SOFTWARE hive
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
   -f software > /cases/case-2024-001/analysis/software_report.txt

# Run against SAM hive (user accounts)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SAM \
   -f sam > /cases/case-2024-001/analysis/sam_report.txt

# Run specific plugins
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
   -p userassist > /cases/case-2024-001/analysis/userassist.txt

perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
   -p usbstor > /cases/case-2024-001/analysis/usbstor.txt
步骤 3:提取持久化和自启动条目
# Using python-registry for targeted extraction
pip install python-registry

python3 << 'PYEOF'
from Registry import Registry

# Open SOFTWARE hive
reg = Registry.Registry("/cases/case-2024-001/registry/SOFTWARE")

# Check Run keys (autostart)
autorun_paths = [
    "Microsoft\\Windows\\CurrentVersion\\Run",
    "Microsoft\\Windows\\CurrentVersion\\RunOnce",
    "Microsoft\\Windows\\CurrentVersion\\RunServices",
    "Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run",
    "Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
]

for path in autorun_paths:
    try:
        key = reg.open(path)
        print(f"\n=== {path} (Last Modified: {key.timestamp()}) ===")
        for value in key.values():
            print(f"  {value.name()}: {value.value()}")
    except Registry.RegistryKeyNotFoundException:
        pass

# Check installed services
key = reg.open("Microsoft\\Windows NT\\CurrentVersion\\Svchost")
print(f"\n=== Svchost Groups ===")
for value in key.values():
    print(f"  {value.name()}: {value.value()}")
PYEOF

# Check NTUSER.DAT for user-specific autorun
python3 << 'PYEOF'
from Registry import Registry

reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT")

user_autorun = [
    "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
    "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run"
]

for path in user_autorun:
    try:
        key = reg.open(path)
        print(f"\n=== {path} (Last Modified: {key.timestamp()}) ===")
        for value in key.values():
            print(f"  {value.name()}: {value.value()}")
    except Registry.RegistryKeyNotFoundException:
        pass
PYEOF
步骤 4:分析用户活动痕迹
# Extract UserAssist data (program execution history with ROT13 encoding)
python3 << 'PYEOF'
from Registry import Registry
import codecs, struct, datetime

reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT")

ua_path = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist"
key = reg.open(ua_path)

for guid_key in key.subkeys():
    count_key = guid_key.subkey("Count")
    print(f"\n=== {guid_key.name()} ===")
    for value in count_key.values():
        decoded_name = codecs.decode(value.name(), 'rot_13')
        data = value.value()
        if len(data) >= 16:
            run_count = struct.unpack('<I', data[4:8])[0]
            focus_count = struct.unpack('<I', data[8:12])[0]
            timestamp = struct.unpack('<Q', data[60:68])[0] if len(data) >= 68 else 0
            if timestamp > 0:
                ts = datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=timestamp//10)
                print(f"  {decoded_name}: Runs={run_count}, Focus={focus_count}, Last={ts}")
            else:
                print(f"  {decoded_name}: Runs={run_count}, Focus={focus_count}")
PYEOF

# Extract Recent Documents (MRU lists)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
   -p recentdocs > /cases/case-2024-001/analysis/recentdocs.txt

# Extract typed URLs (browser)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
   -p typedurls > /cases/case-2024-001/analysis/typedurls.txt

# Extract typed paths in Explorer
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
   -p typedpaths > /cases/case-2024-001/analysis/typedpaths.txt
步骤 5:提取系统和网络信息
# Computer name and OS version from SYSTEM hive
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
   -p compname > /cases/case-2024-001/analysis/system_info.txt

# Network interfaces and configuration
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
   -p nic2 >> /cases/case-2024-001/analysis/system_info.txt

# Wireless network history
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
   -p networklist > /cases/case-2024-001/analysis/network_history.txt

# Timezone configuration
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
   -p timezone > /cases/case-2024-001/analysis/timezone.txt

# Shutdown time
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
   -p shutdown > /cases/case-2024-001/analysis/shutdown.txt

# Installed software from Uninstall keys
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
   -p uninstall > /cases/case-2024-001/analysis/installed_software.txt

关键概念

概念描述
注册表配置单元存储注册表某一部分的二进制文件(SAM、SYSTEM、SOFTWARE、NTUSER.DAT)
MRU(最近使用)记录最近访问的文件、命令和搜索词的列表
UserAssist以 ROT13 编码的注册表条目,记录程序执行情况及时间戳
ShimCache记录已执行程序的应用程序兼容性缓存
AmCache详细的执行历史,包括可执行文件的 SHA-1 哈希值
BAM/DAMWin10+ 中用于跟踪程序执行的后台/桌面活动调节器
最后写入时间注册表项上的时间戳,指示其最后一次被修改的时间
事务日志日志文件,允许在非正常关机后恢复注册表状态

工具与系统

工具用途
RegRipper具有插件架构的自动化注册表痕迹提取工具
Registry ExplorerEric Zimmerman 开发的用于交互式注册表分析的 GUI 工具
python-registry用于以编程方式解析注册表配置单元的 Python 库
RECmdEric Zimmerman 开发的命令行注册表分析工具
yarp又一个基于 Python 分析的注册表解析器
AppCompatCacheParser专用的 ShimCache/AppCompatCache 解析器
AmcacheParser专用的 AmCache.hve 分析工具
ShellBags Explorer用于分析 ShellBag 痕迹的专用工具

常见场景

场景 1:恶意软件持久化调查 提取 SOFTWARE 和 NTUSER.DAT 配置单元,检查所有 Run/RunOnce 项是否存在未授权条目,检查服务中是否有可疑新增项,检查计划任务注册表项,将自启动时间戳与恶意软件执行时间线关联起来。

场景 2:用户活动重建 分析 UserAssist 以获取程序执行历史,检查 RecentDocs 以了解访问过的文件,检查 TypedPaths 以了解 Explorer 导航情况,提取 ShellBags 以了解文件夹访问模式,围绕事件时间窗口构建用户活动时间线。

场景 3:未授权软件检测 解析 Uninstall 项以获取所有已安装应用程序,与已批准的软件基线进行比较,检查 BAM/DAM 中是否有不在批准列表中的最近执行的程序,检查 AppCompatCache 以获取即使卸载后仍存在的执行证据。

场景 4:USB 数据外泄调查 从 SYSTEM 配置单元中提取 USBSTOR 条目以获取连接的设备,将设备序列号与 MountedDevices 关联起来,检查 NTUSER.DAT MountPoints2 以了解用户对可移动介质的访问情况,检查 SetupAPI 日志以获取首次连接时间戳。

输出格式

Registry Analysis Summary:
  System: DESKTOP-ABC123 (Windows 10 Pro Build 19041)
  Timezone: Eastern Standard Time (UTC-5)
  Last Shutdown: 2024-01-18 23:45:12 UTC

  Autorun Entries:
    HKLM Run:     5 entries (1 suspicious: "updater.exe" -> C:\ProgramData\svc\updater.exe)
    HKCU Run:     3 entries (all legitimate)
    Services:     142 entries (2 unknown: "WinDefSvc", "SysMonAgent")

  User Activity (NTUSER.DAT):
    UserAssist Programs:  234 entries
    Recent Documents:     89 entries
    Typed URLs:           45 entries
    Typed Paths:          12 entries

  USB Devices Connected:
    - Kingston DataTraveler (Serial: 0019E06B4521) - First: 2024-01-10, Last: 2024-01-18
    - WD My Passport (Serial: 575834314131) - First: 2024-01-15, Last: 2024-01-15

  Installed Software:     127 applications
  Suspicious Findings:    3 items flagged for review

评论

支持 Markdown