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

ما هو CTF ؟؟Capture The Flag (CTF) هي مسابقة أمان كمبيوتر شائعة جدًا (في شعبيتها كمنافسة تافهة لمراكز البيانات). هناك تنسيقان: المهمة (jeorpady) والخدمة (الدفاع عن الهجوم). لقد فعلنا المهمة.
تشبه مسابقات المهام الكلاسيكية شكل "لعبتك". عندما يكون هناك مجموعة من المهام لمختلف الفئات التي لها تكاليف مختلفة.
الفئات التقليدية في CTF هي: نقاط الضعف على شبكة الإنترنت ، والهندسة العكسية ، والتشفير والتشفير ، وعلم steganoography ، و pwn - الاستغلال الثنائي.
الفرق (من 1 إلى n) تحل المهام وأي شخص يحل المهام لعدد أكبر من النقاط هو زميل جيد.
استمرت منافستنا أكثر قليلا من يوم واحد. كان من المفهوم أنه فردي - فرق من شخص واحد. أردت أن يشارك الأشخاص في المؤتمر للتعرف على بعضهم البعض شخصيًا. لذلك ، يجب حل المهام في غضون ساعتين ، ولا تتطلب الكثير من موارد الحوسبة ، ومع ذلك ، يجب أن تكون المهام الصعبة أيضًا - لا يجب أن تفوز جميعها: D
نتيجة لذلك ، كان لدينا 6 مهام (كانت المهمة السابعة ممتعة فقط) ، يبدو أن شخص واحد في اليوم يكفي. المهام نفسها ، للأسف ، لم تعد متوفرة. ولكن ربما بعد قراءة التحليل ، هل ترغب في المشاركة في المرة القادمة؟

أود أن أعرب عن عميق امتناني للرجال الذين بدونهم لم يكن هذا CTF قد حدث:
@ groke و
@ mostobriv . أروع الأفكار والحلول التقنية وحفل النشر في الليلة السابقة لبدء - ما يمكن أن يكون أكثر جمالا عندما يكون في شركة رائعة؟! :)
ستيجانو: 100 -
tiny.cc/6fj06yدان dataset من 3 391 صور القطط والكلاب.

تم وضع علامة على "Stegano". وظائف مبطن تنطوي على إخفاء بعض المعلومات. بدا من السهل تخمين أن القطط والكلاب شيء ثنائي. بعد قليل من التفكير ، يمكننا أن نفترض أن هذا التسلسل من القطط والكلاب يمكن أن يكون نوعًا من الرسائل الثنائية. لنفترض أن الأختام ستكون 1 ، والكلاب - 0. إذا لم تنجح فجأة ، فيمكنك مبادلتها ببساطة. بعد ذلك ، نجد نموذجًا مدربًا يصنف القطط والكلاب. هناك العديد من الأمثلة على الدروس المستفادة حول تصنيف القطط والكلاب ، وكذلك النماذج المدربة بعدها - يمكنك العثور على نماذج مدربة على جيثب. نأخذ نموذجا مدربا ، في الحالات القصوى ، نقوم بتدريب أنفسنا نتوقع كل صورة كـ 0 أو 1. ويتم ترجمة هذا التسلسل من "بايت" إلى سلسلة.
يمكنك رؤية حل المؤلف هنا | import time |
| import sys |
| import os |
| |
| import numpy as np |
| |
| from keras.models import load_model |
| from keras.preprocessing import image |
| |
| data_path = "../data/" |
| picture_path = data_path + "{}.jpg" |
| |
| CLASSES = [1, 0] |
| |
| def run(model_path): |
| pictures_names = os.listdir(data_path) |
| pic_num = len(pictures_names) |
| |
| model = load_model(model_path) |
| |
| res = [] |
| for pic in range(pic_num): |
| img = image.load_img(picture_path.format(pic), target_size=(224,224)) |
| x = image.img_to_array(img) |
| x = np.expand_dims(x, axis=0) |
| preds = model.predict(x) |
| |
| y_classes = preds.argmax(axis=-1) |
| res.append(CLASSES[y_classes[0]]) |
| |
| res = ''.join(map(str, res)) |
| |
| n = int("0b" + res, 2) |
| text = n.to_bytes((n.bit_length() + 7) // 8, 'big').decode() |
| |
| print(text) |
| |
| |
| if __name__ == '__main__': |
| if len(sys.argv) < 2: |
| print("path to the model expected") |
| exit(1) |
| |
| run(sys.argv[1]) |
نحصل على النص الذي يحتوي على العلامة `AICTF {533m5_y0u_und3r574nd_4n1m4l5}`.
ومع ذلك ، لسبب ما ، حاول عدة مشاركين في أوقات مختلفة تمرير علم غريب بكلمة "متبنى". لا ندري من أين حصلوا عليها ، وإذا شرح المشاركون فجأة ، سيكون الأمر رائعًا: D
ملاحظات

كانت الخدمة عبارة عن "مدونة" ، حيث يمكن لكل مستخدم ترك إدخالات عامة وخاصة. نظرًا لأن الوظيفة كانت صغيرة - فليس من الصعب تخمين أنك تحتاج إلى الحصول على سجل خاص بطريقة أو بأخرى.
كان هناك في الواقع حقل إدخال واحد فقط - معرف السجل.
ما يجب القيام به
أول ما يتبادر إلى الذهن لحارس الأمن هو محاولة حقن sql. ومع ذلك ، يقال أن الخدمة محمية من قبل منظمة العفو الدولية. ولم أستطع إرسال حقن SQL بسيطة. وردت الخدمة على مثل هذا الهجوم من خلال "محاولة القرصنة!" حاول الكثيرون تمريرها كعلم ، لكنهم اعتقدوا حقًا أن كل شيء بسيط جدًا؟
تحت غطاء محرك السيارة للاختبار كان هناك شبكة LSTM حللت معرف حقن sql. ومع ذلك ، يجب أن يكون الإدخال إلى LSTM طول ثابت. للبساطة ، قمنا بتحديده بـ 20 حرفًا. أي أن المنطق كان: نأخذ الطلب ، إذا كان أكثر من 20 حرفًا - قمنا بقطعه والتحقق من باقيه ، إذا كان أقل ، ثم أضف 0.
في الواقع ، لذلك ، لم يعمل حقن SQL البسيط على الفور.
ومع ذلك ، كانت هناك فرصة للعثور على متجه لن ترى الشبكة وتطلبه جيدًا.
قارئ جديد حافة QR

كان من الضروري التعرف على رمز الاستجابة السريعة:

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

كانت الخدمة نوعًا من المنافسة مثل على kaggle. كان من الممكن التسجيل وتنزيل البيانات وتحميل النماذج ، وتم اختبارها على البيانات الخاصة وتم تسجيل النتيجة على لوحة النتائج.
والهدف يبدو واضحا - الحصول على دقة 1.0.
هل كانت صعبة؟ مستحيل: د
تم إنشاء البيانات بشكل عشوائي ، وبطبيعة الحال ، كان يعني ضمنا أنه يجب الحصول على هذه الدقة بطريقة أخرى. قبلت الخدمة الطرز بتنسيق .pickle. ويبدو أن الجميع يعرف بالفعل ، لكن اتضح أنه لا يمكن لأي شخص الحصول على
RCE من خلال المخلل ، ولكن ما الذي يمكن أن يكون أسوأ؟
قرار نيكيتا (konodyuk)
في الواقع ، كان هذا يجب القيام به! بعد الحصول على الوصول عن بعد إلى الخادم ، كان من الممكن تنزيل البيانات التي تم اختبار الحل عليها وإعادة تدريب النموذج والحصول على دقة 1.0 ومعه العلم.
فوتوغرافي

كما يوحي الاسم ، الخدمة تفعل شيئا مع الصور.
اقترحت واجهة تطبيق مذهلة تحميل صورة.

استجابةً لذلك ، تم إرسال صورة ذات نمط وشعار منافسين تم تغييرهما.

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

يمكن الاطلاع على ملفات المهمة
هنايتلقى النظام شفرة الثعبان وينفذ في المنزل. لكنها بالطبع لن تفعل ذلك فقط ، لأن هناك "منظمة العفو الدولية". إنه يتحقق من إصدار الثعبان ولا يسمح بـ "الخطأ". إذا اجتاز الرمز الاختبار ، فقد تم تشغيله على الخادم - مما يعني أنه يمكنك الحصول على الكثير من المعلومات.
يمكن تمييع الرمز الفرعي الذي يقدمه المترجم الشفري في أجزاء صغيرة ، والشبكة العصبية التي فحصتها ستفقد (كانت أيضًا LSTM) ، أو يمكنك إضافة مجموعة من القمامة في النهاية.
علاوة على ذلك ، عندما تعرف كيفية تنفيذ شفرة Python ، كان من الممكن اكتشاف "flag_reader" binar على الخادم ، والذي تم إطلاقه من الجذر. كان binar مشكلة عدم حصانة سلسلة التنسيق التي من خلالها يمكن قراءة العلم.
يمكن العثور هنا على حل Nikita (konodyuk).النتائج
في نهاية المسابقة ، تم تسجيل 130 مسجلة ، 14 مرت على الأقل علمًا واحدًا ، وتم حل 5 من 6 مهام - وهذا يعني أننا تمكنا من تحقيق التوازن بين المهام المعقدة والسهلة.
بالنظر إلى أننا لم ننشر المعلومات كثيرًا ، كما فعلنا للمرة الأولى ولن نكون مستعدين لحمل كبير ، ما زلنا نعتبر المنافسة الناجحة الفائقة.
الجوائز التي فاز بها:- المركز الأول - صامت
- المركز الثاني - كرمور
- المركز الثالث - konodyuk
تم تكريم الفائزين في نهاية اليوم الثاني من أيام PHDays مع تكريم وجوائز رائعة: AWS DeepLens و Coral Dev Board وحقيبة ظهر تحمل شعار المؤتمر.
صنف الرجال الذين يلعبون عادةً CTF الكلاسيكية وأصبحوا الآن مولعين بالتعلم الآلي مسابقتنا ، لذلك نأمل أن ينضم إلى مراكز البيانات المهتمة بالأمان في المرة القادمة.