تصدع ذلك! يسلط الضوء على KringleCon 5: الحلقات الذهبية

تصدع ذلك! يسلط الضوء على KringleCon 5: الحلقات الذهبية

يلتقي التعلم بالمرح في تحدي SANS Holiday Hack لعام 2022 - اربط نفسك في رحلة تكسيرجاك في القطب الشمالي بينما أحبط خطة جرينشوم الفاسدة واستعدت الحلقات الذهبية الخمس

هذه هي سنتي الأولى للمشاركة في تحدي SANS Holiday Hack وكان انفجار. من خلال سلسلة من 16 تحديًا تتراوح من السهل إلى الصعب ، تدربت على تحليل حركة مرور الشبكة المشبوهة وسجلات PowerShell والكتابة قواعد Suricata، الخروج من حاوية عامل الميناء، والعثور على مفاتيح مسربة لاستغلال أ خط أنابيب GitLab CI / CD و مستخدم AWS، إجراء هجمات الكيان الخارجي XML، واختراق عقد ذكي لشراء أ رمز غير fungible.

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

تحديد المستوى

يتلقى كل مشارك صورة رمزية للتنقل في بيئة لعبة فيديو داخل المتصفح تم تعيينها في القطب الشمالي:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

أثناء التوجيه ، تتلقى محفظة للعملات المشفرة تستخدمها اللعبة لمنح KringleCoins لإكمال التحديات والتي تستخدمها في التحدي الأخير لاختراق عقد ذكي. ومن المثير للاهتمام ، أن اللعبة تتعقب جميع معاملات KringleCoin في سلسلة Ethereum blockchain ، مما يعني أنه يتم تخزين سجل كامل لتقدمك في blockchain أيضًا.

ننتقل إلى الحلقة الأولى من اللعبة.

1. خاتم تولكين

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

يتطلب العثور على حلقة تولكين استعراض عضلات تحليل سجلاتي.

تصيد Wireshark

أولاً ، استخدمت Wireshark لتحليل ملف .pcap الملف الذي كشف عن خادم في adv.epostoday [.] uk تحميل الملف المرجع_Sept24-2020.zip لجهاز كمبيوتر:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

بالنظر داخل ملف ZIP ، وجدت ملفًا قابلاً للتنفيذ يسمى المرجع_Sept24-2020.scr التي أدت إلى اكتشافين في ESET Endpoint Security: بات / عداء و Generik.TAGTBG. تؤدي هذه البرامج الضارة في النهاية إلى ملف تنفيذي ضار يعمل في الذاكرة يسمى config.dll واكتشفها ESET الماسح الضوئي المتقدم للذاكرة as Win32 / Dridex.DD.

سجلات أحداث Windows

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

نظرًا لأن السجلات احتوت على 10,434 حدثًا ، فقد جمعت الأحداث حسب التاريخ ثم شغلت إجراء البحث للبحث عن أي أحداث تحتوي على $ حرف. في بوويرشيل ، $ يستخدم لإنشاء والمراجع المتغيرات. اكتشفت هجومًا وقع في 24 ديسمبر 2022 ، عندما نفذ المهاجم النص التالي:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

يبدو أن المهاجم وجد وصفة سرية ، وقام بتبديل المكون السري لـ عسل For زيت السمك، ثم قم بإنشاء ملف وصفة جديد. أدى هذا إلى تشغيل حدث بمعرف 4104 ، والذي يمثل تنفيذ أوامر PowerShell عن بُعد. لذلك ، قمت بتصفية الأحداث حسب هذا المعرف ، مما ساعدني في العثور على أحداث ضارة إضافية بسرعة أكبر.

سوريكاتا ريجاتا

كان التمرين الأخير لحلقة تولكين هو كتابة أربع قواعد Suricata لمراقبة حركة مرور الشبكة من أجل غزو Dridex:

تنبيه dns $ HOME_NET أي -> أي (رسالة: "بحث DNS سيء معروف ، احتمال إصابة Dridex" ؛ dns.query ؛ المحتوى: "adv.epostoday.uk" ؛ ​​nocase ؛ sid: 1 ؛ rev: 1 ؛)

تنبيه http 192.185.57.242 أي <> أي (رسالة: "التحقيق في الاتصالات المشبوهة ، احتمال إصابة Dridex" ؛ sid: 2 ؛ rev: 1 ؛)

تنبيه tls أي -> أي (رسالة: "التحقيق في الشهادات السيئة ، احتمال إصابة Dridex" ؛ tls.cert_subject ؛ المحتوى: "CN = hearbellith.Icanwepeh.nagoya" ؛ sid: 3 ؛ rev: 1 ؛)

تنبيه http أي -> أي (رسالة: "وظيفة JavaScript مشبوهة ، احتمال إصابة Dridex" ؛ file_data ؛ المحتوى: "let byteCharacters = atob" ؛ sid: 4 ؛ rev: 1 ؛)

بالترتيب ، تلتقط هذه القواعد عمليات بحث DNS عن adv.epostoday [.] uk، اتصالات بعنوان IP 192.185.57 [.] 242، استخدام الخادم الخبيث hearbellith.Icanwepeh [.] ناغويا تم تحديده من خلال الاسم الشائع (CN) في شهادة TLS ، واستخدام JavaScript من أ الى ب() وظيفة لفك تشفير سلسلة ثنائية تحتوي على بيانات مشفرة باستخدام base64 على العميل.

أكسبني إكمال هذه التحديات الثلاثة خاتم تولكين:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

إلى الحلقة الثانية.

2. خاتم إلفين

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

كانت أبرز التحديات التي واجهت Elfen Ring هي Prison Escape و Jolly CI / CD.

السجن الهروب

كان Prison Escape تذكيرًا صارمًا بأن منح امتيازات الجذر لمستخدم في حاوية Docker يعد جيدًا مثل منح امتيازات الجذر على النظام المضيف. كان التحدي هو الخروج من الحاوية. حسنًا ، من السهل القيام بذلك عندما تكون جذرًا:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

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

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

جولي سي / سي دي

بينما كان ذلك سريعًا ، أخذني Jolly CI / CD أطول تحدي لاكتشافه. أولاً ، حصلنا على مستودع Git للاستنساخ عبر HTTP:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

من عنوان URL ، استطعت أن أرى أن اسم المستودع كان wordpress.flag.net.internal، لذلك انتقلت إلى المستودع ووجدت موقع ويب WordPress. لقد تحققت مما إذا كان موقع الويب مباشرًا أم لا:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

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

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

من رسائل التنفيذ ، يبدو أنه ملف ارتكاب تم إجراؤه بعد إضافة الأصول لإصلاح مشكلة. حان الوقت للتحقق من التزام pre-whoops:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

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

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

الآن دعنا نعود إلى الفرع الرئيسي ونختبر ما إذا كان بإمكاننا دفع تغيير تافه إلى شفرة المصدر (باستخدام nano ، قمت ببساطة بإضافة مسافة إلى أحد الملفات):

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

إذن ، لقد حققت الجزء الأول من التحدي من خلال انتحال شخصية أحد مطوري WordPress ، لكن هل استمر الموقع في العمل بعد دفعتي؟

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

لقد غيرت دفعي شيئًا ما لأنه تمت إعادة توجيه موقع الويب الآن إلى المنفذ 8080.

حتى الآن ، تجاهلت جزء CI / CD من التحدي ، والذي يجب أن يكون مفتاحًا لإكماله. يحتوي المستودع على ملف .gitlab-ci.yml ملف ، والذي يوفر التكوين لخط أنابيب GitLab CI / CD. في كل مرة تضغط فيها إلى المستودع ، يبدأ تشغيل نظام CI / CD ، ويبدأ ملف عداء جيت لاب ينفذ البرامج النصية في ملف YML هذا. أعتقد أن هذا جيد مثل تنفيذ التعليمات البرمجية عن بُعد على الخادم حيث تم تثبيت GitLab Runner.

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

بعد الكثير من اختبار الفرضيات ، حصلت في النهاية على رؤيتي الخارقة: بدلاً من محاولة "إصلاح" موقع WordPress الإلكتروني أو تشغيل نصوص ضارة عبر نظام الإنشاء ، قم بخدمة موقع ويب يقوم بتسريب المعلومات من خادم الويب. داخل index.php (الموجود في المستوى العلوي من المستودع) ، يمكنني التعليق على الكود الذي يقوم بتحميل موقع WordPress على الويب وتشغيل أوامر PHP التي تبحث في خادم الويب.

في الواقع ، يمكنني حتى تشغيل أوامر shell باستخدام PHP. لقد وجدت ذلك تمر من خلال() يعمل بسهولة.

In index.php، إستعملت // للتعليق خارج سطرين وأضفت passthru ('ls -la /') ؛ في السطر الأخير. يؤدي هذا إلى إنشاء موقع ويب يسرد جميع الملفات الموجودة في الدليل الجذر لخادم الويب:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

ثم دفعت هذا التغيير إلى مستودع Git وتولى نظام GitLab CI / CD تحديث موقع الويب من أجلي:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

آه ، يجب أن يكون خاتم Elfen في flag.txt! كررت الخطوات السابقة ، لكن هذه المرة باستخدام passthru ("cat /flag.txt")؛ الكشف عن Elfen Ring في المرة التالية التي طلبت فيها الموقع:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

إلى الحلقة الثالثة.

3. حلقة الويب

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

كان التحدي الأكثر متعة بالنسبة لي هو Open Boria Mine Door ، على الرغم من أن نافورة Glamtariel كانت مثيرة للاهتمام أثناء تقديم الألغاز أيضًا.

افتح باب Boria Mine

في Open Boria Mine Door ، تم تقديم ستة دبابيس أو تحديات صغيرة لتجاوز التحقق من صحة الإدخال أو ملف سياسة أمان المحتوى لتوصيل أنابيب الدخول والخروج بين المسامير ، بما في ذلك مطابقة ألوان الأنابيب. بالنسبة لمعظم المسامير ، استخدمت HTML لكتابة قائمة بأحرف التوصيل. هذا هو الحل النهائي:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

رقم 1

لم يكن هناك تحقق من صحة Pin 1 ، لذلك كانت مسألة بسيطة تتعلق بـ HTML و CSS المضمنة:

رقم 2

يحتوي Pin 2 على سياسة أمان المحتوى التي لا تسمح باستخدام JavaScript ولكنها تسمح باستخدام CSS المضمنة ، لذلك لم تكن هذه مشكلة بالنسبة لطريقي:

رقم 3

يحتوي Pin 3 على سياسة أمان محتوى لا تسمح بـ CSS ولكنها سمحت باستخدام JavaScript مضمّن ، لذلك استخدمت JavaScript لتغيير الأنماط بدلاً من ذلك:

رقم 4

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

رقم 5

كان دبوس 5 نفس الشيء تعقيم المدخلات وظيفة وتجاوز جنبًا إلى جنب مع سياسة أمان المحتوى التي تحظر CSS المضمنة ، ولكنها تسمح بجافا سكريبت المضمنة:

رقم 6

أخيرًا ، لم يقم Pin 6 بتعقيم الإدخال ، لكنه استخدم سياسة أمان محتوى أكثر صرامة تحظر CSS و JavaScript. كان الحل هو استخدام HTML الذي تم إيقافه للحصول على الأنماط التي أحتاجها واستخدام جدول بدلاً من قائمة:

نافورة Glamtariel

نافورة Glamtariel كانت فرصة للممارسة هجمات XML الخارجية (XXE). لم يكن من الصعب معرفة كيفية تعريف كيان XML مخصص ، وتحديد الكيان الذي يطلب ملفًا من الخادم ، وإضافة هذا الكيان كحمولة إلى طلب HTTP. كان الجزء الأصعب هو اكتشاف الألغاز داخل اللعبة لتحديد المسار إلى الملفات التي سيسربها الخادم. إليكم طلب الاختراق الذي يكشف عن مكان الخاتم الذهبي:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

سأقدم درسين تعلمتهما من هذا التحدي. أولاً ، استخدم ملف محول نوع المحتوى التمديد في تجشؤ لتحويل حمولات JSON إلى XML. ثانيًا ، حاول وضع حمولة XXE في علامات مختلفة - لقد استغرق الأمر وقتًا طويلاً لمعرفة أن كل ما كان علي فعله هو وضع والعشرون ؛ الحمولة في reqType علامة بدلاً من imgDrop العلامة.

إلى الحلقة الرابعة.

4. حلقة سحابة

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

كان اللعب من أجل Cloud Ring بمثابة غزو مبتدئ لواجهة سطر أوامر Amazon Web Services (AWS) (CLI).

كان تسليط الضوء على هذه المجموعة من التحديات يستخدم الكمأة للعثور على بيانات اعتماد AWS في مستودع Git ثم استغلالها للمصادقة كمستخدم AWS. يمكن للمهاجم الذي يصل إلى هذا الموقف أن يستخدم Aws أنا أوامر للاستعلام عن السياسات التي تنطبق على المستخدم ، وبالتالي ما هي الأصول السحابية التي يمكن الوصول إليها وإساءة استخدامها.

إلى الحلقة الخامسة.

5. حلقة النار المحترقة

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

كان الجزء الأكثر إفادة من هذه المجموعة من التحديات هو التعلم أشجار ميركل لاستغلال عقد ذكي و احصل على قائمة ما قبل البيع لشراء رمز غير قابل للاستبدال (NFT). كان التحدي هنا هو اكتشاف قيم الإثبات التي أثبتت ، جنبًا إلى جنب مع عنوان محفظتي والقيمة الجذرية لشجرة Merkle Tree ، إدراجي في قائمة ما قبل البيع.

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

باستخدام أداة الأستاذ QPetabyte، لقد أنشأت Merkle Tree من ورقتين يتكونان من عنوان محفظتي وعنوان BSRS_nft عقد ذكي ، وجدته باستخدام Blockchain Explorer داخل اللعبة في الكتلة الثانية من Ethereum blockchain الخاصة باللعبة. أنشأت الأداة القيمة الجذرية لهذه الشجرة وقيمة الإثبات لعنوان محفظتي. ثم استخدمت Burp لاعتراض الطلب إلى الخادم وقمت بتغيير قيمة الجذر الافتراضية حتى أتمكن من إرسال شجرة Merkle صالحة. هنا أنا NFT سبورك تم شراؤها بسعر ثابت 100 KringleCoins:

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

عينة قبيحة بالفعل.

نهائي

تصدع ذلك! أبرز أحداث KringleCon 5: ذكاء بيانات PlatoBlockchain ذو الحلقات الذهبية. البحث العمودي. منظمة العفو الدولية.

شكراً جزيلاً لمنظمي تحدي SANS Holiday Hack على توسيع ذهني بطرق جديدة والمساعدة في تعميق معرفتي بالأمن السيبراني. لا أتطلع إلى تحدي العام المقبل فحسب ، بل سأحاول تجربة نسختي 2020 و 2021 من هذا التحدي. وإذا لم تكن قد شاركت في هذا التحدي من قبل ، آمل أن تكون هذه النقاط البارزة قد أثارت اهتمامك.

الطابع الزمني:

اكثر من نحن نعيش الأمن