反编译

0x01 漏洞描述

APK文件是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP。反编译apk则是将该安卓工程的源码、资源文件等内容破解出来进行分析。

0x02 漏洞危害

攻击者通过反编译可获取应用安卓客户端应用的源代码,攻击者可根据源代码获取对应接口信息,加密算法、密钥,以及一些硬编码在代码中的其他敏感信息,从而进行进一步攻击。

0x03 修复意见

  • 使用市面上安卓加固的厂商对安卓APP进行加固,比如360、梆梆等。

安装包签名

0x01 漏洞描述

Android系统要求安装的应用必须用数字证书进行签名后才能安装,并且签名证书的私钥由应用开发者保存。签名证书的生成也由开发者自己生成。在应用安装时会校验包名(package name)和签名,如果系统中已经存在了一个相同的包名和签名的应用,将会用新安装的应用替换旧的;如果包名相同但是签名不同,则会安装失败。

应用签名完后在应用的META-INF目录下会有三个文件: CERT.RSA、CERT.SF和MANIFEST.MF。

MANIFEST.MF中保存了所有其他文件的SHA1摘要并base64编码后的值。

CERT.SF文件是对MANIFEST.MF文件中的每项中的每行加上“\r\n”后,再次SHA1摘要并base64编码后的值(这是为了防止通过篡改文件和其在MANIFEST.MF中对应的SHA1摘要值来篡改APK,要对MANIFEST的内容再进行一次数字摘要)。

CERT.RSA文件:包含了签名证书的公钥信息和发布机构信息。

0x02 漏洞危害

签名信息中包含的组织信息,将便于用户识别安装包的真伪。

0x03 修复意见

  • 在应用程序发布时使用企业签名对安装包进行签名。

应用完整性

0x01 漏洞描述

客户端若未进行应用完整性校验,经二次打包后的Android APP,破解后植入恶意代码重新打包。不管从性能、用户体验、外观它都跟正规APP一模一样但是背后它确悄悄运行着可怕的程序,它会在不知不觉中浪费手机电量、流量,恶意扣费、偷窥隐私等等行为。

0x02 漏洞危害

  • 插入自己广告或者删除原来广告;
  • 恶意代码,恶意扣费、木马等;
  • 修改原来支付逻辑;

0x03 修复意见

  • 在应用发布时使用360、梆梆等安全厂商进行安全加固。
  • 对签名文件中classes.dex哈希值的校验

可参考下列文章:

android APK安全性校验

Android防重签名和二次打包

Android 应用防止被二次打包指南

任意数据备份

0x01 漏洞描述

Android属性allowBackup安全风险源于adb backup允许任何一个能够打开USB 调试开关的人,从Android手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取,adb restore允许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。

因此,当一个应用数据被备份之后,用户即可在其他Android手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打开该应用即可恢复到被备份的应用程序的状态。

0x02 漏洞危害

当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。

尤其是通讯录应用,一旦应用程序支持备份和恢复功能,攻击者即可通过adb backup和adb restore进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;

0x03 修复意见

  • 设置android:allowBackup值为false。

程序可被调试

0x01 漏洞描述

当在 AndroidManifest.xml文件中设置 android:debuggable="true"时,应用程序可以以调试模式启动,并被任意调试器附加调试。

0x02 漏洞危害

客户端若设置了可被动态调试时,增加了apk被破解、分析的风险。

目前动态调试器的功能都很强大,如果debuggable属性为true,则可轻易被调试,通常用于重要代码逻辑分析、破解付费功能等。

0x03 修复意见

  • 在应用发布时,不要将android:debuggable的值改为ture。
最后修改:2021 年 06 月 23 日 11 : 50 PM
如果觉得我的文章对你有用,请随意赞赏