Dlink_DWR-932B 路由器固件分析


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


获得固件

访问 Dlink 的 ftp 服务器

  • ftp://ftp.dlink.eu/

这里下载 DWR-932_fw_revB_2_02_eu_en_20150709.zip 文件

  • ftp://ftp.dlink.eu/Products/dwr/dwr-932/driver_software/


提取固件

解压,得到 DWR-932_B1_FW v.02.02EU.zip , 无法直接解压缩,会发现该固件被加了密,这是厂商对该固件做了保护,防止逆向分析固件。

可以用爆破工具爆破密码,这里省略这一步,解压密码是 beUT9Z

解压完毕,查看固件文件

有一些 yaffs2 格式的文件,这个需要用 unyaffs 工具来提取,下载 unyaffs,配置权限,解压,查看解压的文件


信息挖掘

接下来,在提取的文件中挖掘一些有用的信息

在 inadyn-mt.conf 这个文件中找到 no-ip 应用的配置

查看 shadow 文件

这里可以使用 hashcat 或 John the Ripper 爆破 root 账号的密码

可以看到 root 密码是 1234


使用 firmwalker 工具来自动化遍历该固件系统中的所有可疑文件


查看启动项

这里可以看一下 start_appmgr 脚本,mgr 一般就是主控程序的意思

该脚本会在开机的时候以服务的形式运行 /bin/appmgr 程序。

同时该脚本还会开启 telnet 服务


appmgr 分析

用 IDA 打开 /bin/appmgr 程序看看

main 函数下 F5,可以发现有一个线程会持续监听 0.0.0.0:39889(UDP),并等待传入控制命令,如果某个用户向目标路由器发送了一个 HELODBG 字符串,那么路由器将会执行 /sbin/telnetd -l /bin/sh ,并允许这名用户在未经身份验证的情况下以 root 用户的身份登录路由器。

默认 admin 账号

搜索 mod_sysadm_config_passwd 函数

路由器的管理员账号。设备的管理员账号默认为“admin”,而密码同样也是“admin”。

默认 WPS PIN 码

搜索 wifi_get_default_wps_pin 函数

默认配置下,该路由器 WPS 系统的 PIN 码永远都是 28296607 因为这个 PIN 码是硬编码在 /bin/appmgr 程序中


fotad 分析

路由器与 FOTA 服务器进行通信时的凭证数据硬编码在 /sbin/fotad 代码中,我们用 IDA 进行分析

搜索 sub_CAAC 函数,可以发现被 base64 过的凭证

用户/密码如下


UPnP 安全问题

UPnP 允许用户动态添加防火墙规则。因为这种做法会带来一定的安全风险,因此设备通常都会对这种操作进行限制,以避免不受信任的客户端添加不安全的防火墙规则。

UPnP 的不安全性早在2006年就已经是众所周知的事情了。而该路由器中 UPnP 程序的安全等级仍然非常的低,处于局域网内的攻击者可以随意修改路由器的端口转发规则。

文件 /var/miniupnpd.conf 是由 /bin/appmgr 程序生成的:

搜索 sub_2AE0C 函数

该程序会生成 /var/miniupnpd.conf


Source & Reference