Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Dop2Mop — DevOps에서 MLOps 인프라로 이어지는 공격 경로를 매핑하는 BloodHound용 OpenGraph 수집기로, CI/CD 파이프라인, 서비스 주체 및 ML 플랫폼 리소스를 수집하여 측면 이동 분석을 수행합니다. | Kitploit
도구/GitHubGitHub/h4wkst3r/dop2mop
Cloud Infrastructure SecurityReconnaissanceContainer SecurityVulnerability AnalysisInformation GatheringPenetration TestingCloud SecurityDevSecOpsIdentity & Access Management (IAM)Supply Chain SecurityRed Teaming
41205개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubh4wkst3r/dop2mop

Dop2Mop

DevOps에서 MLOps 인프라로 이어지는 공격 경로를 매핑하는 BloodHound용 OpenGraph 수집기로, CI/CD 파이프라인, 서비스 주체 및 ML 플랫폼 리소스를 수집하여 측면 이동 분석을 수행합니다.

저장소 보기

Dop2Mop

BloodHound를 위한 개념 증명 OpenGraph 수집기로, DevOps에서 MLOps 인프라로 이어지는 공격 경로를 매핑합니다.

Brett Hawkins(@h4wkst3r)의 Pipelines of Privilege: Attack Paths from DevOps to MLOps Infrastructure를 기반으로 합니다.

목차

  • 감사의 말
  • 개요
    • 지원 플랫폼
    • 매핑된 신뢰 경계
  • 설치
    • 선택적 종속성
  • 빠른 시작
    • 데모 데이터 생성
    • BloodHound로 수집
  • 설정
    • 설정 파일
    • 자격 증명 검증
  • CLI 참조
    • 명령 개요
    • 전역 옵션
    • dop2mop collect
    • dop2mop demo
  • CLI 사용 예제
    • 기본 수집
    • 단일 플랫폼 수집
    • 다중 플랫폼 수집
    • GitHub 수집 예제
    • Azure DevOps 수집 예제
    • Azure ML 수집 예제
    • AWS SageMaker 수집 예제
    • 전체 환경 수집
  • 환경 변수
  • 노드 유형
    • DevOps 노드
    • MLOps 노드
    • ID 노드
    • 아티팩트 노드
  • 엣지 유형
    • 공격 경로 엣지
    • 구조적 엣지
  • 예제 쿼리
  • 사용자 정의 아이콘
    • BloodHound에 아이콘 업로드
  • Python API
    • 개별 수집기 사용
    • 사용자 정의 그래프 구축
  • 문제 해결
    • 일반적인 문제
  • 라이선스

감사의 말

  • BloodHound와 OpenGraph를 제공한 SpecterOps

개요

Dop2Mop은 DevOps 및 MLOps 플랫폼에서 데이터를 수집하여 CI/CD 파이프라인에서 기계 학습 훈련 인프라로의 측면 이동을 가능하게 하는 공격 경로를 식별합니다. 시각화 및 분석을 위해 BloodHound와 호환되는 OpenGraph JSON을 출력합니다.

지원 플랫폼

DevOps 플랫폼MLOps 플랫폼ID 공급자
GitHub (Actions, Repos, Secrets)Azure Machine LearningAzure AD Service Principals
Azure DevOps (Pipelines, Service Connections)Amazon SageMakerAWS IAM Roles
OIDC/Federated Identity

매핑된 신뢰 경계

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로 질의:
MATCH (n:Group {name: "DOMAIN [email protected]"})
CALL {
  WITH n
  OPTIONAL MATCH (n)-[:MemberOf]->(g:Group)
  RETURN collect(g.name) AS groupMembership
}
CALL {
  WITH n
  OPTIONAL MATCH (n)-[:AdminTo]->(c:Computer)
  RETURN collect(c.name) AS adminTo
}
CALL {
  WITH n
  OPTIONAL MATCH (n)-[:HasSession]->(c:Computer)
  RETURN collect(c.name) AS hasSession
}
RETURN n.name AS groupName, groupMembership, adminTo, hasSession
``````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

Configuration

Config File

매번 실행할 때마다 자격 증명을 전달하는 대신, 설정 파일에 저장할 수 있습니다. 포함된 예제를 복사하여 값을 입력하세요:```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](https://github.com/h4wkst3r/dop2mop/blob/main/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, ghGitHubCollector
ado, azuredevops, azure-devopsAzureDevOpsCollector
azureml, azure-mlAzureMLCollector
sagemaker, smSageMakerCollector

These are equivalent:

dop2mop collect --collectors GitHubCollector,SageMakerCollector dop2mop collect --collectors github,sagemaker dop2mop collect --collectors gh,sm

---

## CLI 참조

### 명령어 개요```
dop2mop <command> [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 FILE` | YAML/JSON 설정 파일 경로 |
| `--validate` | 수집 전 자격 증명 검증 |
| `--collectors LIST` | 쉼표로 구분된 수집기 또는 별칭 목록 (예: `github,sm`) |
| `--max-items N` | 유형별 최대 수집 항목 수 |
| `--no-secrets` | 비밀/자격 증명 열거 건너뛰기 |

#### GitHub 옵션

| 옵션 | 설명 |
|--------|-------------|
| `--github-token TOKEN` | GitHub 개인 액세스 토큰 |
| `--github-org ORG` | GitHub 조직 이름 |
| `--github-enterprise-url URL` | GitHub Enterprise Server URL |

#### Azure DevOps 옵션

| 옵션 | 설명 |
|--------|-------------|
| `--azure-devops-token TOKEN` | Azure DevOps 개인 액세스 토큰 (PAT) |
| `--azure-devops-access-token TOKEN` | Azure DevOps 액세스 토큰 (Bearer 인증, 선택 사항) |
| `--azure-devops-org ORG` | Azure DevOps 조직 이름 |
도구 다운로드