AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)
创始人
2025-06-30 07:10:30
0
背景

随着移动应用的广泛普及,恶意软件也日趋复杂和隐蔽。本报告着眼于一个由 ReBensk 提交至 incinerator.cloud 的恶意 Android 软件样本。

样本哈希值:

MD5: 2f371969faf2dc239206e81d00c579ff

SHA-256: b3561bf581721c84fd92501e2d0886b284e8fa8e7dc193e41ab300a063dfe5f3

在 ReBensk 提交至 incinerator.cloud 的多个恶意样本中,我们特别关注了一款经过自定义修改的 APK 文件,以下简称为“样本 b356”。这个样本采用了独特的混淆和隐蔽技术,导致标准的解压缩工具无法成功解压其内容。通过特定的修正操作,我们成功突破这一限制,并进一步分析了该样本。

分析过程

1. 解压失败分析

在尝试使用 7z 工具解压这个 APK 文件时(Apk 本质上是一个 ZIP 文件),遇到错误显示 AndroidManifest.xml header 错误,这说明标准的解压过程无法正确地解压样本 b356。

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

在使用 010 Editor 打开 APK 文件并应用 ZipAdv 模板进行解析后,并未发现任何明显的错误或异常。

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

为了更深入地了解问题,我们打开了一个正常运行的 APK 文件进行对比分析。这样做是为了确定是否存在某种特殊或不规则的结构或数据,可能是导致解压失败的原因。

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

通过对比发现,我们发现样本 b356 采用了一个不非法的压缩算法 0x23C2。在标准的 ZIP 格式规范中,压缩方法由一个短整数(short)表示,取值通常如下文所示(以下代码取自 010 Editor 的 ZIPAdv.bt 模板)。由于 0x23C2 不是任何已知的标准压缩方法,因此 7z 等解压工具无法识别和处理。

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

因此,样本 b356 采用了未知的压缩算法,导致通用压缩工具解压缩失败。但为什么它能在 Android 系统上仍然可以成功安装和运行呢?

2. Android 系统的成功解析与运行原因

正如下图所示, 根据 Android 系统源代码,当系统遇到非 COMP_DEFLATE 的压缩算法时,它会采用“未压缩”(COMP_STORED)的方法处理输入文件。具体来说,系统直接读取未压缩数据的长度,并据此进行解析。

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

请注意看黄框和红框中的代码对比,在黄框中,如果使用的是 COMP_DEFLATE 压缩算法,系统将按照相应的方法解压缩,如果不是,系统将直接读取压缩前的长度,然后进行处理。

这就解释了为什么修改了 AndroidManifest 的压缩方法后,系统仍然可以正确运行。样本 b356 在正常打包流程完成后,将包中的 AndroidManifest.xml 文件内容替换为未压缩前的内容,并将压缩算法替换为非 COMP_DEFLATE 。因此,常规解压工具会失败,但 Android 系统会按照未压缩的方式处理,因此可以正常运行。

3. 解压程序的修改建议

3.1 修复 Apk

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

按照 Android 系统的处理方式,Apk 的 AndroidManifest.xml 只能采用两种压缩方式。COMP_DEFLATE 或未压缩。

如果压缩算法不是默认的 COMP_DEFLATE ,那么一定是未压缩。因此修复 apk 的方法是,如果发现压缩算法不是 COMP_DEFLATE ,将压缩算法设置为 0,即未压缩,并将压缩后的长度设置为压缩前的长度。这样,常规解压工具就可以解压了。

修复后,我们尝试使用 7-Zip(通常简称为 7z)工具进行解压,结果如下图所示。尽管仍然存在错误,特别是关于 CRC(循环冗余检查)值尚未修复的问题,但我们已成功解压了 APK 文件,并可以访问其中的 AndroidManifest.xml 内容。

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)AndroidManifest.xml 多种混淆绕过静态分析的技术分析(Zip 格式类型修改绕过)

3.2 静态分析工具的修复

静态分析工具可以按照系统的解压方式处理,如果发现 AndroidManifest.xml 的压缩方法不是 COMP_DEFLATE ,那么就读取压缩前的长度作为 AndroidManifest.xml 的内容。

总结

由于 Android 系统在解析时对非 COMP_DEFLATE 的压缩方式采取的是未压缩处理,从逻辑上看,这种做法并不符合规范,因此,导致 b356 成功地利用了这一逻辑漏洞。彻底的解决方案应该是 Android 系统按照规范的 zip 包解压格式进行处理。

来源:https://www.liansecurity.com/#/main/news/GzKmQIoBUQjGUXE22_tO/detail

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...