专栏首页QA一隅iOS安全测试-KeyChain

iOS安全测试-KeyChain

Keychain简介

根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等。它是一个在所有app之外的sqlite数据库。

keychain可以说是系统里唯一可以做到安全可靠存储应用敏感数据并且可以在应用卸载或重新安装时仍然保留其数据的地方。当使用itunes进行数据备份时,每个应用程序在keychain里的数据都会得到备份,而且备份的数据是经过加密的。

虽然keychain的访问有权限控制,但是,在越狱的设备上,是可以查看到所有的keychain存储数据。所以在使用Keychain存储用户敏感信息(如 access_token, password等)时,最好还是要加密。

获取Keychain数据

iOS越狱

需要获取keychain数据文件必须要越狱,iOS越狱教程请根据自己的系统版本来选择:爱思越狱教程 越狱之前切记备份重要资料,最好不要使用自己日常使用的设备越狱。

OpenSSH

越狱成功之后需要安装OpenSSH工具,iOS设备其实就是一个小型的Unix系统,由于苹果的封闭性,在不越狱的手机上,我们能操作的东西很少。如果想在ios设备上,通过pc直接执行shell命令,可以在ios设备(已越狱)上安装openssh服务器,通过pcssh连接过去。

打开Cydia直接搜索OpenSSH安装。如果搜索不到可以在软件源菜单中添加源,如雷锋源:http://apt.abcydia.com

安装好OpenSHH后,可以使用爱思助手来打开SSH通道。

使用远程登录工具如:XshellsecureCRT输入上面爱思助手提供的地址端口和账户密码进行登录,登录之后可以查看到iPhone设备的文件目录。

klygteki-iPhone:~ root# ls -l
total 0
drwxr-xr-x  3 root wheel  96 Apr 20  2018 Application\ Support/
drwxr-xr-x  3 root wheel  96 Jul 21 16:53 Containers/
drwx------ 10 root wheel 320 Sep 12  2018 Library/
drwxr-xr-x  2 root wheel  64 Feb 27  2008 Media/

KeyChain数据库

所有存储在KeyChain中的数据,实际上是保存在一个keychain-2.db的数据库中。该数据库位于/private/var/Keychains/目录下。

klygteki-iPhone:/ root# cd /private/var/Keychains/
klygteki-iPhone:/private/var/Keychains root# ls
Analytics/             caissuercache.sqlite3-journal  ocspcache.sqlite3
Assets/                crls/                          ocspcache.sqlite3-shm
SupplementalsAssets/   keychain-2.db                  ocspcache.sqlite3-wal
TrustStore.sqlite3     keychain-2.db-shm              pinningrules.sqlite3
caissuercache.sqlite3  keychain-2.db-wal

更改权限

默认情况下,我们是不能都读取keychain-2.db数据库的,所以需要先赋予其可读权限,给keychain-2.db数据库可读权限

klygteki-iPhone:~ root# cd /private/var/Keychains/
klygteki-iPhone:/private/var/Keychains root# chmod +r keychain-2.db
klygteki-iPhone:/private/var/Keychains root# ls -l
total 7020
drwxrwxr-x 17 _securityd wheel     544 May 28  2018 Analytics/
drwxr-xr-x  2 _securityd wheel      64 Apr 23  2018 Assets/
drwx--x--x  6 _securityd wheel     192 Jul 22 04:57 SupplementalsAssets/
-rw-------  1 _securityd wheel   61440 May  9 16:15 TrustStore.sqlite3
-rw-------  1 _securityd wheel       0 Apr 20  2018 caissuercache.sqlite3
-rw-------  1 _securityd wheel     512 Jul 21 21:09 caissuercache.sqlite3-journal
drwx--x--x  3 _securityd wheel      96 Jul 22 11:14 crls/
-rw-r--r--  1 _securityd wheel 1560576 Jul 21 11:06 keychain-2.db
-rw-------  1 _securityd wheel   32768 Jul 22 09:40 keychain-2.db-shm
-rw-------  1 _securityd wheel 1091832 Jul 22 10:44 keychain-2.db-wal
-rw-------  1 _securityd wheel   53248 Jul 21 10:51 ocspcache.sqlite3
-rw-------  1 _securityd wheel   32768 Jul 22 09:29 ocspcache.sqlite3-shm
-rw-------  1 _securityd wheel 1759272 Jul 22 10:58 ocspcache.sqlite3-wal
-rw-------  1 _securityd wheel  139264 Jul  2 12:03 pinningrules.sqlite3

查看KeyChain数据

keychain-2.db拷贝到桌面,然后使用DB Browser for SQLite即可查看数据内容。

C:\Users\Shuqing
λ  scp  root@127.0.0.1:/private/var/Keychains/keychain-2.db  C:\Users\Shuqing\Desktop
root@127.0.0.1's password:
keychain-2.db                                     100% 1716KB  20.2MB/s   00:00

本文分享自微信公众号 - QA一隅(sutune2020),作者:Sutune

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS ZipperDown 漏洞来袭,我们该如何应对?

    昨天傍晚盘古实验室负责任的披露了针对 iOS 应用的 ZipperDown 漏洞,并提供了检索、查询受影响应用的平台: zipperdown.com。基于目前公...

    C4rpeDime
  • 精析-苹果开发者证书的实现机制

          在iOS开发过程中,不可避免的要和证书打交道,真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题,但是如果掌握了真...

    進无尽
  • 点进来你就懂的iOS数据存储

    上面是百度百科对沙盒简介,iOS这边每个APP都对应有一个自己的沙盒,用于App自己的数据存储。安全角度上每个App只能访问自己沙盒里的数据而不能跨域访问别的A...

    yuanyi928
  • 在IPA中重签名iOS应用程序

    当我们在对iOS应用程序执行黑盒安全测试时,我们一般只能从AppStore来访问和获取iOS应用程序。但是在大多数情况下,客户都会给我们提供一个IPA文件。在黑...

    FB客服
  • iOS App 安全测试

    BinaryCookieReader.py (用法: 将cookie文件导出到PC端,python BinaryCookieReader.py [cookies...

    VV木公子
  • iOS 开发流程笔记

    rectinajh
  • iOS核心应用设计漏洞,暴露用户Apple ID凭证

    Check Point提醒苹果iOS的核心应用程序可能会暴露用户的凭据。所幸的是iOS 9包含有相关的补丁。 Apple ID ios操作系统专门为用户提供了...

    FB客服
  • iOS开发证书管理

    最近,没啥事情,就逛逛论坛,研究一些新技术,偶尔导入github上一些开源的iOS项目学习学习别人的一些写法。不过有时间,在运行别人的项目的时候,总会报一些错误...

    xiangzhihong
  • iOS开发证书管理

    最近,没啥事情,就逛逛论坛,研究一些新技术,偶尔导入github上一些开源的iOS项目学习学习别人的一些写法。不过有时间,在运行别人的项目的时候,总会报一些错误...

    xiangzhihong
  • iOS常用的数据存储方式

    针对应用的字体大小、是否保存用户名等偏好设置,IOS的每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。NSUserDefaults设置数据...

    公众号iOS逆向
  • iOS逆向开发常见问题的解决方案

    修改越狱工具(例如yalu),等重新越狱成功之后进行删除有问题的tweak和相关文件

    公众号iOS逆向
  • iOS设备唯一标识的前世今生

    设备唯一标识 ----       估计很多开发都有被要求过获取一下设备的唯一标识,获取设备的唯一标识经常使用在我们做统计或者是在保证一台设备登录亦或者是做IM...

    Mr.RisingSun
  • iOS App间数据共享

    一、Shared Keychain Access(同一个证书) iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个i...

    动动我试试
  • 获取iOS设备唯一标识的演进UDID, MAC Address,UUID,IDFA,IDFV,OpenUDID

    ==== Apple公司于2013年5月1日开始,拒绝采集UDID的App上架App Store ==== iOS 5.0 之后uniqueIdentifi...

    conanma
  • iOS本地数据存储

    数据存储本质就是运行时的对象保存在文件、数据库中。数据存储可以分为两步:首先是将对象转换成二进制数据,这一步也叫序列化;相反,将二进制数据转换成对象则称为反序列...

    落影
  • iOS AppStore Search optimize【 ASO项目使用的技术】目录(持续更新)

    版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    公众号iOS逆向
  • iOS-Swift 完整登录方案(touchID&faceID& keychain)一iOS-Swift 完整登录方案(touchID&faceID& keychain)一

    FaceID和TouchID本身代码很简单,使用起来也很容易,主要是逻辑的嵌套相对复杂。 代码实现篇幅较长,详细的介绍在这ios swift版touchID&...

    用户8893176
  • 程序员面试闪充--iOS密码学

    但凡一个有点追求的iOS开发,总得会点加密技术,要不然用户信息就有可能被其他人获取用来做一些对我们不利的事情。 视频地址: 密码学 一、base64 base6...

    谦谦君子修罗刀
  • iOS 证书幕后原理

    http://chuquan.me/2020/03/22/ios-certificate-principle/[1],转载已获得作者「楚权」授权。

    卤代烃

扫码关注云+社区

领取腾讯云代金券