mailto:wangkai0351@gmail.comhtml
原文连接:https://blog.quarkslab.com/reverse-engineering-a-philips-trimedia-cpu-based-ip-camera-part-1.htmlgit
这个系列的文章共有三部分。在本篇也就是第一部分中,我将主要描述一个不为人知的多媒体处理器——TriMedia系列处理器。在2018欧洲黑帽大会上,来自quarkslab的安全研究员(也就是本博文的做者)已经出国一个speaking了,其实那个speaking是基于这个系列博文的。程序员
第一部分是对该研究项目的介绍,为了发现设备攻击面,咱们作了初步的探索。第二部分将更多地关注架构自己,第三部分将讨论TriMedia组件。我但愿你喜欢这个系列博文。欢迎任何反馈,只需在ncriva [at] quarkslab.com上发一条或者在推特上发推@crackinglandia。github
几年前,一位同事弗朗西斯科·法尔肯和我在hack.lu和Ekoparty上作了关于黑客攻击IP摄像机的演讲。这是我与嵌入式世界的第一次接触。咱们玩得很开心,从那一刻开始,IoT成为了一个很是有趣的话题。这样,每次我拿到一些设备,我都必须拆开它并研究它。web
几个月前,我买了一台D-Link网络摄像机,特别是DCS-5300。它是终端用户的IP摄像机,主要供家庭用户观看他们家中正在发生的事情或在他们不在的时候工做。这是一款旧的IP摄像机,但从硬件角度来看它有一些很是有趣的东西。shell
一般,或者至少从我多年来看到的状况来看,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扫描发现了一下开放的端口/服务:
还有其余三项服务我一开始并不肯定它们的功能是什么,但在作了一些谷歌搜索后,我能够找到一些有趣的东西:
无线电以太网(RFE)是一种网络音频广播系统。它由容许在网络上传输音频数据包的程序和工具组成。经过使用传统无线电广播的类比,能够最好地理解该系统。
无线电以太网(RFE)是一种网络音频广播系统。它由容许在网络上传输音频数据包的程序和工具组成。经过使用传统无线电广播的类比,能够最好地理解该系统。
链接到Telnet服务器时,必须指定密码。密码是'admin'(我只是尝试了默认密码,猜猜是什么?我好运)而且用户没法在Web界面中更改密码,也没法使用Telnet服务。
若是您输入“帮助”,则会显示如下菜单:
我决定拆开这个IP相机。我但愿找到像UART或相似的接口,以便经过shell访问文件系统。
相机有两个PCB。最大的几乎全部有趣的组件咱们能够在这样的设备(CPU,RAM,Flash等)中找到,而小的有一些芯片用于PTZ功能(译者注:在安防监控应用中是 Pan/Tilt/Zoom 的简写,表明云台全方位(左右/上下)移动及镜头变倍、变焦控制)。
这是最大那块PCB正面的图片:
在上图中,咱们能够识别如下芯片组件/模组:
咱们拥有128 MB RAM,WiFi /以太网功能,16 MB闪存,小型视频解码器和EEPROM芯片。
而后,这是这块最大的PCB背面的图片:
在这背面,咱们能够看到只有一个大芯片,经过丝印能够看到他就是飞利浦TriMedia PNX1300EH(32位处理器)。这就是这篇文章的主要研究对象,咱们将专门介绍它。
最后,这是第二块(较小的)PCB的图片:
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系列处理器进行逆向工程并不是易事,特别是在缺乏文档和工具的状况下。互联网上关于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同事,他们校对了这篇文章并提供了有价值的反馈。