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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
EXCELntDonut — مولد ماكرو (XLM) Excel 4.0 لحقن ملفات DLL و EXE في الذاكرة. | Kitploit
أدوات/GitHubGitHub/redsiege/excelntdonut
أدوات التصيدتوليد الحمولةالاستغلالشيل كودالتصيد الاحتياليالفريق الأحمرتوليد شيفرة القشرة
GitHubredsiege/excelntdonut

EXCELntDonut

مولد ماكرو (XLM) Excel 4.0 لحقن ملفات DLL و EXE في الذاكرة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

| \ / / | | | _ __ | || _ \ ___ _ __ _ | | | | \ / | | | | | | ' | | | | |/ _ | ' | | | | | | | / \ || || |__| | | | || || | () | | | | || | | |_____//__|||| ||_|____/ _/|| ||_,|__| by @JoeLeonJr (@FortyNorthSec)

EXCELntDonut هو مولد ماكرو XLM (Excel 4.0). ابدأ بكود مصدر C# (EXE) وانتهِ بماكرو XLM (Excel 4.0) سينفذ كودك في الذاكرة. يمكن حفظ ماكرو XLM (Excel 4.0) في ملفات .XLS.

التثبيت

root@kitploit:~
chmod +x install.sh
./install.sh

ماذا يتم تثبيته؟

  • pip3
  • mono-complete (كل من mcs وجميع المكتبات الممكنة التي قد تشير إليها في ملفات المصدر)
  • EXCELntDonut كأداة CLI

إذا كنت ترغب في تشغيل EXCELntDonut كسكريبت بايثون فقط، فستحتاج إلى إعداد بيئة افتراضية تحتوي على حزمتين "pandas" و "donut-shellcode". بالإضافة إلى ذلك، ستحتاج إلى تثبيت mono-complete من خلال apt-get واستدعاء سكريبت drive.py باستخدام python3. نوصي باستخدام سكريبت ./install.sh bash فقط، لكن الأمر لك.

الاستخدام

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

كيفية إنشاء ماكرو XLM (Excel 4.0)

بمجرد الحصول على ملف المخرجات من 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"، فستحتاج إلى التمرير أفقيًا كثيرًا للعثور على الكود الفعلي، لأن جزءًا من منطق التعتيم ينقل الماكرو إلى قسم عشوائي من ورقة العمل).

نوصي بأمرين في هذه المرحلة:

  1. ابحث عن الخلية البادئة (ستكون الخلية العلوية اليسرى من كود الماكرو الخاص بك، على الأرجح A1). انقر بزر الماوس الأيمن واختر "Run". اختبر الماكرو الخاص بك للتأكد من أنه يعمل.
  2. بمجرد التحقق من أن الماكرو يعمل، حدد نفس الخلية العلوية اليسرى مرة أخرى. على الجانب الأيسر من الشاشة، يجب أن يكون هناك قائمة منسدلة تقول الخلية التي أنت فيها (على الأرجح "A1"). انقر في القائمة المنسدلة وقم بتغيير القيمة النصية إلى "Auto_open". سينتج عن ذلك نفس وظيفة التنفيذ التلقائي التي اعتدت عليها في ماكرو VBA.

احفظ الملف (.xls) وحاول فتحه. يجب أن ينفذ حمولتك تلقائيًا.

فحوصات الصندوق الرملي

تعتمد هذه الفحوصات على ما يستخدمه المهاجمون الفعليون في برامجهم الضارة.

  1. هل يوجد فأرة نشطة؟
  2. هل حجم الشاشة أكبر من 770 عرضًا و 381 ارتفاعًا؟
  3. هل يمكن للمضيف تشغيل الأصوات؟
  4. هل هذا جهاز Windows؟

التعتيم

  1. بالنسبة لتعليمات حقن العملية (VirtualAlloc و WriteProcessMemory و CreateThread) وفحوصات الصندوق الرملي، ستتحول جميع وظائف الماكرو إلى الهيكل التالي:
root@kitploit:~
=FORMULA(D3&D23&D54&D23&D44,E45)

تسمح لنا وظيفة FORMULA بوضع صيغة، يمكن تنفيذها لاحقًا، في خلية أخرى. لذا في هذه الحالة، نضع تعليمات حقن العملية ثم نستخدم وظيفة FORMULA لوضع الوظيفة الفعلية في خلية أخرى ليتم تنفيذها. هذا يتجنب قيام المدافعين بإجراء تحليل ثابت ورؤية أشياء مثل "VirtualAlloc".

  1. سينتقل الماكرو بأكمله بقيمة ما إلى اليمين، بحيث عندما تفتح الورقة التي تحتوي على الماكرو لأول مرة، تظهر فارغة.

أشياء يجب معرفتها

  • تستخدم الحمولات الأقل تطورًا فقط الأمر =EXEC() لتنفيذ الأوامر. يستخدم البعض أيضًا URLMON لتنزيل الملفات. تتضمن ملفات أخرى حتى كلمة "SHELL". كل هذا بدا لنا فكرة سيئة. لا تتضمن هذه الأداة أيًا من ذلك. بدلاً من ذلك، تقوم بحقن كود C# الخاص بك في عملية Excel (إما 32 بت أو 64 بت) ثم تنفذه. من هناك، الأمر متروك لحمولتك فيما تفعله بعد ذلك.

نصائح

  • يمكن لكود C# الخاص بك أن يفعل أي شيء تريده. نوصي بأن يقوم كود المصدر الخاص بك بكسر علاقة الأصل > التابع بين Excel وأي شيء تنتجه.
  • هناك الكثير من المقالات الجيدة حول أوراق Excel "المخفية جدًا". فكر في استخدام ذلك.
  • لا تنسَ جعل ملف Excel الخاص بك يبدو حقيقيًا.

استكشاف الأخطاء وإصلاحها

"The type or namspace name ... does not exist ... "
root@kitploit:~
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@kitploit:~
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'

"Metadata file ... could not be found"
root@kitploit:~
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 كما يلي:

root@kitploit:~
apt-get install mono-complete
"Program ... does not contain a static 'Main' method ..."
root@kitploit:~
root@kali:~/Desktop# EXCELntDonut -f test.cs
 _______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                
[i] Generating your x86 .NET assembly.
error CS5001: Program `_excelntdonut_GJAoNuVPMcX.exe' does not contain a static `Main' method suitable for an entry point

[x] Error in generating x86 .NET assembly using MCS. See error message above.

في الوقت الحالي، يسمح EXCELntDonut فقط بملفات C# التي تحتوي على حمولات في الوظيفة Main.

نصائح عامة لاستكشاف الأخطاء وإصلاحها
  1. أولاً، قم بتجميع كود C# المصدر الخاص بك باستخدام csc على Windows وقم بتنفيذه للتحقق من أن الحمولة تعمل. اختبر ذلك عن طريق التجميع إلى حمولات x86 و x64، لأنه من المحتمل ألا تعرف ما إذا كانت بيئتك المستهدفة تعمل بإصدار Excel 32 بت أو 64 بت.
  2. يجب أن تكون قادرًا على تشغيل حمولتك عدة مرات في نفس العملية، ولكن إذا كنت تواجه أخطاء غريبة، فاخرج من Excel، وأعد الفتح وحاول مرة أخرى.
  3. عند الشك، اخرج من Excel وأنشئ ملفًا جديدًا للاختبار منه.

الكشف

  • إليك بعض قواعد Yara للبدء بها من @InQuest:

    ابحث عن ورقة مخفية جدًا

    https://github.com/InQuest/yara-rules/blob/master/Excel_Hidden_Macro_Sheet.rule

    ابحث عن السلسلة Auto_Open

    https://github.com/Neo23x0/signature-base/blob/master/yara/general_officemacros.yar

هناك الكثير من المقالات حول استخدام OLEDUMP.py لمراجعة ملفات XLM. فكر في هذه المقالة:

https://clickallthethings.wordpress.com/2020/04/06/covid-19-excel-4-0-macros-and-sandbox-detection/

الدفاع

  1. قم بتمكين حظر GPO لتنفيذ الماكرو للملفات التي تم تنزيلها من الإنترنت. انظر - https://www.microsoft.com/security/blog/2016/03/22/new-feature-in-office-2016-can-block-macros-and-help-prevent-infection/
  2. AMSI للأسف لا يساعد هنا.
  3. قواعد ASR... لسنا متأكدين.
  4. يرسل معظم المستخدمين ملفات .xlsx هذه الأيام. ربما قم بحظر إرسال ملفات .xls إلى صندوق بريد موظفيك. لن يكون من الغريب طلب إعادة إرسال ملف محفوظ كـ .xlsx.
  5. أحدث إصدار من Defender ATP اكتشف النسخة غير المعتمة من هذا الملف عند إفلاته على القرص.

الشكر والتقدير

لن يكون هذا حتى على رادارنا لولا العمل الرائع الذي قام به الأشخاص في Outflank (@outflanknl). شكر خاص لـ @StanHacked على بصيرته خلال هذا المشروع. أيضًا، بنفس القدر، لم يكن هذا المشروع ممكنًا بدون Donut (بواسطة @TheWover و @odzhan) ومكتبة بايثون ذات الصلة (بواسطة @byt3bl33d3r). بالإضافة إلى ذلك، قام فريق Accenture بإنشاء CLRvoyance، الذي حل بعض مشكلات x64 التي لم نتمكن من حلها مع Donut وماكرو XLM 4.0. أخيرًا، شكرًا لفيليب تسوكرمان من Cybereason على البحث الرائع حول جعل ماكرو XLM متوافقًا مع إصدارات 64 بت من Excel.

إخلاء المسؤولية

نحن لسنا مسؤولين عن سوء استخدام هذه الأداة. تم إنشاء هذه الأداة للأغراض التعليمية والاختبار المصرح به لإظهار كيفية حقن كود C# المصدر في الذاكرة باستخدام ماكرو XLM (Excel 4.0). الهدف النهائي من هذا المشروع هو (1) تزويد فريق red teamers بخيار حمولة تصيد آخر لمحاكاة ما يستخدمه الخصوم الفعليون حاليًا، و (2) تزويد المدافعين بإطار مرجعي لبناء التحليلات والتخفيف. بدون أداة لتوليد هذا النوع من الحمولات بسرعة، نعتقد أن المدافعين لن يكونوا مستعدين بشكل كافٍ لما هو قادم. يرجى التصرف بمسؤولية.

الترخيص

يرجى الاطلاع على ملف الترخيص في هذا المجلد. يرجى ملاحظة أن هذه الأداة تتضمن أداتين مفتوحتين المصدر أخريين بما في ذلك Donut و CLRvoyance.

تنزيل الأداة