02-ue-android-sim
Phase 2 - UE, Android, and SIM Security Assessment
Keep this phase focused on devices, SIMs, and applications that you own or are explicitly authorized to assess.
Subscriber-side claims stay measured, not asserted. CellScope's pixel / nasdiag read what the handset reports; ~/code/CodeCollector/mobility/lab supplies the identity-privacy ground-truth table (null-scheme vs concealed SUCI vs 4G IMSI-in-clear). See Phase1_Core_Simulation for the loop.
Purpose
This phase evaluates subscriber-side risk without requiring RF transmission. It is the fastest way to start collecting useful findings while your core lab is being stabilized.
Two tools make "the handset exposes X" a measured, reproducible claim: CellScope reads what the device reports, and lab/ supplies the ground truth for identity-privacy behavior.
Primary assessment questions
| Area | Question | Typical evidence |
|---|---|---|
| Carrier app exposure | Do carrier apps over-collect, trust weak TLS paths, or expose sensitive functions? | Traffic captures, manifest review, exported component review |
| Device telephony exposure | Are diagnostic, telephony, or local management surfaces overly permissive? | Device inventory, service list, allowed/blocked interfaces |
| SIM and eSIM controls | Are subscriber identifiers, SIM services, and OTA features appropriately constrained? | SIM file inventory, enabled services, provisioning notes |
| Privacy posture | Does the device expose more identity or cell data than expected? | CellScope pixel snapshot, dumpsys output, cell inventory, settings state |
Tooling for this phase
| Tool | Repo | Role in Phase 2 |
|---|---|---|
| CellScope | ~/code/CodeCollector/mobility/cellscope |
The pixel source reads a rooted Pixel 9's Android CellInfo — serving/neighbor cells, bands, identifiers the handset chooses to expose — into the dashboard. Passive, your-own-device only. |
CellScope nasdiag (device-side) |
~/code/CodeCollector/mobility/cellscope |
Planned/under-test source that reads your own phone's pre-cipher NAS identity + auth handshake from a rooted Qualcomm/DIAG device and scores IMSI-catcher anomalies. Use offline replay today. |
| Lab | ~/code/CodeCollector/mobility/lab |
Ground truth for identity privacy: 5gsa-up (5G SUCI behavior) vs 4g-up (LTE, IMSI in clear). Specialty SUCI toggles from the old mini-lab are archived under lab/archive/mini-lab/ — see lab/docs/MIGRATION-FROM-MINI-LAB.md. |
Recommended workflow
- Build a device baseline: OS version, patch level, baseband version, carrier profile, root state.
- Inventory carrier and telephony apps and document the components worth reviewing.
- Validate proxying, capture, and logging on your own device before testing any workflow.
- Review SIM/eSIM identity and service configuration using approved lab SIM material.
- Snapshot the handset with CellScope (
SOURCE=pixel) so device-reported cell/identity state is captured as evidence, not memory. - Record findings as control weaknesses, not just interesting behaviors.
Outputs expected from this phase
- Device baseline sheet
- Carrier-app traffic summary
- SIM/eSIM service inventory
- CellScope
pixelsnapshot of what the handset reports (cells, bands, exposed identifiers) - Privacy observations tied to specific controls or misconfigurations
- A short list of tests to repeat later when the RF and core phases are active
Assessment themes
1. Device and carrier-app review
Focus on:
- Traffic visibility and TLS behavior
- Exported activities, services, and receivers
- Secrets stored on-device
- Debug or diagnostic functions exposed to normal users
2. Telephony and local interface review
Focus on:
- Which device interfaces are reachable without elevated access
- Which telephony metadata can be read locally
- Whether debug surfaces are consistently disabled, gated, or logged
3. SIM and OTA posture
Focus on:
- What identity and service files are present
- Whether OTA-related services are enabled where they should not be
- Whether the SIM profile matches the intended lab or operator role
4. Evidence and decision points
Capture enough detail to answer:
- Is this a lab-only artifact or a production-relevant weakness?
- Does the issue require rooted/device-admin access, subscriber access, or operator access?
- Can the finding be traced to a compensating control, or is it currently unmonitored?
Verify it with your own tools
The verification question in Phase 2 is: does the subscriber side (SIM profile + handset) actually conceal permanent identity the way policy says it should? You answer it by comparing the handset's real behavior against the lab ground truth from Phase 1.
Ground-truth reference (run once, in lab/):
| Lab state | Identity on the wire | CellScope verdict |
|---|---|---|
| 5G SA UE with null-scheme SUCI | SUPI sent unconcealed | flags=['supi-in-clear'] |
| 5G SA UE with Profile-A/B concealment | SUCI concealed | flags=[] |
./scripts/4g-up.sh (LTE attach) |
IMSI in the clear (LTE has no SUCI) | flags=['imsi-in-clear'] |
That table is your yardstick. It tells you exactly which CellScope flag corresponds to which real-world privacy failure, calibrated on a network you own.
Device-side check (your own handset):
cd ~/code/CodeCollector/mobility/cellscope
SOURCE=pixel ./cellscope.sh start # rooted Pixel 9 CellInfo → dashboard, http://localhost:8000
# nasdiag (pre-cipher NAS identity/auth), offline replay of your own capture:
SOURCES=nasdiag NASDIAG_REPLAY=my_device_capture.pcap ./cellscope.sh start
Pass/fail for the phase:
- SIM/eSIM control check — with a correctly-provisioned lab profile, your device's 5G registration should read like the concealed-SUCI case, not the null-scheme case. A device that reads
supi-in-clearwhere policy expects concealment is a finding. - Fallback exposure check — if the device or profile silently drops to LTE, the identity goes in the clear (
imsi-in-clear), which the Phase-3 RF work will look for over the air. Note here whether the subscriber-side configuration permits that fallback.
Companion procedures
- Support_Hardware_Pixel9
- open5gs_lab/16_android_cell_analysis
- open5gs_lab/18_test_plan_mobility_site_to_core
Exit criteria
Move on when you can clearly explain:
- What the handset exposes locally
- What the carrier-app ecosystem exposes at the application layer
- What SIM/eSIM controls are relevant to the later RF and core phases
- Which CellScope flag your own device produces against the Phase-1 ground-truth table — so Phase 3 starts from a known device baseline, not an assumption