IT资产高速探查及漏洞发现系统的研究
2019-01-02秦丞,贺渝镔
摘 要: 为满足日益发展的网络空间安全对空间内IT资产的分布、存活、设备运行及漏洞分布情况的了解需求,本文提出了采用高速无感探测技术及poc漏洞验证技术来实现对IT资产的快速梳理及漏洞的精准定位,实现了资产与漏洞关联,方便了对复杂网络资产的管理,简化了日常运维,为网络空间安全快速发展提供了新的前进方向。
关键词: 高速无感;资产探查;漏洞Poc
中图分类号: TP393.08 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.12.037
本文著录格式:秦丞,贺渝镔. IT资产高速探查及漏洞发现系统的研究[J]. 软件,2019,40(12):167170
Research on High Speed IT Asset Detection and Vulnerability Discovery System
QIN Cheng, HE Yu-bin
(Kunming Power Supply Bureau, Yunnan Power Grid Co., Ltd., Kunming 650000)
【Abstract】: In order to meet the growing demand of Cyberspace Security for understanding the distribution, survival, equipment operation and vulnerability distribution of IT assets in space, this paper proposes to use high-speed insensitive detection technology and POC vulnerability verification technology to realize the rapid combing of IT assets and the accurate location of vulnerabilities, and realize the assets and vulnerabilities. Relevance facilitates the management of complex network assets, simplifies the daily operation and maintenance, and provides a new direction for the rapid development of network space security.
【Key words】: High-speed insensitivity; Asset detection; Vulnerability Poc
0 引言
美國男子约翰·玛瑟利花近10年时间建立搜索引擎“Shodan”,Shodan搜索引擎的出现向人们展示了网络和真实世界的汇聚是如此之快,数以百万计人每天依赖的工业系统在黑客入侵面前如此不堪一击。它还揭示了网络世界的连接性和复杂性超出任何人的理解,网络中的漏洞比人们之前想象的要大得多。在过去两年中,Shodan搜索引擎已收集到近1亿台工业设备的数据。
相比于国外更加面向工业设备,国内方面,也有相关公司针对全球大约40亿数量的IP进行了信息普查工作方面的研究,并出现了网络空间搜索的相关系统,可面向网络空间的应用组件、网络设备及工控设备进行探测,也是目前资产探测及漏洞发现中较为新兴的技术。
近几年来在以“互联网+”模式的催生下,以及“物联网”的飞速发展,网络空间所覆盖的行业领域及应用边界在不断扩大,导致原有网络空间资源的安全监控及防护手段所存在着滞后性及不完善性已日益凸显,如:缺少高效、精准的技术手段,无法及时获取系统和设备所开放的组件、服务和端口情况,以至无法实时、准确获取网络设备状态信息及所存在威胁风险所覆盖或影响的范围,同时无法实现对威胁产生源头的有效追溯,这类问题越来越明显,在此基础上,本文进行了资产高速探测技术及漏洞发现技术的研究,希望通过研究解决传统资产探测中存在的问题。
1 高速无感探测技术研究
1.1 无状态扫描
传统资产探测技术都采用TCP发包技术,整个过程涉及到TCP三次握手连接的建立,持续时间长,发包量大,当出现请求连接失败时,涉及到丢弃包的处理,易造成网络堵塞[1-3]。
图1 传统资产探测技术示意图
Fig.1 Sketch Map of Traditional Asset
Detection Technology
为了实现更快速的探测,本文研究使用无状态扫描技术,无状态扫描是指在扫描过程中,无需关心连接状态,不占用系统TCP/IP协议栈资源,忽略SYN、ACK、FIN、TIMEWAIT等状态,仅通过一次发包的回包来判断端口开放性的一种扫描技术。由于扫描过程中一般仅向目标端口发送TCP三次握手中的SYN包,然后根据端口回包判断此端口的开放性,因此这种扫描技术又被称为半连接扫描。此种扫描技术无须维护连接状态,端口开放性判断逻辑简单,仅需要一个Bitmap结合回包内容即可完成端口开放性的判断,可以最大限度的利用服务器的CPU和带宽资源,以最快速度完成端口开放性检测。
图2 无状态扫描技术示意图
Fig.2 Sketch of stateless scanning technology
1.2 IP列表拆分
传统扫描系统在进行网络扫描时,会依据IP地址进行按序扫描,而一些安全设备通常具有防扫描机制,会根据扫描的顺序性来判断,如果单一IP请求过多并带有一定规则性,则很容易被判定为攻击行为,后续的连接请求将会被阻断,探测准确率也会因此下降。最常见的情况为对一个地址进行探测,一段时间后该地址提示访问被拒绝[4]。
图3 传统扫描技术示意图
Fig.3 Sketch of traditional scanning techniques
为了避免大量发包对正常业务造成影响,本文采用IP列表拆分技术,对探测的ip列表进行拆分,打乱顺序进行扫描,扫描完成后将再次重新排列组合,避免扫描被安全设备的防御机制所阻断。
图4 IP拆分示意图
Fig.4 IP splitting schematic
1.3 引用指纹库
为了实现对资产组件探测的准确率,本文研究引用IT资产指纹库,进行资产检测时,首先探测目标系统的存活主机,对存活主机进行端口扫描,确定系统开放的端口,同時根据协议指纹技术识别出主机的操作系统类型。然后对开放的端口进行网络服务类型的识别,确定其提供的网络服务。根据目标系统的操作系统平台和提供的网络服务,调用漏洞资料库中已知的各种漏洞进行逐一检测,通过对探测响应数据包的分析判断是否存在漏洞[5-7]。
端口指纹库:研究引用端口指纹库进而获得组件的软硬件类型、设备类型、厂商、品牌、型号等丰富信息。
操作系统指纹库:据 TCP/IP 协议栈指纹识别不同的操作系统。虽然 RFC 对 TCP/IP 协议有着详细的描述,但其中依然存在着描述不明确或描述明确但没有做强制约定的地方。因此不同操作系统不同版本在 TCP/IP 协议栈的实现方案上都会有其特殊的处理方式,引用指纹库可以实现多种类别数据库的探测。
Web组件指纹库:HTTP协议作为应用层协议,其上构建着种类繁多的Web组件。对这些 Web 组件的识别既能够帮助更精确、高效的完成漏洞应急任务,有可以作为重要的辅助信息完成对目标主机用途的研判。研究引用web逐渐指纹库可以识别引擎具备上百种Web组件的识别能力。其中包括 Web 编程语言(ASP、Python、JSP等)、Web容器(Nginx、Squid、Tengine等)、Web应用(织梦CMS、phpwind、Wordpress等)、Web框架(Django、Tornado、ThinkPHP等)、前端框架(jQuery、Bootstrap等)等。
2 漏洞扫描技术研究
2.1 Poc漏洞验证
现有的网络漏洞扫描器主要是利用特征匹配的原理来识别各种已知的漏洞。扫描器发送含有某一漏洞特征探测码的数据包,根据返回数据包中是否含有该漏洞的响应特征码来判断是否存在漏洞[8]。例如,对于IIS中的Uncode目录遍历漏洞,扫描器只要发送含有特征代码%c1%1c的探测包;http:// x.x.x.x/scrlpts/..%c1%1c../winnt/system32/cmdexe?/c+ dir,如果应答数据包中含有200 OK则可以断定该漏洞存在。这样的验证方式存在两个明显弊端,一个是验证漏洞需要发送大量的数据包,容易被安全设备和服务器认定为攻击行为而对IP进行阻断;另一个方面,通过单纯的发送带有某个验证规则的数据包,验证的准确率低,易产生误报。
为了解决传统扫漏洞验证方式存在的问题,本文研究采用的PoC漏洞验证技术,所谓PoC即漏洞验证程序,在计算机术语中是一段可以证明某个漏洞存在的代码,通过运行这段代码,会输出一个结果,表明漏洞是否存在。常见的PoC有struts2验证PoC,头部信息如下所示:
def poc(url):
register_openers()
datagen, header = multipart_encode({"image1": open("tmp.txt", "rb")})
header["User-Agent"]="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/ 537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
request = urllib2.Request(url,datagen,headers=header)
response = urllib2.urlopen(request)
body=response.read()
PoC的验证原理大多是模拟计算机去访问可能存在漏洞的地址,再根据响应结果判断漏洞是否存在,这样即使是进行批量验证,也会由于其模拟正常人为访问而不会造成安全设备的拦截。另外成熟的PoC通用性很强,可以针对不同版本的组件进行漏洞的验证。最重要的一点PoC基本都是开源的,有许多经验丰富的渗透测试人员的程序员进行长期更新和维护,这很大程度上保证了PoC代码验证的准确性和对新出漏洞的更新速度。采用对接丰富完善的PoC代码库,满足对多种漏洞的验证需求,并且PoC验证程序大多使用Python语言编写,入门简单,开发效率高,有非常强大的第三方库,大大降低了开发周期,高级语言,编写程序时不需要考虑内存管理一类的底层细节。可移植性高,可扩展,可嵌入,可以把Python程序嵌入C/C++,这些都方便了使用者编写针对特定漏洞的PoC。
2.2 Poc漏洞关联
漏洞验证作为扫描过程中最耗时的部分,常常成为漏洞应急和漏洞常规普查中的关键节点。要加快漏洞验证的速度,减少需要验证的目标数量就成了最直接有效的一种方法。为了实现漏洞的资产的数据关联,本文研究使用漏洞关联技术,在进行漏洞验证时,将漏洞都带有与之相关的组件的特征信息嵌入其中,当一个新的漏洞出来的时候,有可能漏洞发布者并没有指明漏洞影响的版本号,这个时候通过漏洞详情明确该漏洞影响的版本具体有那个或者那些,将其版本信息写入PoC程序中,将与之相关的资产组件分布情况也罗列出来。如果不明确漏洞影响,在漏洞验证的同时既不能关联漏洞,又浪费大量时间。所以使用漏洞关联技术能有效缩小漏洞验证的目标范围,大大加快漏洞验证速度,提升漏洞检测效率,并实现漏洞与资产组件的互相关联。
3 大数据技术研究
研究IT资产探查和漏洞发现,是针对海量数据的批量操作,为了实现对大量数据的迅速响应和使用者对数据快速增删查改的功能,本文研究使用大数据处理技术。
3.1 大数据分布存储
IT资产探测的网络设备数量巨大,采集信息的种类多,为满足大数据的存储要求,本文研究采用MongoDB数据库进行存储。MongoDB是一个基于分布式文件存储的数据库[9-10]。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的软件,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。利用MongoDB分布式的各种优点,可用于存储各种类型网络设备及应用相关的数据及结果数据、统计数据等大的数据内容
3.2 大数据深入分析
基于MongoDB中存储的网络组件大数据库,深入研究各个组件和各种协议的安全性,例如对不同版本的SSL/TLS协议进行深入分析,分析是否存在缺少边界检查的问题,这个问题会造成缓存区的超读,从而引发著名的心脏滴血漏洞。通过对大数据的深入分析,可以对IT资产组件的安全性做出快速精确的分析,加快响应速度,方便对数据的检索。
3.3 数据实时检索
MongoDB中存储的数据进过深入分析之后,需要快速实现对分析后数据的实时检索,本文研究使用ElasticSearch检索技术,ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elastic Search数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。在资产探查和漏洞扫描中,依靠 Elasticsearch强大的数据检索能力
实现大数据深入分析结果的实时检索。
图5 数据实时检索示意图
Fig.5 Schematic diagram of real-time data retrieval
4 结语
本文通过对高速无感探测技术及漏洞PoC验证技术的研究,结合大数据分析,为网络空间组件安全的研究提出了新的解决思路,在发展中有广阔的应用前景。
参考文献
[1]王宸东, 郭渊博, 甄帅辉, 等. 网络资产探测技术研究[J]. 计算机科学, 2018, 45(12): 24-31.
[2]肖宇峰, 何明, 汪来富. 电信运营商网络资产安全管理技术的应用研究与实践[J]. 广东通信技术, 2018, 38(07): 32-41+51.
[3]陈锦春. 基于加权余弦相似度的网络资产资源预匹配方案[J]. 电信技术, 2018(02): 46-49.
[4]贺鸣. 对广电网络资产的会计核算处理方法研究[J]. 纳税, 2017(34): 94.
[5]夏智伟, 李乐成. 网络安全态势感知系统研究与设计[J]. 信息通信, 2017(05): 147-148.
[6]傅涛. 基于源碼与二进制文件的漏洞挖掘技术[J]. 软件, 2018, 39(7): 95-97.
[7]印杰, 李千目. 软件代码漏洞的电子取证技术综述[J]. 软件, 2015, 36(12): 49-59.
[8]唐菁敏, 王红彬, 王朝阳, 等. 基于SSM+ZD的漏洞管理平台设计与实现[J]. 软件, 2018, 39(2): 139-142.
[9]谢华成, 马学文. MongoDB 数据库下文件型数据存储研究[J]. 软件, 2015, 36(11): 12-14.
[10]白长清, 刘敏. MongoDB 在气象传感器数据处理中的应用[J]. 软件, 2015, 36(11): 34-37.