GnomeMan4201/shenron
GitHub: GnomeMan4201/shenron
一个基于 Python 的防御性对抗遥测仿真平台,用于生成合成数据以安全测试检测管道和假设。
Stars: 0 | Forks: 0
# SHENRON
**可观测的对抗行为,而非可移植的对抗程序。**
一个基于Python的防御性对抗遥测仿真平台。SHENRON能在50个技术类别中生成结构化合成遥测数据,通过名为bananaTREE的四阶段活动模型组织:观察(OBSERVE)、模拟(SIMULATE)、执行(EXECUTE)、适应(ADAPT)。
每个制品都带有明确的安全契约。无实际网络调用,无子进程生成,无可执行负载,无向日志目录外写入文件。
## 安全边界
SHENRON不包含:
- 可执行负载或shellcode
- 真实网络连接或socket绑定
- 子进程生成或shell命令执行
- 向其自身日志目录外进行真实文件写入
- 任何形式的漏洞利用代码
这是架构约束,而非免责声明。安全验证器会扫描每个制品并标记违规。单次违规将产生 `VERDICT: UNSAFE`,无论覆盖率评分如何。
## 快速开始
```
git clone https://github.com/GnomeMan4201/shenron
cd shenron
python3 -m pytest tests/ -q
python3 shenron.py --run all --dry-run
python3 shenron.py --validate latest
```
## 可复现演示
一条命令生成完整的制品包:
```
python3 shenron.py --release-demo
```
输出 — `release/shenron-v0.3.3-demo/`:
```
shenron_demo_run.jsonl 40 synthetic telemetry events
shenron_demo_report.md human-readable run report
safety_verification.md safety contract field-by-field verification
navigator_layer.json ATT&CK Navigator import layer (synthetic)
shenron_demo_run_ecs.json ECS-formatted events
shenron_demo_run_ecs_bulk.ndjson Elastic bulk API format
shenron_demo_run_splunk_hec.json Splunk HEC format
narrative.md tactic profile narrative
charts/ 5 dark-mode PNGs
MANIFEST.md bundle index with import commands
```
每条记录都包含:
```
"safety": {
"simulation_only": true,
"executable": false,
"payload_present": false,
"portable_adversarial_procedure": false,
"network_connection": false,
"subprocess_spawned": false,
"real_file_written": false,
"shell_invoked": false
}
```
## 安全验证
检查任何JSONL制品的安全契约:
```
python3 shenron.py --verify-safety artifacts/demo/shenron_demo_run.jsonl
```
```
[RECORDS] 40
executable PASS
network_connection PASS
payload_present PASS
portable_adversarial_procedure PASS
real_file_written PASS
shell_invoked PASS
simulation_only PASS
subprocess_spawned PASS
[VERDICT] PASS
```
## bananaTREE活动模型
| 阶段 | 意图 |
|------|------|
| **观察** | 映射对抗信号表面 — C2、熵、身份模式 |
| **模拟** | 为检测器训练生成合成遥测数据 |
| **执行** | 运行仿真层,生成JSONL制品时间线 |
| **适应** | 评估检测覆盖率,识别差距 |
运行内置场景:
```
python3 shenron.py --scenarios
python3 shenron.py --scenario apt_kill_chain --dry-run
python3 shenron.py --scenario persistence_runbook --dry-run
```
内置场景:`basic_c2_persistence`、`recon_to_exfil`、`persistence_runbook`、`evasion_stress_test`、`apt_kill_chain`。
## 检测器验证
```
python3 shenron.py --validate latest
```
```
[VALIDATION] c2_shape_detection_test
[EXPECTED] 31
[OBSERVED] 31
[COVERAGE] 100.0%
[SAFETY FAIL] 0
[VERDICT] PASS
```
通过需要 ≥80% 覆盖率且零安全违规。
## 运行比较
比较两次运行以跟踪检测覆盖率随时间的变化:
```
python3 shenron.py --compare
python3 shenron.py --compare --narrate
python3 shenron.py --compare --navigator-out reports/gap_layer.json
```
`--narrate` 标志生成分析师语言的防御叙述,指出两次运行间缺失的具体战术族,为每个差距提供分析师关注的语言,并建议接下来应运行哪些场景。
示例输出 — `apt_kill_chain` 对比 `persistence_runbook`:
```
[NARRATIVE] apt_kill_chain → persistence_runbook
Coverage gap families (4):
✗ Command-and-Control
✗ Defense Evasion
✗ Lateral Movement
✗ Discovery
Primary concern:
If C2-shaped telemetry is not in your validation set, your detectors
have not been tested against the phase where most APT campaigns are
first visible — initial callback after compromise.
```
## 覆盖率假设审计
定义您认为您的检测栈覆盖了什么,然后根据合成遥测数据对其进行审计:
```
# 创建假设文件
cat > assumptions/my_assumption.yaml << 'EOF'
name: persistence_coverage_assumption
description: We can detect persistence-shaped adversarial telemetry
claims:
- "We can observe persistence-shaped telemetry"
- "We can detect suspicious scheduled task behavior"
expected_techniques:
- T1053.005
- T1543.003
- T1547.001
expected_signals:
- scheduled_task_creation
- service_install_signal
expected_phases:
- EXECUTE
EOF
# 审计它
python3 shenron.py --assumption assumptions/my_assumption.yaml \
--events artifacts/demo/shenron_demo_run.jsonl
```
SHENRON根据制品证据对每个声明进行评分,识别缺失的技术描述符,并生成一份带有“这证明了什么/这没有证明什么”章节的markdown报告。
示例输出:
```
[ASSUMPTION] persistence_coverage_assumption
[RECORDS] 40
Claims 0 supported 0 partial 2 unsupported
Techniques 3 observed 3 missing
Signals 2 observed 3 missing
[COVERAGE] 38.9%
[VERDICT] FAIL
```
完整示例文件见 `assumptions/examples/`。
## 覆盖率历史
跟踪您所有运行中的技术覆盖率漂移:
```
python3 shenron.py --coverage-history --out-dir reports/history
python3 shenron.py --coverage-history --history-campaign c2_shape_detection_test
```
输出:
- `coverage_history.md` — 每个活动的趋势表、漂移事件、技术集
- `coverage_history.json` — 机器可读的快照索引
- `coverage_history_trend.png` — 技术数量随时间变化的图表
通过8个活动中的256次运行,SHENRON可以显示您的检测信号词汇量在反复的验证运行中是扩展、收缩还是保持一致。
## 格式导出
将合成事件导出为您的SIEM可以摄入的格式:
```
# Elastic Common Schema
python3 shenron.py --export-format ecs \
--events artifacts/demo/shenron_demo_run.jsonl \
--out-dir artifacts/demo
# Splunk HEC
python3 shenron.py --export-format splunk \
--events artifacts/demo/shenron_demo_run.jsonl \
--out-dir artifacts/demo
```
Elastic导入:
```
curl -X POST 'http://localhost:9200/_bulk' \
-H 'Content-Type: application/x-ndjson' \
--data-binary @artifacts/demo/shenron_demo_run_ecs_bulk.ndjson
```
所有ECS事件都携带 `event.dataset: shenron.synthetic`、`labels.simulation_only: true`,以及完整安全契约在 `labels.*` 字段中。每个事件的 `message` 字段都包含 `[SHENRON SYNTHETIC]`。这些不是真实事件。
## 变体变异
测试您的分析流程对不完整、有噪声或错误标记的遥测数据是否脆弱:
```
python3 shenron.py --mutate \
--events artifacts/demo/shenron_demo_run.jsonl \
--out-dir artifacts/mutations
# 运行特定变异类型
python3 shenron.py --mutate \
--mutation-types field_drop,timing_jitter,label_ambiguity \
--events artifacts/demo/shenron_demo_run.jsonl
```
可用的变异类型:
| 类型 | 功能 | 测试目标 |
|------|------|----------|
| `field_drop` | 移除非关键字段 | 可选字段依赖 |
| `timing_jitter` | 添加随机时间戳偏移 | 对时序敏感的关联规则 |
| `label_ambiguity` | 用通用名称替换特定信号 | 信号特异性要求 |
| `signal_density_high` | 3倍记录复制 | 高容量突发处理 |
| `signal_density_low` | 丢弃50%的记录 | 稀疏遥测检测 |
| `phase_imbalance` | 将所有记录重新标记为单一阶段 | 阶段感知分析的脆弱性 |
| `technique_noise` | 添加不相关的技术ID | 基于MITRE关联的鲁棒性 |
所有安全变异类型都保留 `simulation_only: true`。`missing_safety_fields` 类型(仅限选择加入)会故意违反安全契约 — 仅与 `--verify-safety` 一起使用以测试契约验证。
变异后:
```
python3 shenron.py --verify-safety artifacts/mutations/mutation_field_drop.jsonl
```
## ATT&CK Navigator 导出
```
python3 shenron.py --navigator latest
python3 shenron.py --navigator --navigator-out reports/my_layer.json
# 比较差异层
python3 shenron.py --compare --navigator-out reports/gap_layer.json
```
在 https://mitre-attack.github.io/attack-navigator/ 导入 → 打开现有图层 → 上传文件。
Navigator 图层携带合成覆盖率元数据。它们代表来自合成遥测数据的MITRE风格描述符覆盖率 — 而非真实的ATT&CK验证。
## 完整工作流
```
# 1. 运行安全演示管道
python3 shenron.py --demo --charts --out-dir artifacts/demo
# 2. 验证安全契约
python3 shenron.py --verify-safety artifacts/demo/shenron_demo_run.jsonl
# 3. 导出为 SIEM 格式
python3 shenron.py --export-format ecs --events artifacts/demo/shenron_demo_run.jsonl
# 4. 运行场景
python3 shenron.py --scenario apt_kill_chain --dry-run
python3 shenron.py --scenario persistence_runbook --dry-run
# 5. 比较并叙述
python3 shenron.py --compare --narrate \
--navigator-out reports/gap_layer.json
# 6. 审计覆盖假设
python3 shenron.py --assumption assumptions/examples/persistence_coverage.yaml \
--events artifacts/demo/shenron_demo_run.jsonl
# 7. 跟踪覆盖历史
python3 shenron.py --coverage-history --out-dir reports/history
# 8. 生成变异变体
python3 shenron.py --mutate --events artifacts/demo/shenron_demo_run.jsonl
# 9. 构建完整发布包
python3 shenron.py --release-demo
```
## CLI参考
**演示和安全**
```
--demo Run safe 40-event demo pipeline
--charts Generate charts from demo JSONL (use with --demo)
--verify-safety [PATH] Verify safety contract on JSONL or 'latest'
--out-dir DIR Output directory (default: artifacts/demo)
--release-demo Build complete 9-file release artifact bundle
```
**场景和验证**
```
--scenario NAME Run a built-in or custom scenario
--scenarios List available scenarios
--run TARGET Run a layer, category, or 'all'
--dry-run Validate without executing
--validate [RUN_ID] Run detector validation
--report-v2 [RUN_ID] Generate markdown report
--include-validation Include validation results in report
```
**比较和分析**
```
--compare RUN_A RUN_B Diff two validation runs by run ID prefix
--narrate Generate analyst narrative from --compare
--navigator [RUN_ID] Export ATT&CK Navigator layer
--navigator-out PATH Output path for Navigator JSON
--assumption YAML_PATH Audit a coverage assumption file
--events JSONL_PATH JSONL events file for --assumption or --export-format
```
**历史和变异**
```
--coverage-history Build coverage trend report from all timeline runs
--history-campaign NAME Filter --coverage-history to a specific campaign
--mutate Generate safe telemetry mutation variants
--mutation-types TYPES Comma-separated mutation types (default: all safe)
```
**格式导出**
```
--export-format FORMAT Export events as ECS or Splunk HEC (ecs|splunk)
```
## SHENRON不做什么
- 测试网络层控制 — 不进行真实的网络调用
- 验证EDR行为检测 — 不发生真实的进程执行
- 替代需要真实执行的对抗性仿真
- 证明检测规则在生产遥测数据上触发
- 测量内核级制品的检测
- 替代红队
SHENRON测试遥测管道层:日志记录、SIEM摄入、关联规则、分析师工作流和检测假设。它是对抗性仿真的补充,而非替代。
## 测试
```
python3 -m pytest tests/ -q
```
283项测试。涵盖安全契约、格式适配器、假设审计、叙述引擎、覆盖率历史、变异引擎和验证评分。
## 项目结构
```
shenron.py CLI entrypoint
core/
engine/
scenario_engine.py bananaTREE campaign runner
layer_loader.py canonical layer discovery
payload_registry.py layer execution registry
reports/
evidence.py artifact loader, run parser
model.py report dataclasses
markdown.py markdown renderer
validation/
coverage.py detection coverage dataclasses
scorer.py validation scorer
expectations.py expected detection loader
safety/
contract.py shared safety contract — single source of truth
compare.py run comparison engine
navigator.py ATT&CK Navigator exporter
narration/
engine.py deterministic analyst-language narrative generator
assumption/
parser.py YAML assumption loader and validator
evaluator.py claim scorer against JSONL artifact records
reporter.py markdown + JSON report writer
formats/
adapter.py ECS and Splunk HEC format adapters
history/
tracker.py coverage trend tracking and drift detection
mutation/
engine.py 7 safe telemetry mutation variant generators
scripts/
generate_demo_artifacts.py safe 40-event JSONL generator
generate_charts.py publication chart generator
release_demo.py complete release bundle generator
assumptions/examples/ example assumption YAML files
scenarios/ custom scenario JSON files
tests/ 283 tests
```
## 版本
`v0.3.3` — 50个技术层 · 283项测试 · 零硬编码路径 · 通过判定
*gnomeman4201 / badBANANA研究集体*
标签:ATT&CK框架, Python框架, 事件生成, 合成数据生成, 多格式输出, 安全测试, 实验室模拟, 对抗模拟, 战役模型, 攻击性安全, 时序数据库, 红队研究, 网络安全, 逆向工具, 遥测模拟, 防御性安全, 隐私保护