Entregar um SMS terminado no terminal sobre SS7 leva dois passos MAP. Primeiro o SMSC envia SendRoutingInfoForSM ao HLR do destinatário, que devolve o IMSI e o endereço do MSC/SGSN servidor. Depois o SMSC envia MT-ForwardSM a esse MSC, que faz paging ao terminal e entrega a mensagem, devolvendo o desfecho ao SMSC.
Passo 1 — consulta de encaminhamento (SRI-SM)
O SMSC começa apenas com o MSISDN do destinatário. Envia um MAP SendRoutingInfoForSM ao HLR que detém esse número, endereçando o HLR por global title (SSN 6). O HLR consulta o subscritor e, se este estiver alcançável, responde com o IMSI mais o locationInfoWithLMSI — o endereço do MSC (ou SGSN) que serve atualmente o subscritor. Esta é a informação de encaminhamento de que o SMSC precisa para entregar a mensagem.
Passo 2 — entrega (MT-ForwardSM)
Munido do endereço do MSC servidor, o SMSC envia um MAP MT-ForwardSM a esse MSC (SSN 8), transportando o TPDU SMS-DELIVER — o conteúdo real da mensagem, o endereço de origem e a codificação de dados — dentro do parâmetro MAP. O MSC faz paging ao terminal e, ao contactá-lo, entrega a mensagem curta pela interface rádio. Um ReturnResult bem-sucedido regressa através do MSC até ao 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 reportQuando o subscritor está inalcançável
Se o terminal está desligado ou fora de cobertura, o MSC devolve um erro MAP como absentSubscriber, ou o HLR reporta o subscritor como inalcançável no passo 1. O SMSC armazena então a mensagem e pede ao HLR que ative as flags de Message Waiting Data (MWD) — as flags Mobile-station-Not-Reachable e Memory-Capacity-Exceeded — via ReportSM-DeliveryStatus. A mensagem permanece em fila no SMSC até o subscritor ficar alcançável, até ao seu validity period.
| Erro | Significado |
|---|---|
| absentSubscriber(SM) | Aparelho desligado / fora de cobertura — definir MWD, tentar novamente mais tarde |
| subscriberBusyForMT-SMS | O assinante está ocupado processando outro SMS MT — tente novamente |
| sm-DeliveryFailure | A entrega falhou (memória cheia, erro de protocolo do equipamento…) |
| unknownSubscriber | MSISDN não aprovisionado no HLR — falha definitiva |
| callBarred | O bloqueio pela operadora/assinante impede a entrega |
A repetição — Alert e ReadyForSM
Quando o subscritor reaparece — liga o terminal, volta à cobertura ou liberta memória do terminal — o MSC/SGSN servidor sinaliza ReadyForSM ao HLR, que consulta a lista MWD e envia AlertServiceCentre a cada SMSC em espera. Cada SMSC repete então a sequência SRI-SM/MT-ForwardSM para entregar a mensagem em fila. Este mecanismo de alerta é a razão pela qual um SMS enviado para um telefone desligado chega momentos depois de este voltar a ligar.
Porque este fluxo importa para a segurança
Cada passo expõe informação ou confiança que pode ser abusada. Um SRI-SM enviado de uma rede estrangeira pode extrair o IMSI e o endereço do MSC servidor de um subscritor — a matéria-prima para rastreio de localização e ataques subsequentes — sem que nenhuma mensagem seja entregue. Um endereço de MSC servidor forjado pode redirecionar o MT-SMS, incluindo códigos de uso único, para um atacante. As signalling firewalls filtram, por isso, o SRI-SM e o MT-ForwardSM por origem, plausibilidade e velocidade.
Perguntas frequentes
Quais são os dois passos principais para entregar um SMS sobre SS7?
Primeiro, SendRoutingInfoForSM: o SMSC pede ao HLR do destinatário o IMSI e o endereço do MSC que serve atualmente o subscritor. Segundo, MT-ForwardSM: o SMSC envia a mensagem a esse MSC, que faz paging ao terminal e a entrega.
O que devolve o HLR na resposta ao SRI-SM?
Para um subscritor alcançável, o HLR devolve o IMSI e o locationInfoWithLMSI — o endereço do MSC ou SGSN servidor. O SMSC usa esse endereço para dirigir o MT-ForwardSM seguinte. Se o subscritor estiver inalcançável, o HLR devolve antes um erro.
O que acontece quando envio SMS para um telefone desligado?
A entrega falha com absentSubscriber e o SMSC coloca a mensagem em fila, pedindo ao HLR que ative as flags de Message Waiting Data. Quando o telefone volta a ficar online, o MSC envia ReadyForSM, o HLR emite AlertServiceCentre e o SMSC reentrega.
O que é o Message Waiting Data (MWD)?
O MWD é uma lista que o HLR mantém de SMSCs com mensagens em espera para um subscritor inalcançável, junto com as flags MNRF e MCEF. Conduz as notificações AlertServiceCentre que despoletam a repetição assim que o subscritor volta a ficar alcançável.
Como pode este fluxo ser abusado para intercetar um OTP?
Um atacante que forja um UpdateLocation, ou fornece um endereço de MSC servidor falso, pode fazer a rede encaminhar o MT-SMS — incluindo códigos de uso único — para um nó que controla. Filtrar a origem do SRI-SM/MT-ForwardSM e aplicar verificações de velocidade é a defesa padrão.
Especificações de origem
Os padrões publicados nos quais esta página se baseia. Abre num novo separador.