手机里的信息到底安不安全?手机数据泄露大揭秘
脚本之家
如果你给自己的手机设置了PIN码,甚至忘记了连自己也解不开;又或者设置了比划甚至指纹解锁,然后以为这样的手机就是安全的了。是的,对于一般的人来说算安全了,可是对于真正想要你手机里内容的黑客,一次简单的充电就会泄露你的数据。
如今手机已经成了我们离不开的伙伴和知己,它了解我们的日常生活。然而每一天在路上的时候,它都会收集我们的私密信息。平时我们会用它拍照,在社交网络中分享我们的心情;我们也用它发送邮件、短信以及拨打电话。所以,这些信息则让我们的智能手机成为黑客眼热的宝库。
普通用户的安全概念
最重要的是,我们中大多数人相信手机中的数据是绝对安全的。毕竟手机制造商曾向我们保证过,而且他们也给我们提供了安全补丁和更新升级包。
我们自己也会采取措施来保护自己的隐私,比如自定义安装固件、挖掘操作系统机制、刷机获得root权限,以便更好地操控手机等等。同时,我们还会使用一些自以为安全便捷的软件。
大多数用户并不会对手机进行深度挖掘,他们会设置PIN码、一个复杂的密码,或者设置指纹扫描,同时会坚持使用官方应用商店,这似乎就足够了。
大多数用户认为上面这些措施能使得数据更安全,但是真的是这样么?下面的实验将告诉你,或许只是给设备充下电,就可能带来很多麻烦。
数据传输
前一段时间,我开始尝试深度挖掘。当你将手机连入电脑时,手机如果做了保护,你就只能在电脑上看到手机设备名。但是如果手机没有设置PIN码/密码,你就能访问手机里的媒体文件。
数据交换的总量取决于制造商、操作系统版本和底层固件。但数据肯定是存在的,即使是最新的手机操作系统也是那样。
下面是一张比较的表格,里面罗列了各种电脑和手机握手包的数据交换情况,它们是根据手机和桌面操作系统进行组合的。
语法解释:
DN – 设备名称
DM – 设备制造商
DT – 设备类型
SN – 序列号
FW – 固件信息
OS – 操作系统信息
FS – 操作系统信息/文件列表
ECID – 电子芯片ID
设备 | 设备系统 | 模式 | 主机系统 | 数据大小 (bytes) | 数据类型 |
---|---|---|---|---|---|
Nexus 5 | Android 4.4 | MTP (默认) | Windows 8.1 | 32 336 | DN, DM, DT, SN, FS |
MTP (解锁) | Windows 8.1 | 32 155 | DN, DM, DT, SN, FS | ||
MTP + ADB | Windows 8.1 | 11 946 | DN, DM, SN | ||
MTP (默认) | Windows 10 | 8 827 | DN, SN | ||
MTP (解锁) | Windows 10 | 242 206 | DN, SN, FS | ||
MTP + ADB | Windows 10 | 10 582 | DN, SN, FW | ||
MTP (默认) | OSX 10.9 | 1 213 | DN, DM, DT, SN | ||
MTP (解锁) | OSX 10.9 | 581 | DN, DM, DT, SN | ||
Nexus 6 | Android 6.0.1 | Charging only (默认) | Windows 8.1 | 8 965 | DN, DM, SN |
MTP (解锁) | Windows 8.1 | 39 418 | DN, DM, DT, SN, FS | ||
Charging only (默认) | Windows 10 | 8 975 | DN, SN | ||
MTP (解锁) | Windows 10 | 91 342 | DN, SN, FS | ||
Charging only (默认) | OSX 10.9 | 14 000 | DN, DM, DT, SN | ||
MTP (解锁) | OSX 10.9 | 7 674 | DN, DM, DT, SN | ||
Samsung Galaxy S4 | Android 5.0.1 | MTP (默认) | Windows 8.1 | 4 098 | DN, DM, DT, SN |
MTP (默认) | Windows 10 | 7 740 | DN, DM, DT, SN, FS, FW | ||
Apple iPhone 5 | iOS 9.1 | Default (锁) | Windows 8.1 | 5 001 | DN, DM, SN |
Default (锁) | OS X 10.9 | 83 272 | DN, DM, DT, SN, OS, ECID, 设备公钥 | ||
解锁+ 配对 | Windows 8.1 | 1 829 145 | UniqueChipID, 设备类型, iOS版本, SessionID, 设备模型, 文件系统大小, 文件系统剩余空间 | ||
解锁+ 配对 | OS X 10.9 | 23 223 | DN, DM, DT, SN, OS, ECID, 设备公钥 |
总的来说,里面还是有相当多关于设备的信息。
我在做研究时,偶然发现了某知名手机制造商的一个有趣特性。我发现,当安装了CDC驱动(在这里使用的是普通windows PC机和标准microUSB数据线),手机也安装COM端口,将其作为modem。乍一看觉得没什么,然而这手机并没有启用USB tethering,也没有启用开发者模式,或者ADB(USB调试)。而且,这个COM端口用默认方法就可以连接。
我们能接触到modem,或者说我们接触的,只是与modem有机会通信的接口层,而并不是直连。现在我们从理论上进行讨论,安卓包含了不同的层,其中一层是RIL,也就是无线接口层(Radio Interface Layer)。它允许应用级别的app(比如安卓电话框架)去与modem硬件通过特定命令进行通信(互相发送请求、响应包)。
为了避免纠结太多细节,我不会花力气描述与rild守护进程或者Vendor RIL通信的RIL Java子层。
通常,所有的modem都会使用一个叫Hayes的命令集,这是由Dennis Hayes在1981开发的。这组用来与modem通信的命令叫做AT-命令。那些命令可以让应用通过RIL进行调用,也可以用于RIL传输给modem,它们根据制造商modem固件的限制,会有许多不同。当然,许多制造商也为他们自己的modem制定了自定义的命令。比如,高通就用了:
AT$Q<command>extension, Infineon – AT+X<command>
比如,ATI1-9命令返回了设备和modem的通用信息,ATI1返回了软件版本代码。
ATI2返回了IMEI号码,在这里我们可以看出该设备是双SIM卡。
你可以继续用其他AT命令,挖掘一些好玩的东西。
挖掘,挖掘
在挖掘一些信息后,我们发现了所有适用于该modem的命令。注意,其中很多都是受限的或者需要参数的,不然调试的时候会返回“Error”。
话说,厂商自定义的命令这里就避而不谈了,因为它们不具有通用代表性。我们用AT+CSQ可以检查手机的信号电平和电池电量等等。
还有个有趣的默认modem命令,它可以让黑客在手机锁屏时,也能拨打任意电话。这是对于那些把手机用PIN码上锁的手机来说,是一个非常独特的地方。因为,咱们通常只能使用锁屏手机的紧急服务功能。
我们还发现了可以让您阅读SIM里的电话簿的命令,这个默认是不开启的,但谁知道其他厂商是否进行了支持呢?
可怕的部分
你可能认为,就算上述的那些是真的又怎么样?这些信息可以用来干嘛?那我们这么看,你可以取出厂商信息、固件细节,这些可以帮助你分析设备的安全。你可以发现手机设备主人的电话号码,但这只需要用它打下你自己的号码就行。而检测出手机电池电量后,你可以预估下该手机用户还有多久会去插入充电器。当然,这些听起来确实没啥卵用。
但是仔细想想,其实你也可以用这些信息做更多事。后来的实验中,我发现了一个命令。它实际上会进入到手机重启后的固件更新模式。在正常情况下,这种模式允许黑客对设备进行各种各样的操作。
因此,我做了个实验。我将手机重置为出厂固件,并将其重置为默认设置,保证不会有如ADB之类的对外接口。
首先我用手机连接到了电脑,然后我用AT命令获取了固件数据,确认了设备类型和操作系统。再之后,我输入了命令,手机重启,进入了固件更新模式:
那么接下来发生了什么呢?我们通过AT命令收集了信息后,我鉴定了设备。然后,我用了一个方便的ROOT手机的POC,为设备找到了合适的包,启动了固件更新应用,接下来发生的就是:
更新持续了约一分钟(文件很小),手机重启后执行root:
安装了Root包后,它进行了自清理。然后,在手机重启后,我们会看到:
所有用户的数据都是安全的,但是它有几个应用无法通过默认手段卸载,而且它们有root权限。我算了下时间,考虑我手动点按钮的时间,整个过程不到3分钟。
想象时刻
现在发挥下你的想象力,如果这个安装包会不会没有通用目的(可能会有很多附加功能),但是专门在你手机上安装特定应用,或者了改变设备的配置呢?那就可能会减少安装包和脚本的大小,也减少了安装时间。
如果它安装了一个系统守护进程而不是安装包呢?如果是后门或者安卓木马呢,这是现在常见的一种手段。它就在后台运行,黑客会跟你一起分享你手机里面的内容。如果启用了开发者模式和ADB,然后将电脑指纹加入到可信库里?这些动作都不会被杀软检测到,因为它用的都是默认的函数,而且不会花多时间来运行。
那么我们用手机ADB连接可信电脑,又能做些什么呢?
我们可以安装和删除应用、备份消息库、照片、视频、应用缓存和数据文件,这些在很短的时间内就能完成。我们还能格式化手机、删除数据、加密数据,以及勒索赎金。想象下这样一个场景,在你经过5-8小时的飞行后下飞机,你的手机自然几乎没电了,接着你找到了一个USB充电站。
你将手机连上去充电后,可能会休息20-30分钟。你觉得,恶意改造过充电站的黑客,需要多长时间来下载你的手机上的数据,或者用恶意软件去感染你的手机。有了这些数据,黑客就能黑了你、追踪到你,你和你单位的数据都可能处于风险之中。
结论
世界各大网络社区,有不少都专注于深度挖掘和探索操作系统,他们会对其进行修改,并将辛苦研究的成果奉献给大家。
其他人则会用这些成果升级自己的设备,但事实上并不能保证他们在手机上安装的这些免费固件都是没有后门的。开发者可能会忘了禁用开发者模式或者调试模式,也可能安装了隐藏的手段,在后台收集和传输手机用户的数据。
尽管手机制造商付出了巨大努力,但是绝对安全的移动设备几乎是不可能存在的。我们的实验证明了这点,虽然案例里只有一个制造商,但是并不代表其他制造商是不存在这些问题的。同时,上述的实验工作都是基于已知的信息。
在我挖出了这个漏洞后,发现它早在2014年就已经在黑帽大会上被报道过了。但是,它没有制造太多的影响力,以至于在最新的手机模型上还存在。而在本文中,我发现这些人某种程度上也发现了这个洞。通过连接电脑窃取手机数据的技术早已被滥用,例如2013年红色10月那场著名的网络间谍活动。
公共充电站导致的数据失窃的可能性,我们的专家曾在2014年提出来分析过。你大概会认为没有人在机场、咖啡馆或者公交站恶意改造充电站。但是,我们却并不这么认为。
总结一下,不要随便在公共场所充电,如果恰好你的手机里有很多不想被人知道的秘密。