Consegnare un SMS mobile-terminated su SS7 richiede due passi MAP. Prima l'SMSC invia SendRoutingInfoForSM all'HLR del destinatario, che restituisce l'IMSI e l'indirizzo dell'MSC/SGSN servente. Poi l'SMSC invia MT-ForwardSM a quell'MSC, che effettua il paging del terminale e consegna il messaggio, restituendo l'esito all'SMSC.
Passo 1 — ricerca dell'instradamento (SRI-SM)
L'SMSC parte con il solo MSISDN del destinatario. Invia un MAP SendRoutingInfoForSM all'HLR proprietario di quel numero, indirizzando l'HLR tramite Global Title (SSN 6). L'HLR cerca l'abbonato e, se è raggiungibile, risponde con l'IMSI più il locationInfoWithLMSI — l'indirizzo dell'MSC (o SGSN) che attualmente serve l'abbonato. Queste sono le informazioni di instradamento di cui l'SMSC ha bisogno per consegnare il messaggio.
Passo 2 — consegna (MT-ForwardSM)
Munito dell'indirizzo dell'MSC servente, l'SMSC invia un MAP MT-ForwardSM a quell'MSC (SSN 8), trasportando la TPDU SMS-DELIVER — il contenuto effettivo del messaggio, l'indirizzo originante e la data-coding — all'interno del parametro MAP. L'MSC effettua il paging del terminale e, al contatto, consegna il messaggio breve sull'interfaccia radio. Un ReturnResult positivo torna indietro attraverso l'MSC fino all'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 l'abbonato è irraggiungibile
Se il terminale è spento o fuori copertura, l'MSC restituisce un errore MAP come absentSubscriber, oppure l'HLR segnala l'abbonato come irraggiungibile al passo 1. L'SMSC memorizza allora il messaggio e chiede all'HLR di impostare i flag Message Waiting Data (MWD) — i flag Mobile-station-Not-Reachable e Memory-Capacity-Exceeded — tramite ReportSM-DeliveryStatus. Il messaggio resta in coda presso l'SMSC finché l'abbonato non diventa raggiungibile, fino al suo validity period.
| Errore | Significato |
|---|---|
| absentSubscriber(SM) | Terminale spento / fuori copertura — imposta MWD, riprova più tardi |
| subscriberBusyForMT-SMS | L'abbonato è occupato nella gestione di un altro MT-SMS: riprova |
| sm-DeliveryFailure | Consegna non riuscita (memoria piena, errore di protocollo del terminale…) |
| unknownSubscriber | MSISDN non configurato sull'HLR — errore definitivo |
| callBarred | Il blocco dell'operatore/abbonato impedisce la consegna |
Il retry — Alert e ReadyForSM
Quando l'abbonato ricompare — si accende, rientra in copertura o libera la memoria del terminale — l'MSC/SGSN servente segnala ReadyForSM all'HLR, che consulta la lista MWD e invia AlertServiceCentre a ciascun SMSC in attesa. Ogni SMSC ripete poi la sequenza SRI-SM/MT-ForwardSM per consegnare il messaggio in coda. Questo meccanismo di alert è il motivo per cui un SMS inviato a un telefono spento arriva pochi istanti dopo la riaccensione.
Perché questo flusso conta per la sicurezza
Ogni passo espone informazioni o fiducia che possono essere abusate. Un SRI-SM inviato da una rete estranea può estrarre l'IMSI e l'indirizzo dell'MSC servente di un abbonato — la materia prima per il tracciamento della posizione e per attacchi successivi — senza che alcun messaggio venga consegnato. Un indirizzo di MSC servente falsificato può reindirizzare gli MT-SMS, inclusi gli one-time passcode, verso un attaccante. I firewall di segnalazione perciò filtrano SRI-SM e MT-ForwardSM per origine, plausibilità e velocità.
Domande frequenti
Quali sono i due passi principali per consegnare un SMS su SS7?
Primo, SendRoutingInfoForSM: l'SMSC chiede all'HLR del destinatario l'IMSI e l'indirizzo dell'MSC che attualmente serve l'abbonato. Secondo, MT-ForwardSM: l'SMSC invia il messaggio a quell'MSC, che effettua il paging del terminale e lo consegna.
Cosa restituisce l'HLR nella risposta SRI-SM?
Per un abbonato raggiungibile, l'HLR restituisce l'IMSI e il locationInfoWithLMSI — l'indirizzo dell'MSC o SGSN servente. L'SMSC usa quell'indirizzo per indirizzare il successivo MT-ForwardSM. Se l'abbonato è irraggiungibile, l'HLR restituisce invece un errore.
Cosa succede quando scrivo a un telefono spento?
La consegna fallisce con absentSubscriber e l'SMSC mette in coda il messaggio, chiedendo all'HLR di impostare i flag Message Waiting Data. Quando il telefono torna online l'MSC invia ReadyForSM, l'HLR emette AlertServiceCentre e l'SMSC ritenta la consegna.
Che cos'è il Message Waiting Data (MWD)?
L'MWD è una lista che l'HLR mantiene degli SMSC con messaggi in attesa per un abbonato irraggiungibile, insieme ai flag MNRF e MCEF. Guida le notifiche AlertServiceCentre che innescano il retry una volta che l'abbonato torna raggiungibile.
Come può essere abusato questo flusso per intercettare un OTP?
Un attaccante che falsifica un UpdateLocation, o fornisce un falso indirizzo di MSC servente, può indurre la rete a instradare gli MT-SMS — inclusi gli one-time passcode — verso un nodo che controlla. Filtrare l'origine di SRI-SM/MT-ForwardSM e applicare controlli di velocità è la difesa standard.
Specifiche della fonte
Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.