
Mangle هي أداة تعمل على التلاعب بجوانب من الملفات التنفيذية المترجمة (.exe أو DLL) لتجنب اكتشافها من قبل أنظمة EDR.
لعرض أحدث إصدار من Mangle أو لتقديم مشكلة، راجع https://github.com/Tylous/Mangle.
من تأليف Tyl0us
مميز في Source Zero Con 2022
Mangle هي أداة تتعامل مع جوانب من الملفات القابلة للتنفيذ المترجمة (.exe أو DLL). يمكن لـ Mangle إزالة السلاسل المعروفة المستندة إلى مؤشرات الاختراق (IoC) واستبدالها بأحرف عشوائية، وتغيير الملف عن طريق تضخيم الحجم لتجنب أنظمة اكتشاف نقطة النهاية (EDRs)، ونسخ شهادات التوقيع من الملفات الشرعية. من خلال القيام بذلك، يساعد Mangle أدوات التحميل (loaders) على تجنب الماسحات الضوئية على القرص وفي الذاكرة.
تم تطوير Mangle بلغة Golang.
الخطوة الأولى، كالعادة، هي استنساخ المستودع. قبل تجميع Mangle، ستحتاج إلى تثبيت التبعيات. لتثبيتها، قم بتشغيل الأوامر التالية:
go get github.com/Binject/debug/pe
ثم قم ببنائه
go build Mangle.go
بينما Mangle مكتوب بلغة Golang، فإن العديد من الميزات مصممة للعمل مع الملفات القابلة للتنفيذ من لغات أخرى. في وقت الإصدار، الميزة الوحيدة الخاصة بـ Golang هي جزء معالجة السلاسل.
./mangle -h
_____ .__
/ \ _____ ____ ____ | | ____
/ \ / \\__ \ / \ / ___\| | _/ __ \
/ Y \/ __ \| | \/ /_/ > |_\ ___/
\____|__ (____ /___| /\___ /|____/\___ >
\/ \/ \//_____/ \/
(@Tyl0us)
Usage of ./Mangle:
-C string
المسار إلى الملف الذي يحتوي على الشهادة التي تريد استنساخها
-I string
المسار إلى الملف الأصلي
-M تعديل ملف PE لإزالة مؤشرات Go
-O string
اسم الملف الجديد
-S int
عدد الميغابايت لزيادة الملف بها
يأخذ Mangle الملف القابل للتنفيذ ويبحث عن سلاسل معروفة تبحث عنها المنتجات الأمنية أو تنبه عليها. هذه السلاسل وحدها ليست نقطة الكشف الوحيدة. غالبًا ما تكون هذه السلاسل بالاقتران مع نقاط بيانات أخرى وقطع من القياس عن بعد للكشف والمنع. يجد Mangle هذه السلاسل المعروفة ويستبدل القيم السداسية العشرية بقيم عشوائية لإزالتها. مهم: يستبدل Mangle الحجم الدقيق للسلاسل التي يتعامل معها. لا يضيف أكثر أو أقل، لأن ذلك سيخلق اختلالات وعدم استقرار في الملف. يفعل Mangle ذلك باستخدام خيار سطر الأوامر -M.
حاليًا، يعمل Mangle فقط على ملفات Golang ولكن مع مرور الوقت ستتم إضافة لغات أخرى. إذا كنت تعرف أيًا منها للغات أخرى، يرجى فتح تذكرة مشكلة وتقديمها.
قبل
بعد
تقريبًا جميع أنظمة EDR لا يمكنها فحص الملفات على القرص أو في الذاكرة بعد حجم معين. هذا ببساطة ينبع من حقيقة أن الملفات الكبيرة تستغرق وقتًا أطول للمراجعة أو الفحص أو المراقبة. لا ترغب أنظمة EDR في التأثير على الأداء عن طريق إبطاء إنتاجية المستخدم. يقوم Mangle بتضخيم الملفات عن طريق إنشاء حشوة من البايتات الصفرية (Zeros) في نهاية الملف. هذا يضمن عدم تأثر أي شيء داخل الملف. لتضخيم ملف قابل للتنفيذ، استخدم خيار سطر الأوامر -S مع عدد البايتات التي تريد إضافتها إلى الملف. الحمولات الكبيرة لم تعد مشكلة مع سرعة الإنترنت الحالية، ومع ذلك، لا يُنصح بإنشاء ملف بحجم 2 جيجابايت.
بناءً على حالات الاختبار عبر العديد من أنظمة EDR في وضع المستخدم والنواة، يُوصى بزيادة الحجم بمقدار 95-100 ميغابايت. نظرًا لأن البائعين لا يتحققون من الملفات الكبيرة، يمر النشاط دون أن يلاحظه أحد، مما يؤدي إلى تنفيذ ناجح للـ shellcode.
يحتوي Mangle أيضًا على القدرة على أخذ السلسلة الكاملة وجميع السمات من شهادة توقيع رمز شرعية من ملف ونسخها إلى ملف آخر. يشمل ذلك تاريخ التوقيع، التوقيعات المقابلة، والسمات الأخرى القابلة للقياس.
على الرغم من أن هذه الميزة قد تبدو مشابهة لأداة أخرى طورتها، Limelighter، فإن الفرق الرئيسي بينهما هو أن Limelighter يصنع شهادة مزيفة بناءً على نطاق ويوقعها بالتاريخ والوقت الحاليين، بدلاً من استخدام سمات صالحة حيث يتم أخذ الطابع الزمني من الملف الأصلي. يمكن لهذا الخيار استخدام ملفات DLL أو .exe للنسخ باستخدام خيار سطر الأوامر -C، بالإضافة إلى المسار إلى الملف الذي تريد نسخ الشهادة منه.