
أداة لتوليد أدوات (gadgets) مُسلسلة في .NET يمكنها تحفيز تحميل/تنفيذ تجميعات .NET عند إلغاء تسلسلها باستخدام BinaryFormatter من السكربتات المستندة إلى JS/VBS/VBA.
أداة لتوليد أدوات (Gadgets) تسلسلية خاصة بـ .NET يمكنها تشغيل تحميل/تنفيذ تجميعات .NET عند إلغاء التسلسل باستخدام BinaryFormatter من نصوص JS/VBS/VBA.
الأداة الحالية تستدعي Activator.CreateInstance() عند إلغاء التسلسل باستخدام BinaryFormatter من jscript/vbscript/vba، وهذا يعني أنه يمكن استخدامها لتشغيل تنفيذ تجميع .NET الذي تختاره عبر المُنشئ الافتراضي/العام.
أُنشئت الأداة بشكل أساسي لأتمتة تسليح نصوص WSH لمهام الفريق الأحمر (RT) (الوصول الأولي، الحركة الجانبية، الثبات)، وقد تمت إزالة محمّل الشيل كود (shellcode loader) الذي استُخدم في الإثبات المفاهيمي (PoC) واستُبدل بتجميعة مثال مطبقة في مشروع TestAssembly.
يمكنك إما استخدام الملفات التنفيذية الموجودة في مجلد Release أو استخدام VS2017 وإعادة توجيه مشروعك إلى إصدار .NET 3.5 أو 4.x لبناء G2JS من المصدر.
استخدم إصدار .NET 3.5 من G2JS من أجل:
استخدم إصدار .NET 4.x من G2JS من أجل:
يجب وضع حمولة الكود المصدري C# داخل المُنشئ العام الافتراضي لفصلك. (مثال لتشغيل Mimikatz من jscript؛ https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)
أُجريت الاختبارات على أحدث إصدار من Windows 10 Enterprise 1909 وWindows 7 مع تثبيت إصدارات مختلفة من .NET Framework.
تأكد من إيقاف تشغيل Windows Defender عند استخدام GadgetToJScript.exe لتوليد نصوص WSH، ويمكن إعادة تشغيله بمجرد توليد النصوص.
استخدم إصدار .NET 3.5 من G2JS لتوليد نصوص JScript/HTA الخاصة بـ WSH بدون تسجيل، والتي لا تزال قادرة على تجاوز فحص النوع في .NET Framework 4.8+ دون الحاجة إلى تعطيل هذا التخفيف باستخدام أداة المرحلة الأولى TextFormattingRunProperties. اعتبر هذا تجاوزًا أفضل/أنظف لتنفيذ حمولات JScript/HTA بدون تسجيل الموجهة لبيئات .NET 4.8+ لأنه لا يتطلب:
ShellCOMPLUS_Version.-> مؤشرات اختراق (IOCs) أقل + استهداف بيئات 3.5 < .NET < 4.x.
تعتمد الأداة على الأبحاث/الأعمال الرائعة التي قام بها:
يجب استخدام 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 | إظهار المساعدة |