Доставка SMS на абонента через SS7 занимает два шага MAP. Сначала SMSC отправляет SendRoutingInfoForSM к HLR получателя, который возвращает IMSI и адрес обслуживающего MSC/SGSN. Затем SMSC отправляет MT-ForwardSM этому MSC, который выполняет пейджинг аппарата и доставляет сообщение, возвращая результат SMSC.
Шаг 1 — поиск маршрута (SRI-SM)
SMSC начинает, имея только MSISDN получателя. Он отправляет MAP SendRoutingInfoForSM к HLR, которому принадлежит этот номер, адресуя HLR по global title (SSN 6). HLR ищет абонента и, если тот достижим, отвечает IMSI плюс locationInfoWithLMSI — адресом MSC (или SGSN), обслуживающего абонента в данный момент. Это и есть информация о маршруте, нужная SMSC для доставки сообщения.
Шаг 2 — доставка (MT-ForwardSM)
Имея адрес обслуживающего MSC, SMSC отправляет MAP MT-ForwardSM этому MSC (SSN 8), неся TPDU SMS-DELIVER — собственно содержимое сообщения, адрес отправителя и data_coding — внутри параметра MAP. MSC выполняет пейджинг аппарата и при контакте доставляет короткое сообщение по радиоинтерфейсу. Успешный ReturnResult возвращается через MSC к SMSC.
1 SMSC → HLR MAP sendRoutingInfoForSM { MSISDN, SC address }
2 HLR → SMSC MAP result { IMSI, servingMSC address }
3 SMSC → MSC MAP mt-ForwardSM { IMSI, SMS-DELIVER TPDU }
4 MSC → MS paging + radio delivery of the short message
5 MSC → SMSC MAP result (delivered) → SMSC generates delivery reportКогда абонент недостижим
Если аппарат выключен или вне зоны покрытия, MSC возвращает ошибку MAP, такую как absentSubscriber, или HLR сообщает о недостижимости абонента на шаге 1. Тогда SMSC сохраняет сообщение и просит HLR установить флаги Message Waiting Data (MWD) — флаги Mobile-station-Not-Reachable и Memory-Capacity-Exceeded — через ReportSM-DeliveryStatus. Сообщение остаётся в очереди на SMSC, пока абонент не станет достижим, вплоть до истечения периода действия.
| Ошибка | Значение |
|---|---|
| absentSubscriber(SM) | Телефон выключен/вне зоны покрытия — установите MWD, попробуйте позже |
| subscriberBusyForMT-SMS | Абонент занят обработкой другого MT-SMS — повторите попытку |
| sm-DeliveryFailure | Доставка не удалась (память заполнена, ошибка протокола оборудования…) |
| unknownSubscriber | MSISDN не зарегистрирован в HLR — окончательный отказ |
| callBarred | Запрет со стороны оператора/абонента препятствует доставке |
Повтор — Alert и ReadyForSM
Когда абонент снова появляется — включается, возвращается в покрытие или освобождает память аппарата — обслуживающий MSC/SGSN сигнализирует ReadyForSM к HLR, который сверяется со списком MWD и отправляет AlertServiceCentre каждому ожидающему SMSC. Каждый SMSC затем повторяет последовательность SRI-SM/MT-ForwardSM для доставки сообщения из очереди. Именно этот механизм оповещения объясняет, почему SMS, отправленное на выключенный телефон, приходит через мгновения после его включения.
Почему эта схема важна для безопасности
Каждый шаг раскрывает информацию или доверие, которыми можно злоупотребить. SRI-SM, отправленный из чужой сети, может извлечь IMSI абонента и адрес обслуживающего MSC — сырьё для отслеживания местоположения и последующих атак — без всякой доставки сообщения. Поддельный адрес обслуживающего MSC может перенаправить MT-SMS, включая одноразовые пароли, злоумышленнику. Поэтому сигнальные межсетевые экраны проверяют SRI-SM и MT-ForwardSM по источнику, правдоподобию и скорости.
Часто задаваемые вопросы
Каковы два основных шага доставки SMS через SS7?
Первый, SendRoutingInfoForSM: SMSC просит у HLR получателя IMSI и адрес MSC, обслуживающего абонента в данный момент. Второй, MT-ForwardSM: SMSC отправляет сообщение этому MSC, который выполняет пейджинг аппарата и доставляет его.
Что HLR возвращает в ответе SRI-SM?
Для достижимого абонента HLR возвращает IMSI и locationInfoWithLMSI — адрес обслуживающего MSC или SGSN. SMSC использует этот адрес, чтобы нацелить последующий MT-ForwardSM. Если абонент недостижим, HLR вместо этого возвращает ошибку.
Что происходит, когда я пишу на выключенный телефон?
Доставка не удаётся с absentSubscriber, и SMSC ставит сообщение в очередь, прося HLR установить флаги Message Waiting Data. Когда телефон снова выходит в сеть, MSC отправляет ReadyForSM, HLR выдаёт AlertServiceCentre, а SMSC повторяет попытку доставки.
Что такое Message Waiting Data (MWD)?
MWD — это список, который HLR ведёт по SMSC с сообщениями, ожидающими для недостижимого абонента, вместе с флагами MNRF и MCEF. Он управляет уведомлениями AlertServiceCentre, запускающими повтор, когда абонент снова становится достижим.
Как этой схемой можно злоупотребить для перехвата OTP?
Злоумышленник, подделывающий UpdateLocation или поставляющий ложный адрес обслуживающего MSC, может заставить сеть маршрутизировать MT-SMS — включая одноразовые пароли — узлу, который он контролирует. Проверка источника SRI-SM/MT-ForwardSM и применение проверок скорости — стандартная защита.
Технические характеристики источника
На этой странице представлены опубликованные стандарты, на которых они основаны. (Открывается в новой вкладке)