Entregar un SMS terminado en móvil por SS7 requiere dos pasos MAP. Primero el SMSC envía SendRoutingInfoForSM al HLR del destinatario, que devuelve el IMSI y la dirección del MSC/SGSN de servicio. Luego el SMSC envía MT-ForwardSM a ese MSC, que hace paging del terminal y entrega el mensaje, devolviendo el resultado al SMSC.
Paso 1 — búsqueda de enrutamiento (SRI-SM)
El SMSC parte solo del MSISDN del destinatario. Envía un MAP SendRoutingInfoForSM al HLR propietario de ese número, direccionando el HLR por global title (SSN 6). El HLR busca al abonado y, si es alcanzable, responde con el IMSI más locationInfoWithLMSI: la dirección del MSC (o SGSN) que da servicio al abonado en ese momento. Esa es la información de enrutamiento que el SMSC necesita para entregar el mensaje.
Paso 2 — entrega (MT-ForwardSM)
Con la dirección del MSC de servicio, el SMSC envía un MAP MT-ForwardSM a ese MSC (SSN 8), transportando la TPDU SMS-DELIVER —el contenido real del mensaje, la dirección de origen y la codificación— dentro del parámetro MAP. El MSC hace paging del terminal y, al contactar, entrega el mensaje corto por la interfaz radio. Un ReturnResult correcto fluye de vuelta a través del MSC hasta el 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 reportCuando el abonado es inalcanzable
Si el terminal está apagado o fuera de cobertura, el MSC devuelve un error MAP como absentSubscriber, o el HLR informa del abonado como inalcanzable en el paso 1. El SMSC almacena entonces el mensaje y pide al HLR que active las banderas de Message Waiting Data (MWD) —las banderas Mobile-station-Not-Reachable y Memory-Capacity-Exceeded— mediante ReportSM-DeliveryStatus. El mensaje permanece en cola en el SMSC hasta que el abonado sea alcanzable, hasta el límite de su periodo de validez.
| Error | Significado |
|---|---|
| absentSubscriber(SM) | Terminal apagado/fuera de cobertura: establecer MWD, reintentar más tarde |
| subscriberBusyForMT-SMS | El abonado está ocupado procesando otro MT-SMS; reintentar |
| sm-DeliveryFailure | Falló la entrega (memoria llena, error de protocolo del equipo…) |
| unknownSubscriber | MSISDN no aprovisionado en el HLR: fallo definitivo |
| callBarred | El bloqueo por parte del operador/abonado impide la entrega |
El reintento — Alert y ReadyForSM
Cuando el abonado reaparece —se enciende, vuelve a la cobertura o libera memoria del terminal—, el MSC/SGSN de servicio señaliza ReadyForSM al HLR, que consulta la lista MWD y envía AlertServiceCentre a cada SMSC en espera. Cada SMSC repite entonces la secuencia SRI-SM/MT-ForwardSM para entregar el mensaje en cola. Este mecanismo de alerta es por lo que un SMS enviado a un teléfono apagado llega momentos después de que vuelva a encenderse.
Por qué este flujo importa para la seguridad
Cada paso expone información o confianza que puede abusarse. Un SRI-SM enviado desde una red extranjera puede extraer el IMSI y la dirección del MSC de servicio de un abonado —la materia prima del seguimiento de ubicación y de ataques posteriores— sin que se entregue ningún mensaje. Una dirección de MSC de servicio falsificada puede redirigir el MT-SMS, incluidos los códigos de un solo uso, a un atacante. Por ello, los cortafuegos de señalización escrutan SRI-SM y MT-ForwardSM por origen, plausibilidad y velocidad.
Preguntas frecuentes
¿Cuáles son los dos pasos principales para entregar un SMS por SS7?
Primero, SendRoutingInfoForSM: el SMSC pide al HLR del destinatario el IMSI y la dirección del MSC que da servicio al abonado en ese momento. Segundo, MT-ForwardSM: el SMSC envía el mensaje a ese MSC, que hace paging del terminal y lo entrega.
¿Qué devuelve el HLR en la respuesta al SRI-SM?
Para un abonado alcanzable, el HLR devuelve el IMSI y locationInfoWithLMSI —la dirección del MSC o SGSN de servicio—. El SMSC usa esa dirección para dirigir el MT-ForwardSM posterior. Si el abonado es inalcanzable, el HLR devuelve un error en su lugar.
¿Qué ocurre cuando escribo a un teléfono apagado?
La entrega falla con absentSubscriber y el SMSC pone el mensaje en cola, pidiendo al HLR que active las banderas de Message Waiting Data. Cuando el teléfono vuelve a conectarse, el MSC envía ReadyForSM, el HLR emite AlertServiceCentre y el SMSC reintenta la entrega.
¿Qué es Message Waiting Data (MWD)?
MWD es una lista que el HLR mantiene de los SMSC con mensajes en espera para un abonado inalcanzable, junto con las banderas MNRF y MCEF. Impulsa las notificaciones AlertServiceCentre que activan el reintento una vez que el abonado vuelve a ser alcanzable.
¿Cómo puede abusarse de este flujo para interceptar un OTP?
Un atacante que falsifica un UpdateLocation, o que aporta una dirección de MSC de servicio falsa, puede hacer que la red enrute el MT-SMS —incluidos los códigos de un solo uso— a un nodo que controla. Escrutar el origen de SRI-SM/MT-ForwardSM y aplicar comprobaciones de velocidad es la defensa estándar.
Especificaciones de la fuente
Las normas publicadas en las que se basa esta página. Se abre en una pestaña nueva.