在 dlink 的升级包 firmware v1.13中,作者下载放入IDA中分析,发现了异样,

dir-100_loaded_in_ida.png

接着查看了带有“alpha”字串的自定义函数:

alpha_functions.png

alpha_auth_check  这个函数很有意思。

它在不同地方被调用,着重分析alpha_httpd_parse_request:这个地方

alpha_auth_check_call.png

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

auth_check_code.png

最终发现比较的值 竟然是 “xmlset_roodkcableoj28840ybtide” 这么一串字符。。。。

google 发现老毛子1年前 发现这个有趣的字符串

user_agent_strcmp.png

确定下来 上面指针指向的是User-Agent的内容:

user_agent_struct_1.png 

if(strstr(header, "User-Agent:") != NULL)

{
    http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");
}

backdoor:

向路由器发送请求  user-agent:xmlset_roodkcableoj28840ybtide

就可以通过验证,不需输入密码验证。

in_like_flynn.png

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

真拉风~~~

留言评论(旧系统):

flowind @ 2013-10-15 21:44:42

又是个路由,从以前gov ZF严禁使用xxx公司的路由开始.现在这些东西都逐渐暴露在大众眼中了..

本站回复:

狗血 ╮(╯_╰)╭