
أداة تفادي اختطاف سياق التفعيل
PhantomCtx هي أداة تقوم بأتمتة اختطاف Activation Context بهدف تحميل DLL عشوائي في الغالبية العظمى من الملفات التنفيذية الموقعة (مثل: Microsoft، Adobe، Mozilla).
يتم تقديم المحمل كبديل حديث لأساليب DLL Hijacking & Sideloading التقليدية: على عكس النهج التقليدي، لا يتطلب وجود ملف ثنائي ضعيف. يمكن تنفيذ التقنية طالما أن الملف التنفيذي الهدف يحل DLL عبر جدول عناوين الاستيراد (IAT) أو، في أسوأ الحالات، عبر LoadLibrary بدون مسار مطلق.```c
C:\PhantomCtx\x64>.\PhantomCtx.exe
+----------------------------------+
| PhantomCtx v1.0 |
+----------------------------------+
Usage: PhantomCtx.exe -m [MODE] [OPTIONS]
Modes: -m recon Displays information about the Activation Context DLL redirections of a running process or one to be spawned.
-m spawn Perform Activation Context Hijacking using an on-disk executable
(preferably a signed binary for OPSEC purposes).
-m runtime Perform Activation Context Hijacking on an already running process.
للحصول على نظرة أعمق حول كيفية عمله داخليًا وكيفية تجاوزه لحلول EDR العدوانية، راجع المنشور على [مدونتي التقنية](https://rexmax.dev/posts/phantomctx-new-approach-to-activation-context-hijacking-for-edr-evasion/).
# جدول المحتويات
- [الآلية الداخلية](#internal-mechanism)
- [طريقة جديدة لاختراق سياق التفعيل تركز على تجاوز EDR](#a-new-method-for-activation-context-hijacking-focused-on-edr-evasion)
- [كيفية التجميع](#how-to-compile)
- [الاستخدام: سير العمل القائم على الوحدة](#usage-module-based-workflow)
- [الاستطلاع](#recon)
- [الإنتاج (موصى به)](#spawn-recommended)
- [وقت التشغيل](#runtime)
- [مثال: اختراق سياق التفعيل + وكيل DLL لـ mpnotify.exe](#example-activation-context-hijacking--dll-proxying-mpnotifyexe)
- [إخلاء المسؤولية](#disclaimer)
- [المراجع](#references)
# الآلية الداخلية
يستخدم `PhantomCtx` ميزة **شرعية** من Windows موجودة في معظم العمليات، تسمى **سياقات التفعيل**. وفقًا لمايكروسوفت:
>[_سياقات التفعيل_](https://learn.microsoft.com/en-us/windows/win32/sbscs/a-sbscs-gly) هي هياكل بيانات في الذاكرة تحتوي على معلومات يمكن للنظام استخدامها لإعادة توجيه التطبيق **لتحميل إصدار معين من DLL**، أو مثيل كائن COM، أو إصدار نافذة مخصص...
عندما يحل محمل Windows DLL (عبر `LoadLibrary` أو جدول الاستيراد)، فإنه يتبع ترتيب حل محدد:
1. إعادة توجيه DLL
2. مجموعات API
3. **إعادة توجيه بيان SxS**
4. قائمة الوحدات المحملة
5. DLLs المعروفة
6. رسم بياني لتبعية حزمة العملية
7 – 12. ترتيب البحث القياسي للملفات على القرص
يستهدف `PhantomCtx` الخطوة 3: **إعادة توجيه بيان SxS**.
تُشتق سياقات التفعيل من ملفات [Side-by-Side](https://en.wikipedia.org/wiki/Side-by-side_assembly) (`.manifest`) المرتبطة بالملفات التنفيذية، وعادةً ما تكون مضمنة في ثنائيات PE. داخليًا، يحتوي سياق التفعيل على **جدول محتويات (ToC)** يفهرس أقسامًا متعددة، بما في ذلك **قسم إعادة توجيه DLL**. عادةً ما يصل المحمل إلى سياقات التفعيل عبر `PEB.ActivationContextData`.
أظهر بحث [Kurosh Dabbagh Escalante](https://github.com/Kudaes) أنه يمكن إنشاء سياق تفعيل ضار باستخدام `CreateActCtxW`، ثم كتابته في ذاكرة `RW` في عملية مستهدفة، ثم تنشيطه عن طريق الكتابة فوق `PEB.ActivationContextData` للإشارة إلى الهيكل المُصمم.
بمجرد اختراقه، يقوم المحمل بحل إعادة توجيه DLL المحددة داخل سياق التفعيل الضار، **معيدًا توجيه حل المكتبة** إلى مسارات يتحكم بها المهاجم.
يمكن العثور على المحمل المسمى `Eclipse`، الذي تم تطويره كجزء من بحثه، في [مستودعه الرسمي](https://github.com/Kudaes/Eclipse).
## طريقة جديدة لاختراق سياق التفعيل تركز على تجاوز EDR
بعد اختبارات متعددة، تم اكتشاف `Eclipse` بواسطة أنظمة EDR عدوانية مثل Elastic في النقاط التالية:
- `حقن كود العملية المعلقة المحتمل`: إنشاء عملية معلقة متبوعًا بـ `NtWriteVirtualMemory` لنسخ كتلة AC إلى العملية البعيدة.
- `كتابة ذاكرة عملية بعيدة بواسطة وحدة منخفضة السمعة`: `NtWriteVirtualMemory` بدون `CreateProcess` في مكدس الاستدعاءات ووحدة منخفضة السمعة، مطلوبة للكتابة فوق `PEB.ActivationContextData`.
- `كتابة ذاكرة بعيدة إلى عملية هدف موثوقة`: `WriteProcessMemory` بدون `CreateProcess` في مكدس الاستدعاءات، مقيدة بالثنائيات المثبتة من النظام/المستخدم.
بعد يوم واحد من البحث عن طرق بديلة لتنفيذها في `PhantomCtx`، اكتشفت أن **منطقة الذاكرة لسياق التفعيل الأصلي هي عرض قسم يتم تعيينه أثناء إنشاء العملية**. من الممكن **إلغاء تعيين هذا العرض القسم باستخدام** `NtUnmapViewOfSection` ثم إنشاء عرض قسم جديد للقراءة فقط مدعوم بسياق التفعيل الضار الخاص بنا، وتعيينه في **نفس عنوان الذاكرة بالضبط** حيث كان الأصل موجودًا.
نتيجة لذلك، لم يعد **من الضروري** أن يقوم المحمل بالكتابة فوق مؤشر `PEB.ActivationContextData`. هذا يلغي الحاجة إلى استخدام `NtAllocateVirtualMemory` و`NtWriteVirtualMemory`، متجاوزًا بذلك جميع قواعد مراقبة EDR المتعلقة بكتابة الذاكرة عن بُعد والحقن.
بالإضافة إلى ذلك، لزيادة صعوبة الاكتشاف، لا يستخدم `PhantomCtx` `CreateActCtxW`، مما يلغي الحاجة إلى معالجة ملفات `.manifest` أثناء الهجوم. اعتمادًا على الوضع المحدد، يمكنه **سرقة سياق التفعيل من عملية بعيدة أخرى** تحتوي على قسم إعادة توجيه DLL صالح باستخدام `NtReadVirtualMemory`، وإعادة بناء إدخالات إعادة توجيه DLL محليًا، وتصحيحه، ثم استبدال الأصل.
# كيفية التجميع
لتجميع الأداة، يُوصى باستخدام Visual Studio أو مترجم متوافق.
إذا كنت تستخدم VS، افتح `x64 Native Tools Command Prompt for VS`، وانتقل إلى الدليل الجذر للمشروع وقم بتجميعه باستخدام `compile.bat`:```
C:\PhantomCtx>.\compile.bat
[INFO] Created output directory: x64
[INFO] Compiling PhantomCtx...
main.c
utils.c
recon.c
actctx.c
c_runtime.c
dynamic_resolution.c
process_utils.c
spawn.c
runtime.c
Generating Code...
[SUCCESSFUL] Build successful: x64\PhantomCtx.exe
تم تصميم الأداة بهندسة معيارية لتبسيط التطوير مع تزويد المشغل بسير عمل واضح قائم على الخطوات.
تخدم كل وحدة دورًا محددًا ضمن سير عمل الاستغلال.
يرجى أخذ لحظة لمراجعة الغرض من كل منها للاستفادة الكاملة من إمكانيات الأداة!!!
يمكن تنفيذ الهجوم إما على عملية سيتم إنشاؤها (موصى به) أو على عملية قيد التشغيل. تم تصميم الأداة للتعامل مع كلا السيناريوهين.```c C:\PhantomCtx\x64>.\PhantomCtx.exe
+----------------------------------+
| PhantomCtx v1.0 |
+----------------------------------+
Usage: PhantomCtx.exe -m [MODE] [OPTIONS]
Modes: -m recon Displays information about the Activation Context DLL redirections of a running process or one to be spawned.
-m spawn Perform Activation Context Hijacking using an on-disk executable
(preferably a signed binary for OPSEC purposes).
-m runtime Perform Activation Context Hijacking on an already running process.
## الاستطلاع
يركز وضع `الاستطلاع` على تحليل سياق التنشيط للبرنامج المستهدف أو العملية الجارية. وهو أول وحدة ينبغي تنفيذها، حيث تحدد الوحدة الفرعية للاستغلال التي يجب استخدامها ضمن سير عمل الاستغلال.```c
C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -h
+----------------------------------+
| PhantomCtx v1.0 |
+----------------------------------+
Usage:
PhantomCtx.exe -m recon -s [SUBMODE] -p [PROCESS_NAME|PATH]
Submodes:
-s spawn Spawn a process in suspended mode to retrieve its
Activation Context DLL redirection information.
-s runtime Attach to a currently running process to retrieve its
Activation Context DLL redirection information.
Examples:
PhantomCtx.exe -m recon -s spawn -p C:\path\to\target.exe
PhantomCtx.exe -m recon -s runtime -p target.exe
على سبيل المثال، نستخدم الملف الثنائي الموقّع من مايكروسوفت mpnotify.exe. الخطوة الأولى هي تحديد ما إذا كان يحتوي على Activation Context صالح مع قسم إعادة توجيه DLL.