Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
GadgetToJScript — Инструмент для генерации сериализованных .NET-гаджетов, которые могут инициировать загрузку/выполнение .NET-сборки при десериализации с помощью BinaryFormatter из сценариев на основе JS/VBS/VBA. | Kitploit
Инструменты/GitHubGitHub/med0x2e/gadgettojscript
Генерация полезной нагрузкиМеханизмы персистентностиЭксплуатацияЛатеральное перемещениеПост-эксплуатацияRed TeamingРазработка Полезной НагрузкиСостязательная Атака
GitHubmed0x2e/gadgettojscript

GadgetToJScript

Инструмент для генерации сериализованных .NET-гаджетов, которые могут инициировать загрузку/выполнение .NET-сборки при десериализации с помощью BinaryFormatter из сценариев на основе JS/VBS/VBA.

1.1k17875 лет назадПроверено Kitploit
Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Описание

Инструмент для генерации .NET-сериализованных гаджетов, которые могут инициировать загрузку/выполнение .NET-сборки при десериализации с помощью BinaryFormatter из JS/VBS/VBA-скриптов.
Текущий гаджет при десериализации с помощью BinaryFormatter из jscript/vbscript/vba инициирует вызов Activator.CreateInstance(); это означает, что его можно использовать для запуска выбранной вами .NET-сборки через конструктор по умолчанию/публичный конструктор.

Инструмент создавался в основном для автоматизации weaponization WSH-скриптов в рамках задач Red Team (первичный доступ, боковое перемещение, закрепление); загрузчик шеллкода, использовавшийся для PoC, удалён и заменён примером сборки, реализованной в проекте TestAssembly.

Детали:

  • Обходит AMSI без необходимости обновлять ключ реестра AmsiEnable или перехватывать loadlibrary (AMSI.dll).
  • Обходит новые средства контроля, введённые в .NET 4.8+, которые блокируют проверки типов "Assembly.Load" и ActivitySurrogateSelector.
  • Гаджет поддерживает корректную десериализацию полезных нагрузок для сред .NET Framework от 3.5 до 4.8+.
  • Зависит от ActivitySurrogateSelector для создания класса-суррогата (Surrogate), который выступает обёрткой для десериализации гаджета, сконструированного таким образом, чтобы вызвать "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())".
  • Использует гаджет на основе TextFormattingRunProperties в качестве первого этапа десериализации для отключения проверки типов ActivitySurrogateSelector, тем самым обходя исправления, недавно введённые в .NET Framework 4.8+.
  • В основном не полагается на предоставление COM-объекта на основе .NET, поэтому нет необходимости вызывать d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class).
  • Делегаты используются только для запуска выполнения полезной нагрузки во время десериализации (Func<Assembly, IEnumerable>) — это требование для корректного выстраивания элементов гаджета в цепочку.
  • Длина сериализованных гаджетов или потоков (Streams) вычисляется во время выполнения и автоматически подставляется в генерируемые WSH-скрипты (для VBA не требуется).
  • Генерирует VBS/VBA- и JS/HTA-скрипты, использующие активацию COM-компонентов на основе .NET без регистрации (registration-free).

Использование и примечания:

Вы можете либо использовать бинарные файлы из папки Release, либо взять VS2017 и перенацелить проект на .NET версии 3.5 или 4.x, чтобы собрать G2JS из исходного кода.

  • Используйте версию G2JS для .NET 3.5, чтобы:

    • Генерировать WSH-скрипты, предназначенные для запуска в средах, где .NET Framework 4.x недоступен или имеет версию ниже 4.8 (минимальная требуемая версия .NET Framework — 3.5). Для этого необходимо собрать вашу C#-нагрузку или .NET-сборку с .NET Framework <= 3.5.
  • Используйте версию G2JS для .NET 4.x, чтобы:

    • Генерировать 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 (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.csC#-исходный файл, пример: -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Показать справку

Совет по OPSEC:

Используйте версию G2JS для .NET 3.5, чтобы генерировать WSH-скрипты JScript/HTA с активацией без регистрации (Registration-free), которые по-прежнему могут обходить проверку типов .NET Framework 4.8+ без необходимости отключать эту защиту с помощью первого этапа-гаджета TextFormattingRunProperties. Считайте это лучшим/более чистым обходом для выполнения Reg-free JScript/HTA-нагрузок, нацеленных на среды .NET 4.8+, поскольку он не требует:

  • Первого этапа-гаджета
  • Создания объекта Shell
  • Чтения текущей версии .NET Framework из реестра
  • Установки переменной окружения 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 и/или некоммерческих образовательных целей. Автор не несёт ответственности за любое неправомерное использование данного программного обеспечения. Используйте его в своих собственных сетях и/или с разрешения владельца сети.

Скачать инструмент