XK-LAB // 告警噪音指数 ALERT-NOISE
● 待读 /data/noise-index.json(读不到就写读不到)
一句话窗口待读
你的告警面板里 — 是自家 agent 的心跳。
分母与分子都在 JSON 里,可以自己除一遍:心跳条数 ÷ alert 总条数。 剩下的部分是信号 —— 但这不等于"剩下的都是攻击"(见下面的检测缺口)。
口径:只统计 event_type = alert 的事件;flow / http / ssh 这些
流量事件不进分母 —— 它们本来就不是"告警",混进来会把噪音比例稀释成假数字。
噪音 vs 信号按占比画,不用图表库
- 噪音(心跳)— 条 · 占比—
- 信号(其余告警)— 条 · 占比—
条数与占比从同一份 JSON 现算: 占比 = 条数 ÷ alert 总数。读不到就整块留空 —— 不补数。
按规则拆开规则待读
| SID | 规则 / 描述 | 条数 | 占比 | 归类 |
|---|---|---|---|---|
| — | 待读 /data/noise-index.json | — | — | 待读 |
检测缺口 · 规则 100110
规则 100110(120 秒内 5 次登录失败)在这个窗口命中 0 次。
0 不代表没有攻击 —— 机器人拿泄露口令表,一枪就中是常态,
「失败 5 次」这个条件在这套蜜罐上永远凑不齐。详见
攻击链复盘笔记。
口径 · 这些数从哪来先看这块,再看数字
| 数据来源 | srv2 的 Suricata eve.json,窗口
—。本页是当日分析出来的快照,不是实时取数:
产物里 source 字段写明它是「已核实摘要」还是「现场统计」。 |
|---|---|
| 为什么心跳算噪音 | sid 2013031 是腾讯云 agent 每 5 分钟往
169.254.0.4:80 发一次 POST /ca_report.cgi ——
固定的源、固定的目的、固定的语义,里面没有一个字节是攻击。
它占满了告警列表,把真正要看的那几条挤到看不见。 |
| 蜜罐侧量级 | 同一个窗口里 Cowrie 单日 14,147 个会话(login.success 14,061 /
login.failed 19),:2222 的 flow 139,987 条。
会话数比"单包告警"更硬 —— 那才是真的有人在连。 |
| 不做的 | 不调任何接口、不写任何东西、不看服务器;这一页只是一次同域静态文件读取。 数字读不到就整页留空写「读不到(原因)—— 不补数」。 |
产物:static/data/noise-index.json ←
scripts/noise/build-noise.py(Python 3 stdlib,无第三方依赖;
--from-written = 已核实摘要,--in = 现场数 eve.json)。
- 待读产物里的 notes[](每一条缺失项的原因都写在那里)。
产物生成时间:—
相关页面:状态页 · 当前告警 · 公开端点清单 · 紫队自测(攻击链复盘)