在 dlink 的升级包 firmware v1.13中,作者下载放入IDA中分析,发现了异样,
接着查看了带有“alpha”字串的自定义函数:
alpha_auth_check 这个函数很有意思。
它在不同地方被调用,着重分析alpha_httpd_parse_request:这个地方
alpha_auth_check 接受一个来自 $s2的寄存器的参数。如果返回-1 结束,否则 表示通过验证。
追踪$s2的值,发现它是一个数据结构的指针,这些指针指向的值则是http 请求的header头和url
大致是:
struct http_request_t { char unknown[0xB8]; char *url; // At offset 0xB8 into the data structure }; int alpha_auth_check(struct http_request_t *request);
pha_auth_check 函数功能非常简单,strcmp 比较下http_request_t结构的一些值,然后调用check_login。 如果strcmp 或者check_login 成功直接return 1 否则return -1
最终发现比较的值 竟然是 “xmlset_roodkcableoj28840ybtide” 这么一串字符。。。。
google 发现老毛子1年前 发现这个有趣的字符串
确定下来 上面指针指向的是User-Agent的内容:
if(strstr(header, "User-Agent:") != NULL) { http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t"); } backdoor:
向路由器发送请求 user-agent:xmlset_roodkcableoj28840ybtide
就可以通过验证,不需输入密码验证。
DIR-100
DI-524
DI-524UP
DI-604S
DI-604UP
DI-604+
TM-G5240
http://www.devttys0.com/2013/10/reverse-engineering-a-d-link-backdoor/
英文原文:Reverse Engineering a D-Link Backdoor
提示:xmlset_roodkcableoj28840ybtide,反过来看是:editby 04882 joel backdoor_teslmx
相关内容:
英文原文:Reverse Engineering a D-Link Backdoor
中文译文:[译文] 逆向分析 D-Link backdoor
相关吐槽:
1#
病狗 (谁淫荡啊谁淫荡) | 2013-10-14 21:53
。。。
2#
DM_ | 2013-10-14 22:02
给跪了 但我还是想知道怎么把后门写进去
3#
大师哥 | 2013-10-14 22:15
@DM_ 说的也是。。。
4#
null (专注查库一百年。) | 2013-10-14 22:37
厂商自己放后门啊,鄙视!
5#
园长 (你在身边就是缘,缘分写在数据库里面。) | 2013-10-14 22:48
不厚道啊
6#
无敌L.t.H (:门安天京北爱我) | 2013-10-15 09:06
应该是留给生产线刷机用的……
7#
huliang | 2013-10-15 09:26
真拉风~~~
留言评论(旧系统):