16 تغريدة 14 قراءة Jul 28, 2022
في حلقة اخرى من Anti-debugging techniques وتفاديها أقدم لكم الكود ادناه ؛
الكود بسيط يوضح طريقة مستخدمة عند الـ malware authors الي هي تقوم على البحث عن بروسسات تتواجد في بيئة محلل المالويرات وتنهيها
بمعنى اخر فيه برامج يستخدمها المحلل عشان يحلل المالوير الكود يبحث عن بعضها "فور ذا سيك اوف ديمو" وينهيها واذا خلص من الانهاءات يعرض message box مكتوب فيه Clear
مجاراةً للحياه الواقعيه خلنا نفترض انك قمت بتحليلاتك وتاكدت ان البروسيس تسوي بحث عن بروسيسات معينه واذا شافتها تنهيها
الفيديو ادناه يحاكي سيناريو لو قلنا ان المحلل بيسوي ديبقر ( بدون بريك بوينتس )
وش تسوي يالمحلل بهالامر الخطير ؟
الامور معقده والبروسيس ضاربه
عشان نحل هذي المشكله لازم نتعرف على مفهوم جديد الا وهو الـ Patching وهو التعديل على الـ executable تعديل لا يضر باللوجيك تبع الـ executable وبنفس الوقت يخلنا نتفادى انهاء بروسس الديبقر من ما يسمح لنا بتحليل الـ executable بدون معيقات
اول شي لازم نشغل الـ executable بالديبقر ونوقف عند الـ Entry Point وبعدها نبحث عن الـ strings نضغط زر الفاره الايمن وبعدها Search For وبعدها Current Module وبعدها String references كما هو موضح بالفيديو ادناه
هنا بنشوف الـ Strings المتعلقه بالـ executable وبما اننا بنسوي تفادي للديبقر والي اسم البروسيس حقته x64dbg.exe نضغط عليها ضغطتين ونشوف وين موجود هذا الستريق بالـ executable
نشوف هنا الـ instruction المحدد عليها مفادها انه يحط بوينتر السترينق "x64dbg.exe" بالـ rax register
فالحل اننا نغير السترينق بحيث اننا نوافي شرطين من شروط الـ Patching :
1- يكون التعديل يحافظ على عدد البايتات يعني بتعدل على خمس بايتات لازم بعد التعديل يكونون خمس بايتات غير ذلك فالغالب ينعطب الـ executable
لان لو تفكر فيها اذا حددت على خمس بايتات وقلت بتعدل عليهم انت ما تقدر تتجاوز الخمس بايتات وبنفس الوقت اذا بتنقص عن الخمسه بيصير الباقي NULL Bytes
2- ما تكسر لوجيك الـ executable عشان ما ينعطب
مثال على ذلك لو فنقشن ترجع integer وجيت وعدلت على الـ return وعطيته حرف مثلاً، كذا بينفقع الـ executable وهذا من حقه
وبعد ما عرفنا الحل فف عشان نطبق الحل فيه اكثر من طريق اسهلها بنظري ان نسوي بريك بوينت على التعليمه الي ذكرناها مسبقاً بالضغط عليها وضغط على زر F2 والي بدورها بتحط بوينتر للسترينق الي يحمل اسم بروسس الديبقر بالـ register rax ونكمل تشغيل الـ executable
الحين حنا واقفين الـ instruction الي نبيها ولكن ما تم تنفيذها، فف عشان ننفذها نضغط على زر step into الملون بالاخضر بالصوره ادناه
وبكذا تم تنفيذ الـ instruction وصار البوينتر تبع الريجيستر بالـ rax register الان الي علينا نسويه اننا نضغط زر الفاره الايمن على الـ rax register ونضغط على follow in dump
وهنا نشوف بالـ dump تحت ان الاسم باين عندنا
نحدد عليه ونضغط على Edit ونغير حرف من اسم البروسيس بكذا لو قام يقارن الـ executable الاسم الي عدلنا عليه واسم بروسيس الديبقر بيشوف انهم مو متطابقين وما ينهيه
بكذا نكون تفادينا انهى الديبقر اثناء التحليل وبيشتغل زي الحلاوه كما موضح بالفيديو ادناه
المصادر ؛
- بهاراتي الخاصه 👨🏻‍🍳
- MAP course للاسطورة @binaryz0ne
لا تنسونا من الدعاء 🌹🙏

جاري تحميل الاقتراحات...