Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Dop2Mop — OpenGraph 收集器,用于 BloodHound,可映射从 DevOps 到 MLOps 基础设施的攻击路径,收集 CI/CD 管道、服务主体和 ML 平台资源,以进行横向移动分析。 | Kitploit
工具/GitHubGitHub/h4wkst3r/dop2mop
云基础设施安全侦察容器安全漏洞分析信息收集渗透测试云安全DevSecOps身份与访问管理 (IAM)供应链安全红队
41236个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
h4wkst3r/dop2mop

Dop2Mop

OpenGraph 收集器,用于 BloodHound,可映射从 DevOps 到 MLOps 基础设施的攻击路径,收集 CI/CD 管道、服务主体和 ML 平台资源,以进行横向移动分析。

查看仓库

Dop2Mop

一个概念验证的OpenGraph收集器,用于BloodHound,映射从DevOps到MLOps基础设施的攻击路径。

基于Brett Hawkins(@h4wkst3r)的《从DevOps到MLOps基础设施的攻击路径:特权管道》。

目录

  • 致谢
  • 概述
    • 支持的平台
    • 映射的信任边界
  • 安装
    • 可选依赖
  • 快速开始
    • 生成演示数据
    • 导入BloodHound
  • 配置
    • 配置文件
    • 凭据验证
  • CLI参考
    • 命令概述
    • 全局选项
    • dop2mop collect
    • dop2mop demo
  • CLI使用示例
    • 基本收集
    • 单一平台收集
    • 多平台收集
    • GitHub收集示例
    • Azure DevOps收集示例
    • Azure ML收集示例
    • AWS SageMaker收集示例
    • 全环境收集
  • 环境变量
  • 节点类型
    • DevOps节点
    • MLOps节点
    • 身份节点
    • 工件节点
  • 边类型
    • 攻击路径边
    • 结构边
  • 示例查询
  • 自定义图标
    • 上传图标到BloodHound
  • Python API
    • 使用单个收集器
    • 构建自定义图
  • 故障排除
    • 常见问题
  • 许可证

致谢

  • SpecterOps 为BloodHound和OpenGraph

概述

Dop2Mop从DevOps和MLOps平台收集数据,以识别能够实现从CI/CD管道横向移动到机器学习训练基础设施的攻击路径。它输出兼容BloodHound的OpenGraph JSON,用于可视化和分析。

支持的平台

DevOps平台MLOps平台身份提供商
GitHub(Actions、仓库、机密)Azure机器学习Azure AD服务主体
Azure DevOps(管道、服务连接)Amazon SageMakerAWS IAM角色
OIDC/联合身份

映射的信任边界

Dop2Mop建模了研究中识别的五个关键信任边界:

  1. TB1:代码仓库到CI/CD管道 - 代码提交自动触发管道
  2. TB2:服务主体认证 - 管道用于访问ML平台的NHI凭据
  3. TB3:容器工件信任 - 对内部注册表中容器镜像的隐式信任
  4. TB4:作业定义执行 - ML平台执行作业定义时未经验证
  5. TB5:代码反序列化 - 数据集的不安全反序列化(pickle、joblib)

安装```bash

git clone https://github.com/h4wkst3r/dop2mop.git cd dop2mop pip install -r requirements.txt pip install -e .

## 收集内容

每个收集器收集平台特定的资源,并映射它们之间的信任边界:

| 收集器 | 收集的资源 |
|-----------|-------------------|
| **GitHub** | 组织、仓库、工作流、密钥、分支保护规则、OIDC配置、容器镜像引用、S3存储桶引用 |
| **Azure DevOps** | 组织、项目、流水线(YAML)、服务连接(含范围详情)、变量组、代理池、仓库 |
| **Azure ML** | 工作区、计算集群/实例、数据存储、ML环境、已注册模型、作业/实验、在线和批量端点 |
| **SageMaker** | 训练作业、模型、端点、域、笔记本实例、IAM执行角色(含策略分析)、ECR仓库/镜像、S3存储桶(仅限ML相关) |

## 快速开始

### 生成演示数据

查看Dop2Mop效果的最快方式是生成演示数据,展示研究中的攻击场景:```bash
dop2mop demo -o demo.json

导入到BloodHound

  1. 打开BloodHound CE(v8.0+)
  2. 导航至管理 → 文件导入
  3. 上传生成的JSON文件
  4. 使用Cypher查询:```cypher // Azure DevOps to Azure ML Lateral Movement MATCH p=(repo)-[:TriggersPipeline]->(pipeline)-[:UsesServiceConnection]->(svcconn)-[:AuthenticatesAs]->(workspace)-[:CodeExecution]->(compute) RETURN p

// Container Image Poisoning (Supply Chain Attack) MATCH p=(workflow)-[:CanPoisonImage]->(image)<-[:PullsImage]-(job) RETURN p

// OIDC/Federated Identity Abuse (confirmed edges) MATCH p=(workflow)-[:OIDCTrust]->(oidc)-[:CanAssumeRole]->(role)-[:SubmitsJob]->(job) RETURN p

// OIDC abuse including inferred paths MATCH p=(workflow)-[:OIDCTrust]->(oidc)-[:InferredCanAssumeRole]->(role) RETURN p

// Dataset Poisoning via Pickle Deserialization MATCH p=(workflow)-[:CanPoisonDataset]->(dataset)<-[:LoadsDataset]-(job) RETURN p

// Find repos with weak/no branch protection (TB1 exploitable) MATCH (repo)-[:BypassesProtection]->(repo) RETURN repo.name, repo.default_branch

// Find overprivileged SageMaker IAM roles MATCH (role:IAMRole) WHERE role.is_admin = true OR role.has_s3_full_access = true RETURN role.name, role.attached_policies

// Find SageMaker notebooks with root + internet access MATCH (nb:SMNotebook) WHERE nb.root_access = 'Enabled' AND nb.direct_internet_access = 'Enabled' RETURN nb.name, nb.status

// Find self-hosted ADO agent pools MATCH (agent:ADOAgent) WHERE agent.is_hosted = false RETURN agent.name, agent.pool_type

---

## 配置

### 配置文件

与其每次运行时都传递凭据,不如将它们保存在配置文件中。复制附带的示例并填入你的值:```bash
cp dop2mop.yaml.example dop2mop.yaml
# Edit dop2mop.yaml with your credentials

Dop2Mop 按顺序检查以下位置:

  1. 由 --config 指定的路径
  2. 当前目录下的 dop2mop.yaml / dop2mop.yml / .dop2mop.yaml
  3. ~/.dop2mop.yaml

注意: dop2mop.yaml 已加入 .gitignore,以防止意外提交凭据。示例文件 (dop2mop.yaml.example) 可安全提交。

请参阅 dop2mop.yaml.example 查看所有可用选项及注释。

优先级顺序: CLI 参数 > 配置文件 > 环境变量。

凭据验证

在运行完整收集之前,先测试凭据:```bash

Validate all configured collectors

dop2mop collect --validate -v

Validate specific collectors

dop2mop collect --validate --collectors github,sagemaker -v

这会为每个平台进行轻量级 API 调用,以在开始收集前验证令牌是否有效。

### 收集器别名

你可以使用短名称代替完整的类名与 `--collectors` 参数配合使用:

| 别名 | 收集器 |
|-------|-----------|
| `github`, `gh` | GitHubCollector |
| `ado`, `azuredevops`, `azure-devops` | AzureDevOpsCollector |
| `azureml`, `azure-ml` | AzureMLCollector |
| `sagemaker`, `sm` | SageMakerCollector |```bash
# These are equivalent:
dop2mop collect --collectors GitHubCollector,SageMakerCollector
dop2mop collect --collectors github,sagemaker
dop2mop collect --collectors gh,sm

CLI 参考

命令概览```

dop2mop [options]

Commands: collect Collect data from DevOps/MLOps platforms demo Generate demo data with attack scenarios

### 全局选项

| 选项 | 描述 |
|--------|-------------|
| `-v, --verbose` | 启用详细输出(INFO 级别日志记录) |
| `--debug` | 启用调试输出(DEBUG 级别日志记录) |

---

### `dop2mop collect`

从配置的 DevOps 和 MLOps 平台收集数据。```bash
dop2mop collect [OPTIONS]

常规选项

选项描述
-o, --output FILE输出文件路径(默认:dop2mop_output.json)
--zip将输出压缩为 ZIP 文件
--config FILEYAML/JSON 配置文件路径
--validate在收集前验证凭据
--collectors LIST逗号分隔的收集器或别名列表(如 github,sm)
--max-items N每类收集的最大项目数
--no-secrets跳过密钥/凭据枚举

GitHub 选项

选项描述
--github-token TOKENGitHub 个人访问令牌
--github-org ORGGitHub 组织名称
--github-enterprise-url URLGitHub 企业版服务器 URL

Azure DevOps 选项

选项描述
--azure-devops-token TOKENAzure DevOps 个人访问令牌 (PAT)
--azure-devops-access-token TOKENAzure DevOps 访问令牌(Bearer 认证,可选)
--azure-devops-org ORGAzure DevOps 组织名称

Azure ML 选项

选项描述
--azure-subscription-id IDAzure 订阅 ID
--azure-tenant-id IDAzure AD 租户 ID
--azure-client-id ID服务主体客户端 ID(可选)
--azure-client-secret SECRET服务主体客户端密钥(可选)
--azure-access-token TOKENAzure ML 认证所用的 Azure 访问令牌(可选)

AWS SageMaker 选项

选项描述
--aws-access-key-id KEYAWS 访问密钥 ID
--aws-secret-access-key SECRETAWS 秘密访问密钥
--aws-region REGIONAWS 区域(默认:us-east-1)
--aws-profile PROFILEAWS CLI 配置文件名称

可用收集器

收集器名称平台所需凭据
GitHubCollectorGitHub--github-token, --github-org
AzureDevOpsCollectorAzure DevOps--azure-devops-token 或 --azure-devops-access-token, --azure-devops-org
AzureMLCollectorAzure ML--azure-subscription-id, --azure-tenant-id
SageMakerCollectorAWS SageMaker--aws-profile 或 --aws-access-key-id

dop2mop demo

生成演示数据,展示研究中的四种攻击场景。```bash dop2mop demo [OPTIONS]

| Option | 描述 |
|--------|------|
| `-o, --output FILE` | 输出文件路径(默认:`dop2mop_demo.json`) |

---

### `dop2mop icons`

为 BloodHound 节点类型生成自定义图标配置。```bash
dop2mop icons [OPTIONS]
选项描述
-o, --output FILE输出文件路径(默认:dop2mop_icons.json)

CLI 使用示例

下载工具