الجزء3 من Process Injection Techniques هتكلم فيه عن الـ Thread Execution Hijacking ..
Thread Execution Hijacking
قلت في الجزء1 انه بيتم على 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
فلما تشوفهم بالترتيب اللي قلناه هتعرف تميز الTechnique دي عن غيرها، وده مثال:
ده مثال بالC++ هسيبلك رابط github الخاص بكاتبه في اخر المنشور:
لاحظ ان الThread Execution Hijacking شبيه جدا بال Process Hollowing ولكن بإختلاف انه بيستهدف process موجودة بالفعل (يعني مش بيضطر يعمل process جديدة في الsuspended state زي الProcess Hollowing) وده هنجيله بالتفصيل في شرح الProcess Hollowing بعد كدة
أمثلة من Malware حقيقية بتستخدم الطريقة دي:
-ده report عن backdoor اسمه Gazer تابع ل Turla group الروسية كان بيستخدم نفس الطريقة عشان يعمل execution hijacking للthread:
-وده مثال تاني ل RAT اسمه Karagany Trojan تابع ل Dragonfly group الروسية بيقدر يعمل inject لsuspended thread من الprocess الخاصة بيه ل process تانية خالص:
لو حابب تقرأ أكتر عن الThread Execution Hijacking دي بعض المصادر: