Анализ уязвимостей стека протокола мобильных операторов связи SS7
Привет, Хабр. Сегодня хочу представить переработку части моего диплома по анализу стека протоколов 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
Уровни называются 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
Описание
Сообщение предназначено для отправки отчета об ошибке между HLR и GGSN. Данное сообщение отправляется с GGSN, когда запрашиваемый HLR абонент не доступен или при обработке запроса произошла ошибка. В свою очередь, GGSN не коммутирует соединение и делает абонента временно недоступным для передачи и приема трафика. В качестве источника сообщения выступают GGSN или SGSN. Получателем становится HLR.
Пример работы FailureReport
Параметры сообщения
Код 25. Структура сообщения FailureReport:
ARGUMENT
RESULT
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. Данный тип данных также является списком со следующими данными:
Атаки
Нарушение доступности абонента. Злоумышленник, зная IMSI абонента, может передать сообщение FailureReport на HLR, тем самым сделав абонента временно недоступным для передачи данных.
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 при перемещении абонента
Параметры сообщения
Имеет следующую структуру:
ARGUMENT
RESULT
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 применяется и для передачи ключей шифрования между MSC. Данные ключи применяются для шифрования радиосигнала между устройством абонента и GSM вышкой. Зная ключи, злоумышленник может прослушивать разговоры абонента.
SendParameters. Атака «Раскрытие ключей шифрования»
Нарушение доступности абонента и Перенаправление входящего вызова. SendParameters применяется при смене абонентом коммутатора, которое сообщает HLR, что абонент сменил базовую станцию и сейчас находится в зоне обслуживания нового MSC/VLR. Тем самым можно сделать абонента недоступным или перенаправить входящий вызов или смс на другой номер.
UnstructuredSS-Notify
Описание
Сообщение уведомление, которое отправляет HLR в MSC/VLR в ответ на сообщение unstructuredSS-Request. Оно входит в группу сообщений отвечающих за организацию работы USSD. Рассмотрим функции того же блока, чтобы понимать на что именно посылается уведомление:
unstructuredSS-Request — инициатором транзакции выступает объект сети и отправляет сообщение к клиенту. Код 60;
processUnstructuredSS-Request — инициатором транзакции выступает клиент и отправляет данное сообщение к объекту сети. Код 59.
Пример работы 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. Демонстрация применения сообщения для различных мошеннических схем
RegisterPassword
Описание
Данное сообщение исходит от клиента при намерении изменить пароль для дополнительных услуг (USSD). Источником сообщения выступает VLR по инициативе клиента, а получателем является HLR.
Когда клиент намерен сменить пароль на услугу USSD, то он инициализирует отправку сообщения RegisterPassword. В качестве параметров абонент передает код операции USSD. На что HLR отправляет клиенту сообщение GetPassword с информацией об операции. После чего пользователь вводит старый пароль и отправляет его HLR. Далее HLR генерирует новый пароль и отправляет его в ответ на сообщение RegisterPassword.
Пример работы RegisterPassword
Параметры сообщения
Код 17. Структура сообщения:
ARGUMENT
ss-Code SS-Code;
RESULT
newPassword Password;
ERRORS
LINKED
GetPassword.
Входным аргументом является SS-Code. Данный код является числовым обозначением одной, группы или всех дополнительных услуг. В качестве возвращаемого параметра является строка с новым паролем от услуги.
Атаки
Блокировка USSD услуг абонента и Захват USSD услуг абонента. В своем одиночном проявлении, данное сообщение не представляет угрозы для оператора или абонента. Если сообщение применить в комбинации с атакой Перенаправление входящего вызова, то можно добиться блокировки USSD услуги для пользователя. Когда злоумышленник совершает атаку Перенаправление входящего вызова, то он подменяет легитимный VLR, куда подключен абонент, на подконтрольный ему. Далее он, как абонент своего VLR, инициирует смену пароля на USSD услугу. Подконтрольные VLR отправляет HLR сообщение RegisterPassword. Получив сообщение, HLR просит злоумышленника в ответе на сообщение GetPassword ввести текущий пароль услуги. Далее злоумышленник может поступить двумя способами.
Первый: он три раза вводит неправильный пароль, чем инициирует в HLR блокировку услуги для данного абонента.
Второй: если злоумышленник знает правильный пароль от услуги абонента. После подтверждения пароля HLR сгенерирует новый пароль от услуги и пришлет его злоумышленнику. Этим он получит полный контроль над USSD услугой и сможет использовать по своему усмотрению, а абонент не сможет быстро пресечь его деятельность.
RegisterPassword. Атака «Блокировка USSD услуг абонента»
RemoteUserFree
Описание
Сообщение служит для удаления абонента из базы данных. Отправляется HLR в MSC/VLR при необходимости удаления записи об абоненте из базы данных VLR, например, при регистрации абонента в другом MSC/VLR.
Пример работы RemoteUserFree
Параметры сообщения
Код 75. Имеет следующую структуру:
ARGUMENT
RESULT
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 — числовой параметр результата выполнения запроса:
extensionContainer — ExtensionContainer (OPTIONAL).
Атаки
Нарушение доступности абонента. Злоумышленник выдает себя за HLR и отправляет сообщение RemoteUserFree в MSC/VLR. Получив сообщение, MSC/VLR удаляет информацию об абоненте, считая, что он вышел из его зоны действия. Теперь, при запросе о соединении с абонентом MSC/VLR ответит, что абонента нет в его зоне обслуживания. Получается, что абонент будет недоступен для других пользователей.
RemoteUserFree. Атака «Нарушение доступности абонента»
NoteSubscriberDataModified
Описание
Операция уведомления о модификации данных подписчика. HLR сообщает платформе по обработке дополнительных услуг об изменениях в профиле абонента. Платформа обновляет профиль абонента у себя. Источником является HLR, а получателем GSMSCF.
Пример работы NoteSubscriberDataModified
Параметры сообщения
Код 5. Структура сообщения:
ARGUMENT
RESULT
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 содержит только переменную для служебной информации:
Атаки
Изменение профиля абонента. Злоумышленник, выдавая себя за HLR, отправляет NoteSubscriberDataModified в GSMSCF. Этим сообщением он меняет профиль абонента в зависимости от своих целей, возможностей оператора и GSMSCF. Злоумышленник может изменить свой профиль, удешевив или изменив услуги.
Нарушение доступности абонента. Благодаря атаке Изменение профиля абонента злоумышленник может поменять профиль абонента так, чтобы GSMSCF блокировал все входящие или исходящие данные абонента. Тем самым сделал его недоступным до других абонентов.
NoteSubscriberDataModified. Атака «Нарушение доступности абонента»
Перенаправление входящих данных. Так же является вариацией атаки Изменение профиля абонента. Один из параметров сообщения NoteSubscriberDataModified отвечает за безусловную переадресацию. Тем самым злоумышленник может настроить GSMSCF так, чтобы все входящие данные проходили через него.
SubscriberLocationReport
Описание
Сообщение, которое сообщает и указывает оборудованию SS7 об изменении в расположении пользовательского устройства. Данное сообщение посылает не идентификатор соты, где сейчас находиться абонент, а именно географические координаты.
Сообщение генерируется сетью. Например, при вызове службы спасения, сеть автоматически отправляет спасателям географическое местоположение абонента, чтобы они знали, куда ехать для спасения абонента. Источником сообщения является GMLC, который и отвечает за определение местоположения абонента. Принимающим устройством является MSC, который хранит информацию о текущем местоположении абонента.
Пример работы SubscriberLocationReport
Параметры сообщения
Код 86. Структура SubscriberLocationReport:
ARGUMENT
RESULT
ERRORS
В качестве выходного параметра выступает список 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. Атака Изменение профиля абонента
Отказ в обслуживании оборудования службы спасения. Развитие атаки Изменение профиля абонента. Злоумышленник в профилях множества абонентов может подменить адреса оборудования спасательных служб и служб экстренной помощи на адрес одного коммутатора. Далее, он от имени всех абонентов инициирует экстренный вызов, что приводит к одновременной массовой коммутации звонков на один адрес оборудования службы спасения. Такой наплыв звонков может привести: к исчерпанию 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
Параметры сообщения
Код 47. Структура сообщения ReportSMDeliveryStatus:
ARGUMENT
RESULT
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:
Атаки
Нарушение доступности абонента. Злоумышленник, выдавая себя за SMS-GMSC, отправляет сообщение ReportSMDeliveryStatus. HLR отмечает в профиле абонента, что он временно недоступен. Теперь, все сообщения, приходящие на имя абонента, будут ожидать, пока абонент снова станет доступным.
ReportSMDeliveryStatus. Атака «Нарушение доступности абонента»
ResumeCallHandling
Описание
Данное сообщение используется для процедуры передачи управления вызова между VMSC и GMSC. Источником является HLR, а приемником GMSC. Это сообщение отправляет HLR на GMSC, когда вызываемый абонент недоступен. Сообщение осуществляет директиву переадресации, если она до этого была установлена абонентом.
Пример работы ResumeCallHandling
Параметры сообщения
Код 6. Структура сообщения ResumeCallHandling:
ARGUMENT
RESULT
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) — Адреса платформы для осуществления дополнительный услуг.
В возвращаемой последовательности почти не содержатся аргументы:
Атаки
Перенаправление входящих вызовов. Злоумышленник, выступая в роли HLR, отправляет сообщение ResumeCallHandling в GMSC. Данным сообщением он активирует переадресацию входящих вызовов. Это приведет к том, что все входящие вызовы будут переадресованы на подконтрольный ему GMSC, который указал злоумышленник. Далее атакующий сможет просто блокировать вызов, сделав абонента недоступным или перенаправить вызов на реальный MSC, тем самым имея возможность подслушивать разговор.
Нарушение доступности абонента. Является вариацией атаки Перенаправление входящих вызовов. Злоумышленник может установить переадресацию на другой GMSC. Поддельный GMSC ничего не знает о вызываемом абоненте и поэтому просто проигнорирует вызов. Все это сделает недоступным абонента для входящих вызовов.
ResumeCallHandling. Атака «Нарушение доступности абонента»
Итоги
Как видно, стек протоколов SS7 очень уязвим, так как он был рассчитан на то, что в сети операторов будут только доверенные пользователи. К сожалению, телекомм очень инертная сфера, в которой все меняется очень медленно. Это связано с тем, что телекоммуникационное оборудование имеет высокую стоимость, а для обслуживания большого количества пользователей необходимы внушительные объёмы оборудования. Надеюсь, что подобные публикации будут привлекать внимание к проблеме, что приведет к внедрению более защищенного стека протоколов.