首页
/ 使用jq分析Hayabusa项目日志结果的技术指南

使用jq分析Hayabusa项目日志结果的技术指南

2025-07-10 07:33:37作者:贡沫苏Truman

前言

在数字取证和威胁狩猎领域,有效分析Windows事件日志是一项核心技能。Hayabusa作为一款强大的Windows事件日志分析工具,能够帮助安全分析师快速识别潜在的安全威胁。本文将详细介绍如何利用jq工具对Hayabusa生成的JSON格式日志进行高级分析。

jq工具简介

jq是一款轻量级且功能强大的命令行JSON处理器,它允许用户以高效的方式查询、过滤和转换JSON数据。在安全分析场景中,jq特别适合处理Hayabusa生成的日志文件。

Hayabusa日志格式解析

Hayabusa支持两种JSON输出格式:

  1. 标准JSON格式:便于人工阅读和检查
  2. JSONL(JSON Lines)格式:每行一个JSON对象,更适合程序化处理和大数据处理

日志中的关键字段包括:

  • Timestamp:事件时间戳
  • Computer:计算机名
  • Channel:日志通道(Sec/Sys/PwSh等)
  • EventID:事件ID
  • Details:包含归一化后的关键字段

准备工作

安装jq工具

在开始分析前,请确保已安装jq工具。各操作系统安装方法如下:

  • Linux:通过包管理器安装(如apt install jqyum 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

性能优化建议

  1. 对于大型日志文件,优先使用JSONL格式
  2. 使用--profile参数控制输出字段数量
  3. 结合grepawk等工具进行二次处理
  4. 对于复杂查询,考虑将jq脚本保存为单独文件

总结

通过本文介绍的技术,安全分析师可以充分利用Hayabusa和jq的强大功能,实现对Windows事件日志的高效分析。从基础的日志浏览到复杂的安全威胁检测,这套方法能够显著提升安全运维和事件响应的效率。

掌握这些技能不仅适用于Windows日志分析,也能应用于其他JSON格式的日志分析场景,是现代化安全分析师的必备技能之一。