Привет, Хабр. Сегодня хочу представить переработку части моего диплома по анализу стека протоколов SS7. Считаю, что эта статья будет полезна при Security Testing, так как поможет получить представление о некоторых командах этого стека и возможных векторах атак.

Дисклеймер

Сразу скажу, что я не специалист по сетям SS7 и телекома, не имею большого опыта в Security Testing, поэтому могу ошибаться в интерпретации команд и их использовании. Это только мои выводы после анализа документации протокола.

Вся информация взята из документации и открытых источников. Автор статьи только предоставляет информацию и не несет ответственности за ее использование.

Сокращения

BSC – Base Station Subsystem – контроллеры базовых станций 

MSC – Mobile-services Switching Centre – коммутатор мобильных сетей связи

VLR – Visitor Location Register – гостевой регистр местоположения

HLR – Home location Register – домашний регистр местоположения

GMSC – Gateway Mobile-services Switching Centre – шлюзовой коммутатор мобильной сети

STP – Signal Transfer Point – сигнальный коммутатор

SGSN – Serving GPRS Support Node – узел обслуживания абонентов пакетной сети передачи данных; 

GGSN – Gateway GPRS Support Node – шлюзовой узел поддержки GPRS

GMLC – Gateway Mobile Location Centre – шлюзовой мобильный центр 

GSMSCF - GSM Service Control Function – узел управления услугами GSM

SMS – C – Short Message Service Center – SMS – центр 

IMSI – International Mobile Subscriber ID – международный идентификатор мобильного абонента 

MSSDN – телефонный номер 

MSRN – роуминговый номер мобильной станции

Введение

Стек протоколов SS7 или Signaling System No. 7 (сигнальная система №7) — набор сигнальных телефонных протоколов, используемых для настройки, управления и обмена данными в сетях операторов связи. В Европе систему обычно называют SS7, в России она известна как ОКС-7, а в Северной Америке называют CCS7. Стек протоколов SS7 разрабатывался фирмой AT&T, начиная с 1975 года, и был определен как стандарт Международным союзом электросвязи в 1981 году в виде рекомендаций серии Q.7xx. SS7.

Может показаться, что сеть оператора мобильной связи является закрытой или трудно доступной для обычного преступника, но это не так. В 1980-х годах сети операторов связи были недоступны обычным людям из-за дороговизны оборудования. Когда разрабатывался внутренний стек протоколов коммуникаций между операторами связи - SS7, разработчики отталкивались от мысли, что все операторы являются доверенными источниками сообщений и о безопасности не задумывались. 

Сейчас оборудование стало намного дешевле, при этом увеличились мощности. Операторов связи становиться больше, и их спектр услуг вырос. В частности, появилась IP телефония и доступ в интернет с мобильных устройств. Это привело к тому, что пограничное оборудование, между конечным пользователем и сетью оператора связи, стало «видно» в сети интернет, так как имеет свой IP адрес. Все это дает потенциальную возможность взлома пограничных устройств и проникновение в сеть оператора связи.

Видно, что внутренняя сеть операторов уязвима к проникновению. Злоумышленник может взломать сеть Южно – Африканского оператора мобильной связи и атаковать абонентов из Европы, посылая на первый взгляд легитимные запросы SS7.

Описание стека протокола SS7

Стек протоколов SS7 отталкивается от модели OSI и имеет только четыре уровня. Уровни совпадают с уровнями OSI 1 (физический), 2 (канальный) и 3 (сетевой). Уровень 4 SS7 соответствует уровню 7 OSI.

Стек протоколов SS7 в представлении модели OSI
Стек протоколов SS7 в представлении модели OSI

Уровни называются MTP1 (Message Transfer Part), MTP 2 и MTP 3. Уровень 4 содержит несколько различных пользовательских уровней, например:

  • MTP (Message Transfer Part) - описывает транспортные протоколы, включая сетевые интерфейсы, обмен данными, обработка сообщений и маршрутизации их на верхний уровень;

  • SCCP (Signaling Connection and Control Part) — подуровень из других протоколов 4 уровня, и вместе с MTP 3 может быть назван Network Service Part (NSP). NSP обеспечивает адресацию и маршрутизацию сообщений и сервис управления для других частей 4 уровня;

  • TUP (Telephone User Part ) — система сигнализации точка-точка для обслуживания вызовов (в России не применялась);

  • ISUP (ISDN User Part) — ключевой протокол, предоставляющий канально-ориентированный протокол для установки подключения и завершения соединения при звонке. Выполняет все функции TUP и множество дополнительных;

  • TCAP (Transaction Capabilities Application Part) - используется для создания запросов к базе данных. Так же используется при расширенной функциональности сети или как связующий протокол с интеллектуальными сетями (INAP), мобильными службами (MAP).

Анализ команд протокола

Так как стек протоколов SS7 очень обширен и в некоторых случаях требует специфических знаний в сфере телекоммуникации, было принято решение, что рассмотрение безопасности сетей операторов мобильной связи будет только на уровне приложения, согласно модели OSI, а именно протокола MAP. Это связано с тем, что на уровне данного протокола аппаратура принимает все высокоинтеллектуальные решения, а именно решение о коммутации звонков, пересылке SMS - сообщений, выполнение особых функций и посылке дальнейших сигнальных сообщений. 

Протокол MAP, если сравнивать с обычными сетевыми протоколами, можно сравнить с HTTP, а аппаратуру с сайтами, которые на основе пользовательских данных принимают те или иные действия, а все протоколы нижнего уровня служат в качестве транспорта.

На анализ был взят список потенциально уязвимых функций MAP со спецификации протокола «3GPP TS 29.002 V3.20.0»

  • FailureReport;

  • SendParameters;

  • UnstructuredSS-Notify;

  • RegisterPassword;

  • RemoteUserFree;

  • NoteSubscriberDataModified;

  • SubscriberLocationReport;

  • ReportSMDeliveryStatus;

  • ResumeCallHandling.

При рассмотрении функций будем придерживаться следующей структуры:

  1. Описание;

  2. Источник сообщения;

  3. Получатель сообщения;

  4. Структура сообщения;

  5. Входящие аргументы;

  6. Аргументы ответа на сообщение ;

  7. Возможные атаки.

FailureReport

Описание

Сообщение предназначено для отправки отчета об ошибке между HLR и GGSN. Данное сообщение отправляется с GGSN, когда запрашиваемый HLR абонент не доступен или при обработке запроса произошла ошибка. В свою очередь, GGSN не коммутирует соединение и делает абонента временно недоступным для передачи и приема трафика. В качестве источника сообщения выступают GGSN или SGSN. Получателем становится HLR.

Пример работы FailureReport
Пример работы FailureReport
Параметры сообщения

Код 25. Структура сообщения FailureReport:

  • ARGUMENT

    • failureReportArg FailureReportArg;

  • RESULT

    • failureReportRes FailureReportRes -- optional;

  • ERRORS

    • SystemFailure;

    • DataMissing;

    • UnexpectedDataValue;

    • UnknownSubscriber.

В качестве входного аргумента выступает переменная failureReportArg с одноименным типом данных. FailureReportArg – это список, который содержит:

  • imsi - IMSI – идентификатор абонента;

  • ggsn-Number - ISDN-AddressString - это Global Title. Адрес GGSN в сети оператора;

  • ggsn-Address - GSN-Address (OPTIONAL) - это IP-адрес. Данный адрес используется во внутренней сети маршрутизации GGSN/ SGSN;

  • extensionContainer – ExtensionContainer (OPTIONAL) – это неопределенная в документации последовательность, которая свободно может использоваться производителями оборудования для передачи служебной информации.

Ответным параметром на сообщение является failureReportRes. Данный тип данных также является списком со следующими данными:

  • ggsn-Address - GSN-Address (OPTIONAL);

  • extensionContainer – ExtensionContainer (OPTIONAL).

Атаки

Нарушение доступности абонента. Злоумышленник, зная IMSI абонента, может передать сообщение FailureReport на HLR, тем самым сделав абонента временно недоступным для передачи данных.

FailureReport. Атака "Нарушение доступности абонента"
FailureReport. Атака "Нарушение доступности абонента"

Отказ в обслуживании сервиса пакетных передач. При знании злоумышленником большинства IMSI абонентов, подключенных к одному GGSN, можно совершить массовую рассылку сообщений FailureReport. Получая данные сообщения, HLR будет считать их недоступными. Данное поведение GGSN не сможет остаться незамеченным системами мониторинга работоспособности сети. Автоматика отключит данный узел и пустит трафик через другой. Продолжая совершать посылку сообщения от имени других узлов GGSN, злоумышленник сможет совершить DOS на весь сервис пакетных передач, что ухудшит данный сервис для абонентов сети.

SendParameters

Описание

Многофункциональное сообщение. Сохранилось с первой версии протокола MAP, сейчас не используется, но оборудование его поддерживает. Используется для:

  • Получения IMSI абонента по MSSDN;

  • Аутентификации, а именно для получения ключей шифрования радиосигнала;

  • Регистрации абонента в сети под новым коммутатором;

  • Получения профиля абонента.

Источником сообщения может быть MSC/VLR или SGSN, а приемником HLR. В этом случае, при регистрации абонента в сети MSC/VLR запрашивает у HLR: IMSI абонента, профиль абонента, GSM – триплет, для аутентификации и выработки ключа шифрования радиосигнала. Так же VLR может его отправлять на MSC/VLR. Это происходит при перемещении абонента между MSC/VLR. Для того, чтобы повторно не регистрировать абонента в сети новый MSC/VLR запрашивает у старого ключи шифрования для радиосигнала и оповещая HLR о смене абонентом коммутатора.

Пример работы SendParameters при регистрации абонента
Пример работы SendParameters при регистрации абонента
Пример работы SendParameters при перемещении абонента
Пример работы SendParameters при перемещении абонента
Параметры сообщения

Имеет следующую структуру:

  • ARGUMENT

    • sendParametersArg SendParametersArg;

  • RESULT

    • sendParametersRes SendParametersRes;

  • ERRORS

    • SystemFailure;

    • DataMissing;

    • UnexpectedDataValue;

    • UnknownSubscriber.

Во входных параметрах идет тип данных SendParametersArg, который содержит в себе аргументы:

  • dentifierString - String – идентификатор абонента, может быть как imsi, так и mssdn;

  • requesInfo – RequestInfo – битовый массив, обозначающий запрашиваемую информацию.

В выходном списке возвращаются запрашиваемые данные:

  • imsi - IMSI – идентификатор абонента;

  • authenticationSET - AuthenticationSET (OPTIONAL) – это так называемый GSM - триплет: RAND (случайное число), Ki (параметр для аутентификации), Key;

  • subscriberData - SubscriberData (OPTIONAL) – профиль абонента;

  • Ki – String (OPTIONAL) – ключ шифрования.

Атаки

Раскрытие IMSI. Благодаря данной функции, злоумышленник имеет еще один способ раскрыть IMSI абонента по MSSDN. Опасность данной атаки в том, что она является плацдармом для всех остальных, более серьезных, атак.

Раскрытие профиля абонента. Зная IMSI абонента, злоумышленник может передать битовый массив RequestInfo в аргументах на запрос профиля абонента. Данный профиль раскроет атакующему условия обслуживания абонента. Данные помогут оценить абонента на предмет возможной выгоды, какие атаки можно будет провести, а какие не получится или не выгодны. Профиль может быть отредактирован и использоваться для проведения других атак.

SendParameters. Атаки "Раскрытие IMSI" и "Раскрытие профиля абонента"
SendParameters. Атаки "Раскрытие IMSI" и "Раскрытие профиля абонента"

Раскрытие ключей шифрования. SendParameters применяется и для передачи ключей шифрования между MSC. Данные ключи применяются для шифрования радиосигнала между устройством абонента и GSM вышкой. Зная ключи, злоумышленник может прослушивать разговоры абонента.

SendParameters. Атака "Раскрытие ключей шифрования"
SendParameters. Атака "Раскрытие ключей шифрования"

Нарушение доступности абонента и Перенаправление входящего вызова. SendParameters применяется при смене абонентом коммутатора, которое сообщает HLR, что абонент сменил базовую станцию и сейчас находится в зоне обслуживания нового MSC/VLR. Тем самым можно сделать абонента недоступным или перенаправить входящий вызов или смс на другой номер.

UnstructuredSS-Notify

Описание

Сообщение уведомление, которое отправляет HLR в MSC/VLR в ответ на сообщение unstructuredSS-Request. Оно входит в группу сообщений отвечающих за организацию работы USSD. Рассмотрим функции того же блока, чтобы понимать на что именно посылается уведомление:

  • unstructuredSS-Request - инициатором транзакции выступает объект сети и отправляет сообщение к клиенту. Код 60;

  • processUnstructuredSS-Request - инициатором транзакции выступает клиент и отправляет данное сообщение к объекту сети. Код 59.

 Пример работы UnstructuredSS-Notify
Пример работы UnstructuredSS-Notify
Параметры сообщения

Код 61. Имеет только входные параметры и следующую структуру:

  • ARGUMENT

    • ussd-Arg USSD-Arg;

  • RESULT

  • ERRORS

    • SystemFailure;

    • DataMissing;

    • UnexpectedDataValue;

    • AbsentSubscriber;

    • IllegalSubscriber;

    • IllegalEquipment;

    • UnknownAlphabet;

    • USSD-Busy.

Входным параметром является USSD-Arg, это список содержащий аргументы:

  • ussd-DataCodingScheme - USSD-DataCodingScheme – данный параметр содержит информацию об алфавите языка, используемого в неструктурированной информации, которая передается в операции передаче данных для неструктурированных дополнительных услуг;

  • ussd-String - USSD-String - параметр содержит строку неструктурированной информации в операции по передаче данных неструктурированных дополнительных услуг. Строка посылается мобильным пользователем или сетью;

  • alertingPattern – AlertingPattern (OPTIONAL) - Этот параметр является идентификатором того, что может быть использовано мобильной станцией для предупреждения пользователя в определенной ситуации. Например, в случае окончания трафика коммутируемых вызовов или USSD;

  • msisdn - ISDN-AddressString (OPTIONAL) – номер абонента.

Атаки

Мошенничество. Сообщение отправляет HLR злоумышленника на MSC/VLR, как результат выполнения USSD запроса. MSC/VLR передает полученное сообщение абоненту. Сообщение может применяться для различных мошеннических схем. В этом случае, злоумышленник будет выступать от лица оператора связи, которого будет невозможно отличить от реального сообщения. Это придаст намного больше шансов на успех в мошенничестве.

UnstructuredSS-Notify. Демонстрация применения сообщения для различных мошеннических схем
UnstructuredSS-Notify. Демонстрация применения сообщения для различных мошеннических схем

RegisterPassword

Описание

Данное сообщение исходит от клиента при намерении изменить пароль для дополнительных услуг (USSD). Источником сообщения выступает VLR по инициативе клиента, а получателем является HLR. 

Когда клиент намерен сменить пароль на услугу USSD, то он инициализирует отправку сообщения RegisterPassword. В качестве параметров абонент передает код операции USSD. На что HLR отправляет клиенту сообщение GetPassword с информацией об операции. После чего пользователь вводит старый пароль и отправляет его HLR. Далее HLR генерирует новый пароль и отправляет его в ответ на сообщение RegisterPassword.

Пример работы RegisterPassword
Пример работы RegisterPassword
Параметры сообщения

Код 17. Структура сообщения:

  • ARGUMENT 

    • ss-Code SS-Code;

  • RESULT

    • newPassword Password;

  • ERRORS

    • SystemFailure;

    • DataMissing;

    • UnexpectedDataValue;

    • CallBarred;

    • SS-SubscriptionViolation;

    • PW-RegistrationFailure;

    • NegativePW-Check;

    • NumberOfPW-AttemptsViolation;

  • LINKED 

    • GetPassword.

Входным аргументом является SS-Code. Данный код является числовым обозначением одной, группы или всех дополнительных услуг. В качестве возвращаемого параметра является строка с новым паролем от услуги.

Атаки

Блокировка USSD услуг абонента и Захват USSD услуг абонента. В своем одиночном проявлении, данное сообщение не представляет угрозы для оператора или абонента. Если сообщение применить в комбинации с атакой Перенаправление входящего вызова, то можно добиться блокировки USSD услуги для пользователя. Когда злоумышленник совершает атаку Перенаправление входящего вызова, то он подменяет легитимный VLR, куда подключен абонент, на подконтрольный ему. Далее он, как абонент своего VLR, инициирует смену пароля на USSD услугу. Подконтрольные VLR отправляет HLR сообщение RegisterPassword. Получив сообщение, HLR просит злоумышленника в ответе на сообщение GetPassword ввести текущий пароль услуги. Далее злоумышленник может поступить двумя способами. 

Первый: он три раза вводит неправильный пароль, чем инициирует в HLR блокировку услуги для данного абонента. 

Второй: если злоумышленник знает правильный пароль от услуги абонента. После подтверждения пароля HLR сгенерирует новый пароль от услуги и пришлет его злоумышленнику. Этим он получит полный контроль над USSD услугой и сможет использовать по своему усмотрению, а абонент не сможет быстро пресечь его деятельность.

RegisterPassword. Атака "Блокировка USSD услуг абонента"
RegisterPassword. Атака "Блокировка USSD услуг абонента"

RemoteUserFree

Описание

Сообщение служит для удаления абонента из базы данных. Отправляется HLR в MSC/VLR при необходимости удаления записи об абоненте из базы данных VLR, например, при регистрации абонента в другом MSC/VLR.

Пример работы RemoteUserFree
Пример работы RemoteUserFree
Параметры сообщения

Код 75. Имеет следующую структуру:

  • ARGUMENT

    • remoteUserFreeArg RemoteUserFreeArg;

  • RESULT

    • remoteUserFreeRes RemoteUserFreeRes;

  • ERRORS

    • UnexpectedDataValue;

    • DataMissing;

    • IncompatibleTerminal;

    • AbsentSubscriber;

    • SystemFailure;

    • BusySubscriber.

Входной последовательностью является RemoteUserFreeArg, которая содержит:

  • imsi - IMSI – идентификатор удаляемого абонента;

  • callInfo – ExternalSignalInfo – список, содержащий служебную информацию о протоколе передачи;

  • ccbs-Feature - CCBS-Feature - параметр, который используется для указания направления вызова. Необходимо для того, чтобы охарактеризовать определенный запрос CCBS;

  • translatedB-Numbe - ISDN-AddressString – адрес MSC/VLR;

  • replaceB-Number – NULL (OPTIONAL);

  • alertingPattern – AlertingPattern (OPTIONAL) - Этот параметр является идентификатором того, что может быть использовано мобильной станцией для предупреждения пользователя в определенной ситуации. Например, в случае окончания трафика коммутируемых вызовов или USSD;

  • extensionContainer – ExtensionContainer (OPTIONAL).

В качестве ответа посылается список, содержащий:

  • ruf-Outcome - RUF-Outcome – числовой параметр результата выполнения запроса:

    • accepted (0);

    • rejected (1);

    • noResponseFromFreeMS (2);

    • noResponseFromBusyMS (3);

    • udubFromFreeMS (4);

    • udubFromBusyMS (5);

  • extensionContainer – ExtensionContainer (OPTIONAL).

Атаки

Нарушение доступности абонента. Злоумышленник выдает себя за HLR и отправляет сообщение RemoteUserFree в MSC/VLR. Получив сообщение, MSC/VLR удаляет информацию об абоненте, считая, что он вышел из его зоны действия. Теперь, при запросе о соединении с абонентом MSC/VLR ответит, что абонента нет в его зоне обслуживания. Получается, что абонент будет недоступен для других пользователей.

RemoteUserFree. Атака "Нарушение доступности абонента"
RemoteUserFree. Атака "Нарушение доступности абонента"

NoteSubscriberDataModified

Описание

Операция уведомления о модификации данных подписчика. HLR сообщает платформе по обработке дополнительных услуг об изменениях в профиле абонента. Платформа обновляет профиль абонента у себя. Источником является HLR, а получателем GSMSCF.

Пример работы NoteSubscriberDataModified
Пример работы NoteSubscriberDataModified
Параметры сообщения

Код 5. Структура сообщения:

  • ARGUMENT

    • noteSubscriberDataModifiedArg NoteSubscriberDataModifiedArg;

  • RESULT

    • noteSubscriberDataModifiedRes NoteSubscriberDataModifiedRes;

  • ERRORS 

    • DataMissing;

    • UnexpectedDataValue;

    • UnknownSubscriber.

Входной список NoteSubscriberDataModifiedArg содержит:

  • imsi – IMSI – идентификатор абонента;

  • msisdn - ISDN-AddressString, - адрес GSMSCF;

  • forwardingInfoFor-CSE - Ext-ForwardingInfoFor-CSE (OPTIONAL) - параметр, который относится к набору безусловной переадресации, прикрепленных к дополнительной услуге;

  • callBarringInfoFor-CSE - Ext-CallBarringInfoFor-CSE (OPTIONAL) - параметр, который содержит для каждого вызова запрещенные услуги;

  • odb-Info - ODB-Info (OPTIONAL) - параметр, который содержит данные ODB и флаг уведомления CSE. Иными словами содержит параметры различных запретов для абонента;

  • camel-SubscriptionInfo - CAMEL-SubscriptionInfo (OPTIONAL) - параметр, который содержит информацию о подписке CAMEL, т.е. O-CSI и / или D-CSI и / или T-CSI, которые указывает на GMSC, что исходящий и / или прекращает использовать CAMEL услуг. Может служить основанием для входящего вызова;

  • allInformationSent - NULL (OPTIONAL);

  • extensionContainer – ExtensionContainer (OPTIONAL).

Возвращаемый список NoteSubscriberDataModifiedRes содержит только переменную для служебной информации:

  • extensionContainer – ExtensionContainer (OPTIONAL).

Атаки

Изменение профиля абонента. Злоумышленник, выдавая себя за HLR, отправляет NoteSubscriberDataModified в GSMSCF. Этим сообщением он меняет профиль абонента в зависимости от своих целей, возможностей оператора и GSMSCF. Злоумышленник может изменить свой профиль, удешевив или изменив услуги.

Нарушение доступности абонента. Благодаря атаке Изменение профиля абонента злоумышленник может поменять профиль абонента так, чтобы GSMSCF блокировал все входящие или исходящие данные абонента. Тем самым сделал его недоступным до других абонентов. 

NoteSubscriberDataModified. Атака "Нарушение доступности абонента"
NoteSubscriberDataModified. Атака "Нарушение доступности абонента"

Перенаправление входящих данных. Так же является вариацией атаки Изменение профиля абонента. Один из параметров сообщения NoteSubscriberDataModified отвечает за безусловную переадресацию. Тем самым злоумышленник может настроить GSMSCF так, чтобы все входящие данные проходили через него.

SubscriberLocationReport

Описание

Сообщение, которое сообщает и указывает оборудованию SS7 об изменении в расположении пользовательского устройства. Данное сообщение посылает не идентификатор соты, где сейчас находиться абонент, а именно географические координаты. 

Сообщение генерируется сетью. Например, при вызове службы спасения, сеть автоматически отправляет спасателям географическое местоположение абонента, чтобы они знали, куда ехать для спасения абонента. Источником сообщения является GMLC, который и отвечает за определение местоположения абонента. Принимающим устройством является MSC, который хранит информацию о текущем местоположении абонента.

Пример работы SubscriberLocationReport
Пример работы SubscriberLocationReport
Параметры сообщения

Код 86. Структура SubscriberLocationReport:

  • ARGUMENT

    • subscriberLocationReport-Arg SubscriberLocationReport-Arg;

  • RESULT

    • subscriberLocationReport-Res SubscriberLocationReport-Res;

  • ERRORS

    • SystemFailure;

    • DataMissing;

    • ResourceLimitation;

    • UnexpectedDataValue;

    •  UnknownSubscriber;

    • UnauthorizedRequestingNetwork;

    • UnknownOrUnreachableLCSClient.

В качестве выходного параметра выступает список SubscriberLocationReport-Arg, содержащий множество аргументов:

  • lcs-Event - LCS-Event - параметр, который идентифицирует событие, связанное с запуском оценки местоположения;

  • lcs-ClientID - LCS-ClientID - параметр, который предоставляет информацию, относящийся к личности клиента в системе LCS;

  • lcsLocationInfo  LCSLocationInfo - параметр, который относится к одному или более локализованных зон обслуживания. Абонент может быть членом зоны, иметь приоритет, льготный индикатор доступа, активный индикатор поддержки режима и индикации активного режима каждого локализованного сервиса. Права доступа вне этих локализованных зон обслуживания также указывается;

  • Msisdn - ISDN-AddressString  (OPTIONAL) - номер абонента;

  • Imsi – IMSI (OPTIONAL) - идентификатор абонента;

  • Imei - IMEI (OPTIONAL) - международный идентификатор мобильного оборудования) — число (обычно 15-разрядное в десятичном представлении), уникальное для каждого использующего его аппарата;

  • na-ESRD - ISDN-AddressString (OPTIONAL) - Global Title местного оборудования для аварийно-спасательных служб в Северной Америке;

  • na-ESRK - ISDN-AddressString (OPTIONAL) - Global Title местного оборудования для вызова службы экстренной помощи в Северной Америке;

  • locationEstimate - Ext-GeographicalInformation (OPTIONAL) - параметр, содержащий информацию о географическом местоположении;

  • ageOfLocationEstimate - AgeOfLocationInformation (OPTIONAL) - параметр, который передает время, прошедшее с момента последнего контакта абонента с сетью. Передается в минутах;

  • slr-ArgExtensionContainer - SLR-ArgExtensionContainer (OPTIONAL) - параметр, который используется для передачи дополнительной служебной информации;

  •   add-LocationEstimate - Add-GeographicalInformation  (OPTIONAL) – параметр, содержащий дополнительную информацию о географическом местоположении.

Возвращаемым параметром является список, в котором содержится:

  • extensionContainer – ExtensionContainer (OPTIONAL);

  • na-ESRK - ISDN-AddressString (OPTIONAL) - Global Title местного оборудования для вызова службы экстренной помощи в Северной Америке.

Атаки

Изменение профиля абонента. Злоумышленник, выступая в роли GMLC, отправляет сообщение SubscriberLocationReport в MSC. Данным сообщением он может изменить часть профиля абонента. Поменять географические координаты абонента, Global Title оборудования аварийно-спасательных служб и служб экстренной помощи в Северной Америке и сделать эту информацию актуальной с помощью параметра отвечающего за время, прошедшее с момента последнего контакта абонента с сетью. Все эти изменения могут сбить с толку службу спасения при попытке абонента совершить экстренный вызов.

SubscriberLocationReport. Атака Изменение профиля абонента
SubscriberLocationReport. Атака Изменение профиля абонента

Отказ в обслуживании оборудования службы спасения. Развитие атаки Изменение профиля абонента. Злоумышленник в профилях множества абонентов может подменить адреса оборудования спасательных служб и служб экстренной помощи на адрес одного коммутатора. Далее, он от имени всех абонентов инициирует экстренный вызов, что приводит к одновременной массовой коммутации звонков на один адрес оборудования службы спасения. Такой наплыв звонков может привести: к исчерпанию MSRN у коммутатора спасателей, выведению аппаратуры из строя, невозможности обрабатывать звонки.

ReportSMDeliveryStatus

Описание

Сообщение, которое посылает GMSC (SMS-GMSC) в HLR случае если SMS сообщение не может быть доставлено. Получив это сообщение, HLR устанавливает время ожидания для повторной попытки отправки.

Полный путь возникновения и обработки данного сообщения следующий. Если SMS-C не может доставить SMS сообщение абоненту, тогда он возвращает отрицательный результат в SMS-GMSC. После получения этого результата, SMS-GMSC посылает сообщение reportSMDeliveryStatus к HLR, который, в свою очередь, устанавливает флаг ожидания сообщения в соответствующих абонентских данных. Далее HLR посылает сообщение alertServiceCentre к SMS-IWMSC, информируя его о неудачной доставке SMS, и ждет, пока абонент будет доступен. Когда VLR узнает, что абонент снова доступен, то он посылает сообщение readforSM в HLR. HLR, в свою очередь, посылает сообщение alertServiceCentre к SMS-IWMSC, который информирует SMS-C. Затем процесс доставки SMS сообщения снова начинается с сообщением forwardSM.

Пример работы ReportSMDeliveryStatus
Пример работы ReportSMDeliveryStatus
Параметры сообщения

Код 47. Структура сообщения ReportSMDeliveryStatus:

  • ARGUMENT

    • reportSM-DeliveryStatusArg  ReportSM-DeliveryStatusArg;

  • RESULT

    • reportSM-DeliveryStatusRes  ReportSM-DeliveryStatusRes -- optional;

  • ERRORS

    • DataMissing;

    • UnexpectedDataValue;

    • UnknownSubscriber;

    • MessageWaitingListFull.

Входным параметром является список типа ReportSM-DeliveryStatusArg, который содержит аргументы:

  • msisdn - ISDN-AddressString - Номер абонента;

  • serviceCentreAddress – AddressString – адрес SMS-C;

  • sm-DeliveryOutcome - SM-DeliveryOutcome– параметр, который указывает причину невозможности доставить сообщение сейчас;

  • absentSubscriberDiagnosticSM - AbsentSubscriberDiagnosticSM (OPTIONAL) - параметр используется, чтобы указать причину, по которой абонент отсутствует;

  • extensionContainer - ExtensionContainer (OPTIONAL);

  • gprsSupportIndicator - NULL (OPTIONAL);

  • deliveryOutcomeIndicator – NULL (OPTIONAL);

  • additionalSM-DeliveryOutcome - SM-DeliveryOutcome (OPTIONAL)– дополнительный параметр для указания причины  невозможности доставить сообщение сейчас;

  • additionalAbsentSubscriberDiagnosticSM – AbsentSubscriberDiagnosticSM (OPTIONAL) - дополнительный параметр для указания причины, по которой абонент отсутствует.

Возвращаемым параметром является список типа ReportSM-DeliveryStatusRes:

  • storedMSISDN - ISDN-AddressString (OPTIONAL) - Global Title SMS-GMSC;

  • extensionContainer - ExtensionContainer (OPTIONAL).

Атаки

Нарушение доступности абонента. Злоумышленник, выдавая себя за SMS-GMSC, отправляет сообщение ReportSMDeliveryStatus. HLR отмечает в профиле абонента, что он временно недоступен. Теперь, все сообщения, приходящие на имя абонента, будут ожидать, пока абонент снова станет доступным.

ReportSMDeliveryStatus. Атака "Нарушение доступности абонента"
ReportSMDeliveryStatus. Атака "Нарушение доступности абонента"

ResumeCallHandling

Описание

Данное сообщение используется для процедуры передачи управления вызова между VMSC и GMSC. Источником является HLR, а приемником GMSC. Это сообщение отправляет HLR на GMSC, когда вызываемый абонент недоступен. Сообщение осуществляет директиву переадресации, если она до этого была установлена абонентом.

Пример работы ResumeCallHandling
Пример работы ResumeCallHandling
Параметры сообщения

Код 6. Структура сообщения ResumeCallHandling:

  • ARGUMENT

    • resumeCallHandlingArg  ResumeCallHandlingArg;

  • RESULT

    • resumeCallHandlingRes ResumeCallHandlingRes -- optional;

  • ERRORS 

    • ForwardingFailed;

    • OR-NotAllowed;

    • UnexpectedDataValue;

    • DataMissing.

Входная последовательность включает в себя следующие аргументы:

  • callReferenceNumber - CallReferenceNumber (OPTIONAL) - временный роуминговый номер абонента;

  • basicServiceGroup - Ext-BasicServiceCode (OPTIONAL) - коды сервисов;

  • forwardingData – ForwardingData (OPTIONAL) – данные для пересылки;

  • Imsi - IMSI (OPTIONAL) - идентификатор абонента;

  • cug-CheckInfo - CUG-CheckInfo (OPTIONAL) – параметр, который передает идентификатор закрытой группы. С помощью CUG  проверяют, состоит ли пользователь в какой-нибудь закрытой группе с особыми условиями обслуживания;

  • O-CSI - O-CSI (OPTIONAL) – Адреса платформы для осуществления дополнительный услуг;

  • extensionContainer - ExtensionContainer (OPTIONAL);

  • ccbs-Possible - NULL (OPTIONAL);

  • Msisdn - ISDN-AddressString (OPTIONAL) – адрес MSC/VLR;

  • uu-Data - UU-Data (OPTIONAL) – параметр, который включает в себя пользовательские данные;

  • allInformationSent – NULL (OPTIONAL);

  • d-csi - D-CSI (OPTIONAL) – Адреса платформы для осуществления дополнительный услуг.

В возвращаемой последовательности почти не содержатся аргументы:

  • extensionContainer – ExtensionContainer (OPTIONAL).

Атаки

Перенаправление входящих вызовов. Злоумышленник, выступая в роли HLR, отправляет сообщение ResumeCallHandling в GMSC. Данным сообщением он активирует переадресацию входящих вызовов. Это приведет к том, что все входящие вызовы будут переадресованы на подконтрольный ему GMSC, который указал злоумышленник. Далее атакующий сможет просто блокировать вызов, сделав абонента недоступным или перенаправить вызов на реальный MSC, тем самым имея возможность подслушивать разговор. 

Нарушение доступности абонента. Является вариацией атаки Перенаправление входящих вызовов. Злоумышленник может установить переадресацию на другой GMSC. Поддельный GMSC ничего не знает о вызываемом абоненте и поэтому просто проигнорирует вызов. Все это сделает недоступным абонента для входящих вызовов.

ResumeCallHandling. Атака "Нарушение доступности абонента"
ResumeCallHandling. Атака "Нарушение доступности абонента"

Итоги

Как видно, стек протоколов SS7 очень уязвим, так как он был рассчитан на то, что в сети операторов будут только доверенные пользователи. К сожалению, телекомм очень инертная сфера, в которой все меняется очень медленно. Это связано с тем, что телекоммуникационное оборудование имеет высокую стоимость, а для обслуживания большого количества пользователей необходимы внушительные объёмы оборудования. Надеюсь, что подобные публикации будут привлекать внимание к проблеме, что приведет к внедрению более защищенного стека протоколов.

Комментарии (4)


  1. dancheg
    09.07.2023 16:59
    -2

    Спасибо за статью!


    1. Quartz32
      09.07.2023 16:59
      +1

      А что именно вам понравилось? Не стесняйтесь, расскажите нам подробней.


  1. ogun
    09.07.2023 16:59
    +1

    А почему нет ссылки на отчёт Positive Technologies по SS7, который даже GSMA опубликовала? Да и вообще нет ссылок на другие исследования по этой теме, как будто Вы первооткрыватель этого ящика Пандоры


    1. Valentin01 Автор
      09.07.2023 16:59

      Спасибо за комментарий. Вы правы, статья не открыла давно известную проблему. Она просто осветила, очередной раз, проблему и дала дополнительную информаци об уязвимых местах. В статье не приводятся ссылки на другие исследования, так как смысл этой был не в сборе существующих проблем и анализе других исследований. Это самостоятельный анализ. Думаю, что читатели с удовольствием найдут другие замечательные исследования, например от Positive Technologies, и прочтут их, если будет интересно.
      Если есть еще вопросы и предложения, с удовольствием выслушаю и отвечу на них. Спасибо!