Co-authored-by: Cursor <cursoragent@cursor.com>
PronBox
Форк box_for_magisk - прозрачный прокси для Android (root).
Собрано в стенах НИИ «ТехноПрон».
Работает через Magisk, KernelSU и APatch. Ядро по умолчанию: sing-box. Anti-detection без LSPosed + sidecar: olcrtc / TrustTunnel / wg-obfuscator.
Зачем этот форк
Stock Box for Root хорошо проксирует трафик через TPROXY, но:
- Не поддерживает новые протоколы вроде olcrtc, TrustTunnel и WG-obfuscation «из коробки».
- Легко детектится проверщиками вроде 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
→ sing-box
→ SOCKS 127.0.0.1:10800
→ olcrtc | trusttunnel_client
→ сервер (WebRTC / HTTPS-туннель)
Stealth-слой (параллельно)
Observer app (банк, RKNHardering)
→ connect(127.0.0.1:9090)
→ iptables REJECT (UID из stealth.list.cfg)
→ ECONNREFUSED (порт «закрыт»)
Ядро прокси (root) → loopback доступен, прокси работает
Установка
Из релиза
- Скачайте
pronbox-v*.zipиз Releases. - Magisk / KernelSU / APatch → Modules → Install from storage.
- При установке выберите загрузку sing-box (Vol+).
- Перезагрузите устройство.
Сборка из исходников
Windows / любая ОС (рекомендуется):
python tools/build_zip.py
# → pronbox-v1.13.0.zip
Linux / Git Bash:
sh build.sh
Быстрый старт
Перед правкой конфигов остановите сервис PronBox.
1. Профили TrustTunnel / olcrtc (быстрое переключение)
В модуле лежат два готовых шаблона:
| Профиль | Файл | SOCKS | route.final |
|---|---|---|---|
| TrustTunnel | config.trusttunnel.json |
:10800 |
sidecar-proxy |
| olcrtc | config.olcrtc.json |
:10801 |
olcrtc-proxy |
Подставьте свои пароли/ключи (шаблоны в репозитории scrubbed) или на устройстве:
# клонировать текущий рабочий конфиг в оба профиля
su -c '/data/adb/box/scripts/box.profile seed'
# переключение (меняет name_sing_config + sidecar_* и рестартит сервис)
sbfr p use trusttunnel
sbfr p use olcrtc
sbfr p status
В Magisk/терминале то же самое: su -c '/data/adb/box/scripts/box.profile use olcrtc'.
2. Конфиг sing-box (с нуля)
Скопируйте минимальный шаблон и настройте outbound:
cp /data/adb/box/sing-box/config.stealth.example.json /data/adb/box/sing-box/config.json
# добавьте свой VLESS / другой outbound
3. Observer-приложения (stealth)
Файл /data/adb/box/stealth.list.cfg — приложения, которым скрываем localhost-прокси:
# один package на строку
ru.sberbankmobile
com.idamob.tinkoff.android
ru.rostel
com.notcvnt.rknhardering
4. Blacklist для checker'а
Чтобы RKNHardering не шёл через прокси, добавьте в /data/adb/box/package.list.cfg:
mode:blacklist
com.notcvnt.rknhardering
5. Запуск
su -c /data/adb/box/scripts/box.service start
su -c /data/adb/box/scripts/box.iptables enable
Stealth включается автоматически при stealth_mode="true" (по умолчанию). Вручную:
su -c /data/adb/box/scripts/box.stealth enable
su -c /data/adb/box/scripts/box.stealth status
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" "1080" "10808" "2080")
Что закрывает / что нет
| Закрывает | Не закрывает |
|---|---|
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
Sidecar поднимает локальный SOCKS5; sing-box направляет трафик на него.
TrustTunnel
# Скачать клиент (linux-aarch64/armv7 для Android)
su -c /data/adb/box/scripts/box.tool upsidercar trusttunnel
# Конфиг с endpoint → trusttunnel.toml
cp /data/adb/box/sidecar/trusttunnel.example.toml /data/adb/box/sidecar/trusttunnel.toml
# отредактируйте (экспорт: trusttunnel_endpoint ... --format toml)
settings.ini:
sidecar_enable="true"
sidecar_protocol="trusttunnel"
sidecar_listen_port="10800"
sidecar_outbound_tag="sidecar-proxy"
sidecar_set_final="true"
olcrtc
Официального Android-релиза нет — бинарник собирается вручную:
# https://github.com/openlibrecommunity/olcrtc — mage mobile
# положите бинарник:
# /data/adb/box/bin/olcrtc
chmod 755 /data/adb/box/bin/olcrtc
cp /data/adb/box/sidecar/olcrtc.example.yaml /data/adb/box/sidecar/olcrtc.yaml
# room id + crypto.key (64 hex) — одинаковые на клиенте и сервере
settings.ini:
sidecar_enable="true"
sidecar_protocol="olcrtc"
sidecar_listen_port="10801"
sidecar_outbound_tag="olcrtc-proxy"
Важно: порт в sidecar-конфиге (
socks.port) должен совпадать сsidecar_listen_port(TT:10800, olcrtc:10801). Для olcrtc вolcrtc.yamlзадайте LAN DNS:net.dns: "192.168.0.1:53"(публичные DNS через PreferGo от root часто виснут).
WireGuard Obfuscator (ClusterM/wg-obfuscator)
Это не VPN, а UDP-обфускатор WireGuard (маскировка под STUN и т.п.). Нужен на обоих концах — телефон + VPS с тем же key. Со сторонним WG-сервером без своего obfuscator не заработает.
sing-box WireGuard peer
→ 127.0.0.1:41320
→ wg-obfuscator (client)
→ VPS:public_udp
→ wg-obfuscator (server)
→ WireGuard на VPS
Клиент (Android / PronBox)
su -c /data/adb/box/scripts/box.tool upwgobfs
cp /data/adb/box/sidecar/wg-obfuscator.example.conf /data/adb/box/sidecar/wg-obfuscator.conf
# key=... target=VPS_IP:PORT (порт публичного obfuscator на сервере)
В settings.ini:
wgobfs_enable="true"
wgobfs_listen_port="41320"
wgobfs_patch_config="true"
Или профиль в Manage Profiles: config-wg-obfs.json (авто-старт wgobfs).
Сервер (VPS)
См. box/sidecar/wg-obfuscator.server.example.conf:
- Сдвинуть WireGuard
ListenPort(например на51820). - Поставить
wg-obfuscatorна старый публичный порт (13232). target = 127.0.0.1:51820, тот жеkey,masking = AUTO.
Структура модуля
| Путь | Назначение |
|---|---|
/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.json |
Активный конфиг (или через name_sing_config) |
/data/adb/box/sidecar/ |
Конфиги olcrtc / TrustTunnel |
/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 |
/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 t check # box.tool
Тест против RKNHardering
com.notcvnt.rknhardering→stealth.list.cfg- Тот же package →
package.list.cfgblacklist (checker вне прокси) stealth_disable_api="true",network_mode="tproxy"- Запустить 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.
Удаление
- Отключите модуль в Magisk / KernelSU / APatch Manager.
- Очистите данные:
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
- taamarin/box_for_magisk — базовый модуль
- CHIZI-0618/box4magisk — оригинальный Box for Magisk
- okhsunrog/vpnhide — идея port-hide без LSPosed
- openlibrecommunity/olcrtc — WebRTC-туннель
- TrustTunnel/TrustTunnel — HTTPS VPN-протокол
- xtclovver/RKNHardering — референс методики детекта
License
GPL-3.0 — см. LICENSE.