abdou-4/ROM-Level-Spyware-Investigation
GitHub: abdou-4/ROM-Level-Spyware-Investigation
Stars: 0 | Forks: 0
# 📡 Infinix X6532 ROM-Level Spyware Investigation
## ⚠️ TL;DR
| Finding | Severity | Fixable Without Root? |
|---|---|---|
| Chrome homepage hijacked to `page.portals.mobi` → leaks device hardware ID over plain HTTP | 🔴 Critical | ✅ Yes |
| Base `android` process phones home to `gslb.shalltry.com` at every boot | 🔴 Critical | ⚠️ Partial (DNS block) |
| TPMS (`com.hoffnung`) beacons to `ire-dsu.shalltry.com` (Alibaba Cloud) | 🔴 High | ⚠️ Partial |
| Dynamic Bar builds a "One-ID" cross-device profile via `ire-oneid.shalltry.com` | 🟠 Medium | ⚠️ Partial |
| 10 plain HTTP connections (no TLS) including device-ID transmission | 🟠 Medium | ⚠️ Partial |
## 📋 Device Information
| Field | Value |
|---|---|
| **Model** | Infinix X6532 |
| **OS** | XOS 14.0.1 (Android 14) |
| **Manufacturer** | Transsion Holdings |
| **Capture tool** | PCAPdroid |
| **Capture date** | 2026-05-28 |
| **Capture duration** | ~16 minutes (17:10 → 17:26 UTC+1) |
| **Total connections logged** | 251 |
## 🔬 Methodology
Traffic was captured using **PCAPdroid** (no root required) running in VPN-mode on the device itself, which intercepts all outgoing connections at the application layer. No external hardware was used.
[Android App] → [PCAPdroid VPN Interface] → [Real Internet]
↓
Captured PCAP/CSV
Analyzed offline
The capture was done on a **fresh boot + idle session + one manual Chrome open** to trigger the hijack.
## 🔍 Finding 1 — Chrome Browser Hijack (ROM-level)
### What happens
Every time Chrome is opened, the factory-configured new-tab/homepage silently fires a request to `page.portals.mobi` **before** loading Google. The redirect completes in ~1 seconds — the "blink" users notice.
### The URL
http://page.portals.mobi/sp/m/Infinix%20X6532
?p=X6532-OP ← Model + operator code
&uid=8188[...] ← Persistent hardware device ID ⚠️
&gaid=00000000-[...] ← Google Ad ID (zeroed out = tracking disabled)
### Traffic timeline (from PCAP, 17:25:33)
| Time (UTC+1) | Event | Bytes |
|---|---|---|
| `17:25:33.082` | Chrome DNS query #1 → `page.portals.mobi` | 63 sent / 211 rcvd |
| `17:25:33.088` | Chrome DNS query #2 (redundant) | 63 sent / 165 rcvd |
| `17:25:33.139` | First HTTP GET → `13.207.64.198:80` | 100 sent / 88 rcvd |
| `17:25:33.307–.373` | 3× redirect probes (100 bytes each) | — |
| `17:25:33.442` | Full HTTP exchange (device ID transmitted) | 767 sent / 684 rcvd |
### Why it's dangerous
- Transmitted over **plain HTTP (port 80)** — zero encryption
- Anyone on the same Wi-Fi (café, hotel, university) can intercept the `uid=` parameter
- The UID `8188[...]` is a **persistent hardware identifier** — it doesn't reset with a factory reset
- Host resolves to **Microsoft Azure** (`13.207.64.198`) — Transsion pays to run this infrastructure commercially
### Root cause
Transsion/Infinix pre-programs Chrome's homepage or new-tab URL in the factory ROM. This is **not a virus or a user action** — it ships this way.
## 🔍 Finding 2 — Transsion `shalltry.com` Tracking Network
### Connection table
| Process | Package | Domain | Resolved IP | Cloud Provider |
|---|---|---|---|---|
| Android (base OS) | `android` | `gslb.shalltry.com` | `154.85.94.35` | Unknown |
| TPMS | `com.hoffnung` | `ire-dsu.shalltry.com` | `47.254.156.191` | Alibaba Cloud |
| Dynamic Bar | `com.transsion.dynamicbar` | `ire-oneid.shalltry.com` | `3.160.188.22` | AWS (Ireland) |
### What `ire-oneid` means
`ire` = Ireland (EU data center), `oneid` = One-ID program. This is Transsion's attempt to build a **persistent cross-device identity** tied to hardware — similar to Apple's IDFA or Google's GAID but entirely proprietary and non-resettable.
### Data volumes (16-minute capture)
- `shalltry.com` total: **6,129 bytes sent / 11,480 bytes received**
- 6 connections across 3 subdomains
- All connections begin **within 1 second of capture start** (i.e., at boot)
## 📊 Traffic Breakdown
Total connections : 251
├── Chrome : 69 (Google services, hijack traffic)
├── Firefox : 67 (Mozilla + uBlock updates — clean)
├── Instagram : 42 (Meta CDN/QUIC — expected)
├── Google Play : 22 (update checks — expected)
├── Android (OS) : 14 ⚠️ includes shalltry.com
├── Play Services : 13 (FCM push — expected)
├── WhatsApp : 6 (expected)
├── TPMS : 2 ⚠️ shalltry.com
├── Dynamic Bar : 2 ⚠️ shalltry.com
└── Other : 14
Protocol split:
DNS : 118 (47%)
HTTPS : 59 (24%)
QUIC : 30 (12%)
HTTP : 10 (4%) ← unencrypted ⚠️
TLS : 12 (5%)
Other : 22 (9%)
## 🛡️ Mitigations
### Fix 1 — Stop the Chrome Hijack (Easy, ~2 minutes)
Chrome → ⋮ → Settings → Homepage
→ Toggle OFF or set to: https://www.google.com
Chrome → ⋮ → Settings → New tab page
→ Set to: Default Google or Blank
Alternatively, use **Firefox** as your default browser — it has no such hijack in this ROM.
### Fix 2 — Block shalltry.com at DNS Level (Recommended)
Set your device or router DNS to a filtering resolver:
**Option A — AdGuard DNS (free)**
DNS-over-HTTPS: https://dns.adguard-dns.com/dns-query
IPv4: 94.140.14.14 / 94.140.15.15
**Option B — NextDNS (recommended for visibility)**
1. Create a free account at nextdns.io
2. Add custom block rule: *.shalltry.com
3. Apply profile DNS to your Wi-Fi
On Android: `Settings → Wi-Fi → [Your network] → Advanced → Private DNS`
Enter: `dns.adguard-dns.com` (or your NextDNS hostname)
### Fix 3 — Disable TPMS and Dynamic Bar
needs to enable devloper option → usb debbugger → disable it using Universal Android Debloater
### Fix 4 — Nuclear Option (Advanced)
## 🔗 References & Related Work
- [Transsion Holdings — Wikipedia](https://en.wikipedia.org/wiki/Transsion)
- [shalltry.com WHOIS](https://whois.domaintools.com/shalltry.com)
- [PCAPdroid — Open Source Android Traffic Capture](https://github.com/emanuele-f/PCAPdroid)
- [Prior art: Transsion malware reports (2019, BuzzFeed News)](https://www.buzzfeednews.com/article/nicolenguyen/tecno-phones-preinstalled-malware-transsion)
- [XDA Developers — Infinix X6532](https://xdaforum.com)
## 📌 Disclosure Notes
- No proprietary keys, tokens, or user credentials are included in this repository.
- The `uid=` parameter is a hardware device identifier belonging to the researcher's own device.
- This research was conducted on a personally-owned device for educational and portfolio purposes.
- Transsion Holdings was not contacted prior to publication (behavior is ROM-level by design, not a vulnerability).
## 👤 Author
Security research conducted as part of SOC analyst portfolio development.
Tools used: PCAPdroid · Wireshark-compatible PCAP analysis