充电宝是如何盗取你的我的隐私的?

感受好神奇,分享一下。原文 揭秘:充电宝是如何盗取你的我的隐私的?html

中午吃完饭,看到一个微博中别人转的央视新闻《别被改装充电宝盗取隐私》以为又是啥高大上的东西上了央视,看完后才知道是数字公司的某研究员作的假装充电宝盗取隐私的玩意。ios

内心豁然开朗,原来这玩意也能够上央视啊!那么问题来了: 这玩意都应用到了哪些技术,而且那个防御神器又是怎么实现的?咱们这些每天写脚本的能玩不?仍是须要那些玩二进制的牛人帮忙才能完成呢?git

那么下面我给你们介绍一种方法,揭秘攻击者是如何低成本快速打造一个伪造的充电宝的,以及咱们该如何防护。主要是IOS系统,至于Android的方法我想满大街都是吧这里就不说了,之后说不定会在博客中写下。至于用途吗不关你是进行物理社工仍是什么的就自由发挥,本文所提技术并不局限于“充电宝” ,不费话了进入正题。github

原理分析cookie

首先,咱们来分析下在不了解已有技术状况下假设要从零开始作起,咱们是怎么分析和设计这个东西?我估计大多数人第一个想到的应该是iTunes , 苹果手机管理的配套软件,由于在它里面有个功能是备份数据用的,即便刷机后,只要恢复下数据那么全部的通信录,短信,甚至上网信息等等都会被恢复回去,二进制牛若是看到了应该会说逆下iTunes分析下它通信协议不就完事了。app

嗯,确实能够实现奈何咱们脚本小子操起IDA跟看天书的应该差很少,不过这里有一点说的对,那就是通信协议。若是咱们可以模拟iTunes协议,告诉iPhone我须要给你备份数据,那么按照它的接受协议把数据copy到存储单元不就ok了。至于它怎么去打包那些数据,根据它打包的方式解包不就还原全部数据了。上面咱们分析的是如何把数据从手机拿到存储单元,那么和充电宝又有什么关系? 看过那个视频的应该注意到,手机查到充电宝上面会提示 “是否信任此电脑” 。回想下,咱们本身充电的时候是否会提示?那么在什么状况下会提示?ide

是的,在手机数据线插到别人电脑上面的时候会提示!这里咱们在分析下,在正常充电宝上和电脑上面为什同为USB,一个提示一个却不提示,为后面的防护作个铺垫。工具

咱们先看下下图:ui

clipboard.png

图是网上找来的, 其中黄色部分为四个usb里面的触点, 其中1,4 从图中能够看到是正负极(虽然只有+,-号),2,3 是 “D+ 和D-” 是什么呢?其实就是data+ 和 data- 数据信号的输入和输出。其实从这张图上也能猜到为何正常充电宝不会提示,而插到陌生电脑上会提示。由于在陌生电脑上面data+和data-上面产生了数据信号,因此致使iPhone会进行询问是否应该信任此设备以进行数据交互,下面看看如何快速实现。spa

设计实现

上面原理分析了那么多,仍是没有进入核心部分 “ 如何快速制造” 估计骂街的已经开始了….

所需材料:

  • 树莓派 (raspberry pi) 一枚
  • 大号锂电池(至于多大,看你想要多大容量的充电宝)
  • 充电器(为啥要这个?充电宝要充电呗)
  • 小灯 led小灯 3-4 枚 (充电宝充电闪烁效果)

上面这些东西怎么组合?  树莓派USB 对外供电, 锂电池给树莓派供电,充电器拆了(里面的东西)给锂电池充电,至于led小灯,接树莓派GPIO口。让树莓派闪烁小灯的教程网上应该也是一大把了,这里就不详述了请自行查询。

其实树莓派就是一个ARM平台上面能够跑跑Linux, 你们最关心的应该都是在ARM平台上面的Linux怎么模拟数据让iPhone把备份数据给存储到树莓派上面的存储器。看到上面的分析估计不少人内心不自在了,都说了脚本小子为何又扯到上面的分析,难道又要让咱们逆向iTunes了。固然不是了,既然咱们能想到模拟数据难道就没有人作过?是的,你又一次猜对了,由开源实现

libimobiledevice , 这就是咱们今天的主角,看看它介绍(官方介绍):

libimobiledevice is a cross-platform software library that talks the protocols to support iPhone®, iPod Touch®, iPad® and Apple TV® devices. Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking. It allows other software to easily access the device's filesystem, retrieve information about the device and it's internals, backup/restore the device, manage SpringBoard® icons, manage installed applications, retrieve addressbook/calendars/notes and bookmarks and (using libgpod) synchronize music and video to the device. The library is in development since August 2007 with the goal to bring support for these devices to the Linux Desktop.

上面啰嗦了那么多E文其实就是说它不依赖于第三方库,跨平台的实现了iPhone,iPod Touch, Ipad等苹果设备的通信协议。

在树莓派上面怎么编译能够看这里所需依赖

https://github.com/libimobiledevice/libimobiledevice

编译后有它的动态库,能够根据它的文档本身实现想要的功能,不过对于仅仅只是须要“窃取”隐私数据,其实自带的tools目录中的工具就已经够用了,在看编译完后的工具都长什么样(图片演示均为笔记本上面的libimobile):

clipboard.png

能够看到编译后tools目录自带的这些小工具,比较显眼的几个: 

idevice_id                  获取已链接设备ID, idevice_id -l
idevicebackup               ios较低版本用来备份数据的工具
idevicebackup2              ios新版本备份数据工具
idevicesscreenshot          从名字就能看出来是屏幕截图
idevicesyslog               实时显示log信息的,跟adb logcat 同样
ideviceinfo                 设备信息
....                        其余的看名字基本就知道大概了

好了,咱们直接上主角吧,idevicesbackup2。在当前目录创建文件夹bak,固然你愿意放在那里都行只是用来存储备份数据的。usb链接电脑和手机(不是说好的充电宝么,好吧…没啥差吧^_^)

输入命令:

idevicebackup2 backup ./bak

若是没有配置环境变量就给idevicebackup2 指定当前目录./

运行过程以下图所示:

clipboard.png

运行结束后在bak目录下会生成一个由字符串组成的目录,打开咱们能够看到一堆不太可以容易理解的文件,其实这些就是备份通过处理的数据,如图所示:

clipboard.png

那么拿到这些数据有毛用…   别捉急,既然能拿到确定有办法解包还原数据

输入命令:

ideivcesbackup2  unpack ./bak

命令执行完后咱们就能够看到bak目录下多了一个unpack目录,看看里面有些什么吧。

clipboard.png

因为层级太多只显示了3级目录,不过咱们先找找数字公司演示的照片是在什么地方存储的能够在var/mobile/Media/DCIM 目录中看到这里存储的都是我的相机拍的照片和视频(没拍摄过因此里面木偶有显示~)以下图:

clipboard.png

仅仅只能拿到相片么?  其实细心的读者确定都看到了Keychains 就应该知道这玩意是啥了。好了再看看能获取到其余信息不? 好比safari或者其余APP的本地遗留数据,例如cookie 、 聊天记录? 看看var/mobile/library下面的sms和cookie信息:

clipboard.png

我不会告诉你 var/mobile/Applications  所有是应用的备份文档信息里面包含的帐户密码,聊天信息等。这里就不看了,太尼玛冷了,得进被窝了…

防护措施

这会再看结合USB的那个图你应该知道两种防护方法了吧?

  • 提示信任信息的时候若是是充电宝,坚定选NO
  • 也就是数字公司的“防护神器”切掉USB的data数据(猜想数字公司这么干的)

哎,很久没写文章了有点手生,写了快一个小时就到此打住了,写着文章没有任何恶意,只是想分享一些东西,认识个人人都知道我很乐意分享所掌握的知识而且是无条件的。你会问为啥从始至终都没有看到你的“充电宝”,额没钱买呗,哈哈…

相关文章
相关标签/搜索