[IOT安全][翻译]基于飞利浦TriMedia系列处理器的IP摄像机逆向分析(一)
基于飞利浦TriMedia系列处理器的IP摄像机逆向分析(一)
原文链接:https://blog.quarkslab.com/reverse-engineering-a-philips-trimedia-cpu-based-ip-camera-part-1.html
简介
这个系列的文章共有三部分。在本篇也就是第一部分中,我将主要描述一个鲜为人知的多媒体处理器——TriMedia系列处理器。在2018欧洲黑帽大会上,来自quarkslab的安全研究员(也就是本博文的作者)已经出国一个speaking了,其实那个speaking是基于这个系列博文的。
第一部分是对该研究项目的介绍,为了发现设备攻击面,我们做了初步的探索。第二部分将更多地关注架构本身,第三部分将讨论TriMedia组件。我希望你喜欢这个系列博文。欢迎任何反馈,只需在ncriva [at] quarkslab.com上发一条或者在推特上发推@crackinglandia。
讲个故事,兄弟
几年前,一位同事弗朗西斯科·法尔肯和我在hack.lu和Ekoparty上做了关于黑客攻击IP摄像机的演讲。这是我与嵌入式世界的第一次接触。我们玩得很开心,从那一刻开始,IoT成为了一个非常有趣的话题。这样,每次我拿到一些设备,我都必须拆开它并研究它。
几个月前,我买了一台D-Link网络摄像机,特别是DCS-5300。它是终端用户的IP摄像机,主要供家庭用户观看他们家中正在发生的事情或在他们不在的时候工作。这是一款旧的IP摄像机,但从硬件角度来看它有一些非常有趣的东西。
通常,或者至少从我多年来看到的情况来看,IP摄像机内部都有ARM或MIPS架构的CPU,但这不是这种情况。这个型号以及DCS-5xxx系列的其他型号都有一个TriMedia CPU,一个非常老的CPU。为什么这很有趣?就个人而言,这对我来说是一个新的架构,这很棒,因为我可以学习新的东西。但是,关于TriMedia CPU的文档很少。从我在这项研究中看到的,没有人有关于它的文档,没有人被允许谈论它,没有人愿意分享任何关于它的东西,一切似乎有点“可怕”和“模糊”TriMedia CPU。为什么?好吧,我真的不知道。我敢打赌,因为它是最初来自飞利浦的专有CPU,可能是NDAs的问题。
在这篇文章中,我们将讨论我固件分析时使用的第一种方法,然后我们将看到对相机中使用的软件和硬件的一些分析,然后,我们将对介绍这台相机中使用的特殊架构的CPU。
固件分析
当我开始分析新设备时,我要做的第一件事就是从供应商的网站获取固件。最新版本的固件是A3 1.06(2009),但我决定分析以前的版本v1.05,因为它是我在相机上安装的版本。
我在固件镜像文件上运行了binwalk,得到了以下结果:
正如您在输出中看到的那样,binwalk只能识别一些HTML,XML和GIF文件。还有一些似乎是某些Base64索引表的证书,但没有任何引导程序,内核或文件系统的迹象。通常,引导加载程序和内核映像往往位于固件映像文件的开头,但事实并非如此。
Binwalk还发现了一个名为“Digi International固件”的东西,但我们稍后会看到这只是误报。
对于那些没有注意到的人,binwalk能够识别从偏移量0xEEEC3开始的一些文件,其余的呢?我假设文件开头的二进制blob是加密/压缩的,或两者兼而有之,所以我决定使用binwalk(“-E”和“-B -E”选项)进行熵分析:
- 仅限熵分析
- 熵加签名分析
攻击面分析
我尝试的下一件事是开始查看相机的不同方面,以查看是否有任何漏洞,我可以利用它来访问它。最后,我们总是希望得到一个shell。😃
我开始做nmap扫描:
总结一下,使用nmap扫描发现了一下开放的端口/服务:
- HTTP服务器:用于管理IP摄像机。可以从Web界面启用HTTPS服务器,但默认情况下不启用。
- FTP服务器:用于访问摄像机可以生成的屏幕截图和音频。这是访问多媒体文件最方便的方式。
- Telnet服务器:用于对摄像机进行更“高级”的管理。
还有其他三项服务我一开始并不确定它们的功能是什么,但在做了一些谷歌搜索后,我可以找到一些有趣的东西:
无线电以太网(RFE)是一种网络音频广播系统。它由允许在网络上传输音频数据包的程序和工具组成。通过使用传统无线电广播的类比,可以最好地理解该系统。
无线电以太网(RFE)是一种网络音频广播系统。它由允许在网络上传输音频数据包的程序和工具组成。通过使用传统无线电广播的类比,可以最好地理解该系统。
Telnet服务
连接到Telnet服务器时,必须指定密码。密码是'admin'(我只是尝试了默认密码,猜猜是什么?我好运)并且用户无法在Web界面中更改密码,也无法使用Telnet服务。
如果您输入“帮助”,则会显示以下菜单:
FTP服务器
HTTP服务器
探索硬件
我决定拆开这个IP相机。我希望找到像UART或类似的接口,以便通过shell访问文件系统。
相机有两个PCB。最大的几乎所有有趣的组件我们可以在这样的设备(CPU,RAM,Flash等)中找到,而小的有一些芯片用于PTZ功能(译者注:在安防监控应用中是 Pan/Tilt/Zoom 的简写,代表云台全方位(左右/上下)移动及镜头变倍、变焦控制)。
这是最大那块PCB正面的图片:
在上图中,我们可以识别以下芯片组件/模组:
- SDRAM:Winbond W9812G2DH-7 SDRAM
- 闪存:16 MB MX29LV160BBTC-90
- WiFi /以太网:RTL8100BL
- EEPROM:Altera EPM3032A
- 视频解码器:飞利浦SAA7113H
我们拥有128 MB RAM,WiFi /以太网功能,16 MB闪存,小型视频解码器和EEPROM芯片。
然后,这是这块最大的PCB背面的图片:
在这背面,我们可以看到只有一个大芯片,通过丝印可以看到他就是飞利浦TriMedia PNX1300EH(32位处理器)。这就是这篇文章的主要研究对象,我们将专门介绍它。
最后,这是第二块(较小的)PCB的图片:
飞利浦TriMedia CPU
TriMedia系列微处理器最初由飞利浦制造,目前称为NXP(Nexperia)半导体(高通公司于2016年宣布收购恩智浦[4])。它是一系列VLIW [5](超长指令字)处理器,这意味着它们可以同时并行执行一定数量的指令,采用哈佛架构[6],其主要用途是DSP(数字)信号处理)[7]。因此,可以认为它是CPU+DSP的SOC。
最初,TriMedia处理器被命名为首字母缩略词'PNX',然后它被改为'TM',最后芯片的型号就是TMxxxxx。
TriMedia微处理器运行称为pSOS的实时操作系统。此外,还有一些努力将2.6 Linux内核分支移植到TriMedia CPU上运行[8] [9]。
为TriMedia微处理器编写代码,有一个官方SDK,包括您需要的一切(库,编译器,调试器,模拟器等),但除了使用TriMedia处理器,D-Link和销售产品的大公司外,它们不可用。例如,2Wire。但是,有一些TriMedia兼容的SDK是Streaming Networks提供的,称为IADK(集成应用程序开发套件),专为PNX1300系列而设计。
此外,还有一些配备TriMedia CPU的开发板,如果你想使用这种处理器,可以购买,例如Streaming Networks提供的TriREF开发板。但是,这种包含IADK的电路板并不便宜。事实上,我联系了TriREF董事会,它的成本约为5,000美元,我负担不了这么多钱。
在本研究期间(2019年1月),我在市场上寻找其他的开发板,但他们并没有包括SDK。
如果您想了解有关TriMedia微处理器的更多信息,可以参考相应的维基百科条目。
在这篇文章中,我将特别关注TriMedia PNX1300EH型号微处理器。希望这里提供的所有信息都可以帮助您研究同一TriMedia家族的其他处理器。
逆向工程TriMedia CPU的信息来源
对TriMedia系列处理器进行逆向工程并非易事,特别是在缺少文档和工具的情况下。互联网上关于TriMedia架构的文档很少,指令集文档很差,现有工具是私有的且昂贵的。无论如何,我们可以使用一些旧的信息来源来开始我们的旅程。
开始研究的第一个信息来源是datasheet文档。本文档包含有关处理器所有体系结构的信息。我们可以了解芯片中不同组件的主要概念,它们如何相互作用,控制器使用的特定指令集等。如果你想从学走路开始,你必须阅读datasheet文档。
另一个很好的信息来源,特别是对JTAG研究,是http://hackingbtbusinesshub.wordpress.com。即使博客不再可用,仍然有一些副本存储在web.archive.org [10] [11] [12]中。这家公司做出了出色的工作,推出了基于TriMedia CPU的2Wire路由器,并设计实现了一些优秀的工具,如2wiglet(基于urjtag,一个用于2Wire路由器和tm32dis的JTAG调试工具),一个用于TM32系列的TriMedia反汇编器。
现在我们讨论JTAG,在上一节中,我提到了Monument Data System提供的TriMedia CPU的JTAG PCI调试器。飞利浦还提供官方JTAG调试器,但它有一些特殊性。引用asbokid:
飞利浦官方提供的TriMedia JTAG工具仅适用于专用JTAG电缆。“电缆”实际上是一种复杂的编程设备。它是一个USB设备,通过NetChip NET-2282外围控制器连接到PC。程序员从自己的EEPROM启动,由带有NOR闪存和DRAM内存的飞利浦PNX1502 CPU驱动。
显然,IDA不能从工具列表中排除。IDA自其4.x版本以来支持TriMedia CPU,特别是4.21版本[13]:
版本4.21中的新功能(19/04/2002)
处理器
Trimedia(仅限特殊要求)
[..]
正如您在发行说明中所读到的,处理器模块仅在特殊要求时可用。我从HexRays请求处理器模块的支持,但他们不再提供它。
最后,在这部分的研究中,我收集了有关TriMedia(doc,tools)的各种信息和工具,并将其存储在github repo上。
结论
在本系列的第一部分中,我介绍了飞利浦TriMedia架构。我使用IP摄像头作为入口,来讨论如何研究基于TriMedia的设备,有关软件和硬件以及如何处理其神奇的ASM的公共信息资源的数量和数量。
在第二部分中,我将深入探讨TriMedia架构本身。回头见!😃
致谢
感谢我的所有Quarkslab同事,他们校对了这篇文章并提供了有价值的反馈。
参考文献
posted on 2019-09-16 13:06 大单GreatDane 阅读(575) 评论(0) 编辑 收藏 举报