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

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

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

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

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

Категории

Все категории
Loading categories
wcfproxy — Прокси для WCF-трафика на основе net.tcp. | Kitploit
Инструменты/GitHubGitHub/syss-research/wcfproxy
Веб-прокси и перехватТестирование безопасности APIСетевая безопасностьТестирование на ПроникновениеАнализ Бинарных ФайловАутентификация
GitHubsyss-research/wcfproxy

wcfproxy

Прокси для WCF-трафика на основе net.tcp.

Репозиторий
8166 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Сборка

Вы можете либо скомпилировать инструмент один раз и затем использовать полученный бинарный файл, либо запускать его «как скрипт» (цепочка инструментов Go скомпилирует его на лету). Для разработки удобен последний вариант. Для продуктивного использования рекомендуется скомпилировать его один раз (из директории cli) и использовать полученный исполняемый файл. Благодаря компилятору Go вы можете собирать как из Linux, так и для Linux или Windows. Для сборки требуется версия Go не ниже 1.18 (протестировано с Go 1.23).

Сборка из Linux

Чтобы собрать из Linux для Windows или Linux, просто установите GOOS соответствующим образом (выполните из директории cli):``` GOOS=windows GOARCH=amd64 go build -o wcfproxy.exe

.```
GOOS=linux GOARCH=amd64 go build -o wcfproxy

Сборка из Windows

Для сборки из Windows выполните эквивалентные команды, например, из PowerShell:``` $env:GOOS='windows'; $env:GOARCH='amd64'; go build -o wcfproxy.exe

> Пожалуйста, ознакомьтесь с нашими руководствами по [Kernels](https://github.com/syss-research/wcfproxy/blob/main/docs/source/install/kernels.md),
> [Drivers](https://github.com/syss-research/wcfproxy/blob/main/docs/source/install/drivers.md) или
> [Installation](https://github.com/syss-research/wcfproxy/blob/main/docs/source/install/README.md) для получения более подробной информации.

Примечание: если вы используете Windows, этот шаг можно пропустить. Поддержка Syzkaller для
Windows была нарушена некоторое время назад, и не всё может работать корректно.```
$env:GOOS='linux'; $env:GOARCH='amd64'; go build -o wcfproxy

Использование

Конфигурация для wcfproxy предоставляется через JSON-файл. По умолчанию используется файл конфигурации config.json, но путь к файлу конфигурации можно указать с помощью параметра -config. Файл конфигурации предназначен для хранения произвольного количества именованных конфигураций, например:```json { "my-config": { " ... ": " ... " } }

Значение именованных объектов конфигурации должно соответствовать структуре `Config` (см. [Config structure](#config-structure)).
Этот исходный файл с включенными комментариями также служит наиболее точной документацией для опций конфигурации `wcfproxy`.
Из всей предоставленной конфигурации используемая определяется по имени с помощью опции командной строки `-enable`:```
wcfproxy.exe -config config.json -enable my-config

Структура конфигурации

Структура верхнего уровня каждого объекта конфигурации следующая:```json { "listen": "[::1]:8000", "connect": "[::1]:9000", "retarget": "net.tcp://127.0.0.1:8000/WCFLab/WCFDemoService/nettcp", "retarget-map": { "nettcps": "net.tcp://localhost:8210/WCFLab/WCFDemoService/nettcps", "winauth": "net.tcp://localhost:8220/WCFLab/WCFDemoService/nettcp-winauth" }, "log-level": "debug|info|warn|error", "log-file": "path/to/log/file", "tls-server": { " ... ": " ... " }, "tls-client": { " ... ": " ... " }, "ntlm": { " ... ": " ... " }, "interceptor": { " ... ": " ... " }, "ctrl": { " ... ": " ... " } }

Обратите внимание, что конфигурация TLS (`tls-server` и/или `tls-client`) не может быть указана, если присутствует конфигурация NTLM.

### Параметры конфигурации
+ `listen` - TCP-endpoint, на котором *wcfproxy* должен прослушивать, например `127.0.0.1:8000` или `[::1]:8000`
+ `connect` - TCP-endpoint вышестоящего WCF-сервера, например  `127.0.0.1:9000` или `[::1]:9000`
+ `retarget` - исходная спецификация целевого адреса (и запасной вариант для `retarget-map`); за объяснениями обратитесь к [Перезапись целевого адреса](#target-rewriting)
+ `retarget-map` - обобщение `retarget`; позволяет выполнять перезапись целевого адреса для нескольких endpoints (полезно только при работе с несколькими WCF-сервисами на одном порту)
    + если один из ключей в `retarget-map` совпадает с текущим целевым адресом, URI цели будет заменен на указанное значение для связи с вышестоящим сервером
    + если ни один ключ `retarget-map` не совпадает с текущим целевым адресом, вместо него будет использован `retarget`
+ `log-level` - уровень логирования; доступные значения: `debug`, `info` (по умолчанию), `warn`, `error`
+ `log-file` - путь к файлу журнала; если путь не указан, журнал выводится в `stdout`
+ `tls-server` - экземпляр `TlsServerConfig` (см. [Конфигурация TLS-сервера](#tls-server-configuration)); требуется только если необходимо поддерживать обновление TLS
+ `tls-client` - экземпляр `TlsClientConfig` (см. [Конфигурация TLS-клиента](#tls-client-configuration)); актуально только если необходимо поддерживать обновление TLS
+ `ntlm` - экземпляр `NtlmConfig` (см. [Конфигурация NTLM](#ntlm-configuration)); требуется только если необходимо поддерживать обновление NTLM (напрямую или через SPNEGO)
+ `interceptor` - экземпляр `InterceptorConfig` (см. [Конфигурация перехватчика](#interceptor-configuration)); обязательно
+ `ctrl` - экземпляр `ControlServerConfig` (см. [Конфигурация сервера управления](#control-server-configuration)), который может предоставлять HTTP-сервер эхо-ответов по умолчанию (полезен вместе с HTTP-перехватчиком), а также небольшой API для управления потоком сообщений (в разработке)

### Конфигурация TLS-сервера
Конфигурация на стороне TLS-сервера предоставляет контроль над наиболее типичными настройками TLS-сервера.
Она имеет следующую структуру:```json
{
	"cert-pem": "path/to/certificate",
	"cert-key": "path/to/certificate-key",
	"max-version": "1.0|1.1|1.2|1.3",
	"min-version": "1.0|1.1|1.2|1.3",
	"client-roots": "path/to/client-ca1,path/to/client-ca2",
	"client-auth": "none|request|require-any|verify-if-given|require-and-verify",
	"keylog": "path/to/keylog-file"
}

Параметры конфигурации TLS-сервера

  • cert-pem - путь к сертификату X.509 (в формате PEM)
  • cert-key - путь к соответствующему ключу для сертификата
  • max-version - максимальная допустимая версия TLS; одна из: 1.0, 1.1, 1.2, 1.3 (по умолчанию)
  • min-version - минимальная допустимая версия TLS; одна из: 1.0 (по умолчанию), 1.1, 1.2, 1.3
  • client-roots - список путей к допустимым корневым сертификатам (PEM) для аутентификации клиента, разделённый запятыми; опционально
  • client-auth - политика аутентификации клиента; наиболее полезные значения: none (по умолчанию), require-and-verify
  • keylog - файл для записи секретов TLS в формате NNS

Конфигурация TLS-клиента

Конфигурация на стороне TLS-клиента предоставляет контроль над наиболее типичными настройками TLS-клиента. Она имеет следующую структуру:```json { "cert-pem": "path/to/certificate", "cert-key": "path/to/certificate-key", "max-version": "1.0|1.1|1.2|1.3", "min-version": "1.0|1.1|1.2|1.3", "roots": "path/to/root-ca1,path/to/root-ca2", "server-name": "therealone.local", "skip-verify": false }

#### Параметры конфигурации TLS-клиента
+ аналогичны [параметрам конфигурации TLS-сервера](#tls-server-configuration-options)
+ `roots` - путь к разделённому запятыми списку путей к корневым центрам сертификации (PEM); опционально с `skip-verify`
+ `server-name` - имя сервера (SNI); опционально
+ `skip-verify` - логическое значение; следует ли клиенту отказаться от проверки сертификата сервера (по умолчанию: `false`)

### Конфигурация NTLM
Конфигурация NTLM указывает домен, имя сервера, а также учётные данные пользователя.
Для каждого пользователя, который должен иметь возможность аутентифицироваться через прокси, необходимо указать действительные учётные данные.```json
{
	"domain": "test.local",
	"server": "server.local",
	"credentials": [
		{ 
            " ... ": " ... "
        }
	]
}

Параметры конфигурации NTLM

  • domain - домен для аутентификации, например test.local; если оставить пустым, будет использовано имя сервера
  • server - имя сервера для аутентификации; если оставить пустым, будет использовано имя хоста текущей системы
  • credentials - массив объектов NtlmCredential (см. ниже)
Скачать инструмент