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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Ivy — Ivy هو إطار عمل لإنشاء الحمولات (payloads) يهدف إلى تنفيذ أكواد مصدرية عشوائية بلغة VBA (وحدات الماكرو) مباشرةً في الذاكرة. يحقّق مُحمّل Ivy ذلك من خلال الاستفادة من الوصول البرمجي في بيئة كائنات VBA لتحميل الشيل كود وفك تشفيره وتنفيذه. | Kitploit
أدوات/GitHubGitHub/optiv/ivy
توليد الحمولةالاستغلالشيل كودما بعد الاستغلالاختبار الاختراقالفريق الأحمرتطوير الحمولاتArchived
GitHuboptiv/ivy

Ivy

Ivy هو إطار عمل لإنشاء الحمولات (payloads) يهدف إلى تنفيذ أكواد مصدرية عشوائية بلغة VBA (وحدات الماكرو) مباشرةً في الذاكرة. يحقّق مُحمّل Ivy ذلك من خلال الاستفادة من الوصول البرمجي في بيئة كائنات VBA لتحميل الشيل كود وفك تشفيره وتنفيذه.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

تم أرشفة هذا المستودع

لعرض أحدث إصدار من Ivy أو تقديم مشكلة، راجع https://github.com/Tylous/Ivy.



مزيد من المعلومات

إذا كنت تريد معرفة المزيد عن التقنيات المستخدمة في هذا الإطار وكذلك الإجراءات الدفاعية للمساعدة في الدفاع ضده، يرجى إلقاء نظرة على المقال.

الوصف

Ivy هو إطار لإنشاء الحمولات لتنفيذ كود مصدر VBA (ماكرو) تعسفي في الذاكرة. يقوم محمل Ivy بذلك عن طريق إساءة استخدام الوصول البرمجي في بيئة كائن VBA لتحميل وفك تشفير وتنفيذ الشيل كود. هذه التقنية هي أقرب ما يمكن إلى كونها حقيقية بدون ملفات، حيث أن معظم الهجمات غير الملفية هذه الأيام تتطلب نوعًا ما من الملفات التي يتم إسقاطها على القرص، ونتيجة لذلك تتجاوز القواعد القياسية القائمة على التوقيع للكشف عن كود VBA. تحتوي حمولات VBA النموذجية على الخصائص التالية:

  • تتواجد في مستندات Office مفعلة بالماكرو
  • توجد هذه المستندات الماكرو على القرص

من خلال العمل في الذاكرة فقط، تجعل هذه الخصائص السلوكية من الصعب اكتشافها بواسطة أنظمة EDR.

يتم تشفير محملات Ivy باستخدام تشفير RC4 (يسبب تشفير AES الكثير من التضخم ويستغرق وقتًا طويلاً لفك تشفيره في VBA) ثم يتم تقسيمها إلى سلاسل منفصلة، مما يمنع أي صندوق رمل من التعرف على هذه السلاسل كسلاسل مشفرة يجب فحصها. يمنع هذا أيضًا أي آلية فك ترميز من التعرف على هذه الحمولات على أنها شيء سوى أحرف غير مرغوب فيها.

يقوم محمل Ivy أولاً بإجراء استعلام في السجل لتمكين "Trust access to the VBA project object mode". يتم تخزين قيمة مفتاح التسجيل هذه في وضع المستخدم مما يسمح للمستخدم بتعديل القيمة دون الحاجة إلى أي صلاحيات مرتفعة. يتم تعيين قيمة التسجيل من صفر إلى 1؛ إذا كان مفتاح التسجيل غير موجود، سيقوم Ivy بإنشائه بقيمة "1". مع تمكين هذه القيمة، يُسمح بالوصول البرمجي إلى بيئة كائن VBA من عملية مختلفة.

بمجرد القيام بذلك، سيقوم المحمل بعد ذلك بتشغيل عملية Excel مخفية وتحميل السلاسل المشفرة في دالة VBA. يتم ذلك باستخدام ActiveX لمحاكاة إجراءات واجهة المستخدم الرسومية للقيام بنفس المهمة. يساعد هذا في تجاوز الكثير من الضوابط التقليدية الموضوعة لمراقبة التنفيذ. نتيجة لذلك، يتم نقل دالة فك التشفير والشيل كود من مخزن مؤقت إلى آخر، دون لمس القرص أبدًا. أخيرًا، يستخدم المحمل استدعاءات command-GUI وينفذ دالة التشغيل، والتي تحاكي فعل النقر على زر تشغيل الماكرو في لوحة واجهة المستخدم الرسومية لـ VBA، وبدء دالة فك التشفير، تليها التنفيذ الفعلي للشيل كود.

مهم

يجب أن يكون Microsoft Office مثبتًا ومفعلًا على نقطة النهاية المستهدفة لكي يعمل، لأن Ivy يعتمد على إساءة استخدام الوصول البرمجي إلى بيئة VBA الخاصة بـ Microsoft Office.

وضع إلغاء ربط EDR

يسمح هذا لـ Ivy باستخدام استدعاءات نظام منخفضة المستوى لبناء نسخته الخاصة من دالة Windows WriteProcessMemory من خلال الإشارة إلى عنوان الذاكرة المباشر وقيم السجلات بشكل غير مباشر. يمكن لـ Ivy الكتابة فوق أجزاء من الذاكرة غير قابلة للكتابة دون استدعاء أي من وظائف API لتغيير الذاكرة. يتم ذلك بسبب ميزة في WriteProcessMemory التي تغير مؤقتًا صلاحيات منطقة الذاكرة لتكون قابلة للكتابة (إذا كان لديك صلاحيات كافية، وهو ما نملكه لأننا نملك العملية). يقوم بكتابة القيمة واستعادة الصلاحيات الأصلية دون استدعاء دالة VirtualProtect، بدلاً من ذلك يستدعي تلقائيًا syscall المرتبط (NtProtectVirtualMemory).

لا تستخدم Ivy نسختها الخاصة من NtWriteVirtualMemory لأن هذه العملية لتغيير صلاحيات الذاكرة مؤقتًا لن تحدث، مما يعني أن حماية عنوان الذاكرة المحدد لن يتم تعديلها وسيفشل التنفيذ. هذه "ميزة" أصدرتها Microsoft لجعل المصححات أكثر استقرارًا. حيث أن المصححات ترغب في تعديل الذاكرة بسرعة، يمكنها ببساطة تعديل قسم دون الحاجة إلى أداء مهام متعددة. (راجع devblogs.microsoft.com للحصول على معلومات)

دعنا نلقي نظرة على سلسلة الأحداث التي سيراها EDR:

  • يقوم Ivy بإنشاء دالة WriteProcessMemory التي تقوم بإعداد قيم التسجيل المناسبة يدويًا.
  • تستدعي الدالة الخاصة بنا عنوان الذاكرة الدقيق حيث يتم تخزين WriteProcessMemory. (سيبدو هذا كاستدعاء للسجل RAX بدلاً من استدعاء kernel32.WriteProcessMemory)
  • هذا يعني أننا لا نستدعي WriteProcessMemory بشكل مباشر مع الاستمرار في استخدام جميع الميزات.
  • سيرى EDR فقط سلسلة من التجميع لا تتطابق مع أي مؤشرات خبيثة إلى عنوان ذاكرة.
  • سيكون عنوان الذاكرة هذا هو بداية دالة، ولكن عنوان الدالة فريد بسبب ASLR؛ يجب إجراء بحث عن كل دالة.
  • قبل تنفيذ عملية الكتابة، يتم تنفيذ syscall ZWQueryVirtualMemory لعرض الحماية على منطقة الذاكرة.
  • إذا لم تكن هذه الذاكرة مضبوطة على قابلة للكتابة، يتم استدعاء NtProtectVirtualMemory لتغيير الصلاحيات.
  • ثم يتم كتابة 8 بايت من التجميع إلى عنوان الذاكرة المحدد.
  • يتم استدعاء NtProtectVirtualMemory مرة أخرى لاستعادة قيمة الحماية الأصلية.

بمجرد التخلص من جميع خطافات EDR، يقوم المحمل بعد ذلك بتنفيذ إجراءه الطبيعي لإنشاء جلسة عن بعد.

يعالج Ivy هذا عن طريق إلغاء ربط ملفات DLL النظام الشائعة التي تربطها EDR، وتشمل هذه:

  • Ntdll.dll
  • Kernel32.dll
  • Kernelbase.dll
  • Advapi32.dll
  • Sechost.dll
  • Ws2_32.dll
  • Winmmbase.dll

عند استخدام unhook مع نوع حمولة Inject، سيقوم محمل Ivy أولاً بإلغاء ربط عملية Office وإزالة EDR منها ثم إزالة الخطافات في العملية المحقونة. يضمن هذا أن كلا العمليتين خاليتان من الخطافات، مما يمنع أي تتبع من العملية الأم والتابعة من الإرسال إلى EDR.

تصحيح ETW

باستخدام نفس التقنية لإلغاء الربط، يمكن لـ Ivy تصحيح وظائف ETW، مما يمنع أي حدث من التوليد بواسطة العملية. يستخدم ETW استدعاءات نظام مدمجة لتوليد هذا التتبع. نظرًا لأن ETW ميزة أصلية مدمجة في Windows، لا تحتاج منتجات الأمان إلى "ربط" استدعاءات نظام ETW للحصول على المعلومات. نتيجة لذلك، لمنع ETW، يقوم Ivy بتصحيح العديد من استدعاءات نظام ETW، وتطهير السجلات وإعادة تدفق التنفيذ إلى التعليمات التالية. أصبح تصحيح ETW الآن افتراضيًا في جميع المحملات، إذا كنت ترغب في عدم تصحيح ETW فاستخدم خيار سطر الأوامر -noetw لتعطيله في المحمل الخاص بك.

عرض توضيحي

التثبيت

تم تطوير Ivy باستخدام Go.

الخطوة الأولى كالعادة هي استنساخ المستودع. قبل تجميع Ivy، ستحتاج إلى تثبيت التبعيات. لتثبيتها، قم بتشغيل الأوامر التالية:

go get github.com/fatih/color
go get github.com/KyleBanks/XOREncryption/Go

ثم قم ببنائه

go build Ivy.go

المساعدة

$ ./Ivy -h

     ___   ___      ___  ___    ___
    |\  \ |\  \    /  /||\  \  /  /|
    \ \  \\ \  \  /  / /\ \  \/  / /
     \ \  \\ \  \/  / /  \ \    / /
      \ \  \\ \    / /    \/  /  /
       \ \__\\ \__/ /   __/  / /
        \|__| \|__|/   |\___/ /
                       \|___|/
                       (@Tyl0us)
The suffering. The pain. Can't you hear them?
Their cries for mercy?
تنزيل الأداة