
在上一篇文章中,我谈到了我
去DefCamp的方式 。 今天的文章是有关我对物联网安全性研究的出版物的第一部分,这构成了我在会议上的演讲的基础。
物联网发展迅速:现在有
260多家公司 ,包括智慧城市,工厂,矿山,石油公司,零售商,医疗保健,教育等。 发布周期将仅涵盖可穿戴技术,智能医学和智能家居领域,包括移动应用程序。
如今,智能技术开始比将蓝牙耳机连接到电话更有意义,并且变得越来越普遍,这表明人们已经了解了智能技术的用途以及实现自动化的方案。
坏消息是,这些新设备中有许多是攻击的目标。 在这种情况下,由于缺乏对旧设备的支持,安全问题要么被追溯解决,要么根本无法解决。 如果这些设备管理不当,则会给基础架构(家庭或企业)带来严重的风险。 因此,下面我们考虑与智能事物的安全性,可用的黑客方法和工具以及数据处理和保护功能有关的许多问题。 该研究的目的不是实施或描述“交钥匙黑客”方法,而是审查在某些条件下可能导致访问数据的方法,并审查开发人员出于某种原因决定不保护用户数据的情况。 资料概述(完整信息可在官方
网站上找到)。
可穿戴技术-智能手表
苹果手表

信息技术部
手表通过蓝牙进行交互,或者如果没有此通道,则通过Wi-Fi进行交互以与手机和Apple服务器进行通信。 云和电话/手表应用程序之间的网络数据传输已使用TLS1.2进行了加密,并可以防御MITM攻击和SSL固定。 同时,与电话不同,手表没有安装自定义根SSL证书的界面。 未检测到未加密的数据流。
锁屏旁路
在智能手表上使用密码通常是可选项目,但可能包括在内。 Apple允许您以
多种方式重设密码 ,但是
只有一种方式可以有条件地避免数据删除。
后一种方法基于将手表重新链接到设备并通过更改密码进行
数据恢复的机制。 只要应该花几个小时进行维修或出售,就会使用这种情况,因为 需要断开激活锁模式。 其含义是,删除手表与手机的绑定会删除手表中的数据,但是,手机会备份手表数据,以便
随后恢复手表上的数据 。 而且由于备份不只保存银行卡,密码和蓝牙时钟设置,因此您可以访问数据并设置新密码。
要执行该方法,您必须执行以下步骤:
- 手表和电话应该在附近; Apple Watch应用必须在手机上运行。
- 在“我的手表”选项卡上,选择所需的时间,并通过“取消配对Apple Watch”确认操作。
- 接下来,您需要输入Apple帐户的密码(以防忘记密码,建议您重设密码 )。
- 最终确认操作。
由于此方法与Apple凭证交互,因此可以使用
取证解决方案重置密码来访问它们,最终使您可以删除Apple Watch上的密码。
越狱
iOS平台的越狱始终是增加各种操作系统(iOS,tvOS和watchOS)特权的一种方式。 尽管流行,但仍有许多已知的Apple手表越狱手表(以下列出):
USB越狱通过SSH的监狱和蓝牙连接后备
由于Apple Watch主要充当辅助设备,因此手表上安装的应用程序是小部件,并且所有信息都存储在手机的应用程序中。 不过,手表应用程序仍然可以自己存储特定部分,这使您可以考虑通过备份访问数据的选项(与云中PC / Mac上已经存在的时钟进行交互时)。 应该记住,在Apple产品中,许多数据是跨平台的,并且在所有设备之间都是同步的。
对于数据访问,取证解决方案和用于处理备份文件的普通应用程序均适用(在云备份或访问旁路方案的情况下,仅取证解决方案或其附近); 值得注意的是,目前许多应用程序可能无权查看备份文件的内容,因此,可能的工具之一是
iphone备份提取器 (在订阅的基本版本中,它允许访问时钟数据,而完整版和商业版仍具有2FA支持访问数据)。
有关设备的必要信息位于文件
/mobile/Library/DeviceRegistry.state/properties.bin中,并包含以下参数:
- 监视数据,包括名称,制造商,型号,操作系统,GUID。
- 序列号,UDID,Wi-Fi MAC地址,SEID(安全元素ID),蓝牙MAC地址。
可以在两个位置找到已安装的应用程序列表:
- 在路径“ /mobile/Library/DeviceRegistry/GUID/NanoPreferencesSync/NanoDomains/com.apple.Carousel ”中的文件“ com.apple.Carousel”中
- 在文件夹“ / mobile / Library / DeviceRegistry / GUID ”的子文件夹中
例如,根据安装的应用程序,可以访问通讯录,该通讯录与电话同步,并且是跨平台数据类型(数据放置在文件
/ mobile /库/ DeviceRegistry / GUID / AddressBook /中 )或存储银行业务的存折存储库。卡或会员计划卡,各种存折票证(数据放置在文件
/mobile/Library/DeviceRegistry/GUID/NanoPasses/nanopasses.sqlite3中 )。 “通过表”表中后者的数据库包含三个部分的数据(为方便查看,下图是从电话而非时钟中拍摄的):
- Unique_ID
- Type_ID(机票,会员卡等)
- 单独“通过”的编码内容(值/数据格式)

此外,Apple Watch还提供对Apple Health应用程序数据的访问,并从各种来源(包括 用户手动输入的内容中。 通常,此应用程序的数据是加密的,因此,只有为其设置了密码(即备份文件已加密),它们才会进入备份。 但是,此应用程序可以选择以明文形式导出数据而无需加密(在zip存档中)。 导出数据时,必须考虑将存档导出到任何应用程序:苹果文件,云存储,IM等,而无需进行额外的加密,这一点很重要。 该应用程序在下面的“ Apple Health”部分中进行了单独分析。
Android手表
三星齿轮
手表
Android手表由各种制造商(华硕,三星,LG等)生产。 与Apple Watch不同,它们通常提供整套的3G-4G模块来安装SIM卡,而不是eSIM,否则功能不会有所不同。
在数据访问方法中,区别如下:
- 法医研究(物理,逻辑和网络)
- 锁屏旁路
- 使用根数据分析工具
作为复制映像,节和根工具的一部分,本文将仅考虑第一个选项。 逻辑研究(包括作为备份的一部分)与已知方法没有不同。 该研究的在线版本越来越受欢迎,即使在现成的法医解决方案框架内也没有得到广泛的代表。 它包含用于通过Wi-Fi,蓝牙交换数据的交互机制的复制,包括 MITM方法,但需要在另一篇文章中进行考虑。
复制设备映像
分析Android设备时,方法不会改变,只是工具有所不同(该工具的示例将在“三星/ LG”部分中给出)。 要复制设备的内容,可以使用整个设备或单个分区的按位复制。 为此,请使用开发人员模式。 最简单的选择是使用adb shell和adb pull命令访问数据。 根据制造商,设备型号和操作系统版本,可以使用ADB,SDB或MTK工具包。 通常,复制用户部分“
/ dev / block / mmcblk0p12 / data ”以进行分析,但如有必要,可以复制其他部分:
- DD if = /dev/block/mmcblk0p12/==/storage/extSdCard/data.dd的数据
- DD if = / dev / block / mmcblk0p8 / cache = / storage / extSdCard / cache.dd
- DD if = / dev / block / mmcblk0p3 / efs = / storage / extSdCard / efs.dd
- DD if = /dev/block/mmcblk0p09/==/storage/extSdCard/system.dd的系统
锁屏旁路
对于Wear OS,使用密码是可选的,因此手表通常不受密码保护。 与Apple相比,有更多方法可以绕过Android手表的锁定。
- 基于帐户的密码管理。
- Gesture.key和settings.db(与锁定文件的交互)。
- 亚行密钥
基于帐户的密码管理绕过锁的侵入性最小的方法是使用Google帐户和以某种方式获得的凭据。 方法可能有所不同,包括通过取证解决方案访问帐户。 获得访问权限后,可以远程解锁设备或输入新的密码,这两种情况都可让您绕过密码锁定。
Gesture.key和settings.db亚行或其类似物是开发工具的一部分,并且独立于它们工作。 这些实用程序可用于修改和删除系统文件:负责锁定PIN码的gesture.key文件和负责解锁锁定设备的
settings.db文件。 在这两种情况下,都需要对设备进行物理访问。 对于第一个文件,使用一组命令删除“
adb.exe shell; cd /数据/系统; rm手势 ”和激活的调试模式“调试模式”或通过自定义恢复(如ClockworkMod或Team Win Recovery Project(TWRP))执行命令。
同样,对于
settings.key,应运行命令“
update system set value = 0 ”,这将导致
永久替换
lock_pattern_autolock和
lockscreen.locked参数的值,并在不知道PIN码的情况下解锁设备。
还值得注意的是,锁定的引导加载程序和缺少的解锁工具均不允许访问数据,在其他情况下,尤其是如果已经安装了自定义恢复的情况下,访问没有任何困难。
亚行键通常,在各种情况下使用设备会导致不安全的设置和设备状态。 特别是,使用设备进行开发时,它将强制启用
USB调试模式,并且位于用户//。中的adbkey和adbkey.pub开发密钥//将Android /目录放置在与设备同步的PC上。 因此,该模式本身允许您安装第三方软件,绕过屏幕锁定,并且可以使用按键将“同步”状态转移到新位置。
穿戴操作系统和根目录
对于Android手表,可以使用Android OS来适应设备的物理需求。 在手表系列中,华硕Zenwatch,华为手表,LG Watch和其他许多手表都使用Android操作系统,而三星手表则使用Tizen OS。
Android Wear以4.4W1、4.4W2、1.0开头,并以2.9版本结束,该版本与通常的Android(从4.4开始)相对应。 4.4、5.0.1版本并以7.1.1 / 8.0.0结尾(2018年2月)。 在Wear OS上更改品牌后的新版本从1.0(Android 7.1.1 / 8.0.0-2018年3月)和2.1版(7.1.1 / 9.0.0-2018年9月)开始,以及之后的版本。佩戴2.0版。
根目录:恢复-要搜索必要的版本,可以使用搜索 :- TWRP
- 对于版本5.1.1 twrp-3.1.0-0.img是合适的
- 对于6.0.1版和Wear 2.0版,twrp-3.0.0-0.img是合适的
- 对于Samsung Gear&LG Watch,版本2.8.4及更高版本适用
例如,三星Gear Watch和LG Watch
省略Samsung Gear的技术参数,您可以考虑将研究设备作为物理法医研究的一部分。 手表不支持Wi-Fi连接,仅蓝牙和USB连接可用,以及可选的密码保护。 对于三星,需要一个SDB(智能开发桥),它是Tizen-SDK的一部分。 对于LG,则需要传统的Android工具套件ADB。
数据提取可以分为三个步骤。
阶段编号1。 为三星扎根要获取它,您需要找到合适的自定义映像,三星设备的通用实用程序-Odin 3.0,将设备置于开发模式(通过打开SDB),将其置于“下载模式”模式,然后执行命令“
Sdb shell,sdb root ”
阶段编号1。 为LG扎根在获得root用户访问权限之前,必须启用ADB调试模式。 之后,使用LG Watch Restore工具,重新启动进入引导程序并更新映像:
- adb reboot-bootloader
- 快速启动OEM解锁
- adb push SuperSU.zip / sdcard /下载
- adb reboot-bootloader
- fastboot引导twrp.img
- 安装SuperSu.zip,然后等待重新启动
阶段编号2。 获取设备映像在各种Android开发工具中,有流行的
Toybox ,它允许您
创建设备
的图像以进一步提取和研究数据。 Toybox包位于外部驱动器上或主存储器的下载文件夹中。 更改了执行toybox的访问权限,执行了用于复制的适当部分的搜索(通过执行命令
cd / dev / block / platform / msm_sdcc.1; ls -al by-name )。 通常,将
复制/ dev / block / mmcblk0p21中的用户部分(userdata)。 之后,使用toybox,dd和netcat复制相应部分的图像:
- adb push toybox / sdcard /下载
- 亚行壳; su
- MV / SD卡/下载/玩具盒/开发/
- chown root:根玩具箱;
- chmod 755玩具箱
- cd / dev /块/平台/ msm_sdcc; ls -al的名字
- / *使用dd和管道将图像分区到netcat,-L将netcat置于侦听模式* /
- dd if = / dev / block / mmcblk0p21 | ./toybox nc -L
- / *为用户显示的手表上正在监听的端口号* /
- 44477 / *显示的端口* /
- 亚行转发TCP:44867 TCP:44867
- / *发送请求以观看端口号44867并将其发送到图像文件* /
- nc 127.0.0.1 44867> Samsung.IMG
阶段编号3。 数据提取对于三星而言,最有用的数据独立存储在手表中,位于以下数据库中:
- 消息-apps.com.samsung.message.data.dbspace / msg-consumer-server.db
- 健康/健身数据-apps.com.samsung.shealth / shealth.db
- 电子邮件-apps.com.samsung.wemail.data.dbspace / wemail.db
- 联系人/通讯录-dbspace / contacts-svc.db
对于LG手表-在以下数据库中:
- 事件/通知-data.com.android.providers.calendar.databases / calendar.db
- 联系人/通讯录-data.com.android.providers.contacts.databases / contacts2.db
- 健康/健身数据-data.com.google.android.apps.fitness.databases / pedometer.db
健身追踪器-小米乐队

健身追踪器是辅助设备,所有数据都收集在Mi-Fit应用程序中,该应用程序始终通过与TLS1.2的加密连接与主要位于欧盟的Amazon AWS服务器进行交互。 许多不涉及操作的请求都发送到美国服务器。 对于Mi Fit,由于缺少SSL固定以及无法在设备上安装根证书,因此加密无法完全阻止MITM攻击。 在这种情况下,将访问通过网络传输的所有数据。 在本地,应用程序文件夹包含详细的事件日志和用户的适应性指示器,例如,从中获取此数据作为用户方案的一部分。
服务器请求api-mifit.huawei.comGET /users/-/sports?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&sportCategory=run&timezone=GMT-3%3A00 HTTP/1.1 Content-Type: application/json
答案 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: 716 { "items" : [ { "trackId" : "1496744715", "startTime" : 1496744715, "endTime" : 1496748315, "sportTime" : 1800, "distance" : 3600, "calories" : 3.5, "averagePace" : 2.0, "averageStepFrequency" : 39, "averageStrideLength" : 68, "timestamp" : 1496744715, "averageHeartRate" : 90, "altitudeAscend" : 20, "altitudeDescend" : 10, "secondHalfStartTime" : 600, "strokeCount" : 30, "foreHandCount" : 15, "backHandCount" : 15, "serveCount" : 30, "type" : "OUTDOOR_RUN" } ] }
健身追踪器-华为荣耀带

与小米Band一样,华为Honor Band也不是独立设备,所有数据都是通过手机上安装的应用程序收集的。 该应用程序还依赖TLS连接,但是与小米不同,它的连接数量很少。 所有这些都得到充分保护,包括 来自MITM攻击和SSL Strip攻击。
同时,从跟踪器的传感器获得的大量数据作为备份的一部分从本地接收,这些数据可以分为服务,用户和适应性数据,而数据又分为原始数据和汇总数据。 数据列表适用于iOS,但与Android版本没有区别。
- 设备数据和日志位于文件夹/ hms / oclog / crash // hms / oclog / log中。
- 跟踪器的当前值和最新值包括有关睡眠,唤醒数据,距离(距离,里程等),心率和卡路里的信息。 它们位于/Documents/*.archiver文件中。
- 固件包括所有数据,位置,下载位置的URL,大小,更改日志,强制更新标志和固件文件本身,这些文件通过DFU安全更新的一部分通过HTTP下载(最早的版本除外)。
- 地理数据包括位置信息,其中涉及时间和活动的间隔(按天和活动类型),以及有关移动速度和方向的数据(如果有)。 它们也位于/*.archiver文件夹中。
- 用户数据包括基本信息-个人资料图片,姓名,出生日期,身高,体重,性别,年龄以及步数和里程数的常规数据。 也位于/*.archiver文件夹中。
- 帐户详细信息包括UDID,令牌,用户ID,会话ID,Mac设备地址和蓝牙密钥。

健身应用-公路自行车,山地自行车

作为健身应用的示例,考虑了RoadBike和MountainBike PRO版本,它们的实现方式没有什么不同。
这些应用程序可以跟踪用户的成就,速度指示器,通过距离,并具有与某些物理跟踪器集成的能力,并且也并不意味着互联网活动。 本地存储所有记录的数据:
- GPS数据-地理位置,距离,高度和海拔,本地时间戳记以及gps值。
- 会话数据-时间戳,距离,轨道持续时间,平均和最小最大指示器,高度差心脏指示器(如果有特殊的跟踪器)。
- 速度数据-时间戳,行驶时间,距离(如果您有其他传感器,则可以更正正确的速度计算)。
- 用户数据-凭据(包括明文密码),身高,体重,性别,姓名和出生日期。
所有数据都放置在database.sqlite3中,此外,MapOpenCycleMap.SQLite数据库包含有关轨道的信息,包括地理位置以及地理位置和路线的快照。


智能药物
智能医学涉及将数字技术与社会内部的健康问题融合在一起,以提高医疗保健的有效性。 这些技术包括硬件和软件解决方案和服务,包括远程医疗,移动电话和应用程序,可穿戴设备和固定设备,诊所传感器或远程监控。

大多数健康应用程序分为两类:源应用程序(用于测量人类健康指标)和数据聚合器应用程序(从不同来源在一处收集数据)。
苹果健康
Apple应用程序从支持HealthKit协议的各种软件和硬件源(iPhone,Apple Watch和第三方应用程序)收集健康数据。
数据分为4类:活动,睡眠,正念和营养(摘要活动,睡眠和觉醒指标,iOS 11-12的不确定类别,食物日记)。 如果使用密码,Touch ID或Face ID,则此应用程序中的所有数据都会在设备上和云中进行加密,包括通过网络传输数据时。 另外,有关数据保护的比较,可以在
Elcomsoft文章中找到Apple Health和Google Fit的比较。

从安全性的角度来看,全球范围内的所有Apple Health数据都可以分为两类:应用程序从不同来源自动保存数据和导出数据。
在第一种情况下,从Apple的角度来看,大多数数据都是加密的,并且明文中的特定部分对于加密数据并不关键。
在第二种情况下,所有数据将以CDA格式(临床文档体系结构)的明文形式存在-通常用于交换医学数据; 以更熟悉的形式,这是一个包含xml文件的档案。 应当指出,Apple的数据保护并不意味着源应用程序中的数据也受到保护(可以在上面的示例中使用跟踪器,在下面的示例中使用权重)。 它还不能保证应用程序不会通过Apple Healthkit使用来自其他源应用程序的数据,也不会将数据保存在其云中。
值得注意的是,苹果公司的许可模式最初有点不同。 与Android的早期版本不同,所有在启动时或根据需要(在完成需要权限的操作后)都请求访问应用程序数据的所有请求。 但是对于Apple Health应用程序,未显示读取和写入心脏,压力,质量等指标的权限的详细列表,并详细说明了所需的内容和原因(通常,立即要求所有操作)。
后者导致这样一个事实,即随着诸如Apple Health之类的应用程序问世,数据沙箱的最初想法对用户而言并不明显,这导致Apple创建了另一个医疗数据沙箱。 例如,一个应用程序要求进行读写操作,并且其中几乎没有犯罪行为,尽管基本上,大多数与Apple Health配合使用的应用程序仅写入数据而不是读取数据(基本数据除外)。 如果将应用程序明确设计为读取工作数据,则需要向用户明确通知,从而允许他禁止单独的读取请求,而不会对应用程序造成影响。 换句话说,尽管Apple Health能够汇总所有数据本身,但应像在钥匙串或沙箱中那样读写每个应用程序的医疗数据与其他应用程序隔离。 否则,从不道德的开发人员方面,可以访问其他应用程序的数据,并随后从设备中抽取它们。 顺便说一句,在源代码中的Apple Health分别允许您透明地管理权限,但是拒绝访问时应用程序正确操作的问题仍然存在(因为在Android中曾经有过应用程序权限)。
苹果还解决了将其他应用程序记录的
数据发布到请求数据的应用程序的问题。 该应用程序(在缺少访问权限的情况下)将仅接收同一应用程序先前保存的数据。 但是,这需要a)关闭不必要的访问权限并进行检查; b)不能保证应用程序的正确运行,因为 不知道是否真的需要读取任何数据的权限。 许多应用程序不响应权限检查。 因此,例如,PICCOC智能秤应用程序甚至不包含具有读取权限的部分,而仅写入数据。
一个有趣的事实是,在即将发布的Android版本中,预计可以在剪贴板上进行读取 。
Apple Health数据在以下数据库文件之间分发:
- HealthDomain \ MedicalID \ MedicalIDData.archive-将数据存储到用户手动输入的信息(名称,身高,体重,医疗植入物)中。
- HealthDomain \ Health \ healthdb.sqlite-源应用程序列表,允许您以原始格式检索数据,而无需其他保护; 还包含有关源设备的信息(名称,型号/制造商,时间戳,有关软件部件/环境的常规信息)。
- HealthDomain \ Health \ healthdb_secure.sqlite-包含其他信息(设备UDID,设备名称,时间戳,身高,性别,血型,生日,身体限制,体重,时区和电话设备的OS版本)。
- HealthDomain \ Health \ healthdb_secure.hfd是一个加密的数据库,其中包含来自源应用程序的信息。

当使用导出的数据存档时(即未加密),必须了解可以在设备上的任何位置执行导出存档,将其转移到云存储或将存档转移到任何其他应用程序本身可能存在风险因为 它包含详细信息,包括但不限于:
- 用户名,个人资料图片,身高,体重。
- 地理位置跟踪(所在国家/城市,操作系统版本)。
- Apple Health应用程序中的设备UDID,设备名称,最新数据更新日期。
- 生日,性别,血型,肤色,身高,体重,蜂蜜。 植入物。
- 每日指标和测量值,例如心率,体重,压力,设备和应用程序的各种其他指标,卡路里和营养日记数据,训练和距离数据,带有时间戳的活动日志等。
- 免费的XML解析器
智能秤Picooc
PICOOC将硬件解决方案与Internet应用程序和服务集成在一起。 特别是,在智能体重秤中监测了13个测量值,例如体重,体脂百分比和脂肪指数,体重,骨骼,肌肉,体内水分,代谢年龄和指标变化。


以下数据已本地发布:
- 扫描附近设备会出现Bluetooth日志,并且所有设备的设备名称及其Mac地址都会保存下来。
- 身体测量值存储在picooc.sqlite数据库的“ body_indexs”表中,并且在应用程序说明中已提到。
- 有关设备的信息包括有关设备的mac地址,型号名称,用户ID,设备映像的信息,并且还存储在picooc.sqlite文件中的文件中。
- 朋友列表包括有关姓名,电话,user_id,字段的信息-前提是朋友使用相同的应用程序-即 该应用程序形成一个社交网络。
- 用户信息包括昵称,用户ID,身高,年龄,性别,种族,并由iOS示例中的两部分组成
- 传感器数据包括有关时间,年龄,操作系统,高度,屏幕设置,设备型号,语言设置,环境等信息。 并存储在文件“ \ sensoranalytics-message-v2.plist.db”中
- 设置包括有关本地密码,解锁方法和近期活动的信息; 存储在iOS示例中的文件“ picooc \ Library \ Preferences \ com.picooc.international.plist”中。

从数据传输的角度来看,存在使用根证书进行拦截的可能性。 可以考虑以下最有趣的数据:
- 个人资料图片的URL(可通过链接不断公开获得,实际上有2个URL):
- 有关设备和环境的信息。
- 用户信息,包括用户名,生日,身高,体重,时间戳,操作系统和时区。
- 凭据,包括密码,包括将密码从旧更改为新时的密码。

这是第一篇文章的结尾。 第二部分将介绍互联家庭:智能电视,语音助手,智能厨房和照明。