Extracts, parses, and analyzes Windows event logs (EVTX) using Chainsaw, Hayabusa, and EvtxECmd to detect lateral movement, persistence, and privilege escalation in forensics.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 通过事件日志分析调查 Windows 系统上的安全事件时
Extracts, parses, and analyzes Windows Event Logs (EVTX) with Chainsaw, Hayabusa, EvtxECmd, and Sigma rules to detect lateral movement, persistence, and privilege escalation in security investigations.
Extracts, parses, and analyzes Windows Event Logs (EVTX) using Chainsaw, Hayabusa, and EvtxECmd to detect lateral movement, persistence, and privilege escalation in incidents.
Collects, parses Windows EVTX and Linux syslogs, and correlates logs to reconstruct security event timelines during forensic investigations.
Share bugs, ideas, or general feedback.
# 从取证镜像提取 EVTX 文件
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence
mkdir -p /cases/case-2024-001/evtx/
cp /mnt/evidence/Windows/System32/winevt/Logs/*.evtx /cases/case-2024-001/evtx/
# 需要优先处理的关键事件日志:
# Security.evtx - 身份验证、授权、审计事件
# System.evtx - 系统服务、驱动程序、硬件事件
# Microsoft-Windows-Sysmon%4Operational.evtx - 详细的进程/网络监控
# Microsoft-Windows-PowerShell%4Operational.evtx - PowerShell 活动
# Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx - RDP 会话
# Microsoft-Windows-TaskScheduler%4Operational.evtx - 计划任务
# 哈希验证
sha256sum /cases/case-2024-001/evtx/*.evtx > /cases/case-2024-001/evtx/evtx_hashes.txt
# 使用内置 Sigma 规则运行 Chainsaw
/opt/chainsaw/chainsaw hunt /cases/case-2024-001/evtx/ \
-s /opt/chainsaw/sigma/rules/ \
--mapping /opt/chainsaw/mappings/sigma-event-logs-all.yml \
--output /cases/case-2024-001/analysis/chainsaw_results.txt
# 使用 CSV 输出方便分析
/opt/chainsaw/chainsaw hunt /cases/case-2024-001/evtx/ \
-s /opt/chainsaw/sigma/rules/ \
--mapping /opt/chainsaw/mappings/sigma-event-logs-all.yml \
--csv --output /cases/case-2024-001/analysis/chainsaw_results/
# 搜索特定关键词
/opt/chainsaw/chainsaw search /cases/case-2024-001/evtx/ \
-s "mimikatz" --json
# 搜索特定事件 ID
/opt/chainsaw/chainsaw search /cases/case-2024-001/evtx/ \
-e 4688 --json | head -100
# 生成包含所有检测规则的 CSV 时间线
/opt/hayabusa/hayabusa csv-timeline \
-d /cases/case-2024-001/evtx/ \
-o /cases/case-2024-001/analysis/hayabusa_timeline.csv \
-p verbose
# 仅使用严重和高危严重性检测运行
/opt/hayabusa/hayabusa csv-timeline \
-d /cases/case-2024-001/evtx/ \
-o /cases/case-2024-001/analysis/hayabusa_critical.csv \
-p verbose --min-level critical
# 生成登录摘要
/opt/hayabusa/hayabusa logon-summary \
-d /cases/case-2024-001/evtx/ \
-o /cases/case-2024-001/analysis/logon_summary.csv
pip install evtx
python3 << 'PYEOF'
import json
from evtx import PyEvtxParser
parser = PyEvtxParser("/cases/case-2024-001/evtx/Security.evtx")
# 关键事件 ID 映射
critical_events = {
'4624': '成功登录',
'4625': '登录失败',
'4634': '注销',
'4648': '显式凭据登录',
'4672': '分配了特殊权限',
'4688': '进程已创建',
'4697': '服务已安装',
'4698': '计划任务已创建',
'4720': '用户账户已创建',
'1102': '审计日志已清除',
}
results = {eid: [] for eid in critical_events}
for record in parser.records_json():
data = json.loads(record['data'])
event_id = str(data['Event']['System']['EventID'])
if event_id in critical_events:
event_data = data['Event'].get('EventData', {})
results[event_id].append({
'timestamp': data['Event']['System']['TimeCreated']['#attributes']['SystemTime'],
'event_id': event_id,
'description': critical_events[event_id],
'data': event_data
})
for eid, events in results.items():
if events:
print(f"\n[{eid}] {critical_events[eid]}:{len(events)} 个事件")
for e in events[:3]:
print(f" {e['timestamp']}:{json.dumps(e['data'], default=str)[:200]}")
with open('/cases/case-2024-001/analysis/critical_events.json', 'w') as f:
json.dump(results, f, indent=2, default=str)
PYEOF
# 检测哈希传递(Logon Type 9 + NTLM)
python3 << 'PYEOF'
import json
from evtx import PyEvtxParser
parser = PyEvtxParser("/cases/case-2024-001/evtx/Security.evtx")
print("=== 哈希传递指标 ===")
print("查找条件:事件 4624,Logon Type 9,NTLM 身份验证\n")
for record in parser.records_json():
data = json.loads(record['data'])
if str(data['Event']['System']['EventID']) == '4624':
event_data = data['Event'].get('EventData', {})
logon_type = str(event_data.get('LogonType', ''))
auth_package = str(event_data.get('AuthenticationPackageName', ''))
if logon_type == '9' and 'NTLM' in auth_package:
timestamp = data['Event']['System']['TimeCreated']['#attributes']['SystemTime']
target = event_data.get('TargetUserName', 'Unknown')
source_ip = event_data.get('IpAddress', 'N/A')
print(f" [{timestamp}] PtH:用户={target},IP={source_ip},认证方式={auth_package}")
PYEOF
# 检测日志清除/反取证行为
python3 << 'PYEOF'
import json
from evtx import PyEvtxParser
for log_file in ['Security.evtx', 'System.evtx']:
path = f"/cases/case-2024-001/evtx/{log_file}"
try:
parser = PyEvtxParser(path)
for record in parser.records_json():
data = json.loads(record['data'])
event_id = str(data['Event']['System']['EventID'])
if event_id in ('1102', '104'): # 安全日志清除、系统日志清除
timestamp = data['Event']['System']['TimeCreated']['#attributes']['SystemTime']
print(f"日志已清除:[{timestamp}] 事件 ID {event_id} 在 {log_file} 中")
except Exception as e:
print(f"解析 {log_file} 时出错:{e}")
PYEOF
| 概念 | 描述 |
|---|---|
| EVTX 格式 | Vista/Server 2008 引入的基于二进制 XML 的 Windows 事件日志格式 |
| 事件 ID | 特定事件类型的数字标识符(例如,4624 = 成功登录) |
| 登录类型(Logon types) | 身份验证方法的分类(2=交互式,3=网络,10=RDP) |
| Sigma 规则 | 映射到特定 SIEM/日志查询的通用检测签名 |
| Sysmon | 提供详细进程和网络事件的 Microsoft 系统监控驱动程序 |
| 审计策略 | 控制 Windows 记录哪些事件的 GPO 设置 |
| 事件转发(WEF) | 用于集中事件日志收集的 Windows 机制 |
| 工具 | 用途 |
|---|---|
| Chainsaw | 基于 Sigma 的 EVTX 分析和威胁狩猎工具 |
| Hayabusa | 快速 Windows 事件日志取证时间线生成器 |
| EvtxECmd | Eric Zimmerman 的命令行 EVTX 解析器,支持 CSV/JSON 输出 |
| python-evtx | 用于 EVTX 文件解析的 Python 库 |
| Event Log Explorer | 用于浏览和分析 EVTX 文件的 GUI 工具 |
| KAPE | 包含事件日志的自动化分类收集工具 |
| Velociraptor | 具有 EVTX 收集和狩猎制品的端点 Agent |
场景 1:横向移动检测 过滤 Logon Type 3(网络)和 Type 10(RDP)的事件 4624,识别异常的源-目标对,检查表示哈希传递的事件 4648(显式凭据),与目标系统上的进程创建事件(4688)相关联。
场景 2:权限提升检测 搜索意外用户的事件 4672(分配了特殊权限),检查将用户添加到管理员组的事件 4728/4732(组成员变更),查找表示新系统级访问的事件 4697(服务安装),与账户创建(4720)相关联。
场景 3:PowerShell 攻击检测 分析 PowerShell 操作日志中的脚本块日志记录(事件 4104),在事件 4688 中搜索编码命令,检测 AMSI 绕过尝试,识别下载执行器和已知攻击工具的调用。
场景 4:勒索软件事件重建 从初始访问开始构建时间线(来自外部 IP 的 4624),通过组成员变更追踪权限提升,识别用于持久化的服务安装,查找加密可执行文件的进程创建事件,检测系统日志中的卷影副本删除。