TP-Link WR740 后門漏洞復現
一 復現環境
◆binwalk
◆firmwalker
◆IDA
◆FirmAE
二 固件分析
2.1 獲取固件文件系統-binwalk
binwalk用于固件解包獲取文件系統。常用解包命令為:
binwalk -Me wr740nv1_en_3_12_4_up.bin


2.2 掃描敏感信息-firmwalker
firmwalker用于查看文件系統中的敏感信息。掃描命令為:
./firmwalker.sh '/home/iot/Desktop/WR740/_wr740nv1_en_3_12_4_up.bin.extracted/squashfs-root'

由上面的信息可知:
◆路由器Web相關URL的格式為:/web/userRpm/xxxxx.htm,這可能是web服務相關的命令規范。
◆含有passwd和pwd相關的文件中,可以看到嵌入式web服務httpd,部分htm文件以及其他配置文件。
查看啟動項中是否存在后門服務,如telnet服務。嵌入式Linux常用啟動項文件位于:etc/rc.d文件夾中。

啟動項中未見異常行為,httpd文件在firmwalker掃描的敏感信息和啟動項中都有涉,因此需要用IDA分析一下該文件。
2.3 分析可疑文件-IDA

由file信息可知用IDA32分析,根據firmwalker掃出的敏感信息可知httpd文件中含passwd、password、root、admin、upgrade等字符串。
通過IDA中字符串搜索發現疑似后門的敏感字符。

通過查看該字符串的引用發現如下代碼:

根據偽代碼可知其的功能是:判斷命令是否為exit,若不是則驗證用戶名和密碼,驗證的用戶名:osteam 密碼:5up。
通過write(pty,cmd,strlen(cmd))來模擬執行命令。(知識擴充:偽終端(pseudo terminal也稱為 pty)是指偽終端 master 和偽終端 slave 這一對字符設備。其中的 slave 對應 /dev/pts/ 目錄下的一個文件,而 master 則在內存中標識為一個文件描述符(fd)。偽終端由終端模擬器提供,終端模擬器是一個運行在用戶態的應用程序。)

通過查看引用找到了DebugResultRpmHtm函數的調用位置。根據此處的偽代碼可推斷出函數httpRpmConfAdd的功能是綁定URL和執行的函數。由函數名httpDebugInit可推斷出這是一個調試后門。
三 固件模擬
使用FirmAE來對固件進行模擬以驗證上述內容。
FirmAE是一款完全自動化的固件模擬和漏洞分析的工具,其固件模擬成功率與Firmadyne工具相比大大提升,且與Qemu相比僅一條命令就可實現固件模擬,簡單方便。FirmAE的工作模式分為5種:
◆-c 檢查是否能模擬
◆-a 漏洞分析
◆-r 固件模擬的運行
◆-d 用戶級的調試
◆-b 內核級的調試
sudo ./run.sh -c sudo ./run.sh -a sudo ./run.sh -r sudo ./run.sh -d sudo ./run.sh -b !是固件路徑,是固件的牌子,這個可以隨意寫。 !在對固件模擬前,盡量先-c進行檢查。在檢查之后,運行和調試時的模擬速度也會變快。
使用FirmAE模擬固件命令如下:
!執行init.sh初始環境 sudo ./init.sh !檢查是否能模擬 sudo ./run.sh -c tp-link '/home/iot/Desktop/WR740/wr740nv1_en_3_12_4_up.bin' !開始固件模擬 sudo ./run.sh -r tp-link '/home/iot/Desktop/WR740/wr740nv1_en_3_12_4_up.bin'

通過瀏覽器訪問URL:http://192.168.1.1出現上圖信息,說明模擬成功。開始運行固件模擬并驗證后門漏洞。

固件開始運行,此時訪問URL要求輸入賬號密碼。

根據提示輸入默認的賬號密碼admin。并訪問URL:http://192.168.1.1/userRpmNatDebugRpm26525557/linux_cmdline.html出現以下界面:

嘗試直接輸入命令執行:

根據返回結果可知是需要輸入賬號密碼的。輸入固件分析時找到的用戶名:osteam和密碼:5up并執行命令。

由上可知命令被執行并返回。并且在右側還預設了一些命令,點擊按鈕即可執行,這個后門很優雅。

四 復現總結
熟悉工具的使用和有一些分析常識很重要,通過信息收集到的敏感信息可以快速定位漏洞可能出現的位置并針對性分析,是一個由粗到細的過程。這是復現的第一個路由器漏洞,希望自己能堅持下去,用心復現,仔細記錄。“靡不有初,鮮克有終!”