2 min to read
Thread Execution Hijacking (Ar)
Process Injection Techniques - Part 3
الجزء2 من سلسلة الـ Process Injection Techniques هشرح فيه الـ Thread Execution Hijacking ✍️
قلت في الجزء الأول ان طريقة Thread Execution Hijacking بتتم على 3 مراحل بيطلق عليهم مصطلح SIR وده اختصار Suspend - Inject - Resume، وعرفنا فكرته الاساسية انه بيعمل suspend لل thread الاول بعدين يعمل inject لل malicious code وبعدين يعمل resume للthread لتنفيذ الكود.
في الطريقة دي الMalware بيستهدف thread لprocess موجودة بحيث يوفر على نفسه التعامل مع process كاملة ويتفادى إنشاء threads جديدة ليها بالتالي يتخطى عمليات الdetection بشكل أفضل.
كـ Malware Analyst توقّع تشوف الـ Functions Calls دي أثناء عملية الThread Execution Hijacking:
-CreateToolhelp32Snapshot: من الجزء2 قلنا ان دي وظيفتها عمل snapshot من الprocesses اللي شغالة بالاضافة للthreads المستخدمة في كل process.
-Thread32First: وظيفتها استقبال المعلومات الخاصة بأول thread من أي process موجودة في الsnapshot السابقة.
-OpenThread: بتدي للمالوير handle على الthread عشان يقدر يتعامل معاه.
-SuspendThread: من اسمها؛ بتعمل suspend لل thread.
-GetThreadContext: بتستقبل المحتوى او الcontext الخاص بالthread.
-SetThreadContext: بتعدل الinstruction pointer (زي EIP أو RIP ..الخ) وتخليه يشاور على الmalicious/shell code اللي هيتنفذ بعد كدة (يعني بيغير الExecution).
-VirtualAllocEx: هنا بيحدد المكان اللي هيكتب فيه الshellcode في الmemory.
-WriteProcessMemory: هنا بيكتب الshellcode في المكان اللي تم تحديده.
-ResumeThread: وهنا بيعمل resume لل thread بحيث يكمل شغله.
ال Functions السابقة مش شرط تتواجد في الكود بنفس الترتيب المكتوب فوق، أنا بوضح بس وجود واستخدام كل دالة منهم.
خليك فاكر ان فيه Functions calls ثابتة في كل عمليات الProcess Injection ولكن اللي بيميز الـThread Execution Hijacking هم:
OpenThread, SuspendThread, SetThreadContext, ResumeThread
فلما تشوفهم بالترتيب اللي قلناه (Open,Suspend,Set,Resume) هتعرف تميز الTechnique دي عن غيرها، وفي الصور التالية هتلاقي مثال من IDA من عينة بتنفذ الطريقة دي وبعدها مثال لتنفيذ الطريقة بـ C++:
لاحظ ان الThread Execution Hijacking شبيه جدا بال Process Hollowing ولكن بإختلاف انه بيستهدف thread جوا process موجودة بالفعل (يعني مش بيضطر يعمل process جديدة في الsuspended state زي الProcess Hollowing) وده هنشرحه بالتفصيل في الProcess Hollowing بعد كدة.
ملاحظة: في المصادر فيه أمثلة من Malware حقيقية بتستخدم الطريقة زي Gazer التابع لـ Turla Group و RAT اسمه Karagany Trojan تابع لـ Dragonfly Group، بالإضافة لمصادر عن الـ Thread Execution Hijacking.