4 min to read
Mutex / Mutants (Ar)
An overview about Mutex
تعرف ايه عن الـ Mutex/Mutant واستخداماته؟ ليه مهم بالنسبة للـ Defenders والـ Attackers كمان ؟!
لو مثلاً عندي Process ليها كذا Thread وفيه واحد منهم شغال على مكان معين في الميموري؛ لو جه thread تاني يشتغل على نفس المكان ويعدل الداتا بتاعته أكيد هيحصل تداخل بين الاتنين وشغلهم هيبوظ صح؟
هنا بيجي دور الـ Mutex (اختصار لـ Mutual Exclusion) واللي هو عبارة عن object في الويندوز بيستخدم في المزامنة عشان يمنع الكتابة في نفس المكان في الذاكرة في نفس الوقت من برنامجين او 2 threads جوا برنامج او process معينة، فلو جه thread يشتغل في المكان دا بيشوف الMutex الأول لو مُستخدم من أي thread تاني بيستناه يخلص شغله ويسيب الMutex عشان يقدر يستخدمه بعده ويشتغل، أو بيقفل على اساس انه اشتغل مرة قبل كدة يعني.
ليه الـ Mutex مهم بالنسبة للـ Attackers؟
الـ Mutex بيتم استخدامه من الـ Malware Authors عشان يمنعو الـ Malware من إصابة نفس الجهاز مرة تانية لو كان تمت إصابته قبل كدة أو عشان يمنعو الـ Malware انه يشتغل اكتر من مرة في نفس الوقت بحيث ميكررش نفس اللي عمله او يحصل تداخل بينهم، فأول ما بيشتغل الـ Malware بيعمل Mutex خاص بيه بحيث لو اشتغل مرة تانية يشوف لو الـ Mutex مُستخدم بيقفل ميكملش شغله او يستنى الMutex المستخدم يتم تحريره، ولو مش مستخدم بيكمل شغله عادي.
ليه مهم بالنسبة للـ Defenders؟
1-بيتم استخدامه من الـ Defenders كـ Signature أو علامة من ضمن الـ IOCs عشان تساعدهم في عمليات المراقبة والفحص اللي موجودة في الحلول الأمنية زي برامج الأنتي فايرس والـ EDRs وغيره، فمثلاً لو مالوير بيستخدم Mutex ثابت زي ده G192Bear001 هيبقى سهل على الحلول الأمنية تكشفه لما تشوفه موجود في البيئة أو النظام مادام موجود في الـ Database بتاعتها.
2-بالإضافة إنه بيُستخدم كـ Infection Marker (علامة عدوى) لتفادى إصابة النظام بنوع أو عائلة معينة من المالوير فمثلا لو فيه مالوير بيستخدم mutex اسمه M102033 عشان يمنع انه يشتغل مرتين ممكن نعمل mutex بنفس الإسم على النظام بحيث لو المالوير حاول يشتغل وشاف الmutex موجود هيقفل تلقائياً بالتالي معرفش يصيب النظام ظناً منه ان النظام مصاب بالفعل.
أحيانا الـ Malware Authors بيعملو Mutex عشوائية ومتغيرة (مش ثابتة) يعني كل مرة هتلاقيه شغال ب Mutex جديد ودا عشان يتخطى كشفه من البرامج والحلول الأمنية.
إزاي نعرف الـ mutex الخاص بأي Malware ؟
فيه طرق كتير من ضمنها:
1-استخدام Online Scanners/Sandboxes زي VT, AnyRun وغيرهم.
2-فحص الـ Strings الخاصة بالملف، احيانا بيكون الـ Mutex موجود فيها.
3-استخدام الـ Advanced Static Analysis لتحليل الكود والوصول لقيم/ة الـ Mutex.
4-استخدام أدوات زي Process Explorer أو Process Hacker لفحص الـ open handles وتحديد الـ Mutex objects، أو أداة Handle في SysInternals Suite بردو بتقدر تحدد الـ Mutex Objects في النظام.
5-استخدام أدوات الـ Memory Forensics زي Volatility Framework واللي بتقدر تستخرج الـ mutant values من الـ Memory Snapshots كذلك.
6-استخدام الـ Debugging في الـ Advanced Dynamic Analysis في حالة معرفناش نحدده بالطرق السابقة او كان الـ Mutex مش ثابت.
7-لو فيه Malware Analysis Report سابق للعينة ممكن نلاقي الـ Mutex فيها من ضمن الـ IOC.
الـ Malware بتستخدم مجموعة Functions وهي بتتعامل مع الـ Mutexes فمثلاً:
1-الـ Thread هيستخدم WaitForSingleObject عشان يوصل للـ Mutex، وبيستخدم ReleaseMutex لما ينتهي من استخدامه.
3-لو محتاج يعمل Mutex جديد بيستخدم CreateMutex.
4-لو الـ Process عايزة handle على mutex خاص بعملية تانية هتستخدم OpenMutex.
5-ممكن يستخدم CloseHandle و DuplicateHandle وهو بيتعامل مع الـ Handles.
ملاحظات:
1-الـ Mutex في الـ Kernel بيقولو عليه Mutant.
2-ممكن الـ Malware يكون ليه أكتر من Mutex عشان يعمل مزامنة لأكتر من نسخة منه مثلاً لحقنها في العمليات الخاصة بالويندوز زي iexplorer.exe و winlogon.exe وغيره وهنا هيكون عندنا أكتر من Mutex نقدر نحطهم في الIOC ونستخدمهم ك Signatures مهمة لكشف العينة دي.
3-الـ Mutex بيُستخدم أساساً في البرمجيات بشكل مشروع من خلال المبرمجين لكن انا بتكلم من ناحية مجالنا بس.