Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Dop2Mop — OpenGraph collector for BloodHound जो DevOps से MLOps बुनियादी ढांचे तक हमले के रास्तों का मानचित्रण करता है, पार्श्व गति विश्लेषण के लिए CI/CD पाइपलाइन, सेवा प्रमुख, और ML प्लेटफ़ॉर्म संसाधनों को एकत्र करता है। | Kitploit
उपकरण/GitHubGitHub/h4wkst3r/dop2mop
क्लाउड इन्फ्रास्ट्रक्चर सुरक्षाटोहीकंटेनर सुरक्षाभेद्यता विश्लेषणजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगक्लाउड सुरक्षाDevSecOpsपहचान और एक्सेस प्रबंधन (IAM)आपूर्ति श्रृंखला सुरक्षारेड टीमिंग
414 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
GitHub
h4wkst3r/dop2mop

Dop2Mop

OpenGraph collector for BloodHound जो DevOps से MLOps बुनियादी ढांचे तक हमले के रास्तों का मानचित्रण करता है, पार्श्व गति विश्लेषण के लिए CI/CD पाइपलाइन, सेवा प्रमुख, और ML प्लेटफ़ॉर्म संसाधनों को एकत्र करता है।

रिपॉजिटरी देखें

Dop2Mop

BloodHound के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट OpenGraph संग्राहक जो DevOps से MLOps बुनियादी ढांचे तक हमले के पथों का मानचित्रण करता है।

विशेषाधिकार की पाइपलाइन: DevOps से MLOps बुनियादी ढांचे तक हमले के पथ द्वारा Brett Hawkins (@h4wkst3r) पर आधारित।

विषय सूची

  • स्वीकृतियाँ
  • अवलोकन
    • समर्थित प्लेटफ़ॉर्म
    • मैप किए गए विश्वास सीमाएँ
  • स्थापना
    • वैकल्पिक निर्भरताएँ
  • त्वरित आरंभ
    • डेमो डेटा उत्पन्न करें
    • 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, Repos, Secrets)Azure Machine LearningAzure 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 .

root@kitploit:~
## क्या एकत्र किया गया

प्रत्येक संग्राहक प्लेटफ़ॉर्म-विशिष्ट संसाधनों को एकत्रित करता है और उनके बीच विश्वास सीमाओं का मानचित्रण करता है:

| संग्राहक | एकत्रित संसाधन |
|-----------|-------------------|
| **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

root@kitploit:~
---

## कॉन्फ़िगरेशन

### कॉन्फ़िग फ़ाइल

हर बार क्रेडेंशियल पास करने के बजाय, आप उन्हें एक कॉन्फ़िग फ़ाइल में सहेज सकते हैं। शामिल उदाहरण को कॉपी करें और अपने मान भरें:```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

root@kitploit:~
यह प्रत्येक प्लेटफ़ॉर्म के लिए एक हल्की 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

root@kitploit:~
### वैश्विक विकल्प

| विकल्प | विवरण |
|--------|-------------|
| `-v, --verbose` | वर्बोज़ आउटपुट सक्षम करें (INFO स्तर लॉगिंग) |
| `--debug` | डीबग आउटपुट सक्षम करें (DEBUG स्तर लॉगिंग) |

---

### `dop2mop collect`

कॉन्फ़िगर किए गए DevOps और MLOps प्लेटफ़ॉर्म से डेटा एकत्र करें।```bash
dop2mop collect [OPTIONS]

सामान्य विकल्प

GitHub विकल्प

विकल्पविवरण
--github-token TOKENGitHub व्यक्तिगत एक्सेस टोकन
--github-org ORGGitHub संगठन का नाम
--github-enterprise-url URLGitHub Enterprise Server URL

Azure DevOps विकल्प

विकल्पविवरण
--azure-devops-token TOKENAzure DevOps व्यक्तिगत एक्सेस टोकन (PAT)
--azure-devops-access-token TOKENAzure DevOps एक्सेस टोकन (Bearer auth, वैकल्पिक)
--azure-devops-org ORGAzure DevOps संगठन का नाम

Azure ML विकल्प

AWS SageMaker विकल्प

विकल्पविवरण

उपलब्ध कलेक्टर


dop2mop demo

शोध के चार हमले परिदृश्यों को दर्शाने वाला डेमो डेटा जनरेट करें।```bash dop2mop demo [OPTIONS]

root@kitploit:~
| Option | विवरण |
|--------|-------------|
| `-o, --output FILE` | आउटपुट फ़ाइल पथ (डिफ़ॉल्ट: `dop2mop_demo.json`) |

---

### `dop2mop icons`

BloodHound नोड प्रकारों के लिए कस्टम आइकन कॉन्फ़िगरेशन उत्पन्न करें।```bash
dop2mop icons [OPTIONS]
विकल्पविवरण
-o, --output FILEआउटपुट फ़ाइल पथ (डिफ़ॉल्ट: dop2mop_icons.json)

CLI उपयोग उदाहरण

मूल संग्रह```bash

Collect from all configured platforms (uses environment variables)

dop2mop collect -o output.json

Use a config file

dop2mop collect --config dop2mop.yaml -o output.json -v

Validate credentials first, then collect

dop2mop collect --validate -o output.json -v

Collect with verbose logging

dop2mop collect -o output.json -v

Collect with debug logging

dop2mop collect -o output.json --debug

Collect and compress to ZIP

dop2mop collect -o output.json --zip

Limit collection size

dop2mop collect --max-items 100 -o output.json

Skip secret enumeration

dop2mop collect --no-secrets -o output.json

root@kitploit:~
### एकल प्लेटफ़ॉर्म संग्रह```bash
# GitHub only (aliases: github, gh)
dop2mop collect --collectors github -o github.json -v

# Azure DevOps only (aliases: ado, azuredevops)
dop2mop collect --collectors ado -o ado.json -v

# Azure ML only (aliases: azureml, azure-ml)
dop2mop collect --collectors azureml -o azureml.json -v

# SageMaker only (aliases: sagemaker, sm)
dop2mop collect --collectors sm -o sagemaker.json -v

बहु-प्लेटफ़ॉर्म संग्रह```bash

GitHub + SageMaker

dop2mop collect --collectors github,sagemaker -o output.json -v

GitHub + Azure DevOps

dop2mop collect --collectors github,ado -o output.json -v

Azure DevOps + Azure ML (full Azure stack)

dop2mop collect --collectors ado,azureml -o azure.json -v

All collectors explicitly

dop2mop collect --collectors github,ado,azureml,sagemaker -o full.json -v

root@kitploit:~
### GitHub संग्रह उदाहरण```bash
# Using environment variables
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"
export GITHUB_ORG="your-org"
dop2mop collect --collectors GitHubCollector -o github.json -v

# Using command-line arguments
dop2mop collect --collectors GitHubCollector \
  --github-token ghp_xxxxxxxxxxxx \
  --github-org your-org \
  -o github.json -v

# GitHub Enterprise Server
dop2mop collect --collectors GitHubCollector \
  --github-token ghp_xxxxxxxxxxxx \
  --github-org your-org \
  --github-enterprise-url https://github.yourcompany.com/api/v3 \
  -o github.json -v

# Skip secret enumeration
dop2mop collect --collectors GitHubCollector \
  --github-token ghp_xxxxxxxxxxxx \
  --github-org your-org \
  --no-secrets \
  -o github.json -v

# Limit to 50 repositories
dop2mop collect --collectors GitHubCollector \
  --github-token ghp_xxxxxxxxxxxx \
  --github-org your-org \
  --max-items 50 \
  -o github.json -v

Azure DevOps संग्रह उदाहरण```bash

Using environment variables

export AZURE_DEVOPS_TOKEN="your-pat" export AZURE_DEVOPS_ORG="your-org" dop2mop collect --collectors AzureDevOpsCollector -o ado.json -v

Using command-line arguments (PAT)

dop2mop collect --collectors AzureDevOpsCollector
--azure-devops-token your-pat
--azure-devops-org your-org
-o ado.json -v

Using access token (Bearer auth)

dop2mop collect --collectors AzureDevOpsCollector
--azure-devops-access-token eyJ0...
--azure-devops-org your-org
-o ado.json -v

root@kitploit:~
> **नोट:** Azure DevOps प्रमाणीकरण प्राथमिकता: access token (Bearer) > PAT (Basic)।
> Access tokens को `az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798` के माध्यम से प्राप्त किया जा सकता है।

### Azure ML संग्रह उदाहरण```bash
# Using environment variables
export AZURE_SUBSCRIPTION_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export AZURE_TENANT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
dop2mop collect --collectors AzureMLCollector -o azureml.json -v

# Using DefaultAzureCredential (az login)
dop2mop collect --collectors AzureMLCollector \
  --azure-subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --azure-tenant-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  -o azureml.json -v

# Using Service Principal
dop2mop collect --collectors AzureMLCollector \
  --azure-subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --azure-tenant-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --azure-client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --azure-client-secret your-secret \
  -o azureml.json -v

# Using Access Token
dop2mop collect --collectors AzureMLCollector \
  --azure-subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --azure-tenant-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --azure-access-token eyJ0... \
  -o azureml.json -v

नोट: Azure ML प्रमाणीकरण प्राथमिकता: access token > service principal > DefaultAzureCredential (az login). एक्सेस टोकन az account get-access-token --resource https://management.azure.com/ के माध्यम से प्राप्त किए जा सकते हैं।

AWS SageMaker Collection Examples```bash

Using AWS profile (environment variable)

export AWS_PROFILE="your-profile" dop2mop collect --collectors SageMakerCollector -o sagemaker.json -v

Using AWS profile (command-line)

dop2mop collect --collectors SageMakerCollector
--aws-profile your-profile
-o sagemaker.json -v

Using access keys

dop2mop collect --collectors SageMakerCollector
--aws-access-key-id AKIAXXXXXXXXXXXXXXXX
--aws-secret-access-key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--aws-region us-east-1
-o sagemaker.json -v

Different AWS region

dop2mop collect --collectors SageMakerCollector
--aws-profile your-profile
--aws-region us-west-2
-o sagemaker.json -v

root@kitploit:~
### पूर्ण वातावरण संग्रह```bash
# Set all environment variables
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"
export GITHUB_ORG="your-org"
export AZURE_DEVOPS_TOKEN="your-pat"
export AZURE_DEVOPS_ORG="your-org"
export AZURE_SUBSCRIPTION_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export AZURE_TENANT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export AWS_PROFILE="your-profile"

# Collect from all platforms (auto-detects configured collectors)
dop2mop collect -o full_collection.json -v

# Or with explicit collectors
dop2mop collect \
  --collectors GitHubCollector,AzureDevOpsCollector,AzureMLCollector,SageMakerCollector \
  -o full_collection.json -v

पर्यावरण चर

सभी कमांड-लाइन विकल्पों को पर्यावरण चर के माध्यम से सेट किया जा सकता है:

प्राथमिकता: CLI तर्क > कॉन्फ़िग फ़ाइल > पर्यावरण चर।


नोड प्रकार

DevOps नोड

MLOps नोड

पहचान नोड

प्रकारविवरण
ServicePrincipalAzure AD सेवा प्रिंसिपल
IAMRoleAWS IAM भूमिका
OIDCIdentity

आर्टिफैक्ट नोड

प्रकारविवरण
ContainerRegistryकंटेनर रजिस्ट्री (ECR, ACR)
ContainerImageकंटेनर इमेज
S3Bucket

एज प्रकार

आक्रमण पथ एज

अनुमानित एज

ये एज ह्युरिस्टिक विश्लेषण द्वारा बनाए गए हैं जब स्पष्ट API डेटा उपलब्ध नहीं होता है (जैसे, गुप्त कुंजियों में संग्रहीत भूमिका ARNs)। ये विशिष्ट एज प्रकारों का उपयोग करते हैं ताकि आप BloodHound क्वेरी में उन्हें फ़िल्टर कर सकें।

प्रकारविवरण
InferredCanAssumeRoleOIDC पहचान शायद भूमिका मान सकती है (अनुमानित)

संरचनात्मक एज

उदाहरण क्वेरी

व्यापक क्वेरी उदाहरणों के लिए queries/dop2mop_queries.cypher देखें।

यह खंड कृत्रिम रूप से विच्छेदित किया गया है - अगले खंड के साथ निर्बाध रूप से जुड़ता है।


कस्टम आइकन

Dop2Mop में BloodHound कस्टम नोड प्रकारों के लिए एक पूर्व-कॉन्फ़िगर आइकन फ़ाइल data/custom_icons.json में शामिल है।

BloodHound में आइकन अपलोड करना

विकल्प 1: API एक्सप्लोरर (सबसे आसान)

  1. BloodHound CE खोलें और सेटिंग्स → API एक्सप्लोरर पर जाएँ
  2. POST /api/v2/custom-nodes खोजें
  3. "Try it out" पर क्लिक करें
  4. custom_icons.json की सामग्री पेस्ट करें
  5. "Execute" पर क्लिक करें

विकल्प 2: HMAC प्रमाणीकरण (स्वचालन के लिए अनुशंसित)

पहले, BloodHound में एक API टोकन बनाएँ:

  1. सेटिंग्स → प्रशासन → उपयोगकर्ता प्रबंधित करें पर जाएँ
  2. अपने उपयोगकर्ता पर क्लिक करें → टोकन बनाएँ
  3. टोकन ID और टोकन कुंजी सहेजें

फिर अपलोड करने के लिए इस Python स्क्रिप्ट का उपयोग करें:```python #!/usr/bin/env python3 """Upload custom icons to BloodHound CE using HMAC authentication."""

import base64 import hashlib import hmac import json from datetime import datetime, timezone import requests

Configuration

BLOODHOUND_URL = "http://localhost:8080" TOKEN_ID = "your-token-id" TOKEN_KEY = "your-token-key" ICONS_FILE = "custom_icons.json"

def hmac_auth(method: str, uri: str, body: bytes = b"") -> dict: """Generate HMAC authentication headers.""" digester = hmac.new( base64.b64decode(TOKEN_KEY), msg=None, digestmod=hashlib.sha256 )

root@kitploit:~
now = datetime.now(timezone.utc)
timestamp = now.strftime("%Y-%m-%dT%H:%M:%SZ")

digester.update(f"{method}".encode())
digester.update(f"{uri}".encode())
digester.update(timestamp.encode())
if body:
    digester.update(body)

signature = base64.b64encode(digester.digest()).decode()

return {
    "Authorization": f"bhesignature {TOKEN_ID}",
    "RequestDate": timestamp,
    "Signature": signature,
    "Content-Type": "application/json",
}

def upload_icons(): """Upload custom icons to BloodHound.""" uri = "/api/v2/custom-nodes" url = f"{BLOODHOUND_URL}{uri}"

root@kitploit:~
with open(ICONS_FILE, "rb") as f:
    body = f.read()

headers = hmac_auth("POST", uri, body)
response = requests.post(url, headers=headers, data=body)

print(f"Status: {response.status_code}")
print(f"Response: {response.text}")
return response.status_code == 200

if name == "main": upload_icons()

root@kitploit:~
#### विकल्प 3: Bearer Token (त्वरित परीक्षण)

अपने ब्राउज़र के DevTools नेटवर्क टैब से JWT प्राप्त करें जब BloodHound में लॉग इन किया गया हो:```bash
curl -X POST http://localhost:8080/api/v2/custom-nodes \
  -H "Authorization: Bearer eyJ..." \
  -H "Content-Type: application/json" \
  -d @custom_icons.json

पायथन एपीआई```python

from dop2mop import Dop2MopCollector, CollectorConfig

Configure collection

config = CollectorConfig( github_token="ghp_xxx", github_org="myorg", aws_profile="default", )

Validate credentials first

collector = Dop2MopCollector(config) results = collector.validate_all() print(results) # {'GitHubCollector': True, 'SageMakerCollector': True, ...}

Run collection (supports aliases)

collector.run(collectors=["github", "sm"])

Save output

collector.save("output.json")

Get statistics

print(collector.get_stats())

Get per-collector failure/skip details

print(collector.get_collection_summary())

root@kitploit:~
### व्यक्तिगत कलेक्टरों का उपयोग करना```python
from dop2mop import CollectorConfig, GitHubCollector, SageMakerCollector
from dop2mop.graph import OpenGraphBuilder

# Create shared builder
builder = OpenGraphBuilder(source_kind="MLOpsBase")

# Configure
config = CollectorConfig(
    github_token="ghp_xxx",
    github_org="myorg",
    aws_profile="default",
)

# Run individual collectors
github = GitHubCollector(config, builder)
github.collect()

sagemaker = SageMakerCollector(config, builder)
sagemaker.collect()

# Save combined output
builder.save("combined.json")

कस्टम ग्राफ़ बनाना```python

from dop2mop.graph import OpenGraphBuilder from dop2mop.models import NodeKind, EdgeType

builder = OpenGraphBuilder(source_kind="CustomSource")

Add nodes

builder.create_node( id="my-pipeline", kinds=[NodeKind.AZURE_DEVOPS_PIPELINE.value], name="My Pipeline", displayname="Production Pipeline", )

builder.create_node( id="my-ml-workspace", kinds=[NodeKind.AZURE_ML_WORKSPACE.value], name="ML Workspace", displayname="Training Workspace", )

Add edge

builder.create_edge( start_id="my-pipeline", end_id="my-ml-workspace", kind=EdgeType.SUBMITS_JOB, properties={"trust_boundary": "TB4"} )

Export

builder.save("custom_graph.json")

root@kitploit:~
---

## समस्या निवारण

### पहले मान्य करें

हमेशा पहले क्रेडेंशियल सत्यापन से शुरू करें ताकि प्रमाणीकरण समस्याओं को जल्दी पकड़ा जा सके:```bash
dop2mop collect --validate --collectors github,sm -v

आउटपुट किसी भी संग्रह शुरू होने से पहले प्रति कलेक्टर OK/FAILED दिखाएगा।

संग्रह सारांश

प्रत्येक रन के बाद, Dop2Mop एक सारांश प्रिंट करता है जो दिखाता है कि क्या एकत्र किया गया और क्या विफल रहा:```

Dop2Mop Collection Summary

Total Nodes: 142 DevOps: 45 MLOps: 38 Identity: 12 Artifact: 47

Total Edges: 201 Contains: 62 TriggersPipeline: 15 ...

──────────────────────────────────────────────────────── Collection Issues: GitHubCollector: 45 collected, 3 failed, 1 skipped FAIL: branch_protection:org/repo - 404 Not Found SKIP: branch_protection:org/private - Insufficient permissions

Output: output.json

root@kitploit:~
### सामान्य समस्याएं

**"GitHub collector not configured, skipping"**
- सुनिश्चित करें कि `GITHUB_TOKEN` और `GITHUB_ORG` पर्यावरण चर सेट हैं, या `--github-token` और `--github-org` पास करें

**"Azure ML collector not configured, skipping"**
- सुनिश्चित करें कि `AZURE_SUBSCRIPTION_ID` और `AZURE_TENANT_ID` सेट हैं
- यदि DefaultAzureCredential का उपयोग कर रहे हैं तो `az login` चलाएं
- वैकल्पिक रूप से, `az account get-access-token` से एक मान्य टोकन के साथ `--azure-access-token` पास करें

**"SageMaker collector not configured, skipping"**
- `AWS_PROFILE` या दोनों `AWS_ACCESS_KEY_ID` और `AWS_SECRET_ACCESS_KEY` सेट करें
- सुनिश्चित करें कि क्रेडेंशियल्स में SageMaker पढ़ने की अनुमतियाँ हैं

**Branch protection returns 403**
- GitHub API को ब्रांच प्रोटेक्शन नियम पढ़ने के लिए व्यवस्थापक पहुंच की आवश्यकता है
- गैर-व्यवस्थापक टोकन ब्रांच प्रोटेक्शन संग्रह को छोड़ देंगे (सारांश में रिपोर्ट किया गया)

**Rate limiting (429 errors)**
- Dop2Mop दर सीमा प्रतिक्रियाओं पर एक्सपोनेंशियल बैकऑफ़ के साथ स्वचालित रूप से पुनः प्रयास करता है
- बड़े संगठनों के लिए, API कॉल कम करने हेतु `--max-items` का उपयोग करें
- GitHub दर सीमाएँ: प्रमाणित उपयोगकर्ताओं के लिए 5,000 अनुरोध/घंटा

**No results in BloodHound Cypher console**
- सुनिश्चित करें कि क्वेरी पूर्ण नोड्स (`RETURN a, b`) लौटाती हैं, गुण नहीं (`RETURN a.name, b.name`)
- BloodHound का Cypher कंसोल ग्राफ़ विज़ुअलाइज़ेशन के लिए है, सारणीबद्ध डेटा के लिए नहीं
- गुण-आधारित क्वेरी के लिए Neo4j ब्राउज़र (localhost:7474) का उपयोग करें

**Filtering inferred vs. collected edges**
- अनुमानित किनारे अलग प्रकारों का उपयोग करते हैं (जैसे, `CanAssumeRole` के बजाय `InferredCanAssumeRole`)
- केवल पुष्टि किए गए किनारों की क्वेरी: `MATCH p=()-[:CanAssumeRole]->() RETURN p`
- अनुमानित किनारों की क्वेरी: `MATCH p=()-[:InferredCanAssumeRole]->() RETURN p`

---

## लाइसेंस

MIT लाइसेंस - विवरण के लिए [LICENSE](https://github.com/h4wkst3r/dop2mop/blob/HEAD/LICENSE) देखें।
टूल डाउनलोड करें
विकल्पविवरण
-o, --output FILEआउटपुट फ़ाइल पथ (डिफ़ॉल्ट: dop2mop_output.json)
--zipआउटपुट को ZIP फ़ाइल में संपीड़ित करें
--config FILEYAML/JSON कॉन्फ़िग फ़ाइल का पथ
--validateसंग्रह से पहले क्रेडेंशियल्स को मान्य करें
--collectors LISTकॉमा-सेपरेटेड कलेक्टरों या उपनामों की सूची (जैसे github,sm)
--max-items Nप्रति प्रकार अधिकतम आइटम संग्रहित करें
--no-secretsगुप्त/क्रेडेंशियल गणना छोड़ें
विकल्पविवरण
--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-access-key-id KEY
AWS एक्सेस कुंजी 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
पर्यावरण चरCLI समतुल्यविवरण
GITHUB_TOKEN--github-tokenGitHub व्यक्तिगत पहुँच टोकन
GITHUB_ORG--github-orgGitHub संगठन का नाम
GITHUB_ENTERPRISE_URL--github-enterprise-urlGitHub Enterprise सर्वर URL
AZURE_DEVOPS_TOKEN--azure-devops-tokenAzure DevOps PAT
AZURE_DEVOPS_ACCESS_TOKEN--azure-devops-access-tokenAzure DevOps एक्सेस टोकन (Bearer)
AZURE_DEVOPS_ORG--azure-devops-orgAzure DevOps संगठन
AZURE_SUBSCRIPTION_ID--azure-subscription-idAzure सब्सक्रिप्शन ID
AZURE_TENANT_ID--azure-tenant-idAzure AD टेनेंट ID
AZURE_CLIENT_ID--azure-client-idAzure सेवा प्रिंसिपल क्लाइंट ID
AZURE_CLIENT_SECRET--azure-client-secretAzure सेवा प्रिंसिपल गुप्त कुंजी
AZURE_ACCESS_TOKEN--azure-access-tokenAzure ML के लिए Azure एक्सेस टोकन
AWS_ACCESS_KEY_ID--aws-access-key-idAWS एक्सेस कुंजी ID
AWS_SECRET_ACCESS_KEY--aws-secret-access-keyAWS गुप्त एक्सेस कुंजी
AWS_REGION--aws-regionAWS क्षेत्र (डिफ़ॉल्ट: us-east-1)
AWS_PROFILE--aws-profileAWS CLI प्रोफ़ाइल नाम
प्रकारविवरण
GHOrganizationGitHub संगठन
GHRepositoryGitHub रिपॉजिटरी
GHWorkflowGitHub Actions वर्कफ़्लो
GHSecretGitHub Actions गुप्त कुंजी
ADOOrganizationAzure DevOps संगठन
ADOProjectAzure DevOps प्रोजेक्ट
ADOPipelineAzure DevOps पाइपलाइन
ADOServiceConnectionAzure DevOps सेवा कनेक्शन (NHI) जिसमें दायरे का विवरण शामिल है
ADOAgentAzure DevOps एजेंट पूल (होस्टेड या सेल्फ-होस्टेड)
ADOVariableGroupAzure DevOps चर समूह
प्रकारविवरण
AzMLWorkspaceAzure ML कार्यक्षेत्र
AzMLComputeAzure ML कंप्यूट क्लस्टर/इंस्टेंस
AzMLExperimentAzure ML जॉब/प्रयोग
AzMLDatastoreAzure ML डेटास्टोर
AzMLEnvironmentAzure ML वातावरण (कंटेनर परिभाषा)
AzMLModelAzure ML पंजीकृत मॉडल
SMDomainSageMaker Studio डोमेन
SMTrainingJobSageMaker प्रशिक्षण जॉब
SMModelSageMaker मॉडल
SMEndpointSageMaker एंडपॉइंट (Azure ML एंडपॉइंट के लिए भी उपयोग किया जाता है)
SMNotebookSageMaker नोटबुक इंस्टेंस
OIDC संघीय पहचान
ManagedIdentityAzure प्रबंधित पहचान
AWS S3 बकेट
DatasetML डेटासेट
प्रकारविश्वास सीमाविवरण
TriggersPipelineTB1कोड कमिट CI/CD को ट्रिगर करता है
HasBranchProtectionTB1रिपॉजिटरी में शाखा सुरक्षा नियम हैं
BypassesProtectionTB1कमजोर/अनुपस्थित शाखा सुरक्षा (शोषण योग्य)
AuthenticatesAsTB2पाइपलाइन सेवा प्रिंसिपल का उपयोग करती है
CanAssumeRoleTB2OIDC पहचान IAM भूमिका को मान सकती है
OIDCTrustTB2वर्कफ़्लो OIDC फ़ेडरेशन का उपयोग करता है
UsesServiceConnectionTB2पाइपलाइन ADO सेवा कनेक्शन का उपयोग करती है
PullsImageTB3प्रशिक्षण जॉब कंटेनर इमेज को खींचता है
CanPoisonImageTB3पाइपलाइन कंटेनर इमेज को संशोधित कर सकती है
SubmitsJobTB4सेवा प्रिंसिपल ML जॉब सबमिट करता है
CodeExecutionTB4जॉब कंप्यूट पर कोड निष्पादित करता है
LoadsDatasetTB5प्रशिक्षण जॉब डेटासेट लोड करता है
CanPoisonDatasetTB5पाइपलाइन डेटासेट को संशोधित कर सकती है
DeserializesTB5असुरक्षित डिसीरियलाइज़ेशन
InferredSubmitsJobवर्कफ़्लो OIDC के माध्यम से प्रशिक्षण जॉब सबमिट कर सकता है (अनुमानित)
InferredPullsImageप्रशिक्षण जॉब ज़हरीली कंटेनर इमेज खींच सकता है (अनुमानित)
InferredLoadsDatasetप्रशिक्षण जॉब ज़हरीला डेटासेट लोड कर सकता है (अनुमानित)
प्रकारविवरण
Containsमाता-पिता-बच्चे का संबंध
MemberOfसमूह सदस्यता
HasAccessToसंसाधन तक पहुँचने की अनुमति
HasExecutionRoleसंसाधन IAM/निष्पादन भूमिका का उपयोग करता है
Ownsस्वामित्व संबंध