剑客
关注科技互联网

富士康代工的Android手机中惊现“Pork Explosion”漏洞

近期,安全研究专家JonSawyer公开表示,他在某些由富士康代工制造的Android智能手机中发现了一个后门,攻击者或可通过这个后门来root用户的Android手机。在此之前,JohnSawyer曾经为美国地方政府和执法机构提供过安全咨询服务,所以他的这一发现也引起了不小的轰动。

富士康代工的Android手机中惊现“Pork Explosion”漏洞

有意为之or无心之举?

想必各位应该都知道富士康公司吧?富士康目前正在为多家智能手机厂商代工生产或组配智能手机,而且某些厂商甚至还允许富士康开发手机系统固件中的部分低级别代码。

根据Sawyer的发现,富士康在代工制造某些Android智能手机时,“故意”在App的引导程序代码中留下了一个调试功能,而在某些特殊软件的帮助下,攻击者就可以利用这个后门来攻击用户的手机了。

Sawyer在接受采访时说到:

“这个漏洞之所以会存在,完全是由于富士康的技术人员”疏忽大意“所导致的。该后门是不是故意留下的,我们暂且不论,但是这样的失误确实是非常可怕的。攻击者如果可以成功利用这个漏洞,那么他们将可以绕过Android的安全访问控制(SELinux),并获取到目标设备的完整控制权,然后在未经身份验证的情况下访问目标设备中的数据。

“Pork Explosion”漏洞

这个名为“Pork Explosion”的漏洞不仅对攻击者来说是一个有力的攻击武器,而且对于安全取证专家而言也是一个非常棒的工具。实际上,正是因为手机中存在各种各样的安全漏洞,所以安全取证专家们才可以顺利地从目标手机中提取出各种类型的取证数据。根据Sawyer透露的信息,由于这个漏洞将允许攻击者直接获取到一台加密设备的root shell,所以安全取证人员同样可以利用这个漏洞来进行数据提取、爆破密钥、或者解锁手机的引导程序(bootloader)。

Sawyer说到:

“在这一漏洞的帮助下,攻击者一旦拿到了目标用户的智能手机之后,便可以通过USB来禁用SELinux,然后获取目标设备的root shell。简而言之,攻击者只需一条USB数据线,即可完成攻击。”

Sawyer表示,此次发现存在安全漏洞的手机为富士康代工的Infocus M810和Nextbit Robin这两款手机。他在今年八月份就已经与Nextbit公司以及Google的Android安全团队进行了联系,并且将有关该漏洞的信息提供给了相关的安全技术人员。目前,Nextbit已经修复了相应的安全漏洞,但Infocus方面还未有消息更新。

漏洞分析

正如文章中所提到的那样,攻击者如果可以拿到目标手机的话,他们就可以通过USB来禁用SELinux,并且获取到设备的rootshell。除此之外,攻击者还可以通过adb命令、fastboot、以及App的引导程序来对设备进行攻击。于是我便对Nexbit Robin的App引导程序进行了分析,其中有一段fastboot命令引起了我的注意,而这个命令似乎并不应该出现在这个地方。具体如下所示:

LOAD:0F92F8DC fastboot_table                          ; CODE XREF:sub_F939888+174p
LOAD:0F92F8DC
LOAD:0F92F8DC var_C          = -0xC
LOAD:0F92F8DC
LOAD:0F92F8DC                STMFD           SP!, {R4,LR}
LOAD:0F92F8E0                MOV             R4, #0xF9B9C14
LOAD:0F92F8E8                SUB             SP, SP, #8
LOAD:0F92F8EC                MOV             R0, #0x2AE4
LOAD:0F92F8F0                MOV             R1, #0xF140
LOAD:0F92F8F4                LDR             R3, [R4]
LOAD:0F92F8F8                MOVT            R0, #0xF97
LOAD:0F92F8FC                MOVT            R1, #0xF92
LOAD:0F92F900                STR             R3,[SP,#0x10+var_C]
LOAD:0F92F904                BL              fastboot_register
LOAD:0F92F908                MOV             R0, #0x2AEC
LOAD:0F92F90C                MOV             R1, #0xDCB4
LOAD:0F92F910                MOVT            R0, #0xF97
LOAD:0F92F914                MOVT            R1, #0xF92
LOAD:0F92F918                BL              fastboot_register
LOAD:0F92F91C                MOV             R0, #0x2B00
LOAD:0F92F920                MOV             R1, #0xEB58
LOAD:0F92F924                MOVT            R0, #0xF97
LOAD:0F92F928                MOVT            R1, #0xF92
LOAD:0F92F92C                BL              fastboot_register
LOAD:0F92F930                MOV             R0, #0x2B10
LOAD:0F92F934                MOV             R1, #0xE3A0
LOAD:0F92F938                MOVT            R0, #0xF97
LOAD:0F92F93C                MOVT            R1, #0xF92
LOAD:0F92F940                BL              fastboot_register
LOAD:0F92F944                MOV             R0, #0x2B24
LOAD:0F92F948                MOV             R1, #0xE598
LOAD:0F92F94C                MOVT            R0, #0xF97
LOAD:0F92F950                MOVT            R1, #0xF92
LOAD:0F92F954                BL              fastboot_register
LOAD:0F92F958                MOV             R0, #0x2B34
LOAD:0F92F95C                MOV             R1, #0xE6C4
LOAD:0F92F960                MOVT            R0, #0xF97
LOAD:0F92F964                MOVT            R1, #0xF92
LOAD:0F92F968                BL              fastboot_register
LOAD:0F92F96C                MOV             R0, #0x2B44
LOAD:0F92F970                MOV             R1, #0xE7C8
LOAD:0F92F974                MOVT            R0, #0xF97
LOAD:0F92F978                MOVT            R1, #0xF92
LOAD:0F92F97C                BL              fastboot_register
LOAD:0F92F980                MOV             R0, #0x2B50
LOAD:0F92F984                MOV             R1, #0xE954
LOAD:0F92F988                MOVT            R0, #0xF97
LOAD:0F92F98C                MOVT            R1, #0xF92
LOAD:0F92F990                BL              fastboot_register
LOAD:0F92F994                MOV             R0, #0x2B60 ;reboot-recovery
LOAD:0F92F998                MOV             R1, #0xE500
LOAD:0F92F99C                MOVT            R0, #0xF97
LOAD:0F92F9A0                MOVT            R1, #0xF92
LOAD:0F92F9A4                BL              fastboot_register
LOAD:0F92F9A8                MOV             R0, #0x2B70 ;reboot-ftm
LOAD:0F92F9AC                MOV             R1, #0xE54C
LOAD:0F92F9B0                MOVT            R0, #0xF97
LOAD:0F92F9B4                MOVT            R1, #0xF92
LOAD:0F92F9B8                BL              fastboot_register
LOAD:0F92F9BC                MOV             R0, #0x2B7C
LOAD:0F92F9C0                MOV             R1, #0xEE1C
LOAD:0F92F9C4                MOVT            R0, #0xF97
LOAD:0F92F9C8                MOVT            R1, #0xF92
LOAD:0F92F9CC                BL              fastboot_register
LOAD:0F92F9D0                MOV             R0, #0x2B88
LOAD:0F92F9D4                MOV             R1, #0xF804
LOAD:0F92F9D8                MOVT            R0, #0xF97
LOAD:0F92F9DC                MOVT            R1, #0xF92
LOAD:0F92F9E0                BL              fastboot_register
LOAD:0F92F9E4                MOV             R0, #0x2B98
LOAD:0F92F9E8                MOV             R1, #0xF518
LOAD:0F92F9EC                MOVT            R0, #0xF97
LOAD:0F92F9F0                MOVT            R1, #0xF92
LOAD:0F92F9F4                BL              fastboot_register
LOAD:0F92F9F8                MOV             R0, #0x2BA0
LOAD:0F92F9FC                MOV             R1, #0xEFE0
LOAD:0F92FA00                MOVT            R0, #0xF97
LOAD:0F92FA04                MOVT            R1, #0xF92
LOAD:0F92FA08                BL              fastboot_register
LOAD:0F92FA0C                LDR             R2, [SP,#0x10+var_C]
LOAD:0F92FA10                LDR             R3, [R4]
LOAD:0F92FA14                CMP             R2, R3
LOAD:0F92FA18                BNE             loc_F92FA38
LOAD:0F92FA1C                MOV             R0, #0x2BA8
LOAD:0F92FA20                MOV             R1, #0xF0D0
LOAD:0F92FA24                MOVT            R0, #0xF97
LOAD:0F92FA28                MOVT            R1, #0xF92
LOAD:0F92FA2C                ADD             SP, SP, #8
LOAD:0F92FA30                 LDMFD           SP!, {R4,LR}
LOAD:0F92FA34                B               fastboot_register

从上面这段代码中我们可以看到,手机中同时存在有两种fastboot命令,即普通命令和OEM命令。普通命令会以“command:parameters”(命令:参数)的形式通过USB来进行发送。比如说,“getvar all”命令则会以“getvar:all”的形式发送,而“reboot”命令就直接以“reboot”的形式发送。需要注意的是,这种普通命令是硬编码在fastboot客户端中的。但是其中的OEM命令却并没有以设备制造商的标准命令形式执行,OEM命令是以“oem command parameters”的形式发送的,例如“oem writeimei 1234567899876543”。

在上面列出的命令中,存在问题的命令为“reboot-ftm”,而且这个命令既不属于普通命令,也不属于OEM命令。实际上,这是一个由移动设备支持的命令,而且我们无法在fastboot中实现这个命令。为了与这个命令进行交互,我们必须先创建一个自定义的客户端,然后用这个自定义的客户端来与设备进行连接,并向设备的bootloader发送字节数据“7265626F6F742D66746D(reboot-ftm)”。操作代码如下所示:

Jons-Mac-Pro:nextbit jcase$ adb shell
root@ether:/ # id
uid=0(root) gid=0(root)groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)
root@ether:/ # getenforce                                                     
Disabled
root@ether:/ # grep finger /system/build.prop                                 
# Do not try to parse description, fingerprint, orthumbprint
ro.build.fingerprint=Nextbit/ether/ether:6.0.1/MMB29M/00WW_1_350:user/release-keys

当我们向目标手机发送了这条命令之后,手机将会重启并进入“工厂测试模式”。在这个模式下,手机会将软件和硬件的详细信息全部显示出来,包括eMMC存储器的牌子、手机MAC地址、以及手机序列号。如果你习惯于使用adb来访问手机的话,你也可以通过“adb reboot ftm”命令来进入这个模式。

在工厂测试模式下,adbd进程会以root权限运行,而此时我们就可以在不经过身份验证的情况下通过adb来拿到设备的shell了。需要注意的是,此时设备的SELinux将会处于禁用状态。

富士康代工的Android手机中惊现“Pork Explosion”漏洞

对于那些希望在设备中寻找安全漏洞的人,我建议大家可以先去检查“ftmboot”和 “ftmdata”这两个分区。其中,“ftmboot”分区与传统的Android内核以及ramdisk镜像有关,而“ftmdata”分区在ftm启动模式下会被自动加载。如果设备存在漏洞的话,对这些分区进行安全检测也许会给你带来意想不到的惊喜。

总结

虽然从表面上看,这是一个调试功能,但这绝对是一个不折不扣的后门,而且这种东西是绝对不能被允许存在于现在这些智能设备中的。至于这个漏洞到底是富士康的无心之举,还是某人有意为之,我们就不得而知了。

需要注意的是,在此之前,相应的手机厂商其实并不知道他们的产品中被加入了后门。而且在这篇文章发稿之前,富士康方面仍然没有对此次事件发表任何的评论。

* 参考来源: theregisterbbqand0days ,本文由FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址