常规APP在客户端层面潜在应用安全问题探讨

站在安全的角度上对应用安全提出几点小疑问,以防止产品后期调整造成不必要的麻烦.所以总结一些常见的检测方案,过滤一些风险用户

没有绝对的安全, 安全都是相对的.
道高一尺魔高一丈, 逆向永远胜利!

1. 如何避免同行来爬取我们应用的素材?

对服务器压力造成压力,影响用户体验.

解决方案:

  1. 简单的做一下抓包检测
    1. OKHTTP开启证书校验功能
      1. https://ch3nye.top/Android-HTTPS%E8%AE%A4%E8%AF%81%E7%9A%84N%E7%A7%8D%E6%96%B9%E5%BC%8F%E5%92%8C%E5%AF%B9%E6%8A%97%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93/(SSLPING)
    2. 检测客户端是否使用VPN功能
      1. https://www.biaodianfu.com/android-ios-proxy-vpn.html
    3. 检测客户端是否设置了系统代理
      1. https://www.biaodianfu.com/android-ios-proxy-vpn.html
  2. 接口验签功能
    1. 对接口的参数进行验签功能(sign参数)
    2. 如果开发团队有NDK开发经验,建议写到native层上,可以过滤新手.
      1. https://developer.aliyun.com/article/1169355 NDK使用MD5算法
      2. https://blog.csdn.net/afei__/article/details/81031965 JNI动态注册

2. 盗版应用,内购功能,去广告

市场上出现大量的VIP破解版,VIP内购版,去广告绿色版. 应该尽可能的避免这类可能的出现

解决方案:

  1. APK签名校验,如果团队有能力,建议放在native层
    1. https://www.jianshu.com/p/50f2a8db2ab0
    2. https://stackoverflow.com/questions/15025304/check-apk-signature-in-c-native-code
  2. 对release版的应用做混淆
    1. https://github.com/CodingGay/BlackObfuscator
  3. 使用第三方的加固厂商保护服务(加壳)
    1. 360
    2. 腾讯
    3. 爱加密
    4. 梆梆
  4. 关键功能,核心功能应该由服务器下发接口,所有关键接口做VIP校验,本地APP只是个数据展示. 从根源上避免内购的可能

3. 如何避免用户恶意调用接口

竞品应用不具备相关能力, 会选择开通VIP或者注册大量帐号来调用我们的客户端接口以服务他们的产品使用

解决方案:

  1. 调用频率限制, 每分钟限制多少次请求.
  2. IP限制 - 当某个IP疯狂的请求接口的时候为风险用户.
  3. 帐号限制 - 一个帐号的IP频繁切换,也可视为风险用户.

4. 机刷(真实用户)问题

如果推广方案使用存在地推,或者有推广奖励的情况下,那避免不了存在机刷的可能, 如何尽可能的避免机刷(恶意用户)的存在

解决方案:
https://github.com/lamster2018/EasyProtector

  1. ROOT检测 一般的真实用户机器都是不具备ROOT权限的,把ROOT用户视为恶意用户即可
    1. https://8ksec.io/advanced-root-detection-bypass-techniques/
  2. Xposed检测, 遍历APP列表,检测是否存在xposed manager, 通过反射loadClass de.robv.android.xposed.XposedHelpers
    1. https://github.com/CrackerCat/RiskEnvDetection
    2. https://github.com/w568w/XposedChecker
  3. frida检测, 检测端口27042
    1. https://mp.weixin.qq.com/s/RzdyDWRZ4un2_mC4Om8XZg
  4. Android模拟器特征检测
    1. https://github.com/reveny/Android-Emulator-Detection

5. 总结

在客户端层面的对抗终究是有限, 你没法100%的避免破解者对客户端的破解侵入. 我们只能尽可能的给破解者提高自身产品破解难度.从而劝退一些逆向工作者,达到保护自身产品的目的.

同时,随着安全圈的资料日渐丰富,逆向工具日渐丰富完善,破解客户端的成本大幅降低,这也对Android/IOS应用开发工程师的能力提出了全新的要求,不再是简单的会开发,CURD工程师亦或者画画UI,写写简单的逻辑,还需要对安全相关的知识有一定的了解,才可以更好的为产品客户端保驾护航!

最后, 逆向工程师永远胜利!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值