11_real_world_ss7_signaling

Part 11: Real-World Attacks β€” Core Signaling (SS7 / Diameter / GTP)

Learning Objective: Understand how real-world attackers exploit the SS7, Diameter, and GTP signaling planes of cellular networks β€” where in the network these attacks originate, the step-by-step attack sequences, and how to detect and mitigate them.

Important

These five case studies cover the most foundational telecom attack surface: the inter-operator signaling plane. SS7 (2G/3G), Diameter (4G), and GTP (all generations) form the nervous system of global mobile networks. Unlike IP-layer attacks, signaling-plane attacks exploit trust assumptions built into the telecom architecture itself β€” any operator with interconnect access can, by design, query any other operator's subscribers.


Table of Contents


How SS7/Diameter/GTP Interconnect Works

Before diving into individual attacks, it is critical to understand why these attacks are possible. The global mobile network is built on a trust model where operators exchange signaling messages to support roaming, SMS delivery, and call setup.

graph TB
    subgraph "Home Network (Operator A)"
        HLR_HSS[(πŸ” HLR/HSS
Subscriber DB)] MSC_MME[πŸŽ›οΈ MSC/VLR Β· MME
Switching / Mobility] SMSC[πŸ“¨ SMSC
SMS Center] end subgraph "Visited Network (Operator B β€” Roaming Partner)" V_MSC[πŸŽ›οΈ Visited MSC/MME] V_SGSN[πŸ“¦ SGSN/SGW] end subgraph "Signaling Network (SS7/Diameter)" STP[πŸ”€ STP/DRA
Signal Transfer Point /
Diameter Routing Agent] end subgraph "GTP Roaming Plane" GRX[🌐 GRX/IPX
GPRS Roaming Exchange] end Attacker[πŸ”΄ Attacker
Rogue operator /
Leased SS7 access] V_MSC <-->|MAP/Diameter
via SS7/IP| STP STP <-->|MAP/Diameter| HLR_HSS STP <-->|MAP| SMSC V_SGSN <-->|GTP-C| GRX GRX <-->|GTP-C/U| MSC_MME Attacker -.->|❌ Purchased
SS7/Diameter
access| STP Attacker -.->|❌ Rogue
GTP peer| GRX style Attacker fill:#ff6666,color:#fff style STP fill:#ffaa66 style GRX fill:#ffaa66 style HLR_HSS fill:#ffee66 style SMSC fill:#ffee66
Note

Key insight: SS7 was designed in the 1970s for a closed club of national telephone companies. There was no authentication between operators β€” any node that could send a MAP message was trusted. This trust model persists today because replacing SS7 would require coordinated global migration. Diameter (4G) added optional TLS but most deployments still lack it. GTP has no built-in encryption or authentication at all.


1. SS7-Based SMS OTP Theft for Bank Fraud (S, I, E)

Executive Summary

In 2017, attackers exploited SS7 signaling access β€” obtained through a foreign mobile operator β€” to intercept SMS-based two-factor authentication codes sent to German bank customers by O2-TelefΓ³nica. The attackers first harvested banking credentials via phishing, then used SS7 to redirect victims' SMS messages to attacker-controlled numbers, authorizing fraudulent wire transfers that drained accounts.

Real-World Incident

Detail Value
When January 2017 (publicly reported)
Who Organized criminal group with purchased SS7 access
Targets German O2-TelefΓ³nica mobile subscribers with online banking
Method SS7 UpdateLocation to re-register victim MSISDNs to attacker-controlled MSC, redirecting SMS
Impact Direct financial theft β€” bank accounts drained via authorized mTAN transfers
Discovery O2-TelefΓ³nica confirmed the attacks after SΓΌddeutsche Zeitung reporting

Network Position β€” Where the Attack Starts

graph TB
    subgraph "Victim's Home Network (O2-TelefΓ³nica Germany)"
        HLR[(πŸ” HLR
Home Location Register)] SMSC[πŸ“¨ SMSC
SMS Center] MSC_Home[πŸŽ›οΈ Home MSC/VLR] end subgraph "SS7 Interconnect" STP[πŸ”€ STP
Signal Transfer Point] end subgraph "Attacker Infrastructure" Rogue_MSC[πŸ”΄ Rogue MSC
Attacker-controlled
via leased SS7 GT] Attacker_Phone[πŸ”΄ Attacker Phone
Receives redirected SMS] end subgraph "Victim Side" Victim_UE[πŸ“± Victim UE
German bank customer] Bank[🏦 Online Bank
Sends mTAN via SMS] end Bank -->|"1. Sends mTAN SMS
to victim MSISDN"| SMSC SMSC -->|"2. Queries HLR:
SRI-for-SM"| HLR HLR -.->|"3. Returns ATTACKER's
MSC address
(poisoned by UpdateLocation)"| SMSC SMSC -.->|"4. Routes SMS to
attacker's MSC"| STP STP -.->|"5. Delivers SMS"| Rogue_MSC Rogue_MSC -.->|"6. OTP received"| Attacker_Phone Victim_UE -.->|"❌ Never receives SMS"| MSC_Home style Rogue_MSC fill:#ff6666,color:#fff style Attacker_Phone fill:#ff6666,color:#fff style HLR fill:#ffaa66 style SMSC fill:#ffaa66 style Victim_UE fill:#ffee66 style Bank fill:#ffee66

Attack Sequence β€” Step by Step

sequenceDiagram
    participant Attacker as πŸ”΄ Attacker
    participant SS7 as πŸ”€ SS7 Network
    participant HLR as πŸ” HLR (O2)
    participant SMSC as πŸ“¨ SMSC (O2)
    participant Bank as 🏦 Bank
    participant Victim as πŸ“± Victim

    Note over Attacker: Phase 1: Credential Harvesting
    Attacker->>Victim: Phishing email/SMS with fake bank login
    Victim->>Attacker: Enters bank username + password

    Note over Attacker: Phase 2: SS7 Subscriber Hijack
    Attacker->>SS7: MAP UpdateLocation
(IMSI=victim, new MSC=attacker GT) SS7->>HLR: Forward UpdateLocation HLR->>SS7: UpdateLocation ACK
(Victim now "roaming" at attacker MSC) Note over Attacker: Phase 3: Trigger and Intercept OTP Attacker->>Bank: Login with stolen credentials Bank->>SMSC: Send mTAN SMS to victim MSISDN SMSC->>HLR: SendRoutingInfo-for-SM (SRI-SM) HLR->>SMSC: Returns attacker's MSC address SMSC->>SS7: MT-ForwardSM (SMS to attacker MSC) SS7->>Attacker: SMS delivered with mTAN code Note over Attacker: Phase 4: Cash-Out Attacker->>Bank: Submit mTAN β†’ authorize wire transfer Bank->>Bank: Transfer approved βœ… Note over Victim: ❌ Victim never receives SMS
❌ Victim unaware until funds gone

Technical Deep Dive

The attack exploits two SS7 MAP (Mobile Application Part) operations:

  1. UpdateLocation (UL): Normally sent by a visited MSC/VLR when a subscriber roams to a new network. It tells the HLR: "this subscriber is now registered at my MSC." The HLR updates its records and returns the subscriber profile. There is no authentication β€” the HLR trusts any UpdateLocation from any SS7-connected node.

  2. SendRoutingInfo-for-SM (SRI-SM): When the SMSC needs to deliver an SMS, it queries the HLR for the current serving MSC address. After the malicious UpdateLocation, the HLR returns the attacker's MSC address instead of the legitimate one.

Protocol-level detail:

MAP UpdateLocation Request:
  IMSI: 262-02-XXXXXXXXX  (victim's IMSI)
  MSC Number: +XXX-XXXX   (attacker's Global Title)
  VLR Number: +XXX-XXXX   (attacker's Global Title)

HLR Response:
  UpdateLocation ACK
  (HLR now records victim as served by attacker GT)

The attacker needs:

Detection Indicators

STRIDE Assessment

Category Rating Justification
Spoofing High Attacker impersonates a legitimate roaming MSC
Tampering N/A No data modification β€” redirection only
Repudiation Medium SS7 logging often insufficient to trace attacker
Information Disclosure Critical SMS content (OTP codes) exposed to attacker
Denial of Service Medium Victim loses SMS service during hijack window
Elevation of Privilege Critical Attacker gains access to victim's bank account

Mitigation

References


2. SS7 Location Tracking of High-Value Targets (I)

Executive Summary

State intelligence agencies and criminal organizations have repeatedly used SS7 signaling queries β€” specifically SendRoutingInfo (SRI) and ProvideSubscriberInfo (PSI) β€” to track the real-time geographic location of journalists, activists, political dissidents, and other high-value targets. These attacks turn every mobile phone into a persistent tracking beacon, requiring only the target's phone number.

Real-World Incident

Detail Value
When Documented from 2014 onward; confirmed ongoing through 2024
Who State-level actors, surveillance companies (e.g., Circles, linked to NSO Group), and commercial location-tracking services
Targets Journalists, human rights activists, political opposition figures, diplomats
Method SS7 SRI to get serving MSC/Cell-ID, PSI to get precise location (cell sector + timing advance)
Impact Persistent surveillance of targets across borders; physical safety compromised
Discovery EFF, Citizen Lab, and carrier security teams detected anomalous SS7 queries from unusual origins

Network Position β€” Where the Attack Starts

graph TB
    subgraph "Target's Home Network"
        HLR[(πŸ” HLR
Home Location Register)] MSC[πŸŽ›οΈ MSC/VLR
Serving the target] BTS[πŸ“‘ BTS/eNB
Cell tower serving target] end subgraph "SS7 Interconnect" STP[πŸ”€ STP
Signal Transfer Point] end subgraph "Attacker (Surveillance Operator)" Attacker_Node[πŸ”΄ SS7 Node
Intelligence agency /
surveillance vendor] Analyst[πŸ”΄ Analyst
Plots target location
on map over time] end subgraph "Target" Target_UE[πŸ“± Target Phone
Journalist / Activist] end Target_UE -.->|"Connected to cell"| BTS BTS <--> MSC MSC <--> HLR Attacker_Node -.->|"1. SRI: Where is
MSISDN +49XXX?"| STP STP -.->|"2. Query HLR"| HLR HLR -.->|"3. Returns:
MSC addr + IMSI"| STP STP -.->|"4. SRI Response"| Attacker_Node Attacker_Node -.->|"5. PSI: Give me
exact cell + TA"| STP STP -.->|"6. Query MSC"| MSC MSC -.->|"7. Cell-ID + LAC
+ Timing Advance"| STP STP -.->|"8. Location data"| Attacker_Node Attacker_Node -->|"9. Plot on map"| Analyst style Attacker_Node fill:#ff6666,color:#fff style Analyst fill:#ff6666,color:#fff style STP fill:#ffaa66 style HLR fill:#ffaa66 style MSC fill:#ffaa66 style Target_UE fill:#ffee66

Attack Sequence β€” Step by Step

sequenceDiagram
    participant Attacker as πŸ”΄ Surveillance Node
    participant SS7 as πŸ”€ SS7 Network
    participant HLR as πŸ” HLR
    participant MSC as πŸŽ›οΈ Serving MSC
    participant Target as πŸ“± Target

    Note over Attacker: Only needs target's phone number

    Attacker->>SS7: MAP SendRoutingInfo (SRI)
(MSISDN=target phone number) SS7->>HLR: Forward SRI HLR->>SS7: SRI Response
(IMSI, serving MSC address) SS7->>Attacker: IMSI + MSC address Note over Attacker: Now knows target's IMSI and serving network Attacker->>SS7: MAP ProvideSubscriberInfo (PSI)
(IMSI=target, RequestInfo=location) SS7->>MSC: Forward PSI MSC->>SS7: PSI Response
(Cell-ID, LAC, Age of Location) SS7->>Attacker: Cell-ID=4521, LAC=1003, Age=2min Note over Attacker: Maps Cell-ID β†’ GPS coordinates
via public cell tower databases Note over Attacker: Repeats every 5-15 minutes
to build movement pattern loop Every 5-15 minutes Attacker->>SS7: MAP PSI (IMSI=target) SS7->>MSC: Forward PSI MSC->>SS7: Updated Cell-ID + LAC SS7->>Attacker: New location end Note over Attacker: Builds timeline:
Home β†’ Office β†’ Meeting β†’ Airport

Technical Deep Dive

Two primary SS7 MAP operations are used:

  1. SendRoutingInfo (SRI) β€” Input: target MSISDN (phone number). Output: IMSI and current serving MSC/VLR address. Originally designed for call routing but gives the attacker the target's IMSI and which MSC currently serves them.

  2. ProvideSubscriberInfo (PSI) β€” Input: IMSI. Output: current Cell-ID, Location Area Code (LAC), and "age of location" (how recently the location was updated). Originally designed for lawful intercept and emergency services. Cell-ID maps to a specific cell tower sector, providing location accuracy of 50m–2km depending on cell density.

Additional techniques:

Detection Indicators

STRIDE Assessment

Category Rating Justification
Spoofing Low Attacker uses legitimate SS7 identity (leased GT)
Tampering N/A Read-only attack β€” no data modification
Repudiation High Difficult to attribute queries to specific actors
Information Disclosure Critical Real-time location tracking of any subscriber globally
Denial of Service N/A No service disruption
Elevation of Privilege N/A No privilege change

Mitigation

References


3. Diameter Exploitation for US Subscriber Tracking (I)

Executive Summary

In 2022, US government cybersecurity officials disclosed that unauthorized parties had attempted to exploit Diameter signaling β€” the 4G successor to SS7 β€” to retrieve location data of US mobile subscribers. The attacks used Diameter routing agents connected via the IPX (IP eXchange) roaming backbone to query Home Subscriber Servers (HSS) at US carriers, demonstrating that the move from SS7 to Diameter did not eliminate signaling-plane surveillance capabilities.

Real-World Incident

Detail Value
When 2022 (disclosed by CISA and FCC communications)
Who Unauthorized foreign entities (specific attribution classified)
Targets Specific individuals on US mobile networks
Method Diameter Location-Info-Request and User-Data-Request via IPX interconnect
Impact Attempted real-time location surveillance of US persons
Discovery US carrier security teams and CISA identified anomalous Diameter signaling patterns

Network Position β€” Where the Attack Starts

graph TB
    subgraph "US Carrier (Home Network)"
        HSS[(πŸ” HSS
Home Subscriber
Server)] MME[πŸŽ›οΈ MME
Mobility Management] eNB[πŸ“‘ eNodeB] end subgraph "Diameter Interconnect (IPX)" DRA_Home[πŸ”€ Home DRA
Diameter Routing Agent] IPX[🌐 IPX Backbone
IP eXchange] DRA_Visited[πŸ”€ Visited DRA] end subgraph "Attacker Infrastructure" Attacker_DRA[πŸ”΄ Rogue Diameter
Client / Proxy
via compromised or
leased IPX access] end subgraph "Target" Target_UE[πŸ“± Target UE
US subscriber] end Target_UE -.-> eNB eNB <--> MME MME <-->|S6a Diameter| DRA_Home DRA_Home <-->|Diameter| IPX IPX <--> DRA_Visited Attacker_DRA -.->|"❌ Diameter queries
via IPX"| IPX style Attacker_DRA fill:#ff6666,color:#fff style IPX fill:#ffaa66 style DRA_Home fill:#ffaa66 style HSS fill:#ffee66 style Target_UE fill:#ffee66

Attack Sequence β€” Step by Step

sequenceDiagram
    participant Attacker as πŸ”΄ Rogue Diameter Client
    participant IPX as 🌐 IPX Backbone
    participant DRA as πŸ”€ Home DRA
    participant HSS as πŸ” HSS (US Carrier)
    participant MME as πŸŽ›οΈ MME

    Note over Attacker: Attacker has IPX interconnect access
(via leased or compromised Diameter peer) Attacker->>IPX: Diameter S6a:
Authentication-Information-Request (AIR)
(IMSI=target) IPX->>DRA: Route Diameter message DRA->>HSS: Forward AIR alt No DRA Filtering HSS->>DRA: Authentication-Information-Answer
(Auth vectors: RAND, AUTN, XRES, KASME) DRA->>IPX: Forward AIA IPX->>Attacker: Auth vectors received Note over Attacker: ⚠️ Can now derive session keys else DRA Filtering Active DRA->>Attacker: Diameter Error:
DIAMETER_AUTHORIZATION_REJECTED Note over Attacker: ❌ Blocked by DRA policy end Note over Attacker: Location query attempt Attacker->>IPX: Diameter S6a:
Notify Request (NOR) with
Alert-Reason=UE_PRESENT IPX->>DRA: Route message DRA->>HSS: Forward NOR HSS->>MME: Triggers location update procedure MME->>HSS: Update-Location-Request
(includes serving eNB / cell info) HSS->>DRA: Notify Answer
(location data in response) DRA->>IPX: Forward response IPX->>Attacker: Cell-level location obtained Note over Attacker: Alternative: Insert-Subscriber-Data
to modify subscriber profile

Technical Deep Dive

Diameter (defined in RFC 6733 and 3GPP TS 29.272 for S6a) was designed to replace SS7 MAP for 4G/LTE. While it uses TCP/SCTP and supports TLS, the protocol has several exploitable properties:

Key Diameter commands abused:

Command Code Purpose Abuse Potential
Authentication-Information-Request (AIR) 318 Retrieve auth vectors for a subscriber Extract RAND/AUTN/XRES β†’ derive session keys
Update-Location-Request (ULR) 316 Register subscriber at new MME Redirect subscriber to attacker-controlled MME
Notify-Request (NOR) 323 Alert HSS of subscriber state Trigger location update β†’ extract cell info
Insert-Subscriber-Data-Request (IDR) 319 Push subscriber profile updates Modify QoS, APN, roaming permissions
Cancel-Location-Request (CLR) 317 De-register subscriber from current MME Denial of service β€” force re-attach

Why Diameter is still vulnerable:

Detection Indicators

STRIDE Assessment

Category Rating Justification
Spoofing Medium Attacker uses valid Diameter peer identity (leased access)
Tampering Medium IDR can modify subscriber profiles
Repudiation High Attribution difficult across IPX backbone
Information Disclosure Critical Location data, auth vectors, subscriber profiles exposed
Denial of Service Medium CLR can de-register subscribers
Elevation of Privilege High IDR can elevate QoS or enable unauthorized roaming

Mitigation

References


4. Commercialized SS7 Interception as Access-Broker Service (S, I, E)

Executive Summary

Underground platforms β€” exemplified by services like fastsms[.]su β€” have industrialized SS7-based SMS interception, selling it as a commodity service. Threat actors pay to receive OTPs and verification codes sent to any mobile number, enabling at-scale account takeover across banking, email, social media, and cloud services. This represents the evolution of SS7 exploitation from targeted espionage to mass-market cybercrime infrastructure.

Real-World Incident

Detail Value
When Active since at least 2019; documented by Zimperium in 2024
Who Organized cybercrime syndicates operating as service providers
Targets Any mobile subscriber globally; 600+ brand OTPs across 113 countries
Method Combination of SS7 interception, SIM farms, and Android malware to capture SMS OTPs at scale
Impact Mass account takeover β€” customers can buy phone numbers and receive their OTPs
Discovery Zimperium zLabs identified 107,000+ malware samples tied to the ecosystem

Network Position β€” Where the Attack Starts

graph TB
    subgraph "Legitimate Mobile Network"
        HLR[(πŸ” HLR/HSS)]
        SMSC[πŸ“¨ SMSC]
        MSC[πŸŽ›οΈ MSC/MME]
        BTS[πŸ“‘ BTS/eNB]
    end

    subgraph "SS7 Interconnect"
        STP[πŸ”€ STP]
    end

    subgraph "Access-Broker Infrastructure"
        SS7_Gateway[πŸ”΄ SS7 Gateway
Leased interconnect] SIM_Farm[πŸ”΄ SIM Farm
Thousands of SIMs
for number rental] C2[πŸ”΄ C2 Server
Manages OTP
delivery pipeline] Web_Portal[πŸ”΄ Web Portal
fastsms.su etc.
Customer self-service] Telegram_Bot[πŸ”΄ Telegram Bot
OTP delivery
channel] end subgraph "Criminal Customers" Buyer[πŸ‘€ Buyer
Pays for OTP
interception] end subgraph "Victim Services" Bank_App[🏦 Bank] Email[πŸ“§ Email Provider] Cloud[☁️ Cloud/SaaS] end Bank_App -->|"SMS OTP"| SMSC Email -->|"SMS OTP"| SMSC Cloud -->|"SMS OTP"| SMSC SMSC --> HLR HLR -.->|"Routing info
(poisoned or
SIM farm number)"| SMSC SMSC -.-> STP STP -.-> SS7_Gateway SS7_Gateway --> C2 SIM_Farm -->|"Registered numbers
on real network"| BTS BTS --> MSC C2 --> Web_Portal C2 --> Telegram_Bot Buyer -->|"1. Select number
2. Pay crypto
3. Receive OTP"| Web_Portal Telegram_Bot -->|"OTP delivered"| Buyer style SS7_Gateway fill:#ff6666,color:#fff style SIM_Farm fill:#ff6666,color:#fff style C2 fill:#ff6666,color:#fff style Web_Portal fill:#ff6666,color:#fff style Telegram_Bot fill:#ff6666,color:#fff style Buyer fill:#ff6666,color:#fff style HLR fill:#ffaa66 style SMSC fill:#ffaa66

Attack Sequence β€” Step by Step

sequenceDiagram
    participant Buyer as πŸ‘€ Criminal Buyer
    participant Portal as πŸ”΄ OTP Service Portal
    participant C2 as πŸ”΄ C2 Infrastructure
    participant SS7_GW as πŸ”΄ SS7 Gateway
    participant SMSC as πŸ“¨ Target SMSC
    participant Service as 🏦 Bank / Email / SaaS

    Buyer->>Portal: 1. Browse available numbers
by country + carrier Portal->>Buyer: 2. Number list + pricing
(~$0.50-$5.00 per OTP) Buyer->>Portal: 3. Select number + pay (crypto) Buyer->>Service: 4. Request account creation
or password reset with
purchased number Service->>SMSC: 5. Send SMS OTP to number SMSC->>SS7_GW: 6. SMS routed via SS7
(or delivered to SIM farm) SS7_GW->>C2: 7. OTP captured C2->>Portal: 8. OTP available Portal->>Buyer: 9. OTP displayed
(or via Telegram bot) Buyer->>Service: 10. Enter OTP β†’ account created/hijacked Note over Buyer,Service: Entire flow takes 30-120 seconds
Buyer can repeat for unlimited accounts

Technical Deep Dive

The access-broker ecosystem operates through multiple parallel interception channels:

Channel 1 β€” SS7 Interception (highest capability):

Channel 2 β€” SIM Farm (most common):

Channel 3 β€” Android Malware (widest reach):

Business model:

Detection Indicators

STRIDE Assessment

Category Rating Justification
Spoofing Critical Mass identity spoofing via number rental / interception
Tampering N/A No data modification
Repudiation High Cryptocurrency payments, rotating infrastructure
Information Disclosure Critical OTP codes for 600+ service brands exposed
Denial of Service Low Victims may experience delayed SMS delivery
Elevation of Privilege Critical Enables account takeover across banking, email, cloud

Mitigation

References


5. GTP and Roaming-Plane Abuse for Fraud and Stealth Traffic (S, T, I, E)

Executive Summary

The GPRS Tunneling Protocol (GTP) β€” used across 2G, 3G, 4G, and 5G for user-plane tunneling and control-plane signaling between operators β€” has no built-in authentication or encryption. Malicious or compromised roaming partners have exploited GTP to inject traffic, create unauthorized data sessions, bypass billing, and establish covert communication channels through the roaming interconnect (GRX/IPX). These attacks are harder to detect than SS7 abuse because GTP traffic is high-volume and looks like legitimate roaming data.

Real-World Incident

Detail Value
When Ongoing; security research published 2018-2024
Who Malicious roaming partners, criminal organizations with GTP access
Targets Mobile operators (revenue fraud), subscribers (unauthorized access to sessions)
Method GTP-C session creation, GTP-U tunnel injection, TEID spoofing
Impact Revenue fraud, unauthorized data tunneling, subscriber session hijacking
Discovery P1 Security, GSMA, and operator security teams via traffic analysis

Network Position β€” Where the Attack Starts

graph TB
    subgraph "Home Operator Network"
        HSS[(πŸ” HSS)]
        MME[πŸŽ›οΈ MME]
        SGWC[βš™οΈ SGW-C]
        SGWU[πŸ“¦ SGW-U]
        PGWC[βš™οΈ PGW-C/SMF]
        PGWU[πŸ“¦ PGW-U/UPF]
        Internet[🌐 Internet]
    end

    subgraph "GTP Roaming Interconnect"
        GRX[🌐 GRX/IPX
GPRS Roaming
Exchange] end subgraph "Legitimate Roaming Partner" V_SGSN_OK[πŸ“¦ Visited SGSN/MME
Legitimate partner] end subgraph "Attacker (Malicious Roaming Partner)" V_SGSN_Bad[πŸ”΄ Rogue SGSN/MME
Malicious or
compromised partner] Attacker_UPF[πŸ”΄ Rogue User Plane
Traffic injection] end V_SGSN_OK <-->|"GTP-C (legitimate
roaming sessions)"| GRX V_SGSN_Bad -.->|"❌ GTP-C: Fake
Create Session Request
(spoofed IMSI)"| GRX Attacker_UPF -.->|"❌ GTP-U: Injected
tunneled traffic
(spoofed TEID)"| GRX GRX <-->|"GTP-C"| SGWC GRX <-->|"GTP-U"| SGWU SGWC <--> MME SGWC <--> PGWC SGWU <--> PGWU MME <--> HSS PGWU <--> Internet style V_SGSN_Bad fill:#ff6666,color:#fff style Attacker_UPF fill:#ff6666,color:#fff style GRX fill:#ffaa66 style SGWC fill:#ffaa66 style SGWU fill:#ffaa66 style PGWU fill:#ffee66 style Internet fill:#ffee66

Attack Sequence β€” Step by Step

sequenceDiagram
    participant Attacker as πŸ”΄ Rogue Roaming Partner
    participant GRX as 🌐 GRX/IPX
    participant SGW as βš™οΈ SGW-C (Home)
    participant PGW as βš™οΈ PGW-C (Home)
    participant UPF as πŸ“¦ PGW-U/UPF (Home)
    participant HSS as πŸ” HSS (Home)
    participant Internet as 🌐 Internet

    Note over Attacker: Scenario A: Fraudulent Session Creation

    Attacker->>GRX: GTP-C: Create Session Request
(IMSI=spoofed, APN=internet
RAT=EUTRAN) GRX->>SGW: Forward Create Session Request SGW->>PGW: Create Session Request
(allocate IP, create GTP-U tunnel) PGW->>UPF: PFCP Session Establishment
(install forwarding rules) UPF->>PGW: PFCP Response (UE IP: 10.45.0.X) PGW->>SGW: Create Session Response
(GTP-U TEID for data plane) SGW->>GRX: Create Session Response GRX->>Attacker: Session established
(TEID + UE IP allocated) Note over Attacker: Attacker now has a GTP-U tunnel
through home operator to Internet
β€” billed to spoofed subscriber or operator Attacker->>GRX: GTP-U: Encapsulated IP packets
(using assigned TEID) GRX->>UPF: Forward GTP-U packets UPF->>Internet: Decapsulate β†’ forward to Internet Note over Attacker: Scenario B: TEID Spoofing / Session Hijack Attacker->>GRX: GTP-U: Packets with
spoofed TEID of legitimate session GRX->>UPF: Injected into existing
subscriber's tunnel UPF->>Internet: Attacker traffic exits via
legitimate subscriber's IP Note over Attacker: Scenario C: Billing Bypass Note over Attacker: Create sessions with APN=free-tier
or exploit zero-rated data partners

Technical Deep Dive

GTP has two planes, both vulnerable:

GTP-C (Control Plane β€” UDP port 2123):

GTP-U (User Plane β€” UDP port 2152):

Attack variants:

Variant Method Impact
Session creation fraud Create GTP sessions with spoofed IMSIs Free data, billed to others
TEID hijacking Inject packets into existing subscriber sessions Traffic injection, session takeover
Billing bypass Exploit zero-rated APNs or roaming billing gaps Revenue loss for operators
Covert tunneling Use GTP tunnels to hide C2 or exfiltration traffic Stealth communication channel
DNS/data manipulation Modify user-plane packets in transit Content injection, credential theft

Detection Indicators

STRIDE Assessment

Category Rating Justification
Spoofing High Sessions created with spoofed IMSIs
Tampering High GTP-U packets can be injected/modified in transit
Repudiation High Difficult to trace through GRX/IPX to originator
Information Disclosure High User-plane data visible in GTP-U tunnels
Denial of Service Medium Tunnel flooding, session deletion
Elevation of Privilege High Unauthorized Internet access, billing fraud

Mitigation

References


Signaling Attack Summary

Attack Comparison Matrix

# Attack Entry Point Protocol Attacker Type Skill Level Detectability
1 SMS OTP Theft SS7 interconnect MAP (UL, SRI-SM) Organized crime Medium Medium
2 Location Tracking SS7 interconnect MAP (SRI, PSI, ATI) State / surveillance vendor Low-Medium Low
3 Diameter Location IPX / Diameter peer Diameter (AIR, NOR) State-level Medium-High Medium
4 OTP-as-a-Service SS7 + SIM farm + malware Multiple Cybercrime syndicate Low (buyer) Medium
5 GTP Roaming Abuse GRX/IPX GTP-C/U Rogue roaming partner High Low

Combined STRIDE Profile

Attack S T R I D E Overall Severity
1. SS7 OTP Theft βœ… ⚠️ βœ… ⚠️ βœ… Critical
2. SS7 Location βœ… βœ… Critical
3. Diameter Tracking ⚠️ ⚠️ βœ… βœ… ⚠️ βœ… Critical
4. OTP-as-a-Service βœ… βœ… βœ… βœ… Critical
5. GTP Abuse βœ… βœ… βœ… βœ… ⚠️ βœ… High

βœ… = Primary impact, ⚠️ = Secondary/moderate impact

Standards Mapping

Attack 3GPP Reference GSMA Reference NIST Reference
1 TS 29.002 (MAP) FS.11 SP 800-187 Β§5
2 TS 29.002 (MAP) FS.11 SP 800-187 Β§5
3 TS 29.272 (S6a) FS.19 SP 800-187 Β§6
4 TS 29.002, TS 23.040 FS.11 β€”
5 TS 29.274 (GTPv2-C), TS 29.281 (GTP-U) FS.20, IR.88 SP 800-187 Β§7

Lab Replicability

Attack Replicable in Docker Lab? How
1 ⚠️ Partial Simulate HLR poisoning by editing subscriber records in MongoDB; observe SMS routing changes
2 ⚠️ Partial Use tcpdump to capture Diameter S6a queries between MME↔HSS and observe location information in AVPs
3 βœ… Yes Capture Diameter traffic on S6a interface; craft Diameter messages with seagull or freeDiameter
4 ❌ No Requires real SS7/SIM farm infrastructure
5 βœ… Yes Inject GTP-U packets with scapy on the S1-U/S5-U interface; observe TEID handling

πŸ”¬ Lab Exercises

Using the Docker lab from Part 4, try these exercises to understand signaling attack surfaces:

Exercise 1: Observe Diameter S6a Authentication

# Capture Diameter traffic between MME and HSS
docker exec -it open5gs_mme tcpdump -i any -w /tmp/diameter_s6a.pcap tcp port 3868
# Attach a UE with UERANSIM, then open capture in Wireshark
# Filter: diameter
# Look for: Authentication-Information-Request (AIR) containing IMSI
# Look for: Authentication-Information-Answer (AIA) containing RAND, AUTN, XRES
# Question: Is TLS negotiated? (Look for Capabilities-Exchange-Request TLS AVP)

Exercise 2: Capture GTP-U and Inspect User Plane

# Capture GTP-U traffic on the UPF
docker exec -it open5gs_upf tcpdump -i any -w /tmp/gtpu.pcap udp port 2152
# Generate traffic: docker exec -it ueransim_ue ping -c 5 8.8.8.8
# Open in Wireshark, filter: gtp
# Observe: Inner IP packets (UE's traffic) visible in cleartext inside GTP-U tunnel
# Find the TEID in the GTP header β€” this is the only session identifier
# Question: What prevents an attacker from injecting packets with this same TEID?

Exercise 3: Examine GTP-C Session Creation

# Capture GTP-C signaling (control plane)
docker exec -it open5gs_smf tcpdump -i any -w /tmp/gtpc.pcap udp port 2123
# Trigger a PDN session by registering a UE
# Filter: gtpv2
# Look for: Create Session Request (IMSI, APN, RAT type)
# Look for: Create Session Response (allocated IP, TEID)
# Question: What authentication exists in GTP-C to prevent spoofed Create Session Requests?

Exercise 4: Simulate GTP-U Injection with Scapy

# On a machine with access to the Docker network:
pip install scapy
python3 -c "
from scapy.all import *
from scapy.contrib.gtp import GTPHeader

# Craft a GTP-U packet with a known TEID (from Exercise 2)
pkt = IP(dst='UPF_IP') / UDP(dport=2152) / GTPHeader(teid=0x12345678) / IP(dst='8.8.8.8') / ICMP()
send(pkt)
# If the UPF accepts this, the packet will be forwarded β€” demonstrating lack of source validation
"
Warning

These exercises are for educational purposes only in your isolated Docker lab. Never test against real networks or without explicit authorization.


3GPP and Industry References

Document Title Relevance
3GPP TS 29.002 MAP Protocol Specification SS7 MAP operations (SRI, PSI, UL)
3GPP TS 29.272 Diameter S6a/S6d Interface 4G Diameter signaling between MME and HSS
3GPP TS 29.274 GTPv2-C Protocol GTP control plane for session management
3GPP TS 29.281 GTPv1-U Protocol GTP user plane for data tunneling
GSMA FS.11 SS7 Interconnect Security SS7 firewall categories and filtering guidelines
GSMA FS.19 Diameter Interconnect Security Diameter firewall and DRA security
GSMA FS.20 GTP Security GTP firewall and roaming security
GSMA IR.88 LTE Roaming Guidelines GTP roaming interconnect security
NIST SP 800-187 Guide to LTE Security US government LTE security framework

Summary

Next: Part 12: Real-World Attacks β€” Subscriber Identity & SIM β†’