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

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

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

Clipboard Image.png

有意为之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/releasekeys

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

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

Clipboard Image.png

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

总结

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

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

给TA买糖
共{{data.count}}人
人已赞赏
HackerNews

中国黑客攻击试图访问罗纳德·里根号船

2016-10-23 12:55:10

HackerNews

前CIA和NSA局长:黑外国政府?我们本来就干这事儿

2016-10-24 4:44:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索