
आक्रामक GPO डंपिंग और विश्लेषण उपकरण जो BloodHound डेटा का लाभ उठाता है और उसे समृद्ध करता है
# GPOHound
`GPOHound` SYSVOL शेयर से निकाले गए समूह नीति ऑब्जेक्ट (GPO) को डंप और विश्लेषण करने के लिए एक उपकरण है।
यह Active Directory वातावरण में गलत कॉन्फ़िगरेशन, असुरक्षित सेटिंग्स, और विशेषाधिकार वृद्धि पथों को उजागर करने में मदद करने के लिए एक संरचित, औपचारिक प्रारूप प्रदान करता है।
यह उपकरण BloodHound के Neo4j डेटाबेस के साथ एकीकृत होता है, इसका उपयोग Active Directory जानकारी के लिए LDAP-जैसे स्रोत के रूप में करता है, साथ ही विश्लेषण के आधार पर नए संबंध (edges) और नोड गुण जोड़कर इसे समृद्ध भी करता है।
## विशेषताएँ
### डंप
- [x] GPO को संरचित JSON या ट्री प्रारूप में डंप करता है
- [x] एकाधिक डोमेन को संभालता है
- [x] GPO नामों को GPO GUID से हल करता है
- [x] GPO फ़ाइलों, GPO GUID और डोमेन द्वारा आउटपुट को फ़िल्टर करता है
- [x] रीजेक्स का उपयोग करके key/value जोड़ियों में खोज करता है
### विश्लेषण
- [x] सेटिंग्स को प्रभावित ऑब्जेक्ट (जैसे, स्थानीय समूह, रजिस्ट्री) द्वारा समूहित करता है
- [x] स्थानीय विशेषाधिकार प्राप्त समूहों में जोड़े गए सदस्यों का पता लगाता है
- [x] असुरक्षित रजिस्ट्री सेटिंग्स, संग्रहीत क्रेडेंशियल्स, और विशेषाधिकार अधिकारों का पता लगाता है
- [x] VNC क्रेडेंशियल्स और GPP पासवर्ड को डिक्रिप्ट करने का समर्थन करता है
- [x] GPO द्वारा प्रभावित डोमेन, कंटेनर और OU ढूंढता है
- [x] किसी विशिष्ट उपयोगकर्ता, कंप्यूटर, OU, कंटेनर या डोमेन पर लागू GPO प्राप्त करता है
- [x] BloodHound डेटा को संबंधों और गुणों से समृद्ध करता है
## स्थापना
### pip के साथ स्थापित करें
```
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
```
### pipx के साथ स्थापित करें
```
pipx install "git+https://github.com/cogiceo/GPOHound"
```
### Neo4j के लिए APOC सेट अप करें
BloodHound डेटा संवर्धन के लिए आपको Neo4j APOC सेट अप करना होगा:
- यदि आप मानक Neo4j स्थापना का उपयोग कर रहे हैं, तो आप APOC `jar` फ़ाइल को प्लगइन फ़ोल्डर में कॉपी करके और फिर Neo4j को पुनरारंभ करके APOC सक्षम कर सकते हैं:
```bash
cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
neo4j restart
```
- यदि आप "Docker Compose" के साथ Neo4j स्थापित कर रहे हैं, तो पर्यावरण चर `NEO4J_PLUGINS=["apoc"]` जोड़ें:
```yaml
neo4j:
image: neo4j:latest
environment:
- NEO4J_PLUGINS=["apoc"]
```
> अधिक विवरण या वैकल्पिक स्थापना विधियों के लिए, आधिकारिक [APOC दस्तावेज़ीकरण](https://neo4j.com/docs/apoc/current/installation/) देखें।
### BloodHound क्वेरीज़ जोड़ें
`GPOHound` द्वारा जोड़े गए संबंधों और गुणों को देखने के लिए, आप `customqueries.json` फ़ाइल से कस्टम क्वेरीज़ को BloodHound में आयात कर सकते हैं। डिफ़ॉल्ट रूप से, यह फ़ाइल `~/.config/bloodhound/customqueries.json` पर स्थित है।
## पूर्वापेक्षाएँ
### SYSVOL डंप करना
डोमेन नियंत्रक से `SYSVOL` सामग्री डाउनलोड करके शुरू करें।
- पूर्ण `SYSVOL` डाउनलोड करें:
```bash
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
```
- केवल GPO डाउनलोड करें:
```bash
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
```
- बहिष्करण के साथ डाउनलोड करें:
```bash
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
```
### LDAP डंप करना
LDAP से सभी आवश्यक डेटा प्राप्त करें:
```bash
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
```
### BloodHound
BloodHound डेटा संवर्धन के लिए, आपको `bloodhound.py` या `SharpHound.exe` जैसे कलेक्टर का उपयोग करके BloodHound डेटा एकत्र करना होगा और एकत्रित डेटा को BloodHound इंटरफ़ेस में आयात करना होगा।
## उपयोग
नमूना GPOHound फ़ाइलें `example.zip` में उपलब्ध हैं। उन्हें `unzip example.zip` से निकालें।
डिफ़ॉल्ट मानों और कॉन्फ़िगरेशन को अनुकूलित करने के निर्देशों के लिए [CONFIG.md](https://github.com/cogiceo/gpohound/blob/main/CONFIG.md) देखें।
```bash
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
```
### पार्स करें
```bash
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
```
### डंप
```bash
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
```
### विश्लेषण
```bash
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
```
## वर्तमान विश्लेषण और संवर्धन
> [!IMPORTANT]
> - सुरक्षा फ़िल्टर, WMI फ़िल्टर और आइटम-स्तरीय लक्ष्यीकरण जैसी शर्तों की व्याख्या नहीं की जाती है।
> - मान्य सेटिंग्स को छोड़ने से बचने के लिए GPO विरोधों का अनुकरण नहीं किया जाता है।
### स्थानीय समूह
- लॉगऑन के दौरान विशेषाधिकार प्राप्त स्थानीय समूहों को निर्दिष्ट उपयोगकर्ताओं का पता लगाना
- नाम बदले गए बिल्ट-इन विशेषाधिकार प्राप्त स्थानीय समूहों का पता लगाना
- "प्राथमिकता प्रक्रिया चर" (जैसे, %ComputerName%, %DomainName%) का उपयोग करके विशेषाधिकार प्राप्त स्थानीय समूहों में जोड़े गए ट्रस्टियों का पता लगाना
- `sAMAccountName` अपहरण का उपयोग करके दुरुपयोग योग्य ट्रस्टियों का पता लगाना
- विशेषाधिकार प्राप्त स्थानीय समूहों में जोड़े गए किसी भी ट्रस्टी का पता लगाना:
| समूह | एज |
|--------------------------------|--------------|
| Administrators | `AdminTo` |
| Remote Desktop Users | `CanRDP` |
| Distributed COM Users | `ExecuteDCOM`|
| Remote Management Users | `CanPSRemote`|
| Backup Operators | `CanPrivEsc` |
| Print Operators | `CanPrivEsc` |
| Network Configuration Operators| `CanPrivEsc` |
### रजिस्ट्री
| विश्लेषण | गुण |
|--------------------------------------------------------------------------|---------------------------|
| "Everyone" समूह में "Anonymous Logon" शामिल है | — |
| SMB सर्वर सत्र हस्ताक्षर सक्षम नहीं है | `smbSigningEnabled: false`|
| SMB सर्वर सत्र हस्ताक्षर आवश्यक नहीं है | `smbSigningRequired: false`|
| NTLMv1 प्रमाणीकरण समर्थित है | `NTLMv1Support: true` |
| Windows स्वचालित लॉगऑन डिफ़ॉल्ट पासवर्ड | — |
| VNC क्रेडेंशियल्स (सामान्य: RealVNC, TightVNC, TigerVNC, आदि) | `*VNC*PASS*` (विभिन्न) |
| FileZilla संग्रहीत पासवर्ड | — |
| PuTTY प्रॉक्सी पासवर्ड | — |
| TeamViewer संग्रहीत क्रेडेंशियल्स | — |
| WinSCP सहेजे गए सत्र | — |
| Picasa संग्रहीत पासवर्ड | — |
### विशेषाधिकार अधिकार
डिफ़ॉल्ट विशेषाधिकार प्राप्त ट्रस्टी, साथ ही S-1-5-8 से शुरू होने वाले SID वाले सेवा खाते, विश्लेषण से बाहर रखे गए हैं।
| विशेषाधिकार | विवरण | एज |
| ----------------------------- | -------------------------------------------------------------- | ------------ |
| SeDebugPrivilege | उपयोगकर्ता को किसी भी प्रक्रिया को डीबग और इंटरैक्ट करने की अनुमति देता है | `CanPrivEsc` |
| SeBackupPrivilege | संवेदनशील फ़ाइलों तक पहुंच प्रदान करता है | `CanPrivEsc` |
| SeRestorePrivilege | पुनर्स्थापना के दौरान ऑब्जेक्ट अनुमतियों को बायपास करता है | `CanPrivEsc` |
| SeAssignPrimaryTokenPrivilege | SYSTEM एस्केलेशन के लिए टोकन प्रतिरूपण सक्षम करता है | `CanPrivEsc` |
| SeImpersonatePrivilege | किसी अन्य उपयोगकर्ता के संदर्भ में प्रक्रिया बनाने की अनुमति देता है | `CanPrivEsc` |
| SeTakeOwnershipPrivilege | उपयोगकर्ताओं को सिस्टम ऑब्जेक्ट का स्वामित्व लेने देता है | `CanPrivEsc` |
| SeTcbPrivilege | OS के भाग के रूप में कार्य करने की क्षमता प्रदान करता है | `CanPrivEsc` |
| SeCreateTokenPrivilege | प्रमाणीकरण टोकन बनाने की अनुमति देता है | `CanPrivEsc` |
| SeLoadDriverPrivilege | ड्राइवर लोड/अनलोड करने का अधिकार देता है | `CanPrivEsc` |
| SeManageVolumePrivilege | वॉल्यूम या डिस्क प्रबंधन विशेषाधिकार प्रदान करता है | `CanPrivEsc` |
| SeEnableDelegationPrivilege | कंप्यूटर और उपयोगकर्ता खातों को प्रतिनिधिमंडल के लिए विश्वसनीय बनाने में सक्षम करता है | |
# सुधार
- [x] लॉगिंग में सुधार
- [x] LDAP को एकीकृत करें
- [x] SMB को एकीकृत करें
- [ ] शेष एक्सटेंशन पार्स करें
- [ ] वेब इंटरफ़ेस
- [ ] GPO के बीच संभावित विरोधों को हाइलाइट करें
## GPO दस्तावेज़ीकरण
### SYSVOL और LDAP
- [x] [\[MS-GPAC\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPAC/) ऑडिट कॉन्फ़िगरेशन एक्सटेंशन
- [x] [\[MS-GPCAP\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPCAP/) केंद्रीय पहुंच नीतियां प्रोटोकॉल एक्सटेंशन
- [x] [\[MS-GPEF\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPEF/) एन्क्रिप्टिंग फ़ाइल सिस्टम एक्सटेंशन
- [x] [\[MS-GPFAS\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPFAS/) फ़ायरवॉल और उन्नत सुरक्षा डेटा संरचना
- [x] [\[MS-GPFR\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPFR/) फ़ोल्डर रीडायरेक्शन प्रोटोकॉल एक्सटेंशन
- [ ] [\[MS-GPIE\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPIE/) इंटरनेट एक्सप्लोरर रखरखाव एक्सटेंशन
- [x] [\[MS-GPNAP\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPNAP/) नेटवर्क एक्सेस प्रोटेक्शन (NAP) एक्सटेंशन
- [x] [\[MS-GPNRPT\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPNRPT/) नाम रिज़ोल्यूशन पॉलिसी टेबल (NRPT) डेटा एक्सटेंशन
- [x] [\[MS-GPOL\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPOL/) कोर प्रोटोकॉल
- [x] [\[MS-GPPREF\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPPREF/) प्राथमिकता एक्सटेंशन डेटा संरचना
- [x] [\[MS-GPREG\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPREG/) रजिस्ट्री एक्सटेंशन एन्कोडिंग
- [x] [\[MS-GPSB\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPSB/) सुरक्षा प्रोटोकॉल एक्सटेंशन
- [x] [\[MS-GPSCR\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPSCR/) स्क्रिप्ट एक्सटेंशन एन्कोडिंग
- [x] [\[MS-GPSI\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPSI/) सॉफ़्टवेयर स्थापना प्रोटोकॉल एक्सटेंशन
### केवल LDAP
- [x] [\[MS-GPDPC\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPDPC/) तैनात प्रिंटर कनेक्शन एक्सटेंशन
- [ ] [\[MS-GPWL\]](https://learn.microsoft.com/en-us/openspecs/windows_protocols/MS-GPWL/) वायरलेस/वायर्ड प्रोटोकॉल एक्सटेंशन