joshua-m-connors/cyber-incident-bn-pymc
GitHub: joshua-m-connors/cyber-incident-bn-pymc
融合 FAIR 风险框架与 MITRE ATT&CK 的贝叶斯网络风险量化引擎,通过蒙特卡洛模拟估算攻击成功频率和年度损失分布。
Stars: 0 | Forks: 0
# FAIR MITRE ATT&CK 贝叶斯风险模拟引擎
*一个集成了 MITRE ATT&CK、依赖感知控制强度以及混合贝叶斯网络 + Monte Carlo 攻击者模拟器的量化网络风险模型。*
## 概述
本仓库实现了一个先进的网络风险量化引擎,融合了:
- FAIR 风格的频率 × 影响幅度建模
- MITRE ATT&CK 技术级行为建模
- 用于估算攻击者成功率和检测概率的贝叶斯网络
- 包含重试、回退、适应性和检测的 Monte Carlo 攻击者路径模拟
- 控制依赖逻辑(组健康度、“requires”依赖关系、影响权重)
- 用于攻击者能力建模的技术相关性映射
该引擎旨在支持交互式分析以及自动化集成到更大的系统中。
## 目录结构
```
.
├── build_mitigation_influence_template.py
├── build_technique_relevance_template.py
├── cyber_incident_pymc.py
├── mitre_control_strength_dashboard.py
├── mitigation_control_strengths.csv
├── technique_relevance.csv
└── README.md
```
## 核心能力
这些能力源自原始 README,至今依然完全有效:
- 依赖感知的缓解强度计算
- 组健康度建模
- 影响权重
- 技术相关性提取
- 战术级回退模拟
- Monte Carlo 损失建模
- 泊松频率建模
- 对数正态损失严重性建模
- 灵活的 CSV 驱动配置
**新的贝叶斯模型并未移除或替换这些功能。**
# 贝叶斯网络增强功能(新增)
## 1. 技术级贝叶斯网络 (BN)
当技术级输入可用时,将构建一个完全动态的贝叶斯网络。
### BN 节点
- λ (lambda) — 年度攻击尝试频率
- 技术成功节点 — 每个 `(tactic, technique)` 对应一个
- 技术检测节点 — 每个技术对应一个
- 战术节点 — 技术成功的确定性 OR 逻辑
- 链条成功节点 — 所有相关战术节点的 AND 逻辑
技术先验概率源自有效的缓解强度,并结合依赖逻辑、组健康度和影响权重。
### 战术过滤
零相关技术的战术会自动从 BN 链中排除。
## 2. 混合 BN + 攻击者模拟(默认模式)
当存在技术输入时,模型使用混合方法:
### BN 提供
- 后验 λ
- 后验技术成功概率
- 后验技术检测概率
### Monte Carlo 引擎处理
- 技术选择
- 重试
- 适应性门控
- 检测增量
- 回退行为
- 最终链条成功
### 修正后的回退行为
- 仅在明确条件下触发
- 将攻击者向后移动一个战术
- 技术选择重新随机化(可能会重复之前的技术)
### 修正后的适应性行为
适应性不再修改成功概率。
它**仅**控制是否允许重试。
## 3. 检测建模
### BN 衍生的检测概率
如果可用,检测概率从技术 BN 后验节点中提取。
### 检测增量逻辑
每次尝试:
```
detect_prob += rng.uniform(DETECT_INC_MIN, DETECT_INC_MAX)
```
### 检测结果
如果 `rng.random() < detect_prob`,链条立即终止。
## 4. 自动模式选择
### 技术模式(BN 混合)— 默认
只要可以构建技术输入,即激活此模式。
### 战术模式(旧版回退)
仅在以下情况使用:
- 缺少技术相关性文件
- 缓解仪表板不可用
- 无法形成任何技术先验
## 5. 攻击者路径日志记录(可选)
`_simulate_attacker_path(record_path=True)` 返回:
```
(success: bool, path_log: List[Dict])
```
每个日志条目包括:
- tactic(战术)
- technique(技术)
- BN 衍生的成功概率
- BN 衍生的检测概率
- 重试次数
- 回退发生情况
- 每步结果
## 6. 控制依赖和组健康度集成
仪表板中的所有依赖逻辑现在会影响 BN 先验:
- 支持控制影响
- Requires 依赖
- 组健康度采样
- 影响权重
- 循环检测
- 纵深防御聚合
## 7. 更新后的输出
### 主要输出
- 年度损失分布
- 年度事件计数
- 后验 λ 分布
- 后验链条成功分布
### 可选输出
- 技术 BN 后验转储
- 攻击者路径日志(JSON 或 CSV)
# 运行模型
示例命令:
```
python cyber_incident_pymc.py \
--technique-relevance technique_relevance.csv \
--mitigation-strengths mitigation_control_strengths.csv
```
禁用随机适应性:
```
--no-adapt-stochastic
```
禁用随机影响减少:
```
--no-stochastic-impact
```
# 架构摘要
### 仪表板
处理所有控制依赖和缓解强度。
### 贝叶斯网络
构建 λ、技术成功/检测节点、战术聚合器和链条成功节点。
### 攻击者路径模拟
技术模式(默认)
战术模式(仅作回退)
### 年度损失引擎
结合 BN 后验与 Monte Carlo 推进模拟。
## 建议做法
1. 定期校准缓解范围
2. 使用相关性模板以专注于特定攻击者
3. 审查依赖和组定义以确保建模真实
4. 根据内部数据验证建模的 AAL 和 SLE
5. 对所有 CSV 输入进行版本控制以保留分析谱系
FAIR–MITRE ATT&CK 量化网络风险框架
版权所有 2025 Joshua M. Connors
根据 Apache 许可证 2.0 版本授权。
本软件包含来自 MITRE ATT&CK® 框架的公开数据。
标签:ATT&CK 导航器, Cloudflare, FAIR模型, MITRE ATT&CK, PyMC, Python, 严重性建模, 信息风险, 威胁建模, 安全度量, 损失预测, 攻击模拟, 数据科学, 无后门, 概率编程, 网络安全, 蒙特卡洛模拟, 贝叶斯网络, 资源验证, 逆向工具, 量化风险分析, 防御控制, 隐私保护, 频率分析, 驱动签名利用