CN113259467A - 一种基于大数据的网页资产指纹标签识别与发现方法 - Google Patents
一种基于大数据的网页资产指纹标签识别与发现方法 Download PDFInfo
- Publication number
- CN113259467A CN113259467A CN202110611576.1A CN202110611576A CN113259467A CN 113259467 A CN113259467 A CN 113259467A CN 202110611576 A CN202110611576 A CN 202110611576A CN 113259467 A CN113259467 A CN 113259467A
- Authority
- CN
- China
- Prior art keywords
- data
- value
- asset
- meta
- fingerprint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种基于大数据的网页资产指纹标签识别与发现方法,属于数据信息传输技术领域,包括以下步骤:步骤S1,选择一个要扫描的目标IP;步骤S2,对目标IP进行扫描,确保目标IP存活;步骤S3,解析资产详情;步骤S4,解析网页资产;步骤S5,将步骤S3中的资产详情和步骤S4中的网页资产合并整理成资产数据集,并将资产数据集均存储在MySQL中和ElasticSearch中;步骤S6,通过Flume将ElasticSearch中存储的网页资产传输到HDFS中;步骤S7,利用Hive对Flume提取到HDFS的数据进行分析计算;步骤S8,将定义为新指纹标签的数据追加到MongoDB指纹标签库中。本方案考虑结合大数据技术对大量的资产数据进行梳理剖析,补充现有的资产指纹标签库,帮助企业和组织更全面更及时的对网页资产进行识别与管理。
Description
技术领域
本发明属于数据信息传输技术领域,具体涉及为一种基于大数据的网页资产指纹标签识别与发现方法。
背景技术
随着网络技术的发展与《网络安全法》等法律法规的出台,极大的推动了各行业网络安全的建设与重点系统资产管理工作的开展。目前,对于主机资产的管控手段相对健全,但对于网络资产(主机资产、网页资产等)的识别分析能力相对欠缺。
对于一个资产管理平台来讲网页资产是很重要的一部分,但由于网页指纹标签不够完善,使得一部分网页资产在处理时无法匹配到对应的网页指纹标签,导致这些匹配失败的网页资产不能服务于现有的资产管理平台。
因此,面对海量的网页资产时,企业和组织面临着以下难题:
1.处理海量的网页资产时,如何快速识别全量存活网页资产信息并进行有效利用;
2.如何在保证效率的前提下,准确的识别分析网页资产所带的所有标签信息,同时对初步识别不带有显著标签的网页资产信息进行二次有效分析;
3.如何在识别出新的指纹标签信息后,及时的对对应的指纹库进行统计补充。
因此,有必要针对上述难题进行改进,进而提出一种新的网页资产指纹标签识别与发现方法。
发明内容
针对上述提到的缺陷和不足,而提供种基于大数据的网页资产指纹标签识别与发现方法。
为了实现上述目的,本发明采取的技术方案如下。
一种基于大数据的网页资产指纹标签识别与发现方法,包括以下步骤:
步骤S1,选择一个要扫描的目标IP:
每次扫描需要制定一个扫描的目标IP;
步骤S2,对目标IP进行扫描,确保目标IP存活:
通过ping扫描,向目标IP发送ICMP信息报文,若目标IP回应ICMP报文,则判断目标IP存活;若无回应则判断目标IP下线,扫描结束;
判断目标IP存活后,对于存活的目标IP进行端口扫描,监听返回报文从而识别开放端口并获取开放端口回报的报文;
步骤S3,解析资产详情:
将从存活的目标IP处获取的开放端口回报的报文,与存放一系列已知报文所对应资产详情内容的文件进行正则匹配:若两者匹配成功,则获得资产详情,并等待步骤S5的存储;
步骤S4,解析网页资产:
识别并获取步骤S3中的资产详情中属于http或https的服务,进行http或者https请求,获取字段内容列表;
字段内容列表与该网页网址形成一个初步的网页资产;将字段内容列表与指纹标签库中的内容进行一个或多个指纹的正则匹配;若存在有匹配到的标签,则对该网页资产增加这个标签信息;
步骤S5,将步骤S3中的资产详情和步骤S4中的网页资产合并整理成资产数据集,并将资产数据集均存储在MySQL中和ElasticSearch中;MySQL作为资产管理平台的数据库得到了数据的更新;
步骤S6,通过Flume将ElasticSearch中存储的网页资产传输到HDFS中;
步骤S7,利用Hive对Flume提取到HDFS的数据进行分析计算;在当天网页资产提取到的数据中找出不存在于指纹标签库的数据,如果该数据重复出现的次数到达预定值,那么将这条数据定义为一个新指纹标签;
步骤S8,DataX将all_tables中当天的数据同步到MongoDB指纹标签库中,即,将定义为新指纹标签的数据追加到MongoDB指纹标签库中。
2.根据权利要求1所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S3中,资产详情包括但不限于:服务名称、服务产品名称、制造商、服务版本等信息。
具体的,步骤S4中,字段内容列表包括:响应头、响应头中的cookie内容、网页正文的meta内容、网页正文引用的script内容、网页加载的js使用的方法名。
具体的,步骤S6包括以下步骤:
步骤S6a,为该Flume进程设置一个拦截器,将网页资产中可以用来判断是否是新的指纹标签的字段提取出来,这类字段有headers、meta、scripts、js、title、cookies;
拦截器的清洗逻辑是对meta、scripts、title标签名使用正则表达式进行提取获得;对headers的提取是过滤通用header,保留剩余的header的key值和value值;对cookies的提取是通过分割headers中的set-cookie值而得;对js的提取是通过分析js文件提取方法名获得;
步骤S6b,然后利用Flume的多路复用功能将headers、meta、scripts、js、title、cookies六种字段分别发送到HDFS下
/webdata/headers、/webdata/meta、/webdata/scripts、/webdata/js、
/webdata/title和/webdata/cookies六个目录下。
具体的,步骤S7包括以下步骤:
步骤S7a,用Hive建六张分区表,分别是header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表;
这六张表存的是从当天网页资产中提取到的数据,每天都会向表中当天的分区写入当天的数据;
步骤S7b,用Hive建六张普通表,分别为header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表;
这六张表存的是已知的指纹标签中对应的字段名和字段值,每天都会从MongoDB指纹标签库中导出最新最全的指纹标签然后覆盖掉header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表之前所有的数据;
步骤S7c,用Hive建一张all_lables分区表,以天为分区,每个分区存储对比当天s7a和s7b步骤中对应表后被认为是新发现的指纹标签的数据;
步骤S7d,Hive分别到header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表对应的以下六个HDFS目录
/webdata/headers、/webdata/meta、/webdata/scripts、/webdata/js、
/webdata/title和/webdata/cookies中加载当天的数据,之后Hive会自动将加载到的数据映射到header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表六张表中;
步骤S7e,将header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表中当天分区导入的数据和header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表中已有的指纹标签去做对比,找出那些不存在于header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表的数据并给这些数据打上不存在的标记,该标记用N表示;被打上N标记的数据,表示此条数据是待验证的网页指纹标签。
步骤S7f,过滤出被打上N标记的数据,再按属性名、属性值分组去计数;如果一条数据重复出现的次数到达预定值,那么这条数据定义为一个新指纹标签;
步骤S7g,将新指纹标签的数据插入到all_tables表的当天分区中。
具体的,步骤S7a中,header_n表有header名、header值与标记值三个字段;标记值用来识别是否是已存在的header,如果已存在将该条header记录的标记值置为Y,如果不存在置为N;
meta_n表有meta名、meta值与标记值三个字段;标记值用来识别是否是已存在的meta,如果已存在将该条meta记录的标记值置为Y,如果不存在置为N;
script_n表有script值与标记值两个字段;标记值用来识别是否是已存在的script,如果已存在将该条script记录的标记值置为Y,如果不存在置为N;
js_n表有js值与标记值两个字段;标记值用来识别是否是已存在的js,如果已存在将该条js记录的标记值置为Y,如果不存在置为N;
title_n表有title值与标记值两个字段;标记值用来识别是否是已存在的title,如果已存在将该条title记录的标记值置为Y,如果不存在置为N;
cookie_n表有cookie名、cookie值与标记值三个字段;标记值用来识别是否是已存在的cookie,如果已存在将该条cookie记录的标记值置为Y,如果不存在置为N。
具体的,步骤S7b中,
header_y表有header名和header值两个字段;
meta_y表有meta名和meta值两个字段;
script_y表有script值一个字段;
js_y表有js值一个字段;
cookie_y表有cookie名和cookie值两个字段。
本方案考虑结合大数据技术对大量的资产数据进行梳理剖析,全面掌握端口、协议、域名、设备类型、型号、厂商、应用名称、版本、操作系统、WEB服务、应用组件、开发框架、脚本语言、CMS相关的网络资产信息并针对不同的资产信息打上对应的指纹标签,补充现有的资产指纹标签库,帮助企业和组织更全面更及时的对网页资产进行识别与管理,同时提供资产查找时的准确依据。
本发明的有益效果是:
1.通过资产引擎全量扫描所获取的网页资产,主要针对资产IP进行扫描,通过主机探活、端口扫描、端口服务识别三个步骤快速识别网页资产,以达到全量收集有效存活的网页资产信息目的。
2.支持资产管理平台的对接存储,并利用大数据技术建立拦截器,将网页资产中可以用来判断是否是新的指纹标签的字段提取出来,通过追加比对与定时更新的二次分析方式,更为准确有效的识别获取网页资产所带有的指纹标签信息。
3.对处理的指纹标签数据进行过滤,再按属性名、属性值分组去计数以达到阈值,达到阈值的设定为一个新的指纹标签信息并存入对应设定MongoDB指纹标签库,即及时对指纹库进行补充,以支持资产管理平台对于后续资产导入的匹配工作。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
对于一个资产管理平台来讲网页资产是很重要的一部分,但由于网页指纹标签不够完善,使得一部分网页资产在处理时无法匹配到对应的网页指纹标签,导致这些匹配失败的网页资产不能服务于现有的资产管理平台。从资产管理平台和数据本身价值两方面来看,需要一个丰富网页指纹标签的技术方案解决上述问题,从而更好的利用网页资产支撑资产管理平台。
本方案,将资产管理平台与大数据结合,利用大数据技术来补充完善网页指纹标签库的技术方案。该方案会对数据进行二次存储和分析计算,组件选择MySQL、MongoDB、ElasticSearch、Flume、Hive、HDFS、DataX、Azkaban。
相关名词的解释:
资产:本文所述资产指的是网络资产,即计算机(或通讯)网络中使用的各种设备。主要包括主机、网络设备(路由器、交换机等)和安全设备(防火墙等)。
资产引擎:该引擎是浙江御安信息技术有限公司在售的《火影-资产安全管理平台》所使用的资产扫描模块引擎,该引擎可用于获取资产信息,例如地理信息、开放端口信息、端口服务信息、网页资产的信息以及其标签信息等。该引擎的处理逻辑将会于步骤S1-S4中进行说明。
资产详情:将资产引擎获取的报文与已有的报文数据进行比对与识别,从而获取该端口服务的服务名,版本号等信息,该信息称为资产详情。
网页资产:通过一定的规则去识别资产详情中的http/https等,可用浏览器进行访问以获取更多信息例如网页标题、网页证书等,称作网页资产。
Header(s):标头(header)是以http协议传http资料到浏览器前所送出的字串。
请求头:用户传给服务器的header叫做请求头。
响应头:服务器传给用户的header叫做响应头。
Cookie(s):某些网页为了辨别用户身份,设置储存在用户本地终端上的数据。
Title:网页的标题,通过网页返回正文内容中的title标签所获取。
Meta:网页的元信息,通过网页返回正文内容中的meta标签所获取。
Script:网页所定义使用的脚本,通过网页返回正文内容中的script标签所获取。
Js:网页使用的脚本的正文内容。
标签:网页需要后台服务器、前端、各种小插件和应用才能形成,同时网页在被访问的时候有的字段会暴露服务器名称、前端使用的框架、小插件和其他应用等信息,这些信息可以与指纹匹配,匹配上的就可以形成一个标签。
指纹:使用包括且不限于响应头、响应头中的cookie内容、网页正文的meta内容、网页正文引用的script内容、网页加载的js使用的方法名等信息,正则匹配一个设定好的字段。每一条这种设定好的字段即称为一个指纹。例如存在设定好的指纹“Script”:“hm\\.baidu\\.com/hm\\.js”,若网页的Script匹配上该指纹,则表示该网页存在“百度广告”这个标签。
指纹标签库:存放一系列用于识别标签的指纹库称为指纹标签库。
资产管理平台:对指定网络范围内的网络资产进行实时监控管理的平台,用于管理网络范围内主机的运行状况、及时报告异常资产,供运维人员进行管理和维护。
MySQL:MySQL是一个关系型数据库管理系统,具有强事务性,可以帮助我们保持数据一致性。并且支持标准的SQL语言(结构化查询语言)可以使我们对数据库进行高效的增删改查。更多详情可以阅读官网https://www.mysql.com/。
MongoDB:MongoDB是一个介于关系数据库和非关系数据库之间的数据库,其基于分布式文件进行存储。数据格式为BSON格式,可以存储比较复杂的数据类型,同时MongoDB拥有强大的查询语言,可以满足我们单表查询数据的日常要求。更多详情可以阅读官网https://www.mongodb.com/。
ElasticSearch:ElasticSearch是一个高度可伸缩的全文搜索引擎。Elasticsearch可以帮助我们快速、实时地存储、搜索和分析大量数据,它通常作为互联网应用的内部搜索引擎,为需要复杂搜索功能的应用提供支持。更多详情可以阅读官网https://www.elastic.co/cn/elasticsearch/。
Flume:Flume是一款高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据。同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。更多详情可以阅读官网http://flume.apache.org/。
HDFS:HDFS(Hadoop Distributed File System)是一款高容错、高可靠、高吞吐的分布式文件系统。可以部署在廉价的硬件上扩展其存储能力,非常适用于海量数据的保存。更多详情可以阅读官网https://hadoop.apache.org/。
Hive:Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载。Hive的主要功能是将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,十分适合对数据仓库进行统计分析。更多详情可以阅读官网http://hive.apache.org/。
DataX:DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。更多详情可以阅读官网https://github.com/alibaba/DataX。
Azkaban:Azkaban是一款工作调度流系统,可以很好地组织起各任务单元的复杂执行计划。更多详情可以阅读官网https://azkaban.github.io/ 。
一种基于大数据的网页资产指纹标签识别与发现方法,包括以下步骤:
步骤S1,选择一个要扫描的目标IP:
每次扫描需要制定一个扫描的目标IP,这个目标IP是公网ipv4、ipv6或者ipv4网段,或者是内网中的ip或ip段。
步骤S2,对目标IP进行扫描,确保目标IP存活:
通过资产引擎对目标IP进行扫描,通过ping扫描,向目标IP发送ICMP信息报文,若目标IP回应ICMP报文,则判断目标IP存活;若无回应则判断目标IP下线,扫描结束。该流程称为主机探活,确保目标IP存活。
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递网络通不通、主机是否可达、路由是否可用等网络本身的消息。
判断目标IP存活后,对于存活的目标IP进行端口扫描:
选取存活的目标IP,使用TCP/IP协议栈构造每个端口的扫描包,通过抓包工具tcpdump监听返回报文从而识别开放端口并获取开放端口回报的报文。
步骤S3,解析资产详情:
将从存活的目标IP处获取的开放端口回报的报文,与存放一系列已知报文所对应资产详情内容的文件进行正则匹配:若两者匹配成功,则获得资产详情,并等待步骤S5的存储。资产详情包括但不限于:服务名称、服务产品名称、制造商、服务版本等信息。若匹配不成功,则仅将存活的目标IP处获取的开放端口回报的报文信息作为资产详情进行存储。
步骤S4,解析网页资产:
识别并获取步骤S3中的资产详情中属于http或https的服务,进行http或者https请求,获取字段内容列表:响应头、响应头中的cookie内容、网页正文的meta内容、网页正文引用的script内容、网页加载的js使用的方法名。
字段内容列表与该网页网址形成一个初步的网页资产。将字段内容列表与指纹标签库中的内容进行一个或多个指纹的正则匹配。若存在有匹配到的标签,则对该网页资产增加这个标签信息;若不存在,则该网页资产没有匹配的标签信息。
步骤S5,将步骤S3中的资产详情和步骤S4中的网页资产合并整理成资产数据集,并将资产数据集均存储在MySQL中和ElasticSearch中。MySQL作为资产管理平台的数据库得到了数据的更新。
步骤S6,通过Flume将ElasticSearch中存储的网页资产传输到HDFS中。
步骤S6a,为该Flume进程设置一个拦截器,将网页资产中可以用来判断是否是新的指纹标签的字段提取出来,这类字段有headers、meta、scripts、js、title、cookies。
拦截器的清洗逻辑是对meta、scripts、title标签名使用正则表达式进行提取获得;对headers的提取是过滤通用header(例如“content-encoding”、“content-type”和“date”等),保留剩余的header的key值和value值;对cookies的提取是通过分割headers中的set-cookie值而得;对js的提取是通过分析js文件提取方法名获得。
步骤S6b,然后利用Flume的多路复用功能将headers、meta、scripts、js、title、cookies六种字段分别发送到HDFS下
/webdata/headers、/webdata/meta、/webdata/scripts、/webdata/js、
/webdata/title和/webdata/cookies六个目录下。
步骤S7,利用Hive对Flume提取到HDFS的数据进行分析计算。
步骤S7a,用Hive建六张分区表,分别是header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表。
header_n表有header名、header值与标记值三个字段。header是key:value键值对形式,比如一个header是a:b,那么header名存a,header值存b。标记值用来识别是否是已存在的header,如果已存在将该条header记录的标记值置为Y,如果不存在置为N;
meta_n表有meta名、meta值与标记值三个字段。meta是key:value键值对形式,比如一个meta是a:b,那么meta名存a,meta值存b。标记值用来识别是否是已存在的meta,如果已存在将该条meta记录的标记值置为Y,如果不存在置为N;
script_n表有script值与标记值两个字段。script是一个链接地址,比如一个script是https:/a/b,那么script值存https:/a/b。标记值用来识别是否是已存在的script,如果已存在将该条script记录的标记值置为Y,如果不存在置为N;
js_n表有js值与标记值两个字段。js是一个方法名,比如一个js是a,那么js值存a。标记值用来识别是否是已存在的js,如果已存在将该条js记录的标记值置为Y,如果不存在置为N;
title_n表有title值与标记值两个字段。title是一个函数名,比如一个title是a,那么title值存a。标记值用来识别是否是已存在的title,如果已存在将该条title记录的标记值置为Y,如果不存在置为N;
cookie_n表有cookie名、cookie值与标记值三个字段。cookie是key:value键值对形式,比如一个cookie是a:b,那么cookie名存a,cookie值存b。标记值用来识别是否是已存在的cookie,如果已存在将该条cookie记录的标记值置为Y,如果不存在置为N。
这六张表存的是从当天网页资产中提取到的数据,每天都会向表中当天的分区写入当天的数据。建这六张表的目的是与s7b步骤的六张表进行对比以发现新的指纹标签。
步骤S7b,用Hive建六张普通表,分别为header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表。
header_y表有header名和header值两个字段。header是key:value键值对形式,比如一个header是a:b,那么header名存a,header值存b;
meta_y表有meta名和meta值两个字段。meta是key:value键值对形式,比如一个meta是a:b,那么meta名存a,meta值存b;
script_y表有script值一个字段。script是一个链接地址,比如一个script是https:/a/b,那么script值存https:/a/b;
js_y表有js值一个字段。js是一个方法名,比如一个js是a,那么js值存a;
title_y表有title值一个字段。title是一个函数名,比如一个title是a,那么title值存a;
cookie_y表有cookie名和cookie值两个字段。cookie是key:value键值对形式,比如一个cookie是a:b,那么cookie名存a,cookie值存b。
这六张表存的是已知的指纹标签中对应的字段名和字段值,每天都会从MongoDB指纹标签库中导出最新最全的指纹标签然后覆盖掉header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表之前所有的数据。建这六张表的目的是与s7a步骤的六张表进行对比以发现新的指纹标签。
步骤S7c,用Hive建一张all_lables分区表,以天为分区,每个分区存储当天所有被认为是新发现的指纹标签的数据。建这张表的目的是存储s7a和s7b步骤中12张表对比后发现的新指纹标签。
步骤S7d,Hive分别到header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表对应的以下六个HDFS目录
/webdata/headers、/webdata/meta、/webdata/scripts、/webdata/js、
/webdata/title和/webdata/cookies中加载当天的数据,之后Hive会自动将加载到的数据映射到header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表六张表中。
步骤S7e,编写HQL语句,将header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表中当天分区导入的数据和header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表中已有的指纹标签去做对比。比如将header_n表的当天数据与header_y表中的所有数据做对比,找出那些不存在于header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表的数据并给这条数据打上不存在的标记,该标记用N表示;被打上N标记的数据,表示此条数据是待验证的网页指纹标签。
步骤S7f,过滤出被打上N标记的数据,再按属性名、属性值分组去计数;如果一条数据重复出现的次数到达预定值,那么将这条数据定义为一个新指纹标签。
步骤S7g,将新指纹标签的数据插入到all_tables表的当天分区中。
步骤S8,DataX将all_tables中当天的数据同步到MongoDB指纹标签库中,也就是定义为新指纹标签的数据追加到MongoDB指纹标签库中。
步骤S6~步骤S8通过Azkaban编写配置文件,按顺序去定时调度各任务单元,设置为每天24:00去执行工作流。
该方案所带来的效果是:如果第一天一些网页资产携带有指纹标签A但是指纹标签库并无指纹标签A,这将会导致这些网页资产无法与指纹标签A进行匹配。而通过上述步骤利用大数据技术对海量网页资产进行存储、抽取和计算等一系列操作后,可以发现指纹标签库没有的指纹标签A并将其写入到指纹标签库,这样当后面再有携带有指纹标签A的网页资产到来时,便可以与指纹标签A匹配上。综述,通过该方案可以自主发现新指纹标签,提高网页资产的利用率,比如根据这些新匹配上的指纹标签进行漏洞扫描等操作。
下面,以内网ip为192.168.1.123为例,对本方法的流程做个演示:
步骤S1,制定扫描的目标IP为内网的192.168.1.123。
步骤S2,使用资产引擎,对该目标ip进行扫描,获取其开放端口22,80,443,8080以及这些端口的报文。
例:22端口的报文为“SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10”。
步骤S3,通过识别报文获取这些端口的服务名、服务版本、服务产品等数据信息。对于该详细信息一方面作为资产详情进行存储,另一方面则进行更多的分析处理。
详细信息例:
22端口数据为:服务名:ssh,服务版本:OpenSSH_7.2p2;
80端口数据为:服务名:http;
443端口数据为:服务名:https,服务产品:nginx;
8080端口数据为:服务名;http,服务产品:restlet Java web framework。
步骤S4,解析网页资产:
步骤S4a,对于服务名称识别为http或https的数据,如80端口、443端口和8080端口,在构造网页请求后进行访问请求,获取返回的结果,比如响应头、响应的body信息、响应的js文件,例:80的返回内容: 响应头为“server”:”awselb/2.0”,网页标题为:404 notfound 443的返回内容:meta信息为:{“server”:”baidu”},响应头为:{“X-Powered-By”:”ASP.NET”}}8080的返回内容:js方法名:[‘bootstrap’],cookie信息为:[‘JSESSIONID=5988B5EA0E26ADE512A8DA5EA3071123’]。
步骤S4b,将返回的内容与指纹标签库做匹配:
80端口匹配到awselb是用于负载均衡的Amazon ELB;
443端口匹配到ASP.NET是一个web框架,但是443端口的baidu未匹配到。
8080端口匹配到bootstrap是一个UI框架,JSESSIONID意味着使用了JAVA这门语言。
步骤S4c,将步骤S4a返回的内容与步骤S4b匹配的结果共同作为网页资产进行存储。
步骤S5,将资产详情和网页资产分别存储到MySQL和ElasticSearch中各一份。
步骤S6,用Flume将当天网页资产中涉及headers、meta、scripts、js、title、cookies六个字段的数据提取到HDFS,如上述有headers有server:awselb/2.0、X-Powered-By:ASP.NET;meta有server:baidu;js有bootstrap:null;cookie有JSESSIONID=5988B5EA0E26ADE512A8DA5EA3071123。
步骤S7,利用Hive对Flume提取到HDFS的数据进行分析计算。
由上述数据可知header_n表在当天分区会写入server:awselb/2.0、X-Powered-By:ASP.NET两条数据;meta_n表在当天分区会写入server:baidu一条数据、js_n表在当天分区会写入bootstrap:null一条数据;cookie_n表在当天分区会写入JSESSIONID=5988B5EA0E26AD E512A8DA5 EA3071123一条数据。
header_y表已知的指纹标签包括server:awselb/2.0、X-Powered-By:ASP.NET;meta_y表已知的指纹标签不包括server:baidu;js_y表已知的指纹标签包括bootstrap:null;cookie_y表中已知的指纹标签包括JSESSIONID=5988B5EA0E26ADE512A8DA5EA3071123。
经过对比发现meta_n表的server:baidu这条数据不存在,如果一天会出现若干次。经过分组统计发现server:baidu重复出现的次数超过了预定值(预定值假设100次,可调整);
那么将server:baidu作为新的指纹标签导入到all_tables表当天分区。
步骤S8,.DataX将server:baidu同步到MongoDB指纹标签库,下一次再有网页资产携带server:baidu信息时就可以匹配到server:baidu该指纹标签。
该方案会对数据进行二次存储和分析计算,组件选择MySQL、MongoDB、ElasticSearch、Flume、Hive、HDFS、DataX、Azkaban。组件的选择原因如下:
MySQL:MySQL的强事务性可以保证资产管理平台数据的一致,并且标准的SQL语言更容易上手。
MongoDB:我们的指纹标签为JSON格式,字段个数和顺序并不会保持固定,传统关系型数据库管理系统并不适合存储该类数据。对MongoDB而言,数据格式为BSON格式,BSON格式是JSON格式的扩展,可以存储比较复杂的数据类型。从数据格式上来讲MongoDB很适合存储指纹标签,并且MongoDB强大的查询语句可以满足我们对指纹标签的任何操作。
ElasticSearch:资产详情和网页资产也为JSON格式,字段个数和顺序并不会保持固定,传统关系型数据库管理系统并不适合存储该类数据,同时资产详情的数据量会很大。对ElasticSearch而言,数据格式为JSON格式,同时支持快速、实时地存储、搜索和分析大量数据,非常适合我们大量资产详情数据的存储的同时满足我们的搜索需求。
Flume:在对网页资产进行分析计算前需要将ElasticSearch中的网页资产进行一个清洗来提取我们需要的字段,Flume是一个高效的数据采集、聚合、传输系统,我们可以用Flume去ElasticSearch中实时的读取数据并将这些数据加载到HDFS中。同时Flume支持自定义拦截器和多路复用,拦截器可以将ElasticSearch中读取到的网页资产进行解析,将我们需要的字段提取出来然后利用多路复用将不同的字段数据发送到不同的HDFS目录中。
Hive:Hive可以将HDFS文件中的数据映射成一张表格,然后利用其提供的SQL查询功能对数据进行查询。Hive底层会将SQL语句进行解析和匹配生成对应的MapReduce程序,MapReduce是一个并行计算的引擎,很适合海量数据的离线计算。
DataX:DataX使用简单,配置文件易编写,并且支持Hive和MongoDB之间的数据传输,当Hive分析计算完之后,需要用到DataX将计算结果也就是发现的新指纹标签同步到我们的MongoDB指纹标签数据库中。
Azkaban:Azkaban是一个功能清晰、简单易用的轻度调度工具。我们可以编写配置文件来描述上述组件工作之后的依赖关系等,最后交给Azkaban去调度数据的采集、计算、同步等流程。
常见的网页指纹资产中可以拿来唯一确定指纹的字段大概有headers、meta、scripts、js、title、cookies,所以我们从这几个字段入手进行分析计算。
本方案补充现有的资产指纹标签库,帮助企业和组织更全面更及时的对网页资产进行识别与管理,同时提供资产查找时的准确依据。
本发明按照实施例进行了说明,在不脱离本原理的前提下,本方案还可以作出若干变形和改进。应当指出,凡采用等同替换或等效变换等方式所获得的技术方案,均落在本发明的保护范围内。
Claims (7)
1.一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,包括以下步骤:
步骤S1,选择一个要扫描的目标IP:
每次扫描需要制定一个扫描的目标IP;
步骤S2,对目标IP进行扫描,确保目标IP存活:
通过ping扫描,向目标IP发送ICMP信息报文,若目标IP回应ICMP报文,则判断目标IP存活;若无回应则判断目标IP下线,扫描结束;
判断目标IP存活后,对于存活的目标IP进行端口扫描,监听返回报文从而识别开放端口并获取开放端口回报的报文;
步骤S3,解析资产详情:
将从存活的目标IP处获取的开放端口回报的报文,与存放一系列已知报文所对应资产详情内容的文件进行正则匹配:若两者匹配成功,则获得资产详情,并等待步骤S5的存储;
步骤S4,解析网页资产:
识别并获取步骤S3中的资产详情中属于http或https的服务,进行http或者https请求,获取字段内容列表;
字段内容列表与该网页网址形成一个初步的网页资产;将字段内容列表与指纹标签库中的内容进行一个或多个指纹的正则匹配;若存在有匹配到的标签,则对该网页资产增加这个标签信息;
步骤S5,将步骤S3中的资产详情和步骤S4中的网页资产合并整理成资产数据集,并将资产数据集均存储在MySQL中和ElasticSearch中;MySQL作为资产管理平台的数据库得到了数据的更新;
步骤S6,通过Flume将ElasticSearch中存储的网页资产传输到HDFS中;
步骤S7,利用Hive对Flume提取到HDFS的数据进行分析计算;在当天网页资产提取到的数据中找出不存在于指纹标签库的数据,如果该数据重复出现的次数到达预定值,那么将这条数据定义为一个新指纹标签;
步骤S8,DataX将all_tables中当天的数据同步到MongoDB指纹标签库中,即,将定义为新指纹标签的数据追加到MongoDB指纹标签库中。
2.根据权利要求1所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S3中,资产详情包括但不限于:服务名称、服务产品名称、制造商、服务版本等信息。
3.根据权利要求1所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S4中,字段内容列表包括:响应头、响应头中的cookie内容、网页正文的meta内容、网页正文引用的script内容、网页加载的js使用的方法名。
4.根据权利要求1所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S6包括以下步骤:
步骤S6a,为该Flume进程设置一个拦截器,将网页资产中可以用来判断是否是新的指纹标签的字段提取出来,这类字段有headers、meta、scripts、js、title、cookies;
拦截器的清洗逻辑是对meta、scripts、title标签名使用正则表达式进行提取获得;对headers的提取是过滤通用header,保留剩余的header的key值和value值;对cookies的提取是通过分割headers中的set-cookie值而得;对js的提取是通过分析js文件提取方法名获得;
步骤S6b,然后利用Flume的多路复用功能将headers、meta、scripts、js、title、cookies六种字段分别发送到HDFS下
/webdata/headers、/webdata/meta、/webdata/scripts、/webdata/js、
/webdata/title和/webdata/cookies六个目录下。
5.根据权利要求1所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S7包括以下步骤:
步骤S7a,用Hive建六张分区表,分别是header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表;
这六张表存的是从当天网页资产中提取到的数据,每天都会向表中当天的分区写入当天的数据;
步骤S7b,用Hive建六张普通表,分别为header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表;
这六张表存的是已知的指纹标签中对应的字段名和字段值,每天都会从MongoDB指纹标签库中导出最新最全的指纹标签然后覆盖掉header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表之前所有的数据;
步骤S7c,用Hive建一张all_lables分区表,以天为分区,每个分区存储对比当天s7a和s7b步骤中对应表后被认为是新发现的指纹标签的数据;
步骤S7d,Hive分别到header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表对应的以下六个HDFS目录
/webdata/headers、/webdata/meta、/webdata/scripts、/webdata/js、
/webdata/title和/webdata/cookies中加载当天的数据,之后Hive会自动将加载到的数据映射到header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表六张表中;
步骤S7e,将header_n表、meta_n表、script_n表、js_n表、title_n表、cookie_n表中当天分区导入的数据和header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表中已有的指纹标签去做对比,找出那些不存在于header_y表、meta_y表、script_y表、js_y表、title_y表、cookie_y表的数据并给这些数据打上不存在的标记,该标记用N表示;被打上N标记的数据,表示此条数据是待验证的网页指纹标签;
步骤S7f,过滤出被打上N标记的数据,再按属性名、属性值分组去计数;如果一条数据重复出现的次数到达预定值,那么这条数据定义为一个新指纹标签;
步骤S7g,将新指纹标签的数据插入到all_tables表的当天分区中。
6.根据权利要求5所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S7a中,header_n表有header名、header值与标记值三个字段;标记值用来识别是否是已存在的header,如果已存在将该条header记录的标记值置为Y,如果不存在置为N;
meta_n表有meta名、meta值与标记值三个字段;标记值用来识别是否是已存在的meta,如果已存在将该条meta记录的标记值置为Y,如果不存在置为N;
script_n表有script值与标记值两个字段;标记值用来识别是否是已存在的script,如果已存在将该条script记录的标记值置为Y,如果不存在置为N;
js_n表有js值与标记值两个字段;标记值用来识别是否是已存在的js,如果已存在将该条js记录的标记值置为Y,如果不存在置为N;
title_n表有title值与标记值两个字段;标记值用来识别是否是已存在的title,如果已存在将该条title记录的标记值置为Y,如果不存在置为N;
cookie_n表有cookie名、cookie值与标记值三个字段;标记值用来识别是否是已存在的cookie,如果已存在将该条cookie记录的标记值置为Y,如果不存在置为N。
7.根据权利要求5所述的一种基于大数据的网页资产指纹标签识别与发现方法,其特征在于,步骤S7b中,
header_y表有header名和header值两个字段;
meta_y表有meta名和meta值两个字段;
script_y表有script值一个字段;
js_y表有js值一个字段;
cookie_y表有cookie名和cookie值两个字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110611576.1A CN113259467B (zh) | 2021-06-02 | 2021-06-02 | 一种基于大数据的网页资产指纹标签识别与发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110611576.1A CN113259467B (zh) | 2021-06-02 | 2021-06-02 | 一种基于大数据的网页资产指纹标签识别与发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113259467A true CN113259467A (zh) | 2021-08-13 |
CN113259467B CN113259467B (zh) | 2021-10-08 |
Family
ID=77186024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110611576.1A Active CN113259467B (zh) | 2021-06-02 | 2021-06-02 | 一种基于大数据的网页资产指纹标签识别与发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113259467B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472813A (zh) * | 2021-09-02 | 2021-10-01 | 浙江齐安信息科技有限公司 | 一种安防资产识别方法及系统 |
CN114827043A (zh) * | 2022-03-31 | 2022-07-29 | 中国电子科技集团公司第三十研究所 | 基于指纹动态更新及关键报文识别的流量特征匹配方法 |
CN116823162A (zh) * | 2023-06-27 | 2023-09-29 | 上海螣龙科技有限公司 | 一种网络资产扫描任务管理方法、系统及计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120005205A1 (en) * | 2000-09-01 | 2012-01-05 | Mark Bobick | Server system and method for discovering digital assets in enterprise information systems |
US20160380867A1 (en) * | 2015-06-23 | 2016-12-29 | Above Security Inc. | Method and System for Detecting and Identifying Assets on a Computer Network |
CN107194573A (zh) * | 2017-05-18 | 2017-09-22 | 郝继英 | 资产资源集中管理方法 |
CN112260861A (zh) * | 2020-10-13 | 2021-01-22 | 上海奇甲信息科技有限公司 | 一种基于流量感知的网络资产拓扑识别方法 |
CN112416992A (zh) * | 2020-11-30 | 2021-02-26 | 杭州安恒信息技术股份有限公司 | 基于大数据和关键词的行业类型识别方法、系统及设备 |
CN112468360A (zh) * | 2020-11-13 | 2021-03-09 | 北京安信天行科技有限公司 | 一种基于指纹的资产发现识别和检测方法及系统 |
-
2021
- 2021-06-02 CN CN202110611576.1A patent/CN113259467B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120005205A1 (en) * | 2000-09-01 | 2012-01-05 | Mark Bobick | Server system and method for discovering digital assets in enterprise information systems |
US20160380867A1 (en) * | 2015-06-23 | 2016-12-29 | Above Security Inc. | Method and System for Detecting and Identifying Assets on a Computer Network |
CN107194573A (zh) * | 2017-05-18 | 2017-09-22 | 郝继英 | 资产资源集中管理方法 |
CN112260861A (zh) * | 2020-10-13 | 2021-01-22 | 上海奇甲信息科技有限公司 | 一种基于流量感知的网络资产拓扑识别方法 |
CN112468360A (zh) * | 2020-11-13 | 2021-03-09 | 北京安信天行科技有限公司 | 一种基于指纹的资产发现识别和检测方法及系统 |
CN112416992A (zh) * | 2020-11-30 | 2021-02-26 | 杭州安恒信息技术股份有限公司 | 基于大数据和关键词的行业类型识别方法、系统及设备 |
Non-Patent Citations (1)
Title |
---|
王宸东等: "网络资产探测技术研究", 《计算机科学》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472813A (zh) * | 2021-09-02 | 2021-10-01 | 浙江齐安信息科技有限公司 | 一种安防资产识别方法及系统 |
CN114827043A (zh) * | 2022-03-31 | 2022-07-29 | 中国电子科技集团公司第三十研究所 | 基于指纹动态更新及关键报文识别的流量特征匹配方法 |
CN114827043B (zh) * | 2022-03-31 | 2023-05-16 | 中国电子科技集团公司第三十研究所 | 基于指纹动态更新及关键报文识别的流量特征匹配方法 |
CN116823162A (zh) * | 2023-06-27 | 2023-09-29 | 上海螣龙科技有限公司 | 一种网络资产扫描任务管理方法、系统及计算机设备 |
CN116823162B (zh) * | 2023-06-27 | 2024-04-09 | 上海螣龙科技有限公司 | 一种网络资产扫描任务管理方法、系统及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113259467B (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113259467B (zh) | 一种基于大数据的网页资产指纹标签识别与发现方法 | |
US11397726B2 (en) | Data enrichment and augmentation | |
US10367827B2 (en) | Using network locations obtained from multiple threat lists to evaluate network data or machine data | |
CN108400909B (zh) | 一种流量统计方法、装置、终端设备和存储介质 | |
CN109600258B (zh) | 工业协议报文记录装置及方法 | |
CN108667725A (zh) | 一种基于多种接入及边缘计算的工业软网关以及实现方法 | |
CN105306585B (zh) | 一种多数据中心的数据同步方法 | |
US9210090B1 (en) | Efficient storage and flexible retrieval of full packets captured from network traffic | |
CN114168418A (zh) | 用于在日志分析系统中实现日志解析器的方法和系统 | |
CN104394211A (zh) | 一种基于Hadoop用户行为分析系统设计与实现方法 | |
CN105577411B (zh) | 基于服务起源的云服务监控方法和装置 | |
CN108268485A (zh) | 一种日志实时分析方法及系统 | |
WO2014049804A1 (ja) | 分散システムにおけるシステム動作トレース方法 | |
CN109271793A (zh) | 物联网云平台设备类别识别方法及系统 | |
CN112463772B (zh) | 日志处理方法、装置、日志服务器及存储介质 | |
CN105577528A (zh) | 一种基于虚拟机的微信公众号数据采集方法及装置 | |
CN107273554A (zh) | 电梯智能监控系统与方法 | |
CN109783330B (zh) | 日志处理方法、显示方法和相关装置、系统 | |
CN105488191A (zh) | 一种基于大数据的信息安全管理运维服务平台的数据采集处理方法及装置 | |
CN106326280B (zh) | 数据处理方法、装置及系统 | |
CN113472858B (zh) | 埋点数据处理方法、装置及电子设备 | |
US20180240053A1 (en) | System and Method for Associating a Multi-segment Component Transaction | |
CN103036746A (zh) | 基于网络中间点的网页响应时间被动测量方法及系统 | |
CN112003884B (zh) | 一种网络资产的采集和自然语言检索方法 | |
CN109408479A (zh) | 日志数据添加方法、系统、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A fingerprint tag identification and discovery method of Web assets based on big data Effective date of registration: 20220707 Granted publication date: 20211008 Pledgee: Hangzhou United Rural Commercial Bank Co.,Ltd. Dachuang town sub branch Pledgor: Zhejiang Yu'an Information Technology Co.,Ltd. Registration number: Y2022980009965 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |