离线蓝队日志分析器:把混杂日志变成告警、Incident、攻击链、IOC 和 SARIF
面向应急响应、HVV/重保、值守复盘、样本验证和 CI 安全门禁
BLA 是一个离线优先的蓝队日志分析工具。它把 Windows、Linux、Web、HVV/重保 P0 结构化安全日志统一解析成事件,再做富化、检测、关联和报告输出,帮助安全团队快速回答几个应急现场最常见的问题:
- 谁在攻击,命中了哪些入口?
- 哪台资产、哪个账号、哪个会话可能已经失陷?
- 事件能不能串成一条可信攻击链?
- 哪些 IOC、命令、进程、URL、账号需要进入封禁、排查或工单?
- 结果能不能同时给人看,也能交给 SIEM、CI 或 Code Scanning 继续处理?
所有分析默认在本机完成,不上传日志,不依赖在线服务;HTML 报告也是离线单文件。
先确认安装成功:
pip install -U blueteam-log-analyzer
bla --version分析一个日志目录:
bla logs/需要生成完整报告时再加输出目录:
bla logs/ --out report/如果你已经有本地 GeoIP JSON 缓存,可以让 HTML 报告展示攻击源地理分布;BLA 不会联网查询 IP,缓存不可读或无法定位时会退回日志内地理字段,仍无结果则自动隐藏地图:
bla logs/ --out report/ --geoip-cache geo-cache.json分析完成后打开 report/index.html。报告目录会同时生成:
| 文件 | 用途 |
|---|---|
index.html |
离线 HTML 报告,适合值守、复盘和汇报 |
report.json |
完整结构化结果,适合二次分析和自动化 |
events.csv |
事件明细,适合 Excel 排查 |
iocs.txt |
IOC 清单,适合封禁、狩猎和工单流转 |
report.sarif |
SARIF 2.1.0,适合 GitHub Code Scanning 等平台 |
manifest.json |
交付清单和文件哈希 |
大日志场景可以限制 JSON 事件明细体积:
bla logs/ --out report/ --json-events-limit 50000 --raw-line-limit 500
bla logs/ --out report/ --no-json-events需要解释某个案件或告警时:
bla explain inc-001 --report report/report.jsonv1.4.4 聚焦真实 Windows 攻击样本兼容、EDR 导出日志兼容、检测质量、输出脱敏和发布包可验证性:新增 Windows EventLog JSON 与 EDR Excel 解析,增强 Windows XML/EVTX、P0/HVV、Linux/Web/Shell History 的归一化与检测覆盖,并把安装后 CLI 报告包、manifest 哈希、同名输入和路径脱敏纳入发布门禁。
| 方向 | v1.4.4 变化 |
|---|---|
| Windows JSON | 新增 windows-json parser,支持 Winlogbeat/Elastic 嵌套字段、OTRF/Mordor JSONL、JSON object、JSON 数组和多对象 pretty JSON |
| EDR Excel | 新增 edr-xlsx parser,支持 EDR/XDR .xlsx 进程事件导出,识别用户目录无签名伪装进程、临时目录投放、随机名可执行文件、WebRoot 可执行文件、计划任务删除、随机目录 ACL 修改和 portproxy reset;终端报告用树状进程链还原执行关系 |
| Windows XML/EVTX | 增强命名空间、单引号 XML、Sysmon/安全日志字段归一,覆盖 DNS 外联、auditpol 防御规避、UAC 注册表劫持、可疑进程和横向移动线索 |
| 检测质量 | 增强 C2、数据外传、防御规避、UAC 提权、凭据访问、Web 攻击和 HVV/重保 profile 检测,收紧 LDAP 等高噪声场景误报 |
| 输出安全 | 终端、JSON、HTML、CSV、IOC、SARIF、manifest 继续清洗控制字符和常见 secret;IOC 与 manifest 避免泄漏本地绝对路径 |
| Manifest | 普通 CLI --out 复用 pipeline 输入 provenance,区分不同目录下同名日志,记录输入/输出哈希但不暴露本地临时目录 |
| Release Gate | scripts/release_check.py --build 覆盖离线 wheel 安装、安装后 bla console script、HTML/JSON/CSV/IOC/SARIF/manifest bundle、manifest options 脱敏和同名输入回归 |
更多变更见 v1.4.4 发布说明,历史版本见 docs/releases
下面是一组 HVV/重保 P0 样本的终端和报告截图。6 条关键事件来自 WAF、应用、EDR、DNS、代理和防火墙,BLA 会把它们关联成同一个 Incident,并保持 ATT&CK 拓扑、案件拓扑和告警阶段一致。
终端视图适合一线值守先判断“是否成链”,HTML 报告适合复盘时回答“入口是什么、主机是否失陷、是否有外联和外传”。
| 能力 | 说明 |
|---|---|
| 多源解析 | Windows XML/EVTX/JSON、EDR Excel、Linux auth.log/secure、Apache/Nginx access log、Bash/Zsh shell history、HVV/重保 P0 CSV/JSONL/JSON/key=value、通用文本日志 |
| 检测规则 | 覆盖暴力破解、密码喷洒、Web 攻击、横向移动、权限提升、持久化、防御规避、凭据访问、可疑执行、C2 外联、数据外传等场景 |
| 国内画像 | --profile cn-hvv 增强 Shiro、Fastjson、Struts2、ThinkPHP、WebLogic、Spring、Webshell、敏感路径探测等常见痕迹 |
| Incident 关联 | 按 IP、账号、主机、资产、URL、session、trace 等线索聚合事件和告警,输出可处置案件视图 |
| 攻击链还原 | 按 ATT&CK / 应急 kill chain 顺序展示阶段、技术编号、日志源和关键事件 |
| IOC 提取 | 提取 IP、域名、URL、Hash、账号、路径、进程、命令,并过滤静态资源和低价值噪音 |
| 攻击源地理分布 | 可选加载本地 GeoIP 缓存或日志自带地理字段,在 HTML 报告中展示可定位公网源 IP 分布 |
| 报告交付 | 一次生成 HTML、JSON、CSV、IOC、SARIF、manifest,兼顾人工研判和系统集成 |
| 离线与自动化 | 本地离线运行,支持 --exit-on、benchmark、Remote Workspace、规则校验和 CI 流水线 |
| 日志类型 | 输入格式 | 典型用途 |
|---|---|---|
| Windows 事件日志 | .xml、.evtx |
登录、RDP、账号变更、服务安装、计划任务、日志清除、Sysmon 进程与网络行为 |
| EDR/XDR 导出日志 | .xlsx |
进程创建、进程加载、文件签名、进程 SHA1、命令行、用户目录无签名执行和投放链 |
| Linux 认证日志 | auth.log、secure |
SSH 爆破、成功登录、sudo、root 登录、账号创建 |
| Shell 历史 | .bash_history、.zsh_history、*history |
主机枚举、工具下载、TTY 升级、SUID/sudo 提权、凭据文件读取、清痕命令;目录扫描会保留 Bash/Zsh history 证据文件 |
| Web 访问日志 | Apache/Nginx Combined | SQLi、XSS、LFI/RFI、RCE、扫描器、敏感文件探测、异常流量 |
| HVV/重保 P0 日志 | CSV、JSONL、JSON object、JSON 数组、key=value | WAF、VPN、堡垒机、DNS、代理/NAT、防火墙、EDR、应用日志 |
| 通用文本日志 | 任意文本 | 关键字提取、轻量告警和 IOC 辅助提取 |
EVTX 二进制解析是可选能力:
pip install -U "blueteam-log-analyzer[evtx]"未安装 EVTX 依赖时,BLA 会明确提示转换方案,不会静默产出空报告。
bla /var/log/ --out report/ --exit-on none带本地 GeoIP 缓存生成攻击源地图:
bla /var/log/ --out report/ --geoip-cache geo-cache.json --exit-on none缓存可以是按 IP 索引的 JSON 对象,例如:
{
"8.8.8.8": {
"country": "United States",
"regionName": "California",
"city": "Mountain View"
}
}自动识别不准时可以指定解析器:
bla access.log --type web-access --out report/
bla Security.xml --type windows-xml --out report/
bla .bash_history --type shell-history --out report/
bla hvv_chain.jsonl --type p0-security --profile cn-hvv --out report/bla p0-logs/ --type p0-security --profile cn-hvv --out hvv-report/ --exit-on none建议第一轮优先采集 WAF、CDN/SLB、Web access、应用日志、VPN/零信任、堡垒机、AD/域控、EDR/XDR、DNS、出口代理、防火墙/NAT、NDR/全流量、数据库审计和云审计。完整采集矩阵可由 CLI 输出:
bla --list-log-sources导出 EVTX:
wevtutil epl Security Security.evtx /ow:true
wevtutil epl System System.evtx /ow:true
wevtutil epl "Microsoft-Windows-Sysmon/Operational" Sysmon.evtx /ow:true导出无额外依赖的 XML:
wevtutil qe Security /f:RenderedXml /e:Events > Security.xml
wevtutil qe System /f:RenderedXml /e:Events > System.xml
wevtutil qe "Microsoft-Windows-Sysmon/Operational" /f:RenderedXml /e:Events > Sysmon.xml分析:
bla Security.evtx System.evtx Sysmon.evtx --out windows-report/
bla Security.xml System.xml Sysmon.xml --out windows-report/只看 RDP 登录:
bla Security.xml --rdp --json rdp.json --exit-on none目标主机无法安装 Python、pip 或 BLA 时,可以用 Remote Workspace 在本机分析远程日志。远程侧只需要 SSH 和系统自带命令。
bla remote-log root@server.example.com /var/log/auth.log \
--tail 1000 \
--grep "Failed password" \
--out case-auth \
--audit-json case-auth-audit.json \
--exit-on none也可以进入交互式工作台:
bla ssh root@server.example.com工作台内支持 ls、cd、find、tail、bla FILE、bla FILE --tail N --grep TEXT、bla journalctl:ssh 等命令。
# 高危及以上告警时退出 1
bla logs/ --exit-on high --json result.json --sarif report.sarif
# GitHub Code Scanning
gh code-scanning upload-sarif --sarif report.sarif--exit-on 可选 none、low、medium、high、critical,默认是 critical。
加载自定义 YAML Web 检测规则:
bla access.log --rules ./rules --profile cn-hvv --out report/
bla validate-rules --strict-metadata使用 allowlist 压制可信扫描器、维护窗口或已知噪音:
bla logs/ --allowlist docs/allowlist-example.json --out report/| 类别 | 示例 | MITRE ATT&CK |
|---|---|---|
| 侦察 | 扫描器、敏感文件探测、目录枚举 | T1595, T1083 |
| 初始访问 | Web 漏洞利用、Log4Shell/JNDI、国内常见 Web 漏洞痕迹 | T1190 |
| 身份突破 | SSH/RDP/Kerberos 暴力破解、密码喷洒、爆破后成功登录 | T1110.001, T1110.003 |
| 执行 | 高危 PowerShell、命令注入、LOLBins、Shell TTY 升级、远程工具下载 | T1059, T1218, T1105 |
| 持久化 | 服务安装、计划任务、账号创建 | T1543.003, T1053.005, T1136 |
| 权限提升 | sudo shell、特权组变更、root 直接登录 | T1548.003, T1098.001 |
| 主机失陷 | Webshell、EDR/XDR 高危终端告警、恶意进程痕迹 | T1505.003 |
| 横向移动 | RDP 跳转、显式凭据、Pass-the-Hash 指示器 | T1021.001, T1550.002 |
| 命令控制 | DNS 隧道、高风险代理访问、C2 外联 | T1071, T1071.004, T1105 |
| 数据外传 | 大流量外联、敏感数据外传迹象 | T1041 |
| 凭据访问 | Mimikatz、LSASS 访问、凭据转储、Linux 敏感凭据文件读取 | T1003.001, T1003.008 |
| 防御规避 | 日志清除、审计策略修改、安全能力关闭、Shell history 清除和痕迹删除 | T1070.001, T1070.003, T1070.004, T1562.002 |
| 文档 | 内容 |
|---|---|
| 架构说明 | 解析、富化、检测、关联、输出的可扩展设计 |
| 演示案例库 | 样例、复现命令和功能覆盖矩阵 |
| SecRepo 样本验证 | 公开 auth.log 和 Web access.log 实测记录 |
| 测试资源清单 | 可用于评估日志分析能力的公开资源 |
| 发布检查清单 | GitHub Release 和 PyPI 发布前检查项 |
| 历史版本 | 每个版本的发布说明 |
git clone https://github.com/Hackerchen716/blueteam-log-analyzer.git
cd blueteam-log-analyzer
python3 bla_cli.py --help
python3 -m compileall -q bla bla_cli.py setup.py tests
python3 -m unittest discover -s tests -v
python3 scripts/release_check.py当前回归测试覆盖解析、检测、Incident 关联、攻击链阶段、HTML/JSON/CSV/IOC/SARIF 输出、Remote Workspace、规则校验、报告安全转义、终端控制字符清理、P0 多源 golden incident 和发布质量检查。
包版本由 bla/__version__.py 作为单一版本源,pyproject.toml 和 setup.py 都读取同一来源。发布前请按 release checklist 执行完整检查。
bla/
parsers/ 日志解析器和自动识别入口
detection/ 富化、检测器、规则注册和 Incident 关联
output/ 终端、HTML、JSON、CSV、IOC、SARIF、manifest、报告包
remote/ SSH 远程日志工作台
rules/ 内置 YAML Web 检测规则
docs/ 架构、案例、发布说明、测试资源和截图
sample_logs/ 本地 smoke 示例日志
tests/ 回归测试和 P0 golden fixture
scripts/ 发布检查脚本
欢迎提交 Issue 或 Pull Request,尤其是这些方向:
- 补充真实环境中常见的安全设备、主机、Web 服务和业务日志格式。
- 扩展 Web 攻击、身份突破、横向移动、权限变更、可疑执行、日志清除、C2 外联和数据外传检测规则。
- 改进 allowlist、可信扫描器、维护窗口和基线压制能力。
- 优化 HTML / JSON / CSV / IOC / SARIF 报告,让结果更适合值守、复盘和工单流转。
- 补充脱敏样本、单元测试、回归测试和性能测试。
请不要提交真实客户日志、敏感 IP、账号、Cookie、Token、业务数据或未脱敏截图。
交流与合作:hackerchen7@proton.me
MIT License © 2026 Hackerchen716



