OpenGraph collector for BloodHound जो DevOps से MLOps बुनियादी ढांचे तक हमले के रास्तों का मानचित्रण करता है, पार्श्व गति विश्लेषण के लिए CI/CD पाइपलाइन, सेवा प्रमुख, और ML प्लेटफ़ॉर्म संसाधनों को एकत्र करता है।
BloodHound के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट OpenGraph संग्राहक जो DevOps से MLOps बुनियादी ढांचे तक हमले के पथों का मानचित्रण करता है।
विशेषाधिकार की पाइपलाइन: DevOps से MLOps बुनियादी ढांचे तक हमले के पथ द्वारा Brett Hawkins (@h4wkst3r) पर आधारित।
Dop2Mop DevOps और MLOps प्लेटफ़ॉर्म से डेटा एकत्र करता है ताकि उन हमले के पथों की पहचान की जा सके जो CI/CD पाइपलाइनों से मशीन लर्निंग प्रशिक्षण बुनियादी ढांचे तक पार्श्विक गति को सक्षम बनाते हैं। यह विज़ुअलाइज़ेशन और विश्लेषण के लिए BloodHound-संगत OpenGraph JSON आउटपुट करता है।
| DevOps प्लेटफ़ॉर्म | MLOps प्लेटफ़ॉर्म | पहचान प्रदाता |
|---|---|---|
| GitHub (Actions, Repos, Secrets) | Azure Machine Learning | Azure AD सेवा प्रिंसिपल |
| Azure DevOps (पाइपलाइन, सेवा कनेक्शन) | Amazon SageMaker | AWS IAM भूमिकाएँ OIDC/संघटित पहचान |
Dop2Mop अनुसंधान में पहचानी गई पाँच महत्वपूर्ण विश्वास सीमाओं का मॉडल तैयार करता है:
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
// 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 इन स्थानों की क्रम से जाँच करता है:
--config द्वारा निर्दिष्ट पथdop2mop.yaml / dop2mop.yml / .dop2mop.yaml~/.dop2mop.yamlनोट: क्रेडेंशियल्स को गलती से कमिट होने से रोकने के लिए
dop2mop.yaml.gitignoreमें है। उदाहरण फ़ाइल (dop2mop.yaml.example) कमिट करने के लिए सुरक्षित है।
सभी उपलब्ध विकल्पों को टिप्पणियों सहित देखने के लिए dop2mop.yaml.example देखें।
प्राथमिकता क्रम: CLI तर्क > कॉन्फ़िग फ़ाइल > पर्यावरण चर।
पूर्ण संग्रह चलाने से पहले क्रेडेंशियल का परीक्षण करें:```bash
dop2mop collect --validate -v
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