[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-945":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":10,"pushedAt":10,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":16,"starSnapshotCount":16,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},945,"yourvpndead","loop-uh\u002Fyourvpndead","loop-uh","Детекция и обнаружение айпи у ВПН серверов VLESS\u002Fxray\u002Fsing-box через локальный SOCKS5 уязвимость","",null,"Kotlin",515,16,8,5,0,7.69,false,"main",[],"2026-06-12 02:00:21","# 😎 YourVPNDead (твой ВПН мёртв) — теперь ты знаешь об этом\n\u003Cimg width=\"400\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F21bb2e1e-6669-4dbc-8062-e5eec43003a7\" \u002F>\n\n**Самопроверка на обнаружение VPN\u002Fпрокси на Android**\n\nДемонстрирует, какую информацию о вашем VPN может получить ЛЮБОЕ приложение на устройстве — без root, без специальных разрешений, используя только стандартные API Android. Чтобы обнаружить айпи вашего ВПН требуется меньше 1 секунды.\n\n### Чтобы защититься от этого используйте root модуль [RKNnoVPN](https:\u002F\u002Fgithub.com\u002Fyoutubediscord\u002FRKNnoVPN).\n\n## Зачем это нужно\n\nВ 2024-2026 годах Роскомнадзор и Минцифры активно развивают методы обнаружения VPN на устройствах граждан. Методичка Минцифры описывает проверки, которые могут выполняться приложениями, имеющими доступ к устройству (банковские приложения, приложения госуслуг, маркетплейсы с обязательными SDK).\n\n**Это приложение показывает вам то же самое, что видит потенциальный шпион** — чтобы вы могли защититься.\n\n### Контекст угрозы\n\n- **Яндекс.Метрика** с 2017 года отправляет HTTP-запросы на localhost ([исследование](https:\u002F\u002Flocalmess.github.io\u002F))\n- **Meta Pixel** использует WebRTC STUN для сканирования localhost (SDP Munging)\n- **Минцифры** разработала методику детекции VPN по открытым портам, MTU, DNS, интерфейсам\n- **Роскомнадзор** блокирует VPN-протоколы на уровне ТСПУ (DPI), но детекция на устройстве — следующий этап\n- Все популярные VPN-клиенты (v2rayNG, NekoBox, Hiddify) создают **SOCKS5-прокси без аутентификации** на localhost — через него можно узнать IP вашего VPN-сервера\n\n## Что проверяет приложение\n\n### 1. Прямые признаки (DirectSignsChecker)\n\n| Проверка | API \u002F Метод | Что обнаруживает |\n|----------|------------|-----------------|\n| **TRANSPORT_VPN** | `NetworkCapabilities.hasTransport(TRANSPORT_VPN)` | Системный флаг VPN-транспорта |\n| **IS_VPN** (скрытый) | `caps.toString().contains(\"IS_VPN\")` | Внутренний флаг Android, не в публичном API |\n| **VpnTransportInfo** | `caps.toString().contains(\"VpnTransportInfo\")` | Класс транспорта VPN |\n| **HTTP прокси** | `System.getProperty(\"http.proxyHost\")` | Системный HTTP-прокси |\n| **SOCKS прокси** | `System.getProperty(\"socksProxyHost\")` | Системный SOCKS-прокси |\n| **Известные порты** | Сравнение с базой (1080, 9050, 8080...) | Прокси на стандартных портах |\n| **VPN-приложения** | `PackageManager.getPackageInfo()` | 19 известных VPN-клиентов |\n| **VPN-интерфейсы** | `NetworkInterface.getNetworkInterfaces()` | tun\\d+, tap\\d+, wg\\d+, ppp\\d+, ipsec.* |\n| **Таблица маршрутизации** | `\u002Fproc\u002Fnet\u002Froute` | Default route через нестандартный интерфейс |\n| **Split tunnel** | Сравнение прямого IP и proxy IP | Per-app split bypass |\n\n**Проверяемые VPN-приложения (19 пакетов):**\nv2rayNG, sing-box (SFA), Hiddify, ClashMeta, Shadowsocks, HAPP, XrayNG, NekoBox, ByeDPI, ByeByeDPI, Outline, Psiphon, Lantern, WireGuard, strongSwan, Tor Browser, Orbot и другие.\n\n### 2. Косвенные признаки (IndirectSignsChecker)\n\n| Проверка | API \u002F Метод | Логика детекции |\n|----------|------------|----------------|\n| **NET_CAPABILITY_NOT_VPN** | `caps.hasCapability(NET_CAPABILITY_NOT_VPN)` | Если capability отсутствует — сеть = VPN |\n| **MTU аномалии** | `NetworkInterface.getMTU()` | VPN снижает MTU (1500→1400) из-за инкапсуляции |\n| **DNS в частной подсети** | `LinkProperties.getDnsServers()` | DNS 192.168.x.x\u002F10.x.x.x = возможен VPN-туннель |\n| **dumpsys vpn_management** | `Runtime.exec(\"dumpsys ...\")` | Системная информация о VPN (обычно заблокирована) |\n| **dumpsys VpnService** | `Runtime.exec(\"dumpsys ...\")` | Активные VPN-сервисы |\n\n**MTU — почему это работает:**\n- Стандартный MTU (Ethernet\u002FWiFi): **1500**\n- WireGuard: обычно **1420** (overhead 80 байт)\n- OpenVPN: обычно **1400** (overhead ~100 байт)\n- VLESS\u002FTrojan (xray): **1380-1400** (зависит от транспорта)\n- Если MTU \u003C 1500 на активном интерфейсе — вероятно VPN\n\n### 3. Анализ \u002Fproc\u002Fnet\u002Ftcp (ProcNetScanner)\n\nПарсит `\u002Fproc\u002Fnet\u002Ftcp` и `\u002Fproc\u002Fnet\u002Ftcp6` для обнаружения listening-портов на localhost. **Работает без root** на большинстве Android.\n\n**Идентификация VPN-клиента по паттерну портов:**\n\n| Порт | Клиент |\n|------|--------|\n| 10808 + 10809 + 19085 | v2rayNG \u002F XrayFluent (xray SOCKS + HTTP + Stats API) |\n| 2080 | NekoBox \u002F Throne (sing-box mixed) |\n| 7890 + 7891 + 9090 | Clash \u002F mihomo (HTTP + SOCKS + API) |\n| 3066 + 3067 | Karing |\n| 19090 | sing-box Clash API (**утечка IP серверов через \u002Fconnections!**) |\n\n### 4. Bypass-проверки\n\n#### 4.1 Сканер портов (PortScanner)\n\nСканирует **127.0.0.1** и **::1** (IPv6 localhost). Некоторые VPN-клиенты слушают только на IPv6.\n\n- **Быстрый скан**: 40+ известных портов VPN-клиентов\n- **Полный скан**: 1-65535, 32 параллельных корутины\n- **Определение типа**: SOCKS5 (RFC 1928), HTTP CONNECT, gRPC (HTTP\u002F2)\n\nИзвестные порты включают: xray (10808-10810), sing-box (2080-2081, 3066-3067), mihomo (7890-7893), API (10085, 19085, 9090), порты из методички Минцифры (9000, 5555, 9050, 3128, 8080), трекинг Яндекс.Метрики (29009-29010, 30102-30103), Meta Pixel (12387-12591).\n\n#### 4.2 SOCKS5 анализ (Socks5Probe + AuthProbe)\n\n- Хендшейк RFC 1928: `\\x05\\x01\\x00` → ожидание `\\x05\\x00` (noauth) или `\\x05\\x02` (password)\n- HTTP CONNECT проба\n- gRPC детекция (HTTP\u002F2 preface + SETTINGS frame)\n- **Брутфорс** распространённых паролей (admin\u002Fadmin, test\u002Ftest, proxy\u002Fproxy...)\n- **UDP ASSOCIATE** bypass тест (RFC 1928 Section 7 — UDP без per-packet auth)\n- **Демонстрация невозможности перехвата** — raw socket заблокирован без root\n\n#### 4.3 Clash REST API (ClashAPIProbe)\n\nsing-box и mihomo предоставляют Clash API на localhost (9090\u002F19090) **без аутентификации**.\n\n- `GET \u002Fconnections` — возвращает **ВСЕ** активные соединения включая `destinationIP`\n- `GET \u002Fproxies` — список прокси-серверов\n- `GET \u002Fconfigs` — текущая конфигурация\n\n**Это отдельная уязвимость от SOCKS5** — даже если SOCKS5 auth включён, Clash API может быть открыт.\n\n#### 4.4 xray gRPC API (XrayAPIDetector)\n\nxray-core предоставляет gRPC API (HandlerService) на localhost.\n\n- Метод обнаружения: HTTP\u002F2 connection preface + пустой SETTINGS-фрейм\n- Порты: 10085, 19085, 23456, 8001, 62789, 8080, 10086\n- **Позволяет дампить конфигурацию включая ключи шифрования** (Happ уязвимость)\n\n#### 4.5 Получение exit IP (ExitIPResolver)\n\nЧерез уязвимый SOCKS5 (без auth) на localhost:\n\n```\nШпион → localhost:10808 (SOCKS5) → CONNECT api.ipify.org → получает exit IP VPN-сервера\n```\n\nЗатем геолокация IP через ip-api.com: страна, город, ISP, AS, флаг proxy\u002Fhosting.\n\n### 5. Профиль и окружение (ProfileDetector)\n\n- Определение **Work Profile** (Android for Work)\n- Обнаружение **Shelter, Island, Insular, Samsung Knox**\n- **ВАЖНО**: изоляция профиля **НЕ защищает loopback** (127.0.0.1). Приложения из другого профиля могут сканировать порты.\n- Детекция VPN через `TRANSPORT_VPN` + перечисление TUN-интерфейсов\n\n## Уязвимые клиенты\n\n| Клиент | Ядро | Порт | Auth по умолчанию | Статус |\n|--------|------|------|-------------------|--------|\n| **v2rayNG** | xray | 10808 | Нет | **Уязвим** |\n| **NekoBox** | sing-box | 2080 | Нет | **Уязвим** |\n| **Hiddify** | sing-box\u002Fxray | — | Нет | **Уязвим** |\n| **v2RayTun** | xray | — | Нет | **Уязвим** |\n| **Happ** | xray | — | Нет + API | **Критически уязвим — удалите немедленно** |\n| **Karing** | sing-box | 3067 | Нет | **Уязвим** |\n| **Husi** | sing-box | — | **Да** | Защищён (auth включён) |\n| **Clash\u002Fmihomo** | mihomo | отключён | N\u002FA | Безопасен (socks-port выключен) |\n| **Shadowrocket** | — | — | **Да** | Защищён (iOS) |\n| **Throne** | sing-box | — | Нет | **Уязвим** |\n\n## Архитектура\n\n```\nScanOrchestrator (14 фаз)\n├── ProfileDetector          — профиль, изоляция, VPN-статус\n├── ProcNetScanner           — \u002Fproc\u002Fnet\u002Ftcp fingerprinting\n├── DirectSignsChecker       — прямые признаки (6 проверок)\n├── IndirectSignsChecker     — косвенные признаки (5 проверок)\n├── DeviceInfoCollector      — отпечаток устройства\n├── PortScanner              — TCP скан IPv4 + IPv6 localhost\n├── Socks5Probe              — определение типа прокси\n├── XrayAPIDetector          — xray gRPC API\n├── ClashAPIProbe            — Clash REST API\n├── AuthProbe                — auth анализ + brute-force + sniff demo\n├── ExitIPResolver           — exit IP через SOCKS5\n└── GeoLocator               — геолокация IP\n```\n\n**Стек**: Kotlin, Jetpack Compose, Material 3, Coroutines, MVVM (ViewModel + StateFlow)\n\n## Скачать\n\nAPK автоматически публикуется в [Releases](..\u002F..\u002Freleases) после каждого коммита.\n\n## Сборка\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Floop-uh\u002Fyourvpndead.git\ncd yourvpndead\n.\u002Fgradlew assembleDebug\n# APK: app\u002Fbuild\u002Foutputs\u002Fapk\u002Fdebug\u002Fapp-debug.apk\n```\n\nИли откройте в Android Studio и запустите на устройстве.\n\n## Разрешения\n\n| Разрешение | Зачем |\n|-----------|-------|\n| `INTERNET` | Сканирование портов, GeoIP |\n| `ACCESS_NETWORK_STATE` | Детекция VPN, интерфейсы |\n| `QUERY_ALL_PACKAGES` | Обнаружение VPN-приложений (Android 11+) |\n\n**Никакие данные не отправляются на серверы.** Всё сканирование локальное. Отчёт доступен только пользователю.\n\n## Источники\n\n- [Критическая уязвимость VLESS (Habr)](https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F1020080\u002F)\n- [Meta и Яндекс: сканирование localhost (USENIX Security 26)](https:\u002F\u002Flocalmess.github.io\u002F)\n- [CVE-2023-43644 — sing-box SOCKS5 auth bypass (CVSS 9.1)](https:\u002F\u002Fgithub.com\u002Fadvisories\u002FGHSA-r5hm-mp3j-285g)\n- [RFC 1928 — SOCKS Protocol Version 5](https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc1928)\n- [RFC 1929 — SOCKS5 Username\u002FPassword Authentication](https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc1929)\n- [v2rayNG issues: #275, #1911, #3670](https:\u002F\u002Fgithub.com\u002Fnicknameisthekey\u002Frussia-v2ray-custom-routing-list)\n\n## Лицензия\n\nMIT\n","YourVPNDead 是一个用于检测Android设备上VLESS\u002Fxray\u002Fsing-box等类型VPN服务器IP的工具。它通过利用本地SOCKS5代理漏洞，无需root权限或特殊权限，仅使用标准Android API，在不到一秒的时间内即可获取到您的VPN服务器IP信息。该应用展示了任意第三方应用可能获取到的关于您所使用的VPN的信息，从而帮助用户了解潜在的安全风险并采取相应防护措施。适用于关注个人隐私安全、希望评估自己使用的VPN服务安全性以及对抗日益增长的网络监控手段的场景。",2,"2026-05-06 17:29:04","CREATED_QUERY"]