智能路由器安全特性分析

路人甲 2015-07-21 14:09:00

博文作者:zhuliang

0x00 前言


随着互联网的发展,越来越多公司推出了智能路由器,这些智能路由器给用户带来了众多便利的功能,同时也采用了一些传统路由器不具备的安全特性,本文在简要分析下这些安全特性,供相关技术人员参考。

0x01 概述


传统路由器有意或无意地使用了种种不安全的特性,如预留后门,这些后门原本是为了现场调试方便,但是也开放了黑客进入的通道。又比如某些路由器WPS(Wi-Fi Protected Setup)的PIN码是可以根据路由器MAC地址推导出来的,这使得即使用户设置了复杂的WiFi密码,黑客也可以轻易破解进而渗透。另外,大部分路由器在固件更新时都没进行签名校验,这使得黑客可以通过固件更新来植入木马,进而永久控制用户的路由器……等等这些不安全特性,是导致用户隐私泄露和财产损失的帮凶。 在这样的背景下,智能路由器采用了一些安全特性,特别值得赞赏。

0x02 安全特性


下面以路由器生产商为单位,介绍其采用的安全特性及其安全特性带来的好处。只做纯技术的探讨,不涉及其他。

0x03 360安全路由器


现场调试接口RSA-1024加密和校验

路由器生产商为了在排错或调试时能直接得到rootshell,通常会在路由器上预留后门,参考https://github.com/elvanderb/TCP-32764/http://www.cnvd.org.cn/flaw/show/CNVD-2013-15013,这些后门能为生产商所用,也能被黑客所利用。特别是能远程利用的后门,黑客能远程获得路由器的所有权限,配合其它攻击能造成用户财产上的损失。

360的C301路由器是这样做的:公钥/etc/defdata/debug_telnet.pub.key存在于路由器的固件里,生产厂商用与debug_telnet.pub.key对应的私钥加密特定U盘的序列号,并把加密结果存放到该U盘根目录下的telnet.boot文件中,向C301路由器的USB接口插入该U盘,后台自动运行如下的命令行,也就是启动telnet的服务端:

/usr/sbin/telnetd -l/usr/sbin/login -u 360user:alpha360 -i br0 &

见程序debug_telnet如下代码:

telnet服务端启动后,只要telnet路由器的ip地址再输入用户名和密码(360useralpha360)便可以获得root shell

不难看出,要获得路由器的root shell有两个条件,一是要插入U盘,这要求能接触到路由器,同时也防止了远程利用;二是U盘根目录下的telnet.boot文件必须是用私钥加密U盘序列号的结果,而私钥掌握在生产商手中,黑客不能轻易获取到。

公钥的详情如下图所示:

总的来说,C301路由器采用非对称加密实现既能得到路由器的root权限,又能防止黑客获得root权限,相对于预留后门的做法,表现出值得传统路由器学习之处。

固件更新签名校验

C301路由器的固件采用了AES加密,解密后的固件里含有对该固件的签名,固件更新时会先进行签名校验,校验不通过则认为固件是篡改过的,从而拒绝固件更新。

0x04 小米路由器


固件更新签名校验

小米路由器进行固件更新时同样会进行签名校验,文件/usr/share/xiaoqiang/public.pem是它的公钥,用来校验签名正确与否。正因为这样,黑客如果想在不拆机的前提下刷入已植入木马的固件,只有两条路可走,一是通过入侵、社工或破解得到对应的私钥,然后对修改后的固件进行签名再刷入;二是通过漏洞,挖掘新的漏洞或者刷入有漏洞的旧版固件,然后再通过漏洞利用得到root shell进而刷入任意固件。一般来讲,第一条路是很难的,而为了堵住第二条路,可以通过限制降级来实现。

由此可见,在限制降级的前提下,在固件更新时进行签名校验,能有效地防止路由器被植入木马。

0x05 极路由


固件更新Hash校验

极路由进行固件升级的时候同样会进行校验,只不过是进行MD5的HASH检验,而不是用非对称算法来校验,虽然它下载固件时,用的是HTTP下载,可被劫持,但是固件的HASH信息是通过HTTPS来传输的,可保证安全,固件下载后会验证MD5值是否匹配,不匹配则不升级。这样只要保证升级服务器不被入侵就能保证刷入的固件是官方的。

固件升级时的校验被多次提到是因为它很重要。因为如果路由器被黑客通过管理界面刷入了被植马的固件,那么黑客就拥有了所有的权限,这样,我们平常教育用户使用复杂密码所付出的努力便付诸东流,不管设置多么复杂的密码、怎么经常修改密码黑客都可以通过木马获取到。

配置信息加密保存

极路由如mac地址、fac_uuid等配置信息是用DES算法加密后存在路由器的NOR FLASH上的,相对于传统路由器直接明文保存的,在有root shell的权限后,便可轻易得到WiFi密码、Web登录密码等敏感信息,加密保存在一定程度上提高了门槛。

WPS功能关闭

极路由是不提供WPS功能的,这样可以防止黑客通过WPS的PIN码破解,从而得到WiFi的WPA密码入侵。非要提供WPS功能的话,也应该做到下面两点,一是启用WPS防护,二是默认的PIN码要随机,不能推导出来。http://www.devttys0.com/2014/10/reversing-d-links-wps-pin-algorithm/和http://www.devttys0.com/2015/04/reversing-belkins-wps-pin-algorithm/就是两个反面例子,因为用户一般不会去修改默认的PIN码的,黑客只要根据MAC地址推导出PIN码后,便可以轻易破解出WiFi密码,不管密码有多复杂。

0x07 总结


尽管智能路由器在安全方面还有很大改进的空间,它所采用的安全特性,值得传统路由器生产商学习。

安全设计

为了保护用户的安全和防止用户因黑客入侵而造成损失,笔者认为,路由器厂商可以参考以下的安全设计规范。

评论

瘦蛟舞 2015-07-21 16:56:24

挺全面的~

R

Ricter 2015-07-21 19:58:04

有私钥能获得 root 其实换种思考方式就是个大 backdoor..

R

Ricter 2015-07-21 19:58:26

忽略我/w\

路人甲

真正的路人甲.

twitter weibo github wechat

随机分类

安全管理 文章:7 篇
硬件与物联网 文章:40 篇
iOS安全 文章:36 篇
CTF 文章:62 篇
Windows安全 文章:88 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录