jkooe
7d781d132e
feat(audit): L2 系统级审计兜底 —— 三端设计 + Windows 落地
## 它补的是 L1 结构上记不到的那块
L1 是 agent 自己记的,只看得见经过自己 RPC 的调用。攻击者绕过 agent
直接跑系统命令、或干脆把 agent 停掉 —— L1 全部盲区。L2 采集操作系统
自己的审计事件,补的正是这块。设计见 docs/AUDIT-L2.md。
## 必须先说清的信任边界(不夸大作用)
采集器与 agent 同进程同权限 —— 攻击者能停 agent 就能停采集器。
故本地 audit-l2.log 只是一份**归一化副本**,防篡改价值有限。
真正的独立性来自**把记录转发出机**(与 SECURITY.md §4.8 锚定同一思路)。
本实现不自动转发,只提供导出接口;这一点已写入文档与能力描述。
## 三端
- Windows:**落地**。选内置 auditpol 而非 Sysmon —— Sysmon 是第三方驱动,
需单独分发、需重启生效、版本行为有差异;内置策略零依赖即可立起来。
检测到装了 Sysmon 则并用,未装不尝试下载。
- status:查策略是否启用,并提示两个关键开关
* SCENoApplyLegacyAuditPolicy —— 不设它,组策略旧式类别策略会盖掉
subcategory,表现为「auditpol 显示已启用但事件日志里没有 4688」
* ProcessCreationIncludeCmdLine_Enabled —— 不开则 4688 只有进程名
- enable:开启进程创建 4688 / 登录 4624,4625 / 进程终止 4689(需管理员)
- collect:Get-WinEvent 拉取 → 归一化 → 独立落盘(带哈希链)
- verify:L2 链完整性校验
- Linux:仅设计(auditd,需预装),未落地
- macOS:仅设计,ESF 需 Apple entitlement 且必须是签名 System Extension,
个人自签无法启用 —— 不写假装能用的代码
## 落盘与 schema
独立文件 audit-l2.log,不与 L1 混 —— 混了就无法区分「agent 记的」与
「OS 记的」。记录含 ts(OS 事件时间)、src、event_id(保留原始便于核对)、
kind(归一化类别)、collected_at(采集时刻,与 ts 差过大说明曾离线)。
## 实测
- 新增 8 条单测,含两条故障注入:篡改内容检出「哈希不符」、
删中间条目检出「链断裂」
- 既有契约守卫两次报红并已被修复:manifest 新增 lkg 字段 → SystemInfo 接口缺声明;
新增 system.audit.l2 → 能力清单断言过期(51→52)
- 全量单测 349 → 357 全绿
2026-10-17 03:24:17 +08:00
..
2026-10-13 22:35:40 +08:00
2026-09-27 17:04:21 +08:00
2026-10-10 14:27:12 +08:00
2026-09-29 11:27:52 +08:00
2026-10-13 17:16:36 +08:00
2026-10-17 03:24:17 +08:00
2026-10-17 03:24:17 +08:00
2026-10-13 17:16:36 +08:00
2026-10-11 14:34:41 +08:00
2026-10-07 10:14:12 +08:00
2026-10-10 00:39:28 +08:00
2026-10-13 22:35:40 +08:00
2026-09-27 17:04:21 +08:00
2026-09-29 14:33:01 +08:00
2026-10-10 14:27:12 +08:00
2026-09-27 17:04:21 +08:00
2026-10-07 00:59:40 +08:00
2026-09-29 14:38:53 +08:00
2026-10-07 00:59:40 +08:00
2026-10-10 14:27:12 +08:00
2026-10-17 03:13:18 +08:00
2026-10-10 14:27:12 +08:00
2026-09-29 14:25:35 +08:00
2026-10-10 07:50:13 +08:00
2026-09-30 00:19:10 +08:00
2026-10-10 14:27:12 +08:00
2026-10-13 22:35:40 +08:00
2026-10-05 02:25:19 +08:00
2026-10-07 02:00:10 +08:00
2026-09-30 00:51:56 +08:00
2026-10-13 18:57:04 +08:00
2026-10-13 22:35:40 +08:00
2026-10-13 22:41:02 +08:00
2026-09-27 17:04:21 +08:00
2026-09-27 17:04:21 +08:00
2026-10-13 18:57:04 +08:00
2026-09-30 01:27:37 +08:00