كيف قمنا بإعداد مرحلة التأهيل من CTFZone-2020

30 نوفمبر - 1 ديسمبر اجتاز مرحلة التصفيات من بطولة CTFZone ، والتي سجلت 1043 فريقا من جميع أنحاء العالم. وفقًا لبياناتنا ، تم حل المشكلات حتى في زيمبابوي (26 عنوان IP فريدًا). حفر أعمق ، وكان فريق الجامعة من مدينة بولاوايو.


أصبحت CTFZone هذا العام هي المرحلة التأهيلية ل DEF CON CTF ، لذا فإن الفريق الذي يفوز بالنهائي (الذي سيقام في OFFZONE من 16 إلى 17 أبريل 2020) سيذهب إلى البطولة في لاس فيجاس. لكي يحصل المحظوظون على وقت للحصول على تأشيرات ، تم نقل مواعيد المؤتمر إلى تاريخ سابق.


تعد DEF CON CTF أقدم وأهم مسابقة أمنية للعديد من الفرق. لا يتم منح الفائزين فرعًا للنخيل ، لكن حتى بدونه ، كل شيء يسير على ما يرام. الآن في العالم ، هناك 6 بطولات فقط يمكنك من خلالها التأهل إلى DEF CON CTF.





جغرافيا المشاركين CTFZone

عن المفهوم


في حركة CTF الدولية ، حدث أن فرق من مناطق مختلفة تتخصص في مناطق معينة. على سبيل المثال ، من الناحية التاريخية ، كان الروس أفضل في حل الويب ، في حين أن الفرق الآسيوية والأمريكية أقوى في PWN. على نفس DEF CON ، كل المهام تقريبًا تكون ثنائيات. ربما هذا هو السبب في أداء الفرق الأمريكية والآسيوية مؤخرًا بشكل أفضل هناك. نحن في CTFZone نحاول أن نظهر أن CTF ليس فقط PWN ، ولكن أيضًا العديد من الفئات الأخرى المثيرة للاهتمام: الويب ، التشفير ، الاتجاه المعاكس ، OSINT ، الطب الشرعي ، PPC.


شبكة


في المهام المستندة إلى الويب ، حاول المؤلفون - خبراء اختبار الاختراق أثناء ساعات العمل - نقل الثغرات الأمنية من مشاريع العالم الحقيقي. على سبيل المثال ، في مهمة Web-Shop ، استخدمنا مكتبة python-markdown2 الشهيرة ، حيث اكتشف خبرائنا نقطة ضعف في اليوم السابق لتجاوز مرشح XSS قبل أسابيع قليلة من المنافسة. خلال CTF ، وجد كل فريق من الفرق الأربعة الحاسمة نسخته الخاصة من مشكلة عدم الحصانة هذه ، مما يجعلنا نفكر في جودة التصفية في المكتبة.


بالنسبة لمهمة Web-Card ، استخدمنا ثغرة اليوم صفر في فئة التحقق من صحة Java XML القياسية. تم اكتشافه عند اختبار جدار حماية تطبيق ويب حقيقي ، لذلك قمنا بدعوة المشاركين لتجاوز WAF ، الذي قمنا بتطويره خصيصًا للمهمة. النسخة التفصيلية من wrightup سيكون في وقت لاحق.


حسنًا ، أظهرت مهمة EmeraldRush كيف أصبحت GitLab و Github على مدار العام الماضي - نقاط الضعف المرتبطة بروبي ، وكلاهما مكتوب. يعتمد أحدهما على CVE-2018-18649 (ومع ذلك ، لا يوجد استغلال مفتوح للوصول إليه) ، والثاني تم اكتشافه ونشره مؤخرًا على منصة HackerOne (للحصول على وصف ، راجع المقال ). بالطبع ، تم إخطار المطورين بكل من هذه الثغرات وجميع نقاط الضعف الأخرى على الويب قبل المنافسة ، وفقًا لمبادئ الإفصاح المسؤول.


التشفير



بدوره ، أخذ فريق تطوير cryptotask كأساس ليس فقط للأخطاء التي واجهتها باستمرار في CTF ذات الصلة بتنفيذ RSA ، ولكن أيضا الهجمات المثيرة في السنوات الأخيرة. على سبيل المثال ، كان على المهمة OCB2 التعامل مع الهجوم على نظام التشفير المتماثل الذي يحمل نفس الاسم ، لاكتشافه في مؤتمر Crypto الذي منحه جائزة Best Paper Award.


وفي مهمة NTRU ، كان من الضروري دراسة الهجوم على نظام شعرية غير متماثل. تم وصفها في شهر سبتمبر ، لكن العثور على المقالة المناسبة وقراءتها لم يكن كافيًا. واجه مؤلف المشكلة نفسه المشكلات عندما اتضح أن المنشور أخذ الحالة الأكثر ملاءمة للوصف ، والتي لم تنجح مع المعلمات المحددة في المهمة النهائية. اضطررت إلى إعادة الخوارزمية! من المثير للاهتمام أن أحد المشاركين (أليكسي أودوفينكو من فريق LC / BC) حل المشكلة دون مقال ، حيث توصلوا إلى طريقة حل مختلفة قليلاً تستند إلى نفس المبدأ.

الطب الشرعي


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


عن التدريب


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


قبل ثلاثة أشهر من بدء الاجتماع العام ، تم اختيار المواعيد - 7 و 8 ديسمبر. توصل الفريق إلى نتيجة مفادها أنه لن يكون هناك وقت ، لكن لا يزال هناك مجال للعمل. وبعد سبعة أيام ، تم تغيير هذه المواعيد النهائية غير الواقعية قبل أسبوع ، حيث إن التواريخ المحددة وجميع الإجراءات التالية قد اتخذت بالفعل CTFs. كل ما بقي هو أن تبتسم وتبسم أسنانك وتعمل بثلاثة أضعاف الطاقة. لم يكن هناك عودة إلى الوراء ؛ تطوير startanul.





نتيجة لذلك ، كانت المهمة أكثر من المعتاد - 30 قطعة. كل مهمة فريدة من نوعها ، ولكنها لا تعيش طويلاً: 3 أشهر من الإعداد و 36 ساعة فقط من الرحلة. لكن ماذا! ستلمس CTFers الرائدة في العالم الأزرار التي قمت برسمها بعناية على الواجهة الأمامية - سوف تغمر نفسها في فكرتك وتعطيك ردود فعل شخصية. هذه تجربة رائعة وفرصة لإخبار مجتمعنا عن عملهم. بعد كل شيء ، في كثير من الأحيان مع وجود ثغرات أمنية تكمن في المهام ، يتم توصيل نوع من القصة. كانت بعض المهام صعبة للغاية بحيث لم يستطع أحد تحديدها. بحلول نهاية تأهيل المشكلات التي لم يتم حلها ، بقيت اثنتان: الطب الشرعي الشعبي وبطاقة الويب .


حول البنية التحتية


تنظيم البنية التحتية للبطولة يمكن التعامل معها بطرق مختلفة. على سبيل المثال ، بالطريقة القديمة ، قم بقطع الأجهزة الافتراضية لمطوري المهام ومنحهم إمكانية الوصول إليها. في هذه الحالة ، يصبح كل مطور مسؤولاً راضياً عن المضيف المحلي ، ويعمل كل شيء كما يريد ، ويظل توفير اتصال الشبكة فقط. من الواضح ، مع ذلك ، أنه لا يوجد حديث عن أي تكرار وتسامح مع الخطأ في هذه الحالة. الشخص المسؤول عن بنيتنا الأساسية قد أخفق في فشل أحد أقطاب التدريب في ZeroNights في عام 2016 ، وهذه المرة ، التي تم تدريسها من خلال تجربة مريرة ، قرر القيام بالأشياء بطريقة مختلفة.


قررنا لفترة طويلة المكان الذي سنعيش فيه ، وفي النهاية قررنا الالتفاف في السحابة. الأسباب واضحة: مسابقات للمتسللين ، لذلك من الأفضل كسر Google ، وكانت هناك بالفعل تطورات جاهزة في zashnik. كانت الأداة الرئيسية لإنشاء النظام الأساسي هي Terraform ، التي تسمح لك بوصف البنية التحتية في شكل كود في شكل إعلان ، وتعتني بجميع الإيماءات الأخرى. هذا ، على سبيل المثال ، لا تحتاج إلى التفكير في كيفية الانتقال إلى Google API وإخباره بعدد الأجهزة الظاهرية التي تريد نشرها.
كان من الضروري أيضًا تحديد كيفية بدء المهام. كنا محظوظين جدًا لأن جميع المطورين كانوا قادرين بالفعل على كتابة المهام في Docker. هذا عبارة عن حاوية حاوية من الضجيج تسمح لك بحزم خدمة بكل التبعيات في بيئة معزولة لا تتغير بين إعادة التشغيل. لا توجد طرق عديدة للعمل مع Docker: هؤلاء هم أساسًا أوركسترا مثل Compose و k8s. لجعل كل شيء جميلًا ، أي تطبيق قائمة الأمنيات مع الموازنة والنسخ المتماثلة والتسامح مع الأعطال والمؤسسات الأخرى ، كان اختيار الأوركسترا واضحًا - Kubernetes.




هنا ، ومع ذلك ، كان هناك بعض سوء الفهم بين منشئ البنية التحتية والمطورين. يمثل البنتستر فئة خاصة من عالم تكنولوجيا المعلومات: فهم يشبهون إلى حدٍ ما المسؤولين والمسؤولين عن الشبكات ويعرفون كيفية قاعدة البيانات وموجهون في البرمجة. بشكل عام ، وليس الناس ، ولكن السكاكين السويسرية. إنهم استثنائيون وطموحون للغاية ، لكن لسوء الحظ ، عندما تقرر كتابة "هيلم" لكل مهمة ، نسيت بطريقة أو بأخرى أن المحتالين ما زالوا غير مدراء محترفين. أدى ذلك إلى حرب صغيرة ، كان من الضروري خلالها شرح سبب اتخاذ بعض القرارات بالقوة ووضع قيود.


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


نظرًا لضيق الوقت ، لم يكن من الممكن أتمتة كل شيء - يجب نقل بعض الأشياء إلى أكتاف المطورين أنفسهم. اضطر العاشقون إلى الجلوس في اجتماعات ، حيث قيل لهم كيف يكتبون الخوذات ، بينما هم ، على ما يبدو ، لعنوا هذا التفاني على ماهية الضوء. ولكن ، على الرغم من كل شيء ، نجحنا - تم توضيح جميع المهام وتعبئتها في مخططات Helm ، وتم تكوين المراقبة في شكل Grafana و Prometheus. لقد وصلت لحظة الحقيقة.


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


حول التصفيات النهائية


نتيجة لذلك ، تم اختيار 10 فرق نجوم للنهائيات. لماذا ممتاز؟ والحقيقة هي أن 6 من أصل 10 فرق في بطولة العالم العشرة الأولى في CTFtime ، والأربعة المتبقية متأخرة قليلا عن المراكز العشرة الأولى ، ولكن أيضا في القمة.


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




تصفيات CTFZone 2019 النهائية

ما التالي؟


علاوة على ذلك ، سيكون من الممكن الزفير قليلاً ، ثم أخذ نفسًا عميقًا مرة أخرى وبدء الاستعداد للنهائي. سيتم عقده في تنسيق الهجوم / الدفاع ، وهذه قصة مختلفة تمامًا. قد يتساءل شخص ما: لماذا هذا كله؟ السؤال جيد ، لكن ربما لا توجد إجابة منطقية عليه. إنه مجرد أنه إذا كنت على الأقل لمدة 5 ثوانٍ ، فيمكنك حقًا أن تتفوق على ما يحدث ، وتشعر أنك على قيد الحياة وأن ترى الفريق الذي أنت جزء منه ، فهذا ليس هباء!

Source: https://habr.com/ru/post/ar481280/


All Articles