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

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

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

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

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

Категории

Все категории
Loading categories
wasmforge — WasmForge — компилирует программы на Go и C# в однобинарные, изолированные в WASM-песочнице нативные исполняемые файлы с полиморфным выводом. | Kitploit
Инструменты/GitHubGitHub/praetorian-inc/wasmforge
Фреймворки для пентестаПовышение привилегийФреймворки для эксплойтовГенерация полезной нагрузкиМеханизмы персистентностиЛатеральное перемещениеЭксплуатация веб-приложенийПост-эксплуатацияКомандование и УправлениеАнализ Бинарных ФайловRed Teaming
11912522 месяцев назадПроверено Kitploit
Генерация Шеллкода
GitHubpraetorian-inc/wasmforge

wasmforge

WasmForge — компилирует программы на Go и C# в однобинарные, изолированные в WASM-песочнице нативные исполняемые файлы с полиморфным выводом.

Репозиторий

Популярное

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

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

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

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

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

WasmForge

WasmForge компилирует программы на Go и C# в WebAssembly, а затем упаковывает их в единые нативные бинарные файлы. Полученные исполняемые файлы изолируют гостевой код внутри WASM-среды выполнения (форк wazero, создаваемый при каждой сборке). Из этой песочницы гости получают прозрачный доступ к сети, сырым сокетам, Win32 API и API фреймворков macOS.

Вы можете писать обычный Go, используя net.Dial, net.Listen или net/http. Вы также можете перенести существующий проект на C# .NET Framework. В любом случае результатом будет один бинарный файл, который запускается на Windows или macOS, без необходимости изменять исходный код гостя.

WasmForge Sliver Demo

Я ПРОСТО ХОЧУ ПОГОВОРИТЬ С ЧЕЛОВЕКОМ

Быстрый взгляд на этот проект покажет, что он разрабатывался с ОЧЕНЬ АКТИВНЫМ использованием LLM. Часть документации тоже написана ими – но этот раздел – нет. Я постарался максимально «деслапифицировать» этот README, а также сделать процесс использования WasmForge максимально простым. И хотя LLM пишут документацию, которая сильно преувеличивает собственные достижения, ограничения в ней не описываются НАСТОЛЬКО чётко.

Чтобы правильно задать ожидания: хотя проект тестировался с множеством различных возможностей Go, это НЕ полное решение для всех программ на Go. Существует ещё значительный процент Win32 API, который не поддерживается должным образом (например, API, требующие callback-заглушек). Sliver, например, работает для значительного числа команд, но это НЕ полное взаимно-однозначное портирование со всей функциональностью. , например, всё ещё будет показывать пути с вместо традиционного , поскольку WASM-блоб не полностью обманут и не осознаёт, что находится в Windows. Другие возможности могут просто вызвать сбой. Если что-то не работает, попробуйте создать самый простой пример проблемного API и откройте issue или отправьте PR.

ls
/
C:\
Перед использованием любой функциональности на реальной цели обязательно протестируйте её.

Сторона C# в конечном счёте скорее proof-of-concept, чем полноценная реализация. Процесс компиляции C# в WASM слишком экспериментален, и это означает, что WasmForge часто всё равно приходится переписывать значительную часть программы, чтобы она заработала. В итоге я, вероятно, слишком углубился в эту возможность и должен был просто рекомендовать людям использовать LLM для переписывания кода на C# в код на Go. Вероятно, это менее болезненно. Тем не менее, общий шаблон C# -> Wasm -> WasmForge РАБОТАЕТ и обходит значительное количество детектов, специфичных для C#.

В связи с этим – WasmForge в первую очередь предназначен для борьбы со СТАТИЧЕСКИМИ детектами. Процесс транспиляции обходит большинство детектов, даже для сканирования в памяти, но если ваш бинарный файл содержит такие очевидные строки, как mimikatz или sliver, некоторые простые сканеры памяти всё равно их обнаружат. Автоматическое обфускация строк, вероятно, будет добавлена в будущем, поскольку это довольно простая функция для автоматизации, но для первого прохода я не хотел добавлять дополнительную сложность в конвейер сборки, чтобы отладка оставалась относительно простой.

Хотя были предприняты некоторые усилия по очистке/консолидации исходного кода в этом репозитории, он всё ещё довольно неорганизован. Здесь есть несколько различных папок для разных процессов тестирования. Базовые модульные тесты обычно находятся в examples/ и test/, а некоторые более сложные тесты, предназначенные для запуска в полноценной лабораторной среде, - в testdata/. Также есть ряд инструментов для разработки/тестирования в папках scripts/ и internal/devtools. Они понадобятся только если вы пытаетесь настроить собственную тестовую среду для дальнейшей разработки. В целом, для разработки чего-то такого сложного с помощью LLM требуется большое количество очень конкретных тестовых случаев для направления генерации, иначе вы получите что-то, что вообще не работает. Проект включает эти обвязки, чтобы любой желающий мог продолжить разработку инструментов или внести свой вклад в проект.

Надеюсь, сообщество сочтёт этот инструмент относительно простым в использовании, и со временем мы продолжим его улучшать. Может быть, когда-нибудь компиляция C# будет работать так же хорошо, как компиляция Go.

Быстрый старт (проекты на Go)

Есть три способа получить wasmforge:

  1. Готовый бинарный файл. Загрузите релиз со страницы релизов — сборки CLI для Linux, macOS и Windows прикреплены к каждому тегу.

  2. Docker-образ. Для проектов на C# / .NET в состав образа входят все необходимые компоненты (.NET 10 SDK, рабочая нагрузка NativeAOT-LLVM, WASI SDK 24.0, wasm-ld, osslsigncode), предварительно установленные. Соберите его один раз с помощью make docker-build и запускайте с помощью make docker-run — см. docs/CSHARP.md для полного рабочего процесса. Это рекомендуемый путь для C#.

  3. Сборка из исходников.

    root@kitploit:~
    make build
    

    make build перегенерирует встроенный internal/build/build_assets.tar.gz и затем компилирует CLI. Если вы просто выполните go build -o wasmforge ./cmd/wasmforge, вы получите рабочий бинарный файл, но сборки в режиме распространения (когда CLI запускается вне этого дерева исходников) будут использовать устаревший встроенный архив. См. CONTRIBUTING.md для более подробного объяснения.

В каталоге examples/ есть рабочие программы на Go, которые можно собрать сразу. См. examples/README.md для полного меню.

Целевая платформа Windows

root@kitploit:~
GOOS=windows GOARCH=amd64 ./wasmforge build \
  --ghost traefik \
  -o myapp.exe \
  /path/to/your/project

Мост Win32 API автоматически включается, когда GOOS=windows — вам больше не нужно передавать --win32-apis для обычного случая.

--ghost traefik заменяет встроенное распределение символов gopclntab, чтобы оно выглядело как обратный прокси-сервер Traefik. Из встроенных профилей этот даёт наименьший уровень обнаружения в VirusTotal. Другие профили и инструкции по созданию собственных находятся в docs/GHOST-PROFILES.md.

Цели Windows по умолчанию автоматически подписываются самоподписанным сертификатом. Используйте --sign google.com, чтобы подделать TLS-сертификат домена, или --no-sign, чтобы полностью отключить подпись.

Целевая платформа macOS

root@kitploit:~
# Intel
GOOS=darwin GOARCH=amd64 ./wasmforge build -o myapp /path/to/your/project

# Apple Silicon
GOOS=darwin GOARCH=arm64 ./wasmforge build -o myapp /path/to/your/project

Дополнительные флаги не требуются. Мост фреймворков macOS автоматически включается, когда GOOS=darwin. См. docs/MACOS.md о мосте фреймворков, поддержке purego/ObjC и других заметках по macOS.

Дополнительные флаги

root@kitploit:~
# Поддержка сырых сокетов (требует CAP_NET_RAW или root во время сборки)
./wasmforge build --raw-sockets -o myapp ./path/to/project

# Подробный вывод (полезно для первой сборки)
GOOS=windows GOARCH=amd64 ./wasmforge build --ghost traefik --win32-apis -v -o tool.exe /path/to/project

# Пользовательская PE VERSIONINFO (только Windows)
./wasmforge build --pe-company "Acme Corp" --pe-product "AcmeTool" --pe-file-version "10.0.19041.1" ...

Компиляция проектов на C# / .NET

Проекты на C# (файлы .csproj) обнаруживаются автоматически. WasmForge запускает полный конвейер миграции, наложения патчей и сборки NativeAOT-WASI одной командой:

root@kitploit:~
GOOS=windows GOARCH=amd64 ./wasmforge build --win32-apis -o seatbelt.exe path/to/Seatbelt/Seatbelt/

Для работы с C# мы настоятельно рекомендуем среду сборки Docker. Она включает все необходимые компоненты (.NET 10 SDK, рабочую нагрузку NativeAOT-LLVM, WASI SDK 24.0, wasm-ld), так что вам не нужно устанавливать их на хост-системе. Полные инструкции находятся в docs/CSHARP.md.

Краткое описание CLI

root@kitploit:~
wasmforge build [package]      Скомпилировать пакет Go (или C#) в нативный бинарный файл с WASM-песочницей
  -o, --output <path>          Путь к выходному бинарному файлу
  --ghost <name>               Профиль-призрак: traefik, caddy, terraform (см. docs/GHOST-PROFILES.md)
  --raw-sockets                Включить поддержку сырых сокетов
  --win32-apis                 Включить мост Win32 API (целевая платформа Windows)
  --sign <mode>                Подписать бинарный файл: 'self' или имя домена (по умолчанию: self для Windows)
  --no-sign                    Отключить автоматическую подпись по умолчанию для целей Windows
  --tags <tags>                Теги сборки Go (через запятую)
  --pe-company / --pe-product / --pe-description / --pe-copyright / --pe-file-version
                               Переопределения PE VERSIONINFO
  -v, --verbose                Подробный вывод сборки

wasmforge run [package]        Собрать и сразу выполнить
wasmforge clean                Удалить кэшированные пропатченные GOROOT (~/.wasmforge/cache/)
wasmforge version              Вывести версию

wasmforge dotnet-migrate <dir> Мигрировать проект .NET Framework в .NET 10 NativeAOT-WASI
wasmforge dotnet-patch <dir>   Применить патчи исходного кода C# для NativeAOT-WASI

Возможности

WasmForge устраняет разрыв между WASM и базовой хост-системой, так что гостевым программам не нужно к этому адаптироваться.

Платформенные API. TCP, UDP, DNS, HTTP, TLS и сырые сокеты работают без изменений гостевого кода как на Windows, так и на macOS. На Windows WasmForge проксирует всю поверхность Win32: реестр, файловый ввод-вывод, процессы, загрузку DLL и SyscallN с до 15 аргументами. Преобразование указателей выполняется автоматически. Цепочки vtable COM зеркалируются, так что CLR и другие тяжелые COM-API работают полностью. На macOS dlopen и dlsym обеспечивают доступ к любым фреймворкам (Security, CoreGraphics, IOKit и т.д.), а ebitengine/purego вместе со средой выполнения Objective-C работают "из коробки".

.NET-хостинг и миграция. CLR загружается через стандартную цепочку (CoInitializeEx, CLRCreateInstance, Load_3, Invoke_3). AMSI патчится при запуске, так что Assembly.Load(byte[]) не блокирует известные инструменты. Отдельный конвейер NativeAOT-WASI берет существующие проекты .NET Framework и создает единые Windows PE-бинарные файлы, не требующие .NET runtime на целевой машине.

Память хоста и шеллкод. Прокси памяти хоста на основе VirtualAlloc доступен из гостевой среды. Это делает возможными загрузчики COFF/BOF и выполнение шеллкода без выхода из WASM-песочницы.

Кооперативная уступка. Блокирующие Win32 API (Sleep, WaitForSingleObject, ReadFile и подобные) не замораживают WASM-горутины. Хост выполняет вызов в фоновой горутине и сигнализирует гостю об уступке до получения результата.

Полиморфный вывод. Каждая сборка создает структурно уникальный бинарный файл. WASM-опкоды переставляются, идентификаторы секций и магические байты рандомизируются, а все идентификаторы, PE-импорты, строки VERSIONINFO, блоки лицензий и имена исходных файлов очищаются. Встроенный форк wazero переписывается под переставленный байткод. Профили-призраки переписывают символы gopclntab под реальные корпоративные Go-бинарники (Traefik, Caddy, Terraform). Выводы для Windows по умолчанию подписываются Authenticode — либо самодельным сертификатом, либо имитацией TLS-сертификата реального домена через osslsigncode.

Архитектура

root@kitploit:~
+-------------------- WASM-гость (wasip1) ---------------------+
|                                                              |
|  Ваша программа на Go (net, net/http, os; работает прозрачно)|
|                                                              |
+----------- go:wasmimport ABI (пользовательские опкоды) -----+
                        |
+----------- Среда выполнения хоста (форк wazero для каждой сборки) ---+
|                                                              |
|  90+ хост-функций (сеть, прокси ОС, платформенные API)       |
|  Windows: преобразование указателей, теневая память, зеркалирование COM |
|  macOS: мост фреймворков dlopen/dlsym, ABI-трамплины        |
|                                                              |
+----------- wazero (пользовательская ВМ: переставленные опкоды/магия) ---+
                        |
         Ядро ОС / Windows API / macOS Frameworks

Конвейер сборки состоит из шести этапов.

  1. Подготовка пропатченного GOROOT. Симлинки стандартной библиотеки Go и патчи syscall/ и net/ для работы с WASM-сетью. Кэшируется в ~/.wasmforge/cache/.
  2. Компиляция Go в WASM. Сборка с GOOS=wasip1 GOARCH=wasm с использованием пропатченной стандартной библиотеки. Автоматические заглушки покрывают платформенно-специфичные пробелы. Системные шмы для golang.org/x/sys и ebitengine/purego внедряются при наличии соответствующих импортов.
  3. Ремаппинг WASM. Перестановка опкодов для каждой сборки, перестановка идентификаторов секций, пользовательские магические байты и полная замена байтов полезной нагрузки.
  4. Генерация хост-бинарного файла. Полиморфный main.go со случайными идентификаторами, соответствующим форком wazero, встроенными PE-ресурсами и -trimpath.
  5. Постобработка PE (только Windows). Обогащение импортов, контрольная сумма PE и внедрение полезной нагрузки в виде именованной секции PE.
  6. Подпись кода (опционально). Подпись Authenticode через osslsigncode.

Реальная проверка

WasmForge компилирует и запускает немодифицированные сторонние Go-проекты, включая те, которые содержат сложный платформенно-специфичный код.

ПрограммаПлатформаОписаниеПроверено
SliverWindowsC2-фреймворк, интенсивное использование Win32HTTPS-бикон, whoami, ps, netstat, execute-assembly (Rubeus, Seatbelt)
SlivermacOSC2-фреймворк (бикон + сессия)pwd, ls, download, execute, SOCKS5-прокси
go-clrWindowsХостинг CLR .NET + выполнение сборокЦепочка загрузки CLR, триаж Rubeus, системное сканирование Seatbelt
ChiselWindowsTCP/UDP туннель через HTTP с SOCKS5Подключение туннеля, пересылка прокси
Ligolo-ngWindowsПродвинутое туннелирование и пивотингИнтерфейс TUN, подключение агента
goffloaderWindowsЗагрузчик COFF/BOF с использованием unsafe.PointerVirtualAlloc, выполнение шеллкода, разбор PE, разрешение IAT

.NET NativeAOT-WASI программы:

ПрограммаПлатформаОписаниеПроверено
SeatbeltWindowsПеребор безопасностиБольшинство команд проходят; некоторые, требующие диспетчеризации обратных вызовов WMI / Defender, честно заглушены в ожидании поддержки моста.
RubeusWindowsИнструментарий KerberosОперации с хэшами и токенами работают напрямую; сетевые глаголы (asktgt, kerberoast, asreproast) проходят через TCP-мост; запросы LSA (klist, logonsession) соответствуют нативным эталонным результатам.

См. docs/BUILDING-SLIVER.md для пошагового руководства по Sliver и docs/CSHARP.md для конвейера C#.

Требования

WasmForge работает на узлах сборки Linux, macOS или Windows. Требуется Go 1.25 или новее.

Некоторые возможности требуют дополнительной настройки. Для сырых сокетов нужны CAP_NET_RAW или root-права. Мост Win32 требует целевой платформы Windows с флагом --win32-apis (другие цели возвращают ENOSYS). Мост фреймворков macOS требует целевой платформы macOS и определяется автоматически по GOOS=darwin. Для подписи кода требуется osslsigncode в PATH. Для проектов на C# нужны .NET 10 SDK, рабочая нагрузка NativeAOT-LLVM и WASI SDK 24.0. Альтернативно, встроенный Docker-образ (описан в docs/CSHARP.md) поставляется со всем этим предустановленным.

Тестовый конвейер эквивалентности (test/parity/) и скрипты развертывания лаборатории в scripts/lab-setup/ дополнительно предполагают наличие Active Directory-диапазона, развернутого с помощью Ludus с запущенным GOAD (Game of Active Directory) — все жестко заданные значения по умолчанию sevenkingdoms.local / kingslanding / SEVENKINGDOMS-CA являются значениями по умолчанию GOAD, их можно переопределить через переменные окружения WASMFORGE_PARITY_* (см. test/parity/internal/lab/lab.go). См. docs/internals/PARITY-HARNESS.md и docs/internals/LAB-STABILITY.md для полной настройки лабораторной среды.

Документация

Начните здесь

ТемаДокумент
Рабочие примеры (TCP-сканер, HTTP-сервер, ICMP ping)examples/README.md
Сборка Sliver от начала до конца (Windows + macOS)docs/BUILDING-SLIVER.md
Компиляция проектов C# / .NET (рабочий процесс Docker)docs/CSHARP.md
Целевые платформы macOS и мост фреймворковdocs/MACOS.md
Использование профилей-призраков и создание пользовательских профилейdocs/GHOST-PROFILES.md
Переменные окружения времени сборки (рецепт R80, каждая ручка WASMFORGE_*)docs/ENVIRONMENT.md

Глубже

ТемаДокумент
Архитектура — хост-модуль, конвейер сборки, проектные решенияdocs/ARCHITECTURE.md
Участие — структура репозитория, предварительные требования, добавление хост-функцийCONTRIBUTING.md
Политика безопасности и раскрытие информацииSECURITY.md
Кодекс поведенияCODE_OF_CONDUCT.md

Справочные материалы для мейнтейнеров

ТемаДокумент
Контракт хост-API — зарегистрированные экспорты, стабильность сигнатурdocs/internals/HOST-API-CONTRACT.md
Внутренности патчера AST — правила замены строк и диспетчеризацияdocs/internals/AST-PATCHER.md
Конвейер эквивалентности — сравнение нативного C# и WASM-результатовdocs/internals/PARITY-HARNESS.md
Стабильность лаборатории — настройка диапазона Ludus + GOAD, скрипты watchdogdocs/internals/LAB-STABILITY.md

Лицензия

Лицензировано в соответствии с Apache License, Version 2.0. См. LICENSE и NOTICE для подробностей.

Copyright (c) 2025-2026 Praetorian Security, Inc.

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