2026-08-13 12:02:52 +03:00
2025-06-17 01:48:43 +07:00
2024-03-28 14:31:28 +07:00
2025-09-05 19:48:10 +07:00
2023-03-30 23:01:42 +07:00
2023-08-30 15:33:56 +07:00

PronBox

Форк box_for_magisk - прозрачный прокси для Android (root).
Собрано в стенах НИИ «ТехноПрон». Отображаемое имя в Magisk: PronBox; module id: box_for_root (апгрейд совместим).

Работает через Magisk, KernelSU и APatch. Ядро по умолчанию: sing-box. Anti-detection без LSPosed + sidecar: olcrtc / TrustTunnel / wg-obfuscator.


Зачем этот форк

Stock Box for Root хорошо проксирует трафик через TPROXY, но:

  1. Не поддерживает новые протоколы вроде olcrtc, TrustTunnel и WG-obfuscation «из коробки».
  2. Легко детектится проверщиками вроде RKNHardering: REST API на 9090, скан localhost, TUN-интерфейсы.

PronBox решает это без LSPosed - iptables port-hide, hardening конфигов и sidecar-цепочка. Разработано командой НИИ «ТехноПрон».


Отличия от stock BFR

Функция Stock BFR PronBox
Ядро по умолчанию clash sing-box
Режим сети tproxy tproxy (TUN блокируется)
REST API (9090) 0.0.0.0 отключён или только 127.0.0.1
TUN mode доступен запрещён (stealth_forbid_tun)
Localhost scan не защищён iptables port-hide для observer apps
olcrtc / TrustTunnel нет sidecar → SOCKS → sing-box
WG obfuscator нет wg-obfuscator → WireGuard
Быстрый профиль - Manage Profiles / sbfr p …
LSPosed / VPN Hide - не требуется
Автор - команда НИИ «ТехноПрон»

Возможности

  • Прозрачный прокси через iptables TPROXY - без VpnService, без VPN-иконки, без TRANSPORT_VPN.
  • Stealth-слой (box.stealth): скрытие localhost-портов от банков и anti-tamper SDK.
  • Sidecar (box.sidecar): olcrtc и TrustTunnel как локальный SOCKS5 upstream для sing-box.
  • Авто-hardening sing-box/clash: удаление REST API, запрет TUN, блок QUIC (опционально).
  • Split tunneling через blacklist/whitelist приложений и GID (как в stock BFR).
  • Совместимость с Magisk / KernelSU / APatch.

Архитектура

Обычный режим (VLESS / Hysteria / и т.д.)

Приложение
  → iptables mangle / TPROXY (порт 9898)
  → sing-box (tproxy inbound)
  → outbound (VLESS, Trojan, …)
  → сервер

Sidecar-режим (olcrtc / TrustTunnel)

Приложение
  → iptables TPROXY (:9898)
  → sing-box
  → SOCKS 127.0.0.1:10800 | :10801
  → trusttunnel_client | olcrtc
  → сервер (HTTPS / WebRTC)

WireGuard + wg-obfuscator

Приложение
  → iptables TPROXY
  → sing-box (route.final = WireGuard endpoint)
  → UDP 127.0.0.1:41320
  → wg-obfuscator (client, masking STUN/AUTO)
  → VPS:13255 (публичный obfuscator)
  → WireGuard на VPS (10.66.80.1 и т.д.)

Stealth-слой (параллельно)

Observer app (банк, RKNHardering)
  → connect(127.0.0.1:9090)
  → iptables REJECT (UID из stealth.list.cfg)
  → ECONNREFUSED (порт «закрыт»)

Ядро прокси (root) → loopback доступен, прокси работает

Установка

Из релиза

  1. Скачайте pronbox-v*.zip из Releases.
  2. Magisk / KernelSU / APatch → Modules → Install from storage.
  3. При установке выберите загрузку sing-box (Vol+).
  4. Перезагрузите устройство.

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

Windows / любая ОС (рекомендуется):

python tools/build_zip.py
# → pronbox-v1.14.0.zip

Linux / Git Bash:

sh build.sh

Профили и порты (шпаргалка)

Профиль / протокол Файл sing-box Sidecar / UDP route.final CLI
TrustTunnel config-trusttunnel.json SOCKS :10800 sidecar-proxy sbfr p use trusttunnel
olcrtc config-olcrtc.json SOCKS :10801 olcrtc-proxy sbfr p use olcrtc
WG + obfuscator config-wg-obfs.json UDP :41320 wg-riga4 (endpoint tag) sbfr p use wg-obfs
Hysteria2 (нативно) свой config.json / config-hy2.json - proxy (hy2 outbound) вручную / BFR Manager
Комбо HY2+WG config-hy2-wg.json опционально TT/olc свой BFR Manager

Общие порты PronBox:

Порт Назначение
9898 TPROXY inbound sing-box (прозрачный прокси)
19090 mixed inbound (localhost, не 7890 - меньше Clash-fingerprint)
10800 TrustTunnel SOCKS
10801 olcrtc SOCKS
41320 wg-obfuscator listen (loopback, sing-box WG peer сюда)

Перед правкой конфигов остановите сервис: sbfr stop.


Примеры настройки всех протоколов

0. Базовый settings.ini (общее для sidecar)

Файл: /data/adb/box/settings.ini

bin_name="sing-box"
network_mode="tproxy"
name_sing_config="config-trusttunnel.json"

# Stealth (по умолчанию включён)
stealth_mode="true"
stealth_hide_loopback="true"
stealth_disable_api="true"

# Sidecar: оба протокола + переключение final в JSON-профиле (BFR Manager)
sidecar_enable="true"
sidecar_protocol="both"
sidecar_set_final="false"
sidecar_tt_port="10800"
sidecar_olc_port="10801"
sidecar_outbound_tag="sidecar-proxy"
sidecar_olc_tag="olcrtc-proxy"

# WG obfuscator (только для профиля config-wg-obfs.json)
wgobfs_enable="false"
wgobfs_listen_port="41320"
wgobfs_config="${box_dir}/sidecar/wg-obfuscator.conf"
wgobfs_patch_config="true"

Установка бинарников sidecar / wg-obfuscator:

su -c /data/adb/box/scripts/box.tool upsidercar    # trusttunnel_client + olcrtc (если есть в релизе)
su -c /data/adb/box/scripts/box.tool upwgobfs     # wg-obfuscator arm64

1. Hysteria2 (нативный outbound sing-box)

Подходит, если на VPS уже поднят Hysteria2 без sidecar.

Фрагмент /data/adb/box/sing-box/config.json:

{
  "inbounds": [
    { "type": "tproxy", "tag": "tproxy-in", "listen": "::", "listen_port": 9898 },
    { "type": "mixed", "tag": "mixed-in", "listen": "127.0.0.1", "listen_port": 19090 }
  ],
  "outbounds": [
    {
      "type": "hysteria2",
      "tag": "proxy",
      "server": "YOUR_SERVER_IP",
      "server_port": 443,
      "password": "YOUR_HYSTERIA2_PASSWORD",
      "tls": {
        "enabled": true,
        "server_name": "your.domain.example",
        "alpn": ["h3"]
      }
    },
    { "type": "direct", "tag": "direct" }
  ],
  "route": {
    "rules": [
      { "domain_suffix": ["yandex.ru", "ya.ru"], "outbound": "direct" },
      { "ip_cidr": ["YOUR_SERVER_IP/32"], "outbound": "direct" }
    ],
    "final": "proxy"
  }
}

В settings.ini: name_sing_config="config.json", sidecar_enable="false", wgobfs_enable="false".

Проверка:

su -c /data/adb/box/scripts/box.tool check
sbfr start

2. TrustTunnel (sidecar → SOCKS :10800)

Шаг 1. Экспорт клиентского конфига с вашего TrustTunnel endpoint (на сервере):

trusttunnel_endpoint vpn.toml hosts.toml -c client -a server --format toml

Шаг 2. Положить на телефон /data/adb/box/sidecar/trusttunnel.toml (из экспорта).
Обязательно SOCKS на loopback 10800:

[listener]
type = "socks5"
address = "127.0.0.1:10800"
# ... credentials / TLS из экспорта endpoint ...

Шаг 3. Профиль sing-box: скопировать шаблон и указать свой HY2/VLESS fallback при необходимости:

cp /data/adb/box/sing-box/config-trusttunnel.json /data/adb/box/sing-box/config-trusttunnel.json.bak
# в config-trusttunnel.json уже есть:
#   outbounds[].tag = sidecar-proxy → 127.0.0.1:10800
#   route.final = sidecar-proxy

Шаг 4. Переключение:

sbfr p use trusttunnel
# или BFR Manager → Manage Profiles → config-trusttunnel.json

Цепочка: App → TPROXY → sing-box → SOCKS:10800 → trusttunnel_client → VPS.


3. olcrtc (sidecar → SOCKS :10801)

Шаг 1. Собрать или положить бинарник olcrtc в /data/adb/box/bin/olcrtc (chmod 755).

Шаг 2. Конфиг /data/adb/box/sidecar/olcrtc.yaml:

mode: cnc
auth:
  provider: telemost
room:
  id: "YOUR_TELEMOST_NUMERIC_ROOM_ID"
crypto:
  key: "64_HEX_CHARS_SAME_ON_SERVER_AND_CLIENT"
net:
  transport: vp8channel
  dns: "192.168.0.1:53"
socks:
  host: "127.0.0.1"
  port: 10801
data: /data/adb/box/run/olcrtc-data

room.id - числовой id комнаты Telemost, не полный URL.
net.dns - LAN DNS роутера; публичный DNS из root-контекста olcrtc часто зависает.

Шаг 3. Профиль config-olcrtc.json: route.final = olcrtc-proxy, SOCKS :10801.

Шаг 4. Переключение:

sbfr p use olcrtc

4. TrustTunnel + olcrtc одновременно (переключение в BFR Manager)

Оба sidecar поднимаются параллельно; какой exit - решает route.final в выбранном JSON-профиле.

settings.ini:

sidecar_enable="true"
sidecar_protocol="both"
sidecar_set_final="false"

В приложении BFR Manager → Manage Profiles:

  • config-trusttunnel.json → exit через TrustTunnel (sidecar-proxy)
  • config-olcrtc.json → exit через olcrtc (olcrtc-proxy)

CLI то же самое: sbfr p use trusttunnel / sbfr p use olcrtc.


5. WireGuard + wg-obfuscator (профиль config-wg-obfs)

Нужен obfuscator на VPS с тем же key. Plain WireGuard на публичный UDP obfuscator не подключится.

Клиент /data/adb/box/sidecar/wg-obfuscator.conf:

[client]
source-if = 127.0.0.1
source-lport = 41320
target = YOUR_VPS_IP:13255
key = YOUR_SHARED_OBFS_KEY
masking = AUTO
verbose = INFO

Сервер (VPS) - см. box/sidecar/wg-obfuscator.server.example.conf:

[server]
source-if = 0.0.0.0
source-lport = 13255
target = 127.0.0.1:51820
key = YOUR_SHARED_OBFS_KEY
masking = AUTO

WireGuard на VPS слушает 51820; снаружи клиенты бьют в 13255 (obfuscator).

Профиль sing-box /data/adb/box/sing-box/config-wg-obfs.json (фрагмент):

{
  "endpoints": [{
    "type": "wireguard",
    "tag": "wg-riga4",
    "mtu": 1280,
    "address": ["10.66.80.3/32"],
    "private_key": "YOUR_WG_PRIVATE_KEY",
    "peers": [{
      "address": "127.0.0.1",
      "port": 41320,
      "public_key": "YOUR_WG_PEER_PUBLIC_KEY",
      "allowed_ips": ["0.0.0.0/0"],
      "persistent_keepalive_interval": 25
    }]
  }],
  "route": {
    "rules": [
      { "ip_cidr": ["YOUR_VPS_IP/32"], "outbound": "direct" },
      { "ip_cidr": ["10.66.80.0/24"], "outbound": "wg-riga4" },
      { "ip_cidr": ["192.168.0.0/16", "127.0.0.0/8"], "outbound": "direct" }
    ],
    "final": "wg-riga4"
  }
}

PronBox при старте перепишет peer на 127.0.0.1:41320 (если wgobfs_patch_config="true"), VPS IP уйдёт в /data/adb/box/run/wgobfs-real-peers.txt.

Включение:

sbfr p use wg-obfs
# alias: sbfr p use wg  |  sbfr p use riga4
su -c /data/adb/box/scripts/box.wgobfs status
ping -c 3 10.66.80.1

6. Комбо Hysteria2 + WireGuard (config-hy2-wg.json)

Для сценария «HY2 как основной exit + WG endpoint для LAN/VPS».
Создайте файл в /data/adb/box/sing-box/config-hy2-wg.json:

  • outbounds: hysteria2 proxy + socks sidecar (если нужны TT/olc)
  • endpoints: wireguard wg-home с peer на VPS или через obfuscator
  • route.rules: .ru / private → direct, HY2 server IP → direct, finalproxy или sidecar

Выберите профиль в BFR Manager или:

name_sing_config="config-hy2-wg.json"

Шаблон можно собрать из рабочего конфига:

su -c '/data/adb/box/scripts/box.profile seed'
cp /data/adb/box/sing-box/config-trusttunnel.json /data/adb/box/sing-box/config-hy2-wg.json
# добавьте/оставьте endpoints WireGuard и нужный route.final

7. Stealth + blacklist (банки, RKNHardering)

Observer apps (не видят localhost-прокси) - /data/adb/box/stealth.list.cfg:

com.notcvnt.rknhardering
ru.sberbankmobile
com.idamob.tinkoff.android
ru.gosuslugi.gosapp

Blacklist (трафик мимо прокси, домашний IP) - /data/adb/box/package.list.cfg:

mode:blacklist
com.notcvnt.rknhardering
ru.sberbankmobile
ru.gosuslugi.gosapp

После установки новых банков:

su -c /data/adb/box/scripts/box.stealth renew
su -c /data/adb/box/scripts/box.iptables renew

Быстрый старт (чеклист)

  1. Установить ZIP, перезагрузка, sbfr start
  2. Выбрать протокол (см. таблицу выше) и заполнить sidecar / sing-box конфиг
  3. sbfr p use trusttunnel | olcrtc | wg-obfs
  4. sbfr p status - проверить route.final и PID процессов
  5. Для RKN: stealth.list.cfg + blacklist в package.list.cfg

Seed профилей из текущего рабочего конфига:

su -c '/data/adb/box/scripts/box.profile seed'
sbfr p list

Stealth (без LSPosed)

Скрипт /data/adb/box/scripts/box.stealth реализует port-hide по модели vpnhide/portshide:

Механизм Описание
Loopback block Для UID из stealth.list.cfg блокируется 127.0.0.0/8 и ::1
INPUT drop TCP на proxy/API-порты с LAN (не с loopback)
API lockdown REST API sing-box/clash удаляется или bind только на 127.0.0.1
TUN forbid network_mode=tun принудительно заменяется на tproxy
QUIC block Опционально REJECT UDP 443/80

Настройки в settings.ini

stealth_mode="true"
stealth_hide_loopback="true"
stealth_block_external_api="true"
stealth_disable_api="true"
stealth_api_bind="127.0.0.1"
stealth_api_port="19090"
stealth_block_quic="false"
stealth_forbid_tun="true"
stealth_extra_ports=("7890" "7891" "19090" "1080" "10808" "2080" "41320" "10800" "10801" "9090" "9091" "1053")

Что закрывает / что нет

Закрывает Не закрывает
Clash/sing-box API scan (127.0.0.1:9090) GeoIP «IP не РФ / hosting»
Localhost SOCKS/proxy probe от observer apps Root / Magisk detection
TUN-интерфейсы (tun0, MTU) Policy routing fwmark (нативно)
REST API на LAN Установленные VPN-приложения (needsReview)

Полный NOT DETECTED против RKNHardering + VPS + root недостижим. Цель форка - убрать hard detect от localhost, API и TUN.


Sidecar: olcrtc и TrustTunnel (кратко)

Подробные пошаговые примеры - в разделе Примеры настройки всех протоколов (п. 2-4).

Протокол Конфиг sidecar SOCKS порт sing-box outbound tag
TrustTunnel /data/adb/box/sidecar/trusttunnel.toml 10800 sidecar-proxy
olcrtc /data/adb/box/sidecar/olcrtc.yaml 10801 olcrtc-proxy

Шаблоны: box/sidecar/trusttunnel.example.toml, box/sidecar/olcrtc.example.yaml.


WireGuard Obfuscator (кратко)

Полный пример клиент + сервер + config-wg-obfs.json - в разделе п. 5.

Репозиторий: ClusterM/wg-obfuscator.
Обязателен на обоих концах с одинаковым key.

su -c /data/adb/box/scripts/box.tool upwgobfs
sbfr p use wg-obfs

Структура модуля

Путь Назначение
/data/adb/box/settings.ini Главный конфиг
/data/adb/box/stealth.list.cfg Observer apps для port-hide
/data/adb/box/package.list.cfg Blacklist/whitelist приложений
/data/adb/box/sing-box/config-trusttunnel.json Профиль TrustTunnel
/data/adb/box/sing-box/config-olcrtc.json Профиль olcrtc
/data/adb/box/sing-box/config-wg-obfs.json Профиль WG + wg-obfuscator
/data/adb/box/sing-box/config-hy2-wg.json Комбо HY2 + WG (создаётся вручную)
/data/adb/box/sing-box/config.json Активный конфиг (или через name_sing_config)
/data/adb/box/sidecar/ trusttunnel.toml, olcrtc.yaml, wg-obfuscator.conf
/data/adb/box/bin/ Бинарники (sing-box, sidecar)
/data/adb/box/run/ Логи, PID, UID-списки
/data/adb/box/scripts/box.stealth Stealth iptables
/data/adb/box/scripts/box.sidecar Sidecar lifecycle
/data/adb/box/scripts/box.profile Переключение TT / olcrtc / wg-obfs
/data/adb/box/scripts/box.service Старт/стоп ядра
/data/adb/box/scripts/box.iptables TPROXY правила

Управление сервисом

Старт / стоп

# Запуск
su -c /data/adb/box/scripts/box.service start
su -c /data/adb/box/scripts/box.iptables enable

# Остановка
su -c /data/adb/box/scripts/box.iptables disable
su -c /data/adb/box/scripts/box.service stop

# Перезапуск
su -c /data/adb/box/scripts/box.service restart

Полезные команды

su -c /data/adb/box/scripts/box.service status
su -c /data/adb/box/scripts/box.stealth status
su -c /data/adb/box/scripts/box.sidecar status

su -c /data/adb/box/scripts/box.tool upkernel      # обновить sing-box
su -c /data/adb/box/scripts/box.tool upsidercar    # olcrtc + trusttunnel
su -c /data/adb/box/scripts/box.tool check          # проверить конфиг
su -c /data/adb/box/scripts/box.tool reload        # reload (если API включён)

su -c /data/adb/box/scripts/box.tool
# check | geosub | geox | subs | upkernel | upsidercar | upyq | upcurl | reload | all

su -c /data/adb/box/scripts/box.iptables
# enable | disable | renew

CLI-шорткат

sbfr start    # start + iptables
sbfr stop     # disable + stop
sbfr s status # статус сервиса
sbfr i enable # iptables
sbfr p use trusttunnel  # профиль TT
sbfr p use olcrtc       # профиль olcrtc
sbfr p use wg-obfs      # WG + wg-obfuscator
sbfr p list | status

Тест против RKNHardering

  1. com.notcvnt.rknharderingstealth.list.cfg
  2. Тот же package → package.list.cfg blacklist (checker вне прокси)
  3. stealth_disable_api="true", network_mode="tproxy"
  4. Запустить PronBox → запустить RKNHardering

Ожидаемый результат: модули Bypass Check (Clash API, localhost proxy) и Indirect Signs (TUN) не должны давать hard detect. GeoIP/hosting и root-следы могут остаться.


Рекомендуемый стек

Magisk / KernelSU / APatch
└── PronBox (НИИ «ТехноПрон»)
    ├── network_mode=tproxy, bin_name=sing-box
    ├── stealth.list.cfg → банки, маркетплейсы
    ├── package.list.cfg → whitelist нужных app ИЛИ blacklist checker'ов
    └── sidecar → TrustTunnel / olcrtc / wg-obfuscator

Обновление модуля

Установите новый ZIP поверх старого через Magisk Manager. При запросе restore settings.ini - Vol+ сохранит ваши настройки stealth/sidecar.


Удаление

  1. Отключите модуль в Magisk / KernelSU / APatch Manager.
  2. Очистите данные:
su -c rm -rf /data/adb/box
su -c rm -rf /data/adb/service.d/box_service.sh
su -c rm -rf /data/adb/modules/box_for_root

Ограничения и disclaimer

  • Модуль требует root. Это само по себе детектируется native-проверками.
  • Stealth не маскирует Java API (NetworkCapabilities) - для этого нужен kernel hook (VPN Hide kmod), мы сознательно обходимся без LSPosed.
  • olcrtc на Android требует ручной сборки бинарника.
  • TrustTunnel в sing-box upstream пока через sidecar SOCKS, не нативный outbound.
  • Автор не несёт ответственности за блокировки аккаунтов, некорректные конфиги и петли маршрутизации.

Credits

License

GPL-3.0 - см. LICENSE.

Description
Форк Box For Root
Readme GPL-3.0 18 MiB
2026-08-13 11:54:13 +03:00
Languages
Shell 90.2%
Python 9.2%
PowerShell 0.6%