CN103561048A - 一种确定tcp端口扫描的方法及装置 - Google Patents

一种确定tcp端口扫描的方法及装置 Download PDF

Info

Publication number
CN103561048A
CN103561048A CN201310392926.5A CN201310392926A CN103561048A CN 103561048 A CN103561048 A CN 103561048A CN 201310392926 A CN201310392926 A CN 201310392926A CN 103561048 A CN103561048 A CN 103561048A
Authority
CN
China
Prior art keywords
message
address information
equipment corresponding
source address
syn
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
Application number
CN201310392926.5A
Other languages
English (en)
Other versions
CN103561048B (zh
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.)
Kyland Technology Co Ltd
Original Assignee
Kyland 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 Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Priority to CN201310392926.5A priority Critical patent/CN103561048B/zh
Publication of CN103561048A publication Critical patent/CN103561048A/zh
Application granted granted Critical
Publication of CN103561048B publication Critical patent/CN103561048B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种确定TCP端口扫描的方法及装置,解决现有进行端口扫描检测时,效率低、适用范围窄的问题。转发装置在过滤出的待确定的端口扫描报文中识别SYN报文,根据识别出的SYN报文的源地址信息和目的地址信息,构造SYN加ACK报文,并向报文的源地址信息对应的设备发送,当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,当同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该设备进行TCP端口扫描。由于本发明可以检测出半隐蔽方式的TCP端口扫描及低速TCP端口扫描,提高了该检测方法的适用范围,节省了系统资源,并提高了端口扫描的确定效率。

Description

一种确定TCP端口扫描的方法及装置
技术领域
本发明涉及工业以太网技术领域,尤其涉及一种确定TCP端口扫描的方法及装置。
背景技术
端口扫描是指攻击者发送一组端口扫描报文,试图以此侵入设备,获取设备的各种有用信息的一种方法。通过检测技术检测扫描报文中特定的标志位,可以对已知特征的端口扫描行为进行迅速、精确的检测,但对于未知特征的扫描行为则不能检测出。
在进行端口扫描时,针对每个端口在固定时间长度T(窗口值)内,发送的报文数量是否超过设定的阈值N,当该端口发送的报文数量超过设定的阈值N时,则确定该端口在进行端口扫描。但是该方法中时间长度T为固定值,无法有效检测出发送周期比较长的端口扫描(低速端口扫描)报文。
而采用Bayesian Networks等统计模型,可以对时间长度T进行调整,但是该方法具有“抗噪声”差的弱点,当扫描者在扫描时加入大量源地址、源端口随机伪造的“噪声”扫描,将导致时间长度T的提高,时间长度T越长,由于在该时间长度T内接收到的数据包都要缓存,因此将浪费掉大量的内存和CPU的检测时间,不利于提高端口扫描的效率。
snort检测方法可以在一个时间长度T内,检测从同一个源地址X发往不同目的地址Y的报文是否多于设定的阈值N个,当该报文数量多于N个时,则确定为端口扫描行为。同样的scanlogd检测的也是所有的端口,不管端口是开放的还是不开放的,portsentry检测的则是不开放的端口,synlog检测方法记录网络上半连接的状态,通过检测是否为半连接状态,从而检测是否为端口扫描行为。
上述检测方法中,snort检测方法中保存有扫描列表,该扫描列表中用源地址来进行分类,即接收不同源地址发送的报文,但该检测方法对不同源地址发送的报文不进行关联,并且在该检测方法中时间长度T和设置的阈值N虽然可以设定,但是设定后就不能改变了,而针对不同的网络、不同的设备会出现不同的情况,因此很难确定出一个针对哪种场景都适用的T和N值,因此基本上很难针对每种场景都能达到较好的检测效果。
发明内容
本发明实施例提供一种确定TCP端口扫描的方法及装置,用以解决现有技术在进行端口扫描检测时,效率低、适用范围窄的问题。
本发明实施例提供了一种确定TCP端口扫描的方法,适用于通过转发装置进行报文转发的场景,所述方法包括:
转发装置根据适用于通过转发装置进行报文转发的场景设置的白名单规则,过滤出待确定的端口扫描报文;
根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别SYN报文;
针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送;
检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文;
当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口;
当确定有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1;
当该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。
本发明实施例提供了一种确定TCP端口扫描的装置,适用于通过转发装置进行报文转发的场景,所述装置包括:
过滤模块,用于根据设置的白名单规则,过滤出待确定的端口扫描报文;
识别模块,用于根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别出SYN报文;
构造发送模块,用于针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送;
确定模块,用于检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文;当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口;当确定有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1;当该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。
本发明实施例提供一种确定TCP端口扫描的方法及装置,该方法包括:转发装置在过滤出的待确定的端口扫描报文中,识别出SYN报文,根据识别出的SYN报文的源地址信息和目的地址信息,构造SYN报文的响应SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送,当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文,同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。由于在本发明实施例中根据构造的SYN+ACK报文,来检测端口扫描,因此该方法可以检测出隐蔽和半隐蔽方式的TCP端口扫描,并且还可以检测出低速TCP端口扫描,提高了该检测方法的适用范围,另外由于该方法中无需设置时间阈值T,因此无需缓存大量的报文,节省了系统的资源,并提高了端口扫描的确定效率。
附图说明
图1为源设备(攻击设备)和目的设备(被攻击设备)在进行SYN报文交互的过程示意图;
图2为本发明实施例提供的该确定TCP端口扫描的过程示意图;
图3为报文特征示意图;
图4为本发明实施例提供的该确定TCP端口扫描的具体实施过程示意图;
图5为本发明实施例提供的确定TCP端口扫描的步骤S5的流程示意图;
图6为本发明实施例提供的确定TCP端口扫描的步骤S6的流程示意图;
图7为本发明实施例提供的一种确定低速TCP端口扫描的装置结构示意图。
具体实施方式
本发明为了在通过转发装置进行报文转发时,提高TCP端口扫描的检测效率,并扩大检测方法的适用范围,本发明实施例提供了一种确定TCP端口扫描的方法及装置。
下面结合说明书附图,对本发明进行详细说明。
图1为源设备(攻击设备)和目的设备(被攻击设备)在进行SYN报文交互的过程示意图,在图1中当源设备和目的设备在进行SYN报文交互时,源设备向目的设备首先发送SYN报文,之后目的设备向源设备返回SYN加ACK报文,之后源设备向目的设备返回响应报文确认ACK报文,与该目的设备建立连接。但是当该源设备在进行端口扫描时,为了避免目的设备获取该源设备的信息后,追溯该攻击设备,因此在这种情况下,该通常源设备向目的设备发送的响应报文为终止RST报文,来中断与目的设备之间的连接。但是在实际的端口扫描中,攻击设备接收到SYN加ACK报文后不会再发送RST报文来终止此次连接,仅仅是扫描了相关端口是否是打开的,对于转发装置来说,相关端口被扫描的记录也是大量的(保存起来相对容易),但是如果对于每一条扫描都进行甄别的话,对于转发装置就不是将这些信息保存起来那么简单,需要大量运算能力,势必增加对于转发装置的成本。当然,发现某端口开放的情况下,后续将会建立连接,以期进一步获取被攻击设备的信息。同时,攻击设备对被攻击设备进行扫描时,攻击设备会扫描到被攻击设备中不存在的源地址或源端口。本发明的发明重点就是基于攻击设备在扫描被攻击设备相关端口后的端口扫描行为的判别。
因此,在本发明实施例提供的两个设备通过转发装置进行报文转发的场景中,为了有效的确定TCP端口扫描,当源设备和目的设备通过转发装置在进行报文的交互时,提供了该确定TCP端口扫描的方法及装置。
图2为本发明实施例提供的该确定TCP端口扫描的过程示意图,该过程包括以下步骤:
S201:转发装置根据设置的白名单规则,过滤出待确定的端口扫描报文,并建立包括所述待确定的端口扫描报文中的源地址、目的地址和源端口的列表。
本发明实施例提供的该确定TCP端口扫描的方法,适用于设备之间通过转发装置进行报文的交互的场景,该转发装置例如可以为交换机。在本发明实施例中为了实现对TCP端口扫描设备的检测,当转发装置接收到设备之间交互的报文时,根据设置的白名单规则过滤出待确定的端口扫描报文。
其中,在该设置的白名单规则中保存有源地址信息、源端口信息、目的地址信息以及目的端口信息之间的关系,根据该关系转发装置可以过滤出异常报文,即待确定的端口扫描报文。根据设置的白名单规则过滤出异常报文的过程属于现有技术,在本发明实施例中就不对此过程进行赘述。
S202:根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别SYN报文。
当转发装置过滤出了待确定的端口扫描报文后,为了实现对TCP端口扫描设备的识别,转发装置根据报文中的TCP标志位,判断每个待确定的端口扫描报文是否为TCP报文,并在判断该报文为TCP报文时,根据该报文的具体类型,判断该报文是否为SYN报文,最终在待确定的端口扫描报文中识别出SYN报文。
S203:针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送。
为了准确的判断发送该报文的设备是否在进行TCP端口扫描,当转发装置识别出SYN报文后,根据该SYN报文的源地址信息和目的地址信息,模仿该目的地址信息对应的设备,构造SYN报文的响应确认ACK报文,即构造SYN加ACK报文,将该SYN报文中的源地址信息作为目的地址信息,将该SYN报文中的目的地址信息作为源地址信息,并将该SYN加ACK报文发送给SYN报文中的源地址信息对应的设备。
S204:检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文。
S205:当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口。
目的地址信息对应设备(被扫描者)的目的地址或目的端口一般是指定或固定打开的,进一步这里的被扫描者只有数个目的地址或数个端口是打开的,但是扫描者一般会对被扫描者的某个目的地址段或数个端口进行扫描,也就是说扫描者会在一个时间段内扫描被扫描者的存在和不存在的目的地址或目的端口。因此在本发明实施例中通过检测是否存在同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口,来确定该源地址信息对应的设备是否在进行TCP端口扫描。
S206:当确定有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1。
S207:当同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描,否则,确定该源地址信息对应的设备在未进行TCP端口扫描。
同时是指在一个时间段内出现同时扫描被扫描者的存在和不存在的目的地址或目的端口的情形。
本S204~S207步骤中,转发装置首先根据接收到的源地址信息对应的设备返回的报文ACK报文,判断是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文,这是因为如果该目的地址信息对应的设备收到ACK报文的情况下,其中目的地址信息对应的设备必然是包括大量的非端口扫描的情形,对于这种情况,一般采用统计常规的某个时间长度下的不同目的端口或目的地址的报文数量来判定即可,但是这种方式会出现了大量误报的情形。而对于攻击设备访问被攻击设备的情形来说,就不宜采用一般的常规方法了。
当确定该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文后,也即该源地址信息对应的设备与该目的地址信息对应的设备建立了连接,转发装置检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口,这里的时间长度TI可以进行一个设定,例如是1s、2s和1分钟等等;而转发装置就是在这个设定的时间长度T1内检测是否有同时扫描被攻击设备一端中的存在和不存在的目的地址或目的端口,一般而言,攻击设备会需要判定哪些端口或地址可用的,因此也就会扫描到不存在的目的地址或目的端口,尤其是被攻击设备的地址或端口发生变化时,攻击设备更会扫描到不存在的目的地址或目的端口。这是判断攻击设备是否是进行端口扫描的条件之一。
而具有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的情形时,通过统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1;当同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描;否则就不是进行TCP端口扫描。其中N1为设定值。
由于在本发明实施例中根据构造的SYN报文的ACK报文,来检测端口扫描,因此该方法可以检测出半隐蔽方式的TCP端口扫描,并且还可以检测出低速TCP端口扫描,提高了该检测方法的适用范围。
具体的,在本发明实施例中转发装置中设置有白名单规则,当源设备和目的设置之间通过转发装置进行报文的交互时,转发装置接收设备之间交互的报文,根据设置的白名单规则,过滤每个报文是否可能为端口扫描报文,即过滤出待确定的端口扫描报文。
转发装置过滤出待确定的端口扫描报文后,将每个待确定的端口扫描报文保存在报文特征库中,该报文特征库存储在硬盘上。所有的待确定的端口扫描报文都保存在该报文特征库中,只有识别出该待确定的端口扫描报文为端口扫描报文时,才将该端口扫描报文从该报文特征库中移出。
转发装置将过滤出的每个待确定的端口扫描报文保存在报文特征库后,根据TCP报文中SYN报文的特征,识别每个待确定的端口扫描报文是否为SYN报文。转发装置在具体根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别SYN报文时包括:
所述转发装置根据保存的报文特征库中的TCP标志位,在待确定的端口扫描报文中识别TCP报文;
在识别出的TCP报文中,根据报文的类型标识位,在该TCP报文中识别出SYN报文。
在具体识别SYN报文时,首先识别每个待确定的端口扫描报文是否为TCP报文,因此对于每个报文其具体的报文特征如图3所示,对于每个报文其包含时间信息、七元组信息、报文标识位信息、……、报文内容信息等信息,其中七元组信息包括源IP地址信息、目的IP地址信息、源MAC地址信息、目的MAC地址信息、源端口信息、目的端口信息、报文包含的字节数信息等。
因此转发装置根据保存的报文特征库中的TCP标识位,根据每个待确定的端口扫描报文是否具有该TCP标志位,从而识别该待确定的端口扫描报文是否为TCP报文;当在待确定的端口扫描报文中识别出TCP报文后,识别每个TCP报文的类型标识位,根据每个TCP报文的类型标识位,判断该TCP报文是否为SYN报文。
转发装置针对确定的每个SYN报文,为了确定发送该SYN报文的设备是否在进行TCP端口扫描,转发装置针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,模仿该目的地址信息对应的设备,向该源地址信息对应的设备发送SYN加ACK报文,具体的该SYN加ACK报文的源地址信息和目的地址信息,分别为该SYN端报文的目的地址信息和源地址信息。并且,转发装置根据接收到该SYN报文的源地址信息对应的设备,发送的响应报文,确定该源地址信息对应的设备是否在进行TCP端口扫描。
具体的,在本实施中,检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文还包括:
当该源地址信息对应的设备没向该目的地址信息对应的设备发送ACK报文时,检测在设定的时间长度T2内,该SYN报文的源地址信息对应的设备发往不同目的地址的报文的数量是否大于设定的阈值N2;
当该源地址信息的设备发往不同目的地址的报文的数量大于设定的阈值N2时,确定该源地址信息对应的设备在进行TCP端口扫描,否则,确定该源地址信息对应的设备未进行TCP端口扫描。
图4为本发明实施例提供的该确定TCP端口扫描的具体实施过程示意图,该过程包括以下步骤:
S401:转发装置根据设置的白名单规则,过滤出待确定的端口扫描报文。
S402:根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别出SYN报文。
S403:针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认ACK报文,并向该SYN报文的源地址信息对应的设备发送。
S404:检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文,当判断结果为是时,进行步骤S405;当判断结果为否时,进行步骤S5。
S405,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口,当判断结果为是时,进行步骤S406;当判断结果为否时,进行步骤S6。
S406:统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1,当判断结果为是时,进行步骤S407;当判断结果为否时,进行步骤S408。
S407:当该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。
S408:确定该源地址信息对应的设备非TCP端口扫描。
S5:基于源地址信息对应的设备发送不同目的地址的报文的数量检测。
S6:基于SYN报文的源地址信息对应的设备发送的后续查询报文查询信息检测。
所述步骤S5具体实施流程图包括如下步骤:
S501:当该源地址信息对应的设备没有向该目的地址信息对应的设备发送ACK报文时,检测在设定的时间长度T2内,该SYN报文的源地址信息对应的设备发往不同目的地址的报文的数量是否大于设定的阈值N2,当判断结果为是时,进行步骤S502,否则,进行步骤S503。
S502当该源地址信息的设备发往不同目的地址的报文的数量大于设定的阈值N2时,确定该源地址信息对应的设备在进行TCP端口扫描。
S503:确定该源地址信息对应的设备未进行TCP端口扫描。
如图6所示,所述步骤S6具体实施流程图包括如下步骤:
S601:所述转发装置根据该SYN报文的源地址信息对应的设备发送的后续查询报文,确定是否获取目的端口对应的特定信息,当判断结果为是,进行步骤S602,否则,进行步骤603。
S602,当所述SYN报文的源地址信息对应的设备发送的后续查询报文获取目的端口对应的特定信息时,确定该源地址信息对应的设备在进行TCP端口扫描。
S603,确定为该源地址信息对应的设备没有在进行TCP端口扫描。
在步骤S601中提出后续查询报文用于确定是否获取目的端口对应的特定信息。例如端口21,正常后续报文用于访问目录和请求文件传输,而异常后续报文可能用于取得服务器类型和取得版本号。这些异常后续报文就是端口。
表1为端口与后续查询报文表
另外,在本发明实施例中该TCP报文还包括FIN报文及其他非SYN类型的报文,当转发装置识别出待确定的端口扫描报文非SYN报文时,为了检测发送该非SYN报文的设备是否在进行TCP端口扫描,在本发明实施例中该方法还包括:
检测在设定的时间长度T内,该非SYN报文的源地址信息对应的设备发往不同目的地址的报文的数量是否大于设定的阈值N;
当该源地址信息对应的设备发往不同目的地址的报文的数量大于设定的阈值N时,确定该源地址信息对应的设备在进行TCP端口扫描,否则,确定该源地址信息对应的设备未进行TCP端口扫描。
在现有技术中一般在过滤出待确定的端口扫描报文后,直接将该报文丢弃,不能主动进行防御,本发明实施例中为了有效的提高TCP端口扫描的检测效率,并能够针对TCP端口扫描进行主动防御,该方法还包括:
根据确定出的进行TCP端口扫描的设备发送的SYN报文,生成告警日志;或,
当确定该源地址信息对应的设备进行TCP端口扫描时,通知管理员;或,
根据确定出的进行TCP端口扫描的设备发送的SYN报文的特征,更新白名单规则。
在本发明实施例中当转发装置检测到设备进行TCP端口扫描时,进行告警。并将该SYN报文从报文特征库中移出。在进行告警时,可以设置告警级别信息。例如当转发装置确定设备进行TCP端口扫描时,可以将告警级别设置为0,当确定该端口扫描为TCP半隐蔽的SYN报文扫描时,可以将告警级别设置为1。因此当管理员接收到不同的告警级别信息后,可以准确的确定出端口扫描的具体类型。
为了提高对端口扫描设备处理的效率,在本发明实施例中当检测到设备在进行TCP端口扫描时,转发装置通过短信或电话的形式通知管理员。另外,由于通过构造SYN加ACK报文的形式,确定了进行TCP端口扫描的设备,因此为了产生报警联动,转发装置将该SYN报文的特征更新到白名单规则中,以便该白名单规则能够过滤出满足该SYN报文特征的扫描报文。
图7为本发明实施例提供的一种确定TCP端口扫描的装置的结构示意图,适用于通过转发装置进行报文转发的场景,所述装置包括:
过滤模块71,用于根据设置的白名单规则,过滤出待确定的端口扫描报文;
识别模块72,用于根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别出SYN报文;
构造发送模块73,用于针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送;
确定模块74,用于检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文;当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口;当确定有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1;当该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。
所述装置还包括:
告警模块75,用于根据确定出的进行TCP端口扫描的设备发送的SYN报文,生成告警日志;或,当确定该源地址信息对应的设备进行TCP端口扫描时,通知管理员;或,根据确定出的进行TCP端口扫描的设备发送的SYN报文的特征,更新白名单规则。
所述确定模块74,还用于检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口,当确定没有有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,根据该SYN报文的源地址信息对应的设备发送的后续查询报文,确定是否获取目的端口对应的特定信息;当所述SYN报文的源地址信息对应的设备发送的后续查询报文获取目的端口对应的特定信息时,确定该源地址信息对应的设备在进行TCP端口扫描,否则确定为该源地址信息对应的设备没有在进行TCP端口扫描。
所述识别模块72,具体用于根据保存的报文特征库中的TCP标志位,在待确定的端口扫描报文中识别TCP报文;在识别出的TCP报文中,根据报文的类型标识位,在该TCP报文中识别出SYN报文。
所述确定模块74,还用于检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文还包括:当该源地址信息对应的设备没向该目的地址信息对应的设备发送ACK报文时,检测在设定的时间长度T2内,该SYN报文的源地址信息对应的设备发往不同目的地址的报文的数量是否大于设定的阈值N2;当该源地址信息的设备发往不同目的地址的报文的数量大于设定的阈值N2时,确定该源地址信息对应的设备在进行TCP端口扫描,否则,确定该源地址信息对应的设备未进行TCP端口扫描。
具体的,该装置可以位于交换机中。
本发明实施例提供一种确定TCP端口扫描的方法及装置,该方法包括:转发装置在过滤出的待确定的端口扫描报文中,识别出SYN报文,根据识别出的SYN报文的源地址信息和目的地址信息,构造SYN报文的响应SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送,当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文,同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。由于在本发明实施例中根据构造的SYN+ACK报文,来检测端口扫描,因此该方法可以检测出隐蔽和半隐蔽方式的TCP端口扫描,并且还可以检测出低速TCP端口扫描,提高了该检测方法的适用范围,另外由于该方法中无需设置时间阈值T,因此无需缓存大量的报文,节省了系统的资源,并提高了端口扫描的确定效率。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种确定TCP端口扫描的方法,适用于通过转发装置进行报文转发的场景,其特征在于,所述方法包括:
转发装置根据设置的白名单规则,过滤出待确定的端口扫描报文,根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别出SYN报文;针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送;
检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文;
当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口;
当确定有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1;
当该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据确定出的进行TCP端口扫描的设备发送的SYN报文,生成告警日志;或,
当确定该源地址信息对应的设备进行TCP端口扫描时,通知管理员;或,
根据确定出的进行TCP端口扫描的设备发送SYN报文的特征,更新白名单规则。
3.如权利要求1所述的方法,其特征在于,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口,还包括:
当确定没有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,
所述转发装置根据该SYN报文的源地址信息对应的设备发送的后续查询报文,确定是否获取目的端口对应的特定信息;
当所述SYN报文的源地址信息对应的设备发送的后续查询报文获取目的端口对应的特定信息时,确定该源地址信息对应的设备在进行TCP端口扫描,否则确定为该源地址信息对应的设备没有在进行TCP端口扫描。
4.如权利要求1所述的方法,其特征在于,所述待确定的端口扫描报文中识别SYN报文包括:
所述转发装置根据保存的报文特征库中的TCP标志位,在待确定的端口扫描报文中识别TCP报文;
在识别出的TCP报文中,根据报文的类型标识位,在该TCP报文中识别出SYN报文。
5.如权利要求1所述的方法,其特征在于,检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文还包括:
当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在设定的时间长度T2内,该SYN报文的源地址信息对应的设备发往不同目的地址的报文的数量是否大于设定的阈值N2;
当该源地址信息的设备发往不同目的地址的报文的数量大于设定的阈值N2时,确定该源地址信息对应的设备在进行TCP端口扫描,否则,确定该源地址信息对应的设备未进行TCP端口扫描。
6.一种确定TCP端口扫描的装置,适用于通过转发装置进行报文转发的场景,其特征在于,所述方法包括:
过滤模块,用根据设置的白名单规则,过滤出待确定的端口扫描报文,
设别模块,根据TCP报文中SYN报文的特征,在待确定的端口扫描报文中识别出SYN报文;
构造发送模块,用于针对识别出的每个SYN报文,根据该SYN报文的源地址信息和目的地址信息,构造SYN报文的响应确认SYN加ACK报文,并向该SYN报文的源地址信息对应的设备发送;
确定模块,用于检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文;当该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文时,检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口;当确定有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,统计该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量,检测该SYN报文数量是否大于设定的阈值N1;当该同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口的SYN报文数量大于设定的阈值N1时,确定该源地址信息对应的设备在进行TCP端口扫描。
7.如权利要求6所述的装置,其特征在于,所述方法还包括:
告警模块,用于根据确定出的进行TCP端口扫描的设备发送的SYN报文,生成告警日志;或,当确定该源地址信息对应的设备进行TCP端口扫描时,通知管理员;或,根据确定出的进行TCP端口扫描的设备发送的SYN报文的特征,更新白名单规则。
8.如权利要求6所述的装置,其特征在于,所述确定模块,还用于检测在时间长度T1内是否同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口,当确定没有同时扫描该目的地址信息对应设备的存在和不存在的目的地址或目的端口时,根据该SYN报文的源地址信息对应的设备发送的后续查询报文,确定是否获取目的端口对应的特定信息;当所述SYN报文的源地址信息对应的设备发送的后续查询报文获取目的端口对应的特定信息时,确定该源地址信息对应的设备在进行TCP端口扫描,否则确定为该源地址信息对应的设备没有在进行TCP端口扫描。
9.如权利要求6所述的装置,其特征在于,所述设别模块,用于所述转发装置根据保存的报文特征库中的TCP标志位,在待确定的端口扫描报文中识别TCP报文;在识别出的TCP报文中,根据报文的类型标识位,在该TCP报文中识别出SYN报文。
10.如权利要求6所述的装置,其特征在于,所述确定模块,还用于检测是否收到该源地址信息对应的设备向该目的地址信息对应的设备发送ACK报文还包括:当该源地址信息对应的设备没向该目的地址信息对应的设备发送ACK报文时,检测在设定的时间长度T2内,该SYN报文的源地址信息对应的设备发往不同目的地址的报文的数量是否大于设定的阈值N2;当该源地址信息的设备发往不同目的地址的报文的数量大于设定的阈值N2时,确定该源地址信息对应的设备在进行TCP端口扫描,否则,确定该源地址信息对应的设备未进行TCP端口扫描。
CN201310392926.5A 2013-09-02 2013-09-02 一种确定tcp端口扫描的方法及装置 Active CN103561048B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310392926.5A CN103561048B (zh) 2013-09-02 2013-09-02 一种确定tcp端口扫描的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310392926.5A CN103561048B (zh) 2013-09-02 2013-09-02 一种确定tcp端口扫描的方法及装置

Publications (2)

Publication Number Publication Date
CN103561048A true CN103561048A (zh) 2014-02-05
CN103561048B CN103561048B (zh) 2016-08-31

Family

ID=50015198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310392926.5A Active CN103561048B (zh) 2013-09-02 2013-09-02 一种确定tcp端口扫描的方法及装置

Country Status (1)

Country Link
CN (1) CN103561048B (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104113553A (zh) * 2014-07-29 2014-10-22 网神信息技术(北京)股份有限公司 端口状态识别方法、装置和系统
CN106506557A (zh) * 2016-12-29 2017-03-15 北京神州绿盟信息安全科技股份有限公司 一种端口扫描检测方法及装置
CN107483431A (zh) * 2017-08-10 2017-12-15 杭州迪普科技股份有限公司 一种基于tcp/ip协议的交换机端口安全防护方法和装置
CN107835105A (zh) * 2017-11-01 2018-03-23 北京知道创宇信息技术有限公司 半连接端口扫描优化方法、装置及可读存储介质
CN109104395A (zh) * 2017-06-21 2018-12-28 亿阳安全技术有限公司 互联网资产扫描发现与服务识别的方法和装置
CN109309679A (zh) * 2018-09-30 2019-02-05 国网湖南省电力有限公司 一种基于tcp流状态的网络扫描检测方法及检测系统
CN110061998A (zh) * 2019-04-25 2019-07-26 新华三信息安全技术有限公司 一种攻击防御方法及装置
CN111447218A (zh) * 2020-03-25 2020-07-24 北京天地和兴科技有限公司 一种tcp端口扫描的检测方法
CN111447201A (zh) * 2020-03-24 2020-07-24 深信服科技股份有限公司 一种扫描行为识别方法、装置及电子设备和存储介质
CN111490910A (zh) * 2020-03-27 2020-08-04 深圳融安网络科技有限公司 设备信息的扫描方法、终端设备及计算机可读存储介质
CN111786898A (zh) * 2020-08-07 2020-10-16 杭州安恒信息技术股份有限公司 一种监控设备信息获取方法、装置、设备及介质
CN112187775A (zh) * 2020-09-23 2021-01-05 北京微步在线科技有限公司 一种端口扫描的检测方法及装置
CN112468355A (zh) * 2019-09-09 2021-03-09 北京奇虎科技有限公司 一种iot设备管理应用测试方法、装置、电子设备和存储介质
CN112751862A (zh) * 2020-12-30 2021-05-04 杭州迪普科技股份有限公司 一种端口扫描攻击检测方法、装置及电子设备
CN113678419A (zh) * 2019-01-30 2021-11-19 帕洛阿尔托网络(以色列分析)有限公司 端口扫描检测
CN114465764A (zh) * 2021-12-24 2022-05-10 中孚信息股份有限公司 一种基于流量数据的端口扫描识别方法、系统及装置
CN114760232A (zh) * 2022-04-14 2022-07-15 和中通信科技有限公司 一种快速主机开放tcp端口识别的方法
US11711389B2 (en) 2019-01-30 2023-07-25 Palo Alto Networks (Israel Analytics) Ltd. Scanner probe detection
US11770396B2 (en) 2019-01-30 2023-09-26 Palo Alto Networks (Israel Analytics) Ltd. Port scan detection using destination profiles
US11770397B2 (en) 2019-01-30 2023-09-26 Palo Alto Networks (Israel Analytics) Ltd. Malicious port scan detection using source profiles
US11777971B2 (en) 2018-04-11 2023-10-03 Palo Alto Networks (Israel Analytics) Ltd. Bind shell attack detection
US11799880B2 (en) 2022-01-10 2023-10-24 Palo Alto Networks (Israel Analytics) Ltd. Network adaptive alert prioritization system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101123492A (zh) * 2007-09-06 2008-02-13 杭州华三通信技术有限公司 检测扫描攻击的方法和设备
CN101631026A (zh) * 2008-07-18 2010-01-20 北京启明星辰信息技术股份有限公司 一种防御拒绝服务攻击的方法及装置
CN101902349A (zh) * 2009-05-27 2010-12-01 北京启明星辰信息技术股份有限公司 一种检测端口扫描行为的方法和系统
US20110093946A1 (en) * 2009-10-20 2011-04-21 Hon Hai Precision Industry Co., Ltd. Router and method for protecting tcp ports utilizing the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101123492A (zh) * 2007-09-06 2008-02-13 杭州华三通信技术有限公司 检测扫描攻击的方法和设备
CN101631026A (zh) * 2008-07-18 2010-01-20 北京启明星辰信息技术股份有限公司 一种防御拒绝服务攻击的方法及装置
CN101902349A (zh) * 2009-05-27 2010-12-01 北京启明星辰信息技术股份有限公司 一种检测端口扫描行为的方法和系统
US20110093946A1 (en) * 2009-10-20 2011-04-21 Hon Hai Precision Industry Co., Ltd. Router and method for protecting tcp ports utilizing the same

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
石利平: "基于TCP协议的端口扫描技术", 《电脑开发与应用》 *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104113553A (zh) * 2014-07-29 2014-10-22 网神信息技术(北京)股份有限公司 端口状态识别方法、装置和系统
CN106506557B (zh) * 2016-12-29 2019-09-17 北京神州绿盟信息安全科技股份有限公司 一种端口扫描检测方法及装置
CN106506557A (zh) * 2016-12-29 2017-03-15 北京神州绿盟信息安全科技股份有限公司 一种端口扫描检测方法及装置
CN109104395A (zh) * 2017-06-21 2018-12-28 亿阳安全技术有限公司 互联网资产扫描发现与服务识别的方法和装置
CN107483431A (zh) * 2017-08-10 2017-12-15 杭州迪普科技股份有限公司 一种基于tcp/ip协议的交换机端口安全防护方法和装置
CN107835105B (zh) * 2017-11-01 2020-01-21 北京知道创宇信息技术股份有限公司 半连接端口扫描优化方法、装置及可读存储介质
CN107835105A (zh) * 2017-11-01 2018-03-23 北京知道创宇信息技术有限公司 半连接端口扫描优化方法、装置及可读存储介质
US11777971B2 (en) 2018-04-11 2023-10-03 Palo Alto Networks (Israel Analytics) Ltd. Bind shell attack detection
CN109309679A (zh) * 2018-09-30 2019-02-05 国网湖南省电力有限公司 一种基于tcp流状态的网络扫描检测方法及检测系统
CN109309679B (zh) * 2018-09-30 2020-10-20 国网湖南省电力有限公司 一种基于tcp流状态的网络扫描检测方法及检测系统
CN113678419A (zh) * 2019-01-30 2021-11-19 帕洛阿尔托网络(以色列分析)有限公司 端口扫描检测
US11770397B2 (en) 2019-01-30 2023-09-26 Palo Alto Networks (Israel Analytics) Ltd. Malicious port scan detection using source profiles
US11770396B2 (en) 2019-01-30 2023-09-26 Palo Alto Networks (Israel Analytics) Ltd. Port scan detection using destination profiles
US11711389B2 (en) 2019-01-30 2023-07-25 Palo Alto Networks (Israel Analytics) Ltd. Scanner probe detection
CN110061998A (zh) * 2019-04-25 2019-07-26 新华三信息安全技术有限公司 一种攻击防御方法及装置
CN112468355B (zh) * 2019-09-09 2024-01-19 北京奇虎科技有限公司 一种iot设备管理应用测试方法、装置、电子设备和存储介质
CN112468355A (zh) * 2019-09-09 2021-03-09 北京奇虎科技有限公司 一种iot设备管理应用测试方法、装置、电子设备和存储介质
CN111447201A (zh) * 2020-03-24 2020-07-24 深信服科技股份有限公司 一种扫描行为识别方法、装置及电子设备和存储介质
CN111447218B (zh) * 2020-03-25 2022-08-05 北京天地和兴科技有限公司 一种tcp端口扫描的检测方法
CN111447218A (zh) * 2020-03-25 2020-07-24 北京天地和兴科技有限公司 一种tcp端口扫描的检测方法
CN111490910A (zh) * 2020-03-27 2020-08-04 深圳融安网络科技有限公司 设备信息的扫描方法、终端设备及计算机可读存储介质
CN111786898B (zh) * 2020-08-07 2022-11-22 杭州安恒信息技术股份有限公司 一种监控设备信息获取方法、装置、设备及介质
CN111786898A (zh) * 2020-08-07 2020-10-16 杭州安恒信息技术股份有限公司 一种监控设备信息获取方法、装置、设备及介质
CN112187775B (zh) * 2020-09-23 2021-09-03 北京微步在线科技有限公司 一种端口扫描的检测方法及装置
CN112187775A (zh) * 2020-09-23 2021-01-05 北京微步在线科技有限公司 一种端口扫描的检测方法及装置
CN112751862A (zh) * 2020-12-30 2021-05-04 杭州迪普科技股份有限公司 一种端口扫描攻击检测方法、装置及电子设备
CN114465764A (zh) * 2021-12-24 2022-05-10 中孚信息股份有限公司 一种基于流量数据的端口扫描识别方法、系统及装置
CN114465764B (zh) * 2021-12-24 2024-02-20 中孚信息股份有限公司 一种基于流量数据的端口扫描识别方法、系统及装置
US11799880B2 (en) 2022-01-10 2023-10-24 Palo Alto Networks (Israel Analytics) Ltd. Network adaptive alert prioritization system
CN114760232A (zh) * 2022-04-14 2022-07-15 和中通信科技有限公司 一种快速主机开放tcp端口识别的方法

Also Published As

Publication number Publication date
CN103561048B (zh) 2016-08-31

Similar Documents

Publication Publication Date Title
CN103561048A (zh) 一种确定tcp端口扫描的方法及装置
CN101094236B (zh) 地址解析协议报文处理方法及通讯系统及转发平面处理器
US10135844B2 (en) Method, apparatus, and device for detecting e-mail attack
CN109660539B (zh) 失陷设备识别方法、装置、电子设备及存储介质
EP3923551A1 (en) Method and system for entrapping network threat, and forwarding device
CN109617885B (zh) 攻陷主机自动判定方法、装置、电子设备及存储介质
CN101018121B (zh) 日志的聚合处理方法及聚合处理装置
US9398027B2 (en) Data detecting method and apparatus for firewall
CN101707601B (zh) 入侵防御检测方法、装置和网关设备
CN110809010B (zh) 威胁信息处理方法、装置、电子设备及介质
Zhou et al. Exploiting the vulnerability of flow table overflow in software-defined network: Attack model, evaluation, and defense
CN101291194B (zh) 报文保序的方法和系统
KR20120046891A (ko) 네트워크 도메인간 보안정보 공유 장치 및 방법
AU2009200102A1 (en) Method and apparatus for inspecting inter-layer address binding protocols
US10476629B2 (en) Performing upper layer inspection of a flow based on a sampling rate
US20140259140A1 (en) Using learned flow reputation as a heuristic to control deep packet inspection under load
US11032303B1 (en) Classification using projection of graphs into summarized spaces
CN110266650B (zh) Conpot工控蜜罐的识别方法
CN107360182B (zh) 一种用于嵌入式的主动网络防御系统及其防御方法
CN113746810B (zh) 一种网络攻击诱导方法、装置、设备及存储介质
CN103414730A (zh) 一种arp报文的处理方法及装置
CN112511517A (zh) 一种邮件检测方法、装置、设备及介质
US10284476B1 (en) Signature pattern detection in network traffic
CN103685279A (zh) 基于自适应的网络端口快速扫描方法
US10320839B2 (en) Automatic anti-spoof for multicast routing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant