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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
GadgetToJScript — أداة لتوليد أدوات (gadgets) مُسلسلة في .NET يمكنها تحفيز تحميل/تنفيذ تجميعات .NET عند إلغاء تسلسلها باستخدام BinaryFormatter من السكربتات المستندة إلى JS/VBS/VBA. | Kitploit
أدوات/GitHubGitHub/med0x2e/gadgettojscript
توليد الحمولةآليات الاستمراريةالاستغلالالحركة الجانبيةما بعد الاستغلالالفريق الأحمرتطوير الحمولاتالهجوم العدائي
GitHubmed0x2e/gadgettojscript

GadgetToJScript

أداة لتوليد أدوات (gadgets) مُسلسلة في .NET يمكنها تحفيز تحميل/تنفيذ تجميعات .NET عند إلغاء تسلسلها باستخدام BinaryFormatter من السكربتات المستندة إلى JS/VBS/VBA.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

الوصف

أداة لتوليد أدوات (Gadgets) تسلسلية خاصة بـ .NET يمكنها تشغيل تحميل/تنفيذ تجميعات .NET عند إلغاء التسلسل باستخدام BinaryFormatter من نصوص JS/VBS/VBA.
الأداة الحالية تستدعي Activator.CreateInstance() عند إلغاء التسلسل باستخدام BinaryFormatter من jscript/vbscript/vba، وهذا يعني أنه يمكن استخدامها لتشغيل تنفيذ تجميع .NET الذي تختاره عبر المُنشئ الافتراضي/العام.

أُنشئت الأداة بشكل أساسي لأتمتة تسليح نصوص WSH لمهام الفريق الأحمر (RT) (الوصول الأولي، الحركة الجانبية، الثبات)، وقد تمت إزالة محمّل الشيل كود (shellcode loader) الذي استُخدم في الإثبات المفاهيمي (PoC) واستُبدل بتجميعة مثال مطبقة في مشروع TestAssembly.

التفاصيل:

  • يتجاوز AMSI دون الحاجة إلى تحديث مفتاح التسجيل AmsiEnable أو اختطاف loadlibrary (AMSI.dll).
  • يتجاوز الضوابط المقدمة حديثًا في .NET 4.8+ والتي تمنع "Assembly.Load" وفحوصات نوع ActivitySurrogateSelector.
  • تدعم الأداة (Gadget) إلغاء تسلسل صحيح للحمولات الموجهة لبيئات .NET Framework بدءًا من 3.5 حتى 4.8+.
  • تعتمد على ActivitySurrogateSelector لإنشاء فئة Surrogate تعمل كغلاف لإلغاء تسلسل أداة (gadget) مبنية بطريقة تستدعي "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())".
  • تستغل أداة (gadget) المبنية على TextFormattingRunProperties كمرحلة أولى لإلغاء التسلسل لتعطيل فحص نوع ActivitySurrogateSelector، وبالتالي تجاوز الإصلاحات المقدمة مؤخرًا في (.NET Framework 4.8+).
  • لا تعتمد بشكل أساسي على كشف كائن COM مبني على .NET، وبالتالي لا حاجة لاستدعاء d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class).
  • تُستخدم المفوضات (Delegates) فقط لتشغيل تنفيذ الحمولة أثناء إلغاء التسلسل (Func<Assembly, IEnumerable>)، وهو شرط للربط الصحيح لعناصر الأداة.
  • يُحسب طول الأدوات (Gadgets) أو التدفقات (Streams) المُسلسَلة في وقت التشغيل ويُملأ تلقائيًا في نصوص WSH المُولدة (غير مطلوب لـ VBA).
  • يولّد نصوص VBS/VBA وJS/HTA بالاعتماد على التفعيل بدون تسجيل لمكونات COM المبنية على .NET.

الاستخدام والملاحظات:

يمكنك إما استخدام الملفات التنفيذية الموجودة في مجلد Release أو استخدام VS2017 وإعادة توجيه مشروعك إلى إصدار .NET 3.5 أو 4.x لبناء G2JS من المصدر.

  • استخدم إصدار .NET 3.5 من G2JS من أجل:

    • توليد نصوص WSH موجهة للعمل في بيئات لا يتوفر فيها .NET Framework 4.x أو يكون أقل من 4.8. (3.5 هو الحد الأدنى المطلوب من إصدارات .NET Framework)، ويتطلب ذلك بناء حمولة C# أو تجميعة .NET بإصدار .NET framework <= 3.5.
  • استخدم إصدار .NET 4.x من G2JS من أجل:

    • توليد نصوص WSH مخصصة للعمل في بيئات يتوفر فيها .NET Framework 4.x. (يشمل 4.8+)
    • توليد نصوص WSH لبيئات .NET 4.8+ باستخدام خيار “--bypass” لتجاوز فحص النوع.
  • يجب وضع حمولة الكود المصدري C# داخل المُنشئ العام الافتراضي لفصلك. (مثال لتشغيل Mimikatz من jscript؛ https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)

  • أُجريت الاختبارات على أحدث إصدار من Windows 10 Enterprise 1909 وWindows 7 مع تثبيت إصدارات مختلفة من .NET Framework.

  • تأكد من إيقاف تشغيل Windows Defender عند استخدام GadgetToJScript.exe لتوليد نصوص WSH، ويمكن إعادة تشغيله بمجرد توليد النصوص.

نصيحة OPSEC:

استخدم إصدار .NET 3.5 من G2JS لتوليد نصوص JScript/HTA الخاصة بـ WSH بدون تسجيل، والتي لا تزال قادرة على تجاوز فحص النوع في .NET Framework 4.8+ دون الحاجة إلى تعطيل هذا التخفيف باستخدام أداة المرحلة الأولى TextFormattingRunProperties. اعتبر هذا تجاوزًا أفضل/أنظف لتنفيذ حمولات JScript/HTA بدون تسجيل الموجهة لبيئات .NET 4.8+ لأنه لا يتطلب:

  • أداة المرحلة الأولى (gadget)
  • إنشاء كائن Shell
  • قراءة إصدار .NET Framework الحالي من السجل (Registry)
  • تعيين متغير البيئة COMPLUS_Version.

-> مؤشرات اختراق (IOCs) أقل + استهداف بيئات 3.5 < .NET < 4.x.

الاعتمادات والمراجع

تعتمد الأداة على الأبحاث/الأعمال الرائعة التي قام بها:

  • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => جعل تسلسل/إلغاء تسلسل الفئات غير القابلة للتسلسل ممكنًا)
  • @pwntester مشروع yoserial.net https://github.com/pwntester/ysoserial.net
  • @olekmirosh https://community.microfocus.com/t5/Security-Research-Blog/New-NET-deserialization-gadget-for-compact-payload-When-size/ba-p/1763282
  • @monoxgas https://silentbreaksecurity.com/re-animating-activitysurrogateselector/
  • @zcgonvh http://www.zcgonvh.com/post/weaponizing_CVE-2020-0688_and_about_dotnet_deserialize_vulnerability.html

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

يجب استخدام GadgetToJScript لأغراض الاختبارات الهجومية المصرح بها (Red Teaming) و/أو الأغراض التعليمية غير الربحية فقط. لن يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام لهذا البرنامج. استخدمه على شبكاتك الخاصة و/أو بإذن من مالك الشبكة.

تنزيل الأداة
-w, --scriptType=jsاضبط إلى js أو vbs أو vba أو hta
-a, --assembly=TestAssembly.dllتجميعة .NET، مثال: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe، بدلاً من ذلك يمكنك تحديد ملف مصدر c# باستخدام مفتاح سطر الأوامر -c.
-c, --csfile=TestAssembly.csملف كود مصدري C#، مثال: -c C:\Users\userX\Desktop\shellcode_loader.cs، تأكد من وضع الكود الخاص بك داخل المُنشئ الافتراضي لفصلك وتحديد أي تبعيات مطلوبة باستخدام مفتاح سطر الأوامر -d.
-d, --references=Example.dllتجميعات مرجعية، مثال: -d System.Window- s.Forms.dll, System.dll
-b, --bypassتجاوز ضوابط فحص النوع المقدمة في .NET إصدار 4.8+، القيمة الافتراضية false، واضبطها على true (--bypass/-b) في حال كانت نصوص WSH المُولدة مخصصة للعمل على بيئات .NET إصدار > 4.8+. يجب استخدام هذا الخيار فقط مع الملف التنفيذي لـ G2JS بإصدار .NET 4.x
-e, --encodeType=b64ترميز أدوات VBA: b64 أو hex (الافتراضي مضبوط على b64)
-o, --output=outputملف إخراج الحمولة المُولدة، مثال: -o C:\Users\userX\Desktop\output (بدون امتداد)
-r, --regfreeتفعيل بدون تسجيل لمكونات COM المبنية على .NET، ينطبق على نصوص JS/HTA فقط.
-h, --helpإظهار المساعدة