БДИ   Web   ВСТ   Компьютерные сети   Телекоммуникации   Телематика  

Сетевые протоколы

  1. Уровни протоколов
  2. Протоколы локальных сетей
  3. Свойства протоколов локальной сети
  4. Понятие протокола Интернет
  5. Краткое описание протоколов Интернет
  6. Языки разметки WEB-страниц
  7. Технологии Java, Net.Framework, Mono
  8. Облачные вычисления и сервисы
  9. Пожиратель движков Google App Engine
  10. Обзор пиринговых сетей
  11. Протоколы пиринговых сетей
  12. Что такое Direct Connect?
  13. Сравнение клиентов Direct Connect
  14. Mesh-сети
  15. Протокол CJDNS
  16. Протокол Diameter
  17. Протокол SS-7 / ОКС-7
  18. Протокол GTP
  19. Протоколы мобильной связи 1G...6G

Протокол GTP

С развитием мобильных сетей развивается и мобильный интернет. Все привыкли к обычному интернету: витая пара, Ethernet, TCP/IP. А что же скрывает в себе интернет мобильный? Попробуем выяснить! В нашем исследовании мы коснемся общих принципов работы мобильного интернета, рассмотрим поближе GPRS Tunneling Protocol, поговорим о GRX-сети и обсудим некоторые практические подходы к безопасности мобильной пакетной сети.

Как каждый из нас подключается к мобильному интернету? В принципе, необходимо знать только три параметра: APN, логин и пароль. APN — это точка доступа, через которую абонент может подключиться к необходимой ему услуге (WAP, MMS, Internet); у наших операторов она обычно выглядит как internet.<operator-name>.ru. Логин и пароль обычно простые: internet — internet или вроде того.

Теперь, когда мы знаем необходимые параметры, мы можем подключаться к мобильному интернету! Как же происходит эта загадочная процедура? Происходит она в два этапа:

  1. GPRS Attach,
  2. PDP Context Activation.

Рассмотрим подробнее каждый из них.

GPRS Attach


В процедуре GPRS Attach телефон начинает «общаться» с пакетной сетью оператора. Происходит аутентификация и авторизация пользовательского оборудования по следующим параметрам:

IMSI (International Mobile Subscriber Identity, индивидуальный номер абонента) — для идентификации .
Может также проверяться IMEI (International Mobile Equipment Identity — международный идентификатор мобильного оборудования). Этот идентификатор может использоваться для проверки по спискам краденого оборудования, и если конкретный IMEI находится в списке украденных, то в доступе к сети может быть отказано, либо даже сообщено «куда следует» :)

После успешного завершения процедуры GPRS Attach начинается процедура PDP (Packet Data Protocol) Context Activation. Чтобы разобраться в этой процедуре, отвлечемся и определим некоторые понятия.
SGSN (Serving GPRS Support Node, узел обслуживания абонентов GPRS) — устройство, реализующее основные функции обработки пакетных данных в мобильной сети.

GGSN (GPRS Gateway Service Node, шлюзовой узел GPRS) — устройство, обеспечивающее передачу данных из сети оператора во внешние сети (например, в интернет). По сути может быть обычным маршрутизатором с поддержкой некоторых специфических функций.

GTP (GPRS Tunneling Protocol) — стек протоколов, используемый в GPRS-, UMTS- и LTE-сетях.
Итак, PDP Context Activation (схема сильно упрощена).



Что же происходит при реализации этой схемы?

  1. Телефон отправляет запрос активации контекста на SGSN, в котором, в числе прочего, присутствуют логин, пароль и APN.
  2. SGSN, получив APN, пытается разрешить его на внутреннем DNS-сервере. Сервер разрешает предоставленный APN и возвращает адрес отвечающего за данный APN GGSN.
  3. По этому адресу SGSN отсылает запрос на создание PDP-контекста.
  4. GGSN проверяет на RADIUS-сервере предоставленные логин и пароль.
  5. Затем получает IP-адрес для нашего телефона.
  6. И всю необходимую для активации PDP-контекста информацию передает обратно на SGSN.
  7. SGSN завершает процедуру активации, отсылая на телефон данные, необходимые для установления соединения.

По сути процедура PDP Context Activation это создание туннеля между телефоном и шлюзом в операторской сети. И вот мы уже можем заходить на любимые сайты и читать почту.

Роуминг


Немедленно возникает вопрос: как же это все работает в роуминге? Оказывается, что существует специальная сеть: GRX (Global Roaming Exchange) — сеть для обмена пакетными данными роуминговых абонентов мобильных сетей. Через нее и «бегает» весь наш трафик. Примерно вот так:



  1. Успешно доехав в теплые края, мы решили скачать любимый сериал. Включили телефон, начали подключаться к интернету (отправляем логин, пароль, APN).
  2. Зарубежный SGSN пытается разрешить предоставленный нами APN на своем DNS-сервере.
  3. DNS-сервер, не найдя у себя подобных записей, обращается к корневому DNS-серверу, который находится в GRX-сети.
  4. Корневой DNS-сервер направляет запрос к DNS-серверу в сети нашего родного оператора.
  5. Тот в свою очередь отвечает ему адресом нашего GGSN.
  6. Корневой DNS сообщает этот адрес DNS-серверу зарубежного оператора.
  7. Который в свою очередь сообщает этот адрес зарубежному SGSN.
  8. SGSN, зная адрес GGSN, направляет ему запрос на активацию PDP-контекста.
  9. GGSN, если соблюдены все условия (есть деньги на счету, указаны верные логин и пароль и т. д.), присылает подтверждение, SGSN его принимает и пересылает нашему телефону подтверждение на доступ в интернет.

Что же мы видим? Видим мы, что пакеты с нашим любимым сериалом бегут через полмира от нашего оператора к оператору в теплой стране. Бегут они по специальной сети, завернутые в протокол GTP. И все переговоры между спецжелезками операторов ведутся по тому же GTP.

И тут приходит идея: а не попробовать ли нам сообразить нечто подобное в лабораторных условиях? Построить свои SGSN и GGSN. А ну как придем к невероятным открытиям?

SGSN + GGSN

После длительных поисков выяснилось следующее.

Существует ПО специального назначения, реализующее некоторые функции SGSN. Выглядит оно как скрипт под Linux, который способен эмулировать все необходимые процедуры (GPRS Attach и PDP Context Activation) и выдать в итоге готовый интерфейс для выхода в интернет, как будто бы мы воткнули 3G-модем. Узнав об этом, мы немедленно кинулись искать устройство, готовое взвалить на свои плечи функции GGSN. Оказалось, что популярный маршрутизатор Cisco 7200 вполне подходит.

После недолгих манипуляций, настроек и тестов нас ждал успех.



Стенд легко поднимал туннели, через которые был «виден» самый настоящий интернет. Мы тут же принялись смотреть, какие же пакеты ходят между нашими могучими SGSN и GGSN. Похожи ли они на настоящие? С замиранием сердца открываем дамп — и таки да! пакеты как настоящие.



Аналогичные пакеты могут ходить в GRX-сети, и их вполне может подслушать злобный хакер. Что же он там увидит? Попробуем разузнать.

Вопросы безопасности


Протокол GTP бывает нескольких типов: GTP-U используется для непосредственной упаковки и передачи пользовательских данных, GTP-C для управления сессиями (именно с его помощью осуществляется процедура PDP Context Activation и прочие служебные процедуры); существует еще GTP’ (GTP Prime) — он используется для передачи биллинговой информации. GTP не поддерживает аутентификацию пиров и шифрование, работает поверх UDP. Что во всем этом интересного? Интересно тут практически все!

Возьмем GTP-U и посмотрим, как выглядит туннель с пользовательскими данными. Туннели разделены параметром TEID (Tunnel Endpoint Identificator).



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

А вот GTP-C. С удивлением обнаружив отсутствие какой-либо аутентификации или намеков на шифрование передаваемых данных, можно попробовать не только послушать, но и, извините, что-нибудь послать. Например «левые» запросы на установление или разрыв сессии.

Попробуем таким образом наметить векторы возможных атак и рассмотрим их поближе.



Вот, например, атака DNS flood. Злоумышленник отправляет большое количество запросов на разрешение APN нашего оператора. Все эти пакеты будут бомбардировать бедный операторский DNS, который не выдержит накала и вообще откажется передавать адрес GGSN кому-либо, вызывая глобальный DoS для абонентов.



Или злоумышленник начнет отправлять собственноручно сформированные запросы на создание PDP-контекста. GGSN, увидев такой напор, вполне может и задуматься, а то и вовсе зависнуть. Что опять же приведет к отказу в обслуживании абонентов.

А что, если попробовать вместо запросов на создание отправлять запросы на разрыв сессии?

Например, вот так:



Злобный хакер, подставляя адрес зарубежного SGSN, будет отсылать запросы на разрыв соединения. GGSN, подумав, что абонент докачал свой любимый сериал и хочет завершить интернет-сессию, удаляет у себя этот туннель, разрывая соединение.

Набросав несколько векторов, обратим свой взор на реальные объекты, чтобы все это «потрогать». Наберем запрос «GGSN» в shodan. Вот кусок выданных результатов.



Все это смахивает на реальные GGSN, выставленные в интернет.

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



Иногда даже с открытым telnet.



В стандарте нового поколения под кодовым именем LTE все так же используется протокол GTP, а посему все вышеописанное актуально и будет актуальным в обозримом будущем.

На сегодня все. До новых встреч!

Хочу выразить благодарность отделу анализа безопасности сетевых устройств Positive Technologies за помощь в подготовке материала.

Автор: Илья Сафронов, Positive Research.

БДИ   Web   ВСТ   Компьютерные сети   Телекоммуникации   Телематика  

Знаете ли Вы, что спецификация - это документ, описывающий соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы. Спецификации дают возможность создавать логические основы, позволяющие успешно "разделять и властвовать".

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution