في البوست دا انا كاتب بشكل مختصر ايه هي الـ Process Injection و نبذة عن أشهر الـ Techniques فيها
وفيه جزء2 هكمل فيه الـ Techniques واحتمال يبقى فيه أجزاء تانية فيها شرح بالتفصيل لكل تقنية منهم لوحدها وازاي نكتشفها واحنا بنعمل 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 من ضمن الـ Evasion Techniques اللي بتستخدمها الMalware للتخفي والهروب من عمليات الDetection وكمان لتحقيق الـ Persistence في بعض الحالات..
اللي بيحصل في العملية دي ان الـ Malicious Process بتنفّذ code معين جوا Address space خاص ب Process شرعية وموثوق فيها بالتالي هتحقق الأهداف اللي قلنا عليهم وهم ال Stealth & Persistence.
بعض الـ 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 مثلاً.
ملاحظة: لما يحصل 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
و دول هنشرحهم بالتفصيل في الجزء الجاي مع باقي الTechniques.