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, 占用监测, 安全运营, 态势感知, 扫描框架, 时序数据库, 资产管理, 逆向工具, 防御加固