原文作者:Juan Carlos Jiménez
翻譯者:光棍節
原文地址:http://jcjc-dev.com/2016/04/08/reversing-huawei-router-1-find-uart/
本系列教程以華為HG533路由器為例,開展的一系列逆向研究,包括查找調試接口,搜尋固件,數據流跟蹤,flash內容提取以及對固件的漏洞挖掘等。
在設備開發的過程中,串口是開發人員保留在電路板上的供調試或者支持未來可擴展的接口,尋找串口也是硬件逆向工程的最基礎的工作之一。
在商業產品中,大部分的UART串口都是4引腳或6引腳的存在于設備中,由于串口的設計并不是為最終的用戶服務的,所以通常并沒有焊上引針或連接器。
通過查找HG533路由器的主板接口,我們發現了2組未使用的接口,如圖二所示的UART1和UART2,其中的排針是后來焊上去的。
由上圖二可以知道,設備提供了兩套不同的串口用于與不同的集成電路的通信,根據在電路板上的位置以及分析他們的線路連接,我們能夠分析出哪一個串口是連接到主集成電路上,從主集成電路上的串口才能獲取更多的數據。
1、 識別無用的引腳
在發現了2組接口后,首先要判斷其中是否有無用的引腳,最簡單的方法就是從背面用強光照射電路板,然后從正面看電路板上引腳環的樣子來判斷引腳的鏈接情況。如圖三所示。
以圖中的中間串口為例,從左至右(1--5)代表的意思是:
1:與某層電路板連接 2:空接口,沒有連接任何引線 3:100%的很厚的連接,一般是與電源相關,如Vcc或接地 4:與多層電路板都有連接,很可能是其他的電源引腳,一般情況下,調試接口上的引腳沒有必要與4層以上的不同電路板連接。 5:與1相似,與某層電路板連接
2、 焊上排針方便與線連接
由于這些接口的墊圈很硬而且熔點很高,墊圈會穿透整個電路板,中間有一個小孔,第一個串口,我用排針一起焊上,費了好大的力氣才完成,對于第二個串口,我采用一個個的排針穿過墊圈,然后在pcb板的背面焊上焊錫,立刻好看多了。如圖四所示。
3、 分析引腳意義
在步驟1中,我們得到了每一個可能串口接口上僅有三個有用的引腳。但是還不清楚是否是使用了串口協議,但是當前的接口數量與位置排列非常像UART串口。
串口的協議,以6引腳為例:
Tx:發送引腳,與調試設備的接收引腳相連 Rx:接收引腳,與調試設備的發送引腳相連 GND:接地,與調試設備的接地相連 Vcc:電源高位,一般為3.3v或者5v,一般不連接 CTS:通常不使用 DTR:通常不使用
所以總結上面步驟一的引腳,得出如下的結論:
1、3個未確定的引腳分別對應著Tx、Rx和GND 2、有兩個引腳非常像Vcc和GND 3、Tx一般會被默認接上高電平 4、Rx也會被默認接上高電平,當我們給這個引腳提供低電平的時候,才會變成0
通過上述的分析,我們似乎已經可以使用USB轉串口設備進行組合測試,但是不清楚的盲目測試很容易導致設備被燒壞。
所以我們接著利用電壓表或者邏輯分析儀來詳細的分析引腳,當然用示波器將會得到更好的效果。
在用示波器測試引腳后,我們得到了如下的結論,引腳情況如圖六所示:
1:GND和Vcc分別對應于引腳4和引腳3(此處的翻譯與原文有點不一致,判斷原文描述應該有點問題),其中電壓值為3.3v 2:Tx驗證,那個正在發送信息的導致電平值一直變化 3:Rx驗證,示波器顯示電平值始終不變化
接下來就是要獲取串口通信的波特率,我們可以通過測試常用的幾個波特率猜測獲取,也可以通過示波器或者邏輯分析儀測試獲取。如圖七所示,當測試了正確的波特率時,就可以得到可讀取的串口通信數據。
4、 與串口通信
在獲取了硬件端所有的信息之后,接下來就是研究與設備之間的通信,使用USB轉串口工具測試,在實驗中,我們同時測試兩個串口,其中一個連接到示波器上,如圖八所示。

與電腦相連的串口終端開始打印出有用的信息,如圖九所示。

Please choose operation:
3: Boot system code via Flash (default).
4: Entr boot command line interface.
0
當按下4的時候,就可以獲取與設備bootloader交互的命令行接口。當按下3的時候,在設備啟動完成后,將會得到Welcome to ATP Cli 和登錄的提示。默認的賬號和密碼為admin:admin。登錄之后,運行shell命令,將可以以root權限運行Linux命令。如下所示:
-------------------------------
-----Welcome to ATP Cli------
-------------------------------
Login: admin
Password: #Password is ‘admin'
ATP>shell
BusyBox vv1.9.1 (2013-08-29 11:15:00 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
# ls
var usr tmp sbin proc mnt lib init etc dev bin
如果擅自修改這個默認的賬號名和密碼,將會導致設備無法正常的啟動。
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/153/