"/>
申明:该文章仅供安全学习和技术分享,请勿将该文章和文章中提到的技术用于违法活动上,切勿在非授权状态下对其他站点进行测试,如产生任何后果皆由读者本人承担! 如有侵权,请联系后台进行删除。转载请注明出处,感谢! 今天是放假的最后一天,祝大家新年快乐,明天开工大吉! 0x02 Android 移动客户端程序安全上一篇文章中我们讲解了 Android 渗透测试中最基础的内容,也是前期需要准备的内容,本文则对第一个 Android 渗透测试基础项中的大项「Android 移动客户端程序安全」做了相关的讲解,在实际的 Android 移动端渗透测试中,只需要按照我们所有的测试项走一遍即可。 本章的内容主要分为五个部分:
接下来让我们一起看下相关的操作吧。 1. 安装包签名和证书1.1 问题说明检测 APP 移动客户端是否经过了正确签名,通过检测签名,可以检测出安装包在签名后是否被修改过。如果 APP 使用了 debug 进行证书签名,那么 APP 中一部分 signature 级别的权限控制就会失效,导致攻击者可以编写安装恶意 APP 直接替换掉原来的客户端。 ❝ 1.2 测试步骤这里使用到 keytool 工具查看签名 (MobSF),检查签名信息是否正确。
也可以使用 JADX-GUI 直接查看证书情况,该工具的使用我们后面会单独写一篇文章进行讲解。 1.3 修复建议建议移动客户端不要使用第三方开发商的证书进行签名,而是使用自己的证书进行签名后进行发布,这样可以防止第三方开发商内部监管异常,造成证书滥用的情况出现。 2. 应用程序数据可备份2.1 问题说明在 Android 2.1 以上的系统中可以为 App 提供应用程序数据的备份和恢复功能,这些功能由 AndroidMainfest.xml 文件中的 allowBackup 属性值进行控制,其默认的值为 true。当 allowBackup 的值设置为 true 时,就可通过 adb backup 和 adb restore 来进行备份和恢复应用程序数据,这样是可能获取到明文存储的用户敏感信息。 2.2 测试步骤检查 AndroidManifest.xml 文件中的 allowBackup 属性 (MobSF) 是否显式设置为 false。这里使用的工具是 Jadx,对于新版本的 Jadx 也是可以直接查看 apk 签名和证书的。如果 allowBackup 的值为 true 则说明存在问题。相关案例:Android App AllowBackup 漏洞:https://blog.csdn.net/zihao2012/article/details/44220389 2.3 修复建议建议将 allowBackup 属性显式地设置为 false,这样就可以关闭应用数据备份功能;也可以使用具有本地数据加密功能的安全加固方案对本地数据进行加密,从而避免本地数据地泄露。 3. 移动客户端程序保护3.1 问题说明如果移动客户端的代码没有被相应加固保护,则很容易被攻击者破解进行反编译,通过反编译攻击者可以获取到移动客户端的源代码。 3.2 测试步骤尝试使用 Apktool 反编译 APK 检查是否能够正常反编译,如果能反编译就分析核心功能的 Java 代码。这里也可以使用 Jadx进行反编译,查看 APK 是否进行了加固,是否进行了代码混淆,如果没有则说明存在问题。 如下图所示,经过混淆保护的代码,其最明显的特征是大部分类和变量名都被替换为简单的 abcd 字母。 3.3 修复建议建议对移动客户端进行加壳处理以防止攻击者直接反编译移动客户端 APP,同时最好对移动客户端 APP 的代码进行混淆处理。 4. Debug 模式4.1 问题说明APP 软件 AndroidManifest.xml 中的属性值 android:debuggable 如果为 true,那么 APP 可以被 Java 调试工具例如 JDB 等进行调试。当 APP 被调试工具进行调试后可以获取和篡改用户敏感信息,甚至可以分析然后修改代码以实现恶意的业务逻辑,我们经常使用 android.util.Log 来打印日志,而 APP 发布后调试日志能被其他开发者看到,APP 就容易被反编译破解。 4.2 测试步骤检查 AndroidManifest.xml 文件中的 debuggable 属性 (MobSF),检查其是否能被调试。如果没有设置 debuggable 属性,该属性默认为 false。 4.3 修复建议建议移动客户端 APP 在正式上线之前关闭 Debug 模式,这样移动客户端 APP 在进行正常的业务逻辑时就不会打印任何有关用户和服务器的敏感信息了。 5. 应用完整性校验5.1 问题说明APK 应用完整性即移动客户端程序安装后,在每次启动时都会对自身文件进行完整性进行校验。防止攻击者通过反编译的方法在客户端程序中植入自己的木马,客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。 5.2 测试步骤5.2.1 使用 Apktools 反编译 APK 文件在公众号后台回复「0206」获取 Apktool 工具。 进入 apktool 文件夹下,输入以下命令,反编译 APK 文件:
反编译结果,生成同名文件夹。 5.2.2 修改编译后的文件这里可以选择修改 smali 文件或者修改图片内容,这里选择修改 smail 文件。
这里我们打开res/values/strings.xml文件,修改app的名字 5.2.3 重新打包如果出现下面这种情况,则说明打包失败,该 APP 存在完整性校验,如果打包完成则需要更进一步的测试来确定是否真的存在完整性问题。
5.2.4 签名如果打包成功了,接下来我们就对 APK 文件进行签名。 同样在公众号后台回复「0206」获取 APK 签名工具。 创建自己的证书。
查看证书信息。
使用签名工具将刚才我们自己创建的证书对修改后的 APK 文件进行签名。 签名成功。 5.3 修复建议在 Android 模拟器或者安卓手机上面安装打包后的 APP,看是否可以成功安装,如果可以成功安装则说明存在「完整性校验问题」,如果不能安装成功,则说明不存在「完整性问题」。 上一篇:DVWA搭建教程 下一篇:爆破工具Hydra |