تحليل هندسة عكسية لـ Formbook، وهو برنامج سرقة معلومات يستخدم التلاعب بتجميعة .NET وفك تشفير XOR. تم استخراج الحمولة الكاملة عبر x32dbg، بما في ذلك حلقة فك تشفير XOR، وتهيئة CLR، وطُعم SQLExpress، وواجهات برمجة تطبيقات مسجّل المفاتيح والحافظة.
يكشف تفريغ الذاكرة في x32dbg أن Formbook يفك تشفير بيانات إعداداته ويخصص ذاكرة لها باستخدام NtAllocateVirtualMemory.
NtAllocateVirtualMemory – يخصص ذاكرة للحمولة المفكوكة التشفير.mov edx, dword ptr ds:[esi+1C] – يسترجع حجم البيانات المشفرة من سجل ESI.push 0x1000 – يستخدم MEM_COMMIT لتخصيص الذاكرة.push 0 – يحدد نوع التخصيص أو علامة الحماية.mov edx, dword ptr ds:[esi+4] – يسترجع قيمة إعدادات أخرى.lea ecx, [ebp-4] – يحمّل مؤشرًا إلى متغير محلي.test ecx, ecx – يتحقق من صلاحية المؤشر.mov ecx, [esi+1C] – يسترجع حجم البيانات المشفرة مرة أخرى.push 0x1000 – يكرر علامة MEM_COMMIT.push 0 – يكرر علامة التخصيص.ConnectionStrings – مفتاح إعدادات .NET لعناوين C2.system.data، DbProviderFactories – أقسام إعدادات .NET (على الأرجح طُعم).system.serviceModel – قسم نموذج خدمة .NET.<DbProviderFactories /> – عنصر XML فارغ (طُعم).ConnectionStrings يحتوي على عناوين URL الخاصة بـ C2.
عرض x32dbg يُظهر NtAllocateVirtualMemory وفك تشفير ConnectionStrings.
يكشف عرض x32dbg هذا أن Formbook يستخدم التلاعب بتجميعة .NET وفك التشفير القائم على XOR وتهيئة CLR (وقت تشغيل اللغة المشتركة) لتنفيذ حمولته.
xor eax, eax – يمسح EAX، مما يشير إلى فك تشفير قائم على XOR.call 0x6C6E7F60 – يستدعي دالة فك تشفير أو معالجة.call 0x6C6EE8B0 – يستدعي دالة معالجة أخرى.DllCanUnloadNowInternal – يدير تحميل/إلغاء تحميل تجميعة .NET.PublicKeyToken=31bf3856ad364e35 – ينتحل شخصية تجميعة Microsoft.system.serviceModel – إعدادات نموذج خدمة .NET (اتصال C2).System.Web – إعدادات ويب .NET (C2 قائم على HTTP).clr.NGenCreateNGenWorker – ينشئ عامل .NET Native Image Generator.clr.GetCLRFunction – يسترجع دوال CLR.return to clr.Initialize – يهيئ وقت تشغيل .NET.xor eax, eax ودوال call اللاحقة فك التشفير القائم على XOR.PublicKeyToken يبدو كتجميعة Microsoft.system.serviceModel وSystem.Web إعدادات C2.
عرض x32dbg يُظهر فك تشفير XOR وDllCanUnloadNowInternal وتهيئة CLR.
يكشف عرض x32dbg هذا أن Formbook يستخدم سلسلة نصية متعلقة بـ SQLExpress كطُعم ويهيئ .NET CLR لتنفيذ حمولته.
L"ce=..\SQLEXPR" – سلسلة نصية طُعم، غير متعلقة بسرقة بيانات SQL. تُستخدم لجعل البرمجية الخبيثة تبدو كمكوّن شرعي من SQL Server Expressclr.InitializeFusion – يهيئ محمّل تجميعة .NET Fusion، الذي يُستخدم لتحميل حمولة .NET في الذاكرة.clr.GetCLRFunction – يسترجع دوال CLR لتنفيذ التعليمات البرمجية المُدارة.clr.NGenCreateNGenWorker – ينشئ عامل .NET Native Image Generator، مما يسمح بتشغيل الحمولة دون ترجمة JIT.return to clr.InitializeFusion+1751 – يعود إلى روتين تهيئة CLR.SQLEXPR هي طُعم للتهرب من الاكتشاف بواسطة أدوات الأمان.
عرض x32dbg يُظهر L"ce=..\SQLEXPR" وclr.InitializeFusion ودوال CLR.
يكشف عرض x32dbg هذا بداية حمولة Formbook، الواقعة بعد رسالة PE DOS stub القياسية. تستخدم البرمجية الخبيثة حلقة فك تشفير XOR لفك تشفير حمولتها في الذاكرة.
This program cannot be run in DOS mode – رسالة PE DOS stub القياسية.xor dword ptr ds:[edi], eax – يطبق XOR على البيانات في EDI مع EAX (فك التشفير).mov al, byte ptr ds:[edi+1] – يحمّل بايت من EDI+1 إلى AL.xor al, byte ptr ds:[edx+1] – يطبق XOR على AL مع البايت في EDX+1 (مفتاح فك التشفير).mov byte ptr ds:[edi], al – يكتب البايت المفكوك التشفير مرة أخرى إلى EDI.call ntdll.77DDE45C – يستدعي RtlIsCurrentThreadAttachExempt (مكافحة التصحيح).cmp dword ptr ds:[esi+4], 0 – يتحقق مما إذا كان العداد (ESI+4) يساوي صفرًا.sub dword ptr ds:[esi+4], eax – ينقص العداد.test edx, edx – يختبر EDX للتحقق من الصفر.jne ntdll.77DDF9F4 – يعود للتكرار إذا لم يكن صفرًا (حلقة فك التشفير).RtlIsCurrentThreadAttachExempt للتهرب من أدوات التصحيح.
عرض x32dbg يُظهر حلقة فك تشفير XOR بعد رسالة PE DOS stub القياسية.
يكشف تحليل Binary Ninja للحمولة المستخرجة عن قائمة شاملة بواجهات برمجة التطبيقات (APIs) التي يستخدمها Formbook لتسجيل المفاتيح واختطاف الحافظة ورفع الصلاحيات.
SetClipboardData، GetClipboardData – يسرق بيانات الحافظة ويستبدلها.SetWindowsHookExW، SetWindowsHookExA – يثبّت خطافات لوحة المفاتيح.NtSetInformationProcess، NtCreateThreadEx، NtTerminateProcess.NtAdjustPrivilegesToken – يعدّل امتيازات الرمز المميز.NtShutdownSystem، SystemParametersInfoA/W.MsInstallProductW/A – يثبّت منتجًا للاستمرارية.CreateProcessInternalW – ينشئ عملية جديدة.MsInstallProductW/A تشغيل البرمجية الخبيثة عند بدء التشغيل.
عرض Binary Ninja يُظهر واجهات برمجة تطبيقات مسجّل المفاتيح والحافظة ورفع الصلاحيات.
كشف هذا التحليل عن Formbook، وهو سارق معلومات متطور يستخدم إعدادات مشفرة والتلاعب بتجميعة .NET وفك تشفير XOR وتسجيل المفاتيح/اختطاف الحافظة.