Web信息安全动态监测关键技术研究与实现
2017-02-14梁志宏
◆梁志宏 樊 凯
(中国南方电网有限责任公司 广东 510623)
Web信息安全动态监测关键技术研究与实现
◆梁志宏 樊 凯
(中国南方电网有限责任公司 广东 510623)
鉴于目前国内外信息安全形势备受关注,各类网络攻击、数据泄露、病毒感染、漏洞威胁等事件时常发生。基于webkit爬虫原理,建立一套基于云信息Web信息安全动态监测系统,着重介绍了非连接探测技术、支持插件的安全测试、页面变更模板自动生成方法、指纹技术。为提高WEB安全防护的实时性、系统性和精准性,降低WEB系统运营风险提供帮助。
爬虫原理; 信息安全; 网络攻击; 动态监测
0 前言
某大型国企目前有近百个互联网网站,因此其安全性备受关注。某大型国企各子单位经常发现Web系统被挂马、页面信息被篡改,因此国内很多大型企业Web安全还需要进行如下不足[1]:
(1)缺乏全方位信息安全,尤其是Web安全,感知和分析技术手段,事件处理和漏洞发现主要依靠第三方安全机构支持或主管部门通报,较为被动;
(2)安全漏洞监测和分布统计手段不足。如对struts、openSSL等漏洞的处理主要依赖人工排查和手工统计分析,效率不高。缺乏技术手段即时对某一新爆发漏洞或存在漏洞设备在全网的分布于整改情况进行摸底与呈现;
(3)无法全局掌握全网对外信息系统与内部信息系统的信息资产组成情况,如某一应用系统IP地址、由何种操作系统、中间件、数据库与Web组件构成;
(4)存在大量业务部门自建小网站或厂商自行搭建的演示系统,部署在互联网上,易被安全监管部门通报;
(5)安全可视性不强,无法通过较友好的可视化方式呈现全网当前安全动态与特定安全漏洞的爆发与整改动态。
1 监测平台实现目标
通过对基于云的WEB安全感知分析技术、WEB安全指纹技术、多维可视化展示技术的研究,建立一套基于某大型国企云的信息安全动态监测分析及场景重构技术,实现自动化对公司所有web系统实时的安全监控,对漏洞监控、挂马监控、网页被篡改、网站可用性等安全形态进行一体化监测预警; 通过多维展示技术研究、全面的展示信息安全的实时态势。从多个方面帮助安全主管部门实时掌握Web系统的安全状况,提高WEB安全防护的实时性、系统性和精准性,降低WEB系统运营风险,增强安全防护能力,避免引发WEB安全事件并造成不良社会影响,建立一体化、精益化、纵深化的信息安全管控体系。
2 监测平台设计与实现
2.1 监测平台系统架构
图1 监测平台系统架构
监测平台由展示交互层、业务逻辑层、数据库和对外接口四部分组成。展示交互层主要包括:主视图单元、资产管理单元、指纹和域名探测单元、Web漏洞监测单元、可用性监测单元、网页变更监测单元、DNS监测单元、用户管理和告警系统管理单元。业务逻辑层包络:安全爬虫模块、Web漏洞监测模块、可用性监测模块、高速探测模块、安全测试框架、多引擎管理模块、权限管理模块。监测平台系统架构见图1。
2.2 关键技术研究
为了实现对某大型国企所有对外信息系统(可通过互联网访问)与内部信息系统的Web安全监测、漏洞通报与预警,保证公司信息系统应用安全性; 通过Web指纹库建立与特征抓取技术,实现全网对外信息系统与内部信息系统的资产信息自动发现摸底,特定品牌、型号或版本的设备组件分布情况可视化展示、特定安全漏洞的分布情况可视化; 实现对全球互联网IP的动态扫描,从而可发现未在甲方信息部门登记备案的甲方业务部门自建小系统或厂商自行搭建的含有甲方相关信息的演示、测试系统,通过可视化方式呈现; 通过开放性的轻量级安全检测框架,支持用户自定义安全插件的开发嵌入,从而实现对甲方某一最新安全漏洞整改情况的全局性检测、分布情况统计与可视化呈现;实现较为友好的安全可视化展示,可通过安全地图或传统图表等多种可视化方式,并与公司信息安全审计系统(SOC)进行可视化集成。
3 信息安全动态监测关键技术
3.1 爬虫技术研究
为了能够充分解析网页,尽可能的使网页的解析效果与用户实际解析结果接近,同时尽量利用成熟技术,减少开发工作量,在本次项目中采用webkit浏览器引擎作为解析底层[2]。项目中的爬虫不采用正则表达式分析方法,而是采用调用webkit引擎的技术,通过调用浏览器引擎模块来对页面进行分析,力图达到最佳的页面还原效果。WebKit 是目前最流行的开源的浏览器引擎,被苹果的Safari浏览器和Google的Chrome浏览器所采用,本项目采用Webkit引擎作为底层,同时支持Javascript对页面的解析,同时也考虑支持flash插件,爬取到最真实的网页数据。爬虫主要使用qt进行编写,使用了Qwebkit框架进行搭建,使用Qwebkit是因为该框架有丰富的接口函数,以及高效的编写效率。系统流程图见图2。
程序从解析参数模块入口,首先获取用户输入的参数,然后调用解析参数模块,对每个输入的参数进行解析并获取到对应的信息。通过信息进行参数匹配,检测是否某些参数没有输入,如果没有输入则启用默认值[3]。然后进行数据库的连接,如果数据库连接失败,则会报错退出。实例化爬取对象,在实例化中构建了页面的元素。设置相应的参数,加载页面,加载页面的同时会设置定时器进行检测是否载入超时。通过创捷QNetworkRequest来设置网页请求,通过load方法来进行加载页面。因为有些页面为跳转页面,所以加载页面完成后进行页面跳转的判断。然后再进行页面链接的爬取,通过解析页面xml的标签以及标签内容进行获取所需要的链接。获取页面链接后对链接进行类型判断,判断是否为外链或同级域名,然后根据不同类型进行md5处理。根据处理出的不同类型进行入库处理,入库过程中,md5相同的链接不进行入库处理当前层次的链接爬取完成后,系统会去获取下一层的链接,并存储到vecto容器中,以方便获取链接。如果没有获取到下一层的链接,说明已经没有链接可以爬取,则爬取完成,程序退出。
3.2 非连接探测技术
非连接探测技术也称为被动探测技术,是不主动激发目标主机的响应,而通过网络嗅探来截获目标系统发出的数据包,从中提取和分析特性信息来获得目标主机的相应信息[4]。被动探测抓取目标主机发送出来的TCP报文,通过分析报文中的相关字段,获取不同的特征信息。在TCP/IP协议中,主要采取3次握手建立1个连接。3次握手采用“发送-应答-发送”的机制,等待监听的时间势必导致发包速度的缓慢。而ZMap索性就不进行三次握手。
ZMap只进行第一个SYN,然后等待对方回复SYN-ACK,随后发送RST(重置连接),不存在监听同步操作,清空连接,再继续发下一个数据包。而对于识别 ZMap是将对方receiver ip地址进行类似hash表一样的映射,将其处理保存到了sender port和seq number两个字段中,当SYN-ACK回来的时候(可能是Syn+Ack,也可能RST),就可以根据sender ip、receiver port、ack number这些字段进行校验,并对应处理记录。因此避免了状态存储,接近了网络带宽极限。一个TCP数据包包括一个TCP头,后面是选项和数据。一个TCP头包含6个标志位。
单台服务器,扫描整个IPv4地址空间,耗时45分钟,将所接1Gb的带宽占用了97%。不仅速度上比Nmap(TCP SYN模式)高不少,而且其设计的无状态机制,让其搜索成功的覆盖率也增加了。Zmap 某些方面和python 的scapy很像。但zmap纯C语言实现,比scapy效率要高一些。这也让ZMap能在这单一领域做很多优化。像ZMap 这样的工具没法发现所有漏洞。
3.3 支持插件的安全测试
当在扫描过程中需要发送payload时,如果输入的参数有--payload项,程序就会执行指定的python脚本来实现相关功能。如果需要发送payload,调用get_payload 函数获取payload。获取python返回值cotent,并获取其中的payload内容。检测的过程也可以通过支持python脚本实现。抓到数据包,然后初步判断数据包类别,调用相应的处理函数。如果输入的参数指定了python脚本,则调用相应的脚本检测payload。Flag为检测的结果,成功则入库,失败则不入库。程序调用python脚本的payload_process方法,将payload作为参数传入,python脚本接收到参数之后,对payload进行检测,并返回检测结果。
3.4 指纹技术
由于Web服务是互联网上应用十分广泛,也是容易受到恶意攻击的一种网络服务,并且在HTTP的响应包中蕴含了丰富的组件信息,这些因素为Web服务的深入识别提供了必要性和可能性。操作系统的探测识别主要利用指纹技术,包括主动和被动两种。主动识别技术采用向目标发送构造的特殊包并监控其应答方式来识别操作系统。被动识别技术,通过被动监听网络通信,确定所用的操作系统。本节在通用应用指纹技术基础上,针对Web服务指纹技术进行专门探讨。Web服务可识别的组件信息包含多个层次。
通常有4种方法可以识别一个Web应用:
(1)在网站首页面的HTTP headers和body中进行模式匹配或特征串匹配;
(2)获取特殊的URL,在HTML中进行模式匹配;
(3)获取特定的URL,计算md5,对比md5值进行判断;(4)获取特定的URL,通过返回的状态码进行判断。
在这4种方法中第1种是应用最广泛的,它网络带宽占用最小并且识别最快,适合大规则的扫描识别。第2-4种方法,需要获取网站的更多页面进行匹配,增加了对带宽的占用,匹配时间也要更久。随着人们安全意识的增强,越来越多的Web应用程序不在首页面中暴露过多有用信息,在这种情况下,方法2、3更加有效。方法4在识别开启mod_rewrite功能的网站时,可能造成错误的判断。
要识别一种Web服务器,首先到它的主页中学习它的相关资料,查看示例,找到下载链接,对于版本识别有可能需要下载多个版本进行研究。寻找尽可能多的Web服务器的例子进行研究。可以借助官网给出的示例网站,从示例网站中分析一定的特征,再借助搜素引擎寻找更多的例子。还可以从该Web服务器相关论坛中获取一些例子。需要强调的是例子的数量及多样性,数量越多,种类越多,分析的结果就越全面,越有代表性。分析示例网站的首页面,从headers、body中寻找能标记这种Web服务器的相似特征。深入分析几个网站的源文件,寻找有代表性的特征。通常可以关注headers、footers、URL、网站结构、Javascript libraries名称、CSS文件、div命名特点。获取所有示例网站的首页源文件,进行筛选。通过上面分析出的特征,去除一些明显不对的示例网站。对剩余的网页源文件分析相同特征。验证收集的指纹特征。借助搜索引擎可以验证指纹是否有效标记这种Web服务器,如果有效保留,如果无效,剔除。
4 结论
本文通过对爬虫技术进行研究,建立一套基于信息安全动态监测分析系统。实现了对公司所有web系统实时的安全监控,对漏洞监控、挂马监控、网页被篡改、网站可用性等安全形态进行一体化监测预警。通过多维展示技术研究、全面的展示信息安全的实时态势。从多个方面帮助安全主管部门实时掌握Web系统的安全状况,提高WEB安全防护的实时性、系统性和精准性,降低WEB系统运营风险,增强安全防护能力,避免引发WEB安全事件并造成不良社会影响。
[1]李万莉,项著廷.基于B/S结构远程监测系统软件设计[J].计算机技术与发展,2015.
[2]解全颖.Web访问控制推理研究[J].西南民族大学学报(自然科学版),2014.
[3]郑木德.基于Web的科研管理信息系统中关键子系统的设计[J].太原师范学院学报(自然科学版),2008.
[4]石云辉,黄隽.基于.NET的网络故障监测报警系统的设计[J].微计算机信息,2008.
[5]刘家军,刘梦娜,安源.基于GIS的网络化接触网检修挂接地线信息管理系统的设计与实现[J].电力系统保护与控制,2016.