使用jq分析Hayabusa项目日志结果的技术指南
2025-07-10 07:33:37作者:贡沫苏Truman
前言
在数字取证和威胁狩猎领域,有效分析Windows事件日志是一项核心技能。Hayabusa作为一款强大的Windows事件日志分析工具,能够帮助安全分析师快速识别潜在的安全威胁。本文将详细介绍如何利用jq工具对Hayabusa生成的JSON格式日志进行高级分析。
jq工具简介
jq是一款轻量级且功能强大的命令行JSON处理器,它允许用户以高效的方式查询、过滤和转换JSON数据。在安全分析场景中,jq特别适合处理Hayabusa生成的日志文件。
Hayabusa日志格式解析
Hayabusa支持两种JSON输出格式:
- 标准JSON格式:便于人工阅读和检查
- JSONL(JSON Lines)格式:每行一个JSON对象,更适合程序化处理和大数据处理
日志中的关键字段包括:
Timestamp
:事件时间戳Computer
:计算机名Channel
:日志通道(Sec/Sys/PwSh等)EventID
:事件IDDetails
:包含归一化后的关键字段
准备工作
安装jq工具
在开始分析前,请确保已安装jq工具。各操作系统安装方法如下:
- Linux:通过包管理器安装(如
apt install jq
或yum install jq
) - macOS:使用Homebrew安装(
brew install jq
) - Windows:可通过WSL或直接下载二进制文件
生成Hayabusa日志文件
使用以下命令生成JSON格式的日志文件:
hayabusa json-timeline -d <目录> -o results.json
如需JSONL格式,添加-J
参数:
hayabusa json-timeline -d <目录> -J -o results.jsonl
基础分析技巧
1. 日志预览与颜色显示
使用以下命令可以彩色显示日志内容,便于浏览:
cat results.json | jq -C | less -R
2. 事件统计与分析
统计各事件ID出现频率:
cat results.json | jq '.EventID' | sort | uniq -c | sort -nr
统计包含通道信息的事件频率:
cat results.json | jq -j ' .Channel , " " , .EventID , "\n" ' | sort | uniq -c | sort -nr
3. 特定条件过滤
筛选特定事件ID(如4624):
cat results.json | jq 'select(.EventID == 4624)'
组合条件筛选(4624且类型为3的网络登录):
cat results.json | jq 'select((.EventID == 4624) and (.Details.Type? == 3))'
高级分析技巧
4. 导出CSV格式数据
将安全日志4624事件导出为CSV:
cat results.json | jq 'select((.Channel == "Sec") and (.EventID == 4624)) | [.Timestamp, .Computer, .Details[]?] | @csv' -r
5. 按日期统计告警
统计每天告警数量:
cat results.json | jq -j '.Timestamp[0:10], "\n"' | sort | uniq -c
6. PowerShell日志重建
提取并重建PowerShell脚本块:
cat results.json | jq 'select(.EventID == 4104) | .Details.ScriptBlockText?' | grep -v null
7. 可疑网络连接检测
提取网络连接信息:
cat results.json | jq 'select(.EventID == 3) | [.Timestamp, .Computer, .Details.Proc?, .Details.SrcIP?, .Details.DstIP?, .Details.DstPort?] | @csv' -r
8. 可执行文件哈希提取
提取进程哈希值:
cat results.json | jq 'select(.Details.Hashes?) | [.Timestamp, .Computer, .Details.Proc?, .Details.Hashes?] | @csv' -r
实战案例分析
案例1:异常登录检测
通过分析4625(登录失败)事件,识别可能的异常登录行为:
cat results.json | jq 'select(.EventID == 4625) | [.Timestamp, .Details.TgtUser?, .Details.SrcIP?] | @csv' -r | sort | uniq -c | sort -nr
案例2:异常进程执行检测
查找执行次数较少的可疑进程:
cat results.json | jq 'select(.EventID == 4688) | .Details.Proc?' | sort | uniq -c | sort -n
性能优化建议
- 对于大型日志文件,优先使用JSONL格式
- 使用
--profile
参数控制输出字段数量 - 结合
grep
、awk
等工具进行二次处理 - 对于复杂查询,考虑将jq脚本保存为单独文件
总结
通过本文介绍的技术,安全分析师可以充分利用Hayabusa和jq的强大功能,实现对Windows事件日志的高效分析。从基础的日志浏览到复杂的安全威胁检测,这套方法能够显著提升安全运维和事件响应的效率。
掌握这些技能不仅适用于Windows日志分析,也能应用于其他JSON格式的日志分析场景,是现代化安全分析师的必备技能之一。