Process Injection؛ از مبانی Windows Process
نویسنده: یاسین عابدینی · دسته: RedTeam · تاریخ انتشار: ۱۴۰۵/۶/۱۴
Process Injection؛ از مبانی Windows Process تا تکنیکهای پیشرفته Red Team
یکی از مفاهیم مهم در Windows Internals و همچنین یکی از تکنیکهای شناختهشده در Malware Development و Red Team، مفهوم Process Injection است.
در یک نگاه ساده، Process Injection به مجموعهای از Techniqueها گفته میشود که در آن یک Process تلاش میکند Code یا Data را وارد Address Space یک Process دیگر کند و سپس باعث اجرای آن Code در Context مربوط به Process مقصد شود.
این تعریف در ظاهر ساده است، اما پشت آن مجموعهای از مفاهیم مهم Windows قرار دارد:
- Process و Thread
- Virtual Address Space
- Process Handle
- Access Token
- Virtual Memory
- PE Format
- DLL و Module Loading
- PEB و TEB
- Windows API
- Native API
- Thread Execution
- APC
- Remote Thread
- WOW64
- x86/x64 Architecture
بنابراین برای درک واقعی Process Injection، صرفاً دانستن چند API مانند:
OpenProcess()
VirtualAllocEx()
WriteProcessMemory()
CreateRemoteThread()
کافی نیست.
باید بدانیم چرا این APIها وجود دارند، چه اتفاقی در Memory میافتد، Thread چگونه Code را اجرا میکند، Processها چگونه از یکدیگر جدا میشوند و مهاجم چگونه این Isolation را به شکل کنترلشده دور میزند.
در Windows، هر Process دارای Virtual Address Space اختصاصی خود است و Threadهای آن Process در همان Address Space اجرا میشوند. در نتیجه، Thread در واقع واحدی است که توسط Scheduler برای اجرای CPU زمانبندی میشود، نه خود Process.
در این مقاله، Process Injection را از پایه تا مباحث پیشرفته بررسی میکنیم.
1. Process Injection چیست؟
Process Injection تکنیکی برای اجرای Code در Address Space یک Process دیگر است.
MITRE ATT&CK این Technique را با شناسه: T1055 - Process Injection دستهبندی میکند.
در نسخه فعلی MITRE ATT&CK، Process Injection شامل Sub-techniqueهای مختلفی مانند:
- Dynamic-link Library Injection
- Portable Executable Injection
- Thread Execution Hijacking
- Asynchronous Procedure Call
- Thread Local Storage
- Process Hollowing
- Process Doppelgänging
- VDSO Hijacking
- ListPlanting
و چند Technique دیگر است.
نکته مهم این است که:
Process Injection یک Technique واحد نیست؛ بلکه یک خانواده از Techniqueهای مختلف برای اجرای Code در Context یک Process دیگر است.
2. چرا Process Injection اهمیت دارد؟
فرض کنیم یک Malware به شکل معمولی اجرا شود:
malware.exe
در این حالت Process مربوط به Malware به صورت مستقیم در سیستم وجود دارد و رفتار آن برای Security Productها قابل مشاهده است.
اما در Process Injection، معماری میتواند به شکل زیر باشد:
1. malware.exe
2. inject
3. explorer.exe
4. malicious code
در این حالت Code مهاجم داخل Process دیگری اجرا میشود.
این موضوع میتواند برای موارد مختلفی استفاده شود:
Defense Evasion
مهاجم ممکن است بخواهد Execution خود را در Context یک Process معتبر انجام دهد.
Process Migration
در برخی Red Team Frameworkها، Agent میتواند Execution خود را به Process دیگری منتقل کند.
Access به Resources
Code تزریقشده در Context Process مقصد میتواند به Memory، Network Resources و سایر منابعی که Process مقصد به آنها دسترسی دارد، دسترسی داشته باشد.
Privilege Context
اگر Process مقصد دارای Security Context متفاوت یا Privileged باشد، اجرای Code در آن Context میتواند اهمیت امنیتی زیادی داشته باشد.
البته یک نکته بسیار مهم:
Process Injection به خودی خود به معنی Privilege Escalation نیست.
اگر Process مهاجم و Process مقصد هر دو تحت یک User و سطح دسترسی مشابه باشند، Injection الزاماً باعث افزایش Privilege نمیشود.
MITRE نیز Process Injection را در زمینههایی مانند Defense Evasion و در برخی سناریوها Privilege Escalation مرتبط میداند.
3. Process در Windows چگونه کار میکند؟
برای درک Injection ابتدا باید Process را بشناسیم.
Microsoft یک Process را مجموعهای از منابع لازم برای اجرای یک Program تعریف میکند. این منابع شامل مواردی مانند:
- Virtual Address Space
- Executable Code
- Handles
- Security Context
- Process ID
- Environment
- Loaded Modules
- Threads
است. هر Process حداقل یک Thread دارد.
به صورت مفهومی:
Process
│
├── Virtual Address Space
│
├── Executable Image
│
├── DLLs
│
├── Heap
│
├── Stack(s)
│
├── Handles
│
├── Security Token
│
├── PEB
│
└── Threads
│
├── Thread 1
├── Thread 2
└── Thread 3
نکته بسیار مهم:
CPU مستقیماً Process را اجرا نمیکند؛ CPU Thread را اجرا میکند.
به همین دلیل بخش مهمی از Process Injection در نهایت به این سؤال برمیگردد:
چگونه میتوان کاری کرد که یک Thread در Process مقصد، Code موردنظر مهاجم را اجرا کند؟
4. Virtual Address Space چیست؟
هر Process در Windows دارای Virtual Address Space خودش است.
برای مثال:
Process A
+----------------------+
| Virtual Address Space|
| |
| Code |
| DLLs |
| Heap |
| Stack |
| Data |
+----------------------+
Process B
+----------------------+
| Virtual Address Space|
| |
| Code |
| DLLs |
| Heap |
| Stack |
| Data |
+----------------------+
این دو Address Space به صورت منطقی از یکدیگر جدا هستند.
Microsoft توضیح میدهد که Virtual Address Space هر Process خصوصی است و Processهای دیگر به صورت عادی نمیتوانند آن را Access کنند.
اما Windows APIهایی فراهم میکند که با داشتن Permission مناسب، یک Process بتواند Memory مربوط به Process دیگر را Manipulate کند.
و این دقیقاً جایی است که Process Injection وارد میشود.
5. Process Handle چیست؟
برای Manipulate کردن یک Process دیگر، معمولاً ابتدا باید یک Handle به آن Process داشته باشیم.
برای مثال:
OpenProcess(...)
به صورت مفهومی:
Attacker
|
| OpenProcess()
v
Target Process
|
v
Process Handle
Handle در Windows یک Reference به یک Object است که Process میتواند از طریق آن با Object مربوطه تعامل داشته باشد.
سطح دسترسی Handle اهمیت بسیار زیادی دارد.
برای مثال Operationهایی مانند:
PROCESS_VM_READ
PROCESS_VM_WRITE
PROCESS_VM_OPERATION
PROCESS_CREATE_THREAD
هرکدام Permissionهای متفاوتی ایجاد میکنند.
در نمونهای که در فایل POC قرار دارد، Code از:
OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
استفاده میکند.
در محیط واقعی، استفاده از PROCESS_ALL_ACCESS الزاماً بهترین روش نیست و میتواند Detection را نیز سادهتر کند.
6. Thread چیست و چرا در Injection مهم است؟
Thread واحد Execution داخل Process است.
تمام Threadهای یک Process، Virtual Address Space آن Process را Share میکنند.
مثلاً:
Process
│
├── Thread A
├── Thread B
└── Thread C
Shared Virtual Address Space
بنابراین اگر Code جدیدی وارد Address Space یک Process شود، باید یک مکانیزم برای اجرای آن Code وجود داشته باشد.
این مکانیزم میتواند:
ایجاد Remote Thread
Hijacking یک Thread موجود
Queue کردن APC
تغییر Execution Context
استفاده از Loader
یا Techniqueهای دیگر
باشد.
7. مدل کلاسیک Process Injection
یکی از سادهترین مدلهای Process Injection را میتوان در چهار مرحله خلاصه کرد:
1. Find Target Process
2. Obtain Process Handle
3. Allocate + Write Memory
4. Execute the Payload
این دقیقاً همان Flowی است که در POC ارسالی مشاهده میشود.
به شکل دقیقتر:
CreateToolhelp32Snapshot
|
v
Process32First / Process32Next
|
v
Find PID
|
v
OpenProcess
|
v
VirtualAllocEx
|
v
WriteProcessMemory
|
v
CreateRemoteThread
|
v
Payload Execution
این Flow یکی از مهمترین Patternهایی است که یک SOC Analyst یا Threat Hunter باید بتواند تشخیص دهد.
8. مرحله اول؛ پیدا کردن Target Process
در POC اول، Processهای موجود در سیستم Enumerate میشوند.
Code از:
CreateToolhelp32Snapshot()
برای ایجاد Snapshot استفاده میکند و سپس:
Process32First()
Process32Next()
را برای پیمایش Processها به کار میگیرد.
در نمونه، Process موردنظر:
msedge.exe
9. مرحله دوم؛ OpenProcess
پس از پیدا کردن PID، Process مهاجم باید Handle مربوط به Target را دریافت کند.
نمونه:
OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
در فایلهای نمونه نیز همین Pattern مشاهده میشود.
از دید مفهومی:
PID
|
v
OpenProcess()
|
v
HANDLE
|
+--> Read Memory
+--> Write Memory
+--> Allocate Memory
+--> Create Thread
سطح Permission تعیین میکند چه Operationهایی امکانپذیر باشند.
10. مرحله سوم؛ VirtualAllocEx
اکنون مهاجم باید Memory در Address Space مربوط به Process مقصد ایجاد کند.
برای این کار در Classic Injection معمولاً از:
VirtualAllocEx()
استفاده میشود.
در نمونه:
VirtualAllocEx(
hProcess,
NULL,
size,
MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READWRITE
);
استفاده شده است.
مفهوم آن:
Attacker
|
| VirtualAllocEx
v
Target Process
|
+---- New Memory Region
در اینجا یک نکته بسیار مهم برای Detection وجود دارد.
ترکیب:
Remote Process
+
Memory Allocation
+
Executable Permission
میتواند یک Signal بسیار مهم برای EDR باشد.
11. چرا PAGE_EXECUTE_READWRITE مهم است؟
در مثال POC:
PAGE_EXECUTE_READWRITE
استفاده شده است.
این Permission یعنی Memory هم:
READ
WRITE
EXECUTE
باشد.
از دید مهاجم، این کار ساده است:
Allocate
↓
Write
↓
Execute
اما از دید Defensive Security، Memory Regionای که همزمان Writable و Executable باشد، بسیار جالب است.
به همین دلیل Implementationهای مدرنتر ممکن است Memory را ابتدا با Permissionهای محدودتر ایجاد کنند و در زمان مناسب Permission آن را تغییر دهند.
این موضوع باعث میشود Detection فقط روی:
PAGE_EXECUTE_READWRITE
متمرکز نباشد.
بلکه باید Memory Permission Transitionها نیز بررسی شوند.
12. مرحله چهارم؛ WriteProcessMemory
بعد از ایجاد Memory، Payload باید وارد آن Memory شود.
در POC:
WriteProcessMemory(
hProcess,
allocated_mem,
buf,
sizeof(buf),
NULL
);
استفاده شده است.
Microsoft این API را برای نوشتن Data در Memory یک Process مشخص تعریف کرده است و Handle باید Permissionهای لازم مانند PROCESS_VM_WRITE و PROCESS_VM_OPERATION را داشته باشد.
پس:
Local Buffer
|
| WriteProcessMemory
v
Remote Process Memory
اکنون Payload در Process مقصد قرار دارد.
اما هنوز یک مشکل باقی مانده:
چگونه آن را Execute کنیم؟
13. مرحله پنجم؛ CreateRemoteThread
در Classic Injection پاسخ معمولاً:
CreateRemoteThread()
است.
Microsoft این API را برای ایجاد Threadای تعریف میکند که در Virtual Address Space یک Process دیگر اجرا میشود.
در POC:
CreateRemoteThread(
hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)allocated_mem,
NULL,
0,
NULL
);
استفاده شده است.
در نتیجه:
Remote Memory
|
| Start Address
v
CreateRemoteThread
|
v
Target Thread
|
v
Execute Payload
و حالا Chain کامل شده است:
Process Enumeration
↓
OpenProcess
↓
VirtualAllocEx
↓
WriteProcessMemory
↓
CreateRemoteThread
↓
Payload Execution
این Chain یکی از مهمترین Behavioral Patternهای Process Injection است.
14. Process Injection و DLL Injection یکی نیستند
یکی از اشتباهات رایج این است که این دو اصطلاح را کاملاً یکسان در نظر بگیریم.
Process Injection
یک Concept کلی است:
اجرای Code در Context یک Process دیگر.
DLL Injection
یکی از روشهای انجام Process Injection است که در آن یک DLL در Process مقصد Load یا Map میشود.
MITRE DLL Injection را با:
T1055.001
شناخته و توضیح میدهد که روش کلاسیک آن میتواند شامل نوشتن Path مربوط به DLL در Memory مقصد و سپس فراخوانی LoadLibrary از طریق یک Thread باشد.
بنابراین:
Process Injection
│
├── DLL Injection
├── PE Injection
├── APC Injection
├── Thread Hijacking
├── Process Hollowing
├── Process Doppelgänging
└── ...
15. DLL Injection چگونه کار میکند؟
مدل کلاسیک:
Attacker
|
| OpenProcess
v
Target
|
| Allocate Memory
v
Remote Memory
|
| Write DLL Path
v
DLL Path
|
| Execute LoadLibrary
v
DLL Loaded
اینجا مهاجم Shellcode را مستقیماً اجرا نمیکند؛ بلکه باعث میشود Loader مربوط به Windows یک DLL را Load کند.
API مهم:
LoadLibrary
است.
16. LoadLibrary و GetProcAddress
دو API بسیار مهم در Windows Programming عبارتاند از:
LoadLibrary()
GetProcAddress()
LoadLibrary برای Load کردن Module و GetProcAddress برای پیدا کردن Address یک Export استفاده میشود.
17. PEB چیست؟
یکی از مهمترین Structures در Windows Internals:
PEB
Process Environment Block
است.
PEB اطلاعات مهمی درباره Environment مربوط به Process در اختیار قرار میدهد و Loader Information نیز از مسیر آن قابل دسترسی است.
18. چرا Malware به PEB علاقه دارد؟
اگر Program بتواند PEB را پیدا کند، میتواند اطلاعاتی درباره Moduleهای Load شده به دست آورد.
در نتیجه به جای اینکه همیشه از:
GetModuleHandle()
یا APIهای مشابه استفاده کند، میتواند Moduleها را خودش پیدا کند.
این موضوع در Shellcode و Malwareهایی که سعی میکنند وابستگی مستقیم خود به Windows API را کاهش دهند بسیار مهم است.
19. Process Environment Block و Process Parameters
میتوان بعد از دریافت PEB به: ProcessParameters دسترسی پیدا کرد و مواردی مانند:
CommandLine
ImagePathNameرا دستکاری کرد.
این بخش لزوماً Process Injection نیست.
بلکه نمونهای از Manipulation کردن Process Metadata است.
این تمایز بسیار مهم است:
هر تکنیکی که PEB را Manipulate کند، Process Injection محسوب نمیشود.
20. Shellcode چیست؟
در بسیاری از Process Injection Techniqueها، Payload به صورت:
Shellcode
در Memory قرار میگیرد.
Shellcode معمولاً Position-Independent Code است که میتواند بدون نیاز به یک PE File کامل اجرا شود.
به صورت مفهومی:
unsigned char payload[] =
{
0xFC,
0x48,
0x81,
...
};
سپس:
payload
↓
WriteProcessMemory
↓
Remote Memory
↓
Execution
21. APC Injection
APC مخفف:
Asynchronous Procedure Call
است.
Windows میتواند Functionهایی را در APC Queue یک Thread قرار دهد.
در Process Injection، مهاجم میتواند از این مکانیزم برای Trigger کردن Code در Context یک Thread استفاده کند.
مدل:
Target Thread
|
v
APC Queue
|
v
Injected Function
|
v
Execution
MITRE این Technique را:
T1055.004
معرفی میکند.
22. Process Hollowing
Process Hollowing یکی از Techniqueهای معروفتر است.
ایده کلی:
Create Legitimate Process
|
v
Suspend Process
|
v
Replace / Unmap Image
|
v
Map Malicious Image
|
v
Resume Execution
در ظاهر Process ممکن است یک Application معتبر باشد، اما Image واقعی که در Memory اجرا میشود میتواند متفاوت باشد.
این Technique در MITRE:
T1055.012
قرار دارد.
23. Process Doppelgänging
Process Doppelgänging یک Technique پیچیدهتر برای اجرای Code در Context یک Process است که از ویژگیهای Transactional NTFS و Process Creation سوءاستفاده میکند.
این Technique نیز در خانواده Process Injection قرار دارد:
T1055.013
هدف اصلی آن ایجاد اختلاف بین آنچه روی Disk دیده میشود و آنچه در Memory برای Execution مورد استفاده قرار گرفته است.
24. Process Injection در Red Team چه کاربردی دارد؟
Process Injection برای Red Team یک Primitive مهم است.
برخی کاربردهای آن:
38.1 Defense Evasion
تلاش برای قرار دادن Execution در Context یک Process معتبر.
38.2 Process Migration
جابجایی Execution یک Agent از Process فعلی به Process دیگر.
38.3 C2 Agent Execution
در برخی Frameworkها Agent میتواند در Process دیگری اجرا شود.
38.4 کاهش Artifactهای قابل مشاهده
برخی Implementationها تلاش میکنند Payload را بیشتر در Memory نگه دارند و Artifactهای Disk را کاهش دهند.
38.5 استفاده از Context موجود
Process مقصد ممکن است Network Connection، Token، DLLها یا Resourceهای موردنیاز را داشته باشد.
اما باید دقت کرد:
Process Injection یک هدف نهایی نیست؛ معمولاً یک Execution Primitive در یک Attack Chain بزرگتر است.
25. Process Injection از دید SOC
از دید SOC مهمترین سؤال این نیست که:
آیا Process X اجرا شد؟
بلکه سؤال بهتر این است:
آیا یک Process غیرعادی تلاش کرده است Memory یا Execution Context یک Process دیگر را Manipulate کند؟
برای مثال:
Process A
|
+--> OpenProcess
|
+--> VirtualAllocEx
|
+--> WriteProcessMemory
|
+--> CreateRemoteThread
|
v
Process B
این Chain بسیار ارزشمندتر از بررسی نام Process است.
26. Detection بر اساس Behavior
یک Detection ساده ممکن است بگوید:
CreateRemoteThread detected
اما این کافی نیست.
Detection بهتر:
Process A
|
+-- Process Enumeration
|
+-- OpenProcess
|
+-- Remote Memory Allocation
|
+-- Memory Write
|
+-- Memory Permission Change
|
+-- Remote Execution
هرچه تعداد این رفتارها در یک Time Window نزدیک بیشتر شود، Confidence بالاتر میرود.
27. مهمترین Detection Signals
برای Threat Hunting میتوان روی این موارد تمرکز کرد:
Process Access
OpenProcess
Remote Memory Allocation
VirtualAllocEx
NtAllocateVirtualMemory
Remote Memory Write
WriteProcessMemory
NtWriteVirtualMemory
Remote Execution
CreateRemoteThread
CreateRemoteThreadEx
NtCreateThreadEx
Thread Manipulation
SuspendThread
SetThreadContext
ResumeThread
APC
QueueUserAPC
NtQueueApcThread
Memory Permission Changes
VirtualProtectEx
NtProtectVirtualMemory
اینها به تنهایی همیشه Malicious نیستند.
اما Chain آنها بسیار مهم است.
28. چرا API Detection به تنهایی کافی نیست؟
یک مهاجم میتواند به جای Win32 API مستقیماً از Native API یا تکنیکهای دیگر استفاده کند.
همچنین ممکن است:
CreateRemoteThread
اصلاً استفاده نشود.
برای مثال:
Thread Hijacking
APC Injection
Process Hollowing
Manual Mapping
میتوانند Execution را بدون همان Chain کلاسیک انجام دهند.
بنابراین Detection باید از:
API-based Detection
به سمت:
Behavior-based Detection
حرکت کند.
29. Memory Detection
یکی از مهمترین روشهای Detection بررسی Memory است.
مثلاً Regionهایی با:
RWX
میتوانند جالب باشند.
اما Detection صرفاً:
RWX = Malicious
نیست.
بهتر است:
RWX Memory
+
Remote Process
+
Unbacked Memory
+
Execution
+
Suspicious Parent/Source
در کنار یکدیگر بررسی شوند.
برای ادامه مطالعه مقاله فایل مربوطه در قسمت منابع به آدرس زیر را دانلود کرده و تحلیل های زیر را مطالعه کنید :
30. تحلیل POC 1
حالا میتوانیم POC ارسالی را مرحلهبهمرحله خلاصه کنیم.
مرحله 1
CreateToolhelp32Snapshot
برای Process Enumeration.
مرحله 2
Process32First
Process32Next
برای پیدا کردن Target.
مرحله 3
OpenProcess
برای دریافت Handle.
مرحله 4
VirtualAllocEx
برای ایجاد Memory در Process مقصد.
مرحله 5
WriteProcessMemory
برای انتقال Payload.
مرحله 6
CreateRemoteThread
برای Trigger کردن Execution.
در نتیجه:
Enumeration
↓
OpenProcess
↓
VirtualAllocEx
↓
WriteProcessMemory
↓
CreateRemoteThread
↓
Execution
این دقیقاً یک نمونه آموزشی مناسب برای فهم Classic Process Injection است.
31. تحلیل Sample C++ Project
فایل دوم چند موضوع مهم را همزمان نشان میدهد.
Injection
OpenProcess
VirtualAllocEx
WriteProcessMemory
CreateRemoteThread
Dynamic API Resolution
GetModuleBaseAddress
GetExportAddress
LoadLibraryA
GetProcAddress
Native API
NtQueryInformationProcess
PEB Manipulation
ProcessInformation.PebBaseAddress
و دسترسی به:
ProcessParameters
پس این پروژه برای مطالعه Windows Internals بسیار ارزشمندتر از یک POC ساده Injection است.
32. تحلیل Run32On64
فایل Run32On64 یک موضوع پیشرفتهتر را نشان میدهد:
Cross-Architecture Execution
در آن از ساختارهایی مانند:
WOW64CONTEXT
استفاده شده و Routineهایی برای Migration بین x86 و x64 وجود دارند.
همچنین Flow کلی:
Find Process
↓
OpenProcess
↓
VirtualAllocEx
↓
WriteProcessMemory
↓
WOW64-specific Execution
قابل مشاهده است.
این موضوع نشان میدهد که در سطح Advanced، Process Injection دیگر صرفاً مسئله چند API نیست و باید Windows Architecture را نیز درک کرد.
33. نقشه ذهنی Process Injection
در نهایت میتوان کل موضوع را اینگونه خلاصه کرد:
Process Injection
|
+------------------+------------------+
| | |
Target Memory Execution
| | |
| | |
Process Enum Allocate Memory Remote Thread
OpenProcess Write Memory APC
Handle Access Change Protection Thread Hijack
| | |
+------------------+------------------+
|
v
Code Execution
|
+------------+------------+
| | |
Shellcode DLL PE
| | |
+------------+------------+
|
v
Red Team Use
|
+------------+------------+
| | |
Evasion C2 Migration
34. جمعبندی نهایی
Process Injection یکی از مهمترین مباحث برای کسی است که میخواهد در حوزههای:
Red Team
Malware Analysis
Threat Hunting
EDR Engineering
SOC
Windows Internals
به سطح Advanced برسد.
برای درک واقعی این موضوع باید چند Layer را همزمان یاد گرفت:
Windows Process Model
↓
Thread Model
↓
Virtual Memory
↓
Windows API
↓
PE Format
↓
PEB / TEB
↓
DLL Loader
↓
Native API
↓
x86 / x64 / WOW64
↓
Process Injection
↓
EDR Detection
↓
Threat Hunting
POCهای ارائهشده نیز دقیقاً همین مسیر را نشان میدهند.
POC اول یک نمونه ساده و شفاف از:
Process Enumeration
→ OpenProcess
→ VirtualAllocEx
→ WriteProcessMemory
→ CreateRemoteThread
است.
نمونه C++ دوم این موضوع را به مباحث پیشرفتهتری مانند:
Dynamic API Resolution
PE Export Parsing
PEB
NtQueryInformationProcess
متصل میکند.
و نمونه Run32On64 نیز نشان میدهد که در سطح بالاتر، مسائل:
x86
x64
WOW64
Cross-Architecture Execution
به بخش مهمی از موضوع تبدیل میشوند.
در نهایت، برای یک Red Team یا Threat Hunter حرفهای، مهمترین نکته این نیست که فقط بداند چگونه یک Process را Inject کند؛ بلکه باید بتواند کل Lifecycle آن را از انتخاب Target و دسترسی به Handle، تا Memory Manipulation و Execution، و سپس از دید EDR/SOC Detection تحلیل کند.
به همین دلیل Process Injection را میتوان یکی از بهترین موضوعات برای اتصال سه حوزه دانست:
Windows Internals
+
Offensive Security
+
Defensive Security
و دقیقاً همین نقطه است که یک Security Analyst را از سطح صرفاً Alert Monitoring به سمت Threat Hunting و Advanced Red Team Analysis هدایت میکند.