DPI мобильных операторов: от бесплатного интернета до раскрытия номера и местоположения

DPI мобильных операторов: от бесплатного интернета до раскрытия номера и местоположения

habrahabr.ru

Мобильные операторы используют и другие возможности DPI, например, ускорение TCP и HTTP-трафика (TCP PEP, Performance-enhancing Proxy), для ускорения интернета в мобильных сетях и идентификации пользователей веб-сайтами. Если попытаться зайти в личный кабинет оператора с телефона, на многих операторах он откроется сразу, без необходимости ввода логина и пароля. Или, что можно было встретить лет 5 назад, простой заход на подозрительный веб-сайт или клик по рекламному баннеру из Android-игры оборачивался автоматической подпиской на платную услугу, о чем можно было узнать из СМС-сообщения.

Как это работает

Почему так получилось? По всей видимости, при составлении списка забыли привязать конкретные домены к конкретным IP-адресам или диапазонам, и проверка открытия сайта из листа выполняется только сравнением HTTP-заголовка Host.

Зачастую, доступ к внутренним сайтам не тарифицируется операторами, что позволяет получить бесплатный интернет простой подменой заголовка Host HTTP-запроса.

Особенные хосты
  • welcome.megafonnw.ru добавляет заголовок X-MegaFon-IMSI с идентификатором SIM-карты (IMSI)
  • wap.megafon.ru добавляет X-Megafon-IMEISV с идентификатором телефона (IMEI)
  • id.megafon.ru раскрывает номера вышек, к которым подключен телефон в данный момент, в заголовках X-Megafon-TAC и X-Megafon-ECI
  • Сайт конкретного региона (например, szfwp.megafon.ru) добавляет заголовок X-3GPP-USER-LOCATION-INFO
  • login.tele2.ru
  • market.tele2.ru
  • oplata.tele2.ru
  • play.tele2.ru
  • wap.tele2.ru
  • block.tele2.ru

* books.mts.ru:

* pda.mts.ru:

X-SGSN-IP: 193.27.231.49

* h2o.mts.ru, interceptor.mts.ru, internet.mts.ru:

Особенности обработки пакетов

Прокси буферизирует или не пропускает некоторые запросы, пока не дождется корректного ответа, и может разбивать большие пакеты на несколько маленьких. Ответ на GET-запрос придет только после того, как сервер начнет пересылку тела ответа. Ответ не дойдет до клиента, если сервер отправил только заголовки, без тела.

Если клиент отправил и HTTP-заголовки GET-запроса, и данные в одном пакете, они разобьются на два пакета прокси-сервером:

DPI Билайна анализирует заголовки, сохраняет состояние HTTP-потока и замедляет или ограничивает передачу данных, если начинается нетипичная для HTTP процедура отправки, например, если клиент начинает пересылать большие потоки данных в теле GET-запроса (то, что после двойного \r\n, как если бы это был POST-запрос), или если сервер отправляет данных больше, чем указано в заголовке Content-Length. Требуется ответ на HTTP-запрос, иначе DPI не разрешит соединение.

У МТС не работает отправка больших данных в заголовках (видимо, производится проверка на длину заголовка и его значения).

Для МТС, чтобы отслеживание новых HTTP-запросов в пределах keep-alive сессии перестало работать, нужно отправить с сервера заголовки HTTP-ответа и тело HTTP-ответа отдельными пакетами, без указания Content-Length, и с заголовком Content-Type: application/octet-stream: в первом TCP-пакете передаются все заголовки, включая \r\n\r\n, а вторым и последующими пакетами — сами данные.

Обход блокировки интернета

HTTP-запросы на любой IP-адрес и порт 80 с заголовком Host, указывающим на служебный домен, не расходуют трафик из пакета и работают даже при отрицательном балансе.

Я сделал патч к прокси-серверу ShadowSocks 2.5.6, который добавляет эти HTTP-заголовки в момент установки соединения:

Оповещение провайдеровВывод

Веб-сайт злоумышленника, содержащий специальным образом сконструированынный запрос, позволит раскрыть ваш номер телефона на МТС.

Также, не нужно забывать про уязвимости веб-сервисов мобильных операторов, не связанных с DPI: с Билайн любая программа может получить доступ в ваш личный кабинет, узнать оттуда ваш номер телефона, баланс, тариф, подключенные опции, и может управлять ими, а с МТС — узнать ваш номер телефона и баланс.

Бонус

Report Page