何长鹏
(甘肃政法大学公安技术学院,甘肃兰州 730070)
随着移动互联网的迅猛发展,互联网的影响正逐步从消费领域向传统的社会核心领域渗透,并逐渐向产业互联网转型。产业互联网时代的到来,把人类带入了智能时代。以智能手机为代表的智能终端设备是移动互联网的入口设备,它们不仅具有传统的通讯功能,还具有和个人计算机类似的功能,体积小、可穿戴、携带方便等诸多优点。由于移动设备包含大量敏感的个人信息,电子商务、移动支付等业务涉及钱财交易,使得恶意攻击者往往选择移动互联网作为攻击目标。一方面智能终端设备的操作系统和应用程序存在大量的安全漏洞,以及一些移动恶意软件的出现,导致移动互联网的安全形势更加严峻。另一方面,终端用户接入网络变的容易,人们所生活的环境中到处都有WiFi热点。
智慧城市、智慧校园以及智慧家庭都离不开小型的SOHO无线路由器,SOHO无线接入路由器作为家庭和中小型办公环境中普及度极高的网络接入设备,它的安全影响着整个互联网的安全。然而SOHO无线路由器的安全问题往往会被人们所忽略,研究者们关注的重点是大型骨干路由交互设备漏洞攻击技术,针对SOHO无线接入路由交换设备的软硬件漏洞挖掘分析研究较少[1-4]。
据调查研究发现,大部分对于智能手机等终端设备的入侵,其源头是攻击者从小型无线接入路由器进行渗透,进而控制用户的手机从而窃取用户隐私数据、获取账号密码信息、实施网络劫持和网络钓鱼等攻击行为[5]。因此,针对普通的、小型的SOHO无线接入路由器的安全漏洞挖掘及漏洞相关攻防技术的研究具有重要的意义和必要性。
安全漏洞[6]是指信息系统在设计、实现或者运行管理过程中存在的缺陷或不足,从而使攻击者能够在未授权的情况下利用这些缺陷破坏系统的安全策略,它是研究安全问题的生命线,是网络攻击和防御的核心问题。漏洞挖掘是指采用一定的信息技术方法去发现、分析和利用信息系统中漏洞的过程。漏洞挖掘技术分为白盒测试、黑盒测试、灰盒测试三种类型,其区别是由测试者所得到的资源决定的[7]。传统漏洞挖掘的目标对象仅仅针对软件系统本身,但目前越来越多的人开始关注存在于电子设备硬件电路或固件系统中的漏洞,不再局限于软件本身[4]。
近些年来,出现了大量的漏洞挖掘系统,也涌现了种类繁多的挖掘技术及方法[1-3,7-9],但一直以来很少有研究者去探索和研究SOHO无线路由器存在的漏洞,挖掘分析SOHO无线路由的漏洞,找出对应的防护策略。SOHO无线路由器作为一台嵌入式微型计算机,存在各种类型的漏洞,包括身份脆弱性漏洞、Web配置界面漏洞、缓冲区溢出漏洞和固有后门型漏洞等[10]。在遭受攻击者针对漏洞和后门的攻击时却缺少有效的防御手段。
人们通常依据分析对象维度,把漏洞挖掘分为基于源代码和基于可执行代码的挖掘,这就定义了一个相对狭义的漏洞挖掘对象范畴,即只针对软件系统的漏洞挖掘[8]。从漏洞的分析角度,将无线路由器系统漏洞分为软硬件漏洞、设备运行的协议漏洞以及配置管理漏洞三类是较为合理的[4]。
目前,广泛应用的漏洞挖掘技术主要分为两大类[4]:一是静态代码审计;
二是模糊测试[8,11,12](Fuzzing)。模糊测试是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性黑盒测试类型,与静态代码审核相比,模糊测试有许多的优点[13]。模糊测试通过向目标程序发送大量的畸形数据,以触发异常崩溃来发现程序潜在的漏洞[14]。模糊测试中测试用例的有效性是发现协议或系统未知漏洞的关键。文献[15]通过深度学习方法省略了传统网络协议漏洞挖掘过程中的人工对网络协议的分析。
文献[3,4]认为设备的逆向剖析及代码抽取、仿真成为挖掘的基础。漏洞挖掘重要的前提之一是要能够识别、提取、分析和运行设备中的代码,而这些代码在研究过程的测试必须是一个能够满足漏洞挖掘需求的仿真环境或一个在线的真实环境。然而,生活中接触到大量的网络,漏洞挖掘必须面对种类繁多的硬件设备和软件系统对于设备的逆向剖析,并从中抽取代码,提供仿真、调试和分析环境成为洞挖掘必须要做的重要的基础工作[16]。
因此,本文将重点研究家用路由交互设备所面临的安全问题,挖掘分析路由设备运行的固件和协议漏洞。通过搭建真实运行环境,分析SOHO接入无线路由器体系架构、固件、运行环境等,实现对网路协议安全漏洞扫描分析,并根据挖掘的漏洞研究相应的防护技术。
SOHO无线宽带路由器作为一种嵌入式设备,硬件部分通常选择支持ARM或MIPS体系架构的微处理器,系统软件部分则基于Linux内核定制裁剪以后进行移植[17]。上层软件架构是主要包括:路由模块、防火墙模块以及用户远程管理模块。SOHO无线路由设备作为一种嵌入式设备,包含文件系统在内的核心内容均以固件的形式存储在闪存(Flash)中[3]。固件通常为二进制数据流文件,包括固件头部、引导程序、内核镜像、文件系统等几部分。固件的核心内容是文件系统,其中包含全部的可执行程序、配置文件等信息。文件系统提取的方法较多,除了手动提取外,还可以利用一些现有的比较优秀的工具,比如Binwalk、Firmware-analysis-toolkit等。Binwalk可以协助安全人员从固件镜像文件中提取数据及进行逆向工程。
为了实现SOHO路由器的漏洞挖掘分析,本文参考文献[4]提供的方法搭建运行环境。与文献[4]不同之处本文建立了真实的Linux运行环境,安装配置模拟处理器软件QEMU、交互式反汇编编译工具IDA Pro以及MIPS交叉编译环境。其中,模拟处理器软件QEMU具有高速及跨平台的特性,能模拟真实计算机的速度;
IDA Pro具备强大的脚本功能,实现漏洞自动化分析,支持用户快速开发Python脚本程序来验证发掘的漏洞;
配置MIPS交叉编译环境,方便后期shellcode的编译执行。
模糊测试的理论和应用都已经比较成熟,基于模糊测试方法实现的工具种类也很多,比如SPIKE、Sulley、AFL、Burp Suit和ClusterFuzz等。模糊测试中生成有效的测试数据至关重要,可以利用测试用例设计、随机生成输入、人工协议变异、自动协议生成等方法来建立测试集。测试用例设计的好坏直接影响测试的效果,使用各种不同的测试用例对目标进行测试,通过监测目标执行情况来发现漏洞。
随机生成输入则需要考虑如何生成随机但有效的输入。人工协议变异需要测试工程师能够通过自己丰富的工作经验针对测试目标协议生成有效的测试数据。自动协议生成协议在理解测试程序的协议规约和文件格式的前提下,通过识别数据包或者文件中的静态和动态部分来创建一个描述协议如何工作的语法模板,之后测试工具动态解析这些语法模板,进行改变数值变量来生成测试数据。根据目标对象的特点和挖掘工作的一般流程,需要考虑如何能够对目标程序监控以保证及时发现,定位目标程序错误。模糊测试是一种黑盒测试方法,如果盲目地进行测试效率低下。因此,本文选择以D-Link无线路由器为研究对象,根据信息安全漏洞共享平台发布的安全公告,选择一个可利用的安全漏洞来说明设计的模糊测试方法的可行性。
通常无线路由器漏洞的分析与利用的关键环节包括获取固件、提取文件系统、漏洞分析与利用以及漏洞挖掘等几个阶段[4]。固件获取的方法可以手工提取,也可以从路由器厂商专门的技术支持网站下载。一般情况下可以从路由器厂商获取可用的固件,但是在厂商没有提供固件下载时,就需要手工来提取。
手工提取主要是通过路由器硬件提供的接口将计算机与主板连接,从路由器的Flash中提取固件。手工提取方法要求安全人员熟悉与路由器硬件相关的基础知识,操作难度较大。因此,如果能获取到厂商提供的固件,就可以降低漏洞挖掘的难度。从D-Link技术服务网站获取到了相应的固件文件,并使用Binwalk从固件中提取出了文件系统。接下来使用QEMU运行无线路由器中的应用程序,但出现应用程序运行失败的情况,需要利用IDA Pro动态调试和静态反汇编对函数代码进行分析,编写劫持函数动态库来修复路由器运行环境。
上述内容已完成漏洞挖掘分析前期准备工作,接下来详细介绍设计基于模糊测试方法的漏洞挖掘分析过程。基于模糊测试方法实现的工具种类很多,其中Sulley是一款使用Python语言开发的专用于网络协议的模糊测试框架,其设计目标是为了简化数据生成,简化与目标系统之间的数据传输,以及目标系统的监控,给用户提供友好的API编程接口。
本文研究的目标是挖掘分析SOHO无线路由器通信协议、应用服务方面的潜在漏洞。因此,参考文献[18]给出的基于Sulley改进的工控协议模糊测试架构设计思路,同样设计了基于Sulley的SOHO无线路由器进行模糊测试的方法。首先根据通信协议类型来自定义请求。通信协议类型发现通常可以采用一些高级算法的智能协议分析理论和工具。由于SOHO接入无线路由器广泛使用HTTP、HTTPS应用层协议和D-Link MYDLINK云协议,并且从已发布的漏洞公告可知上述三种协议存在安全漏洞。因此,本文仅针对这三种协议进行模糊测试,降低了挖掘分析难度,但是缺乏普遍性。
在基于模糊测试的漏洞挖掘分析中,测试用例的设计至关重要,好的测试用例可以提高漏洞挖掘的效率。构造测试用例时,不应该局限于边界附近区域的数据,而是分析在该协议中有哪些位置可能成为模糊测试的数据输入点,以此来构建输入矩阵。输入矩阵尽可能包含引起程序奔溃的各种输入向量。然后编写适合模糊测试器读取并产生测试用例的脚本文件,之后测试的过程就可以通过自动化方式进行。测试脚本文件中实现各个请求的导入,会话管理以及设置代理参数等。
其次使用QEMU启动MIPS系统并完成网络配置以后,执行Sulley网络监视代理和进程监视代理模块,开始监听网络数据包的传输和监视测试目标程序的运行情况。
最后开始运行测试脚本,此时Sulley会生成一个有向无环会话图,Sulley模糊测试器将遍历整个会话图。在整个测试脚本执行过程中,网络监视代理和进程监视代理模块会分别记录测试用例的发送顺序编号,并将这些测试用例保存在特定为文件夹中。如果有测试用例导致目标程序出错或者异常,进程监视代理模块就会反馈给测试系统一个高层信息,并且将错误信息记录到测试日志中,事后调出引起错误的测试用例并查看错误信息。
一旦确定被检测目标出错或者异常,则需要确定所发现的漏洞是否重现。漏洞重现成功之后,还需要进一步判断该漏洞是否可以利用。在上一步的模糊测试过程中模糊器捕获并保存了几个异常情况的网络交互过程数据包。通过对D-Link系列SOHO无线接入路由器相关历史漏洞的检索,发现这些异常情况可能是由函数引起的缓冲区溢出。因此,需要进一步根据异常数据来编写验证脚本验证猜测是否正确。
从已知漏洞公告可知,漏洞产生的可能原因是HTTP协议的POST参数中名为“password”参数过长导致的。因此,在构造完成HTTP请求的地址之后,设置POST参数,使用urllib库提供的urlencode()函数伪造超长的参数,接着发起HTTP连接请求。从Boa服务器反馈的结果来看,程序运行异常情况与模糊测试捕获到的异常情况相同,并查看当前堆栈情况,伪造的超长的“password”参数覆盖了部分内存地址,导致程序执行出现异常,验证了此缓冲区溢出漏洞可以被利用。
缓冲区溢出漏洞的利用通常是攻击者根据漏洞特征编写基于MIPS指令系统的shellcode,劫持程序正常执行流程,使程序跳转到攻击者注入的shellcode执行任务。SOHO无线接入路由器为了防止恶意代码攻击,在系统当中启用了数据执行保护技术,因此攻击者提前需要构建一个特殊的输入向量以填充函数的栈空间,利用ROP Chain[1,4]将原有的各个gadget代码片段按照顺序拼接起来,最终完成复杂的功能。
现如今,互联网技术已经深入渗透到了各行各业,互联网作为社会经济产业的支撑点,面临着巨大的网络安全风险。SOHO无线接入路由器作为互联网的入口,它的安全会影响到整个互联网的安全。因此,有必要针对无线接入路由设备的安全开展研究,重点分析挖掘潜在的一些安全漏洞,并针对这些安全漏洞提出相应的防护技术。
基于上述目的,本文针对SOHO无线路由设备的网络协议进行漏洞挖掘,提出一种基于Sulley模糊测试的漏洞挖掘分析框架,可实现安全协议漏洞自动扫描分析。该方法仅对已知的网络安全漏洞进行挖掘分析,验证了其设计的有效性,并未深入挖掘分析未知的一些安全漏洞。因此,未来需要将此方法应用于不同种类的无线路由器,深入挖掘分析这些无线路由设备潜在的一些安全漏洞。
猜你喜欢测试用例固件安全漏洞尼康旗舰Z9升级新固件延长高速连拍时间电脑报(2022年4期)2022-02-07基于国产化IT 基础设施的通用固件安全模型研究软件导刊(2021年10期)2021-10-28刍议计算机软件中的安全漏洞检测技术消费电子(2021年7期)2021-08-10Evosuite和Randoop单元测试用例生成工具覆盖率对比分析①计算机系统应用(2020年9期)2020-09-22Randoop 和Evosuite 生成测试用例的变异检测能力分析现代计算机(2020年9期)2020-04-25智能设备安全漏洞知多少瞭望东方周刊(2018年47期)2018-12-11计算机软件安全漏洞检测技术电子技术与软件工程(2016年20期)2016-12-21英特尔发布免费固件引擎中国信息化周报(2015年14期)2015-06-01提取ROM固件中的APP电脑爱好者(2015年7期)2015-04-09测试用例集的优化技术分析与改进现代电子技术(2009年6期)2009-05-31扩展阅读文章
推荐阅读文章
老骥秘书网 https://www.round-online.com
Copyright © 2002-2018 . 老骥秘书网 版权所有