日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NetGear 夜鹰 RAX40V2 设备与固件分析

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NetGear 夜鹰 RAX40V2 设备与固件分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

NetGear 廠商的路由器設備中,拆解開經常會帶有UART 調試串口,并且以往的NetGear 設備UART調試口往往只需要正確的檢測出UART引腳的類型,設置波特率為115200,然后直接用串口調試軟件配合FT232就可以直接獲取設備內部的shell。但是Nightawk 夜鷹 RAX40V2 路由器在接入UART調試串口時,卻有所不同。本篇文章,將帶來對NetGear RAX40v2 在路由器開發板上的UART 獲取shell的過程中遇到的一些問題,如何進行解決,循序漸進的開啟設備的telnet,讓我們拭目以待。

設備分析

產品名稱:Nighthawk AX4 4-Stream WiFi Router

固件版本:V1.0.2.82_2.0.50

發布日期:2020年

首先我們從設備側入手,拆解的過程以及設備硬件的配置,這不屬于本片文章的重點,這里就不做過多的講解。

設備串口分析

引腳分析,這款設備的引腳已經給了針腳,也免去了另外焊接針腳的工作,根據萬用表和邏輯分析儀的識別(其實沒用到邏輯分析儀)

從上到下依次是 VCC 引腳、GND引腳 (紅線)、TXD引腳(黃線)、RXD引腳(橙線)

波特率識別

首先識別FTD 232 USB “ls -ll /dev/tty“


接下來使用devttys0 的小工具baudrate.py 來識別波特率,只需要簡單的使用上下鍵,就可以識別不同的波特率。如下圖所示,設備識別為115200。 這也是NetGear 常用的波特率,其他的廠商的波特率也很多使用這個波特率。

tip: 這里順帶提一下,baudrate.py 識別的波特率是設置好的常見波特率,但是里面只設置了幾個可以識別的波特率,如果需要增加識別廣度,需要在腳本內部的BAUDRATES 參數中增加想要識別的波特率值。


獲取啟動log

現在我們已經知道了波特率,接下來獲取設備在啟動的時候的log 信息,分析這些log 對設備分析有的時候會非常有用。但是常常 UART 的log 信息會非常多并且啟動比較快。因此需要想辦法將這些log 保存下來,以便后續分析。

我們使用minicom 打開,選擇 “Serial port setup” —> 設置 ”A—-Serial Device“ 和 ”E “的波特率,minicom 使用的方法搜索一下有詳細的使用說明。


保存串口log 為文件,關閉也是一樣的。最終可以看到生成的文件,文本編輯器打開生成的文件。

tips: 非正常關閉minicom,會在/var/lock下創建幾個文件LCK*,這幾個文件阻止了minicom的運行,將它們刪除后即可恢復。

查看設備啟動的log ,log 很多,這里截選了部分的log信息。

squashfs: version 4.0 (2009/01/31) Phillip Lougher jffs2: version 2.2. (NAND) (SUMMARY) ? 2001-2006 Red Hat, Inc. fuse init (API version 7.23) SGI XFS with security attributes, no debug enabled io scheduler noop registered (default) brd: module loaded loop: module loaded nand: device found, Manufacturer ID: 0xef, Chip ID: 0xda nand: Unknown W29N02GV nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 bcm63xx_nand ff801800.nand: Adjust timing_1 to 0x6532845b timing_2 to 0x00091e94 bcm63xx_nand ff801800.nand: detected 256MiB total, 128KiB blocks, 2KiB pages, 16B OOB, 8-bit, BCH-4 Bad block table found at page 131008, version 0x01 Bad block table found at page 130944, version 0x01 >>>>> For primary mtd partition rootfs, cferam/vmlinux.lz UBI volume, vmlinux fs mounted as squash fs on UBI <<<<< Secondary mtd partition rootfs_update detected as UBI for cferam/vmlinux source and UBIFS for vmlinux filesystem Creating 11 MTD partitions on “brcmnand.0: 0x000000100000-0x000006900000 : “rootfs” 0x000006900000-0x000006d00000 : “rootfs_update” 0x000007f00000-0x00000ff00000 : “data” 0x000000000000-0x000000100000 : “nvram” 0x000000100000-0x000006900000 : “image” 0x000006900000-0x000006d00000 : “image_update” 0x000000000000-0x000010000000 : “dummy1” 0x000000000000-0x000010000000 : “dummy2” 0x000007a00000-0x000007f00000 : “misc3” 0x000007500000-0x000007a00000 : “misc2” 0x000006d00000-0x000007500000 : “misc1” tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky maxk@qualcomm.com PPP generic driver version 2.4.2 PPP BSD Compression module registered PPP Deflate Compression module registered NET: Registered protocol family 24 i2c /dev entries driver bcm96xxx-wdt ff800480.watchdog: Broadcom BCM96xxx watchdog timer brcmboard registered brcmboard: brcm_board_init entry print_rst_status: Last RESET due to HW reset print_rst_status: RESET reason: 0x00000000 DYING GASP IRQ Initialized and Enabled map_hw_timer_interrupt,130: interrupt_id 22 map_hw_timer_interrupt,130: interrupt_id 23 map_hw_timer_interrupt,130: interrupt_id 24 map_hw_timer_interrupt,130: interrupt_id 25 Allocated EXT_TIMER number 3 Broadcom Timer Initialized

接入UART調試口shell

UART 接入,設置好波特率,重啟設備,待設備系統啟動完成,啟動日志輸出完之后,連接shell ,但是需要登錄口令。

遇到這種方法,本打算嘗試調整uboot在引導linux kernel時使用的啟動參數(bootargs) 直接訪問跟文件系統。但是我很幸運的使用弱口令進去之后,但是發現這是一個低權限的shell,并且支持的可執行的命令非常有限.


正當我一籌莫展的時候,想起了曾經看到的一款思科的設備的shell 也是類似這種低權限的shell,但是輸入 “sh”、”\bin\sh” 、”bash” 等命令可以獲取完整版的shell。很幸運,在我輸入”sh” 之后,成功的獲取了設備完整的shell,并且支持的可執行的命令也變多了。


busybox

開啟設備telnet

到這里我已經能通過UART串口獲取設備的shell了,但是進入設備shell 過于復雜,并且我也不滿足于UART的shell, 于是接著我嘗試開啟設備的ssh 、 telnet 的shell。我在測試的過程中,執行/bin/文件中的telnetd 毫無反應,并且執行busyBox 中的telnetd 也同樣顯示錯誤,我開始猜測開發者可能將telnetd做了更改,導致無法正常使用,但是我在 /usr/sbin/文件目錄中找到了 utelnetd 可執行文件,并且執行后很明顯的開啟了23端口進行監聽連接。然而一切都不如我所愿,進行登錄的時候又顯示需要登錄口令,我嘗試使用UART的弱口令和一些常見的口令也無法進入shell。

并且我使用google 搜索 NetGear 有沒有歷史的telnet 口令,在一個論壇中看到了一些信息,但是也依舊沒有任何效果。https://openwrt.org/toh/netgear/telnet.console


于是我打算通過UART提供的調試接口直接修改passwd 文件,因為是root 的權限,因此直接更改admin 用戶的密碼為空。

# cat /etc/passwd nobody:11hFVKPORB$llSaVGwuSWo.CTxU5.Qk30:0:0:nobody:/:/bin/sh admin:x:0:0:admin:/:/bin/sh # chmod 777 /etc/passwd # vi /etc/passwd # /usr/sbin/utelnetd telnetd: starting port: 23; interface: any; login program: /bin/login

更改為如下圖所示

然后重新啟動utelnetd 服務,使用telnet 連接在輸入用戶名admin 之后就可以直接獲取到shell 。

固件提取

由于這款設備的是NetGear 的產品,設備固件都是可以直接下載來的,對這部分不感興趣的直接跳過。

接下來開始提取設備內部的文件系統,根據前面的查看設備啟動時的系統信息,并且配合設備內部的mtd信息分別,確定設備的文件系統是mtd11

使用dd 命令進行提取,在提取之前要確定空間使用的情況,以免文件太大,文件夾中放不下,如果文件太大,可以考慮將bin 文件進行壓縮一下。
dd if=/dev/mtd11 of=/tmp/rootfs_ubifs.bin


由于設備內有 tftp ,嘗試使用tftp 來進行提取dd 轉儲的bin 文件,但是遺憾的是,tftp 上傳文件到本地tftpd server 的文件是設備內部的配置信息。其他的命令也無法正常將文件提取到設備外部。所幸文件系統內部有可以使用的wget 命令,直接上傳上傳一個對應架構的完整版busybox 到其中,使用完整版的tftp 將文件傳出來即可。
tftp -p -t -f rootfs_ubifs.bin 172.15.0.2

再接下來我們提取設備的非易失性存儲器NVRAM(斷電之后,所存儲的數據不丟失的隨機訪問存儲器)。先將nvram的信息保存,然后使用buybox 的ftp 上傳到本地中。

# nvram show > nvram.bin # strings nvram.bin > nvram.html

成功提取,這里的 WiFi密碼和web 管理界面的口令都沒有加密,但是路由器忘記密碼更改密碼的答案給加密了。

固件解包

上面講述了如何提取設備的固件,但是NetGear 設備固件是開放了,直接去NetGear 官網下載即可。

下載完成之后,這是一個用 .chk 拓展名為結尾的NetGear 固件鏡像,那么使用binwalk 查看一下固件包


使用binwalk -Me 解開固件包,解開固件包之后,可以看到有兩個東西, 3A.ubi 文件和 ubifs-root 文件夾, 本以為固件中的文件系統提取到了ubifs-root 中,可以 ubifs-root 文件內沒有任何東西。把關注點放在3A.ubi 文件上。

解開ubi 文件有兩種方法,一個是通過掛載的方式, 一個是使用 ubi_reader 套件來解開,掛載的話過于麻煩,這里使用 ubi_reader 套件來解開. 我們需要https://github.com/jrspruitt/ubi_reader,可以通過PIP進行安裝:
sudo pip install ubi_reader,
使用 ubireader_extract_images 來進行解開ubi 的文件。
ubireader_extract_images 3A.ubi


解開之后 ubifs-root 文件內會生成四個ubifs 的文件

根據前面對設備啟動時的系統信息分析,rootfs_ubifs.ubifs 就是固件的文件系統。

使用binwalk 進行分析, 識別出來是squashfs 文件系統, 看樣子是可以使用binwalk 解開固件

成功解開

總結

本片文章主要從設備側和固件側,分別講解了如何通過UART獲取設備的shell, 并且通過開啟設備telnet , 在有密碼的情況下,如何進行處理。以及對 .chk 和ubi 的固件如何進行分析與解包,接下來在漏洞挖掘和分析固件的方面,應該著重于經常產生漏洞的httpd 組件開始,以及比對更新的固件,使用bindiff 進行更新后的固件的比對,找出漏洞點。

有需要相關的資料可以關注私信我哦!!!

【資料詳細】

總結

以上是生活随笔為你收集整理的NetGear 夜鹰 RAX40V2 设备与固件分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。