الجزء2 من شرح الـ Process Injection Techniques هتكلم فيه عن الDLL Injection ببعض التفاصيل..
ال DLL Injection بيحصل على كذا مرحلة أو كذا خطوة:
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-الخطوة التانية:
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() عشان يحجز أو يخصص مساحة في الميموري عشان ينفذ فيها ال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()
Reflective DLL(rdll)
المثال الموجود في الصور للCreateRemoteThread() والباقي بيأدي نفس الغرض بس كل واحدة منهم بتختلف عن الباقي في طريقة تنفيذها وطريقة الdetection اللي ممكن تحصلها باستخدام الAVs وغيره بالتالي الكود هيبقى فيه اختلاف طبعا من واحدة لواحدة.
3-الخطوة التالتة: بيستدعي فانكشن VirtualAllocEx() عشان يحجز أو يخصص مساحة في الميموري عشان ينفذ فيها ال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()
Reflective DLL(rdll)
المثال الموجود في الصور للCreateRemoteThread() والباقي بيأدي نفس الغرض بس كل واحدة منهم بتختلف عن الباقي في طريقة تنفيذها وطريقة الdetection اللي ممكن تحصلها باستخدام الAVs وغيره بالتالي الكود هيبقى فيه اختلاف طبعا من واحدة لواحدة.
ممكن أتعرضلهم تاني بالتفصيل بعدين لانهم هياخدو وقت كبير وفيه حجات أولى بالكتابة حالياً زي باقي طرق الinjection اللي لسا هكملهم في جزء او اتنين تانيين بس لو يهمك الأمر وعايز تقرأ عنهم أكتر شوف المصادر دي:
وبالنسبة للجزء الأول هتلاقيه (هنا)