逆向Google Voice裝置OBi200 (二)

Editor發表於2017-10-21

逆向Google Voice裝置OBi200 (二)


在本文的第一部分,我詳細介紹了對OBi200的韌體分析和獲取root Shell的過程.在本文,我將展示區分串列埠針腳及利用串列埠獲取控制檯訪問.

串列埠通訊協議

回憶一下上篇文章中監聽/dev/ttyS0的串列埠:

逆向Google Voice裝置OBi200 (二)

這是一個非常讚的開端,其透露出兩點資訊:第一,這明確了其串列埠為 8250 UART(典型的4針腳介面),極大地縮小了我們的搜尋範圍;第二,其指明瞭該介面的波特率.這些是與該埠通訊所必須的條件.

鑑別針腳

儘管UART介面並未在業界形成統一的標準,但是要區分出OBi200上潛在的介面還是很容易的:

逆向Google Voice裝置OBi200 (二)

從上圖可以看到,除了一個名為J17 的4 針模組,其他大多數測試點都已標記完好.由於最右邊的那個針腳是方形的,暫且將它命名為1號吧.

現在只剩這幾個針腳,接下來要做的就是區分這些UART針腳.看,我已經準備好了USB UART轉換器:

逆向Google Voice裝置OBi200 (二)

我首先開始找出接地端.用萬用表連續測量各個針腳對RJ45外殼的電壓,我迅速地確定4號引腳為接地:

逆向Google Voice裝置OBi200 (二)

搞定了1個,剩下的是略顯複雜的另外3個腳的區分。為此,我專門測量了在裝置啟動過程中這3個腳的直流電壓(詳細過程請瀏覽這篇文章),結果如下:

>1號腳電壓在啟動過程中從2.3V到3.2V波動

>2號腳電壓恰巧維持在略低於3.2V

>3號腳為3.3V 恆定電壓

1號針腳的活動與其他針腳明顯不同,其電壓的波動就像是與主機板進行資料傳送的過程,故此,認定1號腳為Tx端.

2號腳和3號腳的電壓測量結果極為接近,但是仍有足夠的差異區分他們. 3號腳,電壓穩定在3.3V,表明其為

VCC;2號腳電壓僅是略低與VCC,故為Rx(僅剩的選擇).特別注意,如上圖所示,儘管連線USB

UART轉換器並不需要用到3號腳,我們測試該腳僅僅是為了消除其為Tx 或 Rx 的可能性.

控制檯連線

確定J17的針腳後,用USB UART轉換器連線.注意,主機板上的Rx 接轉換器的Tx ,如下圖所示:

逆向Google Voice裝置OBi200 (二)

接下來,我開啟了一個終端並開啟了一個screen會話,波特率設定為上面第一幅截圖所示是一致:

screen /dev/ttyUSB0 115200 8N1

這樣,我就成功獲得了控制檯的訪問權,並且無需密碼哦!

Bootloader

成功連線上控制檯後,我還想看下它的bootloader,於是,我重啟裝置:

逆向Google Voice裝置OBi200 (二)

通過與U-boot互動,我得以瞭解更多有關主機板和記憶體的資訊:

逆向Google Voice裝置OBi200 (二)

通過對硬體底層的訪問.我們能夠看到更多在啟動過程的資訊.例如,系統控制檯訊息輸出stdout:

逆向Google Voice裝置OBi200 (二)

由圖可知,Telnet服務在系統啟動時隨之啟動,只是在載入OBi 服務後被kill掉了(由上篇文章中的指令碼部分可知).

接下來>>>

現在,我已獲得控制檯的root訪問許可權,我希望進一步深入探究其執行的服務和obiapp 二進位制檔案.

相關內容,敬請期待本文第三部分!


本文由看雪翻譯小組 StrokMitream 編譯,來源Randy Westergren  轉載請註明來自看雪社群

相關文章