ParkerLee07/DeltaAegis

GitHub: ParkerLee07/DeltaAegis

DeltaAegis 是一个自托管的网络状态增量监控与调查控制台,通过对比 NetSniper 遥测快照来检测网络资产和服务的变化并生成可解释的风险报告。

Stars: 1 | Forks: 0

# DeltaAegis **自托管的、增量优先的网络状态监控与调查控制台。** DeltaAegis 会接收由 NetSniper 生成的不可变遥测数据包,将规范化的历史快照存储在 SQLite 中,并说明受监控网络随时间的变化情况。 该项目专注于可靠的攻击面变化检测、资产状态跟踪、告警审查、风险优先级排序以及 Markdown 调查报告,之后才会扩展到更广泛的 SIEM 功能。 ## 当前版本 DeltaAegis v0.4.0 ## DeltaAegis 的功能 DeltaAegis 会随着时间推移对比已接受的 NetSniper 快照,并将网络变化转化为结构化的事件、告警和报告。 ``` NetSniper telemetry bundle ↓ DeltaAegis ingestion ↓ SQLite snapshot history ↓ Delta engine ↓ Events + alerts ↓ Asset context + analyst notes ↓ Risk prioritization ↓ Markdown investigation reports ``` DeltaAegis 可帮助回答以下问题: - 网络上发生了什么变化? - 哪些服务出现或消失了? - 哪些资产是稳定的、丢失的或新发现的? - 哪些告警已被审查? - 为什么分析师会确认或抑制告警? - 某个发现关联了什么资产所有者、角色或关键性? - 基于可解释的风险评分,哪些主体应该被优先审查? ## 特性 - 接收最终确定的 `netsniper-run-v1` 和 `netsniper-run-v2` 数据包。 - 解析 Nmap XML 以获取服务遥测数据。 - 使用归档的邻居表丰富数据,进行基于 MAC 的本地身份关联。 - 区分全球管理的 MAC、本地管理的 MAC 以及仅 IP 的观察结果。 - 过滤不可用的地址,例如网络地址和广播地址。 - 保留历史快照和仅追加的 JSONL 事件。 - 应用快照质量和扫描配置文件的兼容性检查机制。 - 通过三次接受扫描的移除阈值来跟踪稳定资产的生命周期状态。 - 发出服务开启、服务关闭、NetSniper 发现、配置文件重置和身份生命周期事件。 - 维护面向操作员的告警状态,包含 `OPEN`、`ACKNOWLEDGED`、`RESOLVED` 和 `SUPPRESSED`。 - 支持包含分析师提供理由的告警审查备注。 - 支持资产所有者、角色、关键性和备注。 - 生成 Markdown 调查报告。 - 在报告中包含资产上下文和告警审查备注。 - 计算可解释的风险登记表,以便分析师进行优先审查。 - 提供交互式终端菜单和易于自动化的直接命令。 ## 架构 ``` NetSniper full-pipeline run ↓ Immutable telemetry bundle ↓ DeltaAegis ingestion and normalization ↓ SQLite historical snapshot store ↓ Profile compatibility and quality gates ↓ Delta engine ↓ Append-only events + stateful operator alerts ↓ Asset annotations + alert review notes ↓ Risk register ↓ Markdown investigation reports ``` 有关更深入的架构说明,请参阅 `Docs/architecture.md`。 ## 要求 - Linux - Python 3.10 或更新版本 - 启用了不可变遥测数据包的 NetSniper DeltaAegis 目前使用 Python 标准库组件和 SQLite。它不需要单独的数据库服务器。 可选: - 用于手动检查数据库的 `sqlite3` CLI - 用于源代码控制和更新的 Git ## 安装 ``` git clone https://github.com/ParkerLee07/DeltaAegis.git cd DeltaAegis chmod +x install.sh ./install.sh ``` 安装完成后,使用以下命令启动 DeltaAegis: ``` deltaaegis ``` 你也可以直接从仓库运行它: ``` python3 deltaaegis.py ``` ## 用法 启动交互式控制台: ``` deltaaegis ``` 或者: ``` python3 deltaaegis.py menu ``` 为自动化和可重复的工作流提供了直接命令。 ## 核心命令 接收新的 NetSniper 遥测数据包: ``` deltaaegis ingest ``` 显示系统摘要: ``` deltaaegis summary ``` 列出导入的快照: ``` deltaaegis snapshots --limit 20 ``` 显示最近的增量事件: ``` deltaaegis events --limit 50 ``` 按严重性过滤事件: ``` deltaaegis events --severity HIGH --limit 50 ``` 按类型过滤事件: ``` deltaaegis events --event-type MONITORED_SERVICE_OPENED --limit 50 ``` 显示告警: ``` deltaaegis alerts --status OPEN --limit 50 ``` 显示快照健康状况: ``` deltaaegis health --limit 20 ``` 显示最新接受的快照: ``` deltaaegis latest ``` 显示配置的遥测路径: ``` deltaaegis paths ``` 显示可解释的风险登记表: ``` deltaaegis risk ``` 显示详细的风险评分理由: ``` deltaaegis risk --details ``` 按主体文本过滤风险登记表: ``` deltaaegis risk --subject SUBJECT_KEY ``` 显示某一个主体的风险详情: ``` deltaaegis asset-risk SUBJECT_KEY ``` ## 基线审查 如果 NetSniper 扫描配置文件发生更改,DeltaAegis 可以将快照置于隔离状态以供审查,而不是自动将其视为正常的基线延续。 批准已审查的快照作为新基线: ``` deltaaegis approve SCAN_ID ``` 示例: ``` deltaaegis approve 20260612-162354 ``` ## 资产调查 按资产键或当前 IP 显示资产历史记录: ``` deltaaegis asset 192.168.4.32 ``` 显示特定主体键的时间线: ``` deltaaegis asset-timeline 'SUBJECT_KEY' ``` 示例: ``` deltaaegis asset-timeline 'ip:192.168.4.32' deltaaegis asset-timeline '192.168.4.32:tcp/8080' deltaaegis asset-timeline 'mac:aa:bb:cc:dd:ee:ff' ``` 按严重性过滤资产时间线: ``` deltaaegis asset-timeline 'SUBJECT_KEY' --severity HIGH ``` ## 告警审查 确认告警: ``` deltaaegis ack ALERT_ID --reason "Reviewed and confirmed expected behavior" ``` 抑制告警: ``` deltaaegis suppress ALERT_ID --reason "Known recurring lab service" ``` 显示详细的告警上下文: ``` deltaaegis alert-detail ALERT_ID ``` 显示告警的审查备注: ``` deltaaegis alert-notes ALERT_ID ``` 告警审查备注会随着时间保留分析师的决策。这使得理解告警为何被确认或抑制变得更加容易。 ## 资产标注 DeltaAegis 支持针对所有者、角色、关键性和备注的轻量级资产标注。 标注资产: ``` deltaaegis annotate-asset 'ASSET_KEY' \ --owner "IT" \ --role "Printer" \ --criticality "LOW" \ --notes "Known office printer" ``` 显示某一个资产的备注: ``` deltaaegis asset-notes 'ASSET_KEY' ``` 显示某一个资产的标注历史: ``` deltaaegis asset-notes 'ASSET_KEY' --history ``` 列出已保存的资产标注: ``` deltaaegis asset-annotations ``` 限制标注输出: ``` deltaaegis asset-annotations --limit 10 ``` 当事件或告警主体与已保存的标注匹配时,调查报告会使用资产标注。 ## 风险登记表 DeltaAegis v0.4.0 增加了一个可解释的风险登记表,用于确定审查的优先级。 风险登记表使用现有的 DeltaAegis 数据: - 增量事件严重性 - 未处理的告警 - 已确认的告警 - 重复的近期活动 - 资产关键性 - 缺失的资产标注 - 资产所有者和角色上下文 显示首要风险主体: ``` deltaaegis risk ``` 限制输出: ``` deltaaegis risk --limit 10 ``` 显示详细的评分理由: ``` deltaaegis risk --details ``` 按主体文本过滤: ``` deltaaegis risk --subject SUBJECT_KEY ``` 显示某一个主体的详细风险记录: ``` deltaaegis asset-risk SUBJECT_KEY ``` 风险评分是刻意设计为可解释的。每个评分都建立在可见的理由之上,例如事件严重性、未处理的告警、资产关键性和重复活动。 ## 调查报告 生成 Markdown 调查报告: ``` deltaaegis report ``` 将报告写入特定的输出路径: ``` deltaaegis report --output reports/example-report.md ``` 限制报告事件计数: ``` deltaaegis report --limit 100 ``` 报告可以包括: - 报告元数据 - 事件总数 - 严重性统计 - 事件类型统计 - 未处理的告警上下文 - 已标注的资产上下文 - 每个事件的资产上下文 - 告警审查备注 - 推荐的后续跟进指导 这使得 DeltaAegis 能够生成可读的调查产物,而不仅仅是终端输出。 ## 交互式菜单 交互式 CLI 菜单包括: ``` [1] Ingest new NetSniper bundles [2] Show system summary [3] List imported snapshots [4] Show recent delta events [5] Show open alerts [6] Show asset history [7] Show snapshot health [8] Approve reviewed snapshot as baseline [9] Generate investigation report [10] Show telemetry paths [11] Exit ``` ## 运行时数据 运行时状态保留在本地,并被排除在 Git 之外。 默认的 DeltaAegis 路径: ``` ~/DeltaAegis/ ├── data/ │ └── deltaaegis.db ├── events/ │ └── events.jsonl ├── reports/ │ └── generated Markdown reports └── backups/ └── local backup files ``` NetSniper 遥测数据保留在: ``` ~/NetSniper/runs/ ``` ## 数据模型 DeltaAegis 将其本地状态存储在 SQLite 中。 核心数据包括: ``` snapshots asset_observations service_observations finding_observations delta_events asset_lifecycle alerts alert_notes asset_annotations asset_annotation_history ``` `delta_events` 表保留了仅追加的事件历史。 `alerts` 表维护有状态的、面向操作员的告警。 `alert_notes` 表记录分析师的审查决策。 `asset_annotations` 和 `asset_annotation_history` 表保留了资产所有者和上下文信息。 ## 验证 基本语法检查: ``` python3 -m py_compile deltaaegis.py ``` 基本运行时检查: ``` deltaaegis paths deltaaegis summary deltaaegis snapshots --limit 5 deltaaegis events --limit 5 deltaaegis alerts --limit 5 ``` 生成测试报告: ``` deltaaegis report --output /tmp/deltaaegis-report.md ``` ## 示例工作流 ``` deltaaegis ingest deltaaegis summary deltaaegis events --limit 20 deltaaegis alerts --status OPEN --limit 20 ``` 调查事件主体: ``` deltaaegis asset-timeline 'SUBJECT_KEY' ``` 标注已知资产: ``` deltaaegis annotate-asset 'SUBJECT_KEY' \ --owner "IT" \ --role "Internal service" \ --criticality "MEDIUM" \ --notes "Known service under review" ``` 审查告警: ``` deltaaegis alert-detail ALERT_ID deltaaegis ack ALERT_ID --reason "Reviewed and confirmed expected service exposure" ``` 生成报告: ``` deltaaegis report --output reports/investigation-report.md ``` ## 范围与限制 DeltaAegis v0.4.0 是一个网络状态监控、调查和风险优先级划分原型。 它不能替代企业级 SIEM。 DeltaAegis 目前不会: - 接收端点日志 - 无限期存储完整的数据包捕获 - 执行机器学习异常检测 - 发送电子邮件或聊天通知 - 提供 Web dashboard - 自动发现资产的业务所有者 - 取代人工分析师审查 其结论仅限于 NetSniper 提供的遥测数据和本地 DeltaAegis 数据库。 ## 仅限授权使用 仅在你拥有明确授权的网络和系统上使用 DeltaAegis。 DeltaAegis 旨在用于防御性监控、实验室验证、实习研究以及授权的安全评估工作流。 ## 相关项目 DeltaAegis 旨在与 NetSniper 遥测数据配合使用。 NetSniper 执行网络发现和扫描包生成。 DeltaAegis 接收这些数据包,并跟踪受监控网络随时间的变化情况。 ## 许可证 MIT 许可证。 请参阅 `LICENSE`。
标签:HTTP/HTTPS抓包, SQLite, 占用监测, 安全运营, 态势感知, 扫描框架, 时序数据库, 资产管理, 逆向工具, 防御加固