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