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

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

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

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

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

Категории

Все категории
Loading categories
mitm-proxy-ja3-ja4 — Настраиваемый HTTP MITM-прокси на Rust с подменой отпечатков TLS, HTTP/2 и TCP. | Kitploit
Инструменты/GitHubGitHub/3radiance/mitm-proxy-ja3-ja4
Сниффинг и анализ пакетовИнструменты шифрования/дешифрованияВеб-прокси и перехватВеб-безопасностьСетевая безопасностьКонфиденциальностьУтилиты и фреймворкиКраулерАнти-БотПодмена Цифрового Отпечатка
GitHub
55822 дней назадЕщё не проверено
3radiance/mitm-proxy-ja3-ja4

mitm-proxy-ja3-ja4

Настраиваемый HTTP MITM-прокси на Rust с подменой отпечатков TLS, HTTP/2 и TCP.

Репозиторий

Популярное

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

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

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

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

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

mitm-proxy-ja3-ja4

English | Русский

HTTP MITM-прокси на Rust, tokio и btls.

Проект полностью переписан на btls (BoringSSL) для продвинутого TLS-фингерпринтинга. Слой TLS-отпечатка (JA3/JA4) теперь полностью управляем — наборы шифров, кривые, алгоритмы подписи, ALPN, record size limit, сжатие сертификата, GREASE, порядок/перестановка расширений, OCSP stapling, Certificate Transparency (SCT), session tickets, ALPS и Encrypted Client Hello (ECH, разрешается вживую через DoH, с фолбэком на GREASE) задаются через YAML-профиль. HTTP/2-фингерпринтинг (Akamai) и порядок/подмена HTTP/1.1-заголовков тоже полностью настраиваемы. TCP (L4) фингерпринтинг тоже работает: SYN-пакеты апстрим-соединений переписываются в NFQUEUE (TTL, размер окна, MSS, window scale, флаг DF, таймстампы, точный порядок TCP-опций, марки по доменам) с автоматическим управлением iptables.

Настройка подмены TLS-отпечатка

TLS

Настройка подмены HTTP/2-отпечатка

HTTP/2

Настройка подмены TCP-отпечатка

TCP

Возможности (текущая реализация)

  • MITM (Man-in-the-Middle) — прозрачный перехват HTTPS. Сертификаты выпускаются и подписываются на лету через rcgen, кэшируются в moka для производительности.

  • Интеграция BoringSSL — TLS-хендшейк и MITM-перехват реализованы через btls и tokio-btls.

  • Подмена TLS-отпечатка (JA3/JA4) — готово полностью. Апстрим-соединение целиком собирается из YAML-профиля, который передаётся через -c / --config <путь> (формат см. в config.yaml):

    • Наборы шифров, в строгом порядке, заданном пользователем.
    • Эллиптические кривые.
    • Алгоритмы подписи.
    • Согласование ALPN на основе протокола, реально выбранного апстрим-сервером.
    • Record size limit.
    • Сжатие сертификата (brotli, zlib, zstd) с реальной поддержкой распаковки.
    • GREASE.
    • Точный порядок TLS-расширений в ClientHello либо случайная перестановка в стиле Chrome.
    • Переключатели OCSP stapling, Certificate Transparency (SCT), session ticket и ALPS (Application-Layer Protocol Settings).
    • Encrypted Client Hello (ECH) — реальный ECH-конфиг разрешается вживую через DoH (запрос HTTPS/SVCB-записи) для каждого апстрим-хоста, причём сам DoH-запрос идёт с тем же TLS/HTTP2-профилем; при отсутствии конфига — фолбэк на ECH GREASE (или ничего), настраивается независимо — подробности в TLS.ru.md.
  • Согласование ALPN сначала с апстримом — прокси устанавливает и согласует TLS с апстрим-сервером до завершения TLS-хендшейка с браузером. Протокол, выбранный апстрим-сервером через ALPN, затем используется для настройки клиентского TLS-акцептора — это не даёт браузеру выбрать протокол, который апстрим-соединение не поддерживает.

  • Подмена HTTP/2-отпечатка (Akamai) — полностью настраиваемый HTTP/2-фингерпринтинг через YAML-профиль:

    • Значения HTTP/2 SETTINGS и точный порядок SETTINGS.
    • Обновления окна flow-control на уровне соединения.
    • Настраиваемый начальный stream ID с автоматическим вычислением, если заданы приоритетные фреймы.
    • HTTP/2 priority-фреймы и приоритет прямо в заголовке запроса.
    • Настраиваемое размещение END_STREAM для пустых запросов.
    • Порядок псевдозаголовков.
    • Порядок HTTP-заголовков.
    • Замена, добавление и удаление HTTP-заголовков.
    • Потоковая пересылка тела запроса и ответа без буферизации целиком.
    • Поддержка HTTP/2-трейлеров.
  • Подмена HTTP/1.1-заголовков — настраиваемый порядок и содержимое заголовков для апстрим-соединений на голом HTTP/1.1 (когда ALPN не согласует h2), по той же семантике замены/удаления, что и в HTTP/2.

  • Подмена TCP-отпечатка (L4) — готово полностью. Исходящие апстрим-соединения фингерпринтятся на уровне пакетов через Linux NFQUEUE (src/tcp_fingerprint/):

    • Переписывание SYN: TTL, размер окна, флаг DF, значения MSS / window scale, тоггл таймстампов, точный порядок TCP-опций (или патч значений на месте, если порядок не задан), с пересчётом чексумм.
    • Очередь установленного соединения правит только TTL/DF (поддержан hop limit IPv6); каждый пакет по умолчанию получает вердикт Accept, чтобы очереди никогда не вставали.
    • Маршрутизация по SO_MARK на TCP-профили по доменам, автоматическое управление iptables (вставка наверх, выше инструментов вроде zapret/nfqws, дедупликация, удаление при выключении по Ctrl+C) с безопасным --queue-bypass.
    • См. TCP.ru.md и блок tcp в config.yaml.
  • Поддержка апстрим HTTP-прокси — соединения можно проксировать через апстрим HTTP-прокси методом CONNECT.

  • Маршрутизация профилей по доменам — передай -d / --domain <путь> с картой доменных паттернов в частичные оверлеи профиля (см. domain.yaml). Каждое соединение сопоставляется по SNI (точное → *.root → *.label.* → label.* → базовый профиль) и обслуживается со своими настройками TCP/TLS/HTTP2/HTTP1/апстрима, предсобранными один раз на старте. Указывать нужно только поля, отличающиеся от базового профиля; остальное наследуется.

  • Асинхронность — построено на tokio для высокопроизводительного неблокирующего ввода-вывода.

Требования

  • Rust (edition 2021)
  • Linux (обязателен для L4-функций на NFQUEUE)
  • Root или cap_net_admin,cap_net_raw=+eip (для SO_MARK, бинда NFQUEUE и автоматических iptables; без этого ставь "auto_iptables": false в блоке tcp и применяй mangle-правила руками — см. TCP.ru.md)
  • Firefox с расширением Multi-Account Containers (настоятельно рекомендуется для одновременного использования нескольких отпечатков)

Логирование

Прокси использует tracing с фильтрацией по модулям через RUST_LOG.

Примеры:

RUST_LOG='H2=error' cargo run --release -- -c profile.yaml
RUST_LOG='TCP=debug,H2=error,TLS=warn' cargo run --release -- -c profile.yaml
RUST_LOG='CA=info,TLS=warn,H2=error' cargo run --release -- -c profile.yaml

Поддерживаемые теги совпадают с именами модулей в коде: TCP, HTTP, H1, H2, TLS, CA, ECH, CFG, IPT, NFQUEUE, Runtime.

Логи по умолчанию содержат таймстамп, чтобы проще было сопоставлять события между собой.

Установка и запуск

1. Сборка

git clone https://github.com/3Radiance/mitm-proxy-ja3-ja4.git
cd mitm-proxy-ja3-ja4
cargo build --release

2. Запуск

Все настройки — порт, апстрим-прокси и пути к файлам CA — задаются в YAML-конфиге, который передаётся через -c / --config <путь>. Флагов --port / --upstream больше нет.

config: 
  port: 9090
  upstream_proxy: "127.0.0.1:10808"
  cert: "/path/to/ca.crt"
  key: "/path/to/ca.key"

Чтобы запустить без апстрим-прокси, укажи "upstream_proxy": null.

cargo run --release -- --config profile.yaml
# или
cargo run --release -- -c profile.yaml

При первом запуске, если файлы cert/key ещё не существуют, прокси сгенерирует CA по указанным путям:

  • ca.crt — корневой сертификат CA. Его нужно импортировать в Firefox/браузер и добавить в доверенные, чтобы сайты определялись корректно.
  • ca.key — приватный ключ CA.

3. Доменные переопределения (опционально)

cargo run --release -- -c profile.yaml -d domain.yaml

domain.yaml — карта доменных паттернов в частичные оверлеи, указывать нужно только поля, отличающиеся от базового профиля:

"browserleaks.com":
  config:
    upstream_proxy: null
  tls:
    enable_ech: false

"*.google.com":
  tls:
    enable_ech: true

"tls.peet.ws":
  tcp:
    mark: "0x11"
    ttl: 100
    window_size: 64130
    mss: 1400
    window_scale: 7
    dont_fragment: true
    timestamp: false
    tcp_options_order:
      - mss
      - sack_perm
      - wscale
      - nop
Скачать инструмент