一种适应于电力行业的网站监控系统及方法与流程

文档序号:11138308阅读:1468来源:国知局
一种适应于电力行业的网站监控系统及方法与制造工艺

本发明涉及一种适应于电力行业的网站监控系统及方法。



背景技术:

现有技术存在以下几个方面的问题:

1、当前情况下,电力系统作为我国能源行业的重要组成部分,信息化已经具备了一定规模,而信息化建设的重点之一就是信息安全;信息安全已成为电网公司信息化工作的重要内容,信息安全工作是企业信息化建设的基础和保障,直接关系到企业安全和发展。

2、网页挂马、SQL注入攻击和XSS跨站攻击已经成为木马、病毒传播的主要途径之一。由于各种系统漏洞和软件漏洞的存在,因此通过挂马进行入侵的数量会继续增加。同时黑客通过SQL注入攻击或XSS跨站脚本攻击等手法入侵网站系统,从而篡改网站网页或数据库的内容,甚至植入各种各样的下载脚本代码。用户只要浏览被植入木马的网站,如果系统存在漏洞就会遭遇木马入侵,从而造成个人信息泄漏和财产损失。

3、著名的信息技术研究和分析公司Gartner统计,近些年来,超过70%的攻击都来自于Web攻击;CNCERT 2016年7月中国互联网网络安全报告显示,2015年境内被篡改网站较2014年增加10%。一系列的数据显示,传统的Web安全防护与监测已经难以应对当前形势,Web安全的常态化监测、预警与态势分析已经是Web安全的当务之急。

4、面对大规模的网站安全监测工作,仍然依靠传统单机安全检测工具或者管理员手工检测管理网站几乎是不可想象的,不仅消耗了大量人力物力,而且检测的实效性和全面性都很低。虽然可以通过部署入侵防御系统、高性能防火墙等相关防御类产品来起到一定的防御效果,但是用户难以及时的发现风险隐患,并预防这些安全事件。除此之外,管理员需要维护大量的安全设备,分析众多日志信息,这些带来的额外工作量不可小视。在目前网页篡改、网页挂马和SQL注入攻击日益严重的现状下,将面临着很大的挑战。



技术实现要素:

本发明的目的就是为了解决上述问题,提供一种适应于电力行业的网站监控系统及方法,本发明利用现有的服务器,对众多的电力业务系统,设计了基于云计算技术的集群检测工具,采用先进的Map/Reduce模型来实现存储技术,实现数据存储的集群式,可以使数据在各个检测节点间共享,同时将所有数据汇聚到管理中心,进行数据挖掘、关联分析、统计分析和趋势分析等计算,并最终通过饼图、折线图、柱状图等图表进行展示。这样的操作,能够极大 提高检测效率和检测时间,同时可以更直观的发现网站安全趋势,获取安全事件对公司网站的运营影响等。

为了实现上述目的,本发明采用如下技术方案:

一种适应于电力行业的网站监控系统,包括:交互层、数据层、调度层、检测引擎;

交互层,用于与用户进行交互;

数据层,用于存储用户资料、检测数据、配置数据以及配置文件;

调度层,用于调度检测引擎对用户下达的任务进行周期性自动化检测,并且在检测结束后,将检测结果汇总至数据层;

检测引擎,用于接受调度层下达的检测命令,对目标网站进行检测,识别Web安全漏洞,对网站进行深度安全体检;同时实时监测网站运行的安全状态,识别网页非法篡改、网页被嵌入恶意代码、域名被劫持、访问页面被拒绝和网页中出现敏感信息;并利用漏洞扫描设备和漏洞检测工具,到现场采集内网安全信息,排查漏洞隐患和深层安全事件,采集网站安全体检结果、网站运行安全状态和现场安全检查结果,并传送到数据库中进行保存。

配置文件包含定义系统加载所需环境的设置和文件的集合。

所述交互层包括:用户界面UI展示层和数据处理层;

用户界面UI展示层,用于与用户交互,用户操作请求通过用户界面UI展示层向后端传递,并且接收后端传递数据,通过绘制图表等方式展现给用户;

数据处理层,用于接收用户前端传递数据进行各类逻辑处理,并且操作数据库进行存储、查询、修改、删除操作。

所述交互层包括:权限控制模块、网站发现模块、检测任务添加模块、各类数据查看模块、API接口、设置模块、用户管理模块、日志管理模块、关键词管理模块和其他外部服务模块。

所述权限控制模块,用于根据设置的安全规则或者安全策略,限制用户访问的权限,限制用户只能访问自己被授权的资源;

从用户访问的权限将用户分为:root用户、超级用户(系统管理员)、普通用户。

root用户具有最高权限,可以添加和删除超级用户和普通用户,拥有系统管理和应用管理的权限;root用户具有超级用户和普通用户的所有权限,root用户不能被删除;

超级用户可以添加和删除普通用户,拥有系统管理和应用管理的权限;超级用户需要为添加的用户进行分组;

普通用户拥有应用管理的权限;普通用户具有添加检测任务,查看日志等权限。

所述网站发现模块,用于使用扫描技术对目标网站进行分析、扫描探测、服务查点、扫描对方漏洞和查找目标网站的IP地址;

所述检测任务添加模块,用于供用户添加检测任务;

所述各类数据查看模块,用于供用户查看各类数据信息,包括检测任务和检测结果;

所述API接口,是一组定义、程序及协议的集合,用于实现计算机软件之间的相互通信,API接口还可以作为二次开发使用;

所述设置模块,用于实现用户管理、日志管理、关键词管理以及提供其他外部服务;

所述用户管理模块,用于负责用户的添加、修改、删除操作;

所述日志管理模块,用于记录用户已执行的网站检测任务;

所述关键词管理模块,用于存储敏感关键词。

所述网站发现模块,还分别与Memcache数据库和网站发现扫描引擎连接;

所述Memcache数据库,用于存放加密狗信息;

所述网站发现扫描引擎,用于接收用户下达的检测指令,对网站进行检测,检测完毕后,将检测结果存入MongoDB数据库。

所述其他外部服务模块,包括:远程维护服务单元、备份服务单元、SNMP服务单元、集群服务单元、SSH服务单元、升级服务单元、邮件服务单元、短信接口单元和二次开发接口。

所述远程维护服务单元,通过开启远程服务端口实现远程维护服务。例如开启3389端口可采用远程连接来维护系统服务器。

所述备份服务单元,用于采用手工或者自动方式定期备份数据。

所述SNMP服务单元,用于从网络上的软硬件设备中收集网络管理信息,将信息呈现给系统网络管理员查看。

所述集群服务单元,用于对服务器做出优化,使检测程序充分利用所有资源。

所述SSH服务单元,用于为远程登录会话和其他网络服务提供安全性的协议,利用SSH协议防止远程维护过程中的信息泄露问题。所述其他网络服务包括FTP、POP、PPP;

所述升级服务单元,用于网站监控系统后期版本升级。

所述邮件服务单元,用于提供邮件服务,当监测到网站异常或发现高危安全事件后,将立即发邮件给任务对应的管理员或操作员。

所述短信接口单元,用于提供短信服务,当监测到网站异常或发现高危安全事件后,将立即发短信给任务对应的管理员或操作员。

所述二次开发接口,用于网站监控系统后期进行二次开发使用。

所述数据层包括:MongoDB数据库、MySQL数据库和其他系统配置文件;

所述MongoDB数据库,用于存储发现的网站、添加的检测任务、数据查看任务以及检测信息;

所述MySQL数据库,用于存储用户信息、系统日志以及关键词信息;

所述其他系统配置文件,包括:用户登录时定义系统加载所需环境的设置和文件的集合。

所述调度层,包括:任务分发模块、任务获取模块、Redis数据库和work子进程;

所述任务分发模块,任务分发进程taskd轮询MongoDB数据库,从MongoDB数据库中获取任务组信息。根据任务组的预约检测时间、检测优先级及检测周期判断目标网站任务是否需要调度,达到检测周期后会生成单次检测任务实例,并拆分成单个网站检测实例存入Redis数据库。

所述任务获取模块,任务获取进程jobd定期从Redis数据库中获取单个网站检测实例,创建work子进程。

所述Redis数据库,用于存放任务队列供调度组件使用网站。

所述work子进程,由任务获取模块(jobd)创建用于检测的子进程。

对任务中的每个扫描模块,创建一个新的子进程来处理。并对调度层检测的任务进行统计,对检测到的异常或者安全事件发出告警。

所述work子进程,包括:统计组件单元和告警单元;

所述统计组件单元,用于对调度组件检测的任务进行统计。

所述告警单元,用于对检测到的异常或者安全事件发出告警。

所述检测引擎,负责接受调度层下达的检测命令,对目标网站进行检测。包括:配置文件、可用性探测模块、安全事件及漏洞检测模块、网页变更检测模块、网站信息获取模块和安全事件及漏洞检测结果存储文件;

所述配置文件,用于存储用户登录时定义系统加载所需环境的设置和文件的集合。

所述可用性探测模块,用于探测目标网站是否存活、响应时间、域名是否被劫持。

所述安全事件及漏洞检测模块,用于检测安全事件中的网页挂马、暗链、关键词,及所有的漏洞。安全事件及漏洞检测是分开调度的,采用不同的深度、URL数上限。

所述网页变更检测模块,用于监测目标网站的网页变更情况,以防出现遗漏的网页篡改事件。

所述网站信息获取模块,用于探测网站标题、Web容器等信息。

所述漏洞检测结果存储文件,用于存储漏洞检测结果。

一种适应于电力行业的网站监控方法,包括:

步骤(1):接收检测配置信息,并将检测配置信息存储到MongoDB数据库中;

步骤(2):包括如下三个并列步骤:

步骤(2-1):对目标网站进行分析、扫描探测、服务查点、漏洞扫描,查找目标网站IP地址,进而发现要监控的网站;将检测结果存储到MongoDB数据库;检测结果包括SQL注入、XSS、网页挂马、暗链、敏感信息泄露的网站信息;

步骤(2-2):采用漏洞扫描工具对网站进行扫描检测,实时监控检测结果;根据需求,利用API接口进行二次开发,完善监控功能;将任务配置信息存储到MongoDB数据库;

步骤(2-3):将用户信息、系统日志以及关键词信息存储到MySQL数据库;

步骤(3):任务分发模块每间隔设定时间就从MongoDB数据库中获取任务信息,将获取的任务信息存储到Redis数据库中;

步骤(4):任务获取模块从Redis数据库中获取任务信息并创建第一work子进程、第二work子进程、第三work子进程和第四work子进程;每个子进程执行不同的任务,从而实现对网站的监控;

步骤(5):告警组件每间隔设定时间就从MongoDB数据库中获取信息,发现异常就进行告警。

所述第一work子进程,用于对目标网站的可用性进行探测,所述可用性包括网站是否存活、响应时间以及域名是否被劫持;将探测结果存储到MongoDB数据库;

所述第二work子进程,用于获取网站信息,所述网站信息包括网站标题和WEB容器;

所述第三work子进程,用于对网页变更与否进行检测;将检测结果存储到MongoDB数据库;

所述第四work子进程,用于对安全事件及漏洞进行检测,生成检测结果文件,所述安全事件包括:SQL注入、XSS、网页挂马、暗链和敏感关键词。

所述步骤(5)的告警分为手动告警和自动告警;

所述手动告警:网站列表接收外界对网站的选择指令和网站安全现状信息,通过邮件告警的方式将告警信息发送出去;

所述自动告警:检测到网站可用性异常或发现高危安全事件后,通过邮件或短信的方式将告警信息发送出去。

步骤(4)中,SQL注入检测插件工作步骤如下:

步骤(4a-1):发送URL请求:将SQL参数加载到页面请求的查询字符串中,采用GET、POST或Cookie方式发送URL请求;

步骤(4a-2):页面响应:根据提交的SQL参数,页面做出相应的回应;

步骤(4a-3):判断SQL参数是否可以SQL注入;若可以就获取数据库有效载荷payload信息,利用数据库服务端SQL分析引擎进行分析,获取网站对应的敏感数据,检测结束,若不可以就进入步骤(4a-4);所述敏感数据包括后台数据库信息,用户信息,表结构信息;

步骤(4a-4):判断payload是否把会导致SQL注入的所有情况都全部尝试进行检测,若是就检测结束,若否就测试不同的payload,返回步骤(4a-1)。

步骤(4)中,SQL注入普通模式盲注检测工作步骤如下:

步骤(4b-1):请求原始页面:将SQL参数加载到页面请求的查询字符串中,采用GET、POST或Cookie方式发送URL请求;

步骤(4b-2):判断页面是否动态变化,若是就设定基准HTML,然后进入步骤(4b-3),若否就直接进入步骤(4b-3);

设定基准HTML根据具体网站页面,具体问题具体分析。举例来说:HTML 5<base>规定页面中所有链接的基准URL方法如下:

HTML5的<base>标签为文档中的所有相对链接指定一个基准URL,一般情况下,浏览器会从当前文档的URL中提取相应的元素来填写相对的URL。一旦使用了<base>标签,浏览器将不再使用当前文档的URL,而是使用指定的基准URL来解析所有的相对URL。<base>标签必须位于<head>标签内部。

HTML 5<base>标签设定基准HTML举例如下:

假设pic图像的绝对地址是:<img src="http://www.169it.com.cn/i/pic.GIF"/>

现在我们在页面中的head部分插入<base>标签,规定页面中所有链接的基准URL:

<head>

<base href="http://www.169it.com.cn/i/"/>

</head>

在此例中的页面上插入图像时,我们必须规定相对的地址,浏览器会寻找文件所使用的完整URL:

<img src="pic.GIF"/>

步骤(4b-3):判断SQL参数是否动态可变,若是就尝试注入特殊字符,使数据库报错以识别数据库类型或者版本信息;进入步骤(4b-4);若否就结束;所述特殊字符包括下划线、单引号、百分号或方括号等。

步骤(4b-4):判断是否报错,若是就利用后台规则识别数据库类型或者版本;尝试进行payload匹配,进入步骤(4b-5);若否就根据整数类型、字符串类型以及搜索类型依次判断是否存在SQL注入,尝试进行payload匹配,进入步骤(4b-5);所述后台规则包括:用语句查询当前数据库(--current-db)或查询数据库版本信息(--version);

步骤(4b-5):根据整数类型、字符串类型以及搜索类型判断是否匹配成功,若否就进入专家检测模式流程,即采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试,结束;若是就进行逻辑为真(and1=1)判断,将响应页面与原始页面对比,判断是否相同;若不相同就结束,若页面相同则接着进行逻辑为假(and 1=2)判断,将响应页面与原始页面对比,进入步骤(4b-6);

步骤(4b-6):进行逻辑为假(and 1=2)判断,判断响应页面和原始页面是否相同,若是就结束,若否就进行逻辑为真(and 1=1)判断,将响应页面与原始页面对比,进入步骤(4b-7);

步骤(4b-7):进行逻辑为真(and 1=1)判断,判断响应页面和原始页面是否相同,若否就结束,若是就确认漏洞存在,进入尝试获取数据库信息阶段,获取数据库敏感信息。所述数据库敏感信息包括数据库名称、数据库表名和表信息;

步骤(4)中,XSS检测工作步骤如下:

步骤(4c-1):发送URL请求:发送GET/POST或Headers请求,得到页面资源;

步骤(4c-2):判断页面是否因网络原因造成故障,若是就返回步骤(4c-1);若否就向待测参数提交正常测试字符串,进入步骤(4c-3);

步骤(4c-3):判断返回页面中是否可以检测到参数值,若是就定位参数在页面DOM结构的位置,根据上下文环境加载XSS攻击载荷,进入步骤(4c-4);若否就结束;

步骤(4c-4):XSS分析引擎判断返回页面是否存在XSS攻击载荷,若是就确定XSS漏洞,结束,若否就进入步骤(4c-5);

步骤(4c-5):判断是否需要提交变形代码,若是就提交变形测试代码,若否就结束。所述变形代码包括:将部分小写变换为大写、填入空白字符;所述空白字符包括:空格、制表符和换行符。

步骤(4)中,网页挂马检测工作步骤如下:

步骤(4d-1):判断URL自身是否在黑名单内;

步骤(4d-2):网页内嵌的链接是否在黑名单内。

步骤(4)中,暗链检测工作步骤如下:

步骤(4e-1):接收爬虫传入URL及HTML信息;

步骤(4e-2):脚本解析:对网页源代码模拟执行脚本代码;

步骤(4e-3):HTML解析:将利用js脚本动态输出的HTML,归并到HTML代码中。

步骤(4e-4):对隐藏区域检测:包括对HTML隐藏特征检测、脚本隐藏特征检测及CSS隐藏特征检测;

步骤(4e-5):对带有隐藏属性的代码块进行结构检测;若有暗链代码块则进入步骤(4e-6),有可疑代码块则进入步骤(4e-7);

步骤(4e-6):对暗链代码块进行分析,判断暗链代码块是文字还是链接;如果是文字进入步骤(4e-9),如果是链接进入步骤(4e-10);

步骤(4e-7):将可疑代码块与特征检测模块词进行对比分析,再次与暗链代码块对比,循环比较判断;进入步骤(4e-8);

步骤(4e-8):特征检查模块;由用户设置特征词,特征词包含用户关心的敏感词;进入步骤(4e-6);

步骤(4e-9):分词模块对暗链代码块中的文字进行分词;从而生成暗链关键词库;根据特征词生成暗链词汇库;进入步骤(4e-8),若循环比较结束,则进入步骤(4e-10);

步骤(4e-10):暗链链接库与暗链词汇库对比分析,输出暗链链接或关键词。

本发明的有益效果:

1、通过拟采用先进的Map/Reduce模型来实现存储技术,实现数据存储的集群式,可以使数据在各个检测节点间共享,提高数据存储与处理效率。

2、远程监测引擎能够实现常态化的安全监控,来发现潜在的安全风险,并通知相应单位进行整改,减少由此带来的不良影响或危害。

3、通过网站监控系统,将网站上存在的安全事件用饼图、折线图、柱状图等图表进行展示,直观方便。

4、通过网站监控系统,能够极大提高检测效率和检测时间,同时可以更直观的发现网站安全趋势,获取安全事件对公司网站的运营影响等。

5、对于监控范围广、网页数量多、监测规模大的用户来说,采用一台控制服务器,多台检测引擎的集群部署模式,可大幅度提升监测能力,并且可通过控制服务器实现简便的统一管理。

附图说明

图1为网站监控系统体系架构图;

图2为网站监控系统网络设备部署图;

图3为网站监控系统总体设计系统架构图;

图4为网站监控系统详细架构图;

图5为网站监控系统运行流程图;

图6为网站监控系统任务调度工作流程图;

图7为网站监控系统提醒及告警分类图;

图8为SQL注入检测插件工作流程图;

图9为SQL注入普通模式盲注检测工作流程图;

图10为XSS检测工作流程图;

图11为暗链检测流程图;

图12为暗链检测的具体详细流程图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

如图1所示,一种适应于电力行业的网站监控系统,包括数据采集模块、数据分析模块和数据处理模块。各模块之间采用加密通讯,确保传输安全,系统日志数据逐级上传,管理数据逐级下发。

数据采集模块,通过网站发现扫描引擎识别Web安全漏洞对网站进行深度安全体检;同时实时监测网站运行的安全状态识别网页非法篡改,网页被嵌入恶意代码、域名被劫持、访问页面被拒绝、网页中出现敏感信息等安全事件;并利用漏洞扫描设备和工具包检测,到现场采集内网安全信息,排查漏洞隐患和深层安全事件。系统将采集的网站安全体检结果、网站运行安全状态和现场安全检查结果传送到数据库保存。

远程监测引擎能够实现常态化的安全监控,来发现潜在的安全风险,并通知相应单位进行整改。一旦网络上爆发零日漏洞等高危安全漏洞,系统即可及时探查到目标应用系统是否存在相应漏洞、存在被攻破的风险,并及时进行预警。另一方面,能及时发现攻击行为造成的后果如网页篡改、挂马、暗链等事件,并立即通知目标单位进行整改,减少由此带来的不良影响或危害。

为实现对电力系统领域众多网站、主动进行自动化的远程扫描检测,依靠单台检测引擎难以达到相应的性能,因此系统采用了分布式任务调度机制。分布式任务调度由集群调度模 块及监测引擎功能模块组成。集群调度模块负责统一定时下发监测任务并收集监测结果,监测引擎负责接收监测任务并进行相应的网页篡改、网页挂马等检测。分布式任务调度的底层技术涉及分布式任务队列、分布式数据库,拟分别采用国际开源软件redis、mongodb来实现。

远程监测引擎采用远程爬虫技术来实现网页篡改、挂马、暗链等的监测,无需在目标网站服务器上部署任何设备或软件。监测时,爬虫模块通过模拟正常网页访问请求来抓取目标网站的内容,并将采集到的数据交由网页篡改、网页挂马等检测模块来进行进一步的分析处理。

攻击者入侵网站后最常见的攻击手段是网页篡改,在网站上加入反动、低俗信息。网页篡改将给网站带来极为严重的影响。网页变更检测的主要目标是监测目标网站的网页变更情况,及时发现网页篡改事件。但攻击者篡改网页后也可能只是对网页进行其他修改,例如替换文字、图片等。系统拟采用爬虫技术,通过监测目标网站的网页是否有变化来实现。变更监控级别分为四个:轻度变更,中度变更,高度变更,确认篡改。监控级别的标准是比较相似度,即与源文件是否一样,如果相似度越高,则变更级别越低。

网页挂马是网站篡改后的常见症状,一旦网站被挂马,将给网站造成极大的不良影响。挂马检测功能模块应能够使用静态检测和动态行为检测两种检测技术检测功能,从而提高检测的准确度。

当进行定期安全评估,或当网站发现安全风险、需进一步深入内网进行安全检查时,系统可以生成任务工单派发给相应系统运维人员。运维人员收到检查工单后,携带漏洞扫描设备到现场采集内网安全漏洞信息,并将采集到的结果上传到内网信息收集接口、并通过光闸传递到分析平台进行进一步的分析处理。系统将采集的网站安全体检结果、网站运行安全状态和现场安全检查结果传送到数据库保存。现场漏洞扫描设备一方面能够录入内网的IP、服务器类型、数量、编号等资产信息,另一方面采用标准的网络漏洞扫描器,对内网资产进行网络漏洞方面的安全检查。内网检查工具可兼容多种网络漏洞扫描器,检查时可根据实际情况进行选择。

数据分析模块,对数据库中的安全数据进行分析,以网站为单位,输出该网站当前的漏洞存在情况,将漏洞和安全事件划分等级进行统计,并将此结果与漏洞库进行比对。对符合安全风险定义的日志,触发系统的告警规则,生成告警,并由人工对告警进行研判,从而生成安全事件,并将安全事件生成安全任务指派到网站管理员进行处置,对处置结果在系统中进行反馈,从而完成对安全事件的全生命周期的流程管理。由于需处理的数据量较大、对性能要求高,拟采用分布式数据库进行分布式存储、并行计算;同时采用基于内存的分布式任 务队列,以满足大量任务顺序执行处理的需求。

数据处理模块,从数据库获取信息,通过展示策略完成多样化的展示输出。输出包括安全事件实时监视、事件地图输出、统计报表输出及平台配置、知识管理、用户管理等操作界面。数据处理模块主要是基于数据分析模块输出的数据进行进一步展示,是直接与用户交互的,通常采用饼图、折线图、柱状图等图表进行展示。系统拟采用B/S架构,提供基于浏览器的交互展现接口。

网站监控系统整个处理过程步骤如下:

步骤一:通过对资产的监控任务的设置,使用分布式的任务分发、调度机制,控制监测引擎对被监测的资产进行周期性或指定性的检查。

步骤二:通过远程监测引擎识别Web安全漏洞对网站进行深度安全体检,实时监测网站运行的安全状态,识别网页非法篡改,网页被嵌入恶意代码、域名被劫持、访问页面被拒绝、网页中出现敏感信息等安全事件。

步骤三:在系统现场利用漏洞扫描设备和工具包检测,采集内网安全信息。将采集的网站安全体检结果、网站运行安全状态和现场安全检查结果传送到数据库保存。

步骤四:对采集的数据进行自动的归一化,并与相关数据,如现场检查数据、历史数据、不同来源的数据等进行关联分析,形成有机、一致的数据整体,排除无效数据的干扰。

步骤五:输出该网站当前的漏洞存在情况,将漏洞和安全事件划分等级进行统计,并将此结果与漏洞库进行比对。

步骤六:对符合安全风险定义的日志,触发系统的告警规则,生成告警,并结合隐患漏洞库、解决方案库进行人工审验和评判,并给出评判意见,生成安全事件报告。

步骤七:将安全事件生成安全任务指派到网站管理员进行处置,对处置结果在系统中进行反馈,从而完成对安全事件的全生命周期的流程管理。

步骤八:从数据库获取信息,根据用户需要展示的数据形态,如饼图、折线图、柱状图等图表进行展示,完成多样化的展示输出。

如图2所示,对于监控范围广、网页数量多、监测规模大的用户来说,可采用一台控制服务器,多台检测引擎的集群部署模式,使用该部署模式,可大幅度提升监测能力,并且可通过控制服务器实现简便的统一管理。

网站监控系统架构如图3所示:

网站监控系统支持集群部署。集群部署下涉及的组件有:

(1)、调度引擎:集群模式下单独部署;

(2)、检测引擎:集群模式下单独部署;

(3)、存储引擎:默认与用户界面UI控制节点共同部署。

网站监控系统采用交互层、数据层、调度层和检测引擎四层架构体系。而交互层可以拆分为用户界面UI展示层和数据处理层两部分,其中UI展示层直接与用户进行交互,数据处理层对用户来说是透明的。

UI展示层:主要功能是与用户交互,用户操作请求通过该层向后端传递,并且接收后端传递数据,通过绘制图表等方式展现给用户。

数据处理层:接收用户前端传递数据进行各类逻辑处理,并且操作数据库进行存储、查询、修改、删除等操作。

数据层:主要包括存储用户资料、检测数据、配置的数据库等;以及一些系统配置文件。

调度层:负责调度检测引擎对用户下达的任务进行周期性自动化检测,并且在检测结束后处理检测结果汇总至数据库层。

检测引擎:负责接受调度层下达的检测命令,对目标网站进行检测。

如图4所示,1、对网站监控系统详细架构图中部分功能说明如下:

(1)用户只和交互层进行交互,所有UI功能均受用户使用身份权限控制。

(2)按前台功能划分:网站发现、检测任务添加、数据查看等功能主要使用MongoDB进行数据存储;而系统管理设置中的用户管理、日志管理、关键词管理等部分则使用MySQL数据库存储数据。

(3)网站发现扫描引擎不受调度控制,为独立模块。当用户通过交互层下达指令后直接启用该模块,当检测完毕后,该模块会将结果写入MongoDB数据库。

(4)添加网站等操作通过API封装与MongoDB进行交互。API还可作为二次开发使用。

变更检测引擎与MongoDB直接进行交互,将结果直接写入MongoDB而不是生成检测结果文件。可用性、网站信息获取以函数方式调用,而非直接创建子进程。

2、网站监控系统数据模型

数据库主要采用MySQL、MongoDB、Redis以及Memcache。

MongoDB为主要数据库,存储各类任务以及检测信息等;

MySQL用于存储用户信息、系统日志以及关键词信息;

Redis用于存放任务队列供调度组件使用;

Memcache目前用于存放加密狗信息。

以添加网站一线流程进行分析,展示网站监控系统完整运行流程如图5所示。

网络监控系统模块详细技术原理如下:

1、任务调度

任务调度在前台划分了不同检测周期,更贴合实际使用场景。

任务调度:程序通过用户在UI中设置的配置信息自动对目标网站进行监控与检测。

术语解释:

Redis高效内存队列:高性能的key-value数据库,支持丰富的value类型,包括字符串、列表、集合与有序集合。数据缓存在内存中,支持分布式任务操作。基于Redis的任务调度模块能够方便且高效地进行任务分布式调度。

taskd:运行在调度节点上,负责处理用户下达的任务并将其实例化形成任务检测队列。任务指用户通过UI添加网站下达的监测任务,监测任务中对应着监测模块,一个任务可分为可用性、安全事件、漏洞三个监测模块。

jobd:运行在扫描节点上,负责接收和处理实例化的检测任务并调动相应后台程序。

worker:由jobd创建用于检测的进程,针对系统中的每个扫描模块,worker创建一个新进程来处理。任务调度工作流程,如图6所示。

2、提醒及告警

网站监控系统中,提醒及告警分为两类:手动告警和自动告警。如图7所示。

手动告警:操作员可在网站列表,选中指定网站后将网站安全现状通过邮件告警的方式发送给相应的网站管理员。每个网站可单独配置接收告警邮件的用户名、邮箱。

自动告警:监测到网站可用性异常或发现高危安全事件后,将立即发邮件或短信给任务对应的管理员或操作员。提醒方式可在系统管理中统一配置,也可为每个任务单独配置。

3、检测模块

系统的检测功能模块主要分为四部分:可用性探测模块、安全事件及漏洞检测模块、网页变更检测模块、网站信息获取模块。

可用性探测模块:探测目标网站是否存活、响应时间、域名是否被劫持。

安全事件及漏洞检测模块:安全事件中的网页挂马、暗链、关键词,及所有的漏洞检测功能都由A3(appscan)实现。安全事件及漏洞检测是分开调度的,采用不同的深度、URL数上限。

网页变更检测模块,用于监测目标网站的网页变更情况,以防出现遗漏的网页篡改事件。

网站信息获取模块:探测网站标题、Web容器等信息。可设置成将每个网站每天探测一 次。

下面就常见的SQL注入、XSS、挂马、暗链等检测过程作如下详细介绍。

(1)SQL注入

SQL注入检测插件工作流程图:如图8所示。

SQL注入检测模块流程说明:

1)SQL注入检测模块向爬虫传递的参数插入测试代码,尝试根据页面响应判断注入是否存在或者继续尝试其他的测试代码。

2)当确认SQL注入存在时则进入下一步验证阶段,否则当所有payload测试完毕后退出检测。

3)根据目标数据库类型使用不同的攻击Payload获取目标网站的数据库信息,例如数据库名称、表结构、数据库用户名及密码信息,对于某些权限较大的数据库用户(例如:root、sa、sys用户)甚至能执行提权后执行任意命令。

SQL注入普通模式是基于盲注检测的页面相似度算法,对有漏洞的参数进行检测的,具体原理如图9所示。

流程说明:

1)检测开始,检测模块会先对页面请求2次,判断页面是否有动态变化部分。若有动态变化,则会设置基准HTML。

2)检测参数是否动态可变,尝试输入其他值,查看页面响应判断参数是否可变。若参数不可变则直接退出检测。

3)尝试注入特殊符号使数据库报错,根据后台规则依照报错信息对数据库类型或者版本进行识别。若识别成功,则根据数据库版本加载特定payload,可提高检测效率。

4)尝试多种payload进行匹配,例如:

整数型:and 1=1及and 1=2

字符串型:and‘a’=’a及and‘a’=’b

搜索型:%’and‘a’=’a’and‘%’=’

(注:以上为示例,非实际测试代码。)

5)若匹配均不成功,则根据用户配置选择是否使用专家模式进行扫描,即采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试。匹配成功则开始进行逻辑判断检测。

6)首先进行逻辑为真的请求判断(and 1=1),将响应页面与原页面进行对比,若对比结 果不同则直接结束检测。

7)而后进行逻辑为假的请求判断(and 1=2),将响应页面与原页面进行对比,若对比结果相同则直接结束检测。

8)再一次进行逻辑为真的请求判断(and 1=1,此步骤可增加检测准确度),将响应页面与原页面进行对比,若对比结果不同则直接结束检测。

9)确认漏洞存在后会根据用户配置加载获取数据库信息模块,对漏洞进行验证利用,尝试获取数据库敏感信息。

所有请求在遇到网络超时情况下会重复发送至多3次,若仍未结果则直接结束检测。

SQL注入检测支持的数据库有:MS SQL,MS Access,MySQL,DB2,Oracle,Postgresql,firebird,maxdb,infomix,sybase等十余种。

(2)XSS检测

XSS检测插件工作流程图,如图10所示。

XSS检测流程说明:

1)目标URL,如:http://www.test.com/t.php?news=china&id=1,参数为news=china&id=1,根据参数生成随机的定位字符串(字母组合),最终为news=chinaazxsdb&id=1adwsdss;

2)发送GET/POST或Headers请求,得到页面资源(HTML内容);

3)如果页面请求错误,则重新针对特定参数进行定位;

4)定位随机串在页面资源的DOM结构位置,比如在<script></script>内、在<input>标签属性内等;

5)根据定位到的位置生成特定的攻击代码,提高攻击的准确度,并能减少不相关的攻击请求;

6)根据特定的攻击代码再次生成“XSS攻击载体”;

7)发送GET/POST或Headers请求,得到XSS攻击后的页面资源(HTML内容);

8)XSS分析引擎判断是否存在攻击代码,存在则认为有XSS漏洞;

9)如果不存在,则判断是否需要提交变形攻击代码,再次生成“XSS攻击载体”。

(3)网站信息获取模块

网站信息获取模块用于获取网站标题、开放端口等信息。开放端口及服务采用了nmap的检测规则。

一个任务被添加后,系统会立即获取任务组网站的网站信息。可设置为系统每天获取一次网站信息。

(4)挂马检测

挂马检测默认只基于云端库来确认目标网页是否存在挂马现象。检测策略如下:

1)判断URL自身是否在黑名单内(已被挂马的网站);

2)网页内嵌的链接是否在黑名单内(被植入挂马网页)。

(5)暗链检测

暗链是指未经网站管理员授权的情况下,在其他网站恶意嵌入隐藏的链接,链接指向需要搜索引擎优化SEO的目标网站,这些链接就叫暗链,是一种恶意欺骗搜索引擎的SEO作弊行为。黑客攻击目标网站后最常见的篡改网页行为之一就是植入暗链。

暗链检测算法:暗链检测模块接收爬虫传入的url及html信息,经过html解析、静态特征检测、黑名单匹配及白名单过滤,来判断目标网页是否有被植入恶意的隐藏链接。如图11所示。

如图12所示,暗链检测的具体流程如下:

1)脚本代码处理

将利用js脚本动态输出的HTML,归并到HTML代码中。

2)查找隐藏标签

第一,查找带有隐藏特征的标签,隐藏特征包括但不限于style属性值;

第二,查找width/height小于10的marquee标签;

第三,查找带有隐藏特征的脚本,并根据id/class反查标签。如以下这种隐藏特征:

document.getElementById(“mark_id”).style.display=“none”

document.getElementById(“mark_id”).style.visibility=“hidden”

第四,查找带有隐藏特征的CSS,并根据id/class反查标签。

隐藏特征诸如:top/bottom/left/right值为负数,display:none,visibility:hidden。

3)根据隐藏标签查找闭合的标签,获取隐藏的区域,并对隐藏区域进行检查。

a、外域链接检查

获取区域内所有链接,并解析出根域名,判断根域名是否与所要检查的网站一致,不一致则判定为外域链接,若该区域存在外域链接则进入下一步检查,否则抛弃。

b、外域链接比例检查

如果外域链接比例超过60%,则判定该区域可疑,进行下一步检测,否则抛弃。

c、区域结构检查

获取区域内所有标签的数目,获取区域内所有超链接数目,若链接数目占所有标签数目 的45%以上,则区域被判定为暗链区域,否则为可疑。

d、特征检查

根据暗链特征库(关键词、链接)检查区域中是否存在暗链特征词或暗链链接,若存在则判定为暗链区域,否则为可疑。

(6)网页变更检测

网页变更检测作为安全事件的辅助检测功能,主要目标是监测目标网站的网页变更情况,以防出现遗漏的网页篡改事件。

网站监控系统中,暗链、挂马、敏感关键词一般都是网页被篡改后的表现。但攻击者篡改网页后也可能只是对网页进行其他修改,例如替换文字、图片等。

由于网页变更检测就是监测目标网站的网页是否有变化,通常发现的大部分变更,都可能是网站的正常替换。

变更监控级别分为四个:轻度变更,中度变更,高度变更,确认篡改。

监控级别的标准是比较相似度,即与源文件是否一样。如果相似度越高,则变更级别越低。

如果选高度变更,有漏报可能,如果选低度变更,有误报可能。

选高度变更级别,则文件相似度低,有些轻微的改变可能发现不了,则容易漏报。

选轻度变更级别,则文件相似度高,轻微的改变会发现,则容易误报。

每次检测时会与前面的版本进行对比,文件相似度为100%意味着完全相同。文件相似度为20%,为高度变更;文件相似度为80%,为低度变更。这个相似度可以在程序中自行设置。

确认篡改,有两个条件:第一,文件相似度不是100%,第二,出现了被黑的关键字。例如:“友情检测”,“您的网站存在严重漏洞”,“黑客联盟”,“贵站存在安全隐患”,“贵站有漏洞”,“hacked by”,“被挂黑页”,“本站已被入侵”,“请及时修补”,“安全检测”,“请管理员修补”,“此站被黑”等等。这个关键字可以在程序中自行设置。

(7)域名劫持检测

域名劫持检测主要是基于用户自定义域名对应IP,以及网站监控系统域名劫持检测两种检测方式。当用户设定域名对应IP信息后,系统会根据用户设置进行检测。当发现域名对应IP信息有变化时进行域名劫持告警。当用户未设置任何域名对应IP信息时,将启用网站监控系统域名劫持检测,原理如下:

1)首先向国外一些不存在的域名服务器地址发起DNS查询(UDP方式)。

2)无响应,则正常;否则判定为网站监控系统所处网络环境下存在DNS污染。向本地DNS服务发起正常查询请求,若返回结果包含互联网服务提供商ISP的IP地址(基于ISP纠错域名库),则判定此域名被ISP劫持。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1