端口扫描检测

文档序号:1866560 发布日期:2021-11-19 浏览:7次 >En<

阅读说明:本技术 端口扫描检测 (Port scan detection ) 是由 艾丹·阿米特 伊农·梅希 乔纳森·阿隆 阿维亚德·迈耶 于 2019-12-08 设计创作,主要内容包括:一种方法包括在网络数据业务中识别一组源节点和目的地节点(26)对,每对具有给定源节点、给定目的地节点以及在每对中的节点之间的业务中访问的一个或更多个端口(40),并对于每对计算相应的基线,该基线指示在第一时段期间除了该对中的给定源节点之外的源节点在给定目的地节点上访问的端口的第一数量。对于每对,计算相应的测试得分,该测试得分指示在第二时段期间该对中的给定源节点在给定目的地节点上访问的端口的第二数量与基线之间的差,并且对于这些对中的任意对中的测试得分大于阈值的给定源节点启动预防动作。(A method includes identifying a set of pairs of source and destination nodes (26) in network data traffic, each pair having a given source node, a given destination node and one or more ports (40) accessed in traffic between the nodes in each pair, and calculating, for each pair, a respective baseline indicating a first number of ports accessed on the given destination node by source nodes other than the given source node in the pair during a first period of time. For each pair, a respective test score is calculated that is indicative of a difference between a second number of ports visited on the given destination node by the given source node in the pair during a second time period and the baseline, and a preventative action is initiated for the given source node in any of the pairs for which the test score is greater than a threshold.)

具体实施方式

概述

本发明的实施例提供用于识别数据网络上的端口扫描的方法和系统。如下文所述,在监视通过网络进行通信的多个节点之间传输的数据业务时,识别一组源节点和目的地节点对,每对由给定源节点和给定目的地节点以及在每对中的源节点和目的地节点之间的数据业务中访问的一个或更多个通信端口组成。对于该组中的每对,计算相应的基线水平和相应的测试得分。对于该组中的每对,相应的基线水平指示在第一时间段期间除了该对中的给定源节点之外的源节点在给定目的地节点上访问的通信端口的第一数量,以及相应的测试得分指示在第二时间段期间该对中的给定源节点在给定目的地节点上访问的通信端口的第二数量与基线水平之间的差。可以对于这些对中的测试得分大于指定水平的任意对中的给定源节点启动预防动作。

本发明的实施例还提供用于检测已识别的端口扫描中的任何端口扫描是否包括可能指示恶意端口扫描的异常端口组合的方法和系统。异常端口组合的示例包括但不限于端口对和端口群组。如下文所述,检测可疑端口扫描的分析可以基于源配置文件、端口配置文件、端口对配置文件和扫描器探针配置文件。

系统描述

图1是示意性地示出根据本发明的实施例的计算设施20的框图,该计算设施20包括恶意端口扫描检测系统22,该恶意端口扫描检测系统22收集并监视在耦合到数据网络28的多个节点26之间传输的数据分组24,以便识别恶意端口扫描。在本文所述的实施例中,每个节点26包括被配置为通过网络进行通信的任何类型的设备(即,物理的或虚拟的),并且具有为此目的分配的IP地址。在图1中所示的示例中,节点包括工作站26和公共网络30,诸如互联网。如下文所述,本发明的实施例将数据分组聚合到通信会话中,识别包括端口扫描32的通信会话中的任何通信会话,并针对怀疑是恶意的端口扫描中的任何端口扫描生成警报。

虽然图1中所示的示例示出包括工作站26的节点,但是包括通过网络28和互联网30进行通信的其它类型的设备的节点26被认为在本发明的精神和范围内。例如,节点可以包括设备诸如服务器、无线设备诸如智能电话、路由器和网络交换机。

每个工作站26可以包括例如工作站标识符(ID)34、工作站处理器36、存储多个通信端口40(本文也简称为端口)的工作站存储器38。与物理端口不同,端口40是由通信协议诸如TCP/IP定义的逻辑实体。

工作站ID 34的示例包括但不限于可用于唯一标识工作站中的每个工作站的媒体访问控制(MAC)地址和互联网协议(IP)地址。虽然在任何给定时间,每个给定工作站26被分配唯一的IP地址,但给定工作站可以在扩展的时间段内与多个IP地址相关联。例如,给定工作站26的IP地址可以在给定工作站重启之后改变。通常,在操作中,处理器36从存储器38执行操作系统42(例如Linux)和一个或更多个软件应用44(例如数据库服务器)。

在图1中所示的配置中,存储器38还存储白名单80,该白名单80存储用于一个或更多个工作站26的标识符。如下文参考图4和图7的描述中所述,本发明的实施例可以忽略由白名单中的任何工作站26启动的任何可疑端口扫描32。

工作站26通过也耦合到互联网网关46的数据网络28(例如,局域网)进行通信。网关46将计算设施20耦合到公共网络30诸如互联网,并且包括使得能够实现工作站26和互联网上的站点/计算机(未示出)之间的通信的通信电路系统(未示出)。

在一些实施例中,恶意端口扫描检测系统22包括系统处理器48和系统存储器50,它们通过系统总线(未示出)耦合到将计算机系统耦合到网络28的网络接口控制器(NIC)52。在一些实施例中,恶意端口扫描检测系统22可以包括用户界面(UI)设备54(例如,LED显示器)或另一种类型的输出界面。

在图1中所示的配置中,恶意端口扫描检测系统22包括探针56,该探针56收集关于通过网络28传输的数据分组24的信息。虽然图1中的示例将探针56示出为恶意端口扫描检测系统22的模块,但是探针可以作为耦合到网络28的独立设备或者作为耦合到网络的另一个设备中的模块来实现。探针56可选地从网络28收集数据分组24,并使用在授予Engel等人的美国专利申请2014/0165207和授予Mumcuoglu等人的美国专利申请2015/035834中所述的方法中的任何方法处理收集的数据分组以提取信息,这两个专利申请的公开内容通过引用并入本文。

存储器50存储相应的多个通信会话68、聚合通信会话58和端口列表60。在本文所述的实施例中,处理器48被配置为从探针56收集数据分组、将数据分组分组成通信会话68、将通信会话聚合成聚合通信会话58,并识别聚合通信会话中的指示给定端口扫描32的任何聚合通信会话。端口列表60(其存储相应的多个端口40(即,端口号))的使用在下文参考图5的描述中进行了描述。

在图1中所示的配置中,存储器50还存储白名单80,该白名单80存储用于一个或更多个工作站26的标识符。如下文参考图4和图7的描述中所述,本发明的实施例可以忽略由白名单中的任何工作站26启动的任何可疑端口扫描32。

每个通信会话68可选地包括源节点标识符64、目的地端口标识符66、时间84、源端口标识符70、目的地端口标识符72、协议74、状态76、容量88(源到目的地)、反向容量(reverse-volume)78(也称为反向容量(rvolume),目的地到源)和时间84。每个聚合通信会话58可选地包括端口扫描时间段62、通信会话的子集86和签名82。

在每个给定通信会话68中,源节点64存储第一给定工作站26的标识符,目的地节点66存储第二给定工作站26的标识符,源端口70是指用于在给定通信会话期间与第二给定工作站通信的第一给定工作站上的给定端口40,目的地端口72是指在给定通信会话期间正在被访问的第二给定工作站上的给定端口40,协议74是指由给定通信会话使用的给定通信协议(例如,NFS、SSH、KERBEROS、LDAP),状态76指示给定通信会话是否成功完成,容量88指示在给定通信会话期间从第一给定工作站传输到第二给定工作站的数据量,并且反向容量78指示在给定通信会话期间从第二给定工作站传输到第一给定工作站的数据量。

在本文所述的实施例中,源节点64可用于指代第一给定工作站,并且目的地节点66可用于指代第二给定工作站。在工作站使用TCP/IP进行通信的实施例中,处理器可以基于存储在存储TCP报头的给定数据分组24中的信息来识别用于给定通信会话68的源端口和目的地端口。

对于每个聚合通信会话58,端口扫描时间段62包括指定的时间段(例如,特定的小时数或天数),并且子集86是指多个通信会话68。在下文参考图7的描述中描述了签名82。

在一些实施例中,收集数据分组、将数据分组分组成通信会话、聚合通信会话和识别包括端口扫描32的聚合通信会话的任务可以在计算设施20内(例如,工作站26)或计算设施外部(例如,基于数据云的应用)的多个设备之间拆分。在一些实施例中,一些或所有工作站26和/或恶意端口扫描检测系统22的功能可以作为虚拟机部署在计算设施20中。

存储器38和50的示例包括动态随机存取存储器和非易失性随机存取存储器。在一些实施例中,存储器可以包括非易失性存储设备,诸如硬盘驱动器和固态盘驱动器。

处理器36和48包括通用中央处理单元(CPU)或专用嵌入式处理器,它们在软件或固件中编程以执行本文所述的功能。例如,该软件可以通过网络以电子形式下载到计算机22和26。另外地或可替代地,软件可以存储在有形的非暂态计算机可读介质,诸如光、磁或电子存储介质上。进一步另外地或可替代地,处理器36和48功能中的至少一些功能可以由硬连线或可编程数字逻辑电路来执行。

端口扫描收集

图2是示意性地示出根据本发明的实施例的用于识别网络28上的可疑端口扫描32的方法的流程图。在本文所述的实施例中,可疑端口扫描包括源工作站26,该源工作站26在预定义时间段内访问目的地工作站26上的通信端口40的异常组合。

在步骤90中,处理器48使用探针56来收集在包括多个子时段的时间段期间在网络28上的节点26之间传输的数据分组24。例如,时间段可以包括连续七天(即,一周),并且每个子时段可以包括一周期间的任何24小时时段(例如,一天)。

在步骤92中,处理器48将收集的数据分组分组并存储为各对的源节点和目的地节点26之间的单独通信会话68。通信会话通常包括第一给定工作站26向第二给定工作站26上的给定端口40传输的数据分组24的序列。在检测到给定数据分组序列时,处理器48定义新的通信会话68,并通过以下方式在新的通信会话68中进行存储:将用于第一给定工作站的标识符存储到源节点64、将用于第二给定工作站的标识符存储到目的地节点66、将收集到给定数据分组序列的日期和时间存储到时间84、将TCP报头中用于第一给定工作站的端口号存储到源端口70、将TCP报头中用于第二给定工作站的端口存储到目的地端口72、将由数据分组序列使用的通信协议存储到协议74、将通信会话的状态(例如,成功/失败)存储到状态76,以及将第一给定工作站在数据分组序列中传输到第二给定工作站的第一数据量(例如,600字节)存储到容量88。

在一些情况下,数据分组序列还可以包括第二给定工作站传输到第一给定工作站的第二数据容量(例如,200字节)。过程48可以将第二数据量存储到反向容量78。

在一些实施例中,处理器48可以根据分组中的IP地址(未示出)对分组进行分组,使得系统处理器可以将具有相同源地址和目的地地址或具有相同源地址、源端口、目的地地址、目的地端口和协议的分组24分组在一起。在可替代实施例中,处理器48可以例如如美国专利申请2016/0234167中所述的管理在分组中的地址和节点26的相应ID 34之间进行关联的表(未示出),该专利申请通过引用并入本文,并且根据与分组中地址对应的ID将分组分组在一起。在2018年4月11日提交的美国专利申请15/950,234中描述了用于对收集的数据分组68进行分组的示例,该专利申请通过引用并入本文。

在步骤94中,处理器48将通信会话聚合成多个聚合通信会话58,使得聚合通信会话中的每个聚合通信会话都包括在给定子时段期间彼此通信的每个唯一的源节点和目的地节点对的通信会话中的数据。在本发明的实施例中,每个子时段通常包括预定义时间段(例如,一小时、两小时或24小时)。

当聚合通信会话68时,处理器48可以识别并标记到给定端口40的失败通信会话中的任何通信会话。在本文的实施例中,这些被标记的通信会话可以被称为失败连接。如果没有从给定端口接收到响应,或者如果接收到指示给定端口关闭的响应,则到给定端口40的通信会话可以被标记为失败连接。失败连接通常是给定节点26的错误配置的结果,并且可以通过检测到给定节点上的给定端口没有成功连接来将给定端口40识别为失败端口。例如,如果给定节点26包括被配置有错误IP地址的电子邮件服务器,则网络上的其它节点26在它们尝试访问电子邮件服务器上的错误目的地端口时将生成失败连接。

在TCP/IP通信模型中,成功通信会话包括(a)给定源节点64向给定目的地节点66传输“SYN”命令,(b)给定目的地节点响应于接收到“SYN”命令向给定源节点传输“SYN-ACK”命令,以及(c)给定源节点响应于接收到“SYN-ACK”命令向给定目的地节点传输“ACK”命令。在本发明的实施例中,处理器48可以通过检测丢失从给定目的地节点66传输到给定源节点64的“SYN-ACK”命令和/或丢失从给定源节点传输到给定目的地节点的“ACK”命令的给定通信会话68,来识别失败连接。

在本发明的实施例中,处理器48可以使用失败连接信息来确定聚合通信会话中的任何聚合通信会话是否包括任何端口扫描。例如,如果给定聚合通信会话58中的所有通信会话都成功(即,成功传输了“SYN”、“SYN-ACK”和“ACK”命令),则存在给定聚合通信会话包括端口扫描的低可能性。然而,如果给定聚合通信会话中的所有连接包括不同端口40上的失败连接(如使用上述实施例检测到的),则存在给定聚合通信会话包括端口扫描的高可能性。

在步骤96中,处理器48“清除”端口扫描记录中的数据以便保留与分析相关的数据。在一个实施例中,处理器48可以通过滤除包括具有源端口70和协议74的端口扫描的任何通信会话来清除数据,该端口扫描已知在多个目的地端口72中具有活动。例如,基于由系统管理器提供的参数,处理器48可以滤除其协议为NFS且其源端口号为“829”、“2049”或“20048”的端口扫描中的任何端口扫描。在另一个实施例中,给定端口列表60可以包括由网络28上可用的服务使用的一组端口40,并且处理器48可以滤除对给定端口列表中的端口40的任何扫描。

在步骤98中,处理器48识别包括相应端口扫描32的一个或更多个聚合端口通信会话58。在一些实施例中,如下文参考图3的描述中所述,处理器48可以使用目的地配置文件来识别给定端口扫描。

在步骤100中,响应于在步骤88中识别端口扫描,处理器48可以针对每个已识别的端口扫描32中的源节点启动第一预防动作。在一个实施例中,处理器48可以通过在用户界面设备54上呈现指示已识别的源节点正在执行可疑端口扫描的警报消息来启动第一预防动作。在另一个实施例中,处理器48可以通过限制已识别的源节点访问网络28(例如,通过向将已识别的源节点耦合到网络28的网络交换机或防火墙传送指令)来启动第一预防动作。

在附加实施例中,处理器48可以通过将给定源节点的标识符传输到警报管理系统(未示出)诸如安全信息和事件管理(SIEM)系统来启动第一预防动作。在进一步的实施例中,处理器8可以通过将给定源节点的标识符存储到警报管理系统(例如SIEM系统)可以经由API(未示出)提取的数据结构(未示出)来生成警报。

在上文所述的实施例的一个变型中,处理器48可以在已识别的端口扫描中识别源节点的用户(例如,经由登录凭证),并且对于给定用户启动预防动作。在上文所述的实施例的另一个变型中,处理器48可以在已识别的端口扫描中的源节点上识别访问已识别的端口扫描中的端口的软件进程,并且对于软件进程启动预防动作。

在步骤102中,处理器48识别包括给定源节点64的给定的已识别的端口扫描,该给定源节点64在时间段(即,测试时段)期间扫描给定目的地节点66上的目的地端口72的异常组合。用于检测异常组合的不同实施例在下文参考图4-7的相应描述中被描述。在步骤90中识别的端口扫描在本文中也可以被称为可疑端口扫描。

最后在步骤104中,响应于在步骤102中识别出异常端口扫描,处理器48可以针对异常端口扫描中的源节点启动第二预防动作,并且该方法结束。上文描述了预防动作的示例。

目的地配置文件

在本发明的实施例中,处理器48可以使用目的地配置文件来检测端口扫描32。如下文所述,处理器48可以基于在指定时间段期间收集的数据分组24生成用于每个给定目的地节点66的目的地配置文件,其指示在给定目的地节点上扫描的典型数量的端口40(即,目的地端口72),并且处理器48使用目的地配置文件来检测任何随后收集的异常端口扫描。

图3是示意性地示出根据本发明的实施例的、用于计算目的地配置文件得分并且使用计算的得分来识别端口扫描32的方法的流程图。在步骤110中,使用在上文参考图2的描述中所述的实施例,处理器48识别一组端口扫描。为了识别该组端口扫描,处理器48收集通信会话68并将它们聚合成聚合通信会话58。每个聚合通信会话58包括给定端口扫描32,该给定端口扫描32使第一给定工作站26访问第二给定目的地26上的至少一个给定通信端口40。

处理器48在包括训练时段(本文也称为第一时间段)和测试时段(本文也称为第二时间段)的多个时间段期间收集通信会话。测试和训练时段可以具有基本上相同(例如,相差在10%以内)的持续时间。例如,测试和训练时段可以包括24小时时段。在一些实施例中,测试时段在训练时段之后。在附加实施例中,训练和测试时段可以部分或完全重叠(即,相同的时间段)。

在步骤112中,处理器48识别聚合通信会话中是“有噪声的扫描器”的源节点中的任何源节点。在本发明的实施例中,如果给定源节点在训练时段期间访问(即,“扫描”)至少第二数量(例如,80、90、100或110)的目的地节点66上的至少第一数量(例如,至少20、至少25、至少30、至少35或至少40)的目的地端口72,则给定源节点64可以分类为有噪声的扫描器。在一些实施例中,第二数量大于第一数量。如下文所述,处理器48可以忽略系统处理器分类为有噪声的扫描器的任何源节点64。

在步骤114中,处理器48对于聚合通信会话中的每对给定源节点64和给定目的地节点66计算指示端口40的典型数量的基线得分(本文也称为基线水平),该端口40仍然是在训练时段中的给定子时段(例如,一天)期间第一源节点(即,不包括给定源节点,并且在一些实施例中,不包括识别为有噪声的扫描器的源节点中的任何源节点)在给定目的地节点上访问的端口。在一些实施例中,处理器48可以对于源节点66和目的地节点66对(i,j)中的每个使用以下公式来计算基线得分:

其中

-在第d天(即,给定子时段)中目的地节点j的源节点集,其不包括{i,noise_scanners}。

-在第d天源节点k和目的地节点j之间的不同目的地端口72的数量。

D-训练时段中的基线天数d。

在操作中,处理器48可以对于单个训练时段D或对于具有多个子时段D的训练时段计算方程(1)。在具有单个时段D的实施例中,训练和测试时段可以具有基本上相同的持续时间,并且在具有多个时段D的实施例中,子时段和测试时段可以具有基本上相同的持续时间。

在步骤116中,处理器48对于第二聚合通信会话中的每对给定源节点64和给定目的地节点66计算目的地配置文件得分,该目的地配置文件得分可用于基于源节点在训练和测试时段期间访问的目的地节点上的目的地端口来识别被怀疑执行端口扫描32的源节点中的任何源节点。例如,处理器48可以对于在测试时段期间识别的每对(i,j),计算以下目的地配置文件得分:

其中包括在测试时段期间源节点i在目的地节点j上访问的目的地端口72的数量。在本发明的实施例中,用于给定对(i,j)的较高目的地配置文件得分指示给定源节点i在测试时段期间在给定目的地节点j上扫描的端口40的数量大于给定源节点在训练时段期间扫描的给定目的地节点上的端口。较高的Scorei,j指示源节点i正在对目的地节点j执行端口扫描的较高概率。

最后,在步骤118中,处理器48可以识别其目的地配置文件得分超过指定阈值(即,水平)的源节点和目的地节点的给定对,从而指示可疑端口扫描,并且该方法结束。在一个实施例中,阈值可以包括得分的大得分值(例如,7、8、9或10)。在另一个实施例中,阈值可以包括低分值(例如,4、5或6),并且在测试时段期间源节点和目的地节点之间的失败连接的数量大于低失败连接值(例如,0、1或2)。

源配置文件生成

在第二异常端口扫描检测实施例中,处理器48可以使用源配置文件来检测潜在的恶意端口扫描。如下文所述,处理器48可以基于在指定时间段期间收集的端口扫描24生成用于每个给定源节点64的源配置文件,其向节点指示给定源节点是否是进攻性扫描器或周期性扫描器。在本发明的实施例中,来自进攻性和周期性扫描器的扫描不被认为是可疑的,并且进攻性和周期性扫描器可以被列入白名单。

计算机网络诸如网络28通常包括工作站28,该工作站28可以执行这样的过程,其执行合法端口扫描或执行类似于端口扫描的合法活动(即,具有不同的意图)。由于这些服务或活动有时源自同一源节点64,因此本发明的实施例可以生成并使用源配置文件来检测这些源节点,以便将它们的合法端口扫描活动列入白名单。

图4是示意性地示出根据本发明的实施例的、用于计算源配置文件,并且使用计算的源配置文件来检测是进攻性或周期性扫描器的任何源节点64并且将其列入白名单的方法的流程图。在步骤120中,使用在上文参考图2的描述中所述的实施例,处理器48识别一组端口扫描。为了识别该组端口扫描,处理器48在包括多个预定义时间段的时间跨度期间收集通信会话68并且将它们聚合成聚合通信会话58。每个聚合通信会话58包括给定端口扫描32,该给定端口扫描32使第一给定工作站26在给定时间段期间访问第二给定目的地26上的至少一个给定通信端口40。预定义时间段可以具有基本上相同的持续时间(例如,一天)。

在步骤122中,处理器48对于端口扫描中的每个给定源节点“i”计算scanned_dests_averagei,其指示目的地节点66的平均数量,该目的地节点66的相应通信端口40在给定源节点的任何给定扫描期间由给定源节点访问。在一些实施例中,scannned_dests_averagei包括给定源节点每个时间段扫描的目的地节点的平均数量,省略给定源节点没有执行扫描的时间段。

在步骤124中,对于端口扫描中的每个给定源节点“i”,处理器48计算对于给定源节点i的其指示时间段D的比值,在此期间给定源节点在由给定源节点执行的端口扫描中的至少一个端口扫描中访问目的地节点中的至少一个目的地节点。

在步骤126中,处理器48基于计算的scanned_dests_averagei平均值和scan_ratioi比值,将被分类为进攻性或周期性扫描器的源节点中的任何源节点列入白名单,如下文的标准中所述。为了将给定源节点64列入白名单,处理器48将给定源节点(即对应的端口号)添加到白名单80。

在本发明的实施例中,可以将进攻性扫描器定义为给定源节点64,其在每个时间段期间(例如,每天)扫描几个目的地节点66。例如,进攻性扫描器可能每小时扫描数据库服务器和网络服务器(即两个不同的目的地节点)以检查它们的相应状态。在一些实施例中,对于每个给定源节点64,处理器48可以首先将scan_daysi识别为给定源节点执行至少一次扫描的天数,并且如果超过第一低阈值(例如,2、3、4、5、6、7)和/或scan_ratioi超过第一高阈值(例如,0.5、0.6、0.7、0.8),可将给定源节点分类为进攻性扫描器。

例如,如果第一低阈值是3,第一高阈值是0.5,并且给定源节点64扫描的目的地节点66的日常数量是[3,0,4,4,6,3],则给定源节点是进攻性扫描器,因为scan_daysi=5,scanned_dests_averagei=4,并且scan_ratioi=0.833。

在本发明的实施例中,周期性扫描器可被定义为以较低频率(例如,每周一次)扫描许多目的地的给定源节点64。例如,周期性扫描器可以每周扫描网络28上所有节点(例如,工作站26)上的端口40,以查看是否有任何变化,诸如是否有任何新端口40开放或节点中是否存在任何相应的漏洞。以类似于检测进攻性扫描器的方式,对于每个给定源节点64,处理器48可以首先识别scan_daysi,并且如果超过第二高阈值(例如,10、15、20、25、30、35)和/或scan_ratioi超过第二低阈值(例如,0.10、0.15、0.2、0.25),可将给定源节点分类为周期性扫描器。

例如,如果第二高阈值为30,第一低阈值和第二低阈值为0.1,并且给定源节点64扫描的目的地节点66的日常数量为[0,0,1314,0,0,0],则给定源节点是周期性扫描器,因为scan_daysi=1、scanned_dests_averagei=1314,并且scan_ratioi=0.14。

在一个实施例中,处理器48可以接收指定第一低阈值和第二低阈值以及第一高阈值和第二高阈值的输入(例如,来自系统管理器)。在另一个实施例中,处理器48可以基于计算值(即,scanned_dests_averagei和scan_ratioi)的相应分布动态地设定这些阈值。例如,处理器48可以基于计算值的相应分布中的异常值(例如,固定百分比)动态地设定阈值。

返回流程图,在步骤126中,处理器48识别(即,在步骤120中识别的)端口扫描中的不在白名单80中的源节点中的任何源节点,并且该方法结束。

在一个实施例中,处理器48可以在任何给定时间段期间执行步骤128,以便识别在给定时间段期间执行端口扫描的给定非白名单源节点。在另一个实施例中,时间段包括一个或更多个第一时间段,之后是第二时间段,并且处理器48可以在一个或更多个第一时间段执行步骤120-126,并且在第二时间段执行步骤128。

端口配置文件

本文所述的实施例可以使用端口配置文件来检测潜在的恶意端口扫描。端口配置文件指示端口40的哪些组合不太可能是“正常”用户活动的一部分,而是网络扫描的一部分。端口配置文件背后的概念是,如果在短时间段(例如,一天)期间扫描端口,则存在可疑的端口组合。例如,如果合法用户想要访问由网络28上的给定工作站26提供的特定网络服务,则用户通常知道什么软件应用正在提供服务,以及软件应用正在使用的任何端口40。

在第一端口配置文件实施例中,服务(本文也称为软件类别)包括操作系统。例如,如果用户想要与运行WindowsTM操作系统(由华盛顿州雷蒙德市的微软公司生产)的给定工作站通信,用户可以使用端口号“3389”,该端口号用于远程桌面协议(RDP)服务。然而,如果用户尝试经由端口号“22”与给定工作站通信,则这可能是可疑的,因为端口号“22”通常由安全外壳(SSH)服务使用,该服务是LinuxTM操作系统中的服务,并且很少存在于WindowsTM操作系统中。

在第二端口配置文件实施例中,该服务包括数据库管理系统(DBMS)。在操作中,第一给定工作站26经由第二给定工作站上的与DBMS应用相关联的给定端口40与在第二给定工作站26上执行的DBMS应用通信。在该实施例中,可疑端口扫描可以包括与(即,在第二给定工作站上的)大量端口40通信的第一给定工作站,该端口40与对应的大量不同DBMS应用相关联。该类型的活动可能由进行服务枚举的攻击者引起,例如,其试图识别特定服务器上所有可用的DBMS应用。

重要的是要注意可疑端口扫描活动在上述两个实施例中是不同的。在操作系统实施例中,跨不同操作系统端口群组的少量端口扫描可能是可疑的。这是因为给定工作站26通常执行单个操作系统。然而,在DBMS实施例中,可疑端口扫描可能需要跨不同DBMS端口扫描群组的大量端口扫描以便被标记为可疑的。这是因为给定工作站26可以执行多于一个的DBMS应用。

在第一端口配置文件实施例中,处理器48可以定义用于对应的多个操作系统42的多个端口列表60。每个端口列表60包括由给定操作系统42共同使用的多个端口号40。因此,用于给定操作系统42的每个给定端口列表60包括由给定操作系统通常使用,并且其它操作系统42从不使用或很少使用的端口号40。可以具有相应端口列表60的操作系统42的示例包括但不限于WindowsTM(由华盛顿州雷蒙德市的微软公司生产)、LinuxTM、AndroidTM(由加利福尼亚州山景市的字母表公司生产)、macOSTM(也称为OS-XTM,由加利福尼亚州库帕蒂诺的苹果公司生产)。

例如:

第一给定端口列表60可以包括端口号“135”、“137”和“139”。这些端口40通常由WindowsTM服务使用。

第二给定端口列表60可以包括端口号“22”、“23”和“111”。这些端口40通常由LinuxTM服务使用。

用于在第一端口配置文件实施例中定义端口列表的基本原理是攻击者通常不知道在他们正在扫描的给定工作站26上执行的操作系统,并且攻击者的一个目标是识别操作系统42。因此,攻击者可以从多于一个端口的列表60中扫描几个端口40,以便识别在给定工作站上执行的操作系统。

例如,如果第一给定列表60包括WindowsTM使用的端口,第二给定列表60包括LinuxTM使用的端口,并且第三给定列表60包括macOSTM使用的端口,则对于每个源节点66和目的地节点66对,处理器48可以计算元组(N_Windows,N_Linux,N_macOS),该元组表示端口列表中端口号的相应计数,在测试时段期间(不需要训练时段)该端口列表由给定源节点在给定目的地节点上扫描。在该示例中:

处理器48不会标记如(4,0,0)的元组,因为给定目的地节点可能正在运行WindowsTM

处理器48将标记如(4,2,3)的元组,因为给定源节点尝试访问端口40,该端口40通常由macOSTM使用,但很少由WindowsTM使用。

在一些实施例中,处理器48可以使用用于元组中计数混合的指定阈值来识别“跨”多个操作系统的可疑端口扫描32。在第一示例中,如果给定元组指示对与操作系统中的一个操作系统相关联的端口40的阈值数量(例如,>3、>4或>5)的扫描,以及对与其余操作系统相关联的任何端口的正数的扫描,则处理器48可以将给定元组中的端口扫描标记为可疑的。在另一个示例中,如果给定元组指示对与最少2个不同操作系统相关联的端口40的相应大量(例如,>3、>4或>5)的扫描,则处理器48可以将给定元组中的端口扫描标记为可疑的。在第一示例中,处理器可以将导致元组(4,1,2)的端口扫描标记为可疑的,并且在第二示例中,处理器可以将导致元组(0,4,3)的端口扫描标记为可疑的。

在附加实施例中,处理器48可以将元组转换成处理器可以用来识别可疑端口扫描的概率。例如,处理器48可以计算probabilities_tuple=[p1,p2,...,pn],其中

可能存在端口值较小且概率被怀疑不准确的情况。换句话说,即使给定端口40之前没有被访问过,它在未来被访问的概率也不是零。在一个实施例中,处理器48可以使用方法诸如置信区间或拉普拉斯平滑以便改善估计。在另一个实施例中,处理器48可以计算给定元组的probabilities_tuple的熵,并且如果熵超过指定的阈值(例如,0.1、0.2),则将元组中的端口扫描标记为可疑的(即,因为它们正在访问多于一个组中的端口的可疑组合)。

在第二端口配置文件实施例中,处理器48可以定义用于对应的多个软件应用44的多个端口列表60。每个端口列表60包括多个端口号40,该端口号40由软件应用44的特定系列共同使用。因此,用于给定软件应用44的每个给定端口列表60包括通常由给定软件应用使用,并且其它软件应用44从不使用或很少使用的端口。在第二端口配置文件实施例中,软件应用44的系列(也称为类别)的示例包括但不限于数据库服务、电子邮件服务和远程访问服务(也称为远程会话服务)。

例如,如果软件应用44的系列包括数据库服务器,则用于数据库服务器的端口列表可以包括:

第一给定端口列表60包括用于MySQLTM的一个或更多个端口号40(例如,“3306”)。

第二给定端口列表60包括用于FirebirdTM的一个或更多个端口号40(例如,“1433”)。

第三给定端口列表60包括用于PostgreSQLTM的一个或更多个端口号40(例如,“5432”)。

第四给定端口列表60包括用于MongoDBTM的一个或更多个端口号40(例如,“27017”)。

第五给定端口列表60包括用于CassandraTM的一个或更多个端口号40(例如,“9042”)。

第六给定端口列表60包括用于MemcacheDBTM的一个或更多个端口号40(例如,“11211”)。

第七给定端口列表60包括用于AerospikeTM的一个或更多个端口号40(例如,“3100”)。

通常,给定节点(例如,给定工作站26或服务器)可能执行少量(例如,1-3个)不同的数据库服务器引擎。因此,如果处理器48检测到给定源节点64正在给定目的地节点66上扫描来自用于数据库服务器的不同端口列表60的至少阈值数量(例如,至少3个、至少4个或至少5个)的端口40,这可指示给定源节点正在寻找“任何”数据库服务器,并且因此不知道哪一个正在给定目的地配置文件上执行。当检测到对于给定网络服务从不同端口列表60扫描的大量端口时,具有零个或少数(例如,少于2个、少于3个或少于4个)成功会话可增加可疑性。

在一些实施例中,处理器48可以使用附加标准,诸如与不同端口40相关的检测到的失败连接的数量。在一个示例中,处理器48可以标记端口扫描(即,标记为可疑的),其扫描来自用于数据库服务器的不同端口列表60的大量(例如,至少四个或至少五个)端口40。在另一个示例中,处理器48可以将端口扫描标记为可疑的,该端口扫描用于扫描来自用于数据库服务器的不同端口列表60的少量(例如,至少两个或至少三个)端口40,其中端口扫描中的至少一个端口扫描具有失败连接(如上所述)。请注意,这些示例通常用于在短时间范围(例如,少于一小时、少于两小时或少于三小时)内执行的端口扫描。

在第一实施例中,阈值可包括大数,诸如至少5、至少6或至少7。在第二实施例中,阈值可包括不同端口列表中的小数(例如,至少2、至少3或至少4)个端口,并且在端口列表中的任何端口列表中的端口号中的任何端口号上至少有1个失败连接(即,对于该系列)。第一实施例和第二实施例中的端口扫描通常在短时间段(例如,一小时、两小时或三小时)内发生。

图5是示意性地示出根据本发明的实施例的、使用端口配置文件来检测跨软件系统端口扫描的方法的流程图。在步骤130中,处理器48定义特定软件类别中的多个软件系统,并且在步骤132中,系统处理器对于每个给定软件系统定义给定端口列表60,该给定端口列表60包括由给定软件系统专门使用的一组一个或更多个端口40。因此,每个端口列表50包括通信端口40(即,端口号)的不相交的至少第一集和第二集。该类别可包括提供网络服务(诸如数据库服务器或电子邮件服务器)的操作系统或软件应用。如上所述,如果该系列是操作系统,则每个端口列表60包括由操作系统诸如WindowsTM、LinuxTM或macOSTM使用的一个或更多个端口40。同样,如果该系列是DMBS应用,则每个端口列表60包括由DBMS应用诸如MySQLTM、PostgreSQLTM或CassandraTM使用的一个或更多个端口40。

在步骤134中,使用在上文参考图2的描述中所述的实施例,处理器48识别一组端口扫描。为了识别该组端口扫描,处理器48在预定义时间段(例如,一小时或一天)期间收集通信会话68并且将它们聚合成聚合通信会话58。每个聚合通信会话58包括给定端口扫描32,该给定端口扫描32使第一给定工作站26访问第二给定目的地26上的至少一个给定通信端口40。

最后,在步骤136中,使用上文所述的实施例,处理器48在已识别的端口扫描中(即,在步骤134中)识别访问第一端口列表60中的通信端口中的至少一个通信端口以及第二端口列表60中的通信端口中的至少一个通信端口的给定源节点64,并且方法结束。

与独立模型的偏差

本文所述的实施例可以计算网络28中端口使用的分布,并且使用计算的分布来识别网络上的可疑端口扫描。例如,在训练时段期间,处理器48可以检测到端口号“22”和“3389”被频繁使用,但很少一起使用。在随后的测试时段期间,如果处理器48检测到给定源节点64扫描了给定目的地节点66上的那两个端口40,则系统处理器可以针对给定源节点生成警报。

图6是示意性地示出根据本发明的实施例的、检测包括异常对端口40的端口扫描32的方法的流程图。在步骤140中,使用在上文参考图2的描述中所述的实施例,处理器48识别一组端口扫描。为了识别该组端口扫描,处理器48在预定义时间段期间收集通信会话68并将它们聚合成聚合通信会话58。每个聚合通信会话58包括给定端口扫描32,该给定端口扫描32使第一给定工作站26访问第二给定目的地26上的至少一个给定通信端口40。

在步骤142中,处理器48对于在预定义时间段期间被扫描的每个给定端口p,计算给定源节点64在预定义时间段期间在任何端口扫描32中访问给定目的地节点66上的给定端口p的概率Pp

在步骤144中,处理器48对于每对端口p1和p2,计算在预定义时间段期间在任何端口扫描32中给定源节点64与给定目的地节点66上的端口p1和p2之间的连接的联合概率JPp1,p2

针对在训练时段期间被扫描的每对端口40计算JPp1,p2后,在步骤146中,处理器48计算端口对得分(PPS),系统处理器可以使用它来识别具有以下特性的端口p1和p2对:

端口p1在预定义时间段期间被任何给定源节点64频繁地扫描。

端口p2在预定义时间段期间被任何给定源节点64频繁地扫描。

给定源节点64在预定义时间段期间很少扫描给定目的地节点66上的端口p1和p2二者。

为了计算端口对得分,处理器48可以使用以下公式

在方程(3)中,较高的PPS得分指示一对端口40,该对端口40(各自)在网络上被频繁扫描,但在预定义时间段期间很少在给定目的地节点66上被给定源节点64一起扫描。在本发明的实施例中,对于高PPS得分的阈值可以是高值。例如,阈值可以大于20、大于30或大于40。

最后,在步骤148中,处理器48识别在预定义时间段期间扫描具有高端口对得分的一对端口40的源节点中的任何源节点,并且该方法结束。在本发明的实施例中,具有高端口对得分的被扫描的一对端口40指示用于该对端口p1和p2的相应JPp1,p2低于取决于端口p1和p2的相应概率Pp的阈值。

在一个实施例中,预定义时间段可以包括可以具有基本上相同的持续时间的多个子时段。在该实施例中,处理器48可以在任何给定子时段期间执行步骤150,以便识别在给定子时段期间扫描具有高端口对得分的一对端口40的给定源节点64。在另一个实施例中,子时段包括一个或更多个第一子时段,之后是第二子时段,并且处理器48可以在一个或更多个第一子时段执行步骤140-146,并且在第二子时段执行步骤148。

扫描器探针

一些扫描工具使用端口扫描探针,该探针包括加载在一个或更多个节点26上的给定软件应用44,并被配置为扫描网络上的其它节点26,并将扫描结果报告给扫描服务器(例如,给定节点26)。扫描探针可以部署在具有节点26的网络中,扫描服务器不能使用扫描所需的所有端口直接访问该节点26(例如,由于防火墙保护了网络的子集)。在操作中,探针可以部署在多个网络端点(即节点26)上以随机执行端口扫描,并且然后将扫描结果传输回给定节点(即服务器)。由于由扫描器探针执行的扫描可以生成警报,因此本发明的实施例使处理器48能够将给定扫描器探针执行的扫描列入白名单。

图7是示意性地示出根据本发明的实施例的、检测任何部署的扫描器探针的方法的流程图。在步骤150中,使用在上文参考图2的描述中所述的实施例,处理器48识别一组端口扫描。为了识别该组端口扫描,处理器48在预定义时间段期间收集通信会话68并将它们聚合成聚合通信会话58。每个聚合通信会话58包括给定端口扫描32,该给定端口扫描32使第一给定工作站26访问第二给定目的地26上的至少一个给定通信端口40。

在步骤152中,处理器48在已识别的端口扫描中识别大业务量端口40的群组。在本发明的实施例中,如果在预定义时间段期间通过给定端口的数据业务的量超过预定义阈值,则处理器48可以将给定端口40分类为具有大业务量。预定阈值的示例包括但不限于200、400和600字节。在一些实施例中,给定端口可以在给定节点26上。换句话说,处理器48可以将给定节点和给定端口的组合分类为具有大业务量。

在操作中,处理器48可以在聚合端口扫描(即,对应于给定端口扫描32)的通信会话中使用容量88和/或反向容量78,来确定给定端口扫描32中的数据业务是否超过预定义阈值。在一些实施例中,如果在任何给定通信会话中(即,在给定端口扫描32期间)通过给定端口的最大数据量超过预定义阈值,则处理器48可以将给定端口40分类为具有大业务量。

在步骤154中,处理器48对于已识别的端口扫描生成指示在端口扫描中的每个端口扫描中被访问的除了大业务量端口之外的通信端口的相应签名82。换句话说,用于给定端口扫描32的给定签名82可以包括在给定端口扫描期间被访问并且未被分类为具有大业务量的一组通信端口。

在步骤156中,处理器48计算签名中的每个签名在该组端口扫描上的相应出现频率,并且在步骤158中,处理器通过初始化白名单并且然后向白名单添加签名来聚集白名单80,对于该签名,相应出现频率大于预定义阈值。在一个实施例中,对于给定签名82的出现频率可以包括以下信息,诸如:

给定签名出现在所有已识别的端口扫描中的出现次数。

执行具有与给定签名相同的签名82(即该组非高容量端口)的端口扫描32的源数量。

具有与给定签名中的一组端口相同的被扫描的一组端口的目的地数量。

在该实施例中,具体阈值的示例包括但不限于:

出现次数>第一阈值,诸如8、10或12。

源数量>第二阈值,诸如0、1或2。

源数量<第三阈值,诸如30、40或50。

目的地数量>第四阈值,诸如0、1、2或3。

目的地数量<第五阈值,诸如10、20、30或40。

在一些实施例中,处理器48可以使用阈值的组合来识别签名以添加到白名单。例如,给定组合可以是:

出现次数>10,以及

源数量>1,以及

源数量<40,以及

目的地数量>2,以及

目的地数量<20。

最后,在步骤160中,处理器48在具有不在白名单中的相应签名的已识别的端口扫描中识别源节点中的任何源节点,并且该方法结束。

在一个实施例中,预定义时间段可以包括可以具有基本上相同的持续时间的多个子时段。在该实施例中,处理器48可以在任何给定子时段期间执行步骤160,以便在给定子时段中识别具有不在白名单中的相应签名的已识别的端口扫描32。在另一个实施例中,子时段包括一个或更多个第一子时段,之后是第二子时段,并且处理器48可以在一个或更多个第一子时段执行步骤150-158,并且在第二子时段执行步骤160。

应当理解,上述实施例是通过示例的方式引用的,并且本发明不限于已经在上文具体示出和描述的内容。相反,本发明的范围包括上文所述的各种特征的组合和子组合二者,以及本领域技术人员在阅读前述描述后会想到的并且在现有技术中未公开的本发明的变型和修改。

42页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种配置客户端的方法及装置、终端设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类