تحليل ماكرو خبيث في ملفات الورد شرح تفصيلي

السلام عليكم

واهلا بكم في هذه التدوينه سوف اشرح عملية تحليل لملف ورد يحتوي على ماكرو لتنفيذ اوامر على الجهاز والتواصل مع سيرفر c2 للحصول على التعليمات والاوامر لتنقيذها

في البدايه بعد تنزيل الملف استخدمت اداه olevba لاستخراج كود الماكرو

بعد ذلك قمت بنسخ الكود لتحليله

في البداية

تم انشاء متغير اسمه pattern

بعد ذلك استخدام دالة document_open والتي تنفذ الكود بداخلها عند فتح الملف

في داخل الداله document_open تم استدعاء الدالة main و الدالة DialogUserInfo

في داخل الدالة main تم اسناد عدد من العناصر للمتغير pattern وهي تستخدم لعملية deobfuscation كما سنشاهد

ثم تم انشاء متغيرين من نوع string وهما pathSave و myRoutin

تم اسناد الداله Environ للمتغير pathSave حيث ان الدالة Environ تتيح الوصول للمتغيرات في بيئة الوندوز

مثال عندما نريد معرفة المسار الكامل لمجلد appdata نقوم باستخدام الداله Environ(“AppData”)

نجد انه تم استخدام دالة clearText(“Ap6pp6pDa1at0ta1a”)

بداخل دالة environ حيث يتضح ان الدالة clearText تقوم بتنظيف الكود deobfiscate من الشوائب

للتوضح اكثر عن عمل الدالة clearText

كما تلاحظون عملها بسيط تقوم بتجزئة المتغير pattern باستخدام الفاصلة كجزء فاصل بين الاجزاء بعد ذلك تبحث عن هذه الاجزاء في النص المدخل وتقوم بازالته عن طريق تبديله بـ “” ثم تعيد النص بعد التعديل

الان نقدر نفك التشويش من الكود لفهمه اكثر

هنا نلاحظ قبل فك التشويش وبعد فك التشويش

بعد كذا نشوف اللي بعده اللي هو المتغير myRoutin

كما نشاهد تم اسناد دالة modifyText الى المتغير myRoutin حيث ان الداله من نوع string

بعد ذلك تم اجراء عملية ابدال لفك تشويش وترتيب النص واعادته للمتغير myRoutin

في البداية تم استبدال ** بـ vbCrLf والتي تعني نهاية سطر “Visual Basic Carriage Return Line Feed” اي تنهي السطر وتبدا من سطر جديد

ثم يتم استبدال ‘ بـ Chr(34) والتي تعني ” اي استبدل علامه تنصيص واحده بعلامتي تنصيص

واخيرا استبدال “”# بـ ‘

الدالة modifyText تحتوي نص مشوش ويتم فك تشويشه بطريقة الداله clearText و الاستبدال لترتيب النص

لنرى محتوي modifyText قبل عملية الاستبدال وبعد الاستبدال

before
after

حيث يقوم بكتابة النص بعد فك التشويش الى ملفين text و vba

الان تم كتابة ملف جديد يحتاج لتحليل

الان نبدا في فك التشويش عن بعض المتغيرات ولتسهيل المهمه سوف نستخددم الدوال المستخدمه مع داله MsgBox لطباعة القيمة بعد فك التشويش

هنا تم استخراج عناوين c2

هنا تم استخراج user-agent

نقوم بعد ذلك باستبدال الكود وتعديل بعض اسماء المتغيرات والدوال لتصبح اكثر وضوح

وهنا النتيجه النهائية

فكره عمل الكود يقوم فالبدايه بتنفيذ الامر whoami ويتم اخذ نتيجة الامر وارسالها في طلب Get الى c2

http://107%5B.%5D174.68%5B.%5D60/getCommand?guid=KK-ak-pcname-ak

طبعا يتم استخدام user-agent خاص في الطلب

ومحتوى الصفحة للرد يكون عبارة عن امر اخر لتنفيذه او empty اي لاتنفذ اي امر

ويشيك السكربت كل فتره على الصفحه للحصول على امر جديد لتنفذه

اذا حصل امر جديد يقوم بتنفيذه وارسال النتيجه في طلب POST

وهنا مؤشرات الاختراق

File_hash: 8e99c479e41e0121e3dc57e2c6156b9b

C2 IPs

192.227.147.152

107.174.68.60

ويمكن البحث في proxy logs عن user-agent

Mozilla/4.0 (compatible; ms-office; MSOffice 16)

واتمنى يكون الشرح واضح ولاي استفسار او سؤال يمكنكم التواصل معي

@AKMalware

أضف تعليق