随着我国两化的不断深度融合,工业控制系统集成了自动化技术、网络技术和信息技术,工业企业打破了原来的“孤岛式”、完全封闭的状况,与外网相连、互联互通,加之工控系统的高端市场和核心技术受制于国外,安全保障措施和专业测评工具缺乏,我国的工业控制系统面临着严重的安全可靠性威胁。
近几年,针对工业控制系统的攻击层出不穷,且攻击的深度和强度进一步增强。2010年众所周知的“震网病毒”事件;2015年12月,乌克兰电网被攻破,导致大面积停电等攻击事件频发,处处展现的是工控系统遭受攻击的“战况”,充分显示了工业控制系统信息安全问题的现实迫切性。
对于工业企业而言,及时发现信息安全风险,尽早对大量工业企业控制系统进行检测测试,发现其安全漏洞并及时加固,才可提高其自身的工控信息安全抵抗能力。针对这一现状,一种基于Fuzzing的网络协议漏洞挖掘方法,从标准协议入手,利用Fuzzing测试手段,挖掘工业控制系统和产品的安全漏洞,做到尽早发现、尽早加固。
01.模糊测试技术的兴起
Fuzzing技术可以追溯到1950年,当时计算机的数据主要保存在打孔卡片上,计算机程序读取这些卡片的数据进行计算和输出。如果碰到一些垃圾卡片或一些废弃不适配的卡片,对应的计算机程序就可能产生错误和异常甚至崩溃,这样,Bug就产生了。但最早提出是1988年由威斯康星大学Barton Miller在一个关于研究UNIX的模糊测试的项目中,首次提出Fuzz生成器(Fuzz Generator)的概念。
2001年,芬兰奥卢大学公布PROTOS测试集项目的研究成果,首次将Fuzzing技术应用在网络协议的安全测试当中;2002年,在BlackHat USA黑客大会上,来自Immunity安全公司的Dave Aitel公布了Fuzzer工具SPIKE(已不使用)。从PROTOS到SPIKE的诞生,代表着学术界与工业界对Fuzzing技术在商业与安全实战领域的应用提供了有力的证明。因此,PROTOS项目可以说是Fuzzing技术发展历程中的一次重要里程碑。
百度百科给出的定义:模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏等。其中用于输入的随机数据和不合法的数据被称为“FUZZ”。
关于模糊测试的定义,有很多说法。有人认为Fuzzing是软件测试中的随机测试技术;有人认为是重要组成部分是暴力测试;有人认为是一种简单的黑盒测试技术;也有人认为是黑盒测试技术中边界测试技术;还有人认为Fuzzing是黑盒测试、错误注入、压力测试的技术融合。总体结合来说,Fuzzing是把随机测试和边界测试技术、协议和软件知识、具体执行和试探性攻击结合在一起的技术方法。
02.Fuzzing现状和趋势
现如今,Fuzzing已经成为软件测试、漏洞挖掘领域最有效的手段之一,特别适合用于发现0day漏洞,是众多黑客或黑帽子发现软件漏洞的首选技术。
在过去的十年中,模糊测试已经展示了在漏洞检测方面的潜力,并被用于发现开源和闭源软件中的数千个漏洞。此外,研究人员也提出了新的模糊测试技术来模糊不同的协议实现,例如FTP或RTSP等。
近年来,随着技术的不断进步,模糊测试技术不仅包括传统的黑盒模糊测试,还衍生出灰盒和白盒模糊测试技术。灰盒模糊测试技术将黑盒模糊测试和白盒模糊测试相结合,通过访问被测试软件或系统的内部状态来生成更加有针对性的输入数据,以增强模糊测试的效果。白盒模糊测试技术则更加关注被测试软件或系统的内部结构,例如程序代码或数据结构等,以利用这些信息生成更加有效的测试用例。
不过,模糊测试技术并非完美的安全测试方法。虽然模糊测试能够发现一些潜在的漏洞,但仍然无法覆盖所有可能的测试用例。另外,一些漏洞可能需要特定的输入序列才能触发,而这些序列可能并不容易生成。因此,模糊测试通常被用作安全测试的一部分,而不是唯一的测试方法。
模糊测试作为一种安全测试方法,已经发展成为了一个相对成熟的技术体系,成为了安全领域中非常重要的一部分。尽管模糊测试存在一些局限性,但它仍然是发现潜在漏洞的有效方法之一。一些商业化的模糊测试工具也已经出现,例如AFL、LibFuzzer、Honggfuzz等。这些工具通过自动化生成输入数据和分析测试结果,能够帮助开发人员更加快速和有效地发现软件中的漏洞。
相信未来,随着技术的不断发展和模糊测试技术的不断发展,模糊测试将继续在安全领域发挥着重要的作用。近年来一些新的技术也被引入到了模糊测试中,例如机器学习和人工智能等。这些技术能够帮助模糊测试更加高效地发现漏洞,并自动化生成输入数据。例如,神经网络模型可以被训练来生成更加高效的输入数据,以提高模糊测试的效率。自适应模糊测试技术也可以自动化生成输入数据,以帮助发现更加复杂的漏洞。
03.融安网络基于工业控制协议的智能模糊测试技术产品应用
对工控网络未知安全漏洞进行挖掘需要基于工控协议的模糊测试技术,通过对工控网络中的设备和系统进行智能模糊测试来发现。
首先,通过运用模糊测试的原理,设计测试用例并构造变异报文,检测工控协议实现的缺陷。通过点对点、桥接等连接方式,将融安漏洞挖掘检测平台与被测设备或系统进行连接,经过配置、选择、运行、结果等步骤,在强大自定义测试引擎的基础上,综合运用各种测试方法和脚本,向被测对象提供非预期的随机或用户自定义输入,并监控输出中的异常来发现其潜在缺陷和故障。优化后的自动化模糊测试引擎不仅仅只关注协议和软件的边界值,同时还会关心任何能够触发未定义或是不安全行为的数据输入。
融安网络漏洞挖掘检测平台提供了操作、监视、管理整个漏洞挖掘测试过程的功能。基于高效的智能模糊测试和攻击测试等自动化测试方法,自动生成测试用例列表,并在测试列表运行时可以实时监控和进行管理,能够高效的完成复杂测试。
测试完成即可生成测试结果,并可对“疑似漏洞”的测试结果进行漏洞标识,关联所有相关信息,并对漏洞名称、危险等级和描述等信息进行编辑,保存至本机漏洞库作为漏洞析的依据。同时,通过对“疑似漏洞”进行深入分析,重复进行针对性的测试,明确“疑似漏洞”的真实性,最后在出错数据包中精确定位,并可以将发现的“疑似漏洞”保存至漏洞库中进行管理。
此外,根据漏洞分析的结果,利用融安漏洞挖掘检测平台提供的开发工具可以进行一系列的衍生开发。包括新的测试用例,测试脚本,测试/攻击套件,并且可以对衍生开发的结果进行漏洞测试用例、脚本测试检验。
参考来源:
1、http://www.chinaaet.com/article/3000053239
2、https://blog.csdn.net/bopzhou/article/details/5831122
2、https://www.cnblogs.com/gaozhidao/p/12313390.html
5、https://www.auto-testing.net/news/show-118174.html