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: