面向 Android 的零信任蜂窝防御子服务(IMSI-Catcher、2G SMS Blaster 和 4G aLTEr 检测与安全路由)
RadioGuard 是一款开源、生产就绪且符合 Google Play 商店规范的 Android 安全应用程序及后台子服务。它能够主动检测恶意蜂窝基站(IMSI 捕获器 / 蜂窝站点模拟器 / 短信轰炸器),识别恶意的 2G/4G 蜂窝操纵行为,并部署加密安全路由隔离机制,以保护处于不可信蜂窝链路上的移动设备。
蜂窝网络(2G、3G 和 4G LTE)存在基础性协议弱点:
RadioGuard 理念:将蜂窝链路视为不可信的公共网络(零信任无线电)。手机不再寄希望于基站是合法的,而是自主监控蜂窝遥测数据,并将流量封装在经过认证的加密隧道中。
┌─────────────────────────────────────────────────────────────────────────────┐
│ RadioGuard 架构拓扑 │
├─────────────────────────────────────────────────────────────────────────────┤
│ [ UI 层 (Jetpack Compose) ] │
│ • DashboardScreen:实时威胁仪表、活动遥测、控制项 │
│ • Device Integrity Banner:显示内核/root 入侵警告 │
│ • Forensic Incident Exporter:生成 JSON 证据转储 │
├─────────────────────────────────────────────────────────────────────────────┤
│ [ 核心服务层 ] │
│ • RadioGuardService:监控 TelephonyCallback 的前台哨兵 │
│ • Telemetry Liveness Watchdog:每 5 秒轮询调制解调器以对抗 RIL 冻结 │
│ • Emergency 911/112 Fail-Safe:通话期间自动暂停 killswitch │
│ • SafeTunnelVpnService:原生 VPN killswitch(TunnelCrack 加固) │
│ • ShizukuRadioBridge:特权非 root 频段锁定器与飞行模式脉冲 │
├─────────────────────────────────────────────────────────────────────────────┤
│ [ 分析引擎 ] │
│ • AnomalyEngine:归一化贝叶斯多因子异常评分 │
│ • Macro-Cell Shadow Clone Detector:阶跃梯度 Delta-RSRP 追踪 │
│ • Hysteresis Buffer:2 样本窗口过滤载波聚合抖动 │
│ • SmsFilterHelper:PDU 检查器,捕获 Type-0 静默短信 ping │
├─────────────────────────────────────────────────────────────────────────────┤
│ [ 存储与完整性层 ] │
│ • TowerDatabase (Room SQLite):本地 OpenCelliD / BeaconDB 基线 │
│ • Circular Storage Pruning:将事件日志上限设为 1,000 条以防止 DoS │
│ • AppIntegrityValidator:运行时 SHA-256 APK 签名证书验证 │
│ • RuntimeAntiHijackGuard:反 ptrace 与 /proc/self/maps 钩子扫描器 │
│ • DeviceIntegritySentry:硬件 TEE、SELinux 与 rootkit 审计器 │
└─────────────────────────────────────────────────────────────────────────────┘
VpnService 并启用 setBlocking(true) 作为操作系统强制执行的 killswitch。/1 路由拆分:通过将路由拆分为 0.0.0.0/1 和 128.0.0.0/1,覆盖任何恶意本地子网路由重定向,从而击败 TunnelCrack (CVE-2023-36672 / CVE-2023-35838)。9.9.9.9、1.1.1.1)并配合 SPKI 证书固定,防止隧道建立前的 aLTEr DNS 劫持。TelephonyCallback.CallStateListener。ByteBuffer.allocate(32768))和 PDU 字节数组均经过严格边界检查。溢出会抛出受管理的 IndexOutOfBoundsException,而不会损坏内存。pruneOldIncidents)设置上限,仅保留最新 1,000 条记录,防止恶意基站填满设备闪存。RadioGuard 已针对已公开的绕过技术进行了加固:
为确保 RadioGuard 不会被恶意应用或本地恶意软件入侵:
AppIntegrityValidator.kt):
Process.killProcess())。RuntimeAntiHijackGuard.kt):
/proc/self/status。检测 ptrace 附加、gdb 和 Frida 代理。/proc/self/maps 以查找动态库注入(frida-agent.so、xposed.so、zygisk、sandhook)。/system/bin/cmd 路径,并从子进程执行环境中剥离 。UI 使用 Jetpack Compose (Material 3) 构建,采用深色网络防御主题:
项目包含一个可执行的验证测试套件(test_suite.py),用于验证所有算法、状态转换和数学边界:
python test_suite.py
test_01_normal_macro_cell_passes ......................... [OK]
test_02_involuntary_2g_downgrade ......................... [OK]
test_03_macro_cell_shadow_clone_jump ..................... [OK]
test_04_hysteresis_filtering ............................. [OK]
test_05_spatial_drift_detection .......................... [OK]
test_06_tunnelcrack_dual_route_coverage .................. [OK]
test_07_storage_bounds_circular_pruning .................. [OK]
test_08_emergency_call_fail_safe_transitions ............. [OK]
Ran 8 tests in 0.001s - OK (100% Passing)
此外,Android Studio / Gradle 构建的单元测试位于:
将 RadioGuard 提交到 Google Play 开发者控制台时,请按如下方式声明权限:
# Clone or open workspace
cd C:\Users\pushk\.gemini\antigravity\scratch\radioguard
# Build debug APK
./gradlew assembleDebug
# Build release APK (configured with ProGuard & R8)
./gradlew assembleRelease
su 二进制文件、Magisk、处于 Permissive 模式的 SELinux、test-keys 或缺失的硬件 KeyStore/TEE)。| 攻击向量 | 来源论文 / CVE | 加固对策 |
|---|
| 宏蜂窝影子克隆 | USENIX Security (FBS-Radar) | 阶跃梯度追踪:标记相同 Cell ID 在 $< 4\text{ 秒}$ 内出现 $\Delta\text{RSRP} > 25\text{ dB}$ 的突然激增。 |
| TunnelCrack VPN 绕过 | USENIX Security (CVE-2023-36672) | 双 /1 路由拆分:0.0.0.0/1 和 128.0.0.0/1 覆盖任何恶意本地子网重定向。 |
| aLTEr DNS 引导劫持 | IEEE S&P (CVE-2018-18544) | IP 字面量与 SPKI 固定:直接连接到硬编码解析器 IP(9.9.9.9),消除明文引导 DNS。 |
| 基带 RIL 冻结 | Black Hat / ACM CCS | 遥测活性看门狗:如果回调停滞超过 $> 12\text{ 秒}$,则每 5 秒主动轮询调制解调器遥测。 |
| 载波聚合抖动 | 真实世界 LTE 部署 | 迟滞缓冲区:在宣布关键隔离之前,需要在 10 秒内连续 2 个异常周期。 |
LD_PRELOAD| 权限 | Play 商店政策理由 |
|---|
ACCESS_FINE_LOCATION | Android 操作系统查询 CellIdentity(Cell ID、TAC、PCI)所必需。请在应用的隐私政策中明确说明,坐标仅在设备本地根据离线 SQLite 数据库进行评估,且绝不会传输到任何远程服务器。 |
FOREGROUND_SERVICE 与 FOREGROUND_SERVICE_CONNECTED_DEVICE | 持续实时后台监控基带状态变化和恶意基站诱捕所必需。 |
BIND_VPN_SERVICE | 提供本地回环隔离隧道和原生操作系统 kill-switch 以隔离不可信蜂窝链路所必需。 |