Android 应用之安全开发

本文探讨了Android应用面临的安全问题,包括病毒、关键信息泄露、APP重打包、进程劫持、数据传输劫持等,并详细阐述了基础安全措施,如Manifest文件安全设置、组件安全策略、反调试与反篡改方法。此外,还强调了数据安全的重要性,如SQLite安全、剪贴板保护、密钥管理等,以及Webview和弱加密风险的防范。最后提及其他风险,如谨慎使用高风险函数和重要函数逻辑安全。建议开发者采取多种措施增强Android应用的安全性。
摘要由CSDN通过智能技术生成

大佬:“这个 APP 破解下,可以兼容客户已出货的产品”
我:“这个不合适吧”
大佬:“这个客户对我们很重要”
我:“好吧”
然后,就是通过反编译某 APP ,分析蓝牙交互协议,在新的 APP 中去兼容已出货的设备,达到无缝对接。 –这种场景在开发中还是比较经常碰到的。

一、引言

随着移动互联网向社会生活的各个领域渗透,APP 的使用越来越广泛。但 Android 系统由于其开源的属性,市场上针对开源代码定制的 ROM 参差不齐(特别中国区域),在系统层面的安全防范和易损性都不一样,Android 应用市场对 APP 的审核相对 iOS 来说也比较宽泛,市场上一些主流的 APP 虽然多少都做了一些安全防范,但由于大部分 APP 不涉及资金安全,所以对安全的重视程度不够;而且由于安全是门系统学科,绝大部分 APP 层的开发人员缺乏对 APP 安全意识及措施,导致被有心者有机可乘。

Android 开发是当前最火的话题之一,但很少开发者会讨论这个领域的安全问题,除了专业从业者,但移动应用安全隐患也给发展带来了挑战。

  • 开发团队通常将精力集中在产品设计、功能实现、用户体验和系统效率等方面,而很少考虑安全问题;
  • 与一切都是集中管理的 iOS 相比,Android 提供了一种开放的环境,在获得了灵活性、可以满足各种定制需求的同时,也损失了部分安全性;
  • Android 提供的安全机制比较复杂,开发者需要理解它们,并对常见的攻击思路和攻击方法有所了解,才能有效地保护软件;
  • 目前很少出现对特定移动软件安全漏洞的大规模针对性攻击,在真实的攻击出现之前,许多人对此并不重视。

声明,我不是专业的安全人员,从事的跟安全工作也没有什么关系,本文从自已平时涉及的项目出发,对客户端的代码质量、代码篡改、不安全的数据储存、不安全的通信、不安全的认证、加密不足等安全问题作了说明,从普通开发者角度尽量去提高自已的 APP 安全,以降低代码安全漏洞,减少代码被利用的可能性,避免信任危机、经济损失和法律风险。

二、移动应用面临的安全问题

2.1 病毒

Android 病毒就是手机木马,主要是一些恶意的应用程序。手机木马有的独立存在,有的则伪装成图片文件的方式附在正版 APP 上,隐蔽性极强,部分病毒还会出现变种,并且一代比一代更强大。

这些病毒有一些通用的特征:

  • 母包 + 恶意子包的运行机制
  • 通过技术手段防止用户通过正常途径卸载
  • 以窃取用户账户资金为目的
  • 以短信作为指令通道
2.2 关键信息泄露(反编译)

虽然 Java 代码一般要做混淆,但是 Android 的几大组件的创建方式是依赖注入的方式,因此不能被混淆,而且目前常用的一些反编译工具比如 Apktool 等能够毫不费劲的还原 Java 里的明文信息,Native 里的库信息也可以通过 objdump 或 IDA 获取。因此一旦 Java 或 Native 代码里存在明文敏感信息,基本上是毫无安全而言的。

2.3 APP 重打包

即反编译后重新加入恶意的代码逻辑,从新打包一个 APK 文件。重打包的目的一般都是上面提到和病毒结合,对正版 APK 进行解包,插入恶意病毒后重新打包并发布,因此伪装性很强。截住 APP 重打包就一定程度上防止了病毒的传播。

2.4 进程被劫持

一般通过进程注入或者调试进程的方式来 Hook 进程,改变程序运行的逻辑和顺序,获取程序运行的内存信息,也就是用户所有的行为都被监控起来,这也是盗取帐号密码最常用的一种方式。

当然 Hook 行为不一定完全是恶意的,比如有些安全软件会利用 Hook 的功能做主动防御。一般来说,Hook 需要获取 root 权限或者跟被 Hook 进程相同的权限,因此如果你的手机没有被 root,而且是正版 APK 的话,被注入还是很困难的。

2.5 数据在传输过程中遭劫持

传输过程最常见的劫持就是中间人攻击。很多安全要求较高的应用程序要求所有的业务请求都是通过 Https,但是 Https 的中间人攻击也逐渐多了起来,而且在实际使用中,证书交换和验证在一些山寨手机或者非主流 ROM 上面存在一些问题,让 Https 的使用碰到阻碍。

2.6 键盘输入安全隐患

支付密码一般是通过键盘输入的,键盘输入的安全直接影响了密码的安全。键盘的安全隐患来自三个方面:

  • 使用第三方输入法,则所有的点击事件在技术上都可以被三方输入法截取,如果不小心使用了一些不合法的输入法,或者输入法把采集的信息上传并且泄露,后果是不堪设想的。
  • 截屏,该方法需要手机具有 root 权限,才能跑起截屏软件
  • getevent,通过读取系统驱动层 dev/input/event1 中的信息,获取手机触屏的位置坐标,在结合键盘的布局,就能算出来事件跟具体数字的映射关系,这也是目前比较常用的攻击方式。
2.7 Webview 漏洞

由于现在 Hybrid APP 的盛行(混合开发),Webview 在 APP 的使用也是越来越多,Android 系统 Webview 存在一些漏洞,造成 js 提权。最为著名的就是传说中 js 注入漏洞和 webkit xss 漏洞。

三、基础安全

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值