一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

检测异常的系统和方法与流程

2021-11-27 02:28:00 来源:中国专利 TAG:


1.本说明书一般涉及用于互联网安全的方法和设备,尤其涉及用于异常检测的方法和设备。


背景技术:

2.在信息技术中,统一资源标识符(uri)是用于标识在线资源的字符串。此类标识能够使用特定协议通过网络(通常是万维网)与资源进行交互。uri也是黑客经常干涉的常见目标。通过操纵,黑客可以窃取敏感或私人信息、冒充真实用户、或执行其他类型的未经授权的活动。为了及时检测到黑客活动并防止进一步的损失,密切监测对uri的互联网访问是否有异常是至关重要的。


技术实现要素:

3.本说明书的各种实施例包括用于检测异常的系统、方法和非暂时性计算机可读介质。
4.根据一个方面,用于检测异常的示例性方法包括:监控对统一资源标识符(uri)的互联网访问,以获取包括与所述访问对应的查询的当前查询字符串的访问信息,从所述当前查询字符串和所述当前查询字符串中的第二参数的当前字符串位置获取一个或以上第二参数,以及基于将所述第二参数的所述当前字符串位置与至少两个第一参数的历史字符串位置进行比较,确定所述查询是否与异常相关联。所述第一参数包括所述第二参数。所述第一参数的所述历史字符串位置分别基于访问所述uri的历史查询的历史查询字符串来确定。
5.在一些实施例中,所述第一参数的确定的历史字符串位置分别与所述第一参数关于字符串位置的确定的概率分布相关联。基于将所述第二参数的所述当前字符串位置与所述第一参数的所述历史字符串位置进行比较,确定所述查询是否与所述异常相关联,包括基于所述第二参数的所述当前字符串位置和所述确定的概率分布确定所述查询是否与所述异常相关联。
6.在一些实施例中,所述基于所述第二参数的所述当前字符串位置和所述确定的概率分布确定所述查询是否与所述异常相关联包括:对于每个所述第二参数,基于所述确定的概率分布确定在对应的当前字符串位置处的第一概率,并将第一权重耦合到所述第一概率,将所述第一概率与所述第一权重对所述第二参数求和,以获取第一结果,对于不包括所述第二参数的每个所述第一参数,基于所述确定的概率分布确定从所述当前查询字符串丢失的第二概率,并将所述第一权重耦合到所述第二概率,将与所述第一权重耦合的所述第二概率与不包括所述第二参数的所述第一参数相加,以获取第二结果,以及将第二权重耦合到所述第二结果,将所述第一结果加到与所述第二权重耦合的所述第二结果,以获取分数,将所述分数与分数阈值进行比较,以及响应于确定所述得分低于所述分数阈值,确定所述查询与所述异常相关联。
7.在一些实施例中,所述历史查询是良性查询。确定所述第一参数关于所述字符串位置的所述概率分布包括:对于每个所述字符串位置处的每个所述第一参数,除以所述每个第一参数在所述每个字符串位置具有的查询数或在所述历史查询字符串中缺少的历史查询总数,并相加小数,以获取调整前概率,以及调整所述调整前概率以获取调整后概率。调整后概率包括将所述每个第一参数替换为预设数量的字符串位置的公差。
8.在一些实施例中,所述uri包括静态资源或应用程序接口(api)中的至少一个。
9.在一些实施例中,所述访问信息还包括与引起所述访问的计算设备对应的互联网协议(ip)地址。所述方法还包括:确定被确定为与所述异常相关联的所述查询的数量,以及响应于确定的查询的数量超过查询阈值,确定所述ip地址与所述异常相关联。
10.在一些实施例中,所述方法还包括响应于确定所述异常,执行至少一个:触发警报、阻止对所述uri的所述访问、阻止所述ip地址的访问、基于确定的异常评估所述ip地址、或者基于所述确定的异常评估所述uri。
11.根据另一方面,用于检测异常的方法包括:确定在时间间隔内访问第一统一资源标识符(uri)的互联网协议(ip)地址的累积访问量,将访问所述第一uri的ip地址的累积量与在所述时间间隔内访问第二uri的ip地址的历史访问量进行比较,以及基于所述比较确定所述第一uri是否与异常相关联。所述第一uri和所述第二uri对于每次访问都被调用或都未被调用。
12.在一些实施例中,所述基于所述比较确定所述第一uri是否与异常相关联包括:从基于余弦相似度或皮尔森rho的所述比较中确定相似度指数,以及响应于确定的相似度指数低于指数阈值,确定所述第一uri与所述异常相关联。
13.在一些实施例中,所述方法还包括:确定在所述时间间隔内访问所述第一uri的一组总的非白名单ip地址的总访问量,确定在所述时间间隔内总访问量在所述非白名单ip地址上分布的分布熵,响应于确定的分布熵低于熵阈值,确定所述总访问量集中在一个或以上异常ip地址上,所述非白名单ip地址包括所述异常ip地址,以及应用标准分数和tukey分位数栅栏分数来确定所述一个或以上异常ip地址。
14.在一些实施例中,在基于所述比较确定所述第一uri是否与所述异常相关联之前,还包括将访问所述第一uri的ip地址的累积访问量与在所述时间间隔内访问所述第一uri的ip地址的历史访问量进行比较;以及基于所述比较确定所述第一uri是否与所述异常相关联,包括基于所述比较确定所述第一uri是否与所述异常相关联。
15.在一些实施例中,第一和第二uri每个包括静态资源或应用程序接口(api)中的至少一个。
16.在一些实施例中,所述方法还包括:响应于确定所述异常,执行至少一个:触发警报、阻止对所述第一uri的所述访问、阻止所述ip地址的访问、基于确定的异常评估所述ip地址、或者基于所述确定的异常评估所述第一uri。
17.根据另一方面,用于检测异常的方法包括:确定在时间间隔内访问第一统一资源标识符(uri)的互联网协议(ip)地址的累积访问量,将访问所述第一uri的ip地址的累积访问量与在所述时间间隔内访问所述第一uri的其他ip地址的累积访问量进行比较,以及基于所述比较确定所述第一uri是否与异常相关联。
18.在一些实施例中,所述基于所述比较确定所述第一uri是否与异常相关联包括:确
定与在所述时间间隔内访问所述第一uri的所述其他ip地址相比,衡量所述ip地址的过度访问量程度的分数;以及响应于确定的分数超过阈值分数,确定所述ip地址与所述异常相关联。
19.在一些实施例中,确定所述得分包括:对于在所述时间间隔内访问所述第一uri的所有ip地址,确定所述ip地址的标准分数和tukey分位数栅栏分数中的每个,以及基于所述标准分数和所述tukey分位数栅栏分数确定所述分数。
20.在一些实施例中,所述方法还包括:确定所述ip地址在所述时间间隔内访问服务器的另一累积访问量,其中所述服务器提供包括所述第一uri的至少两个uri,确定(1)表示所述另一累积访问量跨uri分布的浓度熵,以及(2)表示所述另一累积访问量在预设数量的所述uri上的浓度的浓度百分比,以及响应于确定的浓度熵低于浓度熵阈值,并且确定的浓度百分比高于浓度百分比阈值,确定所述ip地址与所述异常相关联。
21.在一些实施例中,所述至少两个uri与所述服务器提供的应用程序相关联,所述应用程序可从安装所述应用程序的计算设备访问,以及所述应用程序将运输请求匹配到车辆服务提供商。
22.在一些实施例中,所述第一uri包括静态资源或应用程序接口(api)中的至少一个。
23.在一些实施例中,所述方法还包括:响应于确定所述异常,执行至少一个:触发警报、阻止对所述第一uri的所述访问、阻止所述ip地址的访问、基于确定的异常评估所述ip地址、或者基于所述确定的异常评估所述第一uri。
24.根据一方面,用于异常检测的系统可以包括处理器和存储指令的非暂时性计算机可读存储介质,所述指令在由所述处理器执行时使所述系统执行用于检测异常的方法。检测异常的方法可以是本文描述的任何方法。
25.本说明书实施例公开的系统、方法和非暂时性计算机可读介质的上述和其他特征,以及操作方法、结构相关元件的功能、部件的组合和制造的经济性,在参考附图考虑以下描述和所附权利要求时,将变得更加明显,所有附图均构成本说明书的一部分,其中相同的附图标记指定了各个附图中的相应部分。然而,应当明确地理解,附图仅出于说明和描述的目的,并不意味着是对本说明书实施例范围的限定。
附图说明
26.在所附权利要求中具体阐述了本技术的各种实施例的某些特征。通过参考下面的详细描述,可以更好地理解本技术的特征和优点,所述详细描述阐述了说明性实施例,在其中利用了本发明的原理,并结合了附图:
27.图1示出了根据各种实施例的用于检测异常的示例性环境。
28.图2示出了根据各种实施例的uri访问的示例性交互。
29.图3示出了根据各种实施例的uri访问历史的示例性日志。
30.图4a示出了根据各种实施例的用于检测异常的示例性方法的流程图。
31.图4b示出了根据各种实施例的用于检测异常的另一示例性方法的流程图。
32.图4c示出了根据各种实施例的用于检测异常的另一示例性方法的流程图。
33.图5示出了示例性计算机系统的框图,其中可以实现本文描述的任何实施例。
具体实施方式
34.异常检测作为哨兵,部署以监控对在线资源的互联网访问,并为任何互联网安全漏洞提供第一次警告。此类在线资源可能是在线主机提供的程序(例如,网站或应用程序(app))的一部分。例如,网站可以为浏览、显示或下载提供一些文本或音频文件。又例如,在移动电话上安装的app可以基于用户输入提供动态生成的信息。
35.对于互联网访问,在线资源由包含字符串的统一资源标识符(uri)标识。uri可以是静态的或动态的。通常,uri包含两个部分:第一部分表示主机的字符串,以及第二部分显示资源的路径,通常这两个部分由:“/”分开。在一个示例中,uri标识了一个静态文件resource.txt:https://example.org/absolute/uri/with/absolute/path/to/resource.txt,以及resource.txt之前的字符串表示主机。在另一个示例中,uri标识了一个动态运行函数,并且这种uri可以被称为应用程序编程接口(api)。以下uri标识动态函数:https://example.org/absolute/uri/with/absolute/path/to/function/show_my_name?name=david。在本技术中,虽然在各个地方使用api作为示例性uri,但是这样的说明不排除静态uri。
36.对于手机app等面向用户的程序,许多uri在外部(例如,通过app向客户提供服务)和内部(例如,为工程师提供开发工具或应用程序)向用户公开。在车辆服务平台app的一个示例中,寻车者通过app与车辆驾驶员进行匹配,以便驾驶员提供请求的交通工具。通过车辆服务平台app的uri,可以执行诸如上传客户照片、检索信息(例如,所请求的交通工具的估计价格)等活动。与此同时,这些各种uri可以是流行的攻击目标,这些攻击利用这些服务将恶意内容赋予运行这些服务的web服务器。这些攻击可能恶意创建大量web服务器访问,严重降低用户体验甚至破坏web服务器,以企图恶意地检索内部数据和信息,或者甚至攻击系统并导致进一步损坏。
37.现有技术无法有效检测异常和识别漏洞。传统上,需要大量的人力来识别可疑访问。例如,一个每天处理数百万甚至更多uri和访问的大型app,如果没有计算机辅助和自动检测,就无法切实得到保护。本说明书实施例的方法可以监控被访问uri、访问互联网协议(ip)地址和访问查询的“行为”,以有效且高效的方式检测异常。为了保护信息安全和功能免受漏洞和uri攻击,构建一个异常检测系统非常重要,该系统可以检测被设计模型和算法掩盖的攻击。
38.图1示出了根据各种实施例的用于检测异常的示例性环境100。如图1所示,示例性环境100可以包括至少一个计算系统102,该计算系统102包括一个或以上处理器104和内存106。内存106可以是非暂时性和计算机可读的。内存106可以存储指令,当由一个或以上处理器104执行时,使得一个或以上处理器104执行本文描述的各种步骤或方法。系统102可以在诸如服务器、计算机、移动电话、平板电脑等各种计算设备上实现或作为各种计算设备实现。系统102可以安装有适当的软件(例如,app访问监控程序等)和/或硬件(例如,有线连接、无线连接等)以访问环境100的其他设备。
39.环境100可以包括系统102可访问的一个或以上数据存储(例如,数据存储108)和一个或以上计算设备(例如,计算设备109)。在一些实施例中,计算设备109可以在诸如移动电话、平板电脑、服务器、计算机、可穿戴设备(智能手表)等各种设备上或作为各种设备实现。
40.环境100还可以包括耦合到系统102的一个或以上计算设备(例如,计算设备107a、107b等)。计算设备107a和107b可以包括诸如服务器、移动电话、平板电脑、计算机、可穿戴设备(智能手表)等设备。计算设备107a和107b可以例如通过互联网向系统102发送数据或从系统102接收数据。
41.在一些实施例中,系统102和一个或以上计算设备(例如,计算设备109)可以集成在单个设备或系统中。或者,系统102和一个或以上计算设备可以作为单独的设备运行。一个或以上数据存储(例如,数据存储108)可以是系统102可访问的任何地方,例如,在内存106中、在计算设备109中、在耦合到系统102的另一设备(例如,网络存储设备)中、或在另一存储位置(例如,基于云的存储系统、网络文件系统等)中。系统102可以被实现为单个系统或彼此耦合的多个系统。通常,系统102、计算设备109、107a和107b以及数据存储108可以通过一个或以上有线或无线网络(例如,互联网)彼此通信,通过这些网络可以传送数据。
42.图2示出了根据各种实施例的uri访问的示例性交互。图2所示和下面呈现的操作旨在说明。图2中所示的各种设备与图1中所示和上文所述的设备相同。
43.在一些实施例中,系统102和数据存储108可以提供程序(例如,网站、app)。该程序可以与各种资源相关联,例如,存储在数据得分108中。可以通过uri来标识源。有些资源是静态的,有些是动态的,由api识别。包括uri的程序可以被各种计算设备访问。例如,计算设备109可以是白名单设备(例如,由程序的主机的工程师或另一个认可的一方使用的计算机),其可以直接或通过网络访问资源。这种访问也是白名单。又例如,计算设备107a和107b可以是访问资源的公共设备。此类访问可能会受到更多审查,因为某些访问可能是由恶意用户进行的。
44.在一些实施例中,系统102可以实现在线信息或服务平台。该服务可以与车辆(例如,汽车、自行车、船、飞机等)相关联,并且该平台可以被称为车辆(服务叫车或乘车订单调度)平台。该平台可以接受运输请求,识别满足请求的车辆,安排接乘和处理交易。例如,用户可以使用计算设备107a(例如,安装有与平台相关联的软件app的移动电话)从平台请求运输。系统102可以接收请求并将其转发给各种车辆司机(例如,通过将请求发布到驾驶员携带的移动电话)。车辆司机可以使用计算设备107b(例如,安装有与平台相关联的app的另一移动电话)接受发布的运输请求并获取接乘位置信息。费用(例如,运输费)可以在系统102和计算设备107a和107b之间进行交易。一些平台数据可以存储在存储器106中或可从数据存储108和/或计算设备109、107a和107b检索。
45.在一些实施例中,正常用户可以使用计算设备107a访问车辆平台,遵循程序提供的规则并享受服务。当正常用户通过app触发功能时,例如,通过按下命令来发送请求,可以向程序主机(例如,服务器形式的系统102)发送查询,主机可以执行一些计算并返回相应的结果。然而,当黑客通过病毒劫持计算设备107a或者使用其他计算设备访问车辆平台时,黑客可以操纵查询以用于恶意目的。例如,黑客可能会更改查询的查询字符串,用数百万条查询轰炸主机服务器,探索所有uri是否存在漏洞等。通过这种方式,黑客可能希望找到漏洞来探索和植入病毒或以其他方式实现有价值的目标。为了防止黑客,可以监控对程序的互联网访问,并且可以通过以下一种或以上方法检测到程序操作的异常。下面描述api级别、api

ip级别和请求级别的异常检测方法。
46.参考图3,图3示出了根据各种实施例的uri访问历史的示例性日志。图3所示和下
面呈现的操作旨在说明。
47.在一些实施例中,为了执行异常检测,系统102可以获取并监控web服务器访问日志或每个访问的元数据的替代记录。如图3的示例所示,日志可能包括诸如访问的uri(例如api)、源ip地址、时间等信息。日志可以包括其他信息,例如用户代理(设备类型)等。
48.对于api级别异常检测,在一些实施例中,在每个时间间隔(例如,每天、每小时)确定从每个单独ip(互联网协议)地址到每个相关api的总服务器访问量。对特定api的集中高流量攻击将大幅增加此api的访问量到异常高水平,这为uri异常提供了指示。一段时间内的api总访问量波动趋势可以与其历史趋势进行比较,也可以与“配套api”的趋势进行比较,不相似性超过阈值可能表示异常。配套api是在正常用例中通常与相关api一起使用或顺序使用的api。例如,对于车辆服务应用程序,定位客户位置的api和估算运输价格的api可以是相互伴随的api。
49.可以以各种方式定义访问量。例如,托管服务器接收到api的访问查询时,使用时间戳、访问ip地址、api等进行一次访问历史记录。可以记录一定时间段(例如,一小时)内的所有访问,并且可以在该时间段的访问量中使用该时间段的访问总数。
50.因此,在一些实施例中,一种异常检测方法包括:确定该时间间隔内访问第一统一资源标识符(uri)的互联网协议(ip)地址的累积访问量,将访问第一uri的ip地址的累积访问量与在时间间隔内访问第一uri的ip地址的历史访问量进行比较,和/或将访问第一uri的ip地址的累积量与在时间间隔内访问第二uri的ip地址的历史访问量进行比较,并基于其中一个或两个比较来确定第一uri是否与异常相关联。第一uri和第二uri对于每次访问都被调用或都未被调用。第一和第二uri可以各自包括静态资源或应用程序接口(api)中的至少一个。
51.在一些实施例中,为了防止额外的损失,该方法可以进一步包括:响应于确定异常,执行至少一个:触发警报、阻止对第一uri的访问、阻止ip地址的访问、基于确定的异常评估ip地址、或者基于确定的异常评估第一uri。可以根据对资源的公共访问的控制程度来执行这些操作。
52.为了确定趋势之间的相似性或不相似性,在一个示例中,可以将一段时间内的平均访问量的增加与阈值进行比较。在另一个示例中,可以计算显示两个系列数据(例如,本周api访问量的第一时间序列和上周api访问量的第二时间序列、api访问量的第一时间序列和其“配套api”的第二时间序列)之间相似度的指数。相似度指数可以是,例如,余弦相似度(衡量内积空间的两个非零向量之间的相似性,用于测量它们之间夹角的余弦值)、皮尔森rho(衡量两个变量之间的线性相关性)等。低相似度指数可能会触发潜在异常的警报,并导致进一步的行动。
53.因此,在一些实施例中,基于比较确定第一uri是否与异常相关联包括:基于余弦相似度或皮尔森rho通过比较确定相似度指数,并且响应于所确定的相似度指数低于指数阈值,确定第一uri与异常相关联。
54.在一些实施例中,如果确定访问量主要集中在几个少数ip地址上,并且访问的ip地址不在白名单(安全且可在内部用于合法和良性开发(例如测试或数据检索)的ip地址列表),可能会触发警报。例如,面向客户的api不应具有如此高的集中度,因为在使用应用程序的过程中,客户不需要密切地查询这些api。api的访问量集中度的示例性测试可以基于
在时间间隔中计算来自每个访问ip的访问量的api的分布熵。
55.时间间隔t的
56.其中mip、api、t为相关ip在时间t对api的访问量,mapi、t为api在时间t的总访问量。这里,测试的访问量可以在上述计算中排除来自白名单ip的访问。大于阈值的计算熵表明对该api的访问分布到不同的ip,这更接近于正常。相比之下,低于阈值的计算熵表明体积过度集中于api,这可能表明异常。
57.因此,在一些实施例中,用于检测异常的方法还包括:确定在时间间隔内访问第一uri的一组总的非白名单ip地址的总访问量,确定在时间间隔内总访问量在非白名单ip地址上分布的分布熵,以及响应于确定的分布熵低于熵阈值,确定总访问量集中在一个或以上异常ip地址上,非白名单ip地址包括异常ip地址。
58.在一些实施例中,异常值ip地址的数量提供了异常的线索。当有关api的访问量远高于访问api的多数ip地址时,ip地址成为一个异常值。异常值的程度可以通过下面描述的标准分数和tukey分位数栅栏分数来衡量。异常ip地址数量超过阈值可能表明存在某种异常,例如,异常ip地址可能未经授权访问了api。因此,在一些实施例中,用于检测异常的方法还包括:应用标准分数和tukey分位数栅栏分数以确定一个或以上异常ip地址。
59.因此,基于量的api级别异常检测可以触发关于api的警报。该警报意味着访问api的流量是不寻常的,并且api可能很容易受到黑客攻击或其他未经授权的活动。响应警报时,工程师可以切断公共访问api,彻底检测漏洞,并修补漏洞,从而防止进一步损失。
60.对于api

ip级别异常检测,在一些实施例中,可以确定用于检测异常的访问量的分数。当攻击者恶意攻击api时,攻击ip将在攻击期间访问攻击的api,除非攻击者故意使用技术将攻击传播到大量不同的ip。要检测异常,可以确定衡量每个ip的访问量异常高的分数。由于重点是异常高的行为而不是异常低的行为,异常值得分偏高。下面描述标准分数和tukey分位数栅栏分数方法,用于确定访问量分数。
61.标准分数
62.其中μ(api,t)=m
api,t
/在时间t访问api的ip数,是在时间t每个ip访问api的平均访问次数;σ是在时间t不同ip访问该api的标准差。
[0063][0064]
在一些实施例中,标准分数可以与阈值进行比较。如果标准分数超过阈值,则表示与访问相同api的其他ip相比,分析的ip在时间t访问相关api的次数过多。
[0065]
tukey分位数栅栏分数
[0066]
其中,q75(api,t)是在时间t访问api的所有ip中的访问量的第75个分位数。例如,如果q75(api,t)为1000,则75%的ip在时间t访问api的访问量低于1000。类似地,q25(api,t)是第25个分位数。q25(api,t)至q75(api,t)形成一个tukey分位数栅栏,其中一半的ip的访问量驻留在其中。如果与栅栏的总宽度q75(api,t)

q25(api,t))相比,单个ip的访问次数远高于栅栏的“高条”(这里,高条是q75(api,t)),它表示异常。因此,可以将tukey分位数栅栏分数与阈值进行比较,以检测异常和可能导致这种异常的ip。
[0067]
在一些实施例中,标准分数和tukey分位数栅栏分数都用于异常检测,因为当单独用于异常检测时,它们中的任何一个都可能遇到其不具有指示性的情况。
[0068]
因此,在一些实施例中,用于检测异常的方法包括:确定在时间间隔内访问第一统一资源标识符(uri)的因特网互联网协议(ip)地址的累积访问量,将访问第一uri的ip地址的累积访问量与在时间间隔内访问第一uri的其他ip地址的累积访问量进行比较,以及基于比较确定第一uri是否与异常相关联。第一和第二uri可以每个包括静态资源或应用程序接口(api)中的至少一个。在一个示例中,至少两个uri与由服务器提供的应用程序相关联,该应用程序可从安装的计算设备访问,并且应用程序将运输请求与车辆服务提供商匹配。在一些实施例中,为了防止额外的损失,该方法可以进一步包括:响应于确定异常,执行至少一个:响应于确定异常,执行至少一个:触发警报、阻止对第一uri的访问、阻止ip地址的访问、基于确定的异常评估ip地址、或者基于确定的异常评估第一uri。
[0069]
在一些实施例中,基于比较确定第一uri是否与异常相关联,包括:确定与在时间间隔内访问第一uri的其他ip地址相比,衡量ip地址的过度访问量程度的分数;以及响应于确定的分数超过阈值分数,确定ip地址与异常相关联。例如,确定分数包括:对于在时间间隔内访问第一uri的所有ip地址,确定ip地址的标准分数和tukey分位数栅栏分数中的每个;以及基于标准分数和tukey分位数栅栏分数确定分数。
[0070]
标准分数和tukey分位数栅栏分数可以捕获与大量访问相关的ip。但是,某些ip可能会攻击中等数量的api,或者不被上述分数捕获。为了补充标准分数和tukey分位数栅栏分数,第三个指标测量“ip的访问浓度”,以帮助确定分析的ip是否在时间t导致相关的api出现异常。
[0071]
当黑客攻击一个api时,攻击只集中在一个api上,或黑客最感兴趣的几个api上,而客户、内部工程师或合作组织通常会触发或调用一组可预测的api来完成任务,从而正常使用应用程序。因此,当一个ip访问一个或以上api的数量激增且其访问集中在一个或以上api中时,异常检测系统至少应检测到该可疑模式并标记为异常。用于访问一个或以上api的ip的浓度程度可以通过以下两种方法确定:浓度熵和浓度百分比。为避免混淆,可以组合两种措施以检测异常。
[0072]
ip的示例性浓度熵确定如下:
[0073]
时间间隔t的
[0074]
其中m
ip,t
是在时间t从ip到托管服务器的总访问量。低于阈值的熵表明来自ip的访问过于集中,并且可以被视为异常。
[0075]
对于浓度百分比,在一些实施例中,可以将时间t来自某个ip的前n个api的访问量相加,并且可以将时间t时该总和占来自ip的总访问量的百分比确定为m
ip,t
。高于浓度的百分比表明ip的访问过于集中,并且可以被视为异常。例如,如果n=3,阈值为90%,则当ip的90%的访问集中在其前3个api上时,检测到异常。
[0076]
因此,在一些实施例中,用于检测异常的方法还包括:确定ip地址在时间间隔内访问服务器的另一累积访问量,其中服务器提供包括第一uri的至少两个uri,确定(1)表示另一累积访问量跨uri分布的浓度熵,以及(2)表示另一累积访问量在预设数量的uri上的浓度的浓度百分比,以及响应于确定的浓度熵低于浓度熵阈值,并且确定的浓度百分比高于
浓度百分比阈值,确定ip地址与异常相关联。
[0077]
对于请求字符串级异常检测,在各种实施例中,可以在每个服务器访问请求级别分析请求字符串,以进行详细的异常检测分析。下面首先描述示例性请求字符串,然后是检测异常的方法。在一个示例中,在服务器日志中记录的请求字符串可能具有以下格式:
[0078]
111:111:11:11,2017/01/0101:00:00000,www.xyz.com,get/passenger/estimateprice?openid=abcd...
[0079]
这里,“111:111:11:11表示ip地址,”2017/01/0101:00:00000“表示时间戳,”www.xyz.com“代表主机或域,”get/passenger/estimateprice?openid=abcd“表示请求。这些请求字符串的属性仅仅是示例性的。除了上面示例中所示的那些之外,还可以存在更多的属性。在请求字符串中,第一个单词(通常在大写字母中),例如“get”或“post”表示操作。第一个单词后面和后面第一个空格的部分是请求内容本身。
[0080]
下面给出了请求的另一个示例:
[0081]
passenger/estimateprice?openid=abcd&phone=123456789&cityid=1&call_car_type=0&carpool_seat_num=2&carpool_station_type=1&client_type=1&...
[0082]
该示例性请求字符串用于调用api并将参数传递给引用的api。问号之前的路径,passenger/estimateprice,是api的定位器。问号前的路径与主机或域一起构成uri(www.xyz.com/passenger/estimateprice/),在本例中也可以被称为api。问号后的字符串形成了一个查询,该查询将成对的参数/属性及其相应的值(以“=”划线,以“&”分隔)传递给api,以使用这些成对值作为输入执行特定功能。在上面的例子中,apiwww.xyz.com/passenger/estimateprice/的任意输入包括:
[0083]
openid:abcd
[0084]
phone:123456789
[0085]
cityid:1
[0086]
call_car_type:0
[0087]
carpool_seat_num:2
[0088]
carpool_station_type:1
[0089]
client_type:1
[0090]
可以依赖请求字符串中包含的参数及其顺序来进行异常检测。在一些实施例中,当诸如客户或良性应用程序的普通用户使用api时,查询字符串由api的软件开发人员开发的一些计算机程序生成,并且生成的查询字符串组织来自用户端的原始输入。因此,查询字符串在包含的参数和每个查询字符串中参数的相对顺序方面彼此具有相似的模式。根据具体的正常/良性使用情况,包含的参数和订单模式可能会有所不同,但通常在有限的范围内。至于黑客,他们不太可能知道如何产生这些查询字符串,可能无法理解如何使用某些参数,或者放弃完全模仿合法查询。因此,伪造的查询可能没有良性查询的精确或相似的参数模式。基于此类差异,可以识别恶意查询以检测异常。
[0091]
在一些实施例中,历史良性数据可用于“学习”参数模式,即通过机器学习。该模式可以通过计算特定参数a位于api查询字符串中第i个位置的概率来学习,表示为p(a,i)。
[0092]
[0093]
其中n
data
是历史数据中的查询总数,n(a,i)是参数a在查询字符串中第i个位置的查询数;对于i,0对应于第一位置,1对应于第二个位置,依此类推,而

1代表字符串中缺少参数;ε是概率非常小的默认填充,使得即使在历史数据中不会发生某些订单位置,计算的概率也不会减少到0,这意味着它是不可能的;在一个示例中,一个api具有五个参数a1、a2、a3、a4、a5,对于一百个查询的所有历史数据,参数a1在十个查询中位于第一位,在八十个查询中位于第二位,在十个其他查询中找不到。假设ε是一个小的数,诸如0.00001,那么概率将是
[0094]
p(a1,1)≈0.8,p(a1,2)=0.00001,p(a1,3)=0.00001,p(a1,4)=0.00001,p(a1,

1)≈0.1
[0095]
此外,可以为仅缺少一个或以上位置而建立一些公差。例如,如果大多数历史模式是(a1,v1)(a2,v2)(a3,v3),则具有模式(a4,v4)(a1,v1)(a2,v2)(a3,v3)的字符串将在一个位置上错过每个参数,因此,如果未建立公差,则导致非常低的概率。但是,该字符串接近历史模式,除了额外的(a4,v4)。为了容忍这种偏差,可以使用一些相邻位置的概率调整所计算的位置的概率:
[0096][0097]
其中p'(a,i)是公差调整后的概率,并且ω
ij
是权重。在上述示例中,如果ω
ij
对于i=j设置为1,对于相差1的任何i和j对设置为0.5,对于相差2的任何i和j对设置为0.1,对于相差2以上的任何i和j对设置为0。因此,可以获取以下调整后的概率。
[0098]
p

(a1,0)=0.1p(a1,2) 0.5p(a1,1) p(a1,00≈0.5,p

(a1,1)≈0.85,p

(a1,2)≈0.4,p

(a1,3)≈0.8,p

(a1,4)=0.00001,p

(a1,

1)≈0.1
[0099]
通过公差调整,例如,即使没有历史数据,在第三个位置处具有参数a1的概率为0.4,因为第二个位置处的a1是主要模式。类似地,第四位的a1概率为0.08,大于原始的0.00001,但小于0.4,因为这个位置与p(a1,2)情况相比差异更大。对于p'(a1,4),第五个位置离第二个位置的主要模式太远,调整前的概率保持在一个很小的值。
[0100]
在一些实施例中,在对上述概率进行计算、调整和存储之后,可以通过以下评分方法对每个查询进行检查以进行异常检测。假设查询q的参数顺序为(a1,v1)(a2,v2)...(a
m
,v
m
),并且所有可能属性的集合是a,缺少参数的集合是,查询字符串作为一系列(a,ia)对获得。例如,在(a1,v1)(a2,v2)...(a
m
,v
m
)查询字符串中,参数a1处于位置0,因此i
a1
=0,相应地,i
a2
=1,等等。
[0101][0102]
其中θa是分配给每个单独参数a的权重。例如,如果某个参数(例如,“phone”)丢失或错位到罕见位置,与其他参数相比,在正常请求字符串中更不可能找到,则可以为参数“phone”分配更高的权重。如果每个参数都被平等对待,则可以为每个θa分配一个权重。λ是分配给缺失参数情况的权重。在一个示例中,一个重要或必要的参数缺失比它被放置在一个罕见的位置具有更大的异常指示性能力。因此,可以将大于1的值分配给权重λ。这里,分数公式中的函数p'可以替代地由p公式代替,即不做调整。
[0103]
在一些实施例中,具有低于阈值分数的查询表明它与良性查询模式显着不同,并
且被确定为可疑。具有大于阈值数量的可疑查询的ip将触发异常的警报。
[0104]
因此,在一些实施例中,用于检测异常的示例性方法包括:监控对统一资源标识符(uri)的互联网访问,以获取包括与访问对应的查询的当前查询字符串的访问信息,从当前查询字符串和当前查询字符串中的第二参数的当前字符串位置获取一个或以上第二参数,以及基于将第二参数的当前字符串位置与至少两个第一参数的历史字符串位置进行比较,确定查询是否与异常相关联。第一参数包括第二参数。第一参数的历史字符串位置分别基于访问uri的历史查询的历史查询字符串来确定。uri可以包括静态资源或应用程序接口(api)中的至少一个。在一些实施例中,访问信息还包括与引起访问的计算设备对应的因特网互联网协议(ip)地址。该方法还包括:确定被确定为与异常相关联的查询的数量,以及响应于确定的查询的数量超过查询阈值,确定ip地址与异常相关联。为了防止额外的损失,该方法可以进一步包括响应于确定异常,执行至少一个:触发警报、阻止对uri的访问、阻止ip地址的访问、基于确定的异常评估ip地址、或者基于确定的异常评估uri。
[0105]
在一个示例中,第一参数的确定的历史字符串位置分别与第一参数关于字符串位置的确定的概率分布相关联。基于将第二参数的当前字符串位置与第一参数的历史字符串位置进行比较,确定查询是否与异常相关联,包括基于第二参数的当前字符串位置和确定的概率分布确定查询是否与异常相关联。
[0106]
根据上述评分确定,在一些实施例中,基于第二参数的当前字符串位置和确定的概率分布确定查询是否与异常相关联包括:对于每个第二参数,基于确定的概率分布确定在对应的当前字符串位置处的第一概率,并将第一权重耦合到第一概率,将第一概率与第一权重对第二参数求和,以获得第一结果,对于不包括第二参数的每个第一参数,基于确定的概率分布确定从当前查询字符串丢失的第二概率,并将第一权重耦合到第二概率,将与第一权重耦合的第二概率与不包括第二参数的第一参数相加,以获得第二结果,以及将第二权重耦合到第二结果,将第一结果加到与第二权重耦合的第二结果,以获得分数,将分数与分数阈值进行比较,以及响应于确定得分低于分数阈值,确定查询与异常相关联。
[0107]
在一些实施例中,历史查询是良性查询。确定第一参数关于字符串位置的概率分布包括:对于每个字符串位置处的每个第一参数,除以每个第一参数在每个字符串位置具有的查询数或在历史查询字符串中缺少的历史查询总数,并相加小数,以获得调整前概率(p),以及调整调整前概率以获得调整后概率(p')。调整后概率包括将每个第一参数替换为预设数量的字符串位置的公差。
[0108]
图4a示出了根据本说明书的各种实施例的示例性方法400的流程图。方法400可以在包括例如图1的环境100的各种环境中实现。示例性方法400可以由系统102的一个或以上组件(例如,处理器104、内存106)实现。示例性方法400可以由类似于系统102的多个系统实现。下面呈现的方法400的操作旨在说明。取决于实施方式,示例性方法400可以包括以各种顺序或并行执行的附加,更少或替代步骤。
[0109]
框401包括确定在时间间隔内访问第一统一资源标识符(uri)的互联网协议(ip)地址的累积访问量。框402包括将访问第一uri的ip地址的累积访问量与在时间间隔内访问第一uri的ip地址的历史访问量进行比较,和/或将访问第一uri的ip地址的累积量与在时间间隔内访问第二uri的ip地址的历史访问量进行比较。第一uri和第二uri对于每次访问都被调用或都未被调用。框403包括基于其中一个或两个比较确定第一uri是否与异常相关
联。
[0110]
图4b示出了根据本说明书的各种实施例的示例性方法410的流程图。方法410可以在包括例如图1的环境100的各种环境中实现。示例性方法410可以由系统102的一个或以上组件(例如,处理器104、内存106)实现。示例性方法410可以由类似于系统102的多个系统实现。下面呈现的方法410的操作旨在说明。取决于实施方式,示例性方法410可以包括以各种顺序或并行执行的附加,更少或替代步骤。
[0111]
框411包括确定互联网协议(ip)地址在时间间隔内访问第一统一资源标识符(uri)的累积访问量。框412包括将访问第一uri的ip地址的累积访问量与访问第一uri的其他ip地址的累积访问量进行比较。框413包括基于比较确定第一uri是否与异常相关联。
[0112]
图4c示出了根据本说明书的各种实施例的示例性方法420的流程图。方法420可以在包括例如图1的环境100的各种环境中实现。示例性方法420可以由系统102的一个或以上组件(例如,处理器104、内存106)实现。示例性方法420可以由类似于系统102的多个系统实现。下面呈现的方法420的操作旨在说明。取决于实施方式,示例性方法420可以包括以各种顺序或并行执行的附加,更少或替代步骤。
[0113]
框421包括监控对统一资源标识符(uri)的互联网访问,以获取包括与访问对应的查询的当前查询字符串的访问信息。框422包括从当前查询字符串和当前查询字符串中的第二参数的当前字符串位置获取一个或以上第二参数。框423包括基于将第二参数的当前字符串位置与至少两个第一参数的历史字符串位置进行比较,确定查询是否与异常相关联。第一参数包括第二参数。第一参数的历史字符串位置分别基于访问uri的历史查询的历史查询字符串来确定。
[0114]
本文描述的技术由一个或以上专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持式设备、网络设备或结合硬连线和/或程序逻辑以实现技术的任何其他设备或设备组合。计算设备通常由操作系统软件控制和协调。常规操作系统控制和调度计算机进程以执行、进行内存管理、提供文件系统、联网、i/o服务、以及提供诸如图形用户界面(“gui”)之类的用户界面功能。
[0115]
图5示出了计算机系统500的框图,其中可以实现本文描述的任何实施例。系统500可以对应于上述系统102。计算机系统500包括总线502或用于传达信息的其他通信机制,与总线502耦合以用于处理信息的一个或以上硬件处理器504。硬件处理器504可以是例如一个或以上通用微处理器。处理器504可以对应于上述处理器104。
[0116]
计算机系统500还包括主内存506,例如随机存取存储器(ram)、高速缓存和/或其他动态存储设备,其耦合到总线502,用于存储将由处理器504执行的信息和指令。主内存506还可以用于在要由处理器504执行的指令的执行期间存储临时变量或其他中间信息。当将这些指令存储在处理器504可访问的存储介质中时,它们将计算机系统500渲染成专用于执行指令中指定的操作的专用机器。计算机系统500还包括耦合到总线502的只读存储器(rom)508或其他静态存储设备,用于存储用于处理器504的静态信息和指令。提供诸如磁盘、光盘或usb驱动器(闪存驱动器)等的存储设备510,并且将其耦合到总线502以存储信息和指令。主内存506、rom508和/或存储器510可以对应于上述内存106。
[0117]
计算机系统500可以使用定制的硬连线逻辑、一个或以上asic或fpga、固件和/或程序逻辑来实施本文所述的技术,这些逻辑与计算机系统结合使计算机系统500成为程序
或专用计算机。根据一个实施例,本文描述的操作、方法和过程由计算机系统500响应于执行主内存506中包含的一个或以上指令的一个或以上序列的处理器504来执行。可以从诸如存储设备510之类的另一存储介质将这样的指令读入主内存506。执行包含在主内存506中的指令序列,使处理器504执行本文所述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令结合使用。
[0118]
主内存506、rom508和/或存储器510可以包括非暂时性存储介质。这里使用的术语“非暂时性介质”和类似的术语是指存储数据和/或使机器以特定方式操作的指令的介质,该介质不包括暂时性信号。这样的非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,例如存储设备510。易失性介质包括动态内存,例如主内存506。非暂时性介质的常见形式包括,例如,软盘、软盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd

rom、任何其他光学数据存储介质、具有孔模式的任何物理介质、ram、prom和eprom、flash

eprom、nvram、任何其他存储芯片或盒式磁带及其网络版本。
[0119]
计算机系统500还包括耦合到总线502的网络接口518。网络接口518提供与连接到一个或以上本地网络的一个或以上网络链路的双向数据通信耦合。例如,网络接口518可以是集成服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供与相应类型的电话线的数据通信连接。作为另一示例,网络接口518可以是局域网(lan)卡,以提供到兼容lan(或与wan通信的wan组件)的数据通信连接。无线连接也可以实现。在任何这种实现中,网络接口518发送和接收携带表示各种类型的信息的数字数据流的电、电磁或光信号。
[0120]
计算机系统500可以通过网络、网络链路和网络接口518发送消息和接收包括程序代码的数据。在互联网示例中,服务器可以通过互联网、isp、本地网络和网络接口518发送用于应用程序的所请求的代码。
[0121]
接收到的代码可以在接收到时由处理器504执行,和/或存储在存储设备510或其他非易失性存储中,以供以后执行。
[0122]
前述部分中描述的过程,方法和算法中的每一个都可以体现在由一个或以上计算机系统或包括计算机硬件的计算机处理器执行的代码模块中,或者由其完全或部分自动化。该过程和算法可以在专用电路中部分或全部实现。
[0123]
上述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本说明书的范围内。另外,在一些实施方式中,可以省略某些方法或过程。本文描述的方法和过程也不限于任何特定的顺序,并且可以以适当的其他顺序执行与之相关的框或状态。例如,可以以不同于具体公开的顺序来执行所描述的流程或状态,或者可以在单个框或状态中组合多个流程或状态。示例性框或状态可以在串行、并行地或以某种其他方式执行。可以从所公开的示例性实施例中添加或移除框或状态。这里描述的示例性系统和组件可以与描述不同地配置。例如,与所公开的示例性实施例相比,可以将元件添加、移除或重新排列。
[0124]
可以通过算法至少部分地执行本文描述的示例性方法的各种操作。该算法可以包括存储在存储器(例如,上述非暂时性计算机可读存储介质)中的程序代码或指令。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法可能不会明确地对计算机编程以执行功能,但可以从训练数据中学习以制作执行该功能的预测模型。
[0125]
这里描述的示例性方法的各种操作可以至少部分地由临时配置(例如,通过软件)或永久配置为执行相关操作的一个或以上处理器来执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的引擎,该引擎执行以执行本文所述的一个或以上操作或功能。
[0126]
类似地,本文描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如,一种方法的至少一些操作可以由一个或以上处理器或处理器实现的引擎执行。此外,一个或以上处理器还可在“云计算”环境中或作为“软件即服务”(saas)来支持相关操作的性能。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以通过网络(例如,互联网)和一个或至少两个适当的接口(例如,应用程序接口(api))。
[0127]
某些操作的性能可能会分布在处理器之间,不仅驻留在单个计算机中,而且会部署在多个计算机上。在一些示例性实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境中、办公环境或服务器群)中。在其他示例性实施例中,处理器或处理器实现的引擎可以分布在许多地理位置上。
[0128]
在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管将一个或以上方法的单独操作示出并描述为单独的操作,但是可以同时执行一个或以上单独操作,并且不需要按所示顺序执行操作。呈现为示例性配置中的单独组件的结构和功能可以实现为组合结构或组件。类似地,呈现为单个组件的结构和功能可以实现为单独的组件。此类和其他变型、修改、添加和改进落入本文主题的范围内。
[0129]
尽管已经参考特定示例性实施例描述了主题的概述,但是可以在不脱离本说明书的实施例的更广泛的范围内,对这些实施例进行各种修改和改变。主题的这样的实施例在本文中可以仅出于方便的目的而单独地或共同地通过术语“发明”来指代,并且如果实际上有多个以上的公开或概念,则不旨在将本说明书的范围自动限制为任何单个公开或概念。
[0130]
充分详细地描述了本文示出的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中得出其他实施例,从而可以在不脱离本说明书的范围的情况下进行结构和逻辑上的替换和改变。因此,不应从限制意义上理解详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围来限定。
[0131]
在此描述的和/或在附图中描绘的流程图中的任何过程描述,元素或框都应被理解为潜在地表示模块、代码段或代码部分,其包括用于在过程中实施特定逻辑功能或步骤的一个或多个可执行指令。替代实施方式包括在本文描述的实施方式的范围内,其中可以删除元件或功能,如所涉及的功能,如所示出或所讨论的顺序不连续地执行,包括基本上同时地或以相反的顺序执行,如本领域技术人员将理解的那样。
[0132]
如本文所使用的,术语“或”可以以包括性或排他性的意义来解释。此外,可以为本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、引擎和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以设想功能的其他分配,并且其可以落入本说明书的各种实施例的范围内。通常,作为示例性配置中的单独资源呈现的结构和功能可以实现为组合结构或资源。类似地,呈现为单个资源的结构和功能可以实现为单独的资源。这些和其他变型、修改、添加和改进落入如所附权利要求所表示的本说明书的实施例的范围内。因此,说明书和附图应被认为是说
明性的而不是限制性的。
[0133]
除非另外明确说明或在所使用的上下文中另外理解,否则条件性语言(例如“可以”、“可以”、“可能”或“可以”等)通常旨在传达某些实施方式包括,而其他实施例不包括某些特征、元素和/或步骤。因此,这样的条件语言通常不指在暗示特征、元素和/或步骤以任何方式对于一个或多个实施例是必需的,或者一个或多个实施例必然包括用于确定是否有用户输入或提示的逻辑。这些特征、元素和/或步骤在任何特定实施例中被包括或将被执行。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献