反编译
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哈希值的校验
可参考下列文章:
任意数据备份
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。
1 条评论
1