Process Injection Techniques [1] - Intro (Ar)

Process Injection Techniques - Part 1

Featured image

الـ Process injection من ضمن الـ Evasion Techniques اللي بتستخدمها الMalware للتخفي والهروب من عمليات الDetection وتخطي الدفاعات الأمنية، وبتُستخدم كمان في الـ Persistence.

اللي بيحصل في العملية دي ان الـ Malicious Process بتنفّذ code معين جوا Address space خاص ب Process تانية تكون شرعية وموثوق فيها بالتالي هتحقق الأهداف اللي قلنا عليهم وهم ال Stealth & Persistence.

في المقال دا انا كاتب بشكل مختصر ايه هي الـ Process Injection و نبذة عن أشهر الـ Techniques فيها، وفيه أجزاء تانية هشرح فيها بالتفصيل كل تقنية منهم لوحدها وازاي نكتشفها واحنا بنعمل Malware Analysis ✍️

الأول خلينا نعرف مصطلحين مهمين هنستخدمهم في الكلام وهم Process و Process Address Space عشان هنحتاجهم في الكلام الجاي:

الـ Process معظمنا سمع عنها أو شافها في الويندوز، هي عبارة عن resource mechanism بتمثّل instance أو نسخة من برنامج شغال بالفعل (معموله Load في الميموري)..
-كل process بيبقى ليها بيئة منعزلة خاصة بيها بتستخدمها في ادارة الـ resources او الموارد اللي بيحتاجها البرنامج.
-كل process ليها على الأقل Thread واحد وده غالبا بيكون مسؤول عن تنفيذ الكود بدايةً من الـ entry point الخاصة بالـ executable file.
(مش شرط أي process تبدأ من الـ entry point علطول لان فيه Malware بتبدأ من points مختلفة زي الـ TLS وغيره.. مش موضوعنا حاليا)

ملاحظة: فيه عمليات بدون threads بس بيكون ملهاش لازمة ولما الـ kernel تشوفها مبتعملش حاجة بتقفلها.

أما Process Address Space عبارة عن مجموعة العناوين اللي بتشير ليها الـ Process في الـ Code بتاعها... واللي يقدر يوصلها المعالج، سواء كانت Physical Addresses أو Virtual Addresses.

بعض الـ Process Injection Techniques:
1-Classic DLL Injection
2-Reflective DLL Injection
3-Thread Execution Hijacking
4-PE Injection
5-Process Hollowing
6-Hooking via SetWindowsHookEx
7-IAT & inline Hooking
8-Injection via Registry
9-Extra Window Memory Injection (EWMI)
10-Asynchronous Procedure Calls (APC) Injection
11-API Injection
... وغيرهم.

1-Classic DLL Injection:
من التقنيات الشائعة والسهلة في الاستخدام، اللي بيحصل فيها ان الـ Malicious Process بتحقن الـ Path الخاص بالـ Malicious DLL بتاعت المالوير جوا Address Space خاص بـ legitimate process موثوق فيها زي svchost.exe مثلاً.. بعدين بتستدعي الـ DLL دي باستخدام remote thread عشان تتنفذ.

من عيوب الطريقة دي ان الـ Malicious DLL لازم تتحفظ او تبقى موجودة على الDisk، وكمان بتبقى ظاهرة في الـ Import Table (اتكلمنا عنه سابقاً في منشور الـ PE Format).

2-Reflective DLL Injection:
الطريقة دي بتعتمد على تحميل الـ DLL من الMemory بدلاً من الـ Disk بعكس الطريقة اللي فاتت، وبما ان الويندوز مش بيحتوي على LoadLibrary Function لتحميلها بالطريقة دي؛ فالمهاجمين هنا بيضطرو يكتبو Loader Function ودا بيساعدهم في تخطّي المراقبة الموجودة على عمليات الـ Loading.. والباقي معروف.

3-Thread Execution Hijacking:
الطريقة دي بتتم من خلال 3 مراحل اساسية بيطلق عليهم مصطلح SIR ودا اختصار Suspend, Inject, Resume:

اللي بيحصل هنا ان الـ Malware بيستهدف legitimate thread يكون موجود وشغال بالفعل وبيعمله suspend الاول، بعدها بيعمل inject لـ malicious code جواه، وبعدين يعمل resume للـ thread عشان ينفذ الـ code.. الكود دا ممكن يحتوي على shellcode او path خاص بmalicious dll او address خاص بـLoadLibrary.

ملاحظات:
- لاحظ انه بيستخدم الEIP register عشان يتحكم في الـ execution زي انه يعمل resume او pause مثلاً.
- لما يحصل suspend أو resume للـthread أحيانا بيسبب مشكلة للـ system ويخليه ي crash؛ عشان كدة بعض الـ malware المعقّدة مش بتعمل suspend علطول وممكن تكمل شغلها لحد ما تتأكد انه مش هيسبب مشكلة.

4-PE Injection:
الطريقة دي بتتميز ب ان الـmalware مش محتاج يحط malicious dll على الـdisk ودا بيشبه الReflective DLL Injection في النقطة دي، لكن الـ PE injection بيعتمد على حقن الـ malicious code في process موجودة ع السيستم وشغالة، بعدين بينفذ الكود عن طريق shellcode أو remote thread.

من المشاكل الموجودة في الطريقة دي ان لما بيحصل inject لل PE في Process تانية بيبقى ليها base address جديد مش معروف وبيحتاج لحساب عناوين الـ PE مرة تانية، وهنا الـ malware بيحتاج يبحث عن الـ relocation table address عشان يحسب عناوين الـ image من جديد.

5-Process Hollowing:
اللي بيحصل هنا ان الـMalware بيعمل unmapping أو hollowing (تفريغ) لل code من ذاكرة الـ legitimate process (زي svchost.exe مثلا) وبيستبدل الـ memory space الموجود مكانه ب malicious executable علطول (بدل حقن الcode في البرنامج زي ما شفنا في الdll injection قبل كدة).

6-Hooking via setWindowsHookEx:
الـHooking بشكل عام بيُستخدم عشان يعمل intercept أو اعتراض للـfunction calls؛
فالMalware ممكن تستغله لتحميل Malicious DLLs خاصة بيها عند events معينة في الThread ودا باستخدام دالة SetWindowsHookEx؛ فبمجرد حقن الDLL بيقوم الmalware بتنفيذ الmalicious code بدل العملية الأصلية اللي اتبعت الthread id بتاعها لدالة setWindowsHookEx.

7-IAT Hooking:
في التقنية دي الmalware بيعتمد على تعديل الImport Address Table بحيث لما legitimate application موثوق منه يستدعي API من DLL معينة يقوم منفذ الReplaced Function بدلاً من الOriginal Function.

ملاحظة: فيه نوع تاني اسمه Inline Hooking بيعتمد على تعديل الAPI Function نفسها بدلاً من تعديل الIAT.

8-Injection via Registry:
فيه keys في الregistry بتقوم الmalware باستغلالها في الinjection والpersistence زي: Appinit_DLL, AppCertDlls, IFEO
مكان الKeys في المسارات دي:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\Appinit_Dlls
HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\Appinit_Dlls
HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls
HKLM\Software\Microsoft\Windows NT\currentversion\IFEO
و دول هنشرحهم بالتفصيل في جزء تاني.