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

原创
2021/09/03 00:00
阅读数 889

前言

在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


公众号:iOS逆向
公众号 iOS逆
    const char *sql = "delete from ZACCOUNT where ZUSERNAME <> \"\"";

1.2  表ZACCOUNTTYPE


公众号 iOS逆
公众号 iOS逆

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

公众号:iOS逆向

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

公众号:iOS逆向

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

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

公众号 iOS逆

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

3.1 iOS系统的keychain 存储类型


公众号 iOS逆

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

公众号:iOS逆向


本文分享自微信公众号 - iOS逆向(code4ios)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部