المدونة
استكشاف جميع مشاركات المدونة

اكتشافات جديدة تربط بين برنامج Kwampir الخبيث وShamoon APTS

كانت Cylera Labs تحقق في برنامج Kwampirs الخبيث بنشاط منذ أغسطس 2018، وكانت أول من حدد أوجه التشابه مع Shamoon. في عام 2019، أصدر بابلو رينكون كريسبو، نائب رئيس الأمن السيبراني والباحث الرئيسي في Cylera Labs، أول نتائج عامة تشير إلى أوجه تشابه مهمة في الكود بين Shamoon وKwampirs في المؤتمر الثالث عشر لتكنولوجيا المعلومات والاتصالات المنعقدة في مدريد في 11 ديسمبر 2019.

لكن وجود أوجه تشابه في الأداة لا يعني بالضرورة أن نفس الجهات الفاعلة المسؤولة عن التهديد تقف وراء عائلتي البرمجيات الخبيثة. لذلك، كان من الضروري إجراء مزيد من التحقيقات للتخلص من احتمالات سرقة الكود أو عمليات العلم الكاذب. بعد وقت قصير من عرض رينكون في مؤتمر XIII STIC، تم إصدار اثنين من FBI Flashes وإشعار FBI Private Industry Notification (PIN) واحد، للتنبيه بشأن Kwampirs (6 يناير و5 فبراير و30 مارس 2020)، كما غرد بعض الباحثين أيضًا حول أوجه التشابه بين عائلتي البرمجيات الخبيثة.

ملخص Cylera Labs

في تلك المرحلة، تمكنا من تفكيك كل الحملات المعروفة، وتحديد العديد من الضحايا (من المستشفيات الصغيرة إلى "المدن الطبية"، والمؤسسات الحكومية في دول الشرق الأوسط)، وعثرنا بالفعل على نظام القوالب وكنا نحاول بالفعل فهم تطور كل أدوات Kwampirs المتاحة للتنزيل عبر مستودعات البرامج الضارة العامة (بشكل أساسي VirusTotal وHybrid Analysis). تم إجراء تحليلنا التفاضلي بمساعدة radiff2 (جزء من مجموعة أدوات radare2) وdiaphora+IDA، ثم مراجعة المجموعات الكاملة من الاختلافات بين كل إصدار على حدة لفهم كل الاختلاف بين عائلتي البرامج الضارة. خلال هذه العملية، حددنا أيضًا بعض المكونات الإضافية التي لم يتم ملاحظتها لبعض الوقت ولكنها تربط العائلتين معًا بشكل أوثق.

تم إصداره حديثًا، وهو متعمق تقرير فني عن Kwampirs Shamoon من Cylera Labs يشرح على نطاق واسع، مع القطع الأثرية، المراحل المختلفة للتحقيق والتحليل والنتائج المتعلقة بتطور Kwampirs وارتباطاته مع Shamoon 1 و 2 - حيث يبدأ Kwampirs نشاطه بين نسختي Shamoon.

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

من شامون 1 إلى كواامبيرز

أثناء التحقيق، اكتشفت شركة Cylera قطعة أثرية من البرامج الضارة (أطلق عليها "886e7" في التقرير الفني) وهي نسخة وسيطة بين Shamoon وKwampirs. إنها في الأساس عبارة عن Shamoon Dropper لم يتم تضمين المكونات المدمرة فيها، ولكن

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

عينة القطارة: 886e7271b1a0b0b6c8b2a180c2f34b1d08d899b1e4f806037a3c15feee604d7b

ما هي الخصائص الرئيسية لـ 886e7 المشابهة لـ Shamoon 1؟

  • إن الهندسة المعمارية الرئيسية لـ Dropper مشابهة لـ Shamoon 1.
  • يوجد بعض التعليمات البرمجية الميتة، التي لا يمكن الوصول إليها افتراضيًا، مما يشير إلى أن هذه العينة ربما تم تجميعها في منتصف عملية إعادة الهيكلة (أو عملية إعادة الاستخدام).
  • يتم تضمين الحمولات في الموارد، والتي تسمى PKCS12 وPKCS7، على غرار Shamoon الأول

886e7 معرفات الموارد، مشابهة لـ Shamoon 1

  • يوجد وحدتا مراسل في هذه العينة. ترسل إحدى هاتين الوحدتين المراسلتين بيانات مشابهة للبيانات المرسلة بواسطة Shamoon 1، بما في ذلك تنسيق مماثل وقيم مماثلة (أي عدد النقرات لكسر ذاكرة التخزين المؤقت).

886e7 وكيل المستخدم، تنسيق عنوان URL، بما في ذلك عنوان MAC وقيمة GetTickCount()

  • يتم ترميز C2s في نص واضح داخل الملف الثنائي، تمامًا مثل Shamoon 1.
  • إن كود الانتشار والعدوى مشابه لـ Shamoon 1. فهو متماثل تقريبًا، تمامًا مثل Kwampirs، مع تطابقات شبه كاملة للكود. ولكن بعد ذلك، يشترك كل من Kwampirs و886e7 في إضافة طريقة انتشار صغيرة، في موضوع منفصل، مع استراتيجية أكثر عدوانية قليلاً سنشرحها لاحقًا.

حسنًا... ولكن ماذا عن رابط 886e7 مع Kwampirs؟

  • الموارد عبارة عن ملفات قابلة للتنفيذ، مشابهة لـ Shamoon، ولكن المكونات التي تم تنزيلها عبارة عن ملفات DLL، مع نفس كود التحميل تمامًا مثل Kwampirs.
  • يستخدم كلا المراسلين "ItIsMe" كوكيل مستخدم، مثل عينات Kwampirs المبكرة. يبدو الأمر وكأنه استمرار للوكيل المستخدم بواسطة Shamoon ("أنت"). لقد وجدنا طلبات بهذا الوكيل المستخدم على خادم sinkhole، مما يشير إلى أنه لا يزال هناك بعض النشاط من قبل المضيفين المصابين بـ Kwampirs المبكرة. انظر على سبيل المثال إلى عينة Kwampirs: a5e5b4e6caf7ac3ac8d9b7b3527f767ff011d138246686822fea213a3b0597fc.

886e7 يستخدم المراسل نفس سلسلة وكيل المستخدم مثل حملة Kwampirs 0

  • تحتوي موارد Dropper على وحدات Reporter فقط. وتعتبر وحدات Reporter هي الحمولات الرئيسية. ولا تحتوي على ماسحات، تمامًا مثل Kwampirs.
  • في Kwampirs، عندما يقوم المراسل بتنفيذ المكون الذي تم تنزيله (DLL)، فإنه يبحث عن وظيفة مُصدَّرة تسمى "CF". اتضح أن هذا المراسل 886 يستخدم نفس كود محمل DLL ويبحث عن سلسلة الاستدعاء "cmdFunc" لنفس الغرض، لذا فإن "CF" ربما يكون الاختصار الذي تطور به، ربما للتهرب من توقيعات مكافحة الفيروسات المستندة إلى سلاسل ثابتة.

886e7 يبحث محمل DLL عن اسم الوظيفة المصدرة "cmdFunc"

  • يقوم المُراسل الثاني بتقليص عدد المعلمات في تنسيق URL وترميز كل شيء في سلسلة base64، باستثناء قيمة GetTickCount() كقيمة لكسر ذاكرة التخزين المؤقت، بطريقة مشابهة جدًا لما يفعله Kwampirs. يتطور Kwampirs فوق هذا المُراسل الثاني، فيزيل معلمة ذاكرة التخزين المؤقت، ويترك معلمة واحدة فقط تحزم قيمًا متعددة داخلها. سيرث Shamoon 2 هذا التنسيق أيضًا.

تنسيق عنوان URL للمراسل الثاني 886e7

  • يعيد C2 البيانات بتنسيق Kwampirs C2، وليس مثل Shamoon 1. ونحن نعلم ذلك لأن العينة تبحث صراحةً عن "911:" في الرسائل المستلمة (الشكل 47)، وهي سلسلة تستخدمها Kwampirs C2 أثناء تنزيل وحدات إضافية. وتزيل الإصدارات الأحدث فحص سلسلة "911:"، لكنها تضيف عمليات فحص التوقيع التشفيري.

886e7 التحقق من البادئة 911 في استجابة الخوادم

  • تستخدم العينة GetExtendedTcpTable()، على غرار استخدام Kwampirs لـ GetTcpTable(). تسمح كلتا الوظيفتين لـ Kwampirs (و886e7) بالانتشار بشكل أكثر عدوانية عبر الشبكة، مما يسمح بنوايا الانتشار عبر الشبكات المستندة إلى Windows حتى لو لم تكن في نفس نطاق IPv4، وهو أمر مثالي لاستكشافات سلسلة التوريد ونوايا العدوى عبر اتصالات VPN الخاصة بالشركة المصنعة. من ناحية أخرى، لا تستخدم إصدارات Shamoon أيًا من طرق الانتشار هذه. يتم شرح بعض الفرضيات لهذا القيد في قسم استخدام Shamoons في التقرير، ولكن تلخيصًا لذلك، فإنهم سيحدون فقط من تلف المكونات المدمرة (الممسحات) بهذه الطريقة، لكنهم يستخدمونها في Kwampirs لأداء عمليات انتشار أكثر عدوانية أثناء القيام بعمليات الاستطلاع.

من كواامبيرز إلى شامون 2

لقد وجدنا وحددنا نظام قالب مشترك بين Kwampirs وShamoon 2، والذي تم تطويره أولاً لـ Kwampirs مع الجدول الزمني المعروف، ثم تم تنفيذه في Shamoon 2.

قالب Kwampirs غير المرسوم:

 

قالب Kwampirs Unrendered Reporter مضمن في Dropper عن طريق الخطأ

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

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

قالب مراسل Kwampirs، الحقول المتوفرة مع التنسيق واسم العنصر النائب

 

لماذا نعتقد أنه لم يكن موجودا في شمعون 1؟

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

كود مساعد لقالب Kwampirs (الإصدارات بعد الحملة 1)، غير موجود في Shamoon 1،

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

Kwampirs (الإصدارات بعد الحملة 1)، باستخدام atoi() لتحويل الأرقام المقدمة كسلاسل من نظام القالب، وبناء مجموعات من C2 والخيارات من المخازن المؤقتة الخام

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

كيف يرتبط نظام القالب هذا مع Shamoon 2؟

بالنظر عن كثب إلى Shamoon 264bit Dropper،

(الذي يحتوي على تجزئة sha256 61c1c8fc8b268127751ac565ed4abd6bdab8d2d0f2ff6074291b2d54b0228842)، على سبيل المثال، المستخدم ضد GACA، يمكن للمرء أن يجد العناصر النائبة غير المترجمة التالية:

العناصر النائبة لـ Shamoon 2 (و3) موجودة في Dropper 64 بت

توجد عناصر نائبة لـ Shamoon 2 (و3) في Dropper 64 بت بسبب أخطاء المطور

###AV1### و ###AV2###

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

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

إن استخدام نظام قالب مع منشئ أمر منطقي لتجنب خطوات الفشل في تكوين الحملات الجديدة. ستبدو عملية عرض كلا العائلتين من البرامج الضارة مثل المخططات التالية:

عملية بناء الحملة الجديدة لـ Shamoon 2:

عملية بناء حملة Shamoon الجديدة، وعرض القوالب، وتضمين مكونات 32 بت و64 بت في Dropper 32 بت النهائي

عملية بناء حملة كواامبير الجديدة:

عملية إنشاء حملة جديدة من Kwmapirs، وقوالب العرض، والمكونات المتوافقة مع كل من معماريات 32 بت و64 بت في Dropper 32/64 بت النهائي

لكن هذا ليس قالبًا. لماذا لا يتم عرض العناصر النائبة في Shamoon 2؟

من الصعب التحكم في الأخطاء عندما يكون لديك العديد من المكونات التي تحمل مكونات أخرى وهياكل معمارية مختلفة تحمل مكونات معمارية أخرى.. وربما يحالفك الحظ حتى لا تخبرك بذلك. يحتوي Shamoon على مكونات 32 بت و64 بت، لكنها لا تكرر الكود مثل وجود قاعدة كود واحدة لـ 32 بت وأخرى لـ 64 بت.

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

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

باختصار، يرتبط ###AV1### و###AV2### بإسقاط الحمولة من الإصدار 64 بت من Dropper، والذي لا يستخدمه الإصدار 64 بت نفسه (وإلا فإنه سيسقط نسخة أخرى من نفسه!)، ولم يتم تغليفهما بشكل صحيح باستخدام وحدات الماكرو القائمة على البنية، لذا تم تضمينهما في الكود المساعد لأنظمة القالب... وأصبح هذا بمثابة بصمة لهما! أوه - المشكلة الآن!

ولماذا الكوامبير قبل شامون 2 وليس العكس؟

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

نعتقد أن Shamoon 2 ورث كل هذا الكود من Kwampirs، وليس العكس، لأن Shamoon 1 لم يكن لديه نظام القالب هذا في عام 2012، وقد شوهد لأول مرة في قطع أثرية Kwampirs المؤرخة (والمحملة على VirusTotal) قبل هجمات Shamoon 2 في نوفمبر 2016.

على سبيل المثال، العينة مع التجزئة
6f7173b7ae87b5f3262e24a5177dbbd4413d999627f767754f08d8289f359bb3 ينتمي إلى
حملة Kwampirs E، وتم تحميلها إلى VirusTotal بتاريخ الإرسال الأول 2016-06-23 15:40:12، أي قبل 6 أشهر من "العودة المعروفة لـ Shamoon 2"، والتي حدثت في نوفمبر 2016 (بقدر ما تخبرنا OSINT).

تواريخ إرسال VirusTotal لعينة Kwampirs التي تحتوي على نظام القالب هذا

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

كوامبيرز وشامون 1، 2، 3 الخطوط الزمنية:

الخط الزمني التطوري لـ Shamoon وKwampirs، مع عمليات نقل الوظائف

هل هناك تحديثات مشتركة أخرى بخلاف نظام القالب؟

قام مطورو Shamoon 2 بإجراء العديد من التغييرات على تحسينات Kwampirs. يجمع كل من Shamoon 2 وKwampirs Reporters نفس المجموعة الأولية من البيانات لبناء الطلب الأول إلى خوادم Command & Control الخاصة بهم:

  • عنوان MAC
  • معلومات النظام والإصدار
  • قائمة تخطيط لوحة المفاتيح

مراسل شمعون 2:

يجمع Shamoon 2 (و3) نفس معلومات المضيف مثل Kwampirs، والتي تُستخدم أيضًا كمعرف بوت (mac، ومعلومات النظام والإصدار، وقائمة تخطيط لوحة المفاتيح)

مراسل كواامبيرز:

يقوم Kwampirs بجمع نفس معلومات المضيف مثل Shamoon 2 (و3)، ولكنه يستخدم أيضًا ملف ذاكرة تخزين مؤقتة مشفر لهذه القيم

يتم تعبئة البيانات عادةً باستخدام نفس الإجراءات المستخدمة في Kwampirs، باستخدام فاصل الحقل المحدد بنظام القالب، ثم يتم تشفير المخزن المؤقت بالكامل باستخدام خوارزمية xor-cyclic ثم يتم ترميزه باستخدام base64.

في Kwampirs، سيبدو عنوان URL النهائي كما يلي:

hxxp://18.25.62[.]70/groupgroup/default.php?q=[سلسلة قاعدة64]

وفي Shamoon 2 سوف تبدو عناوين URL على النحو التالي:

hxxp://server/category/page.php?shinu=[سلسلة قاعدة64]

ماذا يوجد أيضًا في التقرير الفني؟

  • لقد حددنا مكونًا للبرامج الضارة تم إنشاؤه بشكل مستقل وتم تضمينه في موارد Reporter، والذي يعمل كوكيل، مستغلاً رمز المستخدم الخاص بـ EXPLORER.EXE العملية، على غرار أسلوب المحاكاة. تم تضمين هذه الوظيفة لاحقًا كجزء من Kwampirs dropper، مما أضاف أوضاع تشغيل مختلفة إلى مكونات Kwampirs dropper. يتم إجراء الاتصال بهذا المكون (الذي كما ذكرنا لاحقًا هو dropper نفسه) باستخدام Pipes.
  • نقدم أيضًا بعض التفاصيل حول C2 الذي تم تكوينه بشكل خاطئ باستخدام قائمة الدليل المفتوح، وما تمكنا من جمعه منه.
  • نحن نشرح بعض الأسباب الفنية التي تجعلنا نعتقد أن Kwampirs لا يعتمد على Open-Shamoon، وهو إصدار تم هندسته عكسيًا من Shamoon والذي كان موجودًا منذ فترة.
  • كما تحدثنا أيضًا عن بعض عينات الصيد الحية التي تم العثور عليها في VirusTotal باستخدام قواعد Yara، وعن بعض التهديدات المتطورة المستمرة الإيرانية المزعومة والتي ارتبطت تاريخيًا بنشاط Shamoon.

كل هذه التفاصيل وأكثر مغطاة بشكل جيد في الجزء الأكثر توسعًا تقرير فني من Cylera Labs Kwampirs.

وماذا عن الإسنادات واستنتاجاتنا النهائية؟

نعتقد بثقة متوسطة إلى عالية أن Kwampirs وShamoon 2 يتم صيانتهما بواسطة نفس المجموعة. لكن Shamoon 2 يُنسب بالفعل إلى مجموعة من الجهات الفاعلة بناءً على الكود والضحايا والبنية الأساسية المشتركة، وهي مجموعة فرعية من APT33/APT34/Magic Hound، والتي لا يبدو أنها تختلف عن Shamoon 1. إذا قيل يومًا ما أن Shamoon 2 عبارة عن عملية علم كاذبة من دولة مختلفة أو مجموعة APT مختلفة، فعندئذٍ سيكون من الضروري إعادة تقييم نسب Kwampirs أيضًا.

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

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

بالنسبة للعامة، مدونة غير تقنية أو اقرأ التقرير الكامل: تقرير فني عن Kwampirs من Cylera Labs

قصص ذات صلة حديثة