消费级路由器固件木马分析及防护建议*

2018-03-13 01:18张旭博贺彦钧李建春
通信技术 2018年2期
关键词:固件木马校验

张旭博,贺彦钧,李建春

0 引 言

消费级路由器相对于工业级路由器,是指用于家庭、小微企业的网络接入设备,一般特指无线路由器。通过分析消费级路由器固件组成、固件逆向流程、固件木马产生原因,总结了几点安全防护建议。

1 路由器固件分析

从固件的组成、路由器防护手段两方面出发,对路由器固件进行简单概述。

路由器固件本质是软件,是其正常工作的系统软件的集合。它以二进制映像的形式存在于网络设备的只读ROM中,存储设备正常运转所需的各个组成部分,支撑网络设备稳定运行,并进行相关的网络寻址、数据转发等工作。通常,它可以分为固件头、引导头、内核、文件系统和应用程序等不同部分。

路由器的固件承载于硬件系统。当前,路由器主流的CPU类型有MIPS、ARM、PowerPC和X86等。考虑功耗问题,一般家用路由器会采用低功耗的MIPS、ARM等。表1汇总了不同架构CPU性能和能耗方面的不同[1]。本文逆向的无线路由器固件采用MIPS架构。

表1 不同架构CPU比较

针对文件系统,常见的文件系统有YAFFS、JFFS2、SquashFS、CramFS、ROMFS和 XfAT等。对于大多数网络设备而言,操作系统一般可以支撑多种不同类型的根文件,但有些操作系统只能支持特定根文件系统。常用的操作系统及其根文件系统类型,如表2所示。本文中逆向的无线路由器固件采用的是Linux操作系统,根文件采用的是Squashfs。Squashfs是一种基于Linux内核使用的压缩只读文件系统,具有占用资源少、运行速度快、掉电数据不丢失等特点。

表2 操作系统及其根文件系统类型

2 路由器固件分析方法

固件分析主要通过获取固件,对其进行逆向、重组,了解程序执行逻辑,获取固件存在的漏洞。

2.1 固件获取

一种方法是从购买的设备中提取固件,使用TTL调试接口连接系统,然后使用dd命令的方式提取。另一种方法是通过拆机,将存储固件的Flash芯片从设备上取下,采用SPI Flash烧写器提取全部Flash中的全部固件[2]。

官方网站上下载,如网件、华硕、TP-LINK、D-Link等公司官网提供固件,部分提供GPL源码下载。

2.2 路由器固件逆向

固件逆向的方法主要是采用工具分析、模拟路由器固件。常用的分析工具有firmware-mod-kit、binwalk、lzma、squashfs-tools和 ida等[3],模拟工具主要采用QEMU。

首先,通过分析固件函数的调用关系和程序执行过程,确认执行过程是否存在漏洞,如登录校验问题、HTTP页面问题、Telnet是否默认开启问题等。

其次,通过定位一些容易出现问题的函数,如system、strcpy、sprintf、strncpy和memcpy等,分析引用这些函数的地方,寻找命令注入、栈溢出漏洞。

最后,利用固件解包工具binwalk,提取固件的文件结构、程序、文件系统等。可以利用QEMU进行运行路由器固件的mips程序,动态分析具体程序的执行过程,发现其运行漏洞。

本文提及的采用binwalk提取固件的方法,提取的固件主要包含固件头部、文件系统和尾部三部分,如图1所示。

从提取的结果可以看出,固件采用大端,文件系统采用的是squashfs 3.0,如图2所示。

图1 采用binwalk提取固件

图2 采用QEMU模拟执行固件程序

2.3 路由器固件重组

通过路由器固件的分析,常见的路由器固件重组主要依赖于固件格式、首尾字段和校验方式等。路由器固件重组可总结为拼接法和合成法两类。

拼接法。对于没有CRC或者CRC是固定值的固件,可以采用拼接法进行固件重组。主要步骤:提取header.img;修改rootfs;利用mksquashfs等工具生成新的rootfs;填充尾部;生成新的固件。

合成法。对于有CRC是每次重新校验的固件,需要采用合成法进行重组。主要步骤:使用mkrootfs、dd工具进行合成,生成未含CRC校验的固件;使用专用的appendsum工具增加校验值,生成新固件。

经过研究发现,某些基于OPENWRT的固件校验算法是一致的。采用官方SDK固件编译的校验算法,是用专门工具生成的。

3 消费级路由器固件的木马植入流程分析

在获取固件漏洞的条件下,对消费级路由器进行木马植入。通过总结,一般的植入过程包含木马植入、木马运行和请求控制3个阶段。

木马植入阶段。木马植入程序包含后台控制程序和前端程序。前端程序运行于家用路由器,以3种方式存在。第一种是事先捆绑于某一正常的程序,当该程序执行时,捆绑的前端程序会释放于系统并执行。第二种是通过劫持系统的so文件,加载该so文件的程序运行时,会执行前端程序。一般,此类劫持会采用系统启动加载的程序,如httpd等。第三种是构造链接,利用wget、ftp等系统自带命令,在检测网络连接可用时,下载前端程序。

通过逆向,提取固件的文件系统内容,如图3所示。

分析系统中采用uhttpd web服务器程序,对其进行逆向分析发现漏洞,如图4所示。

图3 通过逆向提取固件的文件系统内容

图4 uhttpd逆向

木马运行阶段。木马成功植入后,当设定条件满足时,木马开始运行。首先检测、更改防火墙配置,使环境能满足木马执行要求,然后启动木马程序。

请求控制阶段。木马运行后,等待或主动连接木马后台程序。该阶段需要保证木马程序运行后对系统流量的影响,以及木马程序对端口占用易被检测等隐蔽问题。

图5为木马植入流程。可以看出,利用固件漏洞植入的木马具有隐蔽性。

4 消费级路由器固件安全问题产生原因分析

4.1 厂商对安全重视不够

由于消费级路由器售价较低,厂商设计时对其重视不足,部分厂商的固件甚至没有CRC校验,同时对暴出的漏洞固件更新升级不及时。

图5 木马植入流程

4.2 系统裁剪

为了节省成本,很多厂商的路由器会根据应用场景等不同,调整ROM和RAM的容量,并根据容量不同,对路由器系统进行不同程度裁剪。如果裁剪过多,可能会影响系统稳定、暴露出更多安全问题。

以Atheros AR9331为主控芯片的路由器为例,总结部分厂商产品的ROM、RAM的容量如表 3所示[4]。

表3 以AR9331为主芯片的路由器RAM、RAM对比

针对表3所示的路由器,各厂商可能会制作不同的固件,根据容量会对系统做不同程度裁剪。

5 消费级路由器固件安全性建议

消费级无线路由器植入的木马一般具有隐蔽性。下面探讨如何避免消费级路由器被注入木马,或者在植入木马的条件下消除系统木马。

5.1 更改管理员密码

路由器有管理账号,这个管理账号需要及时修改,否则黑客会利用出厂默认密码登录路由器,进而攻击网络中的其他设备。

5.2 更新路由器固件

消费级路由器木马后门的产生,主要源于用户未及时升级有安全缺陷的路由器固件,而有缺陷的路由器固件被黑客注入木马。

通过及时更新官网公布的路由器固件、补丁包修补系统缺陷。更新固件时,选择不保存配置,可以清除已植入木马的劫持,同时提高防护能力。

5.3 关闭远程Web管理和DMZ功能

通过关闭Web管理和DMZ功能,对路由器的管理通过本地局域网进行,使互联网扫描手段无法对路由器进行扫描、探测。需要说明的是,远程Web管理和DMZ通常是关闭的。

5.4 关闭DHCP和开启IP MAC过滤

DHCP用于为局域网内的电脑自动分配IP地址,通过关闭DHCP功能,即使用户破解路由器的密码,仍无法获取正确的IP地址,是一种较为有效的安全防护措施。

启用消费级路由器中的IP地址过滤功能,仅允许IP地址在列表中的用户访问无线网络,通过在过滤规则中限定MAC地址,可以阻止非白名单列表IP、MAC对的用户连入网络。

6 结 语

消费级路由器是局域网和外网的接入点,对局域网的通信和数据安全至关重要,特别是黑客利用固件植入木马,隐蔽性强,危害大。因此,消费级路由器的安全必须引起重视。具体地,厂商需继续加强安全方面设计,将非法入侵拒之门外,而用户需树立安全意识,从而共同构建一套健壮、稳定、安全的局域网环境。

[1] 鲍庆国.嵌入式设备固件分析的关键技术研究[D].北京:北京工业大学,2016:27-33.BAO Qing-guo.Embedded Device Firmware Analysis of the Key Technologies[D].Beijing:Beijing University of Technology,2016:27-33.

[2] 陈铭.软件漏洞逆向分析技术研究[D].成都:电子科技大学,2007:34-51.CHEN Ming.Research of Vulnerability Detection and Application with Reverse Engineering[D].Chengdu:University of Electronic Science and Technology of China,2007:34-51.

[3] 胡刚.固件代码逆向分析关键技术研究[D].郑州:解放军信息工程大学,2011:46-52.HU Gang.Research on Key Techniques for Firm-Code Reverse Analysis[D].Zhengzhou:PLA Information Engineering University,2011:46-52.

[4] OpenWRT.支持的路由器列表[EB/OL].[2017-10-15].http://wiki.openwrt.org/toh/start, 2017,id=ar9331.OpenWRT.List of Supported Routers.[EB/OL].[2017-10-15].http://wiki.openwrt.org/toh/start,2017,id=ar9331.

猜你喜欢
固件木马校验
使用Excel朗读功能校验工作表中的数据
小木马
骑木马
小木马
旋转木马
炉温均匀性校验在铸锻企业的应用
基于SHA1的SCADA系统PLC固件完整性验证方法
电子式互感器校验方式研究
基于固件的远程身份认证
英特尔发布免费固件引擎