liliyke/miccmac-zt-readiness

GitHub: liliyke/miccmac-zt-readiness

基于 MICCMAC 七属性的零信任设备就绪度评估工具包,提供结构化评分框架与合规控制映射。

Stars: 0 | Forks: 0

# MICCMAC 零信任设备就绪工具包 ![status: alpha](https://img.shields.io/badge/status-alpha-orange) ![license: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue) ![python: 3.9+](https://img.shields.io/badge/python-3.9%2B-blue) ## 为什么会有这个项目 零信任架构(Zero Trust Architecture)假设没有隐式信任,并对每个请求进行验证。 但是,除非设备本身是可防御的,否则设备无法安全地参与零信任环境。一台无人监控、未打补丁且无人负责的笔记本电脑,绝不会仅仅因为在它前面部署了一个策略引擎就变得值得信任。 这个工具包使“设备就绪(device readiness)”变得可衡量。它根据可防御系统的七个 MICCMAC 属性对设备进行评估,并生成一份零信任就绪记分卡,包含针对每项发现的控制映射和修复指南。 ## 背景 **MICCMAC** 是 Richard Bejtlich 在其著作《*Defensible Network Architecture 2.0*》中描述的可防御系统的七个属性集合:一个可防御的系统必须是受监控的(**M**onitored)、已清点的(**I**nventoried)、受控的(**C**ontrolled)、已认领的(**C**laimed)、最小化的(**M**inimized)、已评估的(**A**ssessed)和最新的(**C**urrent)。 正如以下文献所述,本工具包将这些属性转化为零信任架构的实用、可衡量的设备就绪框架: MICCMAC 属性是 Richard Bejtlich 的原创工作。本工具包是一个独立的实现和零信任扩展;它**未**与 Bejtlich 先生有任何附属关系,也未获得其认可。 ## 七大属性 | 字母 | 属性 | 它回答的问题 | |---|---|---| | M | Monitored(受监控) | 设备的安全相关活动是否已被记录和监视? | | I | Inventoried(已清点) | 设备是否已知并在权威清单中被跟踪? | | C | Controlled(受控) | 配置和访问是否由强制执行策略进行集中治理? | | C | Claimed(已认领) | 设备是否有明确的责任所有者、管理员和用途? | | M | Minimized(最小化) | 攻击面是否已减少到设备实际所需的范围? | | A | Assessed(已评估) | 是否定期对设备进行漏洞和弱点评估? | | C | Current(最新) | 设备是否已打补丁、已更新,并且没有过期的加密材料? | 每个属性都在 [`data/control-mappings.yaml`](data/control-mappings.yaml) 中映射到了 NIST SP 800-207(零信任架构)、NIST SP 800-53 Rev 5 和 CIS Controls v8。 ## 安装 要求 Python 3.9 或更高版本。核心工具包仅使用标准库。 ``` git clone https://github.com/liliyke/miccmac-zt-readiness.git cd miccmac-zt-readiness python -m pip install -e . ``` ## 用法 ``` # 评估设备并打印文本报告 miccmac assess my-laptop-01 # 或者无需安装即可运行 python -m miccmac assess my-laptop-01 # Markdown 或 JSON 输出 miccmac assess my-laptop-01 --format markdown miccmac assess my-laptop-01 --format json # 将报告写入文件 miccmac assess my-laptop-01 --format markdown --output reports/my-laptop-01.md ``` ## 示例输出 ``` ================================================================ MICCMAC ZERO TRUST DEVICE READINESS ASSESSMENT ================================================================ Target : my-laptop-01 Overall score : 71.4/100 Readiness tier : Defensible ================================================================ M Monitored (87.5/100) ------------------------------------------------------------ [PASS] MON-01 Endpoint security logging enabled [PASS] MON-02 Logs forwarded to a centralized SIEM / log platform [PART] MON-03 EDR / endpoint telemetry agent installed and healthy [PASS] MON-04 Audit policy covers authentication, privilege, and process events ... ``` 完整的示例报告位于 [`examples/sample-report.md`](examples/sample-report.md)。 ## 评分机制 每次检查都会返回 `PASS`、`PARTIAL`、`FAIL`、`NOT_APPLICABLE`,或者(在当前的初始框架中)`NOT_IMPLEMENTED`。属性得分是其可评分检查项的平均值(`PASS` = 100,`PARTIAL` = 50,`FAIL` = 0)。整体得分是各属性得分的平均值,对应到相应的就绪等级: | 整体得分 | 就绪等级 | |---|---| | 90 - 100 | Zero Trust Ready(零信任就绪) | | 70 - 89 | Defensible(可防御) | | 40 - 69 | Developing(发展中) | | 0 - 39 | Not Ready(未就绪) | 评分和等级阈值已在 [`docs/methodology.md`](docs/methodology.md) 中记录,并且可以进行自定义调整。 ## 项目状态 本代码库是一个 **alpha 脚手架** —— v0.1.0。框架、评分引擎、控制映射、报告和 CLI 已完成并可正常工作。`miccmac/checks/` 中的各个设备检查目前为占位符(`NOT_IMPLEMENTED`),已准备好接入真实的检测逻辑。 ### 目前可用的功能 | 组件 | 状态 | |---|---| | CLI (`miccmac assess `) | 正常工作 — Python 3.9+,仅依赖标准库 | | 引擎、评分、就绪等级 | 正常工作 | | 文本 / Markdown / JSON 渲染器 | 正常工作 | | 7 个属性模块及 26 个命名检查项 | 已定义,包含控制参考 | | 每个检查项的 NIST 800-207 / 800-53 / CIS v8 映射 | 已完成(见 [`data/control-mappings.yaml`](data/control-mappings.yaml)) | ### 尚未发布的功能 - **没有目标连接器。** 目前没有任何功能连接到真实主机。`target` 参数目前仅仅是一个打印在报告头部的标签。 - **没有 OS 检测或分支判断。** 每个检查都是一个单一的函数,不知道目标系统是 Windows、Linux、macOS 还是云平台。 - **没有检查主体逻辑。** 所有 26 个检查均返回 `Status.NOT_IMPLEMENTED`。 - **没有资产清点或 EDR / MDM / 云 API 客户端。** 因此,运行冒烟测试(`python -m miccmac assess test-device`)会打印出真实评估的*结构*,但实际上并没有检查任何东西。这个结构 —— 属性、检查、控制参考、评分、等级 —— 就是我们的核心贡献。检测机制是与具体环境相关的。 ### 架构(设计上与 OS 无关) `engine.run_assessment(target, context)` 会向每个检查模块传递一个自由格式的 `context` 字典。其文档字符串如下: 那个 `context` 就是系统的扩展接缝。真实的实现会在引擎的*上游*收集有关目标的事实信息并将其传入: ``` from miccmac.engine import run_assessment facts = { "os": "windows", "hostname": "wks-12", "sysmon": {"installed": True, "version": "15.14"}, "edr": {"vendor": "defender", "healthy": True}, "patches": {"latest_install_date": "2026-05-20"}, # ... whatever your fact-collector produces } assessment = run_assessment("wks-12", context={"facts": facts}) ``` 然后,每个检查会根据 `facts["os"]`(或者您选择的任何事实模式)进行分支处理,并调用特定于平台的检测逻辑。如果某个检查确实不适用于给定平台,请返回 `Status.NOT_APPLICABLE`,这样它将被排除在评分之外,而不是直接判定为失败。 ### 走向真实实现的路线图 | 层级 | 需要添加的内容 | 添加位置 | |---|---|---| | **目标连接器** | SSH / WinRM / EDR API / MDM API / “本地运行”客户端 | 新的 `miccmac/connectors/` 包 | | **OS 检测器** | 检测平台,填充 `context["facts"]["os"]` | 在连接器内部,在调用 `run_assessment` 之前 | | **特定 OS 的检查主体** | 用真实的评估逻辑替换 `NOT_IMPLEMENTED` 占位符 | 在各个 `miccmac/checks/*.py` 内部 | | **清点 / 资产查询** | 查询您的 CMDB(ServiceNow, Snipe-IT, Intune 等) | 由连接器层提供事实数据 | | **云端变体** | AWS SSM Inventory, Azure Arc, GCP OS Config,而不是直接访问主机 | 独立的云感知连接器 | ### 投入产出比最高的首个具体目标 选择您已经在实验室中拥有的环境。合理的首选目标包括: - **Linux + osquery** —— 通过 `osquery` 针对 `system_info`、`os_version` 和 `programs` 执行查询以实现 `INV-01..04`;通过检查 `/etc/rsyslog.d/`、`auditctl -l` 以及 EDR 代理的 PID 来实现 `MON-01..04`。 - **Windows + Sysmon + Defender** —— 通过检查 Sysmon 驱动程序和解析的配置来实现 `MON-03`;通过 WinRM 执行 `Get-Package` 实现 `INV-03`;通过 Windows Update 历史记录(`Get-HotFix`)实现 `CUR-01`。 - **macOS + Jamf / Kandji** —— 通过 MDM API 实现 `INV-*`;通过检查配置文件实现 `CTL-*`。 实现一个平台上的某个属性相关的所有检查(例如 Linux 上所有四个 `monitored` 检查),发布 v0.2.0,然后以此为基础逐步扩展。 我们非常欢迎针对任何平台的贡献 —— 请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md)。 ## 代码库布局 ``` miccmac-zt-readiness/ miccmac/ Python package cli.py command-line interface engine.py runs checks, scores, builds the assessment report.py text / markdown / JSON rendering model.py data model (CheckResult, PropertyResult, ...) checks/ one module per MICCMAC property data/control-mappings.yaml property -> 800-207 / 800-53 / CIS v8 docs/methodology.md framework and scoring methodology examples/sample-report.md tests/ unit tests ``` ## 引用本作品 如果您使用了此工具包或该框架,请**同时**引用软件和论文。机器可读的引用信息位于 [`CITATION.cff`](CITATION.cff) 中。 **论文:** Ojeh, I. (2025). *Getting Devices Ready for Zero Trust Architecture by Complying with Richard Bejtlich's MICCMAC Framework.* ECCWS 2025. DOI: [10.34190/eccws.24.1.3531](https://doi.org/10.34190/eccws.24.1.3531) **软件:** 请引用 GitHub 代码库,或者一旦发布版本归档后,请引用 Zenodo DOI。 ## 许可证 Apache License 2.0。请参阅 [`LICENSE`](LICENSE)。 ## 作者 Isaac Ojeh —— 网络安全从业者兼研究员。本项目是作为 MICCMAC 零信任设备就绪框架的参考实现而开发的。
标签:Python, 关系图谱, 反取证, 基线检查, 安全评估, 文档结构分析, 无后门, 终端安全, 逆向工具, 零信任架构