CN116232657A - 一种基于网络爬虫的威胁情报采集方法 - Google Patents

一种基于网络爬虫的威胁情报采集方法 Download PDF

Info

Publication number
CN116232657A
CN116232657A CN202211663280.5A CN202211663280A CN116232657A CN 116232657 A CN116232657 A CN 116232657A CN 202211663280 A CN202211663280 A CN 202211663280A CN 116232657 A CN116232657 A CN 116232657A
Authority
CN
China
Prior art keywords
ioc
data
crawler
module
information
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.)
Pending
Application number
CN202211663280.5A
Other languages
English (en)
Inventor
雷喜悦
张海文
汪飞
郭鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongfu Safety Technology Co Ltd
Original Assignee
Zhongfu Safety Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhongfu Safety Technology Co Ltd filed Critical Zhongfu Safety Technology Co Ltd
Priority to CN202211663280.5A priority Critical patent/CN116232657A/zh
Publication of CN116232657A publication Critical patent/CN116232657A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/146Tracing the source of attacks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提出了一种基于网络爬虫的威胁情报采集方法,包括开源情报网站IOC爬虫程序与情报数据详情爬虫程序,所述开源情报网站IOC爬虫程序包括通用反爬虫模块,IOC去重模块,IOC数据提取算法模块,开源情报网站的IOC数据使用开源的爬虫框架scrapy进行网络采集,通过使用extract‑IOCs算法模块从结构和非结构的网页中提取出精准的IOC原始数据,并将这些原始数据使用redis集群以队列的数据格式进行保存。本发明,针对目前数据来源单一,大数据量,高并发的采集形式进行了处理,一方面提高了来源数据多样性,可以根据需求进行灵活自主的添加来源,另一方面提高了采集的速度和效率。

Description

一种基于网络爬虫的威胁情报采集方法
技术领域
本发明涉及网络安全技术领域,具体地说,涉及一种基于网络爬虫的威胁情报采集方法。
背景技术
网络安全形势非常复杂,入侵手段不断攀升,但防御端的检测和响应却极为迟钝。网络攻击者使用大量的匿名网络,恶意软件,恶意链接等手段对目标发起攻击。针对发现困难,追踪困难等问题,通过网络爬虫方式采集国内外开源的情报信息,只要目标主机的响应与威胁情报相匹配,就能定位到目标主机已被入侵。通过程序语言采用网络爬虫的方式采集开源情报,可快捷的丰富威胁情报库,构建出完整的、全方位的、多层次的威胁情报共享平台。
现有技术中,开源的威胁情报格式多样,网站也是千差万别,反爬手段层出不穷,采集过程复杂繁琐;大量网站的采集,数据请求队列,网络高并发等问题,且采集的开源情报,多半标签不太准确,需要人工重新标记标签,耗时耗力。
发明内容
本发明所要解决的技术问题是针对背景技术的缺陷,本发明通过一种基于策略控制的流量并行分发装置,采集开源的威胁情报包括但不限于威胁IP,威胁HASH,威胁DOMAIN,威胁URL等元数据。并将这些元数据存储到Redis集群中,以初始原数据的形式作为分布式网络爬虫的入口。网络爬虫程序中包括的模块有:Ioc任务分发模块,Ioc数据去重模块,Ioc详情字段采集模块,Ioc标签生成算法模块,Ioc关联关系生成模块,通过此程序,将收集过来的情报网站地址进行任务打包,使用Ioc任务分发模块将任务请求队列分发到rabbitmq队列中,基于scrapy的基础架构搭建分布式程序,进行全网大规模,高效率的威胁情报数据采集,构建出完整的攻击链条。
本发明为解决上述技术问题采用以下技术方案:
一种基于网络爬虫的威胁情报采集方法,包括开源情报网站IOC爬虫程序与情报数据详情爬虫程序,所述开源情报网站IOC爬虫程序包括通用反爬虫模块,IOC去重模块,IOC数据提取算法模块,开源情报网站的IOC数据使用开源的爬虫框架scrapy进行网络采集,通过使用extract-IOCs算法模块从结构和非结构的网页中提取出精准的IOC原始数据,并将这些原始数据使用redis集群以队列的数据格式进行保存;
所述情报数据详情爬虫程序包括IOC详情字段爬虫模块,IOC标签算法生成模块,IOC关联关系生成模块,情报数据详情爬虫程序拿取redis集群中经过去重的IOC元数据,通过IOC详情字段爬虫模块将需要的IOC详情数据进行补充,通过IOC标签生成算法模块为情报数据打上标签,并通过DNS域名解析进行关联IP和国外威胁情报网站关联关系API接口,将关联的IOC数据进行关联存储。
优选的,在开源情报网站IOC爬虫程序中,反爬虫模块中可以添加网站反爬的参数,可以根据不同的来源网站,根据网站的域名对它们设置不同的反爬参数,做到动态的参数使用;由于IOC元数据的数据量会随着爬取逐渐增加,数据量也是以亿为单位计数,所以IOC去重模块中引入布隆过滤器,将单个IOC元数据作为参数,传入布隆过滤器算法中,生成一个大型位数组保存到redis集合中,用于新的IOC数据去重判断;IOC数据提取算法模块使用extract-IOCs模型。
优选的,从redis集群中主动提取IOC元数据,并将这些数据自动填充到情报数据详情爬虫程序中,各种类型的情报包括威胁ip、威胁domain、威胁hash、威胁url元数据,依次进入情报详情爬虫程序,在程序中处理各种类型的详情补充,经过补充完的详情数据提交到下一个流程,进行威胁标签的添加,标签字段类型对应为数组类型,可以添加一个以上。
优选的,在情报检索源中,根据IOC数据获取检索结果,采用爬虫技术爬取页面内容,并对页面内容进行解析提取,获取关键情报数据获取该IOC数据的IP/域名的解析地址或逆向解析域名;从威胁情报文章类情报源中获得的攻击方式、利用漏洞和利用工具映射到IOC的攻击方式中。
优选的,还包括以下步骤:
S1、收集开源的情报网站;根据已知的攻击指标,进行查找原始的公布来源,将这些来源进行整理,保存为队列类型,提供开源情报网站IOC爬虫程序进行网络爬虫;
S2、定制反爬虫模型;反爬虫模型中可以动态添加不同网站的基础反爬,可以设置网络请求的下载中间件,在中间件中添加条件,将不同网站的反爬方式进行添加;
S3、多任务请求网络获取目标网站数据,将第一步和第二步进行结合处理,获取对应的IOC原始数据的HTML页面;
S4、IOC数据提取,将第三步过程中获取的IOC原始数据的HTML页面进行IOC数据提取,提取的数据有ip、domain、url、hash,并将一个页面中提取出的数据使用字典嵌套列表的形式返回出来,根据需求提取对应的IOC元数据;
S5、将返回出的数据以字典键值的形式提取出对应的列表值,并将列表值进行遍历保存到事前定义好redis集群索引下,再保存之前会进行去重,会根据已有的算法去判断此IOC是否已存在数据库中,再进行持久保存,到此,IOC元数据爬虫程序工作完成;
S6、IOC元数据下发模块,此模块将主动接收来自redis集群中的IOC元数据,会根据固定的算法将ip、domain、hash、url进行下发不同的API接口进行处理;
S7、IOC详情字段爬虫模块,此模块中封装了不同的API接口,ip元数据分发ip的接口进行详情字段填充,domain元数据分发domain的接口进行详情字段填充,其余的IOC元数据根据这个逻辑排列处理;
S8、IOC标签算法生成模块,此模块会根据S6,S7两个流程处理完进行标签的映射,内部会提前定义好对应的标签,根据恶意类型使用hash映射的方式去匹配对应的标签,匹配的标签可以是一个或多个,标签以数组类型进行保存;
S9、IOC关联关系生成模块,此模块的逻辑相对复杂些,首先根据产出的ip元数据进行解析关联的domain,domain再去解析对应的子domain,然后根据一些报告中提到关联IOC进行关联,过程中会将ip、hash、domain、url分别进行关联关系获取,然后关联到的数据再经过去重,生成最终的关联关系,到此,IOC情报详情爬虫程序工作完成。
本发明采用以上技术方案与现有技术相比,具有以下有益效果:
1.本发明提供的一种基于网络爬虫的威胁情报采集方法,通过开源情报网站Ioc数据采集程序和情报数据详情补充程序分离采集,能够进行采集程序的高度解耦。
2.本发明提供的一种基于网络爬虫的威胁情报采集方法,针对目前数据来源单一,大数据量,高并发的采集形式进行了处理,一方面提高了来源数据多样性,可以根据需求进行灵活自主的添加来源,另一方面提高了采集的速度和效率。
3.本发明提供的一种基于网络爬虫的威胁情报采集方法,可以根据原始Ioc的单位时间数据量,灵活变动开采的服务器和爬虫副本数,提高了更新网络爬虫程序的灵活性、完整性和异常诊断效率。
4.本发明提供的一种基于网络爬虫的威胁情报采集方法,适应了开源情报采集发展的未来需求,可持续对复杂程度日益增长的采集网站进行完整、快速地配置。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为开源情报网站Ioc爬虫程序的流程示意图。
图2为情报数据详情爬虫程序的流程示意图。
图3为一种基于网络爬虫的威胁情报采集方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明主要通过收集的开源情报网站(包括国内,国外的热度较高的情报网站),进行处理保存为请求队列,对多类型的情报源进行收集、查询、组装、解析、保存,最终生成情报数据需求的Ioc元数据;如图2所示,将Ioc元数据传入Ioc情报详情爬虫程序,经过Ioc元数据下发模块,Ioc详情字段爬虫模块,Ioc标签算法生成模块,Ioc关联关系生成模块,最后产出有效的威胁情报。
包括以下步骤:
S1、收集开源的情报网站;根据已知的攻击指标,进行查找原始的公布来源,将这些来源进行整理,保存为队列类型,提供开源情报网站Ioc爬虫程序进行网络爬虫。
S2、定制反爬虫模型;很多网站的情报查询都会有基础的反爬手段,我们在拿取这些开源情报网站的页面时,也会遇到一些阻碍,定制基础的反爬虫模型,可以方便程序拿取开源情报网站公布的Ioc数据,避免在采集的过程中遇到各种各样的报错。反爬虫模型中可以动态添加不同网站的基础反爬,可以设置网络请求的下载中间件,在中间件中添加条件,将不同网站的反爬方式进行添加。
S3、多任务请求网络获取目标网站数据,将第一步和第二步进行结合处理,获取对应的Ioc原始数据的HTML页面。
S4、Ioc数据提取,将第三步过程中获取的Ioc原始数据的HTML页面进行Ioc数据提取,提取的数据有ip、domain、url、hash等,并将一个页面中提取出的数据使用字典嵌套列表的形式返回出来。根据需求提取对应的Ioc元数据。
S5、将返回出的数据以字典键值的形式提取出对应的列表值,并将列表值进行遍历保存到事前定义好redis集群索引下,再保存之前会进行去重,会根据已有的算法去判断此Ioc是否已存在数据库中,再进行持久保存。到此,Ioc元数据爬虫程序工作完成。
S6、Ioc元数据下发模块,此模块将主动接收来自redis集群中的Ioc元数据,会根据固定的算法将ip、domain、hash、url进行下发不同的API接口进行处理。
S7、Ioc详情字段爬虫模块,此模块中封装了不同的API接口,ip元数据分发ip的接口进行详情字段填充,domain元数据分发domain的接口进行详情字段填充,其余的Ioc元数据根据这个逻辑排列处理。
S8、Ioc标签算法生成模块,此模块会根据S6,S7两个流程处理完进行标签的映射,内部会提前定义好对应的标签,根据恶意类型使用hash映射的方式去匹配对应的标签,匹配的标签可以是一个或多个,标签以数组类型进行保存。
S9、Ioc关联关系生成模块,此模块的逻辑相对复杂些,首先根据产出的ip元数据进行解析关联的domain,domain再去解析对应的子domain,然后根据一些报告中提到关联Ioc进行关联。过程中会将ip、hash、domain、url分别进行关联关系获取,然后关联到的数据再经过去重,生成最终的关联关系。到此,Ioc情报详情爬虫程序工作完成。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (5)

1.一种基于网络爬虫的威胁情报采集方法,其特征在于,包括开源情报网站IOC爬虫程序与情报数据详情爬虫程序,所述开源情报网站IOC爬虫程序包括通用反爬虫模块,IOC去重模块,IOC数据提取算法模块,开源情报网站的IOC数据使用开源的爬虫框架scrapy进行网络采集,通过使用extract-IOCs算法模块从结构和非结构的网页中提取出精准的IOC原始数据,并将这些原始数据使用redis集群以队列的数据格式进行保存;
所述情报数据详情爬虫程序包括IOC详情字段爬虫模块,IOC标签算法生成模块,IOC关联关系生成模块,情报数据详情爬虫程序拿取redis集群中经过去重的IOC元数据,通过IOC详情字段爬虫模块将需要的IOC详情数据进行补充,通过IOC标签生成算法模块为情报数据打上标签,并通过DNS域名解析进行关联IP和国外威胁情报网站关联关系API接口,将关联的IOC数据进行关联存储。
2.根据权利要求1所述的一种基于网络爬虫的威胁情报采集方法,其特征在于,在开源情报网站IOC爬虫程序中,反爬虫模块中可以添加网站反爬的参数,可以根据不同的来源网站,根据网站的域名对它们设置不同的反爬参数,做到动态的参数使用;由于IOC元数据的数据量会随着爬取逐渐增加,数据量也是以亿为单位计数,所以IOC去重模块中引入布隆过滤器,将单个IOC元数据作为参数,传入布隆过滤器算法中,生成一个大型位数组保存到redis集合中,用于新的IOC数据去重判断;IOC数据提取算法模块使用extract-IOCs模型。
3.根据权利要求1所述的一种基于网络爬虫的威胁情报采集方法,其特征在于,从redis集群中主动提取IOC元数据,并将这些数据自动填充到情报数据详情爬虫程序中,各种类型的情报包括威胁ip、威胁domain、威胁hash、威胁url元数据,依次进入情报详情爬虫程序,在程序中处理各种类型的详情补充,经过补充完的详情数据提交到下一个流程,进行威胁标签的添加,标签字段类型对应为数组类型,可以添加一个以上。
4.根据权利要求1所述的一种基于网络爬虫的威胁情报采集方法,其特征在于,在情报检索源中,根据IOC数据获取检索结果,采用爬虫技术爬取页面内容,并对页面内容进行解析提取,获取关键情报数据获取该IOC数据的IP/域名的解析地址或逆向解析域名;从威胁情报文章类情报源中获得的攻击方式、利用漏洞和利用工具映射到IOC的攻击方式中。
5.根据权利要求1所述的一种基于网络爬虫的威胁情报采集方法,其特征在于,还包括以下步骤:
S1、收集开源的情报网站;根据已知的攻击指标,进行查找原始的公布来源,将这些来源进行整理,保存为队列类型,提供开源情报网站IOC爬虫程序进行网络爬虫;
S2、定制反爬虫模型;反爬虫模型中可以动态添加不同网站的基础反爬,可以设置网络请求的下载中间件,在中间件中添加条件,将不同网站的反爬方式进行添加;
S3、多任务请求网络获取目标网站数据,将第一步和第二步进行结合处理,获取对应的IOC原始数据的HTML页面;
S4、IOC数据提取,将第三步过程中获取的IOC原始数据的HTML页面进行IOC数据提取,提取的数据有ip、domain、url、hash,并将一个页面中提取出的数据使用字典嵌套列表的形式返回出来,根据需求提取对应的IOC元数据;
S5、将返回出的数据以字典键值的形式提取出对应的列表值,并将列表值进行遍历保存到事前定义好redis集群索引下,再保存之前会进行去重,会根据已有的算法去判断此IOC是否已存在数据库中,再进行持久保存,到此,IOC元数据爬虫程序工作完成;
S6、IOC元数据下发模块,此模块将主动接收来自redis集群中的IOC元数据,会根据固定的算法将ip、domain、hash、url进行下发不同的API接口进行处理;
S7、IOC详情字段爬虫模块,此模块中封装了不同的API接口,ip元数据分发ip的接口进行详情字段填充,domain元数据分发domain的接口进行详情字段填充,其余的IOC元数据根据这个逻辑排列处理;
S8、IOC标签算法生成模块,此模块会根据S6,S7两个流程处理完进行标签的映射,内部会提前定义好对应的标签,根据恶意类型使用hash映射的方式去匹配对应的标签,匹配的标签可以是一个或多个,标签以数组类型进行保存;
S9、IOC关联关系生成模块,此模块的逻辑相对复杂些,首先根据产出的ip元数据进行解析关联的domain,domain再去解析对应的子domain,然后根据一些报告中提到关联IOC进行关联,过程中会将ip、hash、domain、url分别进行关联关系获取,然后关联到的数据再经过去重,生成最终的关联关系,到此,IOC情报详情爬虫程序工作完成。
CN202211663280.5A 2022-12-23 2022-12-23 一种基于网络爬虫的威胁情报采集方法 Pending CN116232657A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211663280.5A CN116232657A (zh) 2022-12-23 2022-12-23 一种基于网络爬虫的威胁情报采集方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211663280.5A CN116232657A (zh) 2022-12-23 2022-12-23 一种基于网络爬虫的威胁情报采集方法

Publications (1)

Publication Number Publication Date
CN116232657A true CN116232657A (zh) 2023-06-06

Family

ID=86573948

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211663280.5A Pending CN116232657A (zh) 2022-12-23 2022-12-23 一种基于网络爬虫的威胁情报采集方法

Country Status (1)

Country Link
CN (1) CN116232657A (zh)

Similar Documents

Publication Publication Date Title
CN104618343B (zh) 一种基于实时日志的网站威胁检测的方法及系统
Olston et al. Web crawling
Aye Web log cleaning for mining of web usage patterns
CN106776768B (zh) 一种分布式爬虫引擎的url抓取方法及系统
US8498995B1 (en) Optimizing data retrieval during event data query processing
CN110912889B (zh) 一种基于智能化威胁情报的网络攻击检测系统和方法
KR20120101365A (ko) 정보 스트림의 정보를 처리하는 방법 및 시스템
CN102082792A (zh) 钓鱼网页检测方法及设备
US20140351227A1 (en) Distributed Feature Collection and Correlation Engine
CN105677615B (zh) 一种基于weka接口的分布式机器学习方法
US11790016B2 (en) Method, device and computer program for collecting data from multi-domain
US20160226993A1 (en) Cache control for web application resources
CN102567521B (zh) 网页数据抓取过滤方法
CN103530336A (zh) 统一资源定位符url中无效参数的识别设备及方法
CN103279476A (zh) 一种web应用系统敏感文字的检测方法及系统
CN101630315A (zh) 一种快速检索方法及系统
CN109194605B (zh) 一种基于开源信息的可疑威胁指标主动验证方法和系统
CN105975599A (zh) 一种监测网站的页面埋点的方法和装置
CN103530369A (zh) 一种去重方法及系统
CN116232657A (zh) 一种基于网络爬虫的威胁情报采集方法
El-gayar et al. Efficient proposed framework for semantic search engine using new semantic ranking algorithm
CN103220379A (zh) 一种域名反向解析方法和装置
CN103944894A (zh) 基于云计算的恶意域名检测系统
CN105515882A (zh) 网站安全检测方法及装置
Park et al. A Study on the Link Server Development Using B-Tree Structure in the Big Data Environment

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