"/>
·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
DZ插件网 门户 网站安全 查看内容

0x02Android移动客户端程序安全

2022-5-4 20:35| 发布者: admin| 查看: 307| 评论: 0|原作者: 余生安全团队

摘要: 今天是放假的最后一天,祝大家新年快乐,明天开工大吉!0x02Android移动客户端程序安全上一篇文章中我们讲解了Android渗透测...

申明:该文章仅供安全学习和技术分享,请勿将该文章和文章中提到的技术用于违法活动上,切勿在非授权状态下对其他站点进行测试,如产生任何后果皆由读者本人承担!

如有侵权,请联系后台进行删除。转载请注明出处,感谢

今天是放假的最后一天,祝大家新年快乐,明天开工大吉!

0x02 Android 移动客户端程序安全

上一篇文章中我们讲解了 Android 渗透测试中最基础的内容,也是前期需要准备的内容,本文则对第一个 Android 渗透测试基础项中的大项「Android 移动客户端程序安全」做了相关的讲解,在实际的 Android 移动端渗透测试中,只需要按照我们所有的测试项走一遍即可。

本章的内容主要分为五个部分:

  • 安装包签名和证书
  • 应用程序数据可备份
  • 移动客户端程序保护
  • Debug模式
  • 应用完整性校验

接下来让我们一起看下相关的操作吧。

1. 安装包签名和证书

1.1 问题说明

检测 APP 移动客户端是否经过了正确签名,通过检测签名,可以检测出安装包在签名后是否被修改过。如果 APP 使用了 debug 进行证书签名,那么 APP 中一部分 signature 级别的权限控制就会失效,导致攻击者可以编写安装恶意 APP 直接替换掉原来的客户端。

注:在正常的情况下 APP 都应该是经过了签名的,否则的话是不能正常安装的。

1.2 测试步骤

这里使用到 keytool 工具查看签名 (MobSF),检查签名信息是否正确。

keytool -printcert -file META-INF/CERT.RSA
# CERT.RSA 为目标 APP 的证书名

也可以使用 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 文件:

apktool d xxxxx.apk

反编译结果,生成同名文件夹。

5.2.2 修改编译后的文件

这里可以选择修改 smali 文件或者修改图片内容,这里选择修改 smail 文件。

修改图片:可以替换图片、修改图片内容,但是要保持后缀名相同
修改 Smail 文件:添加 Smail 代码,例如静态变量、函数等等,或者修改原有的 Smail 代码,但是要注意修改的内容

这里我们打开res/values/strings.xml文件,修改app的名字

5.2.3 重新打包

如果出现下面这种情况,则说明打包失败,该 APP 存在完整性校验,如果打包完成则需要更进一步的测试来确定是否真的存在完整性问题。

apktool b xxxx-release -o xxxx-release.apk

5.2.4 签名

如果打包成功了,接下来我们就对 APK 文件进行签名。

同样在公众号后台回复「0206」获取 APK 签名工具。

创建自己的证书。

keytool -genkeypair -keystore 密钥库名 -alias 密钥别名 -validity 天数 -keyalg RSA

查看证书信息。

keytool -list -v keystore 证书名字

使用签名工具将刚才我们自己创建的证书对修改后的 APK 文件进行签名。

签名成功。

5.3 修复建议

在 Android 模拟器或者安卓手机上面安装打包后的 APP,看是否可以成功安装,如果可以成功安装则说明存在「完整性校验问题」,如果不能安装成功,则说明不存在「完整性问题」。




上一篇:DVWA搭建教程
下一篇:爆破工具Hydra

鲜花

握手

雷人

路过

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.21.105.222,GMT+8, 2024-12-27 05:57 , Processed in 0.182645 second(s), 49 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯
扫一扫添加微信客服
QQ客服返回顶部
返回顶部