Windows应急响应 - 36 自动化IR工具-KAPE与Velociraptor

Windows应急响应/36-自动化IR工具-KAPE与Velociraptor

本篇覆盖两大IR自动化工具:KAPE(离线取证采集)和 Velociraptor(远程agent响应)

以及 Eric Zimmerman Tools 完整工具链

关联:31-自动化排查脚本、04-取证制品分析

一、KAPE (Kroll Artifact Parser and Extractor)

1.1 概述

KAPE由Eric Zimmerman开发,现归Kroll所有

核心理念:Targets(收集什么)+ Modules(如何解析)

下载:https://www.kroll.com/en/services/cyber-risk/incident-response-litigation-support/kroll-artifact-parser-extractor-kape

两个阶段:

Target收集:从活动系统或磁盘镜像中提取取证制品文件

Module解析:用各种解析工具处理收集到的文件,生成可读结果

1.2 Target(采集目标)

Target定义了要收集的文件路径和模式

Target文件格式(.tkape):

1
2
3
4
5
6
7
8
9
10
11
12
Description: 收集Windows事件日志
Author: Eric Zimmerman
Version: 1.0
Id: 12345678-1234-1234-1234-123456789012
RecreateDirectories: true
Targets:
-
Name: EventLogs
Category: EventLogs
Path: C:\Windows\System32\winevt\Logs\
FileMask: '*.evtx'
Recursive: false

常用内置Target:

1
2
3
4
5
6
7
8
9
10
11
12
13
!BasicCollection          → 事件日志 + 注册表hive + 预取 + 浏览器 + 基本系统文件
!SANS_Triage → SANS推荐的全量取证制品集
!EvidenceOfExecution → Prefetch + Amcache + ShimCache + BAM/DAM
!FileSystem → $MFT + $J (USN Journal) + $LogFile
!RegistryHives → SAM + SYSTEM + SOFTWARE + SECURITY + NTUSER.DAT + UsrClass.dat
!EventLogs → 所有Windows事件日志(.evtx)
!WebBrowsers → Chrome + Firefox + Edge 历史/缓存/Cookie
!Antivirus → Windows Defender + 主流AV日志
!RecycleBin → 回收站文件和元数据
!PowerShellConsole → PowerShell ConsoleHost_history
!RemoteAccess → RDP/TeamViewer/AnyDesk 等日志
!ScheduledTasks → 计划任务XML文件
!SRUM → 系统资源使用监视器数据库

1.3 Module(解析模块)

Module定义了使用什么工具解析Target收集到的文件

Module文件格式(.mkape):

1
2
3
4
5
6
7
8
9
10
11
12
Description: 使用EvtxECmd解析Windows事件日志
Category: EventLogs
Author: Eric Zimmerman
Version: 1.0
Id: 87654321-1234-1234-1234-123456789012
BinaryUrl: https://f001.backblazeb2.com/file/EricZimmermanTools/EvtxECmd.zip
ExportFormat: csv
Processors:
-
Executable: EvtxECmd\EvtxECmd.exe
CommandLine: -d %sourceDirectory% --csv %destinationDirectory%
ExportFormat: csv

常用内置Module:

1
2
3
4
5
6
7
8
9
10
!EZParser                 → 调用所有Eric Zimmerman工具集中解析
MFTECmd → $MFT 解析
PECmd → Prefetch 解析
AmcacheParser → Amcache.hve 解析
AppCompatCacheParser → ShimCache 解析
RECmd → 注册表批量查询
EvtxECmd → Windows事件日志解析
SrumECmd → SRUM数据库解析
JLECmd → Jump Lists 解析
LECmd → LNK文件解析

1.4 KAPE使用示例

基础采集(活动系统):

1
2
# 基础取证制品采集
kape.exe --tsource C: --tdest C:\IR\Collection --target !BasicCollection

SANS Triage全量采集:

1
2
# SANS推荐的全量采集
kape.exe --tsource C: --tdest C:\IR\Collection --target !SANS_Triage --zip KAPECollection

采集+解析一步完成:

1
2
# 采集目标 + 自动解析
kape.exe --tsource C: --tdest C:\IR\Collection --target !BasicCollection --mdest C:\IR\Parsed --module !EZParser

仅对已采集数据进行解析:

1
2
# Module-only模式
kape.exe --msource C:\IR\Collection --mdest C:\IR\Parsed --module !EZParser

远程采集(UNC路径):

1
2
# 远程采集到网络共享
kape.exe --tsource C: --tdest \\IR-Server\Cases\Host01 --target !SANS_Triage --zip Host01_Collection

1.5 自定义Target示例

创建自定义Target收集特定APT制品:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 保存为 Targets\Compound\!APT_Triage.tkape
Description: APT专项取证采集
Author: IR Team
Version: 1.0
Id: aabbccdd-1234-5678-9012-abcdef123456
RecreateDirectories: true
Targets:
-
Name: Sysmon Logs
Category: EventLogs
Path: C:\Windows\System32\winevt\Logs\
FileMask: 'Microsoft-Windows-Sysmon%4Operational.evtx'
-
Name: PowerShell Logs
Category: EventLogs
Path: C:\Windows\System32\winevt\Logs\
FileMask: 'Microsoft-Windows-PowerShell%4Operational.evtx'
-
Name: Prefetch
Category: Execution
Path: C:\Windows\Prefetch\
FileMask: '*.pf'
-
Name: Amcache
Category: Execution
Path: C:\Windows\AppCompat\Programs\
FileMask: 'Amcache.hve'
-
Name: SRUM
Category: Execution
Path: C:\Windows\System32\sru\
FileMask: 'SRUDB.dat'
-
Name: Hosts File
Category: Network
Path: C:\Windows\System32\drivers\etc\
FileMask: 'hosts'
-
Name: WMI Repository
Category: Persistence
Path: C:\Windows\System32\wbem\Repository\
Recursive: true

1.6 自定义Module示例

创建Hayabusa日志分析模块:

1
2
3
4
5
6
7
8
9
10
11
# 保存为 Modules\!Hayabusa.mkape
Description: 使用Hayabusa分析Windows事件日志
Category: EventLogs
Author: IR Team
Version: 1.0
Id: 11223344-5566-7788-9900-aabbccddeeff
Processors:
-
Executable: hayabusa\hayabusa.exe
CommandLine: csv-timeline -d %sourceDirectory% -o %destinationDirectory%\hayabusa_timeline.csv -p super-verbose
ExportFormat: csv

二、Velociraptor

2.1 概述

Velociraptor是基于agent的数字取证和IR平台

由Rapid7维护,开源:https://github.com/Velocidex/velociraptor

架构:Server + Client Agent(支持Windows/Linux/macOS)

核心特性:

VQL (Velociraptor Query Language) —— 类SQL的查询语言

Artifacts —— 预定义的取证查询包

Hunts —— 在多台主机上同时执行查询

Offline Collector —— 不需要server也能采集

2.2 部署方式

快速部署(单机测试):

1
2
3
4
5
6
7
8
9
# 下载 velociraptor
# https://github.com/Velocidex/velociraptor/releases

# 交互式配置生成
velociraptor.exe config generate -i

# 启动server(GUI模式)
velociraptor.exe gui
# 浏览器打开 https://127.0.0.1:8889

生产部署:

1
2
3
4
5
6
7
8
9
10
# 1. 生成server和client配置
velociraptor.exe config generate
# 产出:server.config.yaml + client.config.yaml

# 2. 启动server
velociraptor.exe --config server.config.yaml frontend

# 3. 生成client安装包(MSI)
velociraptor.exe --config server.config.yaml debian client # Linux
velociraptor.exe --config client.config.yaml service install # Windows服务

2.3 VQL 查询语言

VQL语法类似SQL,用于查询系统制品

基本语法:

1
2
3
4
5
SELECT Column1, Column2
FROM plugin(arg1=value1, arg2=value2)
WHERE condition
ORDER BY Column1
LIMIT 100

常用查询示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- 列出所有进程
SELECT Pid, Name, Exe, CommandLine, Username
FROM pslist()

-- 查找网络连接
SELECT Pid, Name, Status, Laddr, Raddr
FROM netstat()
WHERE Status = "ESTABLISHED"

-- 查询注册表Run键
SELECT Name, FullPath, Data.value AS Value
FROM glob(globs="HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/*", accessor="registry")

-- 搜索可疑文件
SELECT FullPath, Size, Mtime, Btime
FROM glob(globs="C:/Users/*/AppData/**/*.exe")
WHERE Size < 1000000

-- 查询计划任务
SELECT *
FROM Artifact.Windows.System.TaskScheduler()
WHERE Command =~ "powershell|cmd|wscript|cscript"

-- 查询WMI Event Subscriptions
SELECT *
FROM Artifact.Windows.Persistence.PermanentWMIEvents()

-- Hash计算
SELECT FullPath, hash(path=FullPath) AS Hash
FROM glob(globs="C:/Windows/Temp/*.exe")

2.4 内置 Artifacts

Velociraptor自带数百个Artifact,覆盖常见IR场景:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
=== 取证制品 ===
Windows.Forensics.Prefetch → Prefetch文件解析
Windows.Forensics.Amcache → Amcache解析
Windows.Forensics.ShimCache → ShimCache解析
Windows.Forensics.SRUM → SRUM数据库解析
Windows.Forensics.Timeline → 文件系统时间线
Windows.Forensics.MFT → $MFT解析
Windows.Forensics.Usn → USN Journal解析
Windows.Forensics.Lnk → LNK快捷方式解析
Windows.Forensics.RecycleBin → 回收站解析

=== 持久化 ===
Windows.Persistence.PermanentWMIEvents → WMI事件订阅
Windows.Sys.StartupItems → 启动项
Windows.System.TaskScheduler → 计划任务
Windows.System.Services → 服务列表

=== 检测 ===
Windows.Detection.Yara.Process → 进程内存YARA扫描
Windows.Detection.Yara.NTFS → 文件系统YARA扫描
Windows.Detection.HiddenProcesses → 隐藏进程检测
Windows.Detection.Mutants → 互斥量检测

=== 日志 ===
Windows.EventLogs.Hayabusa → Hayabusa日志分析
Windows.EventLogs.PowerShell → PowerShell日志
Windows.EventLogs.RDPAuth → RDP认证日志
Windows.EventLogs.Sysmon → Sysmon日志

2.5 Hunt 创建(多主机查询)

Hunt允许在所有已连接的agent上同时执行Artifact

Web UI操作:

  1. 顶部菜单 → Hunt Manager → New Hunt

  2. 选择Artifact(如 Windows.Persistence.PermanentWMIEvents)

  3. 配置参数和条件

  4. 选择目标主机(All / Label / 特定主机)

  5. Launch Hunt

VQL示例 —— 自定义Hunt查找恶意计划任务:

1
2
3
4
-- 在所有agent上查找包含PowerShell的计划任务
SELECT ClientId, Fqdn, TaskName, Command, Arguments
FROM Artifact.Windows.System.TaskScheduler()
WHERE Command =~ "(?i)powershell|cmd\.exe|wscript|mshta|certutil"

2.6 Offline Collector

不需要Server,生成独立的采集器exe:

1
2
3
4
5
6
# 在Server上生成Offline Collector
# Web UI → Server Artifacts → Build Offline Collector
# 选择要采集的Artifacts → 下载生成的exe

# 或命令行方式:
velociraptor.exe --config server.config.yaml artifacts collect --output Collection.zip Windows.Forensics.Prefetch Windows.System.TaskScheduler Windows.Persistence.PermanentWMIEvents

适用场景:

无法安装agent的孤立系统

通过USB启动采集

临时响应,不需要持久agent

采集结果:ZIP文件,可导入到Server中分析或用VQL离线查询

三、Eric Zimmerman Tools 完整工具集

3.1 工具清单与用途

下载地址:https://ericzimmerman.github.io/#!index.md

批量下载:

1
2
3
# 下载所有EZ Tools
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/EricZimmerman/Get-ZimmermanTools/master/Get-ZimmermanTools.ps1" -OutFile Get-ZimmermanTools.ps1
.\Get-ZimmermanTools.ps1 -Dest C:\Tools\EZTools
工具 用途 输入 关键参数
MFTECmd 解析$MFT $MFT文件 --csv 输出CSV
PECmd 解析Prefetch .pf文件/目录 -d 目录 --csv
AmcacheParser 解析Amcache Amcache.hve --csv
AppCompatCacheParser 解析ShimCache SYSTEM hive --csv
RECmd 注册表批量查询 注册表hive -d --bn batch文件
ShellBags Explorer 解析ShellBags NTUSER.DAT/UsrClass.dat GUI工具
JLECmd 解析Jump Lists AutomaticDestinations --csv
LECmd 解析LNK文件 .lnk文件 --csv
SrumECmd 解析SRUM SRUDB.dat --csv
EvtxECmd 解析事件日志 .evtx文件 -d --csv
Timeline Explorer 浏览CSV时间线 CSV文件 GUI工具
bstrings 高级字符串搜索 任意文件 -s --ls
WxTCmd 解析Windows 10 Timeline ActivitiesCache.db --csv
SBECmd ShellBags命令行版 注册表hive --csv
RBCmd 解析回收站 $I文件 --csv

3.2 MFTECmd 用法

解析$MFT(Master File Table)获取完整文件系统时间线:

1
2
3
4
5
6
7
8
# 解析$MFT到CSV
MFTECmd.exe -f C:\IR\Collection\C\$MFT --csv C:\IR\Parsed\MFT

# 输出字段包括:
# EntryNumber, ParentPath, FileName, Extension,
# Created0x10, Modified0x10, Accessed0x10,
# Created0x30, Modified0x30 (FN timestamps)
# SI vs FN 时间戳差异 → timestomping 检测

时间戳篡改(timestomping)检测:

1
2
3
4
5
6
7
8
# 查找SI和FN时间戳差异大于1小时的文件
Import-Csv "C:\IR\Parsed\MFT\*.csv" |
Where-Object {
$si = [datetime]$_.'Created0x10'
$fn = [datetime]$_.'Created0x30'
[Math]::Abs(($si - $fn).TotalHours) -gt 1
} | Select-Object ParentPath, FileName, 'Created0x10', 'Created0x30' |
Format-Table -AutoSize

3.3 PECmd 用法

解析Prefetch文件获取程序执行记录:

1
2
3
4
5
6
7
8
9
10
# 解析整个Prefetch目录
PECmd.exe -d C:\IR\Collection\C\Windows\Prefetch --csv C:\IR\Parsed\Prefetch

# 解析单个Prefetch文件
PECmd.exe -f "C:\IR\Collection\C\Windows\Prefetch\CMD.EXE-89305D47.pf" --json C:\IR\Parsed

# 输出关键字段:
# ExecutableName, RunCount, LastRun,
# PreviousRun0-6 (最近7次运行时间),
# FilesLoaded (加载的文件列表)

3.4 EvtxECmd 用法

解析Windows事件日志到CSV/JSON:

1
2
3
4
5
6
7
8
# 解析所有EVTX文件
EvtxECmd.exe -d C:\IR\Collection\C\Windows\System32\winevt\Logs --csv C:\IR\Parsed\EventLogs

# 解析单个日志文件
EvtxECmd.exe -f C:\IR\Collection\Security.evtx --csv C:\IR\Parsed\EventLogs

# 使用自定义Map解析(增强解析规则)
EvtxECmd.exe -d C:\IR\Logs --csv C:\IR\Parsed --maps C:\Tools\EZTools\EvtxECmd\Maps

配合 Timeline Explorer 进行可视化分析:

打开生成的CSV文件

按时间排序,筛选特定事件ID

支持列过滤、搜索、高亮

3.5 RECmd 注册表批量查询

使用Batch文件批量查询注册表制品:

1
2
3
4
# 使用内置的BatchExamples进行全量注册表分析
RECmd.exe -d C:\IR\Collection\RegistryHives --bn C:\Tools\EZTools\RECmd\BatchExamples\RECmd_Batch_MC.reb --csv C:\IR\Parsed\Registry

# 输出包含数百个注册表取证制品的解析结果

3.6 AmcacheParser / AppCompatCacheParser

程序执行证据:

1
2
3
4
5
# Amcache解析
AmcacheParser.exe -f C:\IR\Collection\C\Windows\AppCompat\Programs\Amcache.hve --csv C:\IR\Parsed\Amcache

# ShimCache解析(需要SYSTEM hive)
AppCompatCacheParser.exe -f C:\IR\Collection\C\Windows\System32\config\SYSTEM --csv C:\IR\Parsed\ShimCache

3.7 SrumECmd

解析SRUM(System Resource Usage Monitor)数据库:

1
2
3
4
5
6
7
# SRUM包含30天内的程序执行、网络使用、电量消耗等信息
SrumECmd.exe -f C:\IR\Collection\C\Windows\System32\sru\SRUDB.dat -r C:\IR\Collection\C\Windows\System32\config\SOFTWARE --csv C:\IR\Parsed\SRUM

# 关键输出:
# AppResourceUseInfo → 程序CPU/内存/磁盘使用
# NetworkUsage → 程序网络流量统计
# NetworkConnections → 网络连接记录

四、工具对比

4.1 KAPE vs Velociraptor vs 手动

特性 KAPE Velociraptor 手动采集
部署方式 独立exe,无需安装 Agent + Server 无需工具
采集速度 快(文件复制) 快(VQL查询) 慢
远程支持 有限(UNC路径) 原生支持(Agent) 需要远程工具
多主机 需脚本分发 Hunt功能原生支持 逐台操作
实时查询 不支持 支持(VQL) 手动
解析能力 Module调用EZ Tools 内置Artifact 手动运行工具
学习曲线 低 中(需学VQL) 高
离线分析 支持 Offline Collector 支持
定制化 Target/Module文件 VQL + Artifact YAML 完全自定义
适用场景 单机深度取证 企业级多主机响应 特定需求

4.2 推荐使用策略

单机IR:KAPE !SANS_Triage 采集 → EZ Tools解析 → Timeline Explorer分析

企业级IR:Velociraptor Hunt → 筛选可疑主机 → KAPE深度采集

无工具环境:手动PowerShell采集 → 带回分析(参考:31-自动化排查脚本)

离线分析:KAPE Module-only模式处理已采集数据

五、实战工作流示例

5.1 场景:发现可疑横向移动

Step 1:Velociraptor Hunt

1
2
3
4
5
-- 在所有主机上搜索可疑PsExec执行
SELECT *
FROM Artifact.Windows.EventLogs.Sysmon()
WHERE EventID = 1 AND
(CommandLine =~ "(?i)psexec" OR ParentImage =~ "(?i)psexesvc")

Step 2:确定受影响主机,用KAPE深度采集

1
kape.exe --tsource C: --tdest \\IR-Server\Cases\Host-Compromised --target !SANS_Triage --zip CompromisedHost

Step 3:EZ Tools解析

1
2
# 解析所有制品
kape.exe --msource \\IR-Server\Cases\Host-Compromised --mdest \\IR-Server\Parsed\Host-Compromised --module !EZParser

Step 4:Timeline Explorer分析

打开解析结果CSV

构建时间线,追踪攻击者活动

5.2 场景:勒索软件应急

Step 1:Velociraptor快速排查

1
2
3
4
5
6
7
8
-- 查找勒索信文件
SELECT FullPath, Mtime, Size
FROM glob(globs="C:/Users/**/{README,DECRYPT,RESTORE,HOW_TO}*")

-- 查找加密文件扩展名
SELECT FullPath, Mtime
FROM glob(globs="C:/Users/**/*.{encrypted,locked,crypto,crypt}")
LIMIT 50

Step 2:KAPE采集关键证据

1
kape.exe --tsource C: --tdest E:\IR\RansomCase --target !SANS_Triage,!EventLogs --zip Ransomware_Evidence

Step 3:分析执行证据

1
2
3
4
5
6
7
8
# Prefetch → 什么时候执行的
PECmd.exe -d E:\IR\Parsed\Prefetch --csv E:\IR\Analysis

# Amcache → 程序来源
AmcacheParser.exe -f E:\IR\Collection\Amcache.hve --csv E:\IR\Analysis

# 事件日志 → Hayabusa分析
hayabusa.exe csv-timeline -d E:\IR\Collection\EventLogs -o E:\IR\Analysis\hayabusa.csv -p super-verbose

关联参考:

04-取证制品分析 — 取证制品详解

31-自动化排查脚本 — Linux端自动化采集

35-恶意软件基础分析 — 采集到的恶意文件分析


上一章 目录 下一章
35-恶意软件基础分析 Windows应急响应 37-USB外设取证与文件访问追踪