iOS安全攻与防(总篇)

2024-04-03 15:58
文章标签 安全 ios 攻与防 总篇

本文主要是介绍iOS安全攻与防(总篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS安全攻与防

  • 本地数据攻与防
  • https
  • UIWebview
  • 第三方sdk与xcode
  • 反编译与代码混淆
  • 越狱与反调试
  • 扫描工具fortify
  • 常见接口漏洞分析

本地数据攻与防

APP文件下的本地存储Documents、Library/Caches、Tmp
  • Documents: 保存应⽤运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。

  • tmp: 保存应⽤运行时所需的临时数据,使⽤完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。

  • Library/Caches: 保存应用运行时⽣成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据,比如网络数据缓存存储到Caches下。

如下图所示在越狱设备中,完全可以利用iTools等其他工具将这些数据导出。

图片1

防止数据泄露建议

1.对于主动存储在app内的重要的、有价值的、涉及隐私的信息需要加密处理,增加攻击者破解难度。

2.对于一些非主动的存储行为如网络缓存,涉及重要信息,做到用完即删。

数据库(sqlite)的安全问题

APP一般运用数据库存储一些数据量比较大,逻辑比较复杂的数据,方便我们使用和增加使用效率。数据库,一般存储在Documents路径下的特殊文件,格式一般为.db或者.sqlite,导出后使用特殊工具即可查看如DB Browser for sqlite 和 SQLiteStudio。

防止攻击者读取数据库的建议:

数据加密:
使用如AES256加密算法对数据进行安全加密后再存入数据库中。

优点:使用简单,无需第三方库支持。

缺点:每次存储都有加密解密过程,增加APP资源消耗。

整库加密:
可使用第三方的SQLite扩展库,对数据库进行整体的加密。如:SQLCipher,git地址

优点:对数据库整体操作,减少资源消耗。
缺点:需要使用第三库。

在创建数据库时,添加如下代码即可:

图片2

这时再打开数据库会弹出输入密码窗口,只有输入密码方可打开:

图片3

sqlcipher使用demo请参考:数据库sqlite3

KeyChain数据的读取

Keychain是一个拥有有限访问权限的SQLite数据库(AES256加密),可以为多种应用程序或网络服务存储少量的敏感数据(如用户名、密码、加密密钥等)。如保存身份和密码,以提供透明的认证,使得不必每次都提示用户登录。在iPhone上,Keychain所存储的数据在 /private/var/Keychains/keychain-2.db SQLite数据库中。如下图:

图片4

当我们打开这个数据库,会发现如下图中四个表:genp、inet、cert、keys

图片5

分别对应下图中的前四列,下图表示iOS系统的keychain 存储类型

图片6

数据库内数据,大多数是加密的,Keychain的数据库内容使用了设备唯一的硬件密钥进行加密,该硬件密钥无法从设备上导出。因此,存储在Keychain中的数据只能在该台设备上读取,而无法复制到另一台设备上解密后读取。

图片7

一旦攻击者能够物理接触到没有设置密码的iOS设备时,他就可以通过越狱该设备,运行如keychain_dumper这样的工具,读取到设备所有的Keychain条目,获取里面存储的明文信息。具体方法是通过ssl让mac连接iPhone,使用keychain_dumper,导出Keychain。具体步骤如下:

  1. 将手机越狱,通过Cydia(越狱手机都有,相当于App Store)安装OpenSSH。

  2. 在mac终端输入: ssh root@(手机IP) 然后会提示输入密码,默认为alpine

  3. 使keychain数据库权限可读:
    cd /private/var/Keychains/
    chmod +r keychain-2.db

  4. 下载工具Keychain-Dumper git地址

  5. 将下载的keychain_dumper可执行文件移到iPhone的/bin目录下

    • Ctrl+D,退出当前ssh连接

    • 输入命令:scp /Users/ice/Downloads/Keychain-Dumper-master/keychain_dumper root@(手机ip):/bin/keychain_dumper

  6. 添加执行权限: chmod +x /bin/keychain_dumper

  7. 解密keychain:/bin/keychain_dumper

最后输出如下图所示的手机应用内所有使用keychain的情况,下图展示的是一个用户存储的WiFi账号和密码。

图片8

综上可知,无论以何种方式在手机内存储数据,攻击者总是有办法获取到,只是不同的方式,攻击者获取的难度不一样,从这个角度来说keychain还是比较安全的存储方式,但是还是需要加密隐私信息。这也说明了我们对缓存数据加密的必要性。

剪切板的缓存

我们在

这篇关于iOS安全攻与防(总篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/873353

相关文章

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。