
सक्रियण संदर्भ अपहरण बचाव उपकरण
PhantomCtx एक उपकरण है जो Activation Context हाईजैकिंग को स्वचालित करता है, जिसका उद्देश्य अधिकांश हस्ताक्षरित निष्पादनयोग्य (जैसे माइक्रोसॉफ्ट, एडोबी, मोज़िला) में एक मनमाना DLL लोड करना है।
लोडर को पारंपरिक DLL Hijacking & Sideloading के आधुनिक विकल्प के रूप में प्रस्तुत किया गया है: पारंपरिक दृष्टिकोणों के विपरीत, इसे किसी कमजोर बाइनरी की आवश्यकता नहीं होती। यह तकनीक तब तक की जा सकती है जब तक लक्ष्य निष्पादनयोग्य अपने Import Address Table (IAT) के माध्यम से एक DLL को हल करता है या, सबसे खराब स्थिति में, बिना पूर्ण पथ के 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.
For a deeper dive into how it works internally and how it evades aggressive EDR solutions, check out the post on [my technical blog](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)
- [उदाहरण: एक्टिवेशन कॉन्टेक्स्ट हाइजैकिंग + mpnotify.exe का DLL प्रॉक्सीइंग](#example-activation-context-hijacking--dll-proxying-mpnotifyexe)
- [अस्वीकरण](#disclaimer)
- [संदर्भ](#references)
# आंतरिक तंत्र
`PhantomCtx` अधिकांश प्रक्रियाओं में मौजूद एक **वैध** विंडोज़ सुविधा का दुरुपयोग करता है, जिसे **एक्टिवेशन कॉन्टेक्स्ट** कहा जाता है। माइक्रोसॉफ्ट के अनुसार:
>[_एक्टिवेशन कॉन्टेक्स्ट_](https://learn.microsoft.com/en-us/windows/win32/sbscs/a-sbscs-gly) मेमोरी में डेटा संरचनाएं हैं जिनमें ऐसी जानकारी होती है जिसका उपयोग सिस्टम किसी एप्लिकेशन को **किसी विशेष DLL संस्करण**, COM ऑब्जेक्ट इंस्टेंस, या कस्टम विंडो संस्करण को लोड करने के लिए पुनर्निर्देशित करने के लिए कर सकता है...
जब विंडोज लोडर किसी 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 द्वारा निम्नलिखित बिंदुओं पर पता चला:
- `Potential Suspended Process Code Injection`: suspended process creation followed by `NtWriteVirtualMemory` to copy the AC blob into the remote process.
- `Remote Process Memory Write by Low Reputation Module`: `NtWriteVirtualMemory` without `CreateProcess` in the call stack and a low-reputation module, needed for overwriting `PEB.ActivationContextData`.
- `Remote Memory Write to Trusted Target Process`: `WriteProcessMemory` without `CreateProcess` in the call stack, restricted to system/user-installed binaries.
`PhantomCtx` में वैकल्पिक दृष्टिकोण लागू करने के लिए एक दिन के शोध के बाद, मैंने पाया कि **मूल एक्टिवेशन कॉन्टेक्स्ट का मेमोरी क्षेत्र प्रक्रिया निर्माण के दौरान मैप किया गया एक सेक्शन व्यू है**। इस सेक्शन व्यू को `NtUnmapViewOfSection` का उपयोग करके **अनमैप करना** संभव है और फिर हमारे दुर्भावनापूर्ण एक्टिवेशन कॉन्टेक्स्ट द्वारा समर्थित एक नया रीड-ओनली सेक्शन व्यू बनाना, इसे **उसी मेमोरी पते** पर मैप करना जहां मूल स्थित था।
परिणामस्वरूप, लोडर के लिए `PEB.ActivationContextData` पॉइंटर को अधिलेखित करना **अब आवश्यक नहीं** है। यह `NtAllocateVirtualMemory` और `NtWriteVirtualMemory` का उपयोग करने की आवश्यकता को समाप्त करता है, रिमोट प्रक्रिया मेमोरी राइट और इंजेक्शन से संबंधित सभी EDR मॉनिटरिंग नियमों को दरकिनार करता है।
इसके अतिरिक्त, पहचान की कठिनाई बढ़ाने के लिए, `PhantomCtx` `CreateActCtxW` का उपयोग नहीं करता है, हमले के दौरान `.manifest` फ़ाइलों को संभालने की आवश्यकता को समाप्त करता है। चयनित मोड के आधार पर, यह `NtReadVirtualMemory` का उपयोग करके एक वैध DLL पुनर्निर्देशन अनुभाग वाले **दूसरे रिमोट प्रक्रिया से एक्टिवेशन कॉन्टेक्स्ट चुरा** सकता है, 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.
## Recon