当前位置: 首页 > article >正文

常规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,写写简单的逻辑,还需要对安全相关的知识有一定的了解,才可以更好的为产品客户端保驾护航!

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


http://www.kler.cn/a/106494.html

相关文章:

  • npm install命令报错:npm ERR Could not resolve dependency npm ERR peer…
  • 密码学在网络安全中的应用
  • 《基于Oracle的SQL优化》读书笔记
  • 2、开发工具和环境搭建
  • 【route】route add命令详解
  • 【代码大模型】Is Your Code Generated by ChatGPT Really Correct?论文阅读
  • MySQL比较两个表数据的差异
  • Onnx精度转换 FP32->FP16
  • 全栈经验总结(不间断更新)
  • vite vue3 ts 使用sass 设置样式变量 和重置默认样式
  • HJ18 识别有效的IP地址和掩码并进行分类统计
  • 【算法|动态规划No30】leetcode5. 最长回文子串
  • gRPC之gateway集成swagger
  • 【C#】LIMS实验室信息管理系统源码
  • 强化学习------PPO算法
  • CSGO游戏搬砖的10个冷知识,90%的人还不知道
  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能
  • 腾讯云学生专享云服务器介绍及购买攻略
  • 刷题笔记day03-链表
  • 知识图谱--Jena基础操作和检索推理应用
  • 工作之外看点书籍的一点体会
  • VC++程序崩溃时,使用Visual Studio静态分析dump文件
  • java面试--线程总结
  • LLM系列 | 22 : Code Llama实战(下篇):本地部署、量化及GPT-4对比
  • 中间件安全-CVE 复现K8sDockerJettyWebsphere漏洞复现
  • 国产服务器安装onlyoffice详细教程