themohiit/NetMirror-Malware-Analysis

GitHub: themohiit/NetMirror-Malware-Analysis

针对 NetMirror.apk 广告欺诈木马的逆向工程分析报告,揭示其 Hermes 字节码混淆、沙箱规避和隐藏 C2 基础设施等技术细节。

Stars: 1 | Forks: 0

# 技术威胁分析:NetMirror.apk(广告欺诈木马) 这是一份针对 `NetMirror.apk` 的综合技术逆向工程报告和静态证据日志。本仓库详细介绍了框架级别的规避技术、环境检测(沙箱规避),以及在应用程序二进制资产中发现的隐藏命令与控制(C2)网络。 ## 1. 技术元数据 * **包名:** `app.netmirror.netmirrornew` * **版本:** 3.0 * **Target SDK:** 35 * **Compile SDK:** 35 * **Minimum SDK:** 24 * **启动 Activity:** `app.netmirror.netmirrornew.MainActivity` * **支持架构:** `arm64-v8a`, `armeabi-v7a`, `x86`, `x86_64` ### 文件哈希 * **SHA256:** `70af4ac2a7ec38b06de4fcb6d18dcbdf7ddc2095bb8129f0f84860dcb995dc0c` * **MD5:** `aa76bd1becae0c3f8a70d2ecacc4b10d` ## 2. 结构分析与风险特征 ### 框架级混淆 通过 `apktool` 反编译显示,该应用程序的核心逻辑并非使用标准的原生 Android Java/Kotlin 编写。该应用程序使用 **React Native** 构建并编译为二进制 **Hermes Bytecode**(`assets/index.android.bundle`)。 由于标准的移动安全扫描程序主要侧重于解析 `.dex` 字节码结构,将执行逻辑封装在二进制 JavaScript bundle 中,使得该应用程序能够直接绕过自动化的特征威胁检测。 ### 清单分析与权限滥用 该清单缺少严重的高级间谍特征(如 `READ_SMS` 或 `READ_CONTACTS`)。但是,它请求了一个不寻常的高权限实用程序权限: * `android.permission.WRITE_SETTINGS` **风险机制:** 标准的流媒体应用程序没有任何合法的功能需求去修改全局系统属性。在广告欺诈和点击机器人应用程序中,此权限被大量滥用,以将物理屏幕亮度降至绝对零,并获取后台 wake locks。这使得应用程序能够保持唤醒状态,并在设备对用户来说看起来完全黑暗和闲置时,模拟隐藏的浏览器交互。 ### 环境检测(沙箱规避) 对 Hermes 二进制资产的静态字符串评估揭示了旨在识别研究环境的定位标志: * 调用标志:`isEmulatorSync`、`isTesting` * 针对虚拟化平台的环境检查字符串:`google_sdk`、`vbox86`、`Genymotion` **规避策略:** 如果内部检查检测到虚拟测试设备或自动化分析沙箱,恶意抽象层将触发休眠状态。该应用程序隐藏其命令基础设施,并作为一个原生的普通流媒体应用程序运行,从而从自动化的验证流程中获得“体检合格”的评定。 ## 3. 入侵指标 ### 可疑权限 * `android.permission.WRITE_SETTINGS` * `com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE` ### 命令与控制 (C2) 基础设施矩阵 主要基础设施目标在 JavaScript bundle 中被伪装为硬编码的 Base64 值。解码这些数据块后,揭示出了一个协调的域名矩阵,该矩阵通过网关路由脚本(`check.php`)在多个顶级域名 (TLD) 上以完全相同的方式构建: | 提取的 Base64 字符串 | 明文威胁指标 | 基础设施类型 | | --- | --- | --- | | `aHR0cHM6Ly9tb2JpZGV0ZWN0cy5saXZl` | `[https://mobidetects.live](https://mobidetects.live)` | 主要 C2 通信枢纽 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0LnBybw==` | `[https://mobidetect.pro](https://mobidetect.pro)` | 遥测日志记录 Endpoint | | `aHR0cHM6Ly9tb2JpZGV0ZWN0cy5pbms=` | `[https://mobidetects.ink](https://mobidetects.ink)` | 辅助 Botnet 集群节点 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0LmxpdmU=` | `[https://mobidetect.live](https://mobidetect.live)` | 辅助 Botnet 集群节点 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0LnN0b3Jl` | `[https://mobidetect.store](https://mobidetect.store)` | 备用镜像域名 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0LnNob3A=` | `[https://mobidetect.shop](https://mobidetect.shop)` | 备用镜像域名 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0LnNpdGU=` | `[https://mobidetect.site](https://mobidetect.site)` | 备用镜像域名 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0Lnh5eg==` | `[https://mobidetect.xyz](https://mobidetect.xyz)` | 备用镜像域名 | | `aHR0cHM6Ly9tb2JpZGV0ZWN0LmNsaWN` | `[https://mobidetect.clic](https://mobidetect.clic)` | 重定向追踪节点 | | `NoZWNrLnBocA==` | `check.php` | 网关 / 配置脚本 | ## 4. 原始提取证据日志 以下字符串片段是通过 Linux 提取流水线直接从二进制 `index.android.bundle` 中抓取的,突出了系统权限请求、环境检查标志与混淆基础设施之间的关联: ``` # --- 环境与 Context 检查 --- isEmulatorSync isTesting isTabletMode vbox86 Genymotion google_sdk android.permission.WRITE_SETTINGS # --- Base64 编码的 Infrastructure 字符串 --- aHR0cHM6Ly9tb2JpZGV0ZWN0cy5saXZl aHR0cHM6Ly9tb2JpZGV0ZWN0LmNsaWN aHR0cHM6Ly9tb2JpZGV0ZWN0cy5pbms= aHR0cHM6Ly9tb2JpZGV0ZWN0LmxpdmU= aHR0cHM6Ly9tb2JpZGV0ZWN0LnBybw== aHR0cHM6Ly9tb2JpZGV0ZWN0LnN0b3Jl aHR0cHM6Ly9tb2JpZGV0ZWN0LnNob3A= aHR0cHM6Ly9tb2JpZGV0ZWN0LnNpdGU= aHR0cHM6Ly9tb2JpZGV0ZWN0Lnh5eg== NoZWNrLnBocA== # --- Persistent Settings 操纵数据 --- saveBrightnessValue _setBottom XSRF-TOKEN csrfHeaderName WebSocketEventEnterForeground ```
标签:DAST, DNS 反向解析, IP 地址批量处理, 云资产清单, 威胁分析, 威胁情报, 安卓, 开发者工具, 恶意软件分析, 目录枚举, 移动安全, 网络信息收集, 自动化侦查工具, 逆向工程