Phase2_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.
Rewired to make subscriber-side claims measured, not asserted. CellScope's pixel (Android CellInfo) and nasdiag (pre-cipher NAS replay) read what the handset actually reports; mobility_lab supplies the identity-privacy ground-truth table (null-scheme vs Profile-A SUCI vs 4G IMSI-in-clear) that tells you which CellScope flag means which real failure. See Phase1_Core_Simulation for the ground-truth→observe 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.
The revamp for this cycle wires two of your own tools into the phase so that "the handset exposes X" becomes a measured, reproducible claim rather than a note: CellScope reads what the device actually reports, and mobility_lab supplies the ground truth for what the identity-privacy behavior should be.
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/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/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. |
| mobility_lab | ~/code/mobility_lab |
Ground truth for identity privacy: make suci (Profile A concealment) vs the default null-scheme UE vs make attach-4g (LTE, IMSI in clear) tells you exactly what "concealed" and "exposed" look like. |
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 mobility_lab):
| Lab state | Identity on the wire | CellScope verdict |
|---|---|---|
| Default 5G UE (null-scheme SUCI) | SUPI sent unconcealed | flags=['supi-in-clear'] |
make suci (Profile A / ECIES) |
SUCI concealed | flags=[] |
make epc + make attach-4g |
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/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
make sucicase (concealed), not the null-scheme case. A device that readssupi-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