DLL Injection (Ar)

Process Injection Techniques - Part 2

Featured image

الجزء2 من سلسلة الـ Process Injection Techniques هشرح فيه الـ DLL Injection ببعض التفاصيل ✍️

خطوات تنفيذ عملية الـ DLL Injection من خلال الـ Malware:

1-الخطوة الأولى:
الـ Malware محتاج يحدد الـ Process اللي هيحقن فيها الكود؛ فبيستخدم 3 API Calls مشهورين عشان يبحث في العمليات الموجود ويختار منهم، ال3 Calls هم:
1-CreateToolhelp32Snapshot: دي Function بتعمل snapshot من الProcesses اللي شغالة بالاضافة لل heaps والmodules والthreads اللي بيتم استخدامهم من خلال الProcesses دي.
2-Process32First: دي بتستقبل المعلومات الخاصة بأول process موجودة في الsnapshot اللي فاتت.
3-Process32Next: دي بقى بتعمل iteration loop على ال processes الموجودة بعد الprocess الأولى عشان الMalware يقدر يحدد بعد كدة الprocess المستهدفة.
لحد هنا خلصنا أول خطوة (تحديد العملية المُستهدفة targeted process).

2-الخطوة التانية:
بعد تحديد العملية المستهدفة بيقوم الـ Malware يستدعي فانكشن OpenProcess() عشان يعمل handle أو مؤشر على الـ process اللي تم استهدافها.

3-الخطوة التالتة:
بيستدعي فانكشن VirtualAllocEx() عشان يحجز أو يخصص مساحة في الذاكرة (Memory) عشان ينفذ فيها عملية الحقن (injection).

4-الخطوة الرابعة:
بيستدعي فانكشن WriteProcessMemory() عشان يكتب مسار الMalicious DLL في المساحة اللي خصصها الخطوة اللي فاتت في الميموري.

5-الخطوة الأخيرة:
بيعمل Execution للMalicious Code/DLL اللي تم حقنه ودا يقدر يحققه الMalware من خلال كذا API بس في الآخر الفكرة العامة في الخطوة دي واحدة وهي تمرير الAddress الخاص بال LoadLibrary للAPI عشان يخلي الProcess تنفذ الMalicious DLL بدل الMalware ما ينفذها بنفسه، والAPIs الممكن استخدامها في المرحلة دي هم:
CreateRemoteThread()
NtCreateThreadEx()
RtlCreateUserThread()
SetThreadContext()
QueueUserAPC()

المثال الموجود في الصور لدالة CreateRemoteThread() والباقي بيأدي نفس الغرض بس كل واحدة منهم بتختلف عن الباقي في طريقة تنفيذها وطريقة الdetection اللي ممكن تحصلها باستخدام الAVs وغيره بالتالي الكود هيبقى فيه اختلاف طبعا من واحدة لواحدة.

Resources - مصادر