- A+
首先,我们来分析下在不了解已有技术情况下假设要从零开始做起,我们是怎么分析和设计这个东西?我估计大多数人第一个想到的应该是iTunes,苹果手机管理的配套软件,因为在它里面有个功能是备份数据用的,即使刷机后,只要恢复下数据那么所有的通讯录,短信,甚至上网信息等等都会被恢复回去,二进制牛如果看到了应该会说逆下iTunes分析下它通讯协议不就完事了。
嗯,确实可以实现奈何我们脚本小子操起IDA跟看天书的应该差不多,不过这里有一点说的对,那就是通讯协议。如果我们能够模拟iTunes协议,告诉iPhone我需要给你备份数据,那么按照它的接受协议把数据copy到存储单元不就ok了。至于它怎么去打包那些数据,根据它打包的方式解包不就还原所有数据了。
是的,在手机数据线插到别人电脑上面的时候会提示!这里我们在分析下,在正常充电宝上和电脑上面为什同为USB,一个提示一个却不提示,为后面的防御做个铺垫。
我们先看下下图:
图是网上找来的,其中黄色部分为四个usb里面的触点,其中1,4从图中可以看到是正负极(虽然只有+,-号),2,3是“D+和D-”是什么呢?其实就是data+和data-数据信号的输入和输出。其实从这张图上也能猜到为什么正常充电宝不会提示,而插到陌生电脑上会提示。因为在陌生电脑上面data+和data-上面产生了数据信号,所以导致iPhone会进行询问是否应该信任此设备以进行数据交互,下面看看如何快速实现。
所需材料:
2. 大号锂电池(至于多大,看你想要多大容量的充电宝)
3. 充电器(为啥要这个?充电宝要充电呗)
4. 小灯 led小灯 3-4 枚 (充电宝充电闪烁效果)
其实树莓派就是一个ARM平台上面可以跑跑Linux,大家最关心的应该都是在ARM平台上面的Linux怎么模拟数据让iPhone把备份数据给存储到树莓派上面的存储器。看到上面的分析估计很多人心里不自在了,都说了脚本小子为什么又扯到上面的分析,难道又要让我们逆向iTunes了。当然不是了,既然我们能想到模拟数据难道就没有人做过?是的,你又一次猜对了,由开源实现
libimobiledevice,这就是我们今天的主角,看看它介绍(官方介绍):
在树莓派上面怎么编译可以看这里所需依赖
编译后有它的动态库,可以根据它的文档自己实现想要的功能,不过对于仅仅只是需要“窃取”隐私数据,其实自带的tools目录中的工具就已经够用了,在看编译完后的工具都长什么样(图片演示均为笔记本上面的libimobile):
可以看到编译后tools目录自带的这些小工具,比较显眼的几个:
idevicebackup ios较低版本用来备份数据的工具
idevicebackup2 ios新版本备份数据工具
idevicesscreenshot 从名字就能看出来是屏幕截图
idevicesyslog 实时显示log信息的,跟adb logcat 一样
ideviceinfo 设备信息
.... 其他的看名字基本就知道大概了
输入命令:
如果没有配置环境变量就给idevicebackup2指定当前目录./
运行过程如下图所示:
运行结束后在bak目录下会生成一个由字符串组成的目录,打开我们可以看到一堆不太能够容易理解的文件,其实这些就是备份经过处理的数据,如图所示:
那么拿到这些数据有毛用… 别捉急,既然能拿到肯定有办法解包还原数据
输入命令:
命令执行完后我们就可以看到bak目录下多了一个_unpack_目录,看看里面有些什么吧。
由于层级太多只显示了3级目录,不过我们先找找数字公司演示的照片是在什么地方存储的可以在var/mobile/Media/DCIM目录中看到这里存储的都是个人相机拍的照片和视频(没拍摄过所以里面木偶有显示~)如下图:
仅仅只能拿到相片么? 其实细心的读者肯定都看到了Keychains就应该知道这玩意是啥了。好了再看看能获取到其他信息不?比如safari或者其他APP的本地遗留数据,例如cookie、聊天记录?看看var/mobile/library下面的sms和cookie信息:
这会再看结合USB的那个图你应该知道两种防御方法了吧?
2. 也就是数字公司的“防御神器”切掉USB的data数据(猜测数字公司这么干的)
哎,好久没写文章了有点手生,写了快一个小时就到此打住了,写着文章没有任何恶意,只是想分享一些东西,认识我的人都知道我很乐意分享所掌握的知识并且是无条件的。你会问为啥从始至终都没有看到你的“充电宝”,额没钱买呗,哈哈…
原创作品FreeBuf独家首发,我博客都还没发布
weibo:@creturn
blog:
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫