技術分享:逆向破解華為路由器第一部分

技術分享:逆向破解華為路由器第一部分

寫在前面的話下面將會介紹逆向一個路由器的過程,準確的說是一台華為 HG533路由器。

本文僅代表原文作者意圖,同時文章中介紹的工具、技術帶有一定的攻擊性,請合理合法使用。

正文前面的思路也比較簡單就是尋找串口,而這個串口也是預留性質的一個串口,主要是為了後期調試以及升級設備時使用。而對於路由器你可以看做是一個小型的嵌入式設備,從列印機到智能相機都可以這麼看待,而串口有時候是隱藏起來的,我們的目的就是找到這個串口然後調試設備。利用串口可以訪問路由器的CFE、觀察boot和調試信息、通過一個Shell與系統進行交互異步串行通信。下文需要注意的是關於路由器串口的描述,在沒有特殊說明的情況下,都是指UART。

探測串口這裡需要注意一下,在路由器中,我們要尋找的串口不是指通常所見的RS232,而是指UART(通用異步收發器),它是路由器設備中比較常見的一種接口。在尋找UART過程中一定要注意在路由器主板上那些單行具有4~6個引腳的位置,大多數情況還是有用的,但少數情況例外。這個不是為用戶準備的,所以有些時候是閒置的,同時也沒有用到其引腳。在看到拆解之後的電路板後,有兩處地方引起了我的注意。(見下圖)

技術分享:逆向破解華為路由器第一部分

目測這個設備有兩個不同的串口以及兩處不同的電路構成,同時利用這兩部分完成設備的通信任務。現在就有一個思路了,我們可以根據電路板接線情況,來找到主電路,而最後也可以得到我們需要的信息。

引腳識別我們在這裡發現兩排引腳(見圖),根據前面的判斷這就應該是UART。現在找到了目標,第一件事情就應該是看看哪些是有用的,哪些是沒有用的,我使用一個簡單的技巧來判斷,這是從電路板正面拍的照片,我們來一起看一下。

技術分享:逆向破解華為路由器第一部分

在這裡我們需要注意PCB電路板上面的焊錫點之間的連接。

1.好像連接到了什麼東西(注意兩點鐘方向的位置)

2.沒有連接

3.如果焊點連接了很多地方,那麼很有可能是GND或VCC引腳,但這不是萬能的方法。需要補充一點的是,VCC引腳通常被做成方形,路由器主板上可以看到較寬的走線,那麼該引腳極有可能也是VCC引腳。

4.GND引腳通常存在多條走線連接到周圍的地線,所以看到周圍的地線就需要注意了。而在這裡就看到了這種情況,所以就可以判斷出這個是GND引腳了。

5.連接到什麼東西

焊接引腳在上面的圖片我們看到了兩個串口。那麼現在就開始在上面進行焊接,雖然比較困難,我嘗試從焊點正面突破,然後穿透焊點到背面去,但很明顯這是非常困難的。而第二個串口,我打算利用 Dremel電動打磨機來達到前面的目的,這樣就可以在PCB電路板的背面將其焊接好,這個工作量還是比較大的。

技術分享:逆向破解華為路由器第一部分

引腳說明前面已經得到了三個有用的引腳,但我們還沒有具體利用UART。這裡需要強調的是UART作為異步串口通信協議的一種,工作原理是將傳輸數據的每個字符一位接一位地傳輸。讓我們來回顧一下UART:

TX【發送引腳,Tx 上發送的數據將被Rx 輸入端接收】

Rx【接收引腳,Rx 輸入端接收】

GND 【接地,該引腳電壓通常為0】

Vcc【電源電壓。該引腳電壓較穩定,通常3.3V ~5V,不要嘗試連接】

CTS【允許發送,同時CTS 是對RTS 的應答,通常情況下使用】

DTR【通常情況下使用】

CTS和RTS是串行通訊中流控制的兩個引腳,簡單介紹一下,就是當接收方(UART2)認為可以接受UART數據時,將RTS置為有效位。發送方(UART1)的 CTS引腳接收到此信號後,才將數據進行發送。一般來說,當UART數據接收緩存大於兩個字節空餘時,就可以將RTS置為有效接收。用舉例的方法解釋就是,A向B發送RTS信號,表明A要向B發送若干數據,B收到RTS後,向所有基站發出CTS信號,表明已準備就緒,A可以發送。而UART 可以進入一個內部回環(Loopback)模式,用於診斷或調試。在回環模式下,從Tx 上發送的數據將被Rx 輸入端接收。而Tx以及Rx設置值時(默認值1),這時候電壓也會出現浮動。

因此我們來總結一下,都得到了什麼結論:

1.此前的三個引腳看來就是,TX、RX和GND。

2.一個看起來很像GND(正對著的第4個位置處)

3.Tx-被用於數據傳輸

4.Rx-與另外一處有關聯

當然為了驗證的話,我就需要嘗試不同的排列組合方式,那麼就需要USB-UART ,即下位機將USB的數據轉換為UART的數據。下面可以利用示波器和萬用表來了解每個引腳是什麼情況了。

技術分享:逆向破解華為路由器第一部分

現在使用了示波器來驗證每個引腳的具體情況:

1.GND-固定在0V所以肯定是接地

2.Tx -你可以在圖片中看到發送的信息

3.在0v之間波動,那麼一定是 Rx,那是因為還沒有出現更大的浮動。

現在我們已經了解了引腳的情況,下面就需要分析串口情況了,那麼就需要知道串口通信時的速率(波特率),就需要用到邏輯分析儀。如果沒有,那麼就需要嘗試之前的排列組合方式了,

我已經開始利用分析儀分析了波特率的情況,現在就可以看到這些數據(\n\r\n\rU-Boot 1.1.3 (Aug…)。

技術分享:逆向破解華為路由器第一部分

一旦了解到串口以及波特率的情況,下面就開始與設備連接

技術分享:逆向破解華為路由器第一部分

連接串口現在已經得到了設備的硬體信息,下面就需要與設備建立通信關係。下面就開始USB-UART,然後利用兩個串口進行通信,並用示波器查看其情況

技術分享:逆向破解華為路由器第一部分

當開始使用串口之後,計算機與設備之間也開始發送信息,這是當時的信息,下面是發送的第一行信息

技術分享:逆向破解華為路由器第一部分

Please choose operation:

3: Boot system code via Flash (default).

4: Entr boot command line interface.

0

命令行界面??當我按下4之後,就得到了這個。此外當我們按下3之後,等待Flash校驗完成之後,再按下回車,就會看到「Welcome to ATP Cli 」信息以及一個登陸提示。經過嘗試之後就可以利用默認密碼 admin:admin成功登陸。

——————————-

—–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 sbinprocmnt lib initetc dev bin

在命令行頁面利用shell 命令就可以獲取root權限了。而該路由器還運行了BusyBox,這些會在以後介紹。

接下來會介紹什麼呢?現在都已經得到BusyBox了,在下面將會著重於軟體,例如密碼、一些應用程序等問題來介紹。當然還會介紹一些比較有意思的事情,敬請期待。。。。。。。