近期,由两位安全研究人员,Roberto Paleari及Aristide Fattori,发布了关于三星Galaxy手机设备安全漏洞的技术细节。据称, Galaxy手机 可在锁屏状态下 被未授权的第三方人员用以 进行电话外呼和短信发送。
根据 Roberto Paleari及Aristide Fattori 发布的技术细节可知,攻击者可借助对手机设备的临时访问或窃取受害用户手机的方式,通过USB接入手机设备并将之连接到Linux工作平台上,最后发送指令来实现电话呼叫及短信发送。
而该方式并没用利用任何软件的漏洞,即使手机关闭了USB调试功能(ADB, Android调试桥,可帮助用户管理设备或模拟器状态)或者USB网络共享功能,也可以实现上述的电话呼叫及短信发送。
对于这个漏洞,当前的核心问题是当手机通过USB连接到另外的 Linux系统时,一般情况下都可以通过 Linux系统的虚拟USB串行口(主要为 /dev/ttyACM0设备),来与手机设备通讯。
根据测试情况,当连接到一个 USB控制器(比如一个普通的笔记本电脑),对于三星Galaxy手机而言,此时会暴露出一个串行接口,而通过利用该接口我们可以与手机的USB modem来进行通信。
对于旧的三星手机和固件版本,如GT-I9192(三星S4 Mini ,版本序号为I9192XXUBNB1),在将手机接入到Linux主机,确认通过接口连接到USB Modem后,即可尝试发送AT (Attention) 命令,据分析,其中一些指令会被传递到基带 Modem中 ,而其他一些指令则被用户空间应用进行处理。
而通过上述的接口来运行及传递简单的AT (Attention)命令,理论上,可让一个技术娴熟的攻击者在手机设备执行各类操作。
AT ,全称为Attention,由Hayes公司发明的,AT指令集主要使得计算机或终端可以与Modem进行通讯。通过发送AT指令来控制移动台的功能,与GSM网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。
而在近期的固件版本(例如最新版本的三星S4和三星S6) 中来利用此漏洞相比之下 是没那么简单的,因为最近期的固件版本中,其默认配置是,当设备连接到主机,开放給主机的只有MTP接口功能,主要用于文件传输。
但经过测试,我们发现,攻击者仍然可以通过将默认配置切换到第二USB配置,来实现与Modem通讯。因此,假设在这种情况下, 攻击者 在连接到 Modem 之前,就需要将默认配置切换到USB 配置 #2 。而这个操作可以通过PC终端来实现,而无需解锁手机设备。以下为默认配置的信息,
$ lsusb -v ... Bus 001 Device 007: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x04e8 Samsung Electronics Co., Ltd idProduct 0x6860 Galaxy (MTP) ... bNumConfigurations 2 Configuration Descriptor: ... Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 6 Imaging bInterfaceSubClass 1 Still Image Capture bInterfaceProtocol 1 Picture Transfer Protocol (PIMA 15470) iInterface 5 MTP ... Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 105 bNumInterfaces 3 bConfigurationValue 2 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 96mA ... Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 6 CDC Abstract Control Model (ACM) ...
在此次PoC中,我们开发了一个简单工具(用C语言编写的),名为usbswitcher。通过该工具,我们可将指定的三星手机设备切换到USB 配置 #2。该工具使用了 libusb 库来实现上述功能。而同样的任务,我们也可以通过使用/sys/bus/usb虚拟文件系统来完成。
我们使用的强制手机切换配置的流程为首先重置 USB设备(通过usb_reset()函数来实现),接着切换配置(通过set_configuration()函数来实现)。而有时候,工具 usbswitcher的 第一次执行可能不会生效,所以需最好运行两次,确保配置已被切换过来。工具 usbswitcher源代码链接地址为: usbswitcher.c 。
我们知道,访问Modem最明显的后果是使拨打电话和发送短信称为了可能。对于前者,即呼出电话,可以通过使用以下命令来实现:
ATD+123456;
该命令实现的效果主要是在锁屏状态下拨打电话号码123456。如以下PoC视频中介绍的一样。
视频地址 : Modem interface exposed via USB 。
对于有些朋友在询问到,是否可以利用该漏洞来获取访问设备的权限,比如访问其通讯录、照片以及内部存储等?对于这个问题,理论上AT命令是可以被基带处理器直接进行处理的,但如我们之前提到的,AT命令在传递的过程中,可能有些AT指令会被用户空间应用解析,所以这种情况下,基带处理器无法处理指令,所以也无法直接实现上述所说的访问权限。
在这个测试中,我们观察到,S4 mini (固件版本序号为 I9192XXUBNB1) 可以支持某些AT指令,这些指令可以用来控制Android系统的设置。比如,在这其中,AT+USBDEBUG指令允许启用USB 调试功能,AT+WIFIVALUE指令可启用或关闭设备Wi-Fi等等。
在近期的手机固件版本,三星可能意识到了这种命令的相关风险,其开始引入一种基于黑名单的过滤机制(由ddexe二进制应用程序来执行),来过滤掉有威胁的命令。举个例子,在测试过程中传递AT+ UsbDebug指令时,我们可以看到以下信息为被记录到Galaxy S6设备的系统日志中,
D/DataRouter( 302): write [151] bytes of data to USB fd[9] D/DataRouter( 302): After the usb select D/DataRouter( 302): read usb data[len:12] D/DataRouter( 302): read usb data message:AT+USBDEBUG D/DataRouter( 302): Not allowed AT cmd!!#不允许执行AT指令 D/DataRouter( 302): Before the usb select
目前,就已经测试过且发现可进行前文所述操作的设备类型包含如下:
SM-G920F, 版本序号:G920FXXU2COH2 (Galaxy S6)
SM-N9005, 版本序号: N9005XXUGBOK6 (Galaxy Note 3)
GT-I9192, 版本序号: 9192XXUBNB1 (Galaxy S4 mini)
GT-I9195, 版本序号: I9195XXUCOL1 (Galaxy S4 mini LTE)
GT-I9505, 版本序号: I9505XXUHOJ2 (Galaxy S4)
*参考来源: GitHub , Softpedia ,FB小编troy编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)