识别扫描器的方法及设备转让专利

申请号 : CN201710010591.4

文献号 : CN108282446B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 任宏伟

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请的目的是提供一种识别扫描器的方案,用以解决现有技术中不具备普遍性、易发生误报的问题,该方案在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,在所述错误提示页面中增加了一个与所述攻击请求相关的埋点,这一埋点无法由扫描器触发,而能够被正常用户触发,由此根据用户设备在发送攻击请求后触发埋点的不同情况,判断该用户设备是否为扫描器进行判断。由于本方案不利用特定扫描器的指纹特征,应用场景的普遍性高,并且即使出现误拦截,正常用户也可以通过触发埋点避免发生误报。

权利要求 :

1.一种识别扫描器的方法,其中,所述方法包括:

在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,其中,所述错误提示页面包含关于所述拦截事件的埋点,所述埋点无法由扫描器触发;

根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,其中,所述用户设备触发所述埋点的情况包括发生未触发事件,在第二时间和第一时间的差值超过第二预设时段的时长、或者所述第二时间的值为空时,确定所述用户设备的未触发事件,所述第一时间为触发拦截事件的时间,所述第二时间为确认收到所述用户设备的埋点请求的时间。

2.根据权利要求1所述的方法,其中,根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,包括:将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。

3.根据权利要求1所述的方法,其中,将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器,包括:将第一预设时段内未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。

4.根据权利要求1所述的方法,其中,根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,包括:将存在未触发事件的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。

5.根据权利要求1至4中任一项所述的方法,其中,确定所述用户设备为扫描器之后,还包括:拒绝来自所述用户设备的访问请求。

6.一种识别扫描器的设备,其中,所述设备包括:

拦截装置,用于在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,其中,所述错误提示页面包含关于所述拦截事件的埋点,所述埋点无法由扫描器触发;

识别装置,用于根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,其中,所述用户设备触发所述埋点的情况包括发生未触发事件,在第二时间和第一时间的差值超过第二预设时段的时长、或者所述第二时间的值为空时,确定所述用户设备的未触发事件,所述第一时间为触发拦截事件的时间,所述第二时间为确认收到所述用户设备的埋点请求的时间。

7.根据权利要求6所述的设备,其中,所述识别装置,用于将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。

8.根据权利要求6所述的设备,其中,所述识别装置,用于将第一预设时段内未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。

9.根据权利要求6所述的设备,其中,所述识别装置,用于将存在未触发事件的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。

10.根据权利要求6至9中任一项所述的设备,其中,所述拦截装置,还用于在确定所述用户设备为扫描器之后,拒绝来自所述用户设备的访问请求。

11.一种识别扫描器的设备,其中,所述设备包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,其中,所述错误提示页面包含关于所述拦截事件的埋点,所述埋点无法由扫描器触发;以及根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,其中,所述用户设备触发所述埋点的情况包括发生未触发事件,在第二时间和第一时间的差值超过第二预设时段的时长、或者所述第二时间的值为空时,确定所述用户设备的未触发事件,所述第一时间为触发拦截事件的时间,所述第二时间为确认收到所述用户设备的埋点请求的时间。

说明书 :

识别扫描器的方法及设备

技术领域

[0001] 本申请涉及信息技术领域,尤其涉及一种识别扫描器的方案。

背景技术

[0002] 随着公有云技术的发展,部署基于HTTP(HyperText Transfer Protocol,超文本传输协议)的网页(Web)应用日益普遍,Web层面的攻击越来越多,如XSS(Cross Site Scriptin,跨站脚本攻击)、SQL(Structured Query Language,结构化查询语言)注入等,同时Web应用系统及依赖的基础软件,出现的漏洞也是层出不穷。
[0003] 由于公共云环境的开放性特点,漏洞若没有被及时修复,就能够很快被黑客发现并利用,带来很大安全风险。黑客经常使用扫描器,并基于常见的已知或未知的漏洞特征,进行大范围的攻击性访问请求,然后根据Web应用返回结果判断是否存在可被利用的漏洞。
[0004] 目前Web应用的常用安全产品是WAF(Web Application Firewall,网页应用防火墙),而黑客通常在发起攻击前,往往采用扫描器(如WVS、AppScan、WebInspect等)进行尝试扫描,探测WAF防护策略,再有针对性的发起攻击。
[0005] 对于大部分网站,来自扫描器的访问请求量都很多。若WAF能够识别出来自扫描器的请求并拦截,将减少WAF检测流量,降低WAF性能消耗。目前常用的识别扫描器的方法有两种:指纹识别和频率统计。
[0006] 指纹识别是指安全人员对于常见的扫描器,收集指纹特征,然后加以识别。比如WVS,其请求头包含名为Acunetix-Aspect、Acunetix-Aspect-Password、Acunetix-Aspect-Queries键值对,URL(Uniform Resource Locator,统一资源定位符)中也包含acunetix_wvs_security_test特征值。在收到请求时,对这些特征进行检测,可以确定请求是否来自于扫描器。但是上述方式,主要依赖于安全人员的经验,需要了解大多数的扫描器,并且需要收集足够的扫描器访问日志,来分析提取特征,不具备普遍性。
[0007] 频率统计是指根据IP(Internet Protocol,网间互联协议)地址或Cookie(浏览器缓存),在某个时间被WAF拦截的次数,若超过设置的阈值,则识别为扫描器器,进行拦截。或者统计单个IP地址在单位时间内,访问请求的响应状态码(HTTP Response Status)为404的占比,若超过阈值,则识别为扫描器。本方案的缺点在于,一旦WAF的拦截规则出现误拦截,将会把正常用户识别为扫描器,容易发生误报的情况。
[0008] 申请内容
[0009] 本申请的一个目的是提供一种识别扫描器的方案,用以解决现有技术中不具备普遍性、易发生误报的问题。
[0010] 为实现上述目的,本申请提供了一种识别扫描器的方法,所述方法包括:
[0011] 在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,其中,所述错误提示页面包含关于所述拦截事件的埋点,所述埋点无法由扫描器触发;
[0012] 根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器。
[0013] 在一种实施方式中,根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,包括:
[0014] 将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。
[0015] 在一种实施方式中,将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器,包括:
[0016] 将第一预设时段内未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。
[0017] 在一种实施方式中,根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器,包括:
[0018] 将存在未触发事件的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。
[0019] 在一种实施方式中,该方法还包括:
[0020] 在确认收到所述用户设备的埋点请求时,获取收到所述埋点请求的第二时间;
[0021] 在所述第二时间和第一时间的差值超过第二预设时段的时长、或者所述第二时间的值为空时,确定所述用户设备的未触发事件,其中,所述第一时间为触发拦截事件的时间。
[0022] 在一种实施方式中,确定所述用户设备为扫描器之后,还包括:
[0023] 拒绝来自所述用户设备的访问请求。
[0024] 基于本申请的另一方面,还提供了一种识别扫描器的设备,所述设备包括:
[0025] 拦截装置,用于在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,其中,所述错误提示页面包含关于所述拦截事件的埋点,所述埋点无法由扫描器触发;
[0026] 识别装置,用于根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器。
[0027] 在一种实施方式中,所述识别装置,用于将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。
[0028] 在一种实施方式中,所述识别装置,用于将第一预设时段内未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。
[0029] 在一种实施方式中,所述识别装置,用于将存在未触发事件的用户设备,确定为扫描器,其中,所述未触发事件为用户设备未触发关于所述拦截事件的埋点。
[0030] 在一种实施方式中,所述识别装置,还用于在确认收到所述用户设备的埋点请求时,获取收到所述埋点请求的第二时间;以及在所述第二时间和第一时间的差值超过第二预设时段的时长、或者所述第二时间的值为空时,确定所述用户设备的未触发事件,其中,所述第一时间为触发拦截事件的时间。
[0031] 在一种实施方式中,所述拦截装置,还用于在确定所述用户设备为扫描器之后,拒绝来自所述用户设备的访问请求。
[0032] 本申请实施例还提供一种识别扫描器的设备,其中,所述设备包括:
[0033] 处理器;以及
[0034] 被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,其中,所述错误提示页面包含关于所述拦截事件的埋点,所述埋点无法由扫描器触发;以及根据所述用户设备触发所述埋点的情况,确定所述用户设备为扫描器。
[0035] 与现有技术相比,本申请提供的技术方案在识别到来自用户设备的攻击请求时,触发拦截事件,并向所述用户设备发送错误提示页面,在所述错误提示页面中增加了一个与所述攻击请求相关的埋点,这一埋点无法由扫描器触发,而能够被正常用户触发,由此根据用户设备在发送攻击请求后触发埋点的不同情况,判断该用户设备是否为扫描器进行判断。由于本方案不利用特定扫描器的指纹特征,应用场景的普遍性高,并且即使出现误拦截,正常用户也可以通过触发埋点避免发生误报。

附图说明

[0036] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0037] 图1为本申请实施例提供的一种识别扫描器的方法的处理流程图;
[0038] 图2为本申请实施例提供的一种识别扫描器的设备的结构示意图;
[0039] 图3为本申请实施例中基于本申请方案的WAF实现识别扫描器的检测流程示意图;
[0040] 图4为拦截日志库中的数据记录的示意图;
[0041] 图5为本申请实施例提供的另一种识别扫描器的设备的结构示意图;
[0042] 附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

[0043] 下面结合附图对本申请作进一步详细描述。
[0044] 在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0045] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
[0046] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
[0047] 本申请实施例提供了一种识别扫描器的方法,该方法可以适用于对Web服务器进行安全防护的设备(如WAF)中,用于准确识别扫描器。以WAF为例,对该方法的处理流程进行详细说明,其处理流程如图1所示,包括如下步骤:
[0048] 步骤S101,WAF在识别到来自用户设备的攻击请求时,触发拦截事件,并向用户设备发送错误提示页面。错误提示页面往往是静态页面,其作用是提示用户设备,其发送的访问请求被识别为攻击请求,并被拦截。
[0049] 而本申请实施例中的错误提示页面增加了关于拦截事件的埋点,该埋点的特点在于无法由扫描器触发,而能够被正常用户触发。在常规的错误提示页面中增加埋点后,若正常用户通过浏览器打开包含埋点的错误提示页面,将会触发该埋点。
[0050] 在实际场景下,由于正常用户都是通过浏览器访问网页应用,因此返回的错误提示页面也会被浏览器正常打开,从而触发错误提示页面内的埋点。而扫描器由于是程序工具,对于错误提示页面不进行处理,即不会通过浏览器正常打开返回的错误提示页面,因此不会触发错误提示页面内的埋点。
[0051] 步骤S102,WAF根据用户设备触发埋点的情况,确定用户设备为扫描器。由于埋点具有上述特点,因此可以根据用户设备在发送攻击请求后触发埋点的不同情况,判断该用户设备是否为扫描器进行判断。由于本方案不利用特定扫描器的指纹特征,应用场景的普遍性高,并且即使出现误拦截,正常用户也可以通过触发埋点避免发生误报。
[0052] 以本实施例提供的一种错误提示页面为例,埋点可以是一埋点链接,例如https://errors.xxx.com/report?waf_id=1001。当用户设备收到并通过浏览器打开包含该埋点链接的错误提示页面之后,将触发埋点,发起埋点请求,访问https://errors.xxx.com/report?waf_id=1001。该埋点请求同样与触发拦截的攻击请求一一对应,即若得到埋点请求对应的访问日志,就可以确定用户设备触发了哪一次攻击请求所对应的埋点。若没有相应的访问日志,则表示用户设备未触发相应的埋点。
[0053] 例如,在本实施例中,埋点连接中的waf_id=1001是指拦截事件编号,该编号能够唯一确定一次攻击请求所触发的拦截事件,保证访问请求与攻击请求触发的拦截事件一一对应。由此,WAF通过获取访问https://errors.xxx.com/report?waf_id=1001的埋点请求的访问日志,可以获知用户设备触发埋点的情况,进而判断用户设备是否为扫描器。errors.xxx.com可以是专门用于接收埋点请求的访问日志的服务器,其记录访问日志之后,可以将访问日志中的相关信息告知WAF,使得WAF能够获取到用户设备触发埋点的情况。
[0054] 基于埋点不会被扫描器触发的特点,本申请实施例提供的一种识别扫描器的具体策略可以是:将存在未触发事件的用户设备,确定为扫描器,其中,未触发事件为用户设备未触发关于拦截事件的埋点。
[0055] 结合本申请实施例中埋点链接触发埋点请求的方式,判断是否发生未触发事件的过程可以是:首先,WAF在确认收到用户设备的埋点请求时,获取收到埋点请求的第二时间。例如,对于攻击请求AR1,其触发的拦截事件的waf_id为1002,触发拦截事件的时间记为第一时间,WAF在触发拦截时间时,会生成包含埋点的错误提示页面,其中埋点中可以包含waf_id=1002的信息,使得触发的埋点请求也包含该信息。由此,若用户设备触发了埋点请求,则WAF可以基于埋点请求的访问日志,确定用户设备触发了拦截事件1002对应的埋点。
在另一种情况下,WAF也可能无法收到用户设备的埋点请求,此时第二时间的值为空,无法获取。
[0056] 其后,WAF在第二时间和第一时间的差值超过第二预设时段的时长、或者第二时间的值为空时,确认发生了用户设备的未触发事件。第二预设时段可以是由第一时间起始的一个时间段,该时间段的时长一般足够用户设备接收到错误提示页面,并完成将埋点请求的发送,以此保证判断的准确性。在实际场景中,WAF可以在第二预设时段结束时,进行判断是否发生了未触发事件,以确定用户设备是否触发关于拦截事件的埋点。
[0057] 在上述判断过程中涉及两种情况,若用户设备发起了埋点请求,则需要计算第二时间和第一时间的差值,并与第二预设时段的时长进行比较,确定比较结果。此外,若用户设备未发起埋点请求,此时无法获取到第二时间,则第二时间为空,由此WAF可以确认未收到用户设备的埋点请求,产生了未触发事件。例如,WAF记录的相关信息如表1所示:
[0058]time waf_id src_ip access_time
12:00:00 1003 1.1.1.1 12:00:05
12:00:01 1004 2.2.2.2 12:00:02
12:00:02 1005 3.3.3.3  
[0059] 表1
[0060] 其中,time为触发拦截事件的第一时间,waf_id为拦截事件编号,src_ip为用户设备的ip地址,用于标识用户设备,access_time为收到埋点请求的第二时间。假设本实施例中设定的第二预设时段为由第一时间起始的3秒,则对于1003对应的拦截事件,其第二时间和第一时间的差值超过第二预设时段的时长,由此确定IP地址为1.1.1.1的用户设备未触发关于拦截事件的埋点,发生了对应拦截事件1003的未触发事件。对于1004对应的拦截事件,其第二时间和第一时间的差值未超过第二预设时段的时长,由此确定IP地址为2.2.2.2的用户设备触发了关于拦截事件的埋点,未发生对应拦截事件1004的未触发事件。而对于1005对应的拦截事件,由于其第二时间为空,因此可以认为未收到用户设备的埋点请求,确定发生了对应拦截事件1005的未触发事件。
[0061] 对于上述识别扫描器的具体策略,可能出现的问题在于:在少数情况下,正常用户也有可能会不会触发埋点。例如,正常用户在收到错误提示页面之前关闭了浏览器,使得其中的埋点无法被正常触发、或者用户设备发起埋点请求之前发生了网络终端、还或者由于网络延迟的原因用户设备导致发送的埋点请求在第二预设时段之外才被接收等情况。此时,上述识别扫描器的策略可能出现误判。
[0062] 由此,本申请实施例还提供了另一种识别扫描器的策略,该策略为:将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。即该策略包含两个条件,条件一为:存在某一用户设备的未触发事件;条件二为:该用户设备的未触发事件发生了多次。由此,本方案中被识别为扫描器需要多次发生不触发的埋点的情况,而在实际场景下,正常用户发起多次攻击请求且不触发埋点的可能性较小,因此本实施例中的方案可以减少可能的误判,进一步提高识别的准确性。
[0063] 以表2所示的信息为例:
[0064]time waf_id src_ip access_time
12:00:00 1003 1.1.1.1  
12:00:01 1004 1.1.1.1  
12:00:02 1005 1.1.1.1  
12:00:03 1006 2.2.2.2 12:00:10
12:00:05 1007 1.1.1.1  
12:00:06 1008 2.2.2.2 12:00:07
12:00:10 1008 2.2.2.2  
[0065] 表2
[0066] 通过统计该数据表中的信息,可以确定对于ip地址为1.1.1.1和2.2.2.2的用户设备,均存在未触发事件。若本实施例中预设数量设定为3次,对于ip地址为1.1.1.1的用户设备,由于其未触发事件的数量为5次,大于等于预设数量,由此,将ip地址为1.1.1.1的用户设备确定为扫描器。而对于ip地址为1.1.1.1的用户设备,由于其未触发事件的数量为2次,小于预设数量,因此被判定为正常用户。
[0067] 在上述判定识别过程中,WAF可以在按照预设的时间间隔(例如1秒等)获取一次数据表中的信息,并进行一次判定,尝试识别出扫描器。
[0068] 在实际场景下,由于扫描器的扫描行为一般会在一定时间内进行多次扫描,因此若同一用户设备的多次未触发事件的发生间隔较长,例如3次未触发事件中,分别发生在一周内的周1、周2和周5,则该用户设备是扫描器的可能性相对较小,若3次未触发事件发生在1分钟之内,则该用户设备很有可能是扫描器。
[0069] 因此,本申请的另一实施例中,识别扫描器的策略还可以是:将第一预设时段内预设未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。而该第一预设时段的时长可以根据实际场景的需求具体设置,例如设定为30秒、1分钟或者2分钟等。由此,可以进一步提高识别精度。
[0070] 对于判定为扫描器的用户设备,WAF可以采取相应的措施,例如本申请的一种实施例中,在确定用户设备为扫描器之后,可以拒绝来自用户设备的访问请求,阻断扫描器的探测行为,从而降低WAF的性能消耗,提高安全性。
[0071] 基于同一发明构思,本申请实施例中还提供了识别扫描器的设备,该设备对应的方法是前述实施例中的识别扫描器的方法,并且其解决问题的原理与该方法相似。
[0072] 本申请实施例提供的识别扫描器的设备的结构如图2所示,能够用于对Web服务器进行安全防护,准确识别扫描器,例如WAF等。该设备包括拦截装置310和识别装置320。其中,拦截装置310用于在识别到来自用户设备的攻击请求时,触发拦截事件,并向用户设备发送错误提示页面。而识别装置320用于根据用户设备触发埋点的情况,确定用户设备为扫描器。
[0073] 错误提示页面往往是静态页面,其作用是提示用户设备,其发送的访问请求被识别为攻击请求,并被拦截。而本申请实施例中的错误提示页面增加了关于拦截事件的埋点,该埋点的特点在于无法由扫描器触发,而能够被正常用户触发。在常规的错误提示页面中增加埋点后,若正常用户通过浏览器打开包含埋点的错误提示页面,将会触发该埋点。
[0074] 在实际场景下,由于正常用户都是通过浏览器访问网页应用,因此返回的错误提示页面也会被浏览器正常打开,从而触发错误提示页面内的埋点。而扫描器由于是程序工具,对于错误提示页面不进行处理,即不会通过浏览器正常打开返回的错误提示页面,因此不会触发错误提示页面内的埋点。
[0075] 由于埋点具有上述特点,因此可以根据用户设备在发送攻击请求后触发埋点的不同情况,判断该用户设备是否为扫描器进行判断。由于本方案不利用特定扫描器的指纹特征,应用场景的普遍性高,并且即使出现误拦截,正常用户也可以通过触发埋点避免发生误报。
[0076] 以本实施例提供的一种错误提示页面为例,埋点可以是一埋点链接,例如https://errors.xxx.com/report?waf_id=1001。当用户设备收到并通过浏览器打开包含该埋点链接的错误提示页面之后,将触发埋点,发起埋点请求,访问https://errors.xxx.com/report?waf_id=1001。该埋点请求同样与触发拦截的攻击请求一一对应,即若得到埋点请求对应的访问日志,就可以确定用户设备触发了哪一次攻击请求所对应的埋点。若没有相应的访问日志,则表示用户设备未触发相应的埋点。
[0077] 例如,在本实施例中,埋点连接中的waf_id=1001是指拦截事件编号,该编号能够唯一确定一次攻击请求所触发的拦截事件,保证访问请求与攻击请求触发的拦截事件一一对应。由此,WAF通过获取访问https://errors.xxx.com/report?waf_id=1001的埋点请求的访问日志,可以获知用户设备触发埋点的情况,进而判断用户设备是否为扫描器。errors.xxx.com可以是专门用于接收埋点请求的访问日志的服务器,其记录访问日志之后,可以将访问日志中的相关信息告知WAF,使得WAF能够获取到用户设备触发埋点的情况。
[0078] 基于埋点不会被扫描器触发的特点,本申请实施例提供的一种识别扫描器的具体策略可以是:识别装置320将存在未触发事件的用户设备,确定为扫描器,其中,未触发事件为用户设备未触发关于拦截事件的埋点。
[0079] 结合本申请实施例中埋点链接触发埋点请求的方式,判断是否发生未触发事件的过程可以是:首先,识别装置320在确认收到用户设备的埋点请求时,获取收到埋点请求的第二时间。例如,对于攻击请求AR1,其触发的拦截事件的waf_id为1002,触发拦截事件的时间记为第一时间,WAF在触发拦截时间时,会生成包含埋点的错误提示页面,其中埋点中可以包含waf_id=1002的信息,使得触发的埋点请求也包含该信息。由此,若用户设备触发了埋点请求,则WAF可以基于埋点请求的访问日志,确定用户设备触发了拦截事件1002对应的埋点。在另一种情况下,WAF也可能无法收到用户设备的埋点请求,此时第二时间的值为空,无法获取。
[0080] 其后,识别装置320在第二时间和第一时间的差值超过第二预设时段的时长、或者第二时间的值为空时,确认发生了用户设备的未触发事件。第二预设时段可以是由第一时间起始的一个时间段,该时间段的时长一般足够用户设备接收到错误提示页面,并完成将埋点请求的发送,以此保证判断的准确性。在实际场景中,WAF可以在第二预设时段结束时,进行判断是否发生了未触发事件,以确定用户设备是否触发关于拦截事件的埋点。
[0081] 在上述判断过程中涉及两种情况,若用户设备发起了埋点请求,则需要计算第二时间和第一时间的差值,并与第二预设时段的时长进行比较,确定比较结果。此外,若用户设备未发起埋点请求,此时无法获取到第二时间,则第二时间为空,由此WAF可以确认未收到用户设备的埋点请求,产生了未触发事件。例如,WAF记录的相关信息如表1所示。
[0082] 其中,time为触发拦截事件的第一时间,waf_id为拦截事件编号,src_ip为用户设备的ip地址,用于标识用户设备,access_time为收到埋点请求的第二时间。假设本实施例中设定的第二预设时段为由第一时间起始的3秒,则对于1003对应的拦截事件,其第二时间和第一时间的差值超过第二预设时段的时长,由此确定IP地址为1.1.1.1的用户设备未触发关于拦截事件的埋点,发生了对应拦截事件1003的未触发事件。对于1004对应的拦截事件,其第二时间和第一时间的差值未超过第二预设时段的时长,由此确定IP地址为2.2.2.2的用户设备触发了关于拦截事件的埋点,未发生对应拦截事件1004的未触发事件。而对于1005对应的拦截事件,由于其第二时间为空,因此可以认为未收到用户设备的埋点请求,确定发生了对应拦截事件1005的未触发事件。
[0083] 对于上述识别扫描器的具体策略,可能出现的问题在于:在少数情况下,正常用户也有可能会不会触发埋点。例如,正常用户在收到错误提示页面之前关闭了浏览器,使得其中的埋点无法被正常触发、或者用户设备发起埋点请求之前发生了网络终端、还或者由于网络延迟的原因用户设备导致发送的埋点请求在第二预设时段之外才被接收等情况。此时,上述识别扫描器的策略可能出现误判。
[0084] 由此,本申请实施例还提供了另一种识别扫描器的策略,该策略为:识别装置320将未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。即该策略包含两个条件,条件一为:存在某一用户设备的未触发事件;条件二为:该用户设备的未触发事件发生了多次。由此,本方案中被识别为扫描器需要多次发生不触发的埋点的情况,而在实际场景下,正常用户发起多次攻击请求且不触发埋点的可能性较小,因此本实施例中的方案可以减少可能的误判,进一步提高识别的准确性。
[0085] 以表2所示的信息为例,通过统计该表中的信息,可以确定对于ip地址为1.1.1.1和2.2.2.2的用户设备,均存在未触发事件。若本实施例中预设数量设定为3次,对于ip地址为1.1.1.1的用户设备,由于其未触发事件的数量为5次,大于等于预设数量,由此,将ip地址为1.1.1.1的用户设备确定为扫描器。而对于ip地址为1.1.1.1的用户设备,由于其未触发事件的数量为2次,小于预设数量,因此被判定为正常用户。
[0086] 在上述判定识别过程中,识别装置320可以在按照预设的时间间隔(例如1秒等)获取一次数据表中的信息,并进行一次判定,尝试识别出扫描器。
[0087] 在实际场景下,由于扫描器的扫描行为一般会在一定时间内进行多次扫描,因此若同一用户设备的多次未触发事件的发生间隔较长,例如3次未触发事件中,分别发生在一周内的周1、周2和周5,则该用户设备是扫描器的可能性相对较小,若3次未触发事件发生在1分钟之内,则该用户设备很有可能是扫描器。
[0088] 因此,本申请的另一实施例中,识别扫描器的策略还可以是:识别装置320将第一预设时段内预设未触发事件的数量大于等于预设数量的用户设备,确定为扫描器。而该第一预设时段的时长可以根据实际场景的需求具体设置,例如设定为30秒、1分钟或者2分钟等。由此,可以进一步提高识别精度。
[0089] 对于判定为扫描器的用户设备,WAF可以采取相应的措施,例如本申请的一种实施例中,拦截装置还用于在确定用户设备为扫描器之后,可以拒绝来自用户设备的访问请求,阻断扫描器的探测行为,从而降低WAF的性能消耗,提高安全性。
[0090] 图3示出了一种基于本申请方案的WAF实现识别扫描器的检测流程示意图,其中,errors.xxx.com是WAF搭建的Web应用,专门用于收集埋点请求的访问日志,拦截日志库用于记录拦截事件和埋点请求的访问日志中的相关信息,这些信息可以包括time(拦触发截事件的第一时间)、waf_id(拦截事件编号)、waf_rule(拦击规则类型)、host(主机名)、src_ip(用户设备ip地址)、uri(请求URL),access_time(收到埋点请求的第二时间)等字段。整个检测流程的具体包括以下几个步骤:
[0091] 步骤S401,用户设备(可能是正常用户或者扫描器)向web服务器发起访问请求,该访问请求中包含攻击特征。
[0092] 步骤S402,为web服务器提供安全防护的WAF收到该访问请求,经过安全规则检测。由于访问请求中包含攻击特征,因此将其识别为攻击请求,触发拦截事件,将拦截事件的相关信息写入拦截日志库中,包括time、waf_id、waf_rule、host、src_ip、url等,其中,waf_id由WAF内部生成,并保证唯一性。
[0093] 步骤S403,WAF生成错误提示页面,将其发送给用户设备。该错误提示页面区别于常规的错误提示页面,并非仅仅来提示用户访问请求被WAF拦截的静态页面,而是在其中进行了埋点。而这个埋点只有正常用户使用浏览器访问才能触发;对于扫描器,由于是程序工具,对于错误提示页面不进行处理,也不会访问里面的埋点链接。利用这个特点,将正常用户与扫描器加以区分。
[0094] 本申请实施例提供的一种错误提示页面的实例中,其页面源代码中,增加了埋点链接https://errors.xxx.com/report?waf_id=1001。每次拦截事件对应的waf_id,也会包含在该错误提示页面的埋点链接中。
[0095] 步骤S404,用户设备在收到错误提示页面后,在浏览器中显示该错误提示页面。
[0096] 步骤S405,用户设备在通过浏览器打开错误提示页面时,将会触发埋点,发起访问https://errors.xxx.com/report?waf_id=1001的埋点请求。其中,errors.xxx.com是WAF搭建的Web应用,专门用于收集埋点请求的访问日志,report是访问的URI地址,waf_id是拦截事件编号,基于waf_id的唯一性,可以确定该埋点请求是用户设备基于哪次拦截事件的埋点所触发的。
[0097] 步骤S406,errors.xxx.com在收到埋点请求后,解析出waf_id,更新拦截日志库,找的waf_id对应的数据记录,写入当前时间到access_time字段。拦截日志库中的数据记录如图4所示。以其中两条数据记录为例,waf_id为1001拦截事件的生成者是正常用户,埋点请求触发后,access_time字段写入埋点请求的访问时间;而waf_id为1002的拦截事件,其生成者有可能是扫描器,由于其对应的埋点没有被触发,因此access_time字段是空值。
[0098] 步骤S407,拦截日志库中的数据记录可以每秒进行一次扫描,将access_time超过time 2秒或者access_time为空的值的数据记录过滤出来。此时,过滤出的每条数据记录即表示一次未触发事件。然后在过滤出的数据记录中统计同一IP被的数据记录数量,统计出其中数量超过3条数据记录数量,这些数据记录中src_ip字段的值即为扫描器的ip地址。由此,WAF可以识别出扫描器。此外,通过将扫描器的IP地址加入拦截列表,可以拒绝来自该IP的所有访问请求,阻断扫描器的探测行为,从而降低WAF的性能消耗,提高安全性。
[0099] 综上,本申请提供的技术方案在识别到来自用户设备的攻击请求时,触发拦截事件,并向用户设备发送错误提示页面,在错误提示页面中增加了一个与攻击请求相关的埋点,这一埋点无法由扫描器触发,而能够被正常用户触发,由此根据用户设备在发送攻击请求后触发埋点的不同情况,判断该用户设备是否为扫描器进行判断。由于本方案不利用特定扫描器的指纹特征,应用场景的普遍性高,并且即使出现误拦截,正常用户也可以通过触发埋点避免发生误报。
[0100] 另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个如图5所示的获取传输文件的设备,该设备包括用于存储计算机程序指令的存储器610和用于执行程序指令的处理器620,其中,当该计算机程序指令被该处理器执行时,触发该设备运行基于前述根据本申请的多个实施例的方法和/或技术方案。
[0101] 需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
[0102] 对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。