- Автор темы
- #1
Системы глубокого анализа трафика (Deep Packet Inspection, DPI) — программно-аппаратные комплексы для классификации проходящего интернет-трафика по типу данных (веб-страница, документ, аудио, видео), протоколу (HTTP, BitTorrent, VoIP/SIP) и конкретным программам (Skype, WhatsApp), зачастую обладающие дополнительной функциональностью. Системы DPI распространены и используются по всему миру продвайдерами проводного и беспроводного доступа.
Мобильные операторы используют системы глубокого анализа трафика, прежде всего, для приоритизации разного контента в интернете (QoS), чтобы можно было одновременно скачивать большой файл и смотреть видео на YouTube, и чтобы один пользователь сотовой сети, активно использующий интернет, не создавал проблем другим пользователям. Операторы используют DPI примерно с начала двухтысячных, с приходом UMTS (3G), чтобы более-менее честно разделять беспроводной канал ограниченной пропускной способности.
Мобильные операторы используют и другие возможности DPI, например, ускорение TCP и HTTP-трафика (TCP PEP, Performance-enhancing Proxy), для ускорения интернета в мобильных сетях и идентификации пользователей веб-сайтами. Если попытаться зайти в личный кабинет оператора с телефона, на многих операторах он откроется сразу, без необходимости ввода логина и пароля. Или, что можно было встретить лет 5 назад, простой заход на подозрительный веб-сайт или клик по рекламному баннеру из Android-игры оборачивался автоматической подпиской на платную услугу, о чем можно было узнать из СМС-сообщения.www.beeline.ru, spb.beeline.ru не обрабатываются DPI, к ним разрешены соединения на основе IP-адреса, а не заголовка Host.
МТС
DPI МТС добавляет служебные заголовки к следующим хостам:
* 111.mts.ru:
X-MSISDN-1hIjUVLgCcdQ: 79110981234
SGSN-MCC-MNC: 25001
* books.mts.ru:
X-MSISDN: 79110981234
* pda.mts.ru:
X-AQIC5wM2LY4SfcyEwLC5hS0e02r4: 79110981234
SGSN-MCC-MNC: 25001
X-SGSN-IP: 193.27.231.49
* h2o.mts.ru, interceptor.mts.ru, internet.mts.ru:
X-MSISDN-B0kOoE2clldi: 79110981234
Особенности обработки пакетов
Прокси-сервер Теле2 добавляет следующие заголовки для HTTP/1.0-запроса пользователя, если они отсутствуют:
Accept-Encoding: gzip, deflate
Accept: */*
И следующий заголовок в ответ сервера, если запрос был совершен по HTTP/1.1:
Transfer-Encoding: chunked
Ответ разбиваться на части (chunked-encoding) на стороне прокси.
Прокси буферизирует или не пропускает некоторые запросы, пока не дождется корректного ответа, и может разбивать большие пакеты на несколько маленьких. Ответ на GET-запрос придет только после того, как сервер начнет пересылку тела ответа. Ответ не дойдет до клиента, если сервер отправил только заголовки, без тела.
Данная особенность не распространяется на POST-запросы.
Если клиент отправил и HTTP-заголовки GET-запроса, и данные в одном пакете, они разобьются на два пакета прокси-сервером:
Данная особенность не распространяется на POST-запросы.
DPI Tele2, вероятнее всего, не сохраняет состояние соединений (stateless), и пытается искать HTTP-запрос в каждом новом TCP-сегменте, который отправляет клиент. Кроме того, запрос не обязательно должен начинаться с первого байта сегмента, а может быть разделен переносами строки. Например, следующий запрос является верным с точки зрения DPI:
\r\n
\r\n
\r\n
\r\n
GET / HTTP/1.0\r\n
Host: ya.ru\r\n
\r\n
Эту особенность можно было эксплуатировать через браузер, до тех пор, пока Tele2 не перенастроили DPI, и не ограничили служебные хосты диапазонами IP-адресов. Возможно создать такой POST-запрос типа multipart/form-data (отправка файлов), в теле которого будет заголовок нового HTTP-запроса, который DPI примет за новый запрос в рамках Keep-Alive-сессии и добавит служебные заголовки, и отправить его через браузер.
Пример запроса:
Удаленный сервер получил номер пользователя. По всей видимости, это является серьезной недоработкой ПО Ericsson, и присуще не только Теле2.
DPI Билайна анализирует заголовки, сохраняет состояние HTTP-потока и замедляет или ограничивает передачу данных, если начинается нетипичная для HTTP процедура отправки, например, если клиент начинает пересылать большие потоки данных втеле GET-запроса (то, что после двойного \r\n, как если бы это был POST-запрос), или если сервер отправляет данных больше, чем указано в заголовке Content-Length. Требуется ответ на HTTP-запрос, иначе DPI не разрешит соединение.
У МТС не работает отправка больших данных в заголовках (видимо, производится проверка на длину заголовка и его значения).
Мобильные операторы используют системы глубокого анализа трафика, прежде всего, для приоритизации разного контента в интернете (QoS), чтобы можно было одновременно скачивать большой файл и смотреть видео на YouTube, и чтобы один пользователь сотовой сети, активно использующий интернет, не создавал проблем другим пользователям. Операторы используют DPI примерно с начала двухтысячных, с приходом UMTS (3G), чтобы более-менее честно разделять беспроводной канал ограниченной пропускной способности.
Мобильные операторы используют и другие возможности DPI, например, ускорение TCP и HTTP-трафика (TCP PEP, Performance-enhancing Proxy), для ускорения интернета в мобильных сетях и идентификации пользователей веб-сайтами. Если попытаться зайти в личный кабинет оператора с телефона, на многих операторах он откроется сразу, без необходимости ввода логина и пароля. Или, что можно было встретить лет 5 назад, простой заход на подозрительный веб-сайт или клик по рекламному баннеру из Android-игры оборачивался автоматической подпиской на платную услугу, о чем можно было узнать из СМС-сообщения.www.beeline.ru, spb.beeline.ru не обрабатываются DPI, к ним разрешены соединения на основе IP-адреса, а не заголовка Host.
МТС
DPI МТС добавляет служебные заголовки к следующим хостам:
* 111.mts.ru:
X-MSISDN-1hIjUVLgCcdQ: 79110981234
SGSN-MCC-MNC: 25001
* books.mts.ru:
X-MSISDN: 79110981234
* pda.mts.ru:
X-AQIC5wM2LY4SfcyEwLC5hS0e02r4: 79110981234
SGSN-MCC-MNC: 25001
X-SGSN-IP: 193.27.231.49
* h2o.mts.ru, interceptor.mts.ru, internet.mts.ru:
X-MSISDN-B0kOoE2clldi: 79110981234
Особенности обработки пакетов
Прокси-сервер Теле2 добавляет следующие заголовки для HTTP/1.0-запроса пользователя, если они отсутствуют:
Accept-Encoding: gzip, deflate
Accept: */*
И следующий заголовок в ответ сервера, если запрос был совершен по HTTP/1.1:
Transfer-Encoding: chunked
Ответ разбиваться на части (chunked-encoding) на стороне прокси.
Прокси буферизирует или не пропускает некоторые запросы, пока не дождется корректного ответа, и может разбивать большие пакеты на несколько маленьких. Ответ на GET-запрос придет только после того, как сервер начнет пересылку тела ответа. Ответ не дойдет до клиента, если сервер отправил только заголовки, без тела.
Данная особенность не распространяется на POST-запросы.
Если клиент отправил и HTTP-заголовки GET-запроса, и данные в одном пакете, они разобьются на два пакета прокси-сервером:
Данная особенность не распространяется на POST-запросы.
DPI Tele2, вероятнее всего, не сохраняет состояние соединений (stateless), и пытается искать HTTP-запрос в каждом новом TCP-сегменте, который отправляет клиент. Кроме того, запрос не обязательно должен начинаться с первого байта сегмента, а может быть разделен переносами строки. Например, следующий запрос является верным с точки зрения DPI:
\r\n
\r\n
\r\n
\r\n
GET / HTTP/1.0\r\n
Host: ya.ru\r\n
\r\n
Эту особенность можно было эксплуатировать через браузер, до тех пор, пока Tele2 не перенастроили DPI, и не ограничили служебные хосты диапазонами IP-адресов. Возможно создать такой POST-запрос типа multipart/form-data (отправка файлов), в теле которого будет заголовок нового HTTP-запроса, который DPI примет за новый запрос в рамках Keep-Alive-сессии и добавит служебные заголовки, и отправить его через браузер.
Пример запроса:
Удаленный сервер получил номер пользователя. По всей видимости, это является серьезной недоработкой ПО Ericsson, и присуще не только Теле2.
DPI Билайна анализирует заголовки, сохраняет состояние HTTP-потока и замедляет или ограничивает передачу данных, если начинается нетипичная для HTTP процедура отправки, например, если клиент начинает пересылать большие потоки данных втеле GET-запроса (то, что после двойного \r\n, как если бы это был POST-запрос), или если сервер отправляет данных больше, чем указано в заголовке Content-Length. Требуется ответ на HTTP-запрос, иначе DPI не разрешит соединение.
У МТС не работает отправка больших данных в заголовках (видимо, производится проверка на длину заголовка и его значения).