网络身份认证app,只能说意料之中了

最近在尝试对接virus total的api,汇总数据再交给ai分析,就能免去手动截图或者抓数据再丢给ai的步骤了。主要流程差不多走通了,今晚小修小补后,想着之前都是测试的win pe以及url,ip域名这些,于是心血来潮想找个apk来测下结果

最终决定测个来头大的,网络身份认证app。这里先不得不吐槽,下载地址只在bing和google上找到,百度上都是些自媒体彩虹屁,要不就是第三方平台的下载链接。不过我也不确定这个地址是不是官方站点,先贴出来认证一下:下载

1 个赞

由于还没有细分思考和正文,文本是混杂在一起的,这里排版把思考分开了。只能说最终结果挺意料之中的

`cyberIdentity-android.apk`
`https://www.virustotal.com/gui/file/2d2240048c656f0c660f8847c19690af29c27424dc69480d00acf3c3abdb8aa0`
Android APK.

        *   `malicious`: 0
        *   `suspicious`: 0
        *   `undetected`: 61
        *   `timeout`: 4
        *   `failure`: 2
        *   `type-unsupported`: 8
        *   *Initial Verdict based on stats*: Safe/Undetected.

        *   `tags`: `android`, `contains-elf`, `reflection`, `apk`, `checks-network-adapters`, `obfuscated`.
        *   `bundle_info`: Contains many XMLs, PNGs, and some ELF files (`.so`).
        *   `signature_info`: Null (No signature provided in JSON).

        *   Sandbox: `Zenbox android`.
        *   Verdict: `CLEAN` (Confidence 93%).
        *   *Key Signatures/Behaviors*:
            *   Internet connection (`java.net.URL.openConnection`).
            *   Debugger check (`android.os.Debug.isDebuggerConnected`).
            *   HTTPS traffic (Port 443).
            *   Reads SharedPreferences.
            *   Connects to IPs without DNS (Cloudflare/Google IPs).
            *   Obfuscated method names (14%).
            *   Loads native libraries (`RiskStub`).
            *   Queries Device ID (IMEI/SubscriberId).
            *   Accesses `/proc/self/status`.
            *   Queries WiFi access points and MAC address.
            *   Permissions: `RECORD_AUDIO`, `CAMERA`, `INTERNET`, `MODIFY_AUDIO_SETTINGS`, `WAKE_LOCK`, `WRITE_EXTERNAL_STORAGE`.
            *   Queries sensitive phone info (IMSI, model, brand, etc.).
            *   Uses Reflection.
            *   Files dropped: `/data/user/0/cn.cyberIdentity.certification/.cache/libDexHelper-x86.so` (ELF file).

        *   `Defense Evasion` (TA0030) -> `Obfuscated Files or Information` (T1406).
        *   `Discovery` (TA0032) -> `System Network Connections Discovery` (T1421), `System Information Discovery` (T1426).
        *   `Collection` (TA0035) -> `Audio Capture` (T1429).
        *   `Command and Control` (TA0011) -> `Encrypted Channel` (T1573), `Application Layer Protocol` (T1071).

    *   *Phase 1 (Stats)*: 0 malicious. -> [Safe/Suspicious].
    *   *Phase 2 (Intent)*:
        *   Persistence: Not explicitly seen.
        *   Process Hijacking: Not seen.
        *   Defense Evasion: Obfuscation and Debugger checks present.
        *   Privacy Probing: **Strong evidence**. Queries IMEI, IMSI, MAC address, WiFi networks, and requests Camera/Microphone permissions.
        *   Sensitive Outbound: HTTPS to various IPs.
    *   *Phase 3 (MITRE)*: Hits Collection (Audio) and Discovery (Device IDs).
    *   *Phase 4 (Special)*: APK file, dynamic data available.
    *   *Synthesis*: While antivirus engines say "Clean", the behavior is highly invasive. It collects unique hardware identifiers and has permissions for audio/camera. This is typical of "Spyware" or "Aggressive Telemetry". However, since no engine flagged it and the sandbox says "Clean", it might be a legitimate (though privacy-invasive) corporate/identity app. But from a security expert's perspective, the combination of *Obfuscation + Device ID harvesting + Audio/Camera permissions* is a red flag.
    *   *Final Verdict*: **[可疑 (Suspicious)]**. It's not "Malicious" in the sense of destroying data, but it's "Suspicious" due to high-privacy-risk behaviors and obfuscation.

    *   *A. Analysis Stats*: 0/61. Explain "blacklist" (matching known bad hashes).
    *   *B. Static Attributes*: Mention obfuscation and the ELF file in the bundle.
    *   *C. Intention & Behaviour*: Focus on the "Privacy Probing" (IMEI, MAC, Audio/Camera).
    *   *D. MITRE Cards*:
        *   Defense Evasion (T1406)
        *   Discovery (T1421, T1426)
        *   Collection (T1429)
        *   C2 (T1573, T1071)
    *   *E. Final Judgment*: Explain the gap between "AV Clean" and "Behavioral Risk".

**页面访问地址**: VirusTotal
**定性判断**: [可疑]

**报告说明**:
该样本是一个 Android 安装包 (APK)。虽然所有主流杀毒引擎均未将其标记为恶意,且沙箱初步判定为"干净",但深度行为分析显示该程序具有极强的**隐私探测**和**环境感知**能力,并采用了代码混淆技术。这种"引擎未检出但行为激进"的特征,使其被定性为 [可疑]。


A. 扫描结果综述 (Analysis Stats)

  • **总览**:0 恶意 / 0 可疑 / 61 未检出 (总数 77)
  • **核心检出**:无引擎报毒。
  • **判决依据**:
    • 绝大多数引擎采用的是 `blacklist`(黑名单)检测法。这意味着该文件的哈希值尚未被任何厂商记录在已知恶意软件库中。
    • **风险提示**:黑名单检测无法识别"零日漏洞"或"定制化开发"的间谍软件。由于该样本采用了代码混淆(Obfuscated),极有可能在规避静态特征扫描。

B. 静态特征解析 (Static Attributes)

  • **签名信誉**:未发现有效的签名信息(JSON 中 `signature_info` 为空)。缺乏权威签名意味着该软件的来源不可信,且无法保证在传输过程中未被篡改。
  • **结构指纹**:
    • **文件类型**:Android APK,内部包含大量 XML 资源和 6 个 ELF 格式的原生库(`.so` 文件)。
    • **关键标签**:`obfuscated`(已混淆)、`reflection`(使用了反射机制)、`contains-elf`(包含原生二进制代码)。
    • **异常点**:使用了反射机制(Reflection),这通常被用于在运行时动态调用隐藏函数,是恶意软件隐藏真实意图的常用手段。
  • **标签摘要**:`android`, `apk`, `obfuscated`, `reflection`。

C. 行为意图分析 (Intention & Behaviour)

**汇总全量沙箱数据 (Zenbox android)**:

  • **持久化/自启动**:未发现明显的自启动注册行为。
  • **防御/隐藏行为**:
    • **反调试**:调用 `android.os.Debug.isDebuggerConnected` 检查是否被调试器监控。
    • **代码混淆**:检测到 14% 的方法名经过混淆处理,旨在增加逆向分析难度。
    • **动态加载**:释放并加载了原生库 `libDexHelper-x86.so`,可能用于在内存中动态执行代码。
  • **网络/IO 动作**:
    • **隐私探测(高危)**:程序尝试获取极其敏感的设备唯一标识,包括 **IMEI/MEID/ESN (SubscriberId)**、**Android ID**、**MAC 地址** 以及 **IMSI**。
    • **权限请求(高危)**:申请了 `RECORD_AUDIO`(后台录音)、`CAMERA`(拍照/录像)、`WRITE_EXTERNAL_STORAGE`(读写存储)等高危权限。
    • **网络外联**:通过 HTTPS (Port 443) 与多个 IP 通信,部分连接直接通过 IP 访问而未经过 DNS 解析(常见于规避 DNS 监控)。

D. MITRE ATT&CK 战术详解 (战术卡片)

  • **[战术卡片: Defense Evasion - 防御规避]**

    • **什么是此战术?**: 病毒试图让自己"隐身",避免被安全软件发现或被分析人员捕捉。
    • **命中的具体技术**:
      • **ID: T1406 (Obfuscated Files or Information - 混淆文件或信息)**:
        • **官方原理**: 通过加密、编码或混淆代码,使分析人员难以阅读代码逻辑。
        • **本样本表现**: 样本中 14% 的方法名被混淆,且使用了 Java 反射机制。
        • **实际危害**: 隐藏了程序的真实功能,使得安全专家难以快速判定其是否在窃取数据。
  • **[战术卡片: Discovery - 探测/发现]**

    • **什么是此战术?**: 病毒在进入系统后,先像"侦察兵"一样收集环境信息,确定目标的价值或寻找攻击路径。
    • **命中的具体技术**:
      • **ID: T1421 (System Network Connections Discovery - 系统网络连接探测)**:
        • **官方原理**: 检查网络状态、WiFi 信息或周围的网络设备。
        • **本样本表现**: 调用 `ConnectivityManager` 和 `WifiManager` 检查网络连接及配置的 WiFi 接入点。
        • **实际危害**: 确定受害者的地理位置或网络环境。
      • **ID: T1426 (System Information Discovery - 系统信息探测)**:
        • **官方原理**: 获取设备的硬件型号、操作系统版本、唯一识别码等。
        • **本样本表现**: 强制查询 IMEI、IMSI、设备品牌、型号及 Android ID。
        • **实际危害**: 实现对特定用户的"精准标记",即使卸载重装也能通过硬件 ID 重新识别用户。
  • **[战术卡片: Collection - 资源收集]**

    • **什么是此战术?**: 病毒开始执行其核心目的,搜集用户感兴趣的敏感数据。
    • **命中的具体技术**:
      • **ID: T1429 (Audio Capture - 音频捕获)**:
        • **官方原理**: 利用系统 API 秘密录制用户的对话或周围环境声音。
        • **本样本表现**: 申请并持有 `android.permission.RECORD_AUDIO` 权限。
        • **实际危害**: 可能在用户不知情的情况下进行后台监听,严重侵犯隐私。
  • **[战术卡片: Command and Control - 命令与控制]**

    • **什么是此战术?**: 病毒与远程服务器建立通信,接收指令或上传窃取的数据。
    • **命中的具体技术**:
      • **ID: T1573 (Encrypted Channel - 加密信道)**:
        • **官方原理**: 使用加密协议(如 HTTPS)隐藏通信内容,防止被网络防火墙拦截。
        • **本样本表现**: 所有外联流量均通过 TLS 1.2 加密传输至 443 端口。
        • **实际危害**: 使得网络管理员无法通过流量分析发现其正在上传的敏感隐私数据。
      • **ID: T1071 (Application Layer Protocol - 应用层协议)**:
        • **官方原理**: 伪装成正常的网页浏览流量(HTTP/HTTPS)来掩盖恶意通信。
        • **本样本表现**: 使用标准的 HTTPS 协议与 Google 及 Cloudflare 基础设施通信。
        • **实际危害**: 恶意流量混在正常的网页流量中,极难被识别。

E. 专家最终判决依据

该样本虽然在杀毒引擎层面表现为"安全",但其行为模式呈现出典型的**间谍软件 (Spyware)** 特征:

  1. **极强的隐私侵入性**:它不仅请求摄像头和麦克风权限,还执着于获取 IMEI、IMSI 等硬件级唯一标识符。这超出了绝大多数普通 App 的功能需求。
  2. **刻意的隐蔽手段**:采用了代码混淆、反调试检查以及反射调用,这些都是为了对抗安全分析而设计的。
  3. **可疑的通信模式**:直接通过 IP 地址进行 HTTPS 连接,规避了 DNS 记录的审计。

**结论**:该文件极可能是一个用于身份追踪或隐私收集的工具。由于其行为高度敏感且具有对抗性,即便目前没有报毒,也应将其视为 **[可疑]** 样本,建议用户谨慎安装,严禁在包含敏感信息的设备上运行。

你这发的让我觉得,我应该接受心理治疗了。

因为互联网大概真的已经变成了某种不知所谓的东西

1 个赞

那个…我知道里面还有很多不必要的权限请求,但是,其他的部分,不一定是有问题

  • 代码混淆:我自己的代码都是混淆的,而且公司的代码也都要经过混淆,毕竟软著的实际保护能力大约是心理安慰级别的,而且代码混淆也不是非常安全(MegaDumper+de4dot+ILSpy已经能破解市面上90%的软件了,公司那些已经混淆的代码也可以),但是,穿个背心裤衩上街总好过裸奔
  • 使用HTTPS请求不应该是什么危险的事情吧,毕竟现在的很多操作,如果使用非加密的HTTP请求已经被认为是不安全的,很多服务会被直接拒绝。而且,这是一个网络身份认证的APP,里面肯定会传递一些用户身份数据。使用完全不加密的HTTP协议的话,那不就是…大声密谋?毕竟HTTP的数据,随便什么嗅探器都可以捕获数据。
  • 通过IP地址直连,如果IP不变的话,可以避免因为DNS污染或者其他DNS上的莫名其妙的问题,公司里面的代码也是这么干的…当然,不排除是之前的程序员偷懒留下的技术债

所以,这里看上去分析的挺多,可是,很多的报告是正常软件也会有的。

这里并不是说"这个软件就是安全的,楼主啥技术都不懂在这里吓唬大家",而是说,这个报告里的很多东西并不能成为判定软件是否危险的依据。或者用个更简单的举例:

  • 恐怖分子为了隐蔽身上携带的武器,所以要穿上衣服进行遮掩

  • 但是,这不意味着大街上穿着大衣羽绒服的人就都是恐怖分子

7 个赞

很多软件的权限索取也跟白加黑一样,不知道哪些是必要的,哪些是多余的

安卓的权限还全看开发者调的api。比如过久的版本就只有 允许/不允许,没有 仅本次允许/运行时允许 的选项

VT只做特征匹配,不会主观分析意图,这也是明面的局限性了,只能在面对来源不明的未知软件时做个参考

互联网早就成属于克系了:rofl:

如果一个身份认证的app, 不能人脸认证(摄像头和麦克风), 不能设备绑定(IMEI), 不能避免dns中间人攻击. 还必须代码开源供人寻找漏洞,

你觉得这个app 该如何实现身份认证功能?

3 个赞

这些不是问题。问题在于授权后可能不放,然后在后台就为所欲为了,像pdd之类的。而且之前微信就遇到过打完微信电话不释放麦克风权限

不得不说安卓的权限还是太拉跨了。权限看板跟个无能的丈夫一样,只能马后炮看着

1 个赞

你一个《可能》就给一个国家APP打成恶意软件了, 我看你的恶意比这个APP还大

全信AI也是牛

2 个赞

闭源软件混淆代码也正常。我觉得问题就只有读取手机三码这点

感谢提供的新思路,对错且不论,这样的报告容易看多了,相比原版(还是英文),一般只看AV检测结果,毕竟看起来太累。

这个是AI翻译的吧?安卓好像没有后台录音。

感觉 @xiaokonglong 说的也有道理。

1 个赞

标题的“意料之中”是指?我自己是网络安全从业者,说实话没看出有任何越界的地方,如果楼主一定要先射箭后画靶的话,那我也可以说我认为楼主是 50w。


首先第一点,对于代码混淆,这个是 Google 官方建议的做法,而且目的也不仅仅是增加逆向分析难度,因为混淆后的代码通常能减少体积。

相关文档:通过 R8 启用应用优化 | App quality | Android Developers

Google 原文:

混淆处理(也称为“缩减大小”):为了减小 DEX 文件的大小,R8 会缩短类、字段和方法的名称(例如, com.example.MyActivity 可能会变为 a.b.a)。


另一点,关于反射,这个本来就是 Java 的基本特性,虽然这个技术会被用于绕过一些技术能力比较垃圾的反病毒引擎,但本身在软件开发层面是非常常用的技术,只要软件有许多复杂的联网功能需求,几乎不可避免地会用到反射技术来实现高自由度的网络数据序列化与反序列化。

一个常见的基于反射技术的 Android 网络请求库: square/retrofit: A type-safe HTTP client for Android and the JVM


还有关于权限的申请,首先 Android 上的录音权限不区分前后台,RECORD_AUDIO就是单纯的录音权限,而使用录音权限的地方有很多,尤其是涉及到 KYC 的相关场景,在 KYC 阶段采集环境音是非常合理且合规的需求。

至于摄像头权限,这同样也是 KYC 阶段不可能不用的权限,不然活体检测完全没法做。


至于所谓的“部分连接直接通过 IP 访问而未经过 DNS 解析”,这其实是因为使用了 DoH / DoT,同样也是从安全角度考虑,裸 DNS 本来就更容易被劫持。


有任何不同看法?欢迎反驳。

另外再说一点,你至少应该告诉 AI 这个 App 本身具有哪些功能,这样才能让 AI 不像个无头苍蝇一样瞎分析。

至少对于现在楼主从 AI 那搬来的分析,我的看法是:傻逼。

9 个赞

明显的AI-Slop……

1 个赞

附议

同意

@Qingwa 要不要看看这里,上面有几层已经开始人身攻击了,不会又要吵起来了吧

另外, 准则 - 小众软件官方论坛 我没细看过,这种直接骂人的行为是可以接受的吗?或者说,这种程度的言论完全不算是"指名道姓"亦或是"人身攻击"?

等一下,这个结果不是 AI 扫码后得出的结论么?

所以现在是和AI吵起来了?哦不,针对AI的内容吵起来了么

不知道,应该说"现在"还没吵起来

但是我看到了这个词,所以,开始警觉了,毕竟两天前,我们刚盖了五十多层楼…两栋五十多层的楼

1 个赞

调用了 报告接口(引擎检出,静态信息)/行为接口(所有沙箱的行为分析结果)/att&ck汇总接口(所有沙箱的行为分析结果中的战术技术详细描述),组成一个大json后,用特定的提示词让ai对所有数据进行综合分析和特点格式的输出,一些词汇ai可能会进行自主翻译

1 个赞

这是gemma的分析。我就没有提供额外描述的参数。用gemma是因为api暂时是免费的,而且不调用工具(调用工具额外算费用),主观描述太多担心会有误导

你这倒提醒我完善程序逻辑。但我保持意见,官方的东西也不见那么干净,这里官方代指所有,不指一个。毕竟我这套代码打包的exe传上去分析的结果一样是可疑 :rofl:

1 个赞

这就是ai啊,我一开始就说了