分层比单轴更容易看节奏
把时间线画成一条轴,登录、进程执行、网络连接、文件改动全部混在一起,噪声会把关键动作淹没。更有效的做法是按事件类别分层显示:认证一层、进程一层、网络一层、文件一层,必要时再加一层运维动作,各层共用同一时间轴,攻击节奏(探测—落地—执行—外传—清理)会沿着层级依次显现。
噪声源单独成轨
缓存刷新、同步任务、监控探活这类高频事件如果混在主轨里,会让图完全无法阅读。把它们单独放一层或者降权着色,一眼就能看出哪些时间点的主轨动作与这些噪声无关。图是给人看的中间产物,最终要能支撑结论,而不是越漂亮越好。
基本信息
| 适用平台 | 跨平台,可用表格工具、绘图脚本或专用时间线工具 |
|---|---|
| 分层建议 | 认证 / 进程执行 / 网络 / 文件 / 运维动作 |
| 共用轴 | 所有层使用统一的 UTC 时间轴 |
| 降噪方式 | 高频噪声单独成层或降低视觉权重 |
| 引用要求 | 报告引用图时注明数据来源与生成方法 |
典型使用场景
- 向非技术人员说明经过:分层图比时间表格更容易理解
- 识别攻击阶段:观察各层动作在时间上的先后关系
- 发现遗漏:某一层在关键时段空白,提示数据缺失或采集不足
- 多人协作:不同分析人员负责不同层,最后合并
- 报告插图:配合文字说明攻击节奏与关键节点
先看分布再决定分层
先看分布再决定分层
# 合并后的事件按整点统计,先看整体分布
awk -F, '{print substr($1,12,2)}' merged.csv | sort | uniq -c | sort -k2,2
# 按事件类型分别统计,确定各层的数据量级
for t in auth execve connect file; do
printf '== %s\n' "$t"
grep -c "$t" merged.csv
done
# 导出各层数据,供绘图脚本读取
grep 'execve' merged.csv | cut -d, -f1-4 > layer-exec.csv
grep 'connect' merged.csv | cut -d, -f1-4 > layer-net.csv
wc -l layer-*.csv分层与观察重点
| 层 | 来源示例 | 观察重点 |
|---|---|---|
| 认证 | 登录与提权记录 | 谁在什么时间进入了系统 |
| 进程执行 | 进程创建审计记录 | 落地后执行了什么 |
| 网络 | 连接与代理日志 | 与哪些外部地址通信 |
| 文件 | 变更日志文件系统时间 | 打包、改名、删除动作 |
| 运维动作 | 变更单与计划任务 | 区分正常运维与可疑行为 |
配色要保证各层可区分,层数不宜超过五六层:层数过多会让读者需要在图例与线条之间来回查找,反而降低可读性。
图只放结论性节点时容易被误解为「只有这些动作」;完整分层图与精选节点图可以各出一份,图注里说明两者的差别。