`
yangsongjing
  • 浏览: 243192 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

ANDROID应用安全防御

阅读更多
Android应用的安全隐患包括三个方面:代码安全、数据安全和组件安全。

1. 代码安全
  代码安全主要是指Android apk有被篡改、盗版等风险,产生代码安全的主要原因是apk很容易被反编译、重打包。我们可以采用以下方法对apk进行保护:

1.1 代码混淆

  代码混淆可以在一定程度上增加apk逆向分析的难度。Android SDK从2.3开始就加入了ProGuard代码混淆功能,开发者只需进行简单的配置就可以实现对代码的混淆。

1.2 Apk签名校验

  每一个软件在发布时都需要开发人员对其进行签名,而签名使用的密钥文件时开发人员所独有的,破解者通常不可能拥有相同的密钥文件,因此可以使用签名校验的方法保护apk。Android SDK中PackageManager类的getPackageInfo()方法就可以进行软件签名检测。

1.3 Dex文件校验

  重编译apk其实就是重编译了classes.dex文件,重编译后,生成的classes.dex文件的hash值就改变了,因此我们可以通过检测安装后classes.dex文件的hash值来判断apk是否被重打包过。

  (1)读取应用安装目录下/data/app/xxx.apk中的classes.dex文件并计算其哈希值,将该值与软件发布时的classes.dex哈希值做比较来判断客户端是否被篡改。

  (2)读取应用安装目录下/data/app/xxx.apk中的META-INF目录下的MANIFEST.MF文件,该文件详细记录了apk包中所有文件的哈希值,因此可以读取该文件获取到classes.dex文件对应的哈希值,将该值与软件发布时的classes.dex哈希值做比较就可以判断客户端是否被篡改。

  为了防止被破解,软件发布时的classes.dex哈希值应该存放在服务器端。

  另外由于逆向c/c++代码要比逆向Java代码困难很多,所以关键代码部位应该使用Native C/C++来编写。

1.4 逆向工具对抗

  对apk进行重打包常用的工具是apktool,apktool对于后缀为PNG的文件,会按照PNG格式进行处理,如果我们将一个非PNG格式文件的文件后缀改为PNG,再使用apktool重打包则会报错。

  以上是使用比较多的几种保护方法,单独使用其中一种效果不大,应该综合运用。

1.5 调试器检测

  为了防止apk被动态调试,可以检测是否有调试器连接。在Application类中提供了isDebuggerConnected()方法用于检测是否有调试器连接,如果发现有调试器连接,可以直接退出程序。

1.6 加壳保护

  使用加壳程序防止apk逆向是一种非常有效的方式,也是一个趋势。Jack_Jia在《Android APK加壳技术方案》一文中详细阐述了Android apk加壳原理以及几种加壳方案的具体实现。我们可以利用这几种方案对apk进行加壳。

  不过这种加壳方式是在Java层实现的,被反编译的风险仍然很大。为了克服这个缺点,今后可以研究采用如下思路来进行保护:

  将核心业务逻辑代码放入加密的.jar或者.apk文件中,在需要调用时使用Native C/C++代码进行解密,同时完成对解密后文件的完整性校验。如果需要更加安全的保护方法,可以考虑对so文件(Native C/C++代码编译得到的文件)进行加壳。Android so加壳主要需要解决两个问题:

  (1)对ELF文件加壳;

  (2)对Android SO的加载、调用机制做特殊处理。

  这将是以后Android应用安全研究的一个方向。

2. 数据安全
2.1 存储安全问题

关于数据存储可能出现的问题包括如下几点:

(1)明文存储敏感数据,导致直接被攻击者复制或篡改。

将隐私数据明文保存在外部存储
将系统数据明文保存在外部存储
将软件运行时依赖的数据保存在外部存储
将软件安装包或者二进制代码保存在外部存储
全局可读写的内部文件存储
(2)不恰当存储登陆凭证,导致攻击者利用此数据窃取网络账户隐私数据。

解决方案:

对这些数据进行加密,密码保存在内部存储,由系统托管或者由用户使用时输入。
对应用配置文件,较安全的方法是保存到内部存储;如果必须存储到SD卡,则应该在每次使用前检验它是否被篡改,与预先保存在内部的文件哈希值进行比较。
应用如果需要安装或加载位于SD卡的任何文件,应该先对其完整性做验证,判断其与实现保存在内部存储中的(或从服务器下载来的)哈希值是否一致。
如果要跨应用进行数据共享,有种较好的方法是实现一个Content Provider 组件,提供数据的读写接口并为读写操作分别设置一个自定义的权限。
对于登录凭证的存储,使用基于凭据而不是密码的协议满足这种资源持久访问的需求,例如OAuth。
2.2 传输安全问题

• 不使用加密传输

• 使用加密传输但忽略证书验证环节

  如开发者在代码中不检查服务器证书的有效性,或选择接受所有的证书时,这种做法可能会导致中间人攻击。

  我们在对敏感数据进行传输时应该采用基于SSL/TLS的HTTPS进行传输。由于移动软件大多只和固定的服务器通信,我们可以采用“证书锁定”(certificate pinning)方式在代码更精确地直接验证服务器是否拥有某张特定的证书。

3. 组件安全
  android应用内部的Activity、Service、Broadcast Receiver等组件是通过Intent通信的,组件间需要通信就需要在Androidmanifest.xml文件中配置,不恰当的组件配置则会带来风险。

可能产生的风险:      

(1)恶意调用

(2)恶意接受数据

(3)仿冒应用,例如(恶意钓鱼,启动登录界面)

(4)恶意发送广播、启动应用服务。

(5)调用组件,接受组件返回的数据

(6)拦截有序广播

解决办法:      

(1)最小化组件暴露

不参与跨应用调用的组件添加android:exported="false"属性,这个属性说明它是私有的,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。

(2)设置组件访问权限

对参与跨应用调用的组件或者公开的广播、服务设置权限。只有具有该权限的组件才能调用这个组件。

(3)暴露组件的代码检查

Android 提供各种API来在运行时检查、执行、授予和撤销权限。这些 API 是 android.content.Context 类的一部分,这个类提供有关应用程序环境的全局信息。

另外,Android应用也会存在很多传统web漏洞,比如SQL注入,xss漏洞等,代码级防止出现这些漏洞的方法与web应用防御方法相同。

ANDROID系统安全防御

1. 操作系统安全问题
Android root问题
系统漏洞,补丁更新不及时
认证机制问题
2. 系统安全解决方案
2.1 权限管理与隔离

  对运行在Android系统上的应用程序进行权限的细粒度管理和隔离,防止越权行为的发生和滥用权限获取敏感数据。

  可以采用MAC(Mandatory Access Control)强制访问控制模型实现。它是一个针对Linux的安全加强系统SELinux中使用的安全模型,即任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限。凡是没有出现在安全策略配置文件中的权限,进程就没有该权限。Google在Android 4.4上正式推出了一套以SELinux为基础的系统安全机制SEAndroid。所以如果我们要定制一个Android系统,可以采用具有SEAndroid安全机制的Android 4.4版本。

2.2 内核与应用层漏洞防护

  增加补丁更新功能,如果发现漏洞,及时提醒用户进行系统补丁更新。

2.3 恶意程序检测与防护

  建立一套恶意代码防护模型,对运行在Android系统上的恶意程序进行检测,抵御恶意代码的入侵。

2.4 数据安全存储与传输:

  对Android系统上的数据存储和数据传输进行加密保护,保证终端上数据能够安全地使用。
分享到:
评论

相关推荐

    Suno AI Download 免费下载Suno AI 音乐

    网站描述:Sunoaidownload——从分享链接中轻松下载Suno AI生成的歌曲文件 内容概要: 这是一个专门提供Suno AI生成的歌曲文件下载服务的网站,用户可以通过分享链接轻松获取所需文件。本网站提供高质量、多样化的音乐资源,满足不同用户的需求。 适用人群: 该网站适用于所有热爱音乐、需要音乐素材的用户,特别适合音乐创作者、音乐爱好者、学生、教师等人群使用。 使用场景: 该网站的使用场景非常广泛,具体包括以下几个方面: 1. 音乐创作:音乐创作者可以使用本网站提供的歌曲文件进行创作,丰富作品内容,提升作品质量。 2. 音乐学习:学生和教师可以使用本网站的歌曲文件进行音乐学习,提高音乐素养和技能。 3. 娱乐休闲:普通用户可以使用本网站的歌曲文件进行放松、娱乐和休闲,享受音乐带来的愉悦。 其他说明: 本网站提供高速、稳定的下载服务,确保用户能够快速获取所需文件。同时,我们注重版权保护,只提供合法授权的歌曲文件,避免侵犯他人权益。为了更好地服务用户,我们不断优化网站功能和用户体验,欢迎提出宝贵意见和建议。此外,为了保障用户数据安全,我们采取了先进的安全措施。

    基于Python的Django配置Celery设计源码

    本项目是基于Python的Django配置Celery设计源码,包含20个文件,其中主要包含17个py源代码文件。系统采用了Python编程语言,实现了Django配置Celery的功能。项目结构清晰,代码可读性强,易于理解和维护。

    物联网嵌入式ESP32开发例程05-FreeRTOS操作系统之时间片调度C程序代码.rar

    1、嵌入式物联网ESP32项目实战开发。例程经过精心编写,简单好用。 2、代码使用Visual Studio Code + ESP-IDF开发,C语言编程。例程在ESP32-S3上运行。若在其他型号上运行,请自行调整。 3、如果接入其他传感器,请查看发布的其他资料。 4、ESP32与模块的接线,在代码当中均有定义,请自行对照。 5、若硬件差异,请根据自身情况适当调整代码,程序仅供参考。 6、代码有注释说明,请耐心阅读。 7、技术v:349014857;

    华为IPMS流程优化策略glz.pptx

    华为IPMS流程优化策略glz.pptx

    文字转合成语音软件工具

    文字转语音软件,两款,都非常好用,亲测有效,免费声音足够使用,需要的兄弟自行下载

    工作汇报 年终总结5.pptx

    引言 年度工作回顾 系统进展与亮点 技术创新与应用 市场反馈与用户评价 存在问题与挑战 未来展望与计划 结束语与感谢 一、引言 简要介绍智能家居系统的重要性和发展趋势 回顾本年度的工作目标和重点 二、年度工作回顾 系统建设与维护 完成的项目与里程碑 系统稳定性与可靠性提升 团队建设与培训 团队成员构成与职责 培训与技能提升活动 合作伙伴与资源整合 与供应商、合作伙伴的合作情况 资源整合与利用 三、系统进展与亮点 功能扩展与优化 新增功能介绍与效果评估 现有功能的优化与改进 用户体验提升 界面设计与交互优化 用户反馈与改进措施 四、技术创新与应用 物联网技术的应用 传感器与通信技术的升级 大数据分析与应用 智能家居的智能化管理 自动化控制与节能策略 安全防护与预警系统 五、市场反馈与用户评价 市场反馈分析 市场需求与竞争态势 市场占有率与增长趋势 用户评价总结 用户满意度调查结果

    基于SpringBoot和OpenAI的聊天机器人设计源码

    本项目是基于SpringBoot和OpenAI的聊天机器人设计源码,包含1559个文件,其中主要包含605个java源代码文件,361个js脚本文件,238个vue前端文件等。系统采用了Java、JavaScript、Vue、CSS、HTML、Shell和TypeScript技术,实现了一个基于SpringCloud的Chatgpt机器人。该项目已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图等AI技术。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。项目结构清晰,代码可读性强,易于理解和维护。

    2024年全球控制膨胀合金箔行业总体规模、主要企业国内外市场占有率及排名.docx

    2024年全球控制膨胀合金箔行业总体规模、主要企业国内外市场占有率及排名

    电子通信设计资料多点温度检测系统设计论文资料

    电子通信设计资料多点温度检测系统设计论文资料提取方式是百度网盘分享地址

    基于Bootstrap的树形表格设计源码

    本项目是基于Bootstrap的树形表格设计源码,包含31个文件,其中主要包含7个js脚本文件,5个css样式文件等。系统采用了JavaScript、CSS和HTML技术,实现了基于Bootstrap的树形表格功能。该项目最初出现在guns项目中,基于jquery.treegrid.js实现树形结构,但由于性能问题,重新实现了相关功能。其用法与bootstrap-table类似。项目结构清晰,代码可读性强,易于理解和维护。

    基于STM32F4的智能门锁超详细解析(矩阵键盘、OLED、舵机、HC-05蓝牙、F407ZG最小系统)可用于毕业设计.zip

    基于STM32F4的智能门锁超详细解析(矩阵键盘、OLED、舵机、HC-05蓝牙、F407ZG最小系统)可用于毕业设计.zip

    万能文件查看器 支持各种文件格式.zip

    万能文件查看器 支持各种文件格式.zip

    电子通信设计资料智能健康监护仪的研究毕业设计论文资料

    电子通信设计资料智能健康监护仪的研究毕业设计论文资料提取方式是百度网盘分享地址

    2023年中老年奶粉行业展望.pptx

    行业研究

    YOLOv8训练飞机检测模型+权重+数据集

    1、YOLOv8训练飞机检测模型,并包含标注好的飞机检测数据集,标签格式为xml和txt两种,类别名为aeroplane, 2、数据集和检测结果参考:https://blog.csdn.net/zhiqingAI/article/details/124230743 5、采用pytrch框架,代码是python的

    asp.net基于三层模式实验室仪器设备管理系统源码.7z

    实验室设备仪器管理系统基于MVC思想和三层设计模式构建,前台采用bootstrap响应式框架,后台运用div+css技术,确保用户界面的友好与兼容性。在Visual Studio 2010或更高版本软件上进行程序开发,利用sqlserver2005或更先进的数据库系统提供稳定的数据支持。 该系统包含四个核心模块:实验室登陆模块、学生模块、教师模块和管理员模块。登陆模块提供用户注册和登陆功能,确保用户信息的准确与安全。学生模块提供实验课仪器设备的信息查询、借领仪器耗材、设备事故的登记等服务,满足学生在实验过程中的各种需求。 管理员模块功能丰富,包括实验室设备信息查询、设备事故记录、设备资料管理、设备损坏管理以及设备耗材借领等。管理员可以方便地查询和统计设备仪器信息,上报和处理设备事故,更新设备操作指南,管理设备损坏信息,以及处理设备耗材的借领和归还。 实验设备管理数据库是系统的核心部分,管理员可以添加、删除、更改设备信息,记录报废、维修、申请购买以及新增设备的详细信息。所有相关信息如报废表、维修表、设备购买申请表、新增设备属性表等都会在终端实时显示,确保信息的及时性和准确性。 此

    1急急急i几i积极急急急急急急急急急急急急急急急急急急急急急急急急积极

    1急急急i几i积极急急急急急急急急急急急急急急急急急急急急急急急急积极

    TIMIT数据集下载TIMIT数据集下载,种子资源。.zip

    TIMIT数据集下载TIMIT数据集下载,种子资源。

    华为手机营销方法论IPMS和GTM高级培训课件(第二部分)glz.pptx

    华为手机营销方法论IPMS和GTM高级培训课件(第二部分)glz.pptx

    java练习题12.txt

    java练习题

Global site tag (gtag.js) - Google Analytics