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)आपूर्ति श्रृंखला सुरक्षारेड टीमिंग
4135 महीने पहलेअभी तक समीक्षित नहीं
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]
    

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

    विकल्पविवरण
    -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 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 विकल्प

    विकल्पविवरण
    --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]

    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 समतुल्यविवरण
    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 प्रोफ़ाइल नाम

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


    नोड प्रकार

    DevOps नोड

    प्रकारविवरण
    GHOrganizationGitHub संगठन
    GHRepositoryGitHub रिपॉजिटरी
    GHWorkflowGitHub Actions वर्कफ़्लो
    GHSecretGitHub Actions गुप्त कुंजी
    ADOOrganizationAzure DevOps संगठन
    ADOProjectAzure DevOps प्रोजेक्ट
    ADOPipelineAzure DevOps पाइपलाइन
    ADOServiceConnectionAzure DevOps सेवा कनेक्शन (NHI) जिसमें दायरे का विवरण शामिल है
    ADOAgentAzure DevOps एजेंट पूल (होस्टेड या सेल्फ-होस्टेड)
    ADOVariableGroupAzure DevOps चर समूह

    MLOps नोड

    प्रकारविवरण
    AzMLWorkspaceAzure ML कार्यक्षेत्र
    AzMLComputeAzure ML कंप्यूट क्लस्टर/इंस्टेंस
    AzMLExperimentAzure ML जॉब/प्रयोग
    AzMLDatastoreAzure ML डेटास्टोर
    AzMLEnvironmentAzure ML वातावरण (कंटेनर परिभाषा)
    AzMLModelAzure ML पंजीकृत मॉडल
    SMDomainSageMaker Studio डोमेन
    SMTrainingJobSageMaker प्रशिक्षण जॉब
    SMModelSageMaker मॉडल
    SMEndpointSageMaker एंडपॉइंट (Azure ML एंडपॉइंट के लिए भी उपयोग किया जाता है)
    SMNotebookSageMaker नोटबुक इंस्टेंस

    पहचान नोड

    प्रकारविवरण
    ServicePrincipalAzure AD सेवा प्रिंसिपल
    IAMRoleAWS IAM भूमिका
    OIDCIdentityOIDC संघीय पहचान
    ManagedIdentityAzure प्रबंधित पहचान

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

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

    एज प्रकार

    आक्रमण पथ एज

    प्रकारविश्वास सीमाविवरण
    TriggersPipelineTB1कोड कमिट CI/CD को ट्रिगर करता है
    HasBranchProtectionTB1रिपॉजिटरी में शाखा सुरक्षा नियम हैं
    BypassesProtectionTB1कमजोर/अनुपस्थित शाखा सुरक्षा (शोषण योग्य)
    AuthenticatesAsTB2पाइपलाइन सेवा प्रिंसिपल का उपयोग करती है
    CanAssumeRoleTB2OIDC पहचान IAM भूमिका को मान सकती है
    OIDCTrustTB2वर्कफ़्लो OIDC फ़ेडरेशन का उपयोग करता है
    UsesServiceConnectionTB2पाइपलाइन ADO सेवा कनेक्शन का उपयोग करती है
    PullsImageTB3प्रशिक्षण जॉब कंटेनर इमेज को खींचता है
    CanPoisonImageTB3पाइपलाइन कंटेनर इमेज को संशोधित कर सकती है
    SubmitsJobTB4सेवा प्रिंसिपल ML जॉब सबमिट करता है
    CodeExecutionTB4जॉब कंप्यूट पर कोड निष्पादित करता है
    LoadsDatasetTB5प्रशिक्षण जॉब डेटासेट लोड करता है
    CanPoisonDatasetTB5पाइपलाइन डेटासेट को संशोधित कर सकती है
    DeserializesTB5असुरक्षित डिसीरियलाइज़ेशन

    अनुमानित एज

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

    प्रकारविवरण
    InferredCanAssumeRoleOIDC पहचान शायद भूमिका मान सकती है (अनुमानित)
    InferredSubmitsJobवर्कफ़्लो OIDC के माध्यम से प्रशिक्षण जॉब सबमिट कर सकता है (अनुमानित)
    InferredPullsImageप्रशिक्षण जॉब ज़हरीली कंटेनर इमेज खींच सकता है (अनुमानित)
    InferredLoadsDatasetप्रशिक्षण जॉब ज़हरीला डेटासेट लोड कर सकता है (अनुमानित)

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

    प्रकारविवरण
    Containsमाता-पिता-बच्चे का संबंध
    MemberOfसमूह सदस्यता
    HasAccessToसंसाधन तक पहुँचने की अनुमति
    HasExecutionRoleसंसाधन IAM/निष्पादन भूमिका का उपयोग करता है
    Ownsस्वामित्व संबंध

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

    व्यापक क्वेरी उदाहरणों के लिए 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/main/LICENSE) देखें।
    
    टूल डाउनलोड करें