02.08.2013

Безопасность мобильного интернета изнутри и снаружи

image

В этой статье автор расскажет о безопасности мобильного интернета, о возможных атаках и недалеком будущем индустрии.

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

С развитием мобильных сетей развивается и мобильный интернет. Все привыкли к обычному интернету: витая пара, 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, индивидуальный номер абонента) — для идентификации абонента;
  • ключи , хранящая ся на SIM- карте – для аутентификации абонента;
  • проверка доступных абоненту сервисов (Internet, MMS, WAP) по записи в базе абонентов.

Может также проверяться 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, а посему все вышеописанное актуально и будет актуальным в обозримом будущем.


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

или введите имя

CAPTCHA
ScayderX
02-08-2013 15:41:27
Интересно. "создатель темы". За сколько по времени ВЫ все это проделали. подскажиха)))
0 |
чепчерицо
05-08-2013 09:42:01
Оригинал. Хабр, 1 августа.
0 |
чепчерицо
05-08-2013 09:42:47
Ай-яй-яй, а теги-то криво обрабатываются на секлабе) http://habrahabr.ru/company/pt/blog/188574/
0 |