[IOT安全][翻譯]基於飛利浦TriMedia系列處理器的IP攝像機逆向分析(一)

基於飛利浦TriMedia系列處理器的IP攝像機逆向分析(一)

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掃描發現了一下開放的端口/服務:

  • HTTP服務器:用於管理IP攝像機。能夠從Web界面啓用HTTPS服務器,但默認狀況下不啓用。
  • FTP服務器:用於訪問攝像機能夠生成的屏幕截圖和音頻。這是訪問多媒體文件最方便的方式。
  • Telnet服務器:用於對攝像機進行更「高級」的管理。

還有其餘三項服務我一開始並不肯定它們的功能是什麼,但在作了一些谷歌搜索後,我能夠找到一些有趣的東西:

RFE(TCP 5002)表示無線以太網。引用[1]

無線電以太網(RFE)是一種網絡音頻廣播系統。它由容許在網絡上傳輸音頻數據包的程序和工具組成。經過使用傳統無線電廣播的類比,能夠最好地理解該系統。

無線電以太網(RFE)是一種網絡音頻廣播系統。它由容許在網絡上傳輸音頻數據包的程序和工具組成。經過使用傳統無線電廣播的類比,能夠最好地理解該系統。

Telnet服務

鏈接到Telnet服務器時,必須指定密碼。密碼是'admin'(我只是嘗試了默認密碼,猜猜是什麼?我好運)而且用戶沒法在Web界面中更改密碼,也沒法使用Telnet服務。

若是您輸入「幫助」,則會顯示如下菜單:

 

FTP服務器

HTTP服務器

探索硬件

我決定拆開這個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 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同事,他們校對了這篇文章並提供了有價值的反饋。

參考文獻

相關文章
相關標籤/搜索