
هندسة عكسية لمُحمِّل Amadey باستخدام x64dbg: تحليل ديناميكي لواجهات API، وتصعيد امتيازات الرموز المميزة (tokens)، وخطافات مسجّل لوحة المفاتيح، والتقاط الحافظة، وإساءة استخدام سطر الأوامر لتهيئة برمجيات السرقة.
تم تحميل عينة Amadey Loader في x64dbg. عند نقطة الدخول، يقوم المُحمِّل بإجراء حل ديناميكي لواجهات برمجة التطبيقات (API) عبر jmp thunks تشير إلى GetProcAddressForCaller وVirtualAlloc. يكشف عرض التفريغ أدناه عن سلاسل نصية مفكوكة التشفير وأسماء واجهات API يستخدمها مسجّل لوحة المفاتيح وإجراءات الاستمرارية في المُحمِّل.
jmp qword ptr ds:[] – بحث ديناميكي عن واجهات API، يتجنب الاستيرادات الثابتة. jmp qword ptr ds:[] – يخصص ذاكرة RWX للحمولة المفكوكة / shellcode. SetWindowsHookExW / CallNextHookEx / UnhookWindowsHookEx – سلسلة خطافات مسجّل لوحة المفاتيح (WH_KEYBOARD_LL) GetForegroundWindow / GetWindowTextW / GetWindowThreadProcessId – يلتقط عنوان النافذة النشطة مع كل ضغطة مفتاح. GetKeyState / GetAsyncKeyState – استقصاء حالة المفاتيح الخام. GetUserObjectInformationW / wndProc /UnregisterClassW – معالجة فئة النافذة لنافذة مسجّل لوحة المفاتيح المخفية. GetTickCount / timeGetTime / GetSystemTimeAsFileTime – إجراءات التوقيت المستخدمة لفترات الإشارة المرجعية وتخزين ضغطات المفاتيح مؤقتًا.
الحل الديناميكي لواجهات API: يتجاوز GetProcAddressForCaller تحليل الاستيرادات الثابتة، مما يهزم الكشف القائم على التوقيعات. تأكيد مسجّل لوحة المفاتيح: سلسلة SetWindowsHookExW + CallNextHookEx هي خطاف لوحة المفاتيح الكلاسيكي منخفض المستوى المستخدم لاعتراض كل ضغطة مفتاح على مستوى النظام بأكمله. تسجيل واعٍ بالسياق: يلتقط GetForegroundWindow + GetWindowTextW عنوان النافذة النشطة، مما يمنح سياقًا لكل ضغطة مفتاح (أسماء المستخدمين، كلمات المرور، المحادثات). تخصيص RWX: يُستخدم VirtualAlloc لفك حزمة الحمولة من المرحلة التالية وتنفيذها في الذاكرة، دون ترك أي أثر على القرص. تطابق سلوك Amadey: مجموعة واجهات API هذه متسقة مع سلوك Amadey المعروف في سرقة بيانات الاعتماد وتسجيل لوحة المفاتيح.

يكشف تدقيق أدق في جلسة x64dbg نفسها أن Amadey Loader يحل دفعة ثانية من واجهات Windows API المركّزة على تصعيد الامتيازات والتلاعب بالرموز المميزة وتعداد العمليات. يُستخدم thunk الخاص بـ VirtualAlloc في أعلى التفكيك لتخصيص ذاكرة لجدول واجهات API المحلولة، بينما يكشف عرض التفريغ أدناه عن نية المُحمِّل في التصعيد إلى وصول بمستوى SYSTEM قبل تنفيذ حمولته.
OpenProcessToken / DuplicateTokenEx / ImpersonateLoggedOnUser – تكرار الرموز المميزة وانتحال الهوية لتصعيد الامتيازات. LookupPrivilegeValueW / AdjustTokenPrivileges – يمكّن SeDebugPrivilege وامتيازات حساسة أخرى. GetTokenInformation / SetTokenInformation – يقرأ ويعدّل رمز العملية المميز الحالي. OpenProcess / Process32FirstW / Process32NextW – تعداد العمليات لتحديد الأهداف عالية القيمة (مثل lsass.exe وعمليات مكافحة الفيروسات). CreateFileW / CreateToolhelp32Snapshot / Module32FirstW – تُستخدم لعمليات الملفات وتعداد الوحدات. RegCreateKeyExW / RegSetValueExW / الاستمرارية: يسمح RegCreateKeyExW + RegSetValueExW ضمن مفاتيح Run لـ Amadey بالبدء التلقائي بعد إعادة التشغيل. GetProcAddress / LoadLibraryW / GetModuleHandleW – حل ديناميكي لواجهات API. CreateProcessW / ShellExecuteExW / WinExec – يشغّل حمولات المرحلة التالية. IsDebuggerPresent / CheckRemoteDebuggerPresent – فحوصات مكافحة التنقيح.
انتحال الهوية عبر الرموز (Token Impersonation): تتيح DuplicateTokenEx + ImpersonateLoggedOnUser لـ Amadey العمل بامتيازات أعلى (غالبًا SYSTEM)، مما يمنحه تحكمًا كاملًا بالنظام. إساءة استخدام SeDebugPrivilege: تُمكّن LookupPrivilegeValueW + AdjustTokenPrivileges من تفعيل SeDebugPrivilege، وهو مطلوب للحقن في العمليات المحمية مثل lsass.exe. استهداف العمليات: تُستخدم Process32FirstW / Process32NextW لتعداد واختيار الأهداف عالية القيمة (برامج مكافحة الفيروسات، المتصفحات، مخازن بيانات الاعتماد). مكافحة التنقيح (Anti-Debugging): تكشف IsDebuggerPresent + CheckRemoteDebuggerPresent بيئات التحليل بشكل نشط وتُنهي التنفيذ أو تُغيّر السلوك. تنفيذ السلسلة: تؤكد CreateProcessW / ShellExecuteExW دور Amadey كأداة تحميل (loader) — فهو يُسقط الحمولة التالية وينفّذها (مثل Lumma Stealer أو Vidar أو برامج الفدية).

يُظهر عرض ثالث لجلسة x64dbg نفسها قيام Amadey Loader بحل واجهات API الخاصة بإدخال/إخراج الملفات وإدارة المؤقتات ومعالجة الإدخال/لوحة المفاتيح. وإلى جانب سلاسل التفريغ (dump strings)، يشير ذلك إلى حمولة تتصرف كخليط بين مسجّل لوحة مفاتيح وسارق بيانات — تلتقط الإدخال، وتكتب السجلات، وتنظّف المؤقتات لتقليل بصمتها.
jmp qword ptr ds:[] – يكتب البيانات الملتقطة / الحمولة المُسقطة إلى القرص. jmp qword ptr ds:[] – كتابة ملفات غير متزامنة (تُستخدم لتفريغ السجلات بشكل خفي). jmp qword ptr ds:[] – عملية كتابة موزّعة (تُستخدم لإسقاط حمولات مجزّأة). jmp qword ptr ds:[] – يزيل قوائم انتظار المؤقتات لمحو الآثار القائمة على التوقيت. SetSystemTime / SetLocalTime – احتمال التلاعب بالطوابع الزمنية. SetWindowsHookEx / CallNextHookEx / UnhookWindowsHookEx – سلسلة خطافات لوحة المفاتيح. GetForegroundWindow / GetWindowTextW / GetClassNameW – يلتقط سياق النافذة النشطة. GetSystemInfo / EnumWindows / EnumChildWindows – تعداد البيئة.
تأكيد مسجّل لوحة المفاتيح (معزّز): إن الجمع بين SetWindowsHookEx وCallNextHookEx وToUnicodeEx وGetForegroundWindow هو تنفيذ نموذجي لمسجّل لوحة مفاتيح يسجّل ضغطات المفاتيح والنافذة التي كُتبت فيها. سلوك السارق: تشير WriteFile + WriteFileEx + WriteFileGather إلى أن البيانات الملتقطة (ضغطات المفاتيح، بيانات الاعتماد) تُكتب إلى القرص في أجزاء مجزّأة وغير متزامنة لتجنّب الكشف. تنظيف مكافحة التحليل الجنائي: يساعد DeleteTimerQueue وSetSystemTime أداة التحميل على محو آثارها الزمنية الخاصة وربما تعديل الطوابع الزمنية للملفات. الإدخال الاصطناعي: يشير SendInput + RegisterHotKey إلى أن الحمولة يمكنها أيضًا حقن ضغطات المفاتيح — وهو أمر مفيد للاستمرارية أو لتحفيز إجراءات عن بُعد. نمط حمولة Amadey: تؤكد مجموعة واجهات API هذه أن أداة التحميل تستعد لنشر حمولة مسجّل لوحة مفاتيح/سارق بيانات (غالبًا Vidar أو Lumma أو ما شابه).

يُظهر العرض الرابع في x64dbg قيام Amadey Loader باستخدام CommandLineToArgvW بشكل نشط داخل kernelbase.dll لتحليل وسائط سطر الأوامر والتلاعب بها أثناء التشغيل. وهذا مؤشر قوي على أن أداة التحميل تُنشئ عمليات فرعية بوسائط مصمّمة (مثل rundll32 أو regsvr32 أو PowerShell). ويكشف التفريغ أدناه أيضًا عن سلاسل مرتبطة بتجاوز مكافحة الفيروسات/EDR واستهداف إصدار نظام التشغيل (os.name، os.version، bypass، bypassUac، pitou).