
مولد ماكرو (XLM) Excel 4.0 لحقن ملفات DLL و EXE في الذاكرة.
| \ / / | | | _ __ | || _ \ ___ _ __ _ | | | | \ / | | | | | | ' | | | | |/ _ | ' | | | | | | | / \ || || |__| | | | || || | () | | | | || | | |_____//__|||| ||_|____/ _/|| ||_,|__| by @JoeLeonJr (@FortyNorthSec)
EXCELntDonut هو مولد ماكرو XLM (Excel 4.0). ابدأ بكود مصدر C# (EXE) وانتهِ بماكرو XLM (Excel 4.0) سينفذ كودك في الذاكرة. يمكن حفظ ماكرو XLM (Excel 4.0) في ملفات .XLS.
chmod +x install.sh
./install.sh
ماذا يتم تثبيته؟
إذا كنت ترغب في تشغيل EXCELntDonut كسكريبت بايثون فقط، فستحتاج إلى إعداد بيئة افتراضية تحتوي على حزمتين "pandas" و "donut-shellcode". بالإضافة إلى ذلك، ستحتاج إلى تثبيت mono-complete من خلال apt-get واستدعاء سكريبت drive.py باستخدام python3. نوصي باستخدام سكريبت ./install.sh bash فقط، لكن الأمر لك.
Usage:
$ EXCELntDonut -f exe_source.cs -r System.Windows.Forms.dll --sandbox --obfuscate
Flags:
(required)
-f path to file containing your C# soure code (exe only)
-r References needed to compile your C# code (same ones for when using mcs to compile on Linux)
(ex: -r 'System.Management')
(optional)
-o output filename
--sandbox
Perform basic sandbox checks. This will be updated as new approaches are discovered.
--obfuscate
Perform basic macro obfuscation.
تقوم بتقديم ملف C# يحتوي على حمولتك (مثل EXE مع طريقة رئيسية تنفذ حمولة منارة Cobalt Strike). يتم تجميع ملف C# هذا باستخدام MCS إلى تجميعين .NET: x86 و x64. بعد التجميع، تقوم الأدوات الرائعة Donut (لـ x86) و CLRvoyance (لـ x64) بتحويل كل تجميع إلى شيفرة مستقلة عن الموقع (shellcode). بعد ذلك، يتم إزالة جميع النول بايتات، لأن ماكرو XLM (Excel 4.0) لا يتعامل بشكل جيد مع النول بايتات ويتم تجزئة الحمولة إلى أسطر لا تحتوي على أكثر من 255 حرفًا (لـ x86) أو 10 أحرف (لـ x64).
بمجرد تحضير الشيفرة، يتم دمجها مع وظائف حقن العملية الأساسية (VirtualAlloc و WriteProcessMemory و CreateThread) بالإضافة إلى وظيفة فحص البنية لتحديد أي حمولة (x86 أو x64) سيتم تشغيلها على النظام الهدف. إذا اخترت تنفيذ فحوصات الصندوق الرملي أو التعتيم الأساسي، فستقوم تلك الوظائف بتحديث الماكرو الخاص بك. أخيرًا، يتم وضع المخرجات في ملف CSV (محفوظ كـ .txt).
بمجرد الحصول على ملف المخرجات من EXCELntDonut، افتح ملف المخرجات في محرر نصوص وانسخه بالكامل (Ctrl-A, Ctrl-C). افتح Excel على جهاز Windows VM، وانقر بزر الماوس الأيمن على "Sheet 1" واختر "Insert". اختر "MS Excel 4.0 Macro". انتقل إلى الخلية A1 والصق مخرجات EXCELntDonut. من المحتمل أن يتم لصق جميع البيانات في عمود واحد. البيانات مفصولة بفاصلة منقوطة ";". انتقل إلى علامة التبويب "Data" ثم انقر على "Text-to-columns". اختر "Delimited" وفي الشاشة التالية اختر "Semicolon" ثم انقر على "Finish". سينتشر الماكرو عبر الأعمدة والصفوف المناسبة.
(ملاحظة - إذا اخترت العلم "--obfuscate"، فستحتاج إلى التمرير أفقيًا كثيرًا للعثور على الكود الفعلي، لأن جزءًا من منطق التعتيم ينقل الماكرو إلى قسم عشوائي من ورقة العمل).
نوصي بأمرين في هذه المرحلة:
احفظ الملف (.xls) وحاول فتحه. يجب أن ينفذ حمولتك تلقائيًا.
تعتمد هذه الفحوصات على ما يستخدمه المهاجمون الفعليون في برامجهم الضارة.
=FORMULA(D3&D23&D54&D23&D44,E45)
تسمح لنا وظيفة FORMULA بوضع صيغة، يمكن تنفيذها لاحقًا، في خلية أخرى. لذا في هذه الحالة، نضع تعليمات حقن العملية ثم نستخدم وظيفة FORMULA لوضع الوظيفة الفعلية في خلية أخرى ليتم تنفيذها. هذا يتجنب قيام المدافعين بإجراء تحليل ثابت ورؤية أشياء مثل "VirtualAlloc".
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs
_______ ______ _____ _ _ ____ _
| ____\ \/ / ___| ____| | _ __ | |_| _ \ ___ _ __ _ _| |_
| _| \ / | | _| | | | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ / \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
by @JoeLeonJr (@FortyNorthSec)
[i] Generating your x86 .NET assembly.
warning CS8001: SDK path could not be resolved
test.cs(2,14): error CS0234: The type or namespace name `Management' does not exist in the namespace `System'. Are you missing an assembly reference?
هذا الخطأ يعني على الأرجح أنك تفتقد إلى تجميع مرجعي أثناء التجميع باستخدام mono. لإصلاح ذلك، ما عليك سوى تمرير مساحة الاسم المذكورة في العلم -r. في هذه الحالة، سنضيف -r 'System.Management' إلى سطر الأوامر. سيكون الأمر الجديد:
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r System.Management
_______ ______ _____ _ _ ____ _
| ____\ \/ / ___| ____| | _ __ | |_| _ \ ___ _ __ _ _| |_
| _| \ / | | _| | | | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ / \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
by @JoeLeonJr (@FortyNorthSec)
[i] Generating your x86 .NET assembly.
warning CS8001: SDK path could not be resolved
error CS0006: Metadata file `System.Management' could not be found
[x] Error in generating x86 .NET assembly using MCS. See error message above.
لا ينبغي أن يظهر هذا الخطأ إلا إذا قمت بتشغيل EXCELntDonut دون استخدام سكريبت install.sh bash. في هذه الحالة، ستحتاج إلى تثبيت mono-complete يدويًا. سيقوم ذلك بتنزيل التبعيات ذات الصلة. يمكنك تثبيته باستخدام apt كما يلي:
apt-get install mono-complete