Cellular and telephony OPSEC. IMEI/IMSI/ICCID tracking, Blue Merle setup, AT commands, BSSID randomization, IMSI catchers, SS7 attacks, baseband security, burner device tradecraft, and GSM/LTE/5G threat landscape.
Cellular networks are one of the most persistent tracking vectors. Your phone broadcasts unique identifiers (IMEI, IMSI) to every tower it connects to, and mobile operators retain this data under data retention laws. Even with a VPN or Tor for IP privacy, the cellular layer leaks your identity and location. This reference covers the identifiers, threats, and tools to reduce your cellular footprint.
The IMEI (International Mobile Equipment Identity) is a unique 15-digit code assigned to every cellular device. It identifies the hardware, not the subscriber. Changing your SIM does NOT change your IMEI.
IMEI Structure (15 digits):
35 672011 372408 1
^^ ^^^^^^ ^^^^^^ ^
RB Model Serial Check (Luhn)
| | | |
| | | +-- Luhn algorithm check digit
| | +---------- Manufacturer serial number (unique per device)
| +------------------ Device model identifier
+---------------------- Reporting Body (assigned by GSMA)
[---- TAC (8 digits) ----] [-- Serial --] [C]
Type Allocation Code Manufacturer Check
| Tracking Vector | Risk | Who has access |
|---|---|---|
| Tower logs | Operator stores IMEI per cell connection | Carrier, law enforcement (warrant) |
| Data retention | 6-24 months in most EU/US jurisdictions | Carrier, intelligence agencies |
| Purchase linkage | IMEI printed on invoice, box, receipt | Retailer, carrier (if activated in-store) |
| Cross-SIM correlation | Same IMEI + different SIMs = same person | Carrier analytics, law enforcement |
| GSMA CEIR blacklist | Stolen device IMEI shared globally | All carriers worldwide |
| IMEI catcher | IMSI catcher also captures IMEI | Local attacker, law enforcement |
Key insight: Changing SIM without changing IMEI is like changing your name but keeping the same face. The carrier sees a "new subscriber" on the same device and links both instantly.
The IMSI (International Mobile Subscriber Identity) is stored on the SIM card and identifies the subscriber to the network. Changing SIM = new IMSI. But if the IMEI stays the same, old and new IMSI are linked.
IMSI Structure (max 15 digits):
208 01 1234567890
^^^ ^^ ^^^^^^^^^^
MCC MNC MSIN
| | |
| | +-- Mobile Subscriber Identification Number (unique per SIM)
| +------- Mobile Network Code (e.g., 01 = Orange FR)
+------------ Mobile Country Code (e.g., 208 = France, 234 = UK)
| Related Identifier | Where | Purpose |
|---|---|---|
| IMSI | SIM card | Subscriber identity on network |
| ICCID | SIM card | Physical SIM serial (printed on card) |
| MSISDN | Carrier database | Phone number linked to IMSI |
| TMSI | Network (temporary) | Temporary ID to reduce IMSI exposure over air |
| SUPI / SUCI | 5G networks | Encrypted subscriber ID (5G improvement over IMSI) |
To break linkability: Change BOTH IMEI and IMSI simultaneously, in a new location, with RF disabled during the swap. Changing only one leaves a correlation anchor.
The BSSID (Basic Service Set Identifier) is the MAC address broadcast by a Wi-Fi access point. If your device acts as a hotspot (like the Mudi router), its BSSID is constantly transmitted in every beacon frame (~10 per second).
| Threat | How it works | Mitigation |
|---|---|---|
| Geolocation databases | WiGLE, Google, Apple collect BSSID -> GPS mappings from billions of devices | Randomize BSSID on every boot |
| Passive tracking | Any Wi-Fi receiver can log your BSSID + signal strength | Randomize + limit AP broadcast time |
| Client probe leaks | Connected devices probe for known BSSIDs later, revealing they were near you | Randomize so clients can't reconnect |
| Forensic correlation | Same BSSID seen at multiple locations = same device | Randomize per boot (blue-merle default) |
| WAN MAC tracking | When Mudi connects to upstream Wi-Fi, ITS MAC is visible to that AP | Randomize WAN MAC too (blue-merle) |
BSSID vs SSID: SSID is the network name (user-chosen, can be duplicated). BSSID is the MAC address (hardware-unique by default). Even hidden SSIDs still broadcast the BSSID.
Even changing both SIM and device is NOT enough if behavioral patterns remain the same.
| Vector | What correlates | Mitigation | Risk |
|---|---|---|---|
| IMEI | Same device with new SIM -> linked | Change device (not just SIM) | |
| IMSI/SIM | Same SIM in new device -> linked | Change SIM (not just device) | |
| App accounts | Same Google/Apple/app accounts -> instant link | Never sign into any account from both devices | |
| Bluetooth | BT MAC address, paired device history | Disable BT, factory reset between identities | |
| Charging location | Both devices charged at same outlet | Charge at different locations | |
| IP address | Same IP used by both devices -> linked | Never use both on same Wi-Fi or hotspot | |
| Timing correlation | Old phone off at 9:00, new phone on at 9:01 | Leave old phone active, power down hours/days before | |
| Location overlap | Both phones at same GPS/cell location simultaneously | Never carry both phones together, Faraday bag | |
| Wi-Fi probes | Device probes for known SSIDs -> reveals history | Disable Wi-Fi when not in use, MAC randomization | |
| Payment correlation | Same payment method for both phones/SIMs | Pay cash, never same store | |
| Carrier records | Activation location, time, payment logged | Activate far from home, cash, no ID | |
| Cell tower patterns | Same towers, same times daily -> same person | Use burner only in different locations, never near home/work | |
| Contact graph | Calling/texting the same people -> linked | Never contact same people from both identities | |
| BSSID correlation | Same Wi-Fi APs connected -> same person | Avoid connecting to same APs from both identities | |
| Voiceprint | Voice recognition across calls | Voice changer or text-only | |
| Purchase CCTV | Camera at store links face to device | Busy store, disguise, use third party | |
| DNS/browsing | Same sites visited -> behavioral fingerprint | Different browsing patterns, different VPN exits | |
| Behavioral biometrics | Typing patterns, app usage, screen time | Vary behavior deliberately |
The only safe approach: Treat the burner as a completely separate person. Different location, different time, different contacts, different behavior. If you carry your real phone and burner to the same grocery store, cell tower records will place both devices there at the same time - game over.
Blue Merle by SRLabs reduces the forensic traceability of the GL-E750 / Mudi 4G router. It automates IMEI randomization on SIM swap, BSSID/MAC randomization on boot, and MAC address log wiping. The goal: every time you change SIM + location, the device presents a completely new cellular identity.
by Aurelien FERMAN - Alternative implementation in development with extended features and improved OPSEC automation for red team operators.
| Feature | Description |
|---|---|
| IMEI changer | Random or deterministic IMEI via AT+EGMR on Quectel EP06-E/A baseband |
| BSSID randomization | New Wi-Fi AP MAC on every boot (wlan0 + wlan1) |
| WAN MAC randomization | New uplink MAC on every boot |
| MAC log wiper | shred + tmpfs overlay on /etc/oui-tertf (connected devices log) |
# Requirement: GL-E750 Mudi router, firmware 4.3.8
# 1. Download latest IPK from GitHub releases
wget https://github.com/srlabs/blue-merle/releases/latest
# 2. Copy to router via SCP
scp blue-merle*.ipk [email protected]:/tmp/
# 3. SSH into router
ssh [email protected]
# 4. Install package
opkg update
opkg install /tmp/blue-merle*.ipk
# BSSID randomization and MAC log wiping
# are automatic after install and on every boot
# SSH into the Mudi router
ssh [email protected]
# Launch blue-merle interactive wizard
blue-merle
# Wizard flow:
# 1. "Swap SIM card and update IMEI? (Y/n)"
# 2. Disables RF transmission (safety)
# 3. "Replace the SIM card and press any key"
# 4. "Random (r) or deterministic (d) IMEI? (r/D)"
# 5. Sets new IMEI via AT+EGMR
# 6. Resets modem
# 7. Recommended: power off, change location, boot
# Verify new IMEI
gl_modem AT AT+GSN
Physical toggle switch workflow (no SSH needed):
1. Flip the Mudi's hardware switch
-> Display: "Disabling the ME from transmitting
and receiving RF signals..."
2. Replace the SIM card
3. Flip the switch again
-> Blue Merle sets a random IMEI
-> Device powers off
4. Change your physical location
5. Boot the device
-> New IMEI + new SIM + new location = unlinkable
# Manual procedure (debug/development only)
# 1. Disable radio
gl_modem AT AT+CFUN=4
# 2. Replace SIM card physically
# 3. Init new SIM + disable radio again
gl_modem AT AT+CFUN=0 && gl_modem AT AT+CFUN=4
# 4. Generate random IMEI
python3 /lib/blue-merle/imei_generate.py -r
# Or deterministic IMEI (seeded from IMSI)
python3 /lib/blue-merle/imei_generate.py -d
# 5. Verify
gl_modem AT AT+GSN
# 6. Power off
echo '{ "poweroff": "1" }' > /dev/ttyS0
# 7. Change location, then boot
Blue Merle generates valid IMEIs using TAC prefixes from popular phone models. Two modes available:
SRLabs recommends: Change IMEI only when changing SIM. IMEI changes under the same IMSI provide no benefit and may be flagged as suspicious.
Complete TAC database (from SRLabs whitepaper, Table 1). Bands matching the Mudi (bold) vs bands the Mudi doesn't support:
| Make | Model | TAC | LTE Bands (bold = Mudi-compatible) |
|---|---|---|---|
| GL.iNet | Mudi GL-E750 | N/A | B1, B3, B5, B7, B8, B20, B28, B32, B38, B40, B41 |
| Apple | iPhone X | 35674108 | B2, B3, B4, B5, B12, B13, B17, B25, B26, B41 |
| Apple | iPhone 11 | 35290611 | B2, B3, B4, B5, B12, B13, B14, B17, B25, B26, B29, B30, B41, B66, B71 |
| Apple | iPhone 11 Pro | 35323210 | B2, B3, B4, B5, B12, B13, B14, B17, B25, B26, B29, B30, B41, B66, B71 |
| Apple | iPhone 12 | 35982748 | B2, B3, B4, B5, B12, B13, B17, B25, B26, B30, B41, B66 |
| Apple | iPhone 12 Pro Max | 35672011 | B2, B3, B4, B5, B12, B13, B14, B17, B25, B26, B29, B30, B41, B66 |
| Apple | iPhone 13 Mini | 35759049 | B2, B3, B4, B5, B12, B13, B14, B17, B25, B26, B29, B30, B41, B66, B71 |
| Apple | iPhone 13 Pro | 35266891 | B2, B3, B4, B5, B12, B13, B14, B17, B25, B26, B29, B30, B41, B66, B71 |
| Apple | iPhone 13 Pro Max | 35538025 | B2, B3, B4, B5, B12, B13, B14, B17, B25, B26, B29, B30, B41, B66, B71 |
| Samsung | Galaxy S10 Plus | 35480910 | B2, B3, B4, B5, B12, B13, B17, B25, B26, B41, B66 |
| Samsung | Galaxy A32 5G | 35324590 | B2, B3, B4, B5, B12, B13, B14, B25, B26, B29, B30, B41, B66, B71 |
| Samsung | Galaxy A12 | 35901183 | B2, B3, B4, B5, B12, B14, B29, B30, B41, B66 |
| Samsung | Galaxy S20 FE | 35139729 | B2, B3, B5, B12, B13, B17, B26, B41, B66 |
| Apple | iPhone 14 | 35438025 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B32, B38, B40, B41, B66, B71 |
| Apple | iPhone 14 Pro | 35579625 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B32, B38, B40, B41, B66, B71 |
| Apple | iPhone 15 | 35846025 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B32, B38, B40, B41, B66, B71 |
| Apple | iPhone 15 Pro | 35924825 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B32, B38, B40, B41, B66, B71 |
| Apple | iPhone 16 | 35197826 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B32, B38, B40, B41, B66, B71 |
| Apple | iPhone 16 Pro | 35285726 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B32, B38, B40, B41, B66, B71 |
| Samsung | Galaxy S23 | 35169523 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B38, B40, B41, B66, B71 |
| Samsung | Galaxy S24 | 35281624 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B38, B40, B41, B66, B71 |
| Samsung | Galaxy S24 Ultra | 35384524 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B38, B40, B41, B66, B71 |
| Samsung | Galaxy S25 | 35196625 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B38, B40, B41, B66, B71 |
| OnePlus | 12 | 86915604 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B17, B20, B25, B26, B28, B38, B40, B41, B66, B71 |
| OnePlus | 11 | 86886903 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B17, B20, B25, B26, B28, B38, B40, B41, B66, B71 |
| Pixel 8 | 35824823 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B38, B40, B41, B66, B71 | |
| Pixel 9 | 35927924 | B1, B2, B3, B4, B5, B7, B8, B12, B13, B14, B17, B20, B25, B26, B28, B29, B30, B38, B40, B41, B66, B71 |
Fingerprinting risk: When the Mudi connects on a band the spoofed device doesn't support (e.g., B7, B8, B20, B28 - common in Europe but absent from most US-market iPhones), the carrier can detect the IMEI is spoofed. SRLabs acknowledges this in their whitepaper: "this feature is not included in the current blue merle release and left as an exercise for the curious reader and contributor" (issue #1, open since 2022).
Critical timing note: There is a delay between the AT+EGMR command and the actual IMEI change on the modem. Blue Merle disables RF transmission (AT+CFUN=4) BEFORE the change to prevent identity contamination (old IMEI briefly visible with new SIM).
All automatic on every boot via blue-merle init scripts:
# BSSID randomization
# hostapd reads MAC from /etc/config/wireless (mac80211)
# Blue Merle overrides via OpenWrt uci:
uci set wireless.@wifi-iface[0].macaddr='XX:XX:XX:XX:XX:XX'
uci set wireless.@wifi-iface[1].macaddr='XX:XX:XX:XX:XX:XX'
uci commit wireless
wifi reload
# Result: new AP identity on every boot
# WAN MAC randomization
# When Mudi connects to upstream Wi-Fi, its own MAC is visible
# Blue Merle randomizes this too to prevent tracking
# MAC address log wiping
# Stock firmware stores ALL connected client MACs in /etc/oui-tertf
# This is forensic gold if device is seized
shred -vfz /etc/oui-tertf # secure overwrite
mount -t tmpfs tmpfs /etc/oui-tertf # tmpfs overlay prevents new writes
# Result: no persistent record of any connected device
From the SRLabs whitepaper (Section 5):
AT+CFUN=4) before IMEI change to prevent identity contamination.Changing your device's IMEI is illegal in several countries. Check your local laws before modifying any device identifiers.
| Country | Status | Law | Details |
|---|---|---|---|
| UK | Mobile Telephones (Re-programming) Act 2002 | Up to 5 years prison + fine. Covers changing, possessing equipment to change, or offering to change an IMEI. | |
| France | Multiple articles | No dedicated IMEI law. Can be prosecuted under: Art. 441-1 CP (faux), Art. 321-1 CP (recel), Art. 323-1 CP (acces frauduleux), Art. L34-3 CPCE (circumventing IMEI blocking). Rarely prosecuted unless connected to theft/fraud. | |
| Germany | StGB 263a | No specific IMEI law. Could fall under Computerbetrug (computer fraud) if used for criminal purposes. | |
| USA | No federal law | No federal law specifically prohibits IMEI change. State laws vary. Illegal if connected to fraud or stolen devices. | |
| India | Indian Telegraph Act 1885, S.25 + Prevention of Tampering Rules 2017 | Up to 3 years prison + fine up to Rs 50 lakh. Cognizable and non-bailable. Possessing a tampered device is also an offense (S.42). | |
| Pakistan | Prevention of Electronic Crimes Act (PECA) 2016, Clause 18 | Up to 3 years prison + fine up to PKR 1 million. Non-bailable. 35M+ IMEIs blocked via DIRBS system. | |
| Australia | Criminal Code Act 1995 + Telecommunications Act | Tampering with equipment identifiers prohibited. Up to 10 years for terrorism-related. |
This cheatsheet is for educational and authorized security research purposes. The techniques described here are intended for privacy research on devices you own, in jurisdictions where it is legal. Research and privacy use on your own device has never been prosecuted to our knowledge.
Blue Merle has several known issues that reduce its OPSEC effectiveness (see GitHub issues):
| Issue | Impact | Blue Merle Status |
|---|---|---|
| IMEI frequency band mismatch (#1) | Generated IMEI may use a TAC from a device that doesn't support the same LTE bands as the Mudi's Quectel EP06 modem. Carrier can detect the mismatch (device claims to be an iPhone but connects on bands iPhone doesn't support). | Open since 2022, assigned but unfixed |
| No GPS/location service blocking (#82) | Carrier can still locate the device via LPP, SUPL, RRLP protocols even with new IMEI | Feature request, not implemented |
| No DNS flush (#38) | DNS cache may leak previous identity's queries after IMEI swap | Not implemented |
| BSSID vendor prefix (#45) | Random BSSID may use a vendor OUI that doesn't match any real device - detectable | Not implemented |
| No modem auto-disable (#25) | Modem stays active on Wi-Fi, unnecessary cellular exposure | Not implemented |
| Stale LuCI UI (#26) | Web UI doesn't reflect CLI changes, operator confusion | Known issue |
| No checksum verification (#42) | Downloaded package integrity not verified - supply chain risk | Not implemented |
| Mudi v2 / Mudi 7 support (#84, #86) | Newer GL.iNet hardware not supported | Requested, no timeline |
by Aurelien FERMAN is an alternative implementation addressing Blue Merle's limitations. Currently in development for red team operators.
| Feature | Blue Merle | Red Merle (planned) |
|---|---|---|
| IMEI generation | Random TAC from hardcoded list, no band validation | Band-aware TAC selection matching modem's actual LTE bands |
| IMEI validation | Basic Luhn check digit | Luhn + TAC-to-band mapping + carrier plausibility check |
| Frequency band filter | None (issue #1 open since 2022) | Filter TAC database by EP06-E/A bands (B1/B3/B5/B7/B8/B20/B28/B32/B38/B40/B41) |
| GPS tracking prevention | Not implemented | Block LPP/SUPL/RRLP at modem level via AT commands |
| DNS management | Not implemented | Flush DNS cache + resolver on identity swap |
| BSSID vendor | Random (may generate invalid OUI) | Use real vendor OUIs from common AP manufacturers only |
| Modem control | Always on | Auto-disable cellular when on trusted Wi-Fi |
| System log cleaning | Only /etc/oui-tertf (client MACs) |
|
| Integrity verification | No checksums | Signed releases with SHA256 verification |
| Hardware support | GL-E750 Mudi v1 only | Mudi v1 + v2 + Mudi 7 (planned) |
| OPSEC automation | Manual wizard | Full automated identity rotation pipeline |
System log cleaning - what Blue Merle misses:
Blue Merle only wipes /etc/oui-tertf (connected client MACs). But OpenWrt and the Mudi retain many other forensic artifacts that leak identity across SIM swaps:
| Log / Artifact | Location | What it leaks | Blue Merle | Red Merle |
|---|---|---|---|---|
| Client MAC database | /etc/oui-tertf |
All devices that ever connected | ||
| System log (syslog) | /var/log/syslog, logread buffer |
IMEI changes, modem events, IP addresses, timestamps | ||
| Kernel ring buffer | dmesg |
USB events, modem attach, driver loads with serial numbers | ||
| DHCP leases | /tmp/dhcp.leases |
Client hostnames + MACs + IPs | ||
| DNS cache (dnsmasq) | /tmp/dnsmasq.d/ |
All domains queried by clients | ||
| Modem AT log | gl_modem history |
Previous IMEI values, AT commands issued | ||
| Wi-Fi association log | hostapd log |
Client MACs + connection times | ||
| Shell history | ~/.ash_history |
Commands run by operator (including blue-merle) | ||
| OpenVPN / WireGuard logs | /tmp/openvpn*.log, wg show |
VPN server IPs, connection times | ||
| Tor state | /var/lib/tor/ |
Guard nodes, circuits, timestamps | ||
| Crash dumps | /tmp/dumps/ |
System state at crash time | ||
| Connection tracking | conntrack -L |
Active/recent network connections with IPs |
Forensic scenario: Device is seized. Blue Merle wiped the client MACs, but dmesg shows the old IMEI in modem attach logs, /tmp/dhcp.leases has client hostnames, logread shows timestamps of IMEI changes, and .ash_history contains the exact blue-merle commands run. All of this links the current identity to previous ones.
Why band-aware IMEI matters: The Quectel EP06-E supports LTE bands B1/B3/B5/B7/B8/B20/B28/B32/B38/B40/B41. If Blue Merle generates an IMEI with a TAC from a device that only supports B2/B4/B12/B66 (common US-only phone), the carrier sees a device claiming to be that phone model but connecting on bands it shouldn't support. This is an instant red flag for carrier-level analysis.
Generate random valid IMEIs using real TAC prefixes from popular devices (same database as Blue Merle). Luhn check digit calculated automatically. Use the AT command output directly with gl_modem AT on the Mudi router.
AT commands for the Quectel EP06-E/A baseband used in the Mudi router. These are sent via gl_modem AT <command> or directly to the serial device.
| Command | Description |
|---|---|
AT+GSN |
Read current IMEI |
AT+EGMR=1,7,"IMEI" |
Write new IMEI (15 digits) |
AT+CIMI |
Read IMSI from SIM |
AT+CCID |
Read SIM ICCID |
AT+CFUN=0 |
Minimum functionality (SIM init) |
AT+CFUN=1 |
Full functionality (radio on) |
AT+CFUN=4 |
Disable RF (airplane mode) |
AT+COPS? |
Current operator |
AT+COPS=? |
Scan available operators |
AT+CREG? |
Registration status |
AT+CSQ |
Signal strength |
AT+QENG="servingcell" |
Current cell info (MCC, MNC, LAC, CellID) |
AT+QNWINFO |
Network mode and band |
# Most Linux systems with USB modems
# Find the modem device
ls /dev/ttyUSB* /dev/ttyACM*
# Send AT command via screen
screen /dev/ttyUSB2 115200
# Or via echo
echo -e "AT+GSN\r" > /dev/ttyUSB2
cat /dev/ttyUSB2
# Or via mmcli (ModemManager)
mmcli -m 0 --command="AT+GSN"
# Check IMEI
mmcli -m 0 --command="AT+GSN"
# Check signal
mmcli -m 0 --command="AT+CSQ"
# Check operator
mmcli -m 0 --command="AT+COPS?"
IMSI catchers are rogue base stations that force nearby phones to connect to them, revealing their IMSI and IMEI. Used by law enforcement and intelligence agencies.
| Device | Type | Range |
|---|---|---|
| Harris StingRay II | Active (2G/3G) | ~1 km |
| Harris Hailstorm | 4G/LTE capable | ~1 km |
| Septier Guardian | Passive + Active | Variable |
| PixieStrike | SDR-based | ~500 m |
| DRT 1301C (Dirtbox) | Aircraft-mounted | ~30 km radius |
Detection indicators:
SS7 (Signaling System 7) is the protocol suite used by telecom operators to exchange signaling information. It was designed in the 1970s with no authentication, and remains exploitable today. An attacker with SS7 access (via a rogue operator, compromised node, or purchased access) can target any subscriber worldwide.
| Attack | SS7 Message | Impact |
|---|---|---|
| Location tracking | SendRoutingInfo + ProvideSubscriberInfo | Get target's current cell tower (real-time) |
| SMS interception | RegisterSS / UpdateLocation | Redirect incoming SMS to attacker's MSC |
| Call interception | InsertSubscriberData | Redirect calls through attacker |
| 2FA bypass | SMS interception chain | Capture OTP codes sent via SMS |
| Subscriber info | AnyTimeInterrogation | Query IMSI, MSISDN, current location |
| DoS | CancelLocation / DeleteSubscriberData | Deregister target from network |
Mitigation: SS7 attacks cannot be mitigated by the end user. Use Signal/Session for messaging instead of SMS. Never use SMS-based 2FA for critical accounts. Use TOTP or hardware keys.
A silent SMS (Type 0 SMS, also called a stealth ping) is a specially crafted SMS that does not display any notification on the target phone. It forces the phone to respond to the network, revealing its current cell tower location.
How it works:
1. Attacker sends Type 0 SMS to target MSISDN
2. Network delivers SMS to phone
3. Phone acknowledges receipt (network-level)
4. No notification shown to user
5. Attacker queries network for delivery report
-> Report includes serving cell ID = location
Detection:
- SnoopSnitch (Android, Qualcomm): logs silent SMS
- Some custom Android ROMs expose Type 0 in logs
- Baseband-level detection only (not visible to OS)
Usage: law enforcement uses thousands per investigation
Germany: 600,000+ silent SMS in 2018 (Bundestag data)
Downgrade attacks force a phone from a secure protocol (4G/5G) to an insecure one (2G/GSM). In 2G, encryption is weak (A5/1) or absent (A5/0), and there is no mutual authentication.
| Technique | Method |
|---|---|
| IMSI catcher jamming | Jam 4G/3G bands, phone falls back to 2G |
| Fake BTS with 2G only | Advertise only GSM on a fake tower |
| RRC redirect | Send RRC Connection Release with redirect to 2G frequency |
| Disable VoLTE | Force voice calls over 2G circuit-switched (CS) fallback |
Mitigation on Android (GrapheneOS / stock):
*#*#4636#*#* > Phone information > Set preferred network type| Tool | Platform | Method |
|---|---|---|
| SnoopSnitch | Android (rooted, Qualcomm) | Baseband analysis, detection events |
| AIMSICD | Android | Cell tower anomaly detection |
| Crocodile Hunter | Linux + SDR | 4G/LTE IMSI catcher detection |
| Rayhunter | Orbic mobile hotspot | Cell site simulator detection (EFF) |
| Seaglass | Wardriving | Cell tower mapping + anomaly |
| GSM Map | Web | Network security rating by country |
Mobile apps like OnOff, Hushed, Burner, etc. installed on your personal phone provide ZERO anonymity.
| What you think | What actually happens |
|---|---|
| "I have a separate number, I'm anonymous" | The app runs on YOUR device with YOUR IMEI. The app provider associates your real IMEI/IMSI with the virtual number. |
| "They can't link my virtual number to me" | The app requires Google Play / App Store account = linked to your real identity. App analytics collect device fingerprint. |
| "OnOff gives me privacy" | OnOff's servers log your real IP, device ID, and IMEI. A single subpoena to OnOff reveals your real identity behind every virtual number. |
| "It's like a burner phone" | A real burner has a separate IMEI + separate IMSI + separate location. An app on your phone shares ALL of these with your real identity. |
The only acceptable use of virtual numbers:
Rule of thumb: If the virtual number app is installed on a device that has ever had your real SIM, consider that number permanently linked to your real identity.
| Country | Anonymous Prepaid SIM | Notes |
|---|---|---|
| UK | Yes | No ID required for purchase |
| USA | Yes | Most carriers, no ID |
| Germany | No | ID verification since 2017 |
| France | Varies | ID required by law but verification varies. Some retailers accept fake/invalid ID without checking. Not officially anonymous but practically possible in many cases. |
| Netherlands | Yes | No registration needed |
| Czech Republic | No | ID required |
| Poland | No | ID required since 2016 |
| Spain | No | ID required |
| Japan | No | ID + address required |
| Brazil | No | CPF required |
Note: laws change frequently. Always verify current local regulations.
Block ALL RF emissions (cellular, Wi-Fi, Bluetooth, NFC, GPS) to prevent tracking when the device should be silent.
| Solution | RF Attenuation | Reliability | Cost |
|---|---|---|---|
| Faraday bags (Mission Darkness, Silent Pocket) | >80 dB | High (tested) | $15-50 |
| DIY aluminum foil (multiple layers) | 20-40 dB | ~$0 | |
| Faraday pouch (generic) | >60 dB | Medium (verify) | $10-30 |
| Faraday phone sleeve | >60 dB | Medium | $20-40 |
Always test before trusting: Put your phone in the bag, call it from another phone. If it rings, the bag doesn't work.
Airplane mode is NOT equivalent:
Coming soon: Cyber Aurelien Guidi plans to open an OPSEC gear shop with tested Faraday bags, burner accessories, and privacy hardware. Stay tuned.
Principle: each identity/operation gets its own
device, SIM, location pattern, and behavior profile.
Example compartmentalization:
Identity A (personal):
- Personal phone, personal SIM
- Home/work locations
- Personal accounts
Identity B (operational):
- Burner phone, cash-bought prepaid SIM
- Never near home/work
- Dedicated accounts (created over Tor)
- Used only for specific operation
Identity C (communication):
- Separate burner for encrypted comms
- Signal/Session with dedicated number
- Never used for any other purpose
Rules:
- Identities NEVER share devices or SIMs
- Identities NEVER co-locate (same cell tower)
- Identities NEVER contact each other
- Identities have different usage time patterns
SIM cloning involves duplicating the authentication key (Ki) stored on a SIM card. With a cloned SIM, an attacker can impersonate the subscriber on the network.
| Method | Feasibility | Notes |
|---|---|---|
| Over-the-air (OTA) key extraction | Rare | Requires exploitable SIM applet (JavaCard) |
| Physical reader + brute force | Possible (old SIMs) | Comp128v1 vulnerable, modern SIMs use Milenage |
| SIM swap via social engineering | Common | Attacker convinces carrier to port number |
| Insider threat at carrier | Possible | Employee with HLR/HSS access can extract Ki |
| IMSI-catcher relay | Active attack | MITM relays auth, does not extract Ki |
SIM swap is a social engineering attack where the attacker convinces the mobile carrier to transfer the target's phone number to a SIM the attacker controls.
Attack flow:
1. Attacker gathers target's personal info
(name, DOB, last 4 SSN, address)
2. Calls carrier support, impersonates target
3. Requests number port to new SIM
4. Carrier deactivates target's SIM
5. Attacker receives all SMS (including 2FA codes)
6. Attacker accesses email, banking, crypto
Defenses:
- Set carrier PIN/passcode (T-Mobile, AT&T, etc.)
- Port freeze / number lock with carrier
- Never use SMS-based 2FA for critical accounts
- Use TOTP (Aegis, KeePassXC) or hardware keys (YubiKey)
- Monitor for sudden loss of cellular service
| Aspect | Physical SIM | eSIM |
|---|---|---|
| Anonymity | Can buy prepaid with cash | Requires online account + payment |
| Cloning risk | Physical access needed | No physical extraction possible |
| Remote wipe | Not possible | Carrier can remotely delete profile |
| Forensic extraction | SIM reader tools | Requires device-level access |
| Multi-profile | One SIM per slot | Multiple profiles, switch in software |
| IMSI catcher | Same exposure | Same exposure (IMSI still broadcast) |
| OPSEC advantage | Disposable, no digital trail | Persistent digital trail, harder to discard |
For anonymity: physical prepaid SIM purchased with cash remains superior. eSIM creates a digital paper trail through the provisioning process (email, payment, IP address).
The SIM Toolkit is a set of commands built into the SIM card by the carrier. The SIM can run applets (JavaCard) that execute independently of the phone OS.
STK capabilities (carrier-controlled):
- Display messages on screen
- Send SMS silently
- Make calls
- Request location data
- Open browser to URL
- Access device info
OPSEC concern:
- STK applets run BELOW the OS (on SIM processor)
- Cannot be inspected or controlled by Android/iOS
- Carrier can push OTA updates to SIM applets
- Simjacker attack (2019): exploit STK S@T Browser
to silently execute commands on target phone
Mitigation:
- Use a clean prepaid SIM from a trusted source
- PySIM can read and audit SIM applets
- Some custom ROMs allow disabling STK
The network always knows which cell tower(s) your phone is connected to. With timing advance data from multiple towers, location can be narrowed significantly.
| Method | Accuracy | Requires |
|---|---|---|
| Single tower (Cell-ID) | 1-10 km (rural), 100-300 m (urban) | Phone registered to network |
| Timing advance (TA) | ~550 m per TA unit | Phone transmitting |
| Triangulation (3+ towers) | 50-300 m | Multiple towers in range |
| E-CID (Enhanced Cell-ID) | 50-150 m | LTE network with TA + AoA |
| OTDOA (LTE) | 20-50 m | LTE positioning reference signals |
| U-TDOA (uplink) | 10-50 m | Network-side measurement |
Historical cell site location information (CSLI) is logged by the operator and available to law enforcement. It can reconstruct your movements over months or years.
| Technology | Accuracy | Notes |
|---|---|---|
| GPS (standalone) | 3-5 m | Satellite-based, works without network |
| A-GPS (assisted) | 1-3 m | Uses cell network to speed up GPS fix |
| Wi-Fi positioning | 10-30 m | Triangulates from known AP locations (Apple/Google DB) |
| Bluetooth beacons | 1-5 m | BLE beacons (retail tracking, AirTag network) |
| IP geolocation | 1-50 km | Based on ISP allocation, very imprecise |
| Ultra-Wideband (UWB) | 10-30 cm | Short range, Apple/Samsung device finding |
1. Airplane mode
+ Disables cellular/Wi-Fi/Bluetooth at OS level
- Baseband firmware may still respond to network
- NOT a guarantee of radio silence
2. Faraday bag
+ Physically blocks all RF (cellular, Wi-Fi, BT, GPS, NFC)
+ Testable: call the phone, it should go to voicemail
- Must be properly sealed (no gaps)
3. Power off
+ Most radios off
- Some devices have "find my phone" that works powered off
- Baseband can theoretically wake on certain signals
4. Battery removal
+ Guarantees no transmission
- Most modern phones have non-removable batteries
5. Leave device at home
+ No location data generated at destination
- Creates "gap" in your location timeline (suspicious)
6. Burner device
+ Fresh identity per operation
- Must never co-locate with personal device
Everything that transits the cellular network unencrypted is visible to the carrier. Even encrypted traffic reveals metadata.
| Data | Visible to Carrier | Notes |
|---|---|---|
| Call records (CDR) | Yes | Source, destination, duration, cell tower |
| SMS content | Yes | Plaintext in transit (no E2E encryption) |
| Data destinations | Yes (IP level) | DNS queries, IP addresses visited |
| HTTPS content | No | Encrypted, but SNI may leak domain |
| VPN usage | Visible as VPN | Carrier sees VPN server IP, not content |
| Location (cell tower) | Always | Logged per connection/handover |
| IMEI + IMSI | Always | Logged per session |
| VoLTE call content | No (encrypted) | But metadata (CDR) still logged |
| RCS messages | Varies | May not be E2E encrypted (carrier-dependent) |
The recommended mobile OS for OPSEC. See the dedicated GrapheneOS cheatsheet for full installation and hardening guide.
| Feature | OPSEC Benefit |
|---|---|
| No Google telemetry | No background data collection to Google |
| Sandboxed Google Play | Google services run as regular app, no special privileges |
| Per-app network toggle | Deny internet access to any app |
| Per-app sensor toggle | Block accelerometer, gyroscope, compass per app |
| Per-connection MAC randomization | New MAC for every Wi-Fi connection |
| Auto-reboot timer | Clears encryption keys from memory after timeout |
| Verified boot + locked bootloader | Tamper detection on boot |
| Hardened memory allocator | hardened_malloc reduces exploitation surface |
| Feature | GrapheneOS | CalyxOS | LineageOS | Stock Android | iOS |
|---|---|---|---|---|---|
| Google telemetry | None | Minimal (microG) | Optional GApps | Full | N/A (Apple) |
| Verified boot | Yes (locked BL) | Yes | No (unlocked BL) | Yes | Yes |
| Baseband isolation | Pixel IOMMU | Pixel IOMMU | Varies | Varies | Apple co-proc |
| Network per-app | Yes | No | No | No | No (limited) |
| Sensor per-app | Yes | No | No | No | Partial |
| MAC randomization | Per-connection | Per-network | Per-network | Per-network | Per-network |
| Exploit mitigations | Aggressive | Stock AOSP | Stock AOSP | Stock AOSP | Strong |
| Update speed | Same-day | Delayed | Delayed | Carrier-dep. | Same-day |
Android Debug Bridge (ADB) is a powerful debug interface. If enabled, it grants shell-level access to the device via USB or Wi-Fi.
Risks of ADB enabled:
- USB connected computer gets shell access
- Can install APKs, extract data, read logs
- ADB over Wi-Fi: any device on same network can connect
- Juice jacking: malicious chargers can exploit ADB
- Law enforcement: plug in device, extract everything
Hardening:
- Disable USB debugging when not needed
- Disable "ADB over network" always
- Use charge-only USB cables (no data pins)
- On GrapheneOS: USB-C port can be set to
charge-only mode (Settings > Security)
- Review authorized ADB keys regularly
- Revoke all USB debugging authorizations
(Settings > Developer options > Revoke)
Locked bootloader:
- Verifies boot image signature on every boot
- Prevents loading modified OS images
- Required for verified boot chain
- GrapheneOS: re-lock after installation
Unlocked bootloader:
- Anyone with physical access can flash new OS
- Can boot custom recovery (TWRP)
- Can extract data via custom recovery
- Tamper detection broken
OPSEC implications:
- Always re-lock bootloader after OS install
- Unlocked bootloader + physical access = full compromise
- GrapheneOS supports locked BL (unlike most custom ROMs)
- LineageOS requires unlocked BL = weaker physical security
- Check state: fastboot oem device-info
VoLTE (Voice over LTE) and VoNR (Voice over New Radio / 5G) encrypt voice calls at the transport layer, unlike legacy 2G/3G circuit-switched calls.
| Protocol | Encryption | Vulnerability |
|---|---|---|
| GSM (2G) voice | A5/1 (broken) or A5/0 (none) | Trivially intercepted with RTL-SDR + Kraken |
| UMTS (3G) voice | KASUMI (weakened) | Practical attacks exist, harder than 2G |
| VoLTE (4G) | IPsec between phone and eNodeB | Encrypted transport, but carrier sees plaintext |
| VoNR (5G) | IPsec + 256-bit keys | Stronger crypto, carrier still has access |
| VoWiFi (Wi-Fi Calling) | IPsec tunnel to carrier | Encrypted, carrier terminates tunnel |
Key point: VoLTE/VoNR encrypt the radio link only. The carrier decrypts at their infrastructure. For true end-to-end voice privacy, use Signal or similar.
RCS (Rich Communication Services) is the successor to SMS. Google Messages supports RCS with end-to-end encryption (E2EE) for 1:1 conversations, but with major caveats.
RCS security caveats:
- E2EE only between Google Messages users
(not Samsung Messages, not carrier RCS)
- Group chats: E2EE added in 2024, verify support
- Fallback to SMS/MMS if E2EE unavailable
- Metadata (who, when, frequency) visible to carrier
- RCS profile data shared with carrier
- No forward secrecy in some implementations
- Apple iMessage-to-RCS: NOT end-to-end encrypted
- Cross-platform (Android-to-iPhone via RCS): no E2EE
For OPSEC: do not rely on RCS.
Use Signal, Session, or Briar instead.
| App | Protocol | Metadata | Registration |
|---|---|---|---|
| Signal | Signal Protocol (E2EE) | Minimal (sealed sender) | Phone number |
| Session | Session Protocol over onion routing | None (decentralized) | No phone/email |
| Briar | Bramble (E2EE) | Tor-routed | No registration |
| SimpleX | Double Ratchet | No user identifiers | None |
| Wire | Proteus (E2EE) | Some server-side | Email or phone |
| Method | Security | Notes |
|---|---|---|
| Signal voice call | E2EE (Signal Protocol) | Best option for encrypted calls |
| Session voice | E2EE over onion routing | No phone number, higher latency |
| Briar (local) | E2EE over Wi-Fi/BT | No internet required, short range |
| VoLTE | Transport encryption only | Carrier has plaintext access |
| Regular call (2G/3G) | Weak or no encryption | Trivially intercepted |
The baseband processor is a separate CPU in your phone that handles all cellular communication. It runs its own real-time OS (usually proprietary), has DMA access to main memory on some architectures, and processes untrusted input from cell towers.
Baseband architecture:
+------------------+ +------------------+
| Application | | Baseband |
| Processor (AP) | | Processor (BP) |
| - Android/iOS | | - Qualcomm MDM |
| - User apps | | - Samsung Shannon|
| - Linux kernel | | - Intel XMM |
| | | - MediaTek |
+--------+---------+ +--------+---------+
| Shared memory / |
| USB / PCIe / UART |
+------------------------+
| On some devices: |
| DMA (Direct Memory |
| Access) = BP can |
| read/write AP RAM |
+------------------------+
Attack surface:
- OTA: malformed RRC, NAS, SMS-PP messages
- Rogue base station sending crafted signaling
- No ASLR, no stack canaries on most basebands
- Bugs = remote code execution on BP
- BP compromise may pivot to AP via shared memory
| CVE / Research | Target | Impact |
|---|---|---|
| CVE-2023-24033 | Samsung Exynos (Shannon) | RCE via Internet-to-baseband, no user interaction |
| CVE-2023-26072-26076 | Samsung Shannon | Multiple OTA code execution bugs |
| Baseband exploit (Amat Cama, 2016) | Qualcomm MDM | RCE via crafted LTE message |
| 5Ghoul (2023) | Qualcomm + MediaTek 5G | DoS + downgrade via NR RRC |
| Shannon fuzzing (Google P0, 2023) | Samsung Shannon | Multiple memory corruption bugs |
| Baseband RCE via SMS-PP (2020) | MediaTek | Code execution via crafted SMS |
What a network observer (carrier, state actor, MITM) can determine from your cellular data traffic, even when encrypted.
Traffic analysis techniques:
1. Website fingerprinting
- HTTPS hides content but not packet sizes/timing
- ML classifiers can identify visited sites
- Especially effective on mobile (predictable patterns)
2. App identification
- Each app has distinct traffic patterns
- Push notification timing reveals app usage
- API endpoint IPs identify the service
3. Encrypted DNS leaks
- Default: DNS queries sent in plaintext to carrier
- Even with DoH/DoT: resolver IP visible
- DNS over Tor: best option for DNS privacy
4. VPN detection
- Carrier sees VPN tunnel establishment
- Traffic volume/timing still visible
- WireGuard has distinctive handshake pattern
- OpenVPN can be fingerprinted (DPI)
Mitigations:
- Use VPN (hides destination IPs from carrier)
- Use Tor (hides traffic patterns via onion routing)
- Use DNS over HTTPS/TLS (hides DNS queries)
- Mudi router with VPN: all device traffic tunneled
MDM solutions (Intune, Jamf, MobileIron, Workspace ONE) give an organization remote control over enrolled devices.
| Capability | Risk |
|---|---|
| Remote wipe | Full device erase at any time |
| Location tracking | Real-time GPS via MDM agent |
| App inventory | List all installed apps |
| Network config | Force VPN/proxy (inspect traffic) |
| Certificate install | MITM HTTPS via trusted CA cert |
| Remote lock | Lock device with custom message |
| Compliance check | Detect root, custom ROM, sideloaded apps |
If a device has MDM:
- Never use it for sensitive operations
- MDM can see all network traffic (if VPN forced)
- MDM CA cert enables TLS interception
- App inventory reveals operational tools
- Location tracked continuously
Approaches:
- Use a completely separate, non-enrolled device
- Personal device with no MDM profile
- Check: Settings > General > VPN & Device Mgmt (iOS)
- Check: Settings > Security > Device admin apps (Android)
- GrapheneOS: cannot be enrolled in most MDM
(no Google device policy support unless sandboxed Play)
Do NOT attempt to remove MDM from a corporate device.
The removal itself is logged and creates an incident.
Use a clean, separate device.
Tools law enforcement and forensic analysts use to extract data from seized phones.
| Tool | Capability |
|---|---|
| Cellebrite UFED | Full filesystem extraction, app data, deleted data |
| GrayKey (Grayshift) | iPhone/Android passcode brute force + extraction |
| MSAB XRY | Logical + physical extraction, cloud token pulls |
| Oxygen Forensic Detective | Cloud data, app analysis, drone/IoT data |
| Magnet AXIOM | Cross-platform forensic analysis suite |
Forensic extraction levels:
1. Logical: app data, contacts, messages, call logs
- Easiest, works on most locked devices
2. Filesystem: full file tree including deleted files
- Requires exploit or unlocked bootloader
3. Physical: bit-for-bit chip dump
- Raw NAND image, recovers deleted data
- Requires chip-off or JTAG/ISP
Defenses:
- Strong alphanumeric passcode (not 4/6-digit PIN)
- GrapheneOS auto-reboot timer (clears keys from RAM)
- BFU state (Before First Unlock) limits extraction
- USB restricted mode (GrapheneOS, iOS)
- Full-disk encryption (default on modern Android/iOS)
| Tool | Description |
|---|---|
| PySIM | Read, explore, and program SIM/USIM cards |
| SIMTrace2 | Hardware SIM-phone communication tracer |
| swSIM | Software-only SIM card emulation |
| osmo-remsim | Remote SIM forwarding over TCP/IP |
| QCSuper | Capture raw radio frames from Qualcomm baseband |
| SCAT | Parse Qualcomm/Samsung baseband diagnostics |
| FirmWire | Baseband firmware emulation platform |
| lpac | eSIM Local Profile Assistant implementation |
| OpenEUICC | Open-source eSIM LPA for Android |
| Tool | Description |
|---|---|
| gr-gsm | GNU Radio blocks for GSM reception |
| rtl-sdr | DVB dongle as cheap SDR receiver |
| Kalibrate | GSM base station scanner and calibrator |
| LTESniffer | Open-source LTE eavesdropper |
| Modmobmap | Map cellular networks with smartphones |
| UERANSIM | 5G UE and gNodeB simulator |
| srsRAN | Complete open-source 5G RAN |
| Open5GS | Open-source 5G/4G core network |
| Tool | Platform | Method |
|---|---|---|
| SnoopSnitch | Android (Qualcomm) | Baseband analysis |
| Rayhunter | Orbic mobile hotspot | Cell site simulator detection |
| AIMSICD | Android | Cell tower anomalies |
| Crocodile Hunter | Linux + SDR | 4G/LTE detection (EFF) |
| IMSI-catcher | Linux + gr-gsm | Python passive capture |
| Tool | Description |
|---|---|
| 5Ghoul | 5G NR attack and fuzzing framework |
| SIPVicious | SIP/VoIP security audit toolkit |
| SigFW | Signaling firewall for SS7/Diameter |
| CryptoMobile | Mobile crypto algorithms (Milenage, TUAK) |
| Pycrate | Mobile protocol encoder/decoder |
| SiGploit | SS7/GTP/Diameter signaling exploitation |
| ss7MAPer | SS7 MAP protocol testing tool |
awesome-telco - Comprehensive curated list of telco open-source tools, SDR resources, and 5G/4G/2G projects.