بسم الله الرحمن الرحيم


في هذا التدوينة, سأتحدث عن تجربتي مع شهادة OSCE3 والتي تتكون من عدة شهادات وهي OSWE, OSEP, and OSED.

المقدمة

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

طبعاً جميع الشهادات السابقة تقدمها شركة Offensive Security التي تختص بتقديم حلول الأمن السيبراني بالإضافة إلى التدريب. طبعاً هي كذلك الشركة التي تقدم الإختبار المشهور لدى رواد المجال ألا وهي الـOSCP


الشهادات التي سنناقشها في هذه التدوينة تعتبر تفرعية وتخصصية أكثر من الـOSCP, بمعنى أن كل شهادة تأخذ كل مجال تمت مناقشته في الـOSCP, وتناقشه بتفاصيل ودقة أكثر. طبعاً العبارة السابقة هي عبارة عامة, ولاينطبق عليها كل المواضيع المُناقشة في هذه الشهادات, بمعنى أن هنالك مواضيع معينة لم تتم مناقشتها بالـOSCP, ولكن تمت مناقشتها بأحد تلك الشهادات.
عموماً, الفكرة هي أن الشهادات المكوّنة لشهادة الـOSCE3 هي عبارة عن مزيد من التعمق والتفاصيل بالمجال المختص بكل شهادة.

نبذة مبسطة عن الشهادات المكَوّنة لشهادة OSCE3

بدايةً سأتحدث عن كل شهادة على حده, ومن ثم سأتحدث عن تجربتي الخاصة مع كل واحدة.
طبعاً كل شهادة منفصلة بذاتها, ولايشترط أخذ أحدها لأخذ الأخرى.
سأذكر الشهادات حسب ترتيب أخذي لكل واحدة منهم (مجرد ترتيب وليس شرطاً أخذها بهذا الترتيب).

أولاً: شهادة OSWE

هي إختصار لـ Offensive Security Web Expert والتي من الاسم تعني شخص متخصص أو "محترف" في أمن الويب الـ"عدواني" أو الهجومي. في دورة هذه الشهادة, تتم مناقشة كيفية إختبار إختراق الويب بإسلوب Whitebox. معنى مصطلح الـWhitebox في العبارة السابقة هو وجود الكود المصدري (source code) عند أداء مهمة إختبار الإختراق.
في هذه الشهادة, يكون الإختبار على النحو التالي:
يتم إعطاءك تطبيقين ويب مع الكود المصدري (أو إمكانية إستخراجه عبر الملفات المعطاة) , ويتم طلب منك إختبار إختراقهم حتى الوصول إلى التحكم الكامل بالنظامين.
الفكرة من هذا الإختبار بشكل عام هو إختبار إختراق تطبيقان الويب وإستخراج المشاكل الموجودة بهما عبر قراءتك للكود المصدري. اسم الدورة التابعة لهذه الشهادة هو Advanced Web Attacks and Exploitation (WEB-300)

ثانياً: شهادة OSEP

وهي إختصار لـOffensive Security Experienced Penetration Tester والتي من الاسم تعني مختبر إختراق متمرس.
في دورة هذه الشهادة, تتم مناقشة كيفية عمل إختبار إختراق "متقدم" وتجاوز بعض الحمايات التي من الممكن أن تعطل مختبر الإختراق أثناء عمله. الدورة متقدمة نوعاً ما, ولكن وكما نعلم أن المجال واسع, ومن الصعب جداً حصر كل المعلومات في دورة وحيدة. اسم الدورة التابعة لهذه الشهادة هو Evasion Techniques and Breaching Defenses (PEN-300)

ثالثاً: شهادة OSED

وهي إختصار لـOffensive Security Exploit Developer والتي من الاسم تعني مطور "إستغلالات" للثغرات. محتوى هذا الشهادة يتعلق بالـBinary Exploitation و الهندسة العكسية (Reverse Engineering).
تهدف هذه الدورة لتأهيل الشخص لإستغلال الثغرات مثل الـBuffer Overflow والـFormat Strings مع مناقشة بعض الحمايات الموجودة بالأنظمة وكيفية تخطيها. اسم الدورة التابعة لهذه الشهادة هو Windows User Mode Exploit Development (EXP-301)

خلفيتي بالمجال


كانت بدايتي بالمجال بسبب الفضول منذ فترة.

ليست لدي أي شهادة جامعية.

كل خبرتي بالمجال بشكل عام كانت فقط نتاج تعليم ذاتي من الإنترنت :)

ماقبل التجربة


في الحقيقة لم أكن مقتنع بالشهادات "الإحترافية" سابقاً قبل التعرف على شهادات Offsec بسبب عدم إقتناعي بنواتجها و آخذيها, ووكون أغلبية إختباراتها ليست عملية. ولكن بعد تعرّفي على الإختبارات العملية التي تقدمها Offsec, قررت التجربة :)

التجربة


قررت أبدأ تجربة الشهادات هذه نهاية عام 2020. طبعاً أنهيت شهادة OSCP بنهاية ديسمبر 2020. كتبت عن تجربتي معها سابقاً بـreddit (بالإنجليزي) في حالة كان القارئ مهتم بالإطلاع عليها.

الآن سنبدأ صلب التدوينة.

بدايةً, بدأت في بداية 2020 وتحديداً فبراير 14 في المختبر (lab) التابع لدورة OSWE وكان يمتد لمدة شهرين.
طبعاً أول شيء سويته لما بدأت فترة الدورة أنّي رحت وخلصت كل محتويات الدورة (الكتاب).

أنا من الأشخاص اللي أفضّل المحتوى المقروء على المحتوى المصور.

كل دورات Offsec تحتوي على محتوى مقروء واللي هو كتاب الدورة, بالإضافة إلى مقاطع الفيديو, اللي هي كأنها الكتاب ولكن مصوّر.

الخيار هذا يتيح التعلم عبر طريقتين أو حتى مزج الطريقتين (الكتاب + مقاطع الفيديو).
بما أنني أفضّل المحتوى المقروء, بدأت في الكتاب و "سحبت" على المقاطع (ماشفت أي شيء منهم).

أخترت هذا الخيار لأن محتوى الكتاب يتضمن كل شيء بالدورة, ولكن المقاطع قد لايتم تصوير كل محتويات الكتاب بها. هذا لايعني أن المقاطع ليست مفيدة, بل بالعكس, البعض يفضل المقاطع على القراءة.

على أي حال, ستحتاج الكتاب في كلا الحالتين, لأن التمارين الموجودة بالدورة تُكتب بالكتاب فقط.

عناوين محتوى الدورة بالكامل موجودة هنا.

كنت تقريباً باليوم أخذ 7-8 ساعات أقرأ محتويات الدورة وأحيانا أقل وأحياناً أكثر, وأحياناً أخذ بريك يوم كامل.

عموماً, قرأت الكتاب من البداية للنهاية وخلصت كل التمارين الموجودة فيه ظرف تقريباً 24 يوم.
الكتاب كان وقتها تقريباً 412 صفحة (قبل التحديث الأخير).
التمارين أخذوا وقت لإكمالهم.
في كل الدورات كان فيه نوعين من التمارين.
النوع الأول هو التمارين العادية (Exercises) والتمارين اللي تتطلب جهد وبحث أكبر (Extra mile exercises).
أنا حليت النوعين كلهم خلال تلك المدة, وهذا من أفضل الأشياء اللي الشخص لازم يسويها لما يحضر لشهادات Offsec. بإختصار, حاول تحل كل شيء ولا "تتعايز" لأنهم بيفيدوك فالإختبار ولا غيره.

خلال الـ24 يوم الأولى أنا خلصت محتوى الدورة الأساسي.
بعد ماتخلص محتويات الدورة, يوجد هناك ثلاث تحديات.
هذه التحديات تُعطى إياها عشان تمارس اللي تعلمته بالدورة. التحديات تحلها بنفسك بدون مساعدة, لكن إذا علقت في تحدي معين, ممكن تسأل أحد حله عشان يساعدك ويطلعك من وين عالق :)
التحديات إثنين منهم يتعلقوا بالدورة بشكل مباشر, والأخير شوي مختلف حيث أنك لن تُعطى الكود المصدري الخاص بالتطبيق, فلازم تتبع منهجية Blackbox, ولكن لما تحله ممكن تطلع على الكود الخاص به وتفهمه أكثر.
بعد ماخلصت محتويات الدورة, حليت التحديات كلهم تقريباً خلال 4 أيام. بعض التحديات ممكن يكون فيها أكثر من حل, فمن الأفضل أن الشخص يتطلع على كل الحلول الخاصة بالتحدي قبل مايروح للي بعده.

كذا 28 يوم بالدورة, وأنا تقريباً مخلص كل محتوياتها + التحديات.

هنا أحسست أني شوي مُجهد نفسي, فأخذت بريك أسبوع تقريباً وقمت أراجع اللي أخذته وأرتب أكوادي, بالإضافة أني حجزت الاختبار بحيث يكون بعد أسبوع.
من أهم الأشياء اللي ممكن أنصح فيها أي شخص ياخذ هالدورة أنه حاول وأنت تحضر الدورة وتحل التمارين والتحديات تكتب الأكواد عندك بطريقة (modular), وأعني بذلك أنك ترتب أكوادك بطريقة سهلة بعدين أنك تنسخها وتستخدمها بالإختبار إذا أحتجتها.
كمثال, تخيل أني لازم أستغل ثغرة SQLi بالإختبار, وأنا لما كنت أحضر الدورة واحل التحديات كتبت كود خاص بالإستغلال سابقاً. بمجرد أنسخ الكود اللي كتبته سابقاً وادمجه بالإستغلال المطلوب بالإختبار حسب مايتناسب معه, كذا أنا أكون وفرت ساعة زمان على الاقل لأن الوقت محسوب بالإختبار.
فنصيحتي هنا حاول ترتب كودك بحيث يكون سهل في إعادة الإستعمال.

قبل ماندخل بالإختبار, بنتكلم عنه بشكل مبسط.

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

كل تطبيق المفروض تكون به ثغرتين, كل إستغلال لثغرة معينة يعطيك درجة محددة. الفكرة أنه بالنهاية لازم تدمج الثغرتين مع بعض عشان تحقق أكبر إستغلال.

درجة النجاح هي 85 من 100.

طيب عدى الأسبوع, وحان وقت الإختبار (تاريخ 22 مارس 2020). الإختبار كان يبدأ الساعة 10 صباحاً, فكان التوقيت مناسب للشخص أنه ياخذ إختبار.
بدأت الإختبار وكنت شوي متوتر. الاختبار مثل ماذكرنا سابقاً يتكون من تحديين ويب Whitebox, حيث يتم إعطاءك الكود المصدري, ويطلب منك إستغلال الثغرات وتحقيق Remote Code Execution (RCE).


مثل ماتم ذكره من اللي قيَّموا الدورة سابقاً, الإختبار يطلب منك Authentication Bypass و RCE, لكل واحدة لها نقاط محددة بإمكانك الإطلاع عليها في هذا التقييم.

الأختبار بالنسبة لي كان سهل الصراحة. شخصياً متعود أشوف تطبيقات ويب تتكون من مئات الجداول (tables), بس لما شفت بالإختبار كان أسهل بكثيير من اللي كنت حاطه ببالي. لكن لما تفكر فيها, الإختبار أساساً طوله 47 ساعة و 45 دقيقة, فمن غير المعقول يجيبولك تطبيقين ويب عملاقين :)
الإختبار كأنه Capture The Flag (CTF) (التقط العَلَم) بس لازم تدون كل شيء سويته لحد ماوصلت للـFlag وتكتبه بالتقرير.
عموماً, مايمديني أتكلم كثير عن الإختبار (غير مسموح), بس النصائح اللي فوق تؤدي الغرض وإن شاء الله تكون ذات إفادة لأي شخص يحضر للإختبار.

مثل ما ذكرت, الإختبار مدته 47 ساعة و 45 دقيقة (عملي بالكامل), وبإمكانك ترتب جدولك حسب مايناسبك (وقت النوم, تاخذ بريك, ... إلخ).
وبعدها يعطوك مهلة 24 ساعة لازم تكتب فيها التقرير وترسله خلال هذه المدة.
طبعاً إذا خلصت الإختبار خلال الـ48 ساعة الأولى, يمديك تبدأ تكتب التقرير خلال تلك الفترة (لايجب عليك الإنتظار إلى نهاية الإختبار لكي تبدأ كتابة التقرير).
الإختبار مراقب بالكاميرا, بمعنى لازم تكون عندك كاميرا وتفحص الغرفة (بشكل مبسط) قبل ماتبدأ.
الجوال غير مسموح أن يكون بالمكتب اللي فيه جهازك, حاول تحطه بعيد لأن مايمديك تستعمله وأنت قاعد على الإختبار.

الكلام اللي فوق ينطبق على كل الإختبارات اللي بنتكلم عنها اليوم.

بعد الإختبار, الطالب لازم يكتب تقرير يحتوي على جميع التفاصيل من الثغرات الموجودة حتى إستغلال كل واحدة وصولاً للعَلَم (Flag).

بالنسبة لي, خلصت الإختبار تقريباً خلال 14 ساعة من الـ48. بعدها راجعت وأخذت وقتي بالمراجعة, وخلال تلك الفترة كذلك بدأت كتابة التقرير وبعد ماخلصته, كلمت المراقب أنه ودي أنهي الإختبار. بعد نهاية الإختبار بالمرة سلمت التقرير.

بعد لعبة الإنتظار دامت يوم بعد نهاية الإختبار, وصلتني رسالة إجتياز إختبار OSWE.

الدورة بالإضافة للإختبار أخذوا تقريباً 39 يوم من الـ60 يوم المحجوزة. يعني تقريباً 21 يوم دفعت لها على الفاضي :)


طبعاً من الحماس, رحت فنفس اليوم وحجزت للدورة اللي بعدها واللي هي الدورة التابعة لشهادة الـOSEP.

عنوان الدورة هو Evasion Techniques and Breaching Defenses (PEN-300)
حجزت الدورة بحيث تبدأ فأقرب فرصة, واللي هي كانت بعد أسبوع وشوي تقريباً.

عدى الأسبوع وشوي, وبدأت الدورة.
الكتاب هالمرة أطول (704 صفحة).
طبعاً نفس أسلوبي للدورة السابقة, بدأت بمحتويات الدورة الحالية "الكتاب" فقط.
عناوين محتويات الدورة موجود هنا.
الحلو فالدورات مثل هذي تعرفك على مصطلحات أنت ممكن ماقد مريت عليها لكن قد تعاملت معها. مثلاً مصطلح الـkiosk ماكنت أعرف عنه سابقاً لكن قد تعاملت معه قبل ما أدخل الدورة في أحد الأماكن وقدرت أتحكم به بدون ما أعرف المصطلح اللي يُطلق عليه :)


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

طبعاً الدورة كانت بشكل عام ممتازة, وخصوصاً لأشخاص مثلي لأني ماأحب أتعامل مع الـ#C إلا إذا أضطررت, والدورة خلتني "بالغصب" أتعامل معها عشان أحل التمارين + التحديات.
طبعاً خبرتي كانت محدودة بالـ#C ولا قد تعلمتها بشكل مخطط له, ولكن بحسب خبرتي باللغات الأخرى قدرت أتعلمها وأتعامل معها بالدورة, بالإضافة إلى أن الأكواد الموجودة بالدورة ليست صعبة الفهم, ويتم شرحها بالمحتوى كذلك.
الدورة تغطي كيف كمختبر إختراق تقدر تتخطى بعض الحمايات بحيث أنك تنفذ برمجيات تساعدك كمختبر إختراق. الدورة بشكل عام تمر على مراحل إختبار الإختراق وتقدم بعض الطرق التي تفيد مختبر الإختراق بكل خطوة بالإضافة إلى تخطي بعض الحمايات كما ذكرت.

الدورة لم تتطرق لمنتجات الـEDRs ومناقشة تخطيها.

خلصت الكتاب + أغلب التمارين (يمكن ماحليت إثنين فقط) خلال تقريباً 38 يوم. المحتوى كان شوي أثقل والكتاب أطول.

طبعاً بعد ماتخلص محتوى الدورة, هناك تقريبا 6 تحديات عشان تمارس اللي تعلمته بالدورة.
التحديات بعضها يتطلب وقت لحد ماتخلصه. كل تحدي يتكون من شبكة من عدة أجهزة, ولازم تختبر إختراق الشبكة وصولاً للصلاحيات الكاملة فيها وهي Domain Administrator أو Enterprise Administrator في حالة وجود أكثر من دومين. وكذلك في حالة وجود أكثر من Forest يجب أن تحصل على الصلاحيات الكاملة في كل Forest.
الفكرة بشكل عام أنك تبدأ إختبار الإختراق بدون مايكون عندك أي صلاحية على أي جهاز وصولاً للصلاحيات الكاملة بالشبكة.

أخذت أسبوع ويومين بالتحديات لحد ماخلصتهم كلهم.
أكرر, في حالة علقت في مكان أو تحدي وأحسست أنه بدأ يأخذ وقت طويل, لاتتردد في أنك تتطلع على التلميحات (hints) الموجودة على المنتدى الخاص بـOffsec. طبعاً يعطوك حساب لما تشترك في أحد دوراتهم.

بعد ماخلصت محتوى الدورة (38 يوم) + التحديات (9 أيام), حجزت الإختبار بحيث يكون في أقرب فرصة ممكنة واللي هي كانت بعد أربع أيام تقريباً.

اخذت بريك ثلاث أيام تقريباً بحيث أرتب ملاحظاتي وأجهزها للإختبار. سأتحدث عن طريقتي في أخذ الملاحظات (note-taking) في قسم خاص نظراً لأنها نفس الطريقة التي اتبعتها للدورات.

إختباري كان يبدأ تاريخ (25 مايو) الساعة 02:00 صباحاً بتوقيت السلطنة, فكان الوقت متأخر نوعاً ما, لكن رتبت جدولي بحيث يتناسب مع وقت الإختبار.
الإختبار ممكن تنجح فيه بطريقتين:


الطريقة الأولى هي أنك تحصل على 100 نقطة. كل عَلَم (Flag) له 10 نقاط. إذا حصلت على 100 نقطة, تعتبر حصلت على درجة النجاح.


الطريقة الثانية هي أنك تحصل على ملف اسمه secret.txt, وفيه الـ(secret flag). طبعاً محتواه طبيعي كأي عَلَم (Flag) آخر, ولكن يتميز بكونه أهم جهاز بالشبكة (كمحاكاة لأرض الواقع حيث أن لكل جهاز أهمية بالشبكة, وبعض الأجهزة أهم من غيرها).

الإختبار هذه المرة كان أصعب نوعاً ما.

خلصت جزء أساسي بالإختبار خلال تقريبا 6 ساعات, لكن بعدها إصطدمت بجدار لمدة 14 ساعة :(.
ماكنت أتوقع أنني بخلص الإختبار لأنني شفت أن الوقت قاعد يمضي وأنا مو قاعد أسوي شيء. بعدها قلت أكييد فيه شيء أنا مو قاعد الاحظه بالموضوع.

قمت ورجعت للـ(notes) وقعدت أقلب فيهم لعل أحصل شيء ممكن يساعدني. طبعا بالإختبار يخبروك أن في طريقتين للحل (two paths to own the network).

رجعت وفكرت قلت ليش ما أروح للطريقة الثانية بدل الطريقة الأولى اللي أنا أتبعتها ببداية الإختبار؟! قمت وبدأت في إستغلال الطريقة الثانية (عرفت الطريقين ببداية الإختبار, لكن أخذت الطريقة الأولى لأني حسيت أنها الأنسب).

بعد فترة بسيطة أيقنت أنني بين جدارين :(. جدار الطريق الأول وجدار الطريق الثاني. بما أنني بذلت جهد أكبر بالطريق الأول, عزمت على المحاولة فيه. رجعت للـ(notes) الخاصة بي عدة مرات, وفجأة جات ببالي الفكرة :)
قمت وطبقتها, وبالفعل ضبطت وجبت الدرجة المطلوبة للنجاح بالإختبار (120) وبعد فترة بسيطة حصلت على الـ(secret.txt).

لما شفت أني جبت كل شيء مطلوب, عزمت أني أبدأ كتابة التقرير. طبعا هذا كله صار في خلال 4 ساعات. بمعنى أنني خلصت المطلوب بالإختبار خلال تقريباً 24 ساعة. بعدها بدأت في كتابة التقرير خلال اليوم الثاني من الإختبار, ولما شفت أنني تقريباً خلصت كتابة التقرير, كلمت المراقب بحيث أنهي الإختبار.

بعدها بساعات قليلة من نهاية الإختبار, قمت بتسليم التقرير.

هنا بدأت لعبة الإنتظار, وتقريباً بعد يوم وشوي من الإنتظار وصلتني رسالة إجتياز الإختبار.

طبعاً من قوة الحماس, قررت أكرر نفس الأسلوب وأسجل لدورة الشهادة اللي بعدها واللي هي OSED بنفس اليوم:

الدورة إسمها Windows User Mode Exploit Development (EXP-301), سجلتها على أساس تكون في أقرب فرصة, واللي كانت تقريباً بعد أسبوعين من تاريخ إجتيازي لإختبار شهادة OSEP.

عدى الاسبوع والكم يوم, وبدأت فترة الدورة.

على نفس المنوال, بدأت كالعادة محتويات الدورة الموجودة بالكتاب (604 صفحة).

بداية الدورة كانت أشياء بسيطة تم طرحها بمحتويات الدورة التابعة لشهادة OSCP, ولكن بعد ذلك أصبح المحتوى أكثر متعة.

أنا شخصياً أحب مجال الـBinary Exploitation و الـReverse Engineering, وهذا جزء مماتم تناوله بالدورة. تتضمن الدورة الكثير من الـAssembly code snippets, فكشخص مبتدىء بالمجال, أنصح أن تكون لديه خبرة ولو بسيطة في قراءة الـx86 assembly وأيضاً خبرة ولو بسيطة بلغة البرمجة C بالإضافة إلى خبرة بلغة البرمجة Python لأن كل الإستغلالات التي ستكتبها ستكون بلغة Python. لغة Python في هذه الدورة مطلوبة لكتابة الإستغلالات وذلك يتضمن الإستغلالات المكتوبة في الإختبار, حيث لايمكنك كتابة الإستغلالات بلغة غير الـPython.

الـsyntax المستخدمة بالدورة هي intel syntax والمعمارية مثل ماذكرت هي x86. كل محتويات الدورة يتم تطبيقه على ويندوز (واضح من عنوان الدورة).
تتضمن الدورة كيفية إنشاء وتطوير الـshellcode الخاص بك, وهذا من ضمن الأساسيات التي يتم إختبارك فيها بالإختبار.
تتضمن الدورة أيضاً طرق تخطي بعض الحمايات مثل

الـDEP (Data Execution Prevention) و

الـASLR (Address Space Layout Randomization).


عناوين محتويات الدورة تستطيع إيجادها هنا.

الدورة كانت ممتعة جداً. أكثر دورة ممتعة أنضممت لها للآن.

طبعاً الدورة لاتصنف بأنها "متقدمة", حيث جميع محتوياتها تعتبر أساسيات في مجال الـExploit Development.

أنهيت محتوى الكتاب + التمارين (بدون حل بعض الـExtra Miles) خلال تقريباً 29 يوم.
بعد ماخلصت محتوى الدورة, من الحماس رحت وحجزت الإختبار بحيث يكون الإسبوع القادم.

طبعاً هذا من دون ما أحل أي من تحديات الدورة (تهور).

بعد الـ29 يوم, بدأت في حل التحديات. يوجد هناك ثلاث تحديات تحلها بعد ماتخلص محتويات الدورة.

طبعاً التحديات كانت جميلة, لأنها عبارة عن برامج حقيقية تحللها ومن ثم تكتب لها إستغلال بحيث تستغل الثغرة الموجودة وتنفذ الكود الخاص بك (RCE).

أنا حليت تقريباً 2.5 من التحديات الثلاثة, بعدها ماكان فيه وقت لإكمال الثالث لإن الإختبار قرب, فقلت أحسن أبدأ أستعد له.

الإختبار يتكون من ثلاث أقسام.
كل قسم له درجة معينة, ولكن درجة النجاح هي 60 من 100.


هذه معلومات من موقع Offsec تشرح لك بشكل بسيط محتوى كل قسم من الإختبار:

بمعنى أنك مجرد تحل قسمين من الإختبار المفروض تكون عندك درجة النجاح 60 (أو أكثر).

إختباري هالمرة كان يبدأ الساعة 03:00 الفجر بتوقيت السلطنة بتاريخ 11 يوليو. طبعاً للأسف هذا الوقت اللي كان متوفر حينها.

بدأت الإختبار, وأحسست أنه صعب (أو مُصعّب بطريقة غريبة). كنت فاهم الفكرة وأعرف وش أسوي بس تطبيق الفكرة كان فضييع لدرجة حسيت أنه الموضوع مُصعّب.
بعد عناء تقريباً 9 ساعات متواصلة على الجهاز قدرت أني أحل أول جزء من الإختبار.

بعدها فالوقت المتبقي, حاولت أشوف أسهل قسم ممكن أحله بحيث أضمن درجة النجاح بالإختبار.

قررت أني أحل القسم الأخير اللي عليه درجات أكثر.

بديت أحل, ولاحظت أن كذلك هذا القسم أصعب حتى من اللي حليته. بذلت جهد كبيير في حله, وكل الوقت المتبقي تقريباً من الإختبار 35 ساعة تقريباً بذلتهم فيه (مع البريك).
بعد جهد متواصل وكبير, قدرت أنّي أحله وأجيب أكثر من درجة النجاح ولله الحمد قبل أربع ساعات تقريباً من نهاية الإختبار.

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

لكن فيه ملاحظة. في الإختبار, كان أحد الأجهزة الهدف فيه مشاكل, حيث أن الإستغلال عندي شغال على الجهاز اللي كنت اطور فيه الإستغلال ولكن ماكان يشتغل على الجهاز الهدف, وكنت متأكد أنني قاعد أسوي كل شيء صح. حاولت أتواصل مع بعض المدراء بقناة Offsec الرسمية بالدسكورد بخصوص الموضوع, وقالولي تواصل مع الدعم عبر الإيميل .. إلخ. طبعاً ماأحد فادني وعطاني الإجابة اللي أريدها.
حليت هذه المشكلة بعد ماسويت reset عدة مرات للجهاز الهدف. نفس الإستغلال, ولكن فقط سويت reset عدة مرات لحد ماضبط!

طبعاً بالإضافة إلى ذلك, صارلي موقف وأنا كنت أؤدي هذا الإختبار, واللي هو كنت أصور شاشتي بحيث أراجع أخطائي في حالة ماعديت الإختبار. سابقاً كان تصوير الشاشة مسموح, ولكن سنة 2020 تقريباً تم إلغاء السماح بتصوير الشاشة. عموماً, المراقب شاف أني أصور شاشتي, وقالي أغلق التصوير, وأحذف اللي صورته. بكل بساطة خبرته أنني ماكنت على علم أنه تم إلغاء السماح بتصوير الشاشة مؤخراً, وسويت اللي طلبه, والأمور تمام.

بعدها إنتهى وقت الإختبار وأنا حليت فقط قسمين من ثلاثة أقسام, والدرجة اللي حصلت عليها هي 70 من 100 حسب درجة كل قسم حليته. بعد الإختبار, بدأت أكتب التقرير, وانهيته خلال المهلة اللي هي 24 ساعة,  وقمت بإرساله للتقييم.

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

يعني لو أقارن التحديات اللي بالدورة بالإختبار, التحديات أسهل بكثير من اللي شفته بالإختبار. طبعاً ليس الهدف اني أعطي إنطباع أن الإختبار صعب, ولكن فقط كسرد عن إنطباعي عن الدورة والإختبار.

حتى أنني سألت أحد الأشخاص اللي أخذوا الإختبار, وقاللي أن الإختبار عادي جداً (مو صعب) وتناقشنا شوي, وعرفت بعدها أن هناك (كالعادة) مجموعة (عدة نُسخ) من الإختبار ويجيك إختبار بشكل عشوائي. اللي وصلت له أن إختباري كان مختلف عن إختبار الشخص اللي سألته, وهذا يفسر كلام بعض اللي سألتهم كذلك وأخذوا الإختبار بأن الإختبار "صعب".

مرة ثانية, أنا ماأقول أن الإختبار صعب, يمكن أنا كنت مقصر عشاني ما أكملت حل التحدي الثالث الموجود بالدورة :( أو يمكن ماكنت محضر صح, أو يمكن تسرعت وحجزت الإختبار بسرعة وفي وقت متأخر من الليل, أو يمكن الإختبار كان بالفعل صعب :)

مابعد الإختبار
كالعادة بدأت لعبة الإنتظار مرة أخرى, بس هالمرة شوي أختلف الوضع..
أنتظرت يوم, يومين, ثلاثة, أربعة, ودون رد منهم على نتيجة الإختبار. هنا بدأت شوي أشك باللي صار, وليش هم ممكن يأخروني بهالطريقة. شفت بعض الشباب ردوا عليهم خلال تسع أيام نظراً لأن الدورة كانت جديدة, ومافيه أشخاص يقيّموا الإختبارات. قلت أنتظر ليش لا. أنتظرت خمسة, ستة, سبعة, .. تسعة أيام ولكن دون رد! حاولت أتواصل معهم, ولكن كل اللي يقولوه هو أن إختبارك قيد التقييم.

طبعا في يوم العمل الـ11 وتحديداً بعد 14 يوم من تقديمي للتقرير, ردوا علي بهذه الرسالة:

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

قمت ورسلت لهم كل الأشياء اللي عندي, وانني ماكنت أعرف أن تصوير الشاشة تم إلغاء السماح به مؤخراً, وأي شيء له علاقة بالإختبار من قريب ولا بعيد حطيته بإيميل واحد ورسلته.

طبعاً أنتظرت كثيير والدعم حقهم ماكان يرد على أغلب الإيميلات اللي كنت أرسلها, ولكن وأخيراً وبعد 36 يوم من تقديم تقرير الإختبار, وصلني الرد "أننا راضون عن عملك وسيتم تقييمه وسيتم إرسال نتائج الإختبار خلال العشر أيام عمل القادمة".

في نفس اليوم بعد كم ساعة من الرسالة السابقة, وصلتني أخيراً رسالة إجتياز إختبار OSED

طبعا وفي نفس اليوم, وصلتني رسالة الحصول على شهادة الـOSCE3 والتي تحصل عليها عند إكمالك للشهادات الثلاث السابقة (OSWE, OSEP, OSED)

وأخيراً خلصنا من هالعذاب النفسي ههه.

الدرسين المهمين من هالتجربة:

  • لاتصور الشاشة.
  • لاتتواصل مع أي حد خلال الإختبار حتى في قناتهم (قناة Offsec) الرسمية بالدسكورد, لاتتواصل مع أي أحد إلا على إيميلهم الخاص فقط وإذا إحتجت فقط.

وغالباً مابيفيدوك إذا تواصلت معهم عبر الإيميل إذا كان عندك موضوع أثناء الإختبار.

وكذا خلصت التجربة :)

كتابة ملخصات الدورات والتقرير

تقريباً جميع الملخصات وتقارير الإختبار (Exam Reports) كتبتهم بالـneovim.

بالنسبة لي كان neovim الأنسب لي لأنني أساساً من قبل كنت أستخدمه في كتابة الكود, فبمجرد ثبتت بعض الإضافات اللي تساعدني في كتابة ملخصات الدورات وتقارير الإختبارات, صار الأفضل من بين الخيارات الموجودة. طبعاً أستخدم صيغة markdown لكتابة الملخصات والتقارير.

أستخدم عدة إضافات لهذا الغرض, وهذه أبرزها:

  • Vundle: أستخدم هذه الإضافة لإدارة جميع الإضافات اللي عندي بالـneovim.
  • md-img-paste: أستخدم هذه الإضافة للصق الصور وإدراجها بصيغة الـmarkdown.
  • markdown-preview: أستخدم هذه الإضافة لإستعراض ملف الـmarkdown (الملخص أو التقرير) بالمتصفح.

مجرد تركبها عندك بالـneovim بتكون جاهز لكتابة الملخصات والتقارير بشكل سهل وسلس. إذا لاحظت هناك رغبة وتساؤل في كيفية تنصيب هذه الإضافات على الـneovim, سأقوم بعمل فيديو على اليوتيوب لشرح ذلك.

في حالة لم تكن من مستخدمي الـneovim, وتحتاج إلى برنامج له واجهة جميلة, أنصحك بـObsidian.

طبعاً للإختبار لازم يكون التقرير بصيغة PDF ويكون مضغوط بداخل ملف ارشيفي بصيغة 7z, استخدمت برنامج بسيط برمجته عشان يحول صيغة التقرير اللي كتبته من markdown إلى PDF وبعدها يضغطه هو وملفات الإختبار بحيث ينتج لك ملف 7z تقدر تسويله submit.

البرنامج فكرته وتصميمه الأساسي مقتبس من هذا المشروع. كل اللي سويته هو حولت البرنامج اللي ينتج التقرير من لغة Ruby إلى Python مع بعض التعديلات عليه عشان يتناسب مع متطلبات إختبار OSED.

مثل ماذكرت, هذا البرنامج استخدمته لإختبار OSED, بس يمديك تعدل عليه عشان يتناسب مع أي إختبار آخر.

طبعاً هذا البرنامج أيضاً ينفع للإستخدام العام في حالة عندك تقرير إختبار إختراق حقيقي, ممكن تكتبه بالـmarkdown وبعدها تحوله إلى PDF بكل سهولة وبساطة.

البرنامج السابق يستخدم pandoc للتحويل من markdown إلى PDF.

إنتقادات لـOffsec

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

خلال العام 2020 و 2021, الكثير من التغييرات حدثت في Offsec, منها طرح دورات وشهادات جديدة مثل الـOSEP (2020), OSED (2021), OSMR (2021) .. وغيرها.

بالإضافة إلى ذلك, حدث توسع واضح للشركة.

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

كمثال, لو كنت أنا ودي أشتري دورة macOS Control Bypasses واللي تعطيك شهادة OSMR (Offensive Security macOS researcher) عند إجتيازها.

الدورة هذي عشان تشتريها لازم تشترك في أحد من الإشتراكات التالية

كان سابقاً سعر كل دورة من الدورات المرحلة الثالثة (الصورة التالية) من 1249$ إلى 1499$ ولكن الباقات الجديدة أضافت بعض الأشياء اللي مالها أي معنى في حالة أنا فقط أردت أخذ OSMR.

أنا خلصت كل الدورات اللي تكلمت عنها في هذه المقالة في ظرف أقل من شهرين لكل دورة, وكل إختبار نجحت فيه من أول محاولة. لكن الإشتراك واللي هو أقل سعر اللي بالصورة بيتيح لك محتوى الدورة لمدة سنة كاملة, وغير كذا بيعطيك محاولتين للإختبار, وغير كذا بيعطيك كم دورة إضافية أنت ماتحتاجها بداخل الإشتراك. يعني لو أنا نجحت فالإختبار من أول محاولة, بكون دفعت حق محاولة كاملة إضافية (تكلف 249$) بدون فائدة. وهذا من غير الـ(Exclusive Content) اللي أنا ما أحتاجها من الأساس. بإختصار صارت فوضى من وجهة نظري, ليش تعطيني أشياء أنا ماأحتاجها؟!

هذا (وبالإضافة إلى السعر المبالغ فيه من وجهة نظري) اللي وقفني عن أكمل أخذ دورات Offsec.

بالإضافة إلى ذلك, أحد المواضيع اللي أشوفها سلبية أيضاً في Offsec هي أسماء الشهادات.

مثلاً OSWE (Offensive Security Web Expert) شخصياً أشوف الإسم غير مناسب إطلاقاً للدورة. دخلت الدورة وعديت الإختبار, ولكن لاأستطيع أنني أصف نفسي بـ Web Expert, ليس تواضعا, ولكن محتوى الدورة من وجهة نظري ماأشوفه يخليك تكون Web Expert. محتوى الدورة أرى أنه به نواقص كثيرة, وهناك مجال واسع للتطوير بمحتوى الدورة, وحاولت أن أتواصل مع Offsec بالدسكورد عشان أعطيهم وش الأشياء اللي أتمنى أشوفها تنضاف بالدورة:

الجميل بالموضوع أنهم يتقبلوا مثل هذه الطلبات للتحسين, وهذه نقطة إيجابية.

طبعاً ما أقول أنه بسبب الرسالة اللي فوق (لكن قد يكون), بعد ثلاثة أشهر من الرسالة السابقة نزل تحديث لدورة WEB-300 (OSWE) وتم إضافة ثلاثة مواضيع من ضمنها الموضوع اللي كتبته برسالة الدسكورد فوق.

رغم ذلك, أنا أشوف أنه Web Expert كلمة واسعة جداً, وماينفع تسمي شخص Web Expert بس عشانه قرأ كتاب 400 أو 500 صفحة.

أيضاً, بخصوص شهادة OSCE3 (Offensive Security Certified Expert), طبعاً نخلي اللقب Expert على صوب شوي, ونروح نشوف وش الشهادات اللي تتكون منها.

نلاحظ أنها دورة تصنف على أنها متقدمة (✅)

نلاحظ أنها دورة تصنف على أنها متقدمة كذلك (✅)

نلاحظ أن الدورة التابعة لشهادة OSED لاتصنف على أنها متقدمة.

سؤالي الحين, كيف تحط شهادة أسمها (Offensive Security Certified Expert 3) أحد مكوناتها هي شهادة لاتصنف على أنها متقدمة (وهي الـOSED) ؟!

فوق هذا كله, هم حاطين الـExpert كـمرحلة (level) مختلفة عن الـAdvanced

الـمرحلة Expert تحتوي على دورة وحيدة وهي الـEXP-401 واللي تعطيك شهادة OSEE (Offensive Security Exploitation Expert) عند إجتيازها.

السؤال هو: بما أنك تفرق بين الـAdvanced و الـExpert, كيف تعطي شخص شهادة (Offensive Security Certified Expert 3 (OSCE3)) وهو كل الدورات اللي كملها هي ليست Expert-level ؟

إنتقادي هنا هو في تسمية الشهادات فقط.

أخيراً, إنتقادي الأخير سيكون في الدعم لشركة Offsec :)

خلال فترة أخذي للشهادات, كانت لدي أسئلة متخصصة قليلاً في أقسام الإختبار ومدى السماح بطرق محددة في الإختبار, فكانوا دايماً يقولوا لي أرسل للدعم وإسألهم. لاحظت أن غالب الأحيان لما ترسل للدعم عبر الإيميل, إجابتهم ماتكون مفيدة. مثلاً تسألهم هل الطريقة X مسموحة بها بالإختبار؟ طبعاً كل اللي يقولوه هو أنك روح أقرأ تعليمات الإختبار. طيب أنا قريته قبل لا أرسل لكم أصلاً بس ماحصلت شيء بخصوص الموضوع. القصد أنني لاحظت أن الدعم بالمجمل لك عليه, وهذا بالضبط اللي صار لما كنت أرسل لهم بخصوص التحقيق اللي صار لما خلصت إختبار OSED, فكانوا أغلب الإيميلات مايردوا عليها وشغلهم كان بالطويلة.

طبعاً هنا أتكلم عن الدعم لما ترسل لهم إيميل, ولكن فيه أشخاص معينين في Offsec لما أتواصل معهم عبر الدسكورد بخصوص سؤال معين بأحد التحديات دائماً يفيدوك إذا عندك سؤال. فإذا كان معك سؤال بخصوص محتوى الدورة أو التحديات الموجودة بها, توجه إلى قناتهم بالدسكورد.

الخاتمة

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

هذا ماعندي, فإن أحسنت فمن الله, وإن أسأت أو أخطأت فمن نفسي والشيطان.

أتمنى كانت المقالة ذات فائدة ولو بسيطة. في حالة وجود أي سؤال أو إستفسار عن أي شهادة تحدثت عنها في هذه المقالة, يمكنك التواصل معي على تويتر :)