iOS ASO 数据清理(Accounts帐号信息、Keychain数据)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: iOS ASO 数据清理(Accounts帐号信息、Keychain数据)

前言

在ASO项目必不可少的步骤就是清理数据

/private/var/mobile/Library/Accounts/Accounts3.sqlite
/private/var/mobile/Library/Accounts/Accounts3.sqlite-shm

I Accounts3.sqlite

/private/var/mobile/Library/Accounts/Accounts3.sqlite

1.1 表ZACCOUNT

image.png

const char *sql = "delete from ZACCOUNT where ZUSERNAME <> \"\"";

1.2  表ZACCOUNTTYPE

image.png

II  Accounts3.sqlite-shm

/private/var/mobile/Library/Accounts/Accounts3.sqlite-shm

shm is an index file for wal

iOS安全之敏感逻辑的保护方案【把函数名隐藏在结构体里,以函数指针成员的形式存储】案例:js从app本地方法获取设备/签名信息https://blog.csdn.net/z929118967/article/details/78034596

III Keychain Dumper

image.png

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

image.png

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

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

image.png

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

3.1 iOS系统的keychain 存储类型

image.png

3.2 使用theos进行开发 ,获取数据

3.2.1 build

  • run script,赋予访问钥匙串的权限:keychain-access-groups
/opt/MonkeyDev/bin/md --xcbp
echo "$PROJECT_DIR/KCdumper/entitlements.xml"
/opt/iOSOpenDev/bin/ldid -S"$PROJECT_DIR/KCdumper/entitlements.xml" "$TARGET_BUILD_DIR/$EXECUTABLE_NAME"
  • ldid -e
iPhone:~/MonkeyDevBuilds/KCdumper root# ldid -e /bin/keychain_dumper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>keychain-access-groups</key>
  <array>
   <string>*</string>
  </array>
 </dict>
</plist>

3.2.2 Fix for recent iOS 11 JBs

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>keychain-access-groups</key>
  <array>
   <string>*</string>
  </array>
  <key>platform-application</key> <true/>
 </dict>
</plist>

usage:

  • 将手机越狱,通过Cydia(越狱手机都有,相当于App Store)安装OpenSSH
  • 在mac终端输入:ssh root@(手机IP) 然后会提示输入密码,默认为alpine
  • 使keychain数据库权限可读:cd /private/var/Keychains/ chmod +r keychain-2.db
iPhone:/bin root# ls -lrt keychain_dumper
-rwxr-xr-x 1 root wheel 211584 Dec  7  2017 keychain_dumper*
iPhone:/bin root# ls -lrt  /private/var/Keychains/
total 4476
-rw------- 1 _securityd wheel       0 Jan  1  1970 caissuercache.sqlite3
-rw------- 1 _securityd wheel   16384 Dec  1  2017 TrustStore.sqlite3
-rw------- 1 _securityd wheel     512 Jul 19 11:57 caissuercache.sqlite3-journal
-rw------- 1 _securityd wheel   49152 Jul 26 10:26 ocspcache.sqlite3
-rwx--x--x 1 _securityd wheel  274432 Aug  6 15:26 keychain-2.db*
-rw------- 1 _securityd wheel   32768 Aug  6 16:34 ocspcache.sqlite3-shm
-rwx--x--x 1 _securityd wheel   32768 Aug  6 16:35 keychain-2.db-shm*
-rwx--x--x 1 _securityd wheel 1895232 Aug 10 14:30 keychain-2.db-wal*
-rw------- 1 _securityd wheel 2274272 Aug 12 10:59 ocspcache.sqlite3-wal
  • 将下载的keychain_dumper可执行文件移到iPhone的/bin目录下
  • 输入命令:scp /Users/ice/Downloads/Keychain-Dumper-master/keychain_dumper root@(手机ip):/bin/keychain_dumper
  • 添加执行权限: chmod +x /bin/keychain_dumper
  • 解密keychain:/bin/keychain_dumper

3.3  使用monkeydev 进行开发 ,获取数据

更多内容请查看原文

see laso



目录
相关文章
|
28天前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
110 4
|
7月前
|
JSON JavaScript 安全
iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据
iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据
65 1
|
7月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
82 0
|
7月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
111 0
|
Web App开发 数据安全/隐私保护 iOS开发
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
|
4月前
|
iOS开发 开发者
iOS平台RTMP|RTSP播放器如何实时回调YUV数据
我们在做RTMP、RTSP播放器的时候,有开发者需要自己处理拉取到的YUV数据,做二次分析之用,为此,我们做了以下的设计:InitPlayer之后,再调用SmartPlayerStart()接口之前,设置yuv数据回调即可。
|
7月前
|
Web App开发 开发者 iOS开发
iOS开发者帐号申请指南(转)
iOS开发者帐号申请指南(转)
190 1
|
7月前
|
Java iOS开发
iOS的数据序列化(又称持久化)的两类使用方式
iOS的数据序列化(又称持久化)的两类使用方式
72 0