
Инструмент для генерации сериализованных .NET-гаджетов, которые могут инициировать загрузку/выполнение .NET-сборки при десериализации с помощью BinaryFormatter из сценариев на основе JS/VBS/VBA.
Инструмент для генерации .NET-сериализованных гаджетов, которые могут инициировать загрузку/выполнение .NET-сборки при десериализации с помощью BinaryFormatter из JS/VBS/VBA-скриптов.
Текущий гаджет при десериализации с помощью BinaryFormatter из jscript/vbscript/vba инициирует вызов Activator.CreateInstance(); это означает, что его можно использовать для запуска выбранной вами .NET-сборки через конструктор по умолчанию/публичный конструктор.
Инструмент создавался в основном для автоматизации weaponization WSH-скриптов в рамках задач Red Team (первичный доступ, боковое перемещение, закрепление); загрузчик шеллкода, использовавшийся для PoC, удалён и заменён примером сборки, реализованной в проекте TestAssembly.
Вы можете либо использовать бинарные файлы из папки Release, либо взять VS2017 и перенацелить проект на .NET версии 3.5 или 4.x, чтобы собрать G2JS из исходного кода.
Используйте версию G2JS для .NET 3.5, чтобы:
Используйте версию G2JS для .NET 4.x, чтобы:
C#-исходный код полезной нагрузки должен размещаться в конструкторе по умолчанию вашего класса. (Пример запуска Mimikatz из jscript: https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74).
Тесты проводились на последнем выпуске Windows 10 Enterprise 1909 и Windows 7 с установленными различными версиями .NET Framework.
Убедитесь, что Защитник Windows (Windows Defender) отключён при использовании GadgetToJScript.exe для генерации WSH-скриптов; после генерации скриптов его можно снова включить.
-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 без регистрации (registration-free), применимо только к JS/HTA-скриптам. |
-h, --help | Показать справку |
Используйте версию G2JS для .NET 3.5, чтобы генерировать WSH-скрипты JScript/HTA с активацией без регистрации (Registration-free), которые по-прежнему могут обходить проверку типов .NET Framework 4.8+ без необходимости отключать эту защиту с помощью первого этапа-гаджета TextFormattingRunProperties. Считайте это лучшим/более чистым обходом для выполнения Reg-free JScript/HTA-нагрузок, нацеленных на среды .NET 4.8+, поскольку он не требует:
ShellCOMPLUS_Version.-> меньше IOCs + охват сред 3.5 < .NET < 4.x.
Инструмент основан на превосходном исследовании/работе, выполненной:
GadgetToJScript следует использовать только для авторизованного red teaming и/или некоммерческих образовательных целей. Автор не несёт ответственности за любое неправомерное использование данного программного обеспечения. Используйте его в своих собственных сетях и/или с разрешения владельца сети.