BlueTeam Log Analyzer Banner

BlueTeam Log Analyzer (BLA) 是我最近持续打磨的一款蓝队日志分析工具。它不是云端黑箱,也不是把规则堆在一个脚本里的 demo,而是希望把现场常见的混杂日志,一次性整理成能被值守、复盘、工单和流水线继续使用的证据包。

项目地址:https://github.com/Hackerchen716/blueteam-log-analyzer

PyPI:https://pypi.org/project/blueteam-log-analyzer/

为什么做它

应急现场最烦人的地方,往往不是没有日志,而是日志太散。

Web access、Linux auth、Windows 安全日志、VPN、堡垒机、WAF、DNS、代理、EDR、数据库审计和云审计各在各的位置。值守人员要先判断入口,再追账号,再看主机,再拼时间线,最后还要把 IOC、风险结论和处置建议整理出来。

BLA 想解决的是这件事:把第一轮排查里最常见、最重复、最容易漏的动作自动化掉。它会把不同来源的日志统一解析成事件,做字段富化、威胁检测、跨源关联和证据输出,最后生成一份可以直接打开的离线报告包。

快速开始

安装后,两条命令就可以生成一份标准报告目录:

pip install -U blueteam-log-analyzer
bla logs/ --profile cn-hvv --out report/ --exit-on none

分析完成后打开 report/index.html 看报告。需要解释某个案件或告警时,可以继续追问同一份 JSON 报告:

bla explain inc-001 --report report/report.json

默认 --out report/ 会生成这些文件:

report/
├── index.html
├── report.json
├── events.csv
├── iocs.txt
└── report.sarif

也就是说,它既给人看,也给系统继续处理。

核心输出

BLA 的输出分成两层:一层是给应急人员快速判断的页面,另一层是给后续自动化流转的结构化数据。

输出用处
风险评分先判断这批日志有没有严重风险,风险集中在哪些资产和来源
Incident把同一 IP、账号、主机、URL、session 或 trace 相关事件聚合成案件
时间线按时间还原入口、执行、提权、持久化、横向移动和外联过程
IOC提取 IP、域名、URL、Hash、账户、进程、命令和可疑路径
SARIF接入 CI、GitHub Code Scanning 或其他安全流水线
CSV/JSON便于 Excel 排查、二次分析、工单系统和 SIEM 导入

我更希望它不是“扫一下给一堆红字”,而是能把判断过程整理出来:先看风险,再看案件,再看证据,最后能落到处置动作。

支持的日志类型

目前 BLA 重点覆盖这些输入:

日志类型说明
Windows 事件日志XML 导出日志,以及可选的 EVTX 二进制解析
Linux 认证日志auth.logsecure、SSH、Sudo、PAM、账号变更
Web 访问日志Apache / Nginx Combined,覆盖 SQLi、XSS、LFI、RCE、扫描器等
HVV/重保 P0 结构化日志CSV、JSONL、JSON 数组、key=value 格式
通用文本日志关键字提取、基础告警和线索归档

针对国内护网、重保和企业应急场景,--profile cn-hvv 会增强 Shiro、Fastjson、Struts2、ThinkPHP、WebLogic、Spring、Webshell 等常见痕迹检测。

HVV / 重保采集思路

我在 BLA 里加了日志源采集矩阵,用来回答现场最实际的问题:第一轮到底先拿哪些日志。

bla --list-log-sources

第一轮 P0 我会优先覆盖这些方向:

类别代表日志源价值
边界入口WAF、CDN、SLB、反向代理确认攻击载荷、真实源 IP、被打入口和转发链路
Web 与应用access.log、业务应用日志定位漏洞利用、Webshell、越权和异常访问
身份接入VPN、零信任、堡垒机发现撞库、异地登录、命令审计和跳转路径
身份权限AD、域控、SSO、MFA识别账号爆破、票据滥用、提权和权限变更
主机终端EDR、Sysmon、Linux auth/auditd还原落地执行、横向移动、持久化和主机失陷
流量解析DNS、代理、防火墙、NAT、NDR发现 C2、恶意下载、数据外传和内网扫描
数据与云数据库审计、云审计、Kubernetes API 审计确认拖库、AK 滥用、Secret 读取和云上权限扩大

这些不是为了把功能列表写长,而是为了让工具更贴近现场:先支撑判断,再补全攻击链,最后服务处置闭环。

可扩展内核

当前版本把后续扩展需要的几个插槽先整理出来了。

能力说明
Parser Registry新日志源通过注册接入,不再不断扩大中心路由
Detector Registry新检测器通过注册组合,避免把规则全部塞进一个引擎文件
parse_content()为远程采集、内存输入和未来 UI / 服务层预留统一入口
--type自动识别不准时可强制指定 web-accesslinux-authp0-security 等解析器
单次 enrichment让解析、富化、检测、关联的边界更清楚

这部分对普通使用者不一定立刻可见,但对后续维护很重要。BLA 不应该只是一支脚本,它要能继续长出新的日志源、新规则、新报告出口和新的联动方式。

常用命令

# 自动识别日志类型
bla /var/log/auth.log

# 强制指定解析器
bla access.log --type web-access
bla hvv_chain.jsonl --type p0-security --profile cn-hvv

# 并行分析多个日志
bla logs/*.evtx -j 8

# 使用白名单压制可信噪音
bla logs/ --allowlist docs/allowlist-example.json --out report/

# 加载自定义 YAML 规则
bla logs/ --rules ./my-rules --profile cn-hvv --out report/

# 校验规则元数据和正则
bla validate-rules --strict-metadata

# CI 门禁:高危以上告警时退出 1
bla logs/ --exit-on high

设计边界

BLA 的核心取向是:离线优先、证据优先、现场优先

离线优先,是因为真实日志里经常有账号、内网地址、路径、命令、业务接口甚至敏感数据,安全工具本身不应该变成泄露渠道。

证据优先,是因为应急不是“看起来很酷的告警面板”。一条告警最好能继续往下追:它来自哪行日志,影响哪个账号或主机,和哪些事件在同一条攻击链上,能提取哪些 IOC,下一步处置动作是什么。

现场优先,是因为蓝队工具最终要被人拿去用。报告要能打开,CSV 要能筛,IOC 要能流转,SARIF 要能进流水线,命令行要能在隔离网络里跑起来。

后面我会继续围绕真实日志源、误报压制、跨源关联和报告可读性继续补。也欢迎直接到 GitHub 提 Issue 或 PR:https://github.com/Hackerchen716/blueteam-log-analyzer