娱乐、生活类APP成安全风险重灾区,APP安全何去何从

Connor 欧易交易所 2022-08-09 251 0

随着移动端用户群体的快速扩张,移动APP数量也呈现爆发式增长,进而APP自身的“脆弱性”也日益彰显。据统计,每年至少新增150万种移动恶意软件,造成超过1600万起的APP安全实践,中间包含恶意扣费、用户个人隐私泄露、资金盗刷、流量资源消耗等安全问题。在大量的APP安全事件中,主要是用户姓名、地址、账号、密码、手机号等信息泄露严重,尤其是游戏娱乐和生活服务类的APP是安全实践爆发的重灾区,这对移动用户的个人信息及财产安全带来巨大威胁和挑战。

在此背景下,本次内容将从APP应用安全的重要性、APP应用关注的安全、APP安全如何实践、APP安全的挑战四个方面进行分享,希望能为开发者带来一些新的启发。

01 APP应用安全的重要性

首先,从政策层面来说,APP应用必须符合安全合规的标准,它保证APP应用上到市场并保证APP正常运营;APP正常运营上线前,需要经过政府监管的管理部门(网信办、各地区的网安)的审查,只有通过合规检测的APP才能上线,未通过审查的会存在通报、下架风险;以下对APP安全合规检测高频的不合规事例:

1. 存在违法违规收集使用个人信息行为

未经用户同意手机使用个人信息

2. 存在应用安全漏洞

运行环境安全;

程序自身保护;

数据存储安全;

身份认证安全。

另外,从技术层面来说,APP应用如果没有做好安全防护,就算APP功能足够强大、APP用户数足够多,也无法长久正常运营。APP应用功能开发和安全防护是相辅相成的,如APP被反编译后,功能代码逻辑会被暴露、APP被二次打包后可能会存在插入恶意代码、营销广告的风险;APP被破解后,山寨版APP会出现业务逻辑漏洞。下面就针对这些情况做下简细的分析。

APP被反编译

APP实质是一个zip的压缩包,将APP反编译,其实就是一个解压缩包的过程。下图是APP反编译后的源代码。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

APP被二次打包

APP被反编译后,APP应用本身往往会被添加广告代码、被添加恶意代码,然后再进行重新编译打包、签名最终变成一个山寨盗版的APP。

展开全文

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

APP被破解

APP应用没做好安全防护,APP中存储或者读取的数据容易被盗取、关键功能逻辑容易被篡改、核心资源文件容易被盗取使用。下图就是某论坛的专业破解详情。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

02 APP应用关注的安全

作为开发人员,更多关注点可能在于APP的业务功能、APP的性能、代码逻辑、APP的代码是否存在内存泄漏、网络通信是否正常;那么作为开发者还应该关注哪方面的安全?

在移动APP安全风险问题上,应该重点关注开发阶段和运营阶段这两个阶段的防护,针对移动APP进行安全防护,下面进行罗列了,在这两阶段着重的关注点:

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

在APP合规管控越来越严格的背景下,要求APP在上架之前一定要先做好合规检测和加固处理,对APP加固可以提高APP的安全性、提高APP被逆向分析破解的门槛、同时通过加固保护可以提高过安全合规的检测。

APP加固主要是对APP中的dex文件、ELF文件、资源文件等进行保护,以下对APP中的关键文件结构做简短梳理总结:

1. APP文件结构组成

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

2. Dex文件结构

主要需要对dex文件进行防护,主要从字符串信息、代码逻辑结构,数据存储这些维度进行防护。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

3. ELF文件结构

主要需要对elf文件进行防护,主要从字符串信息、代码逻辑结构,数据存储这些维度进行防护,可以采用代码虚拟化保护技术。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

4. 资源和配置文件结构

APP配置文件,特别是xml这个文件的四大组件导出是否安全,是否被设置运行调试。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

5. 运行时的数据

APP在运行过程中,功能在执行、加解密数据在运算、网络数据包在通信。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

5.1 敏感调试输出日志

开发人员在开发调试APP过程中, 会进行做一些日志的输出,日志信息往往会记录着一些敏感信息如:用户名、密码、函数调用栈信息、Token、Cookies、网络请求IP或URL等等,在发布的APP过程中往往会漏掉或者忘记将日志输出的信息进行删除。Android的输出日志一般通过基于调用系统的log、printf等函数,然后利用android的sdk中的monitor工具就可以输出日志。这会给APP的安全带来一定的威胁,攻击者通过分析日志信息就可以作为攻击的突破点。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

5.2 运行的解密数据

APP运行过程中,APP会将一些加密数据进行解密并运算,这个过程中就要防止这些解密后的数据被分析和盗取;这个涉及APP运行的内存转存(内存dump)、APP运行过程中关键函数的HOOK。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

5.3 网络通信数据

在APP通信过程中数据传输协议以及字段数据保护。网络通信数据就是要关注APP中采用TCP、UDP、包通信包进行抓取、修改、伪装包等操作。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

03 APP安全如何实践

对APP的安全及合规检测,一般可将调试工具、静态代码、动态数据三个维度相结合,通过这三个维度,那么APP就会达到相对的安全性(没有绝对的安全)。

调试工具实践

调试工具可以分为静态和动态两种调试工具,以下是两种工具的分类:

静态调试工具分析

java层:AndroidKiller、jadx、jeb、GDA、Apktool、dex2jarnative层:IDA

动态调试工具分析

IDA、frida、xposed、Fiddler等

市面上的这些动态调试APP工具,如无法正常调试APP,这就需要使用到反调试技术和反注入技术,在APP运行的时候通过针对这些工具的一些调试原理进行相对应的安全防御方案。

静态代码防护实践

APP的静态代码主要是通过利用第三方的调试工具对APP的代码进行做反编译、分析反编译后的汇编代码。

APP涉及的汇编语言有:smali汇编、Thumb汇编、arm汇编。

对于dex文件(java代码)可以通过利用android proguard工具进行对java代码的函数名称、变量名称进行初级的混淆处理。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

静态代码实践

通过前面的方案利用工具将类名称、函数名称做了混淆,那么从代码层面上来说,我们可以从以下几个思路提高代码的安全性:

敏感数据硬编码;

代码中的敏感URL;

敏感字符串数据数据。

娱乐、生活类APP成安全风险重灾区,APP安全何去何从

动态数据防护实践

动态数据主要防护APP运行时的关键敏感数据,它也是攻击者最想要获取到的数据,通过这些数据攻击者可以做任何想做的事情。动态数据主要需要做好的防护有如下三点:

1. 内存运行数据防护

做好内存读写的监控

inotify监控读写方案

hook关键的open函数方案

做好防动态调试、防注入

注入方式:ptrace、zygote

2. 网络通信数据防护

网络数据通信包的数据加密;

网络数据通信包的数据校验;

要做好防通信数据包抓包防护。

3. 敏感日志防护

APP的发布版本需要关闭日志输出;

APP在运行时,创建或写入的敏感日志需要做好加密。

04 APP安全的挑战

据统计,超97%的Android应用遭受盗版侵袭,病毒木马肆虐、流氓软件和钓鱼应用随处可见,严重影响了开发者收益、客户端安全和体验。随着移动APP市场的逐渐成熟,威胁与发展共生:

APP应用被破解的挑战

APP安全防护技术的不断升级;

APP破解的技术也在不断更新。

APP防护技术

整体防护;

函数抽取防护;

指令抽取防护;

源代码虚拟化保护。

APP破解技术

通过ida进行dump方式破解;

通过利用xposed、frida进行hook破解;

通过UNICORN 模拟执行虚拟机指令破解。

评论