Смартфон на Android лежит на тёмном антистатическом коврике, экран отображает перехваченные пакеты с утечками DNS, выделенными красным. Руки в синих нитриловых перчатках подключают кабель отладки.


29 из 281 протестированного бесплатного VPN-приложения для Android сливают пользовательский трафик мимо зашифрованного туннеля - включая DNS-запросы, по которым виден каждый посещённый сайт. Пять приложений тянут конфигурационный файл открытым текстом, и атакующий в той же Wi-Fi-сети может подменить VPN-сервер на свой и забрать весь трафик жертвы. Это данные исследования MVPNalyzer (University of Michigan, University of New Mexico, IIT Delhi), представленного на NDSS в феврале 2026 года. Суммарное число установок приложений, в которых нашлась хотя бы одна проблема, превышает 2,4 миллиарда. Ниже - разбор конкретных механик утечек, маппинг на MITRE ATT&CK и методика, которую можно воспроизвести на своём стенде за вечер.

Что показало исследование MVPNalyzer: масштаб бесплатного VPN и риски безопасности​

MVPNalyzer - первый фреймворк для систематической и воспроизводимой проверки безопасности бесплатных VPN для Android. По данным The Hacker News, до него та же группа создала VPNalyzer для десктопных VPN-клиентов; мобильная версия расширяет методологию на Android-приложения из Google Play. Исходный код и документацию обещают опубликовать к 15 августа 2026 года - посмотрим, сдержат ли слово. Подробнее - в нашем материале про пентест мобильных приложений.

Результаты по 281 приложению с маппингом на MITRE ATT&CK:

Категория проблемыКол-во приложенийОценка установокТехника MITRE ATT&CK
Утечка трафика за пределы туннеля29-Условно T1048.003 (Exfiltration Over Unencrypted Non-C2 Protocol; условный маппинг - техника описывает намеренную эксфильтрацию, не конфигурационную ошибку)
DNS-утечки24~360 млнT1040, Network Sniffing
Передача данных открытым текстом61-T1048.003, Exfiltration
Конфигурация без шифрования (tunnel hijacking)5-T1557, Adversary-in-the-Middle
Отправка Advertising ID76-Иллюстративно T1119, Automated Collection (ATT&CK описывает поведение атакующего, не SDK; маппинг по аналогии паттерна)
Контакт с рекламными и трекинговыми серверами246-Иллюстративно T1020, Automated Exfiltration (ATT&CK описывает поведение атакующего, не SDK; маппинг по аналогии паттерна)
Отсутствие обфускации VPN-трафика169-- (отсутствие T1001 Data Obfuscation)

MVPNalyzer - не единичное исследование. В июне 2024 года Top10VPN протестировал 100 самых популярных бесплатных VPN для Android: 88% допускают утечки данных, 71% передают данные третьим лицам - включая трекеры Facebook и "Яндекса". В августе 2025 года Citizen Lab (University of Toronto) и Arizona State University обнаружили, что несколько популярных Android VPN-приложений с суммарным числом загрузок более 700 миллионов были тайно связаны между собой, использовали захардкоженные пароли и скрытно собирали геолокацию. В октябре 2025 года Zimperium сообщила, что три из ~800 протестированных бесплатных VPN до сих пор тащат версию OpenSSL с Heartbleed - багом, исправленным в 2014 году. Одиннадцать лет прошло.

Паттерн повторяется год за годом: бесплатные VPN-приложения обещают анонимность мобильного трафика, а по факту работают как инструменты массового сбора данных VPN провайдерами.

Утечки трафика VPN Android: от DNS до полного перехвата туннеля​

1784051216043.webp

Утечка DNS и незашифрованный трафик мобильного VPN​

Из 29 приложений с утечками 24 пропускали DNS-трафик мимо зашифрованного туннеля. DNS-запрос - это, по сути, запись о каждом посещённом сайте: обращение к домену проходит через резолвер, и если запрос уходит не через VPN, его видит оператор сети, провайдер или любой наблюдатель с Network Sniffing (T1040). Для пользователя в стране с ограниченным доступом к интернету это значит: VPN скрывает содержимое страниц, но полностью раскрывает, какие сайты были запрошены. Красивый фантик без конфеты.

Шесть приложений допускали утечку полного трафика просмотра - не только DNS, но и HTTP-запросы уходили в обход туннеля. Четыре приложения формально поднимали VPN-соединение, но "туннель" работал без шифрования вообще: данные проходили через VPN-интерфейс открытым текстом. То есть приложение показывает значок замка, а трафик летит в чём мать родила.

61 приложение из 281 отправляло данные plain text - без шифрования, доступные для чтения каждому, кто перехватывает трафик в той же сети. С точки зрения наблюдателя это соответствует паттерну T1048.003 (Exfiltration Over Unencrypted Non-C2 Protocol), хотя в классическом ATT&CK эта техника описывает намеренную эксфильтрацию атакующим, а не конфигурационную ошибку приложения.

Отдельная история: 169 приложений из 281 не маскировали VPN-трафик. Сетевой оператор или государственный DPI-фильтр распознает и заблокирует такой трафик стандартными средствами. При этом почти две трети этих приложений заявляли в описании, что умеют обходить блокировки и открывать заблокированный контент. Заявлено одно - реально другое.

Tunnel hijacking - перехват VPN через открытую конфигурацию​

Самая жирная находка MVPNalyzer - пять приложений, которые тянули конфигурационный файл по HTTP. Этот файл определяет, к какому серверу подключается VPN-клиент. Если он передаётся открытым текстом, атакующий в той же сети (например, оператор публичной Wi-Fi точки) может перезаписать его на лету и направить клиент на свой сервер.

Пользователь подключается, видит привычный экран "Connected" и маршрутизирует весь трафик через атакующего. Это Adversary-in-the-Middle (T1557) - реализованный не через сложную эксплуатацию, а через элементарную архитектурную ошибку. По данным The Hacker News, исследователи воспроизвели атаку на контролируемых устройствах и подтвердили работоспособность.

Уязвимые приложения с идентификаторами пакетов в Google Play:
  • BambooVPN: Turbo Fast VPN - free.vpn.unblock.proxy.bamboovpn
  • VPN Pro - com.nebulatech.voocvpnpro
  • Free VPN - com.appoxide.freevpn
  • Hexa VPN - com.secure.vpn.proxy
  • 101 VPN - com.shwe.vpn101
Команда MVPNalyzer уведомила всех пятерых разработчиков в приоритетном порядке. BambooVPN и VPN Pro ответили, оба пообещали перевести загрузку конфигурации на HTTPS с валидацией сертификата. Остальные три не отреагировали. При повторном тестировании VPN Pro и Hexa VPN исправили проблему, а BambooVPN, Free VPN и 101 VPN по-прежнему уязвимы. Все пять до сих пор доступны в Google Play.

Трекинг пользователей VPN приложения вместо защиты приватности​

1784051262169.webp

Advertising ID, fingerprinting и бесплатный VPN как шпионаж за данными​

VPN ставят, чтобы избежать слежки. MVPNalyzer показал, что ожидание часто работает наоборот: 76 из 281 приложения отправляли Advertising ID устройства - уникальный идентификатор, по которому рекламные сети привязывают активность пользователя между приложениями. 246 приложений из 281 - более 80% - связывались с известными рекламными и трекинговыми серверами.

Многие приложения передавали модель телефона, версию ОС, размер экрана. По отдельности - безобидные метаданные, но в совокупности они формируют fingerprint, достаточный для идентификации конкретного устройства. Одно приложение отправляло точные GPS-координаты телефона. VPN для приватности, ага.

В терминах MITRE ATT&CK это условно соответствует паттернам Automated Collection (T1119) и Automated Exfiltration (T1020), хотя обе техники описывают post-exploitation на скомпрометированном хосте, а не штатное поведение SDK. ATT&CK Mobile не покрывает трекинг SDK напрямую; маппинг приведён по аналогии поведения. Приложение, заявленное как средство анализа приватности VPN приложений, фактически работает как шпионский агент.

Бизнес-модель бесплатного VPN: данные как валюта​

По классификации MITRE ATT&CK бесплатные VPN-приложения с трекингом реализуют паттерн Masquerading (T1036, defense-evasion): вредоносная функциональность скрывается за легитимным назначением. Пользователь выполняет User Execution (T1204) - добровольно устанавливает и запускает приложение, считая его инструментом защиты. VPN-соединение работает как Proxy (T1090): весь трафик устройства маршрутизируется через инфраструктуру разработчика.

Если у VPN-приложения нет понятного источника дохода - подписки, грантов, корпоративных клиентов - с высокой вероятностью пользователь платит своими данными. Тезис не новый: утечка 1,2 ТБ данных от семи VPN-сервисов в 2020 году (до 20 миллионов пользователей) и обнаружение незащищённой базы SuperVPN на 133 ГБ с 360 миллионами записей в 2023 году - подтверждение того, что сбор данных VPN провайдерами ведётся системно.

С учётом ФЗ-152 "О персональных данных", если приложения собирают данные российских пользователей (а российские топы магазинов, по данным издания "Бумага", почти целиком состоят из VPN-приложений), оператор обязан уведомить Роскомнадзор перед началом обработки (ст. 22). Маловероятно, что приложения с описанными нарушениями выполняют это требование.

Android VPN уязвимости в конфигурациях OpenVPN: Sweet32 и cipher none​

Помимо тестов "живого" трафика, исследователи MVPNalyzer отдельно разобрали конфигурационные файлы OpenVPN, встроенные в 108 приложений. Результат: только одно приложение из 108 следовало всем проверенным best practices. Одно из ста восьми.

Основные проблемы:
  • 89% использовали один метод аутентификации - только пароль или только сертификат, без комбинации. Компрометация одного фактора открывает доступ к туннелю.
  • Почти каждое пятое приложение использовало слабое шифрование: Blowfish и 3DES - оба с 64-битным размером блока, уязвимы к атаке Sweet32 при длительных сессиях.
  • Несколько приложений устанавливали cipher none - директиву OpenVPN, которая полностью отключает шифрование внутри туннеля. VPN без шифрования - это просто прокси с красивой иконкой.
Слабость Blowfish и 3DES задокументирована в двух CVE:

CVE-2016-6329: конкретизация Sweet32 (CVE-2016-2183) для OpenVPN с Blowfish в CBC - при использовании 64-битного блочного шифра OpenVPN уязвим к birthday attack против долгоживущей зашифрованной сессии. Атака продемонстрирована на HTTP-трафике через OpenVPN с Blowfish в режиме CBC. CVSS v3 в NVD не рассчитан (legacy CVE). CWE-200 (Information Exposure), CWE-310 (Cryptographic Issues; в актуальной версии MITRE помечена как deprecated в пользу CWE-327 - Use of a Broken or Risky Cryptographic Algorithm).

CVE-2016-2183: DES и Triple DES в TLS, SSH и IPSec имеют birthday bound порядка четырёх миллиардов блоков. CVSS 7.5 (HIGH), вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - атака выполняется по сети, не требует ни привилегий, ни действий пользователя, влияет на конфиденциальность. CWE-200 (Information Exposure).

По классификации OWASP использование устаревших шифров - это A02:2021 Cryptographic Failures: сбои криптографии (или её полное отсутствие), которые ведут к раскрытию данных. Оба CVE датируются 2016 годом, патчи доступны девять лет, а приложения в Google Play продолжают поставлять уязвимые шифры. По данным OTX (AlienVault), CVE-2016-2183 до сих пор встречается в пульсах threat intelligence, включая мониторинг активной эксплуатации в сетях образовательных и государственных учреждений.

Проверка утечек DNS VPN: практическая методика для инженера​

1784051294504.webp

Требования к окружению​

  • Устройство: рутованный Android-телефон или эмулятор (Genymotion, Android Studio AVD с API 28+)
  • RAM хоста: минимум 8 ГБ для эмулятора + инструменты анализа, 16 ГБ рекомендуется
  • ОС хоста: GNU/Linux (Kali, Ubuntu 22.04+) или macOS
  • Инструменты: tcpdump (на устройстве), Wireshark 4.x (на хосте), jadx 1.5+ (декомпиляция APK), adb
  • Сеть: Wi-Fi, где хост и устройство в одном сегменте, или USB-tethering
  • Режим: online (для тестирования реального поведения VPN-приложения)

Анализ трафика через tcpdump и Wireshark​

Задача - определить, какой трафик уходит с устройства мимо VPN-туннеля и что передаётся открытым текстом. На рутованном устройстве или эмуляторе запускаем tcpdump через adb:
Bash:
# Требуется root + статический бинарник tcpdump для ARM/ARM64
# (например, из PCAPdroid, androidtcpdump.com или magisk-модуля)
# Альтернатива без root: PCAPdroid или tcpdump на хосте через USB tethering
# Захватываем трафик на wlan0 - именно этот интерфейс показывает, что реально уходит в сеть
# Вариант 1: стриминг на хост (не требует завершения процесса вручную):
adb shell su -c 'tcpdump -i wlan0 -U -w -' > vpn_wlan0.pcap
# (Ctrl+C для остановки; файл сохраняется на хосте)

# Вариант 2: запись на устройство через интерактивный shell:
# adb shell -> su -> nohup tcpdump -i wlan0 -w /sdcard/vpn_wlan0.pcap &
# Параллельно можно захватить tun0 для сравнения:
# nohup tcpdump -i tun0 -w /sdcard/vpn_tun0.pcap &
# Запускаем VPN-приложение, ждём подключения, открываем 5-10 сайтов
# Через 2-3 минуты завершаем:
# killall tcpdump
# exit; exit
# adb pull /sdcard/vpn_wlan0.pcap
Открываем pcap в Wireshark и проверяем два паттерна. Для обнаружения DNS-утечек в дампе wlan0 - фильтр dns && udp.dstport==53 && !ip.dst==<VPN_SERVER_IP>: если в wlan0-дампе видны plaintext DNS-запросы (порт 53), не адресованные VPN-серверу, приложение не перенаправляет DNS. Для выявления незашифрованного трафика - фильтр http в дампе wlan0: если после подключения VPN видны HTTP-запросы с читаемыми заголовками Host, User-Agent, Cookie - данные идут в обход туннеля или туннель не шифрует.

Ограничения: при захвате на wlan0 видно только то, что реально уходит в сеть (включая утечки), но не содержимое VPN-туннеля. Захват на tun0 показывает расшифрованный трафик внутри туннеля. Сравнение двух дампов даёт полную картину. Если приложение использует нестандартный VPN API или split tunneling, часть данных может не попасть в дамп. Для полной картины нужен MITM-стенд с mitmproxy или Burp Suite, но это уже требует обхода SSL pinning через Frida - отдельная задача, выходящая за рамки базовой проверки.

Декомпиляция APK: поиск трекеров и захардкоженных эндпоинтов​

Статический анализ APK через jadx выявляет встроенные рекламные SDK, захардкоженные адреса серверов и ключи. Забираем APK с устройства через adb или скачиваем через APKMirror:
Bash:
jadx -d output_dir target_vpn.apk
grep -r "facebook.com\|analytics\|tracker\|admob\|advertising" output_dir/ --include="*.java" -l
В декомпилированном коде бесплатных VPN-приложений регулярно обнаруживаются эндпоинты Facebook SDK, Google Ads, AdMob, а также захардкоженные API-ключи и адреса серверов, которых нет в политике конфиденциальности. Отдельно стоит проверить встроенную OpenVPN-конфигурацию. В APK она редко лежит как .ovpn/.conf - чаще в assets/, res/raw/ или в строковых ресурсах. Поэтому искать нужно по всему output_dir без ограничения по расширениям: grep -rE "cipher (BF|DES|none|AES)|auth SHA|proto (udp|tcp)|^remote " output_dir/. Значения cipher BF-CBC, cipher DES-CBC3 или cipher none - прямые красные флаги.

Ограничения: jadx не всегда корректно обрабатывает обфусцированный код (ProGuard, R8) - имена классов и методов превращаются в нечитаемые a.b.c.d. Но строковые константы (URL, ключи, домены) обычно сохраняются. Для обфусцированных приложений эффективнее динамический анализ через Frida с перехватом сетевых вызовов в рантайме.

Чеклист аудита мобильной безопасности VPN приложения​

Готовый список для передачи команде или включения в отчёт по аудиту мобильных приложений:
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Google на запрос The Hacker News о результатах MVPNalyzer указала на свои enforcement-политики и заявила, что "серьёзно относится к претензиям по безопасности и приватности". Google подчеркнула, что значок "Verified" означает прохождение Mobile Application Security Assessment через лабораторию App Defense Alliance - ту самую проверку, которая, как показывает исследование, не обнаруживает ни DNS-утечки, ни слабые шифры, ни трекинговые SDK.

Тут проходит граница между декларациями платформы и инженерной реальностью. "Verified" badge в Google Play для VPN создаёт ощущение проверенной безопасности, но подтверждает лишь прохождение формализованного набора тестов. Эти тесты не включают анализ шифров в OpenVPN-конфигурации, контроль за перехватом DNS или проверку трекинговых SDK. Это не баг - это дизайн: автоматизированный пайплайн верификации не в состоянии поймать архитектурные решения разработчика, которые превращают приложение из средства защиты в средство слежки.

Для инженера вывод прямой: оценку безопасности VPN нельзя делегировать магазину приложений, независимо от количества значков. Единственная проверка, которая работает, - собственный анализ трафика на контролируемом устройстве. Это занимает два-три часа на одно приложение, не десятки тысяч долларов как независимый аудит. Четыре независимых исследования за два года - MVPNalyzer, Top10VPN, Citizen Lab, Zimperium - рисуют одну картину: бесплатные VPN массово совмещают обещание приватности с технически слабой реализацией и активным сбором данных, и ни один автоматизированный гейткипер этого не останавливает. Пока методологии вроде MVPNalyzer не станут обязательной частью проверки при публикации в магазине, каждое установленное бесплатное VPN-приложение - это акт доверия, в котором пользователь проигрывает чаще, чем выигрывает. Проверьте свой VPN по чеклисту из раздела выше - хотя бы пункты 1, 3 и 4. Если нашли DNS-утечку или cipher BF-CBC - у вас та же проблема, что и у 2,4 миллиарда установок.
 
Последнее редактирование модератором:
  • Нравится
Реакции: delifer
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab