# 智能路由器安全特性分析

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2015-07-21T06:09:00Z
Canonical: https://wepostx.com/topics/912

> 乌云历史资料归档
>
> **原始作者：** 腾讯安全中心
> **原始编号：** superkieran-wooyundrops:650
> **原始发布时间：** 2015-07-21 14:09
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

博文作者：zhuliang

# 0x00 前言

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

# 0x01 概述

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

# 0x02 安全特性

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

# 0x03 360安全路由器

## 现场调试接口RSA-1024加密和校验
路由器生产商为了在排错或调试时能直接得到rootshell，通常会在路由器上预留后门，参考[https://github.com/elvanderb/TCP-32764/](https://github.com/elvanderb/TCP-32764/)及[http://www.cnvd.org.cn/flaw/show/CNVD-2013-15013](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的服务端：

```text
#!bash /usr/sbin/telnetd -l/usr/sbin/login -u 360user:alpha360 -i br0 &
```
见程序debug_telnet如下代码：

![原文图片](/media/2016/06/e860223254c0e35e525facac7f9cde73)

![原文图片](/media/2016/06/0679d1e74c3eb25ec7e863a8883421c7)

telnet服务端启动后，只要telnet路由器的ip地址再输入用户名和密码（360user和alpha360）便可以获得root shell。
不难看出，要获得路由器的root shell有两个条件，一是要插入U盘，这要求能接触到路由器，同时也防止了远程利用；二是U盘根目录下的telnet.boot文件必须是用私钥加密U盘序列号的结果，而私钥掌握在生产商手中，黑客不能轻易获取到。
公钥的详情如下图所示：

![原文图片](/media/2016/06/96c31f5ec3fc46f7fc857b704a874364)

总的来说，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 总结

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

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

![原文图片](/media/2016/06/ee5d40d4d9b3209f058119e6e74e7661)

## Replies
