用于远程端点信息取回的查询引擎的制作方法

文档序号:14491499阅读:297来源:国知局
用于远程端点信息取回的查询引擎的制作方法

相关申请的交叉引用

本申请要求2015年6月26日提交的标题为“queryengineforremoteendpointinformationretrieval(用于远程端点信息取回的查询引擎)”的美国非临时(实用新型)专利申请号14/751,560的权益和优先权,该申请的全文通过引用的方式被合并在本文中。

本公开内容总体上涉及计算机安全领域,并且更具体来说涉及一种用于网络环境中的远程端点信息取回的查询引擎。



背景技术:

计算机安全领域在当今的社会中已变得越来越重要。互联网已经实现全世界的不同计算机网络的互连。这一互连能力为恶意操作者给出了许多机会来利用这些网络并且用带有恶意的软件(在本文中也被称作“恶意软件(malware)”)感染网络环境的端点。恶意软件可以被配置成在端点上实施若干恶意动作,其中包括而不限于:从端点发送出垃圾邮件或恶意邮件,从与端点相关联的企业或个人盗取敏感信息,向其他端点进行传播,协助进行分布式拒绝服务攻击,以及/或者以存储盘的特定区段为目标以获取对于端点及其资源的未经授权的控制。

除了外部威胁之外,网络环境中的端点还可能受到内部威胁。经过授权的个人例如可能故意地或者非故意地在网络环境内造成危害。实例包括而不限于:使用端点来实施例如拷贝、传送之类的未经授权的活动,或者通过其他方式访问敏感数据。此外,一些网络环境(例如大型企业网络)可能包含数以千计的端点,从而可能大大增加至少一些端点被攻陷的风险。因此,有效地保护并且保持稳定的计算机和系统的能力持续对组件制造商、系统设计者和网络运营商构成重大挑战。

附图说明

为了提供对于本公开内容及其特征和优点的更加全面的理解,结合附图参考后面的描述,其中相同的附图标记表示相同的部分,在附图中:

图1是根据本公开内容的至少一个实施例的用于从端点远程取回信息的通信系统的简化方块图;

图2是示出根据至少一个实施例的通信系统的端点中的查询引擎的附加细节的简化方块图;

图3是可以被使用在根据至少一个实施例的通信系统中的示例性查询语言的分层图;

图4是在根据至少一个实施例的通信系统中使用所述示例性查询语言的示例性主导查询(masterquery);

图5是示出与根据本公开内容的通信系统的至少一个实施例相关联的可能活动的简化流程图;

图6是示出与根据本公开内容的通信系统的至少一个实施例相关联的可能活动的简化流程图;

图7a-7b示出了根据至少一个实施例的通信系统中的示例性主导查询和示例性主导查询结果;

图8是根据至少一个实施例的耦合到示例性处理器的存储器的方块图;

图9是根据至少一个实施例的被安排在点对点(ptp)配置中的示例性计算系统的方块图;以及

图10是与根据至少一个实施例的示例性arm生态系统芯片上系统(soc)相关联的简化方块图。

具体实施方式

图1是用于从端点远程取回信息的示例性通信系统100的简化方块图。通信系统100包括后端系统20、网络10以及端点30(1)-30(n)。后端系统20可以被配置成具有查询服务22、查询语言24以及管理控制台25。网络10允许后端系统20与端点30(1)-30(n)之间的通信。端点30(1)-30(n)可以分别包括收集数据数据库31(1)-31(n)、响应函数32(1)-32(n)、持久性收集器34(1)-34(n)、动态收集器36(1)-36(n)以及查询应用38(1)-38(n)。端点30(1)-30(n)还可以包括其他组件,比如存储器单元37(1)-37(n)、处理器39(1)-39(n)、网络接口卡(未示出)以及用以促进其操作的任何其他硬件(或软件)。查询应用38(1)-38(n)可以包括对应的查询引擎40(1)-40(n)。查询引擎可以被本地提供在对应的端点中,以便接收和处理主导查询,从而搜索信息、捕获信息并且/或者对端点30(1)-30(n)上的事件或者取回的信息作出响应。

图1的单元可以通过采用任何适当的连接(有线或无线)的一个或多个接口彼此耦合,所述连接提供用于网络通信的可行途径。此外,图1的这些单元当中的任何一个或多个可以基于具体的配置需求被组合或者从所述架构中去除。通信系统100可以包括能够进行传输控制协议/互联网协议(tcp/ip)通信的配置,以便在网络中传送和/或接收分组。在适当的情况下并且基于具体需求,通信系统100还可以与用户数据报协议/ip(udp/ip)或者任何其他适当的协议相结合来操作。

为了说明用于从端点远程取回信息的通信系统的特定示例性技术,很重要的是应当理解可能发生在网络环境中的活动。后面的基本信息可以被视为能够适当地从中解释本公开内容的基础。

企业网络特别常常存储对于其运营至关重要的电子数据。此外,实体、其雇员以及/或者其客户或顾客的保密或敏感数据常常被存储在这样的网络中,并且可能遵从州和联邦的隐私法。这样的数据可以被存储在网络中的端点中或者可以通过所述端点访问。网络(诸如,例如是企业网络)中的端点可以包括任意数目的计算系统、移动设备以及网络单元。端点的实例可以包括而不限于台式计算机、膝上型计算机、笔记本、服务器、自动柜员机(atm)、平板设备、移动电话、物联网(iot)设备以及智能电器。

企业网络常常是恶意软件的目标,这是由于潜在地获得广泛的公众恶名以及/或者访问存储在这些网络中的敏感或保密信息。此外,网络中的端点常常存在被经过授权的用户故意地和非故意地滥用的风险,所述经过授权的用户具有访问关键运营数据以及与所述实体、其客户和/或其雇员有关的其他保密或敏感数据的许可。

近年来,恶意软件攻击已经变得越来越复杂。在某些情形中,恶意软件能够规避传统的反病毒解决方案,比如基于签名的白名单和黑名单技术。具体来说,高级持续性威胁以及定制目标化恶意软件已使得越来越难以检测和缓解端点上的威胁和恶意软件。因此,除了内部破坏和/或错误之外,许多系统还需要针对例如高级持续性威胁之类的更新类型的恶意软件的持续保护。

端点检测和响应(edr)是集中于检测和评估寄主和其他类型的端点上的可疑活动的一种新兴技术。通常来说,这样的系统通过结构化方式把信息存储在中心位置处以便处理所述信息。但是这些系统可能具有有限的功能,包括对具有新数值类型的信息进行过滤的有限能力。此外,这样的系统通常不包括合并信息或准备数据以供外部系统缩减的能力。因此,在端点上接收针对信息的复杂查询(其中,这样的查询可以动态地收集和处理所述信息)通常是不可能的。因此,仍然需要允许从特定网络中的每一个端点取回实时数据,同时减少网络带宽以及对于无结构和动态结果的处理时间。

通过在端点上提供查询语言以及能够(基于所述查询语言)处理查询的查询引擎,本文中所描述的通信系统的实施例可以解决前面提到的问题(以及其他问题)。可以由管理员远程制定并且由端点上的查询引擎执行复杂查询,以便搜索期望的数据,取回或收集期望的数据,基于对来自事件或函数的信息所应用的一项或多项条件而触发响应(或动作),以及在端点上执行期望的响应。这些复杂查询可以包括执行函数、应用所提供的条件、过滤输出以及从端点返回结果。被执行的函数可以返回信息,所述信息可以由端点上的查询引擎进行分析。可以基于一项或多项条件对来自某一函数(例如插件)的信息进行分析,并且可以关于特定查询或子查询的成功或失败作出确定。此外,触发可以允许创建进入点,即使当端点离线时,所述进入点仍然在端点上主动对特定事件采取动作或者对特定事件作出反应。此外,查询引擎还可以作为独立的服务器运行,以便为针对其他类型的处理(诸如,例如分析在端点上发起的互联网活动)的请求提供服务。

本文中所公开的实施例提供了几个优点。首先,实施例允许在网络中的各个端点之间分配处理,从而可以减少从所述端点远程取回信息所需的网络带宽。由于数据被保持在端点中,因此除了执行动态脚本之外本地查询引擎还允许取回特定于端点的信息,从而在无需改变核心系统的情况下取回新数据。可以在(某一端点上的)单一查询引擎内处理复杂查询,以便获得与该端点相关联的动态信息。这样的能力允许端点的安全性和脆弱性分析。可以基于具体需求和优选项从端点为事件响应者(也就是使用来自查询引擎的查询的数据的人或系统)提供更新后的实时信息。在某些实例中,这样的信息可以被用来分析可能的现有安全漏洞或正在发生的恶意软件攻击。在其他实例中,这样的信息可以被用来调查过去的事件或者基于各种条件主动作出反应。

参照图1,提供关于可以被包括在通信系统100中的一些可能的基础设施的简要描述。通常来说,通信系统100可以包括由网络10表明的任何类型或拓扑的网络。网络10表示用于接收和发送传播经过通信系统100的网络通信的互连通信路径的一系列点或节点。网络110给出节点之间的通信接口,并且可以被配置成任何局域网(lan)、虚拟局域网(vlan)、例如互联网之类的广域网(wan)、无线局域网(wlan)、城域网(man)、内联网、外联网、虚拟私有网络(vpn)、促进网络环境中的通信的任何其他适当的架构或系统或者其任意适当组合。

网络10可以使用任何适当的通信技术,其中包括无线(例如3g/4g/5g/ng网络、wifi(2012年3月29日公布的电气和电子工程师协会(ieee)标准802.11tm-2012)、wimax(2012年8月17日公布的ieee标准802.16tm-2012)、射频标识(rfid)、近场通信(nfc)、bluetoothtm等等)和/或有线(例如以太网等等)通信。通常来说,可以使用任何适当的通信手段,比如电、声、光、红外和/或无线电(例如wifi、bluetooth或nfc)。

网络通信量(在本文中也被称作“网络通信”和“通信”)可以包括分组、帧、信号、数据、对象等等,并且可以根据任何适当的通信消息传送协议在通信系统100中被发送和接收。适当的通信消息传送协议可以包括多层方案,比如开放系统互连(osi)模型或者其任何衍生物或变型(例如传输控制协议/互联网协议(tcp/ip)、用户数据报协议/ip(udp/ip))。本文中所使用的术语“数据”指的是信息,包括任何类型的二进制、数字、语音、视频、文字、照片或脚本数据,或者任何类型的源代码或目标代码,或者可以从计算系统(例如端点、后端系统、服务器、计算设备等等)和/或网络中的一点传送到另一点的具有任何适当格式的任何其他适当的信息。此外,消息、请求、响应、应答等等可以是网络通信量的形式。

后端系统20表示具有对于端点30(1)-30(n)的网络访问的提供在通信系统100中的一个或多个网络单元。本文中所使用的术语“网络单元”意图涵盖服务器、路由器、交换机、网关、桥接器、负载平衡器、防火墙、内联服务节点、代理、处理器、模块、sdn控制器/交换机或者适于在网络环境中交换信息的任何其他适当的设备、组件、单元或专有电器。此网络单元可以包括促进其操作的任何适当的硬件、软件、固件、组件、模块、接口或者对象。这可以包括允许有效地交换数据或信息的适当算法和通信协议。

后端系统20包括查询服务22,所述查询服务22允许使用查询语言24配置查询并且将其传送到端点30(1)-30(n)的一个或多个查询引擎40(1)-40(n)。在至少一个实施例中,管理控制台25耦合到后端系统以允许经过授权的用户(例如网络管理员、事件响应者)通过适当的用户接口与后端系统20进行交互。管理控制台25可以是访问后端系统20的处理资源的拇指末端。在其他实现方式中,管理控制台25可以是具有其自身的处理资源的计算系统。

经过授权的用户可以使用查询语言24配置查询,所述查询语言24可以由查询引擎40(1)-40(n)进行处理。查询服务可以把由用户配置的一项或多项查询格式化成具有能够由端点30(1)-30(n)解析和处理的格式的主导查询。在至少一个实施例中,查询语言24可以基于javascript对象表示法(json)。

端点30(1)-30(n)意图表示可以被用来在网络环境中发起网络通信的任何类型的计算系统。端点30(1)-30(n)可以包括而不限于移动设备、服务器、atm、iot设备、膝上型计算机、台式计算机、平板设备、游戏系统、移动设备、智能电话、信息娱乐系统、智能电器、全球定位系统(gps)或者能够在通信系统100内发起语音、音频、视频、媒体或数据交换的任何其他设备、组件或单元。在某些情况下,端点还可以包括针对人类用户的适当接口,比如显示器、键盘、触摸板、遥控器、其他终端装备或者其任意适当组合。

在至少一个实施例中,端点30(1)-30(n)和后端系统20包括用以实现(或促成)本文中所概述的远程端点信息取回操作的软件。这些单元当中的每一个可以具有用以促进本文中所描述的一些操作的内部结构(例如处理器、存储器单元等等)。在其他实施例中,这些远程端点信息取回操作可以由硬件和/或固件执行,在这些单元的外部执行,或者被包括在某一其他网络单元或计算系统中以便实现该意图功能。或者,端点30(1)-30(n)和后端系统20可以包括该软件(或往复软件),从而可以与其他网络单元或计算系统进行协调以便实现本文中所概述的操作。在其他实施例中,一个或几个设备可以包括促进其操作的任何适当的算法、硬件、软件、固件、组件、模块、接口或对象。模块可以按照任何适当的方式被适当地组合或划分,这可以是基于具体配置和/或供应需求。

在至少一个实施例中,查询引擎40(1)-40(n)被提供在端点30(1)-30(n)上的查询应用38(1)-38(n)中。查询引擎40(1)-40(n)可以处理用查询语言24配置的查询。举例来说,查询引擎40(1)可以接收并处理主导查询,以便搜索特定数据,基于对来自事件或函数的信息所应用的一项或多项条件而触发特定动作(或响应),以及/或者在端点30(1)上执行期望的响应。查询可以被配置成搜索由端点上的数据收集器捕获的动态或历史信息。搜索可以包括从信息总集当中找到或识别所期望的特定信息的动作。在其他实例中,搜索可以包括针对信息的请求,其中所请求的信息是从已知的或确定的位置、模块等等取回的。数据收集器可以包括持久性收集器34(1)-34(n)(例如持续地运行或者以特定间隔、在特定日间时等等运行)或动态收集器36(1)-36(n)(例如在由查询引擎请求信息或者需要收集信息时运行)。数据收集器可以包括插件、脚本或者其他适当的函数。在至少一些实施例中,在某一端点上捕获的数据可以被存储在该端点上。举例来说,从持久性收集器34(1)-34(n)收集的数据可以被存储在收集数据数据库31(1)-31(n)中。在其他实现方式中,所收集的数据可以被全部或部分地存储在端点30(1)-30(n)的外部。

参照图2,图2是示出与端点的示例性查询引擎40相关联的一个可能的细节集合的简化方块图。查询引擎40代表端点30(1)-30(n)的查询引擎40(1)-40(n)的一种可能的配置。查询引擎40包括解析器41、查询执行器42、搜索执行器42、触发执行器44以及响应执行器45。查询引擎40可以把来自查询服务22的主导查询处理成可执行主导查询50。可执行主导查询50可以包括一个或多个查询链52(1)-52(x),其中每一个查询链包括子查询54(1)-54(x)的代表性集合。每一个子查询集合包括运算符53(1)-53(x),比如逻辑运算符“and(与)”、“or(或)”或者“all(全)”。查询链中的每一项子查询可以包括一个或多个条件链,比如子查询54(x)(1)的条件链56(1)-56(y)。每一个条件链包括一个条件集合,比如集合58(1)-58(y)。

可以从搜索、触发和响应执行器调用查询引擎40以处理主导查询。所述执行器可以被配置成分析来自主导查询的最终结果。查询引擎40可以从查询服务22取回主导查询。主导查询可以是由经过授权的用户在后端系统20处配置的。查询引擎40包括解析器41,所述解析器41接收并且基于查询语言(例如json)解析主导查询。解析器41理解查询语言24的已定义接口,并且可以将主导查询形成为可由查询引擎40中的其他组件处理的代码。查询执行器42可以被内建为查询引擎40的一部分,并且可以从经过解析的主导查询建立各个块以便处理通过所述一项或多项子查询所取回的信息。

对于每一项主导查询,标识符和动作类型规定将使用哪一个执行器(例如搜索、触发或响应)。当主导查询包括将从端点搜索特定信息的子查询但是不包括将响应于搜索实施动作的任何子查询时,使用搜索执行器43。当主导查询包括将对来自搜索的输出或者对来自事件的信息应用特定条件时,使用触发执行器44,并且当所述条件得到满足时,触发响应。来自事件的信息可以由查询引擎在创建进入点时接收。举例来说,可以对于正在端点上监测的某种情况(例如文件创建)创建进入点,并且当检测到事件(例如创建了文件)时,与该事件有关的信息可以被提供到查询引擎以便基于一项或多项条件进行评估。响应执行器45被用于执行特定函数,以便在端点上实施期望的动作。当满足特定条件时(例如当主导查询包括对来自搜索或事件的信息应用条件并且在所述条件得到满足时触发响应时),触发一些响应。可以发起其他响应以便在端点上实施期望的动作,而不取决于需要满足的条件。

查询引擎40可以基于定义在主导查询中的查询链建立一个或多个查询链52(1)-52(x)。可以根据在主导查询中表明的动作类型(例如搜索、触发或响应)对于每一个执行器建立查询链52(1)-52(x)。每一个查询链52(1)-52(x)包含将被执行的子查询54(1)-54(x)的代表性集合。查询链52(1)-52(x)还可以包括几项属性,包括对应的查询运算符53(1)-53(x)。查询运算符例如可以是逻辑“and”、“or”或“all”。每一个查询链52(1)-52(x)可以被并行地或顺序地执行。可以基于与查询链相关联的子查询集合中的各项单独的子查询的结果(或者说“子查询结果”)并且基于与查询链相关联的查询运算符而生成对应于查询链的结果(或者说“查询链结果”)。举例来说,可以通过使用查询运算符53(1)评估集合54(1)中的各项单独的子查询的结果来确定对应于查询链52(1)的结果。

运算符可以被用来评估任何类型的字段,包括字符串、布尔、数字、字符串、对象的数组等等。“and”运算符执行两个字段(或者字段内的数值)之间的逻辑and。“or”运算符执行两个字段(或者字段内的数值)之间的逻辑or。“all”运算符包括所有字段(例如所有子查询结果)而不考虑字段的内容。每一个查询运算符还可以影响查询链如何被执行。举例来说,在使用逻辑“or”时,第一项成功(例如找到内容、满足条件等等)可以导致查询引擎40停止处理查询链的子查询。此外,在使用逻辑“and”时,第一项失败(例如未找到内容、不满足条件等等)可以导致查询引擎40停止处理查询链的子查询。这些情形在本文中被称作“短路逻辑”。但是应当提到的是,当短路查询集合的处理被终止时,其他查询链中的其他子查询集合可以继续被处理。还应当提到的是,短路逻辑也可以被应用于其中使用逻辑运算符的本文中所描述的任何其他评估。

每一个子查询54(1)-54(x)的集合包括一项或多项子查询,所述子查询包含将要执行的逻辑。子查询可以包含模块标识符和函数标识符。这些模块和函数标识符可以表明为了满足所述子查询将调用哪一段代码。本文中所使用的“函数”意图表示可以运行在端点上以便为端点上的查询引擎提供附加功能的计算机指令(软件、硬件和/或固件)。插件和脚本是函数的实例。可以使用另一个组件的帮助调用插件或脚本。举例来说,一个模块可以调用另一个模块以便取回处于该模块域之外的信息(例如文件模块可以调用进程模块以便取回与某一进程有关的信息)。在另一个实例中,脚本可以由对于该脚本调取(invoke)适当的解译器的systemruntime(系统运行时间)模块执行。输入数据44可以由查询引擎40基于正被执行的特定函数而接收。输入数据44可以是由所述函数从端点取回的信息。此外,函数可以在端点上被动态地添加、删除和修改,而无需对该端点上的查询引擎作出改变。

持久性收集器34(1)-34(n)、动态收集器36(1)-36(n)以及响应函数32(1)-32(n)意图表示端点30(1)-30(n)上的函数(或者调用/执行/调取函数的模块)的多个实例。动态收集器表示端点上的函数(或者调用/执行/调取函数的模块),该函数可以由端点上的查询引擎动态地调用以便在端点上获得实时数据。持久性收集器表示端点上的函数(或者调用/执行/调取函数的模块),该函数持续地运行或者以特定间隔、在特定日间时等等运行以便监测端点的任何期望的方面(例如文件、进程、网络活动、存储器等等)。在某些实例中,持久性收集器34(1)-34(n)可以把所监测的数据(例如文件改变、网络分组等等)存储在对应的端点30(1)-30(n)上的对应的收集数据数据库31(1)-31(n)中。因此,主导查询可以导致在收集数据数据库中搜索由持久性收集器填充的近期或过去的数据。响应函数32(1)-32(n)表示端点上的函数(或者调用/执行/调取函数的模块),该函数在端点上实施特定动作以便例如对被攻陷的端点进行补救。

根据至少一个实施例,主导查询中的每一项子查询可以包括对应于至少一个条件链的字段、对应于每一个条件链的条件集合以及输出。对于特定的子查询(例如子查询54(x)(1)),作出关于该特定子查询的结果(由输出字段表明)是否应当是查询引擎输出(或主导查询结果)的一部分的确定。这一确定可以通过使用查询运算符评估来自查询链中的每一项子查询的结果而作出。如果子查询的输出字段为空,则其可以被视为布尔条件。查询引擎40还可以允许过滤,以便规定哪些字段应当被包括在将被返回的子查询结果中。举例来说,按索引的json数组、多个字段等等是在返回子查询结果之前可以从其中过滤的内容的实例。

在图2中示出了条件链和条件的实例,其中子查询54(x)(1)包括条件链56(1)-56(y),所述条件链包括对应的条件集合58(1)-58(y)。每一个条件集合可以包括一项或多项条件。条件链56(1)-56(y)具有确定条件链之间的结果的条件链运算符,比如逻辑“and”或“or”。对应于子查询的结果(或者说“子查询结果”)可以是基于所述子查询的每一个条件链的结果(或者说“条件链结果”)以及与所述子查询相关联的条件链运算符而生成。举例来说,可以通过使用条件链运算符对条件链56(1)-56(y)的条件链结果进行评估而确定子查询54(x)(1)的结果。条件链运算符还可以影响条件链如何被执行。举例来说,在至少一些实施例中可以使用短路逻辑。

子查询的每一个条件链包括用以评估每一项子查询函数的输出的条件集合。举例来说,子查询54(x)(1)的条件链56(1)-56(y)包括条件集合58(1)-58(y)。每一个条件链56(1)-56(y)可以被并行地或顺序地执行。可以基于与条件链相关联的条件集合中的各项条件的结果(或者说“条件结果”)并且基于与条件链相关联的条件运算符而生成对应于条件链的结果。举例来说,可以通过使用与条件链56(1)相关联的条件运算符来评估集合58(1)中的各项单独的条件的条件结果而确定对应于条件链56(1)的结果。

根据至少一个实施例,每一项条件可以包括用以实施该条件的各种字段。在至少一个实施例中,可以对由函数返回的输出应用条件。作为举例,现在将描述某些可能的字段。“target(目标)”字段可以规定对于条件检查将使用由函数返回的输出中的哪一个字段。可以由查询引擎40使用特殊的“$result”变量来保存函数的输出。“value(数值)”字段(包含单一数值或数值列表)可以被用来对输出进行检查,并且“valuetype(数值类型)”字段可以被用来在引擎层级强制数值。例如“casesensitive(区分大小写)”、“negate(求反)”和“operator(运算符)”之类的更多字段也可以是可用的。“operator”字段可以包括而不限于表明等于、存在、大于或等于、大于、小于、小于或等于以及其求反版本当中的任一项。此外,条件评估还可以应用短路逻辑,但是可以取决于是否需要输出。

条件本身可以用来从函数输出中过滤特定信息。举例来说,假设函数搜索端点上的所有活跃进程并且返回进程列表以作为其输出。被应用于输出以便把进程与名称“*.email.exe”相匹配(等于)的条件可以导致滤除与名称“*.email.exe”不匹配的所有进程。在另一个实例中,假设函数搜索一个所定义的时间段期间的所有网络活动。被应用于输出以便匹配与特定互联网协议(ip)地址相关联的网络事件的条件可以导致滤除不与所述特定ip地址相关联的所有网络事件。

确定主导查询结果可以是在评估每一项条件以给出条件链结果之后,在评估每一项条件链结果以给出子查询结果之后,以及在评估每一项子查询结果以给出查询链结果之后。但是在某些实例中,如果已经应用了短路逻辑,则可以不生成特定结果(例如查询链、子查询、条件链)。可以基于查询链结果和查询链运算符生成主导查询结果,所述查询链运算符例如可以是逻辑“and”或“or”。查询引擎40还可以确定主导查询的成功或失败,并且可以向后端系统20中的查询服务22返回主导查询结果。

“join(联合)”输出字段可以被用来导致把来自不同函数的输出联合或合并到一项结果中。举例来说,假设在主导查询中定义了两项子查询(例如处于不同的查询链中),并且每一项子查询实施以下函数的其中之一:getusernames和getbrowserhistory。此外还假设getusernames函数返回{“id”:2,“name”:“john”},并且getbrowserhistory函数返回{“url”:www.xyz.com,“user_id”:“2”}。通过使用“join”能力,可以从主导查询取回单一结果。如果getbrowserhistory的user_id字段与getusernames的id字段联合,则最终结果可以是{“url”:www.xyz.com,“user_id”:“2”,“name”:“john”}。因此,可以基于在被合并的输出中具有相同数值的指定字段而合并来自不同函数的输出。合并后的信息可以包含来自每一项输出的所有字段。此外,可以在合并输出之前对所述输出应用条件和过滤器。

参照图3,图3示出了可以被用来配置用于在端点的查询引擎中执行的主导查询的查询语言24的一个可能实施例的分层图300。经过授权的用户可以基于查询语言24来配置主导查询。主导查询可以由端点中的查询引擎处理和执行,以便确定将要调取的动作序列(例如搜索、触发、响应),并且如果需要的话在每一相结果上实施输出处理和条件检查。在至少一个实施例中,查询语言24可以是基于javascript对象表示法(json),并且提供性能与搜索、触发和响应上的动态模式之间的有利平衡。一旦应用了条件,查询语言24还允许对输出进行过滤。

主导查询可以包括标识与被存储在端点上或者可以通过其他方式从端点获得的数据有关的几种类型的动作的对象数组,其中所述主导查询由查询引擎执行。在至少一个实施例中,所述各种类型的动作共享相同的查询结构,不过一些字段可以被忽略。在一个实例中,所述动作类型在查询语言24中被标识为“queries(查询)”、“triggers(触发)”和“responses(响应)”。查询对象可以包括一个子查询对象数组,所述子查询对象数组包含将被执行来搜索与端点相关联的数据的函数。触发对象可以包括一个子查询对象数组,所述子查询对象数组包含将被执行的函数,如果确定满足基于搜索或事件的一项或多项条件,则所述函数可以在端点上触发响应。响应对象可以包括一个子查询对象数组,所述子查询对象数组包含将被执行来在端点上实施期望的动作(例如如果端点被攻陷的话则实施补救动作)的函数。

参照分层图300,主导查询对象字段可以包括如在302处所表明的id、chain_op和report_failed。在下面的表1中更加详细地描述了主导查询对象字段。

表1——主导查询对象字段

执行器304可以是表明在主导查询中请求何种类型的动作(例如搜索、触发、响应)的对象名称。在至少一个实施例中,所述对象名称可以是对应于搜索动作的“queries”,对应于触发动作的“triggers”,以及对应于响应动作的“responses”。可以在执行器304之后的主导查询中配置查询链306。查询链字段可以包括如在308和310处所表明的op、last_will和q。在下面的表2中更加详细地描述了查询链字段。

表2——查询链对象字段

310处的q字段包括对应于一个查询链的一个或多个查询对象(在本文中也被称作“子查询对象”)。子查询对象字段被用来定义子查询对象,并且可以包括在312、316和320处表明的primary、module、function、args、platform、id、related_to、condition_op、condition和output。在下面的表3中更加详细地描述了子查询对象字段。

表3——子查询对象字段

可以在主导查询的子查询中配置条件链314。可以使用条件字段来配置对应于每一个条件链的一项或多项条件320,所述条件字段可以包括如在318和322处所表明的op、target、function、value、valuetype、cs、boolean和not。在下面的表4中更加详细地描述了条件字段。

表4——条件字段

316处的输出字段包括来自子查询的子查询结果。输出字段被用来定义子查询结果,并且可以包括在324处表明的name、target、fields、join_target和join_field。在下面的表5中更加详细地描述了输出字段。

表5——输出字段

参照图4,图4示出了如前面所定义的以查询语言24编写的主导查询400的一个简单实例。在402处,定义主导查询id。在404处,执行器被提供为“queries”,这表明主导查询被配置成对存储在端点中或者可以通过其他方式从端点获得的数据(例如从插件或脚本获得的动态信息,存储在端点上的先前收集的信息等等)实施搜索。在该例中,在主导查询中不存在chain_op字段,这是因为只包括一个查询链。

在406处,提供查询链对象字段以定义查询链。查询运算符被定义成“all”,并且q字段表明定义一项或多项查询。在408处,提供具有几个子查询对象字段(platform(平台)、module(模块)、function(函数)和arguments(自变量))的子查询对象。子查询对象定义查询链的子查询。所述子查询被配置成执行函数以搜索基于windows的平台。参数(或自变量)可以被传递到函数以细化搜索。在408中提供的参数包括c盘驱动器、具有匹配“*.pepe”的文件名的文件以及在其内容中具有“malware”的文件。

在408处,还使用其他子查询对象字段来表明将对函数返回的搜索结果(也就是输出)应用条件。条件链运算符被定义成“and”,以便评估来自多个条件链的结果。但是,在该示例性主导查询400中,在410处通过条件字段定义了单一条件,并且因此不需要条件链运算符。所述条件被应用来确定关于搜索产生的大于零的文件数目的成功或失败。此外,所述条件被表明为“primary”,从而使得所有条件都基于该条件来过滤输出。因此,子查询结果仅包括具有字段files(文件)>0的结果。

在412处,输出字段提供子查询结果的名称(“fileoutput”)、实际的搜索结果(“$result.files”)以及将被提取以生成子查询结果的输出(搜索结果中的文件的“name”)。

在414处,执行器被提供为“responses”,这表明主导查询被配置成在端点上实施某种动作。如416处所示,查询运算符被定义成“and”,并且q字段表明定义一个或多个子查询对象。如416处所示,子查询对象可以按照其在对应于“queries”的主导查询中被配置的相同方式来配置。

在418处,执行器被提供为“triggers”,这表明主导查询被配置成确定某一条件是否得到满足并且随后基于所述条件得到满足而作出响应(在端点上实施某一动作)。如420处所示,查询运算符被定义成“and”,并且q字段表明定义一个或多个子查询对象。如420处所示,子查询对象可以按照其在对应于“queries”的主导查询中被配置的相同方式来配置。

图5是可以与本文中所描述的实施例相关联的操作的可能流程500的简化流程图。在至少一个实施例中,端点中的查询引擎(例如查询引擎40)可以执行与流程500相关联的一个或多个操作集合。查询引擎可以包括比如用于实施一项或多项操作的一个或多个处理器之类的装置。

流程500可以开始于502处,其中查询引擎40接收来自查询服务的主导查询。所述主导查询例如可以是由经过授权的用户在后端系统处配置的。在504处,主导查询被解析成可由查询引擎中的其他组件处理的代码。在506处,可以确定在主导查询中请求的动作(或多项动作)的类型。所述动作类型可以是搜索期望的数据,基于一项或多项规定的条件在端点上触发响应,或者在端点上执行特定响应。在至少一个实施例中,可以在主导查询中分别通过对象名称“queries”、“triggers”和“responses”来表明搜索、触发和响应动作。此外,在某些实例中,在相同的主导查询中可以包括一种或多种动作类型。

在508处,查询引擎可以基于在主导查询中定义的查询链生成一个或多个查询链以供执行。在510处,可以执行查询链中的子查询。各个查询链可以被顺序地或并行地执行。在某些情形中,对于查询链可以使用短路逻辑。举例来说,当使用短路逻辑时,如果查询链运算符是“or”并且一个查询链表明来自其查询的成功结果,则并不执行所有查询链。在这种情况下,一旦确定成功结果,所述处理可以结束,并且可以不执行任何剩余的未执行的查询链。

在512处,当所有查询链都返回了查询链结果时,或者当使用短路逻辑并且实际返回的结果表明不需要执行其他查询链时,可以生成主导查询结果。在514处,可以把主导查询结果传送回到查询服务,或者传送给任何其他适当的实体、节点或人。

图6是可以与本文中所描述的实施例相关联的操作的可能流程600的简化流程图。在至少一个实施例中,端点中的查询引擎(例如查询引擎40)可以执行与流程600相关联的一个或多个操作集合。查询引擎可以包括比如用于实施一项或多项操作的一个或多个处理器之类的装置。流程600示出了在主导查询中定义的查询链、子查询、条件链以及条件的顺序执行。但是应当认识到,这些活动当中的任何一项或多项可以被并行地执行,或者可以使用顺序和并行执行的任意适当组合。

流程600可以开始于602处,其中识别将被执行的查询链。在605处,查询引擎中的适当的执行器(也就是搜索、触发、响应)可以发起所识别出的查询链中的第一项子查询的执行。在606处,可以执行在第一项子查询中定义的函数。由所述函数产生的输出可以被返回到查询引擎。所述输出可以包含与函数的执行相关联的信息。函数输出的具体内容和格式可以取决于正被执行的具体函数。

函数的实例包括而不限于在端点上搜索数据(例如持久性收集器34(1)-34(n)、动态收集器36(1)-36(n))或者在端点上执行响应(例如响应函数32(1)-32(n))。搜索可以包括搜索已经收集到并且被存储的数据(例如收集数据数据库24)。这样的数据可以由持久性收集器收集,所述持久性收集器在端点上持续地或者以预定间隔、时间等收集数据。持久性收集器的一个实例可以包括而不限于在端点上捕获网络通信量的网络插件。另一种搜索可以包括由动态收集器实时动态收集信息。动态收集器的实例包括而不限于在端点上的文件系统中搜索新的和/或更新后的文件的文件插件,或者在端点上捕获当前进程活动的进程监测器。此外,可以在端点上动态地执行任何其他脚本或插件,以便搜索并获得期望的信息。

响应通常被配置成在端点上导致期望的动作。在至少某些情形中,响应被用来在确定端点已被攻陷之后在端点上实施补救动作。例如可以通过在端点上运行脚本以实施期望的动作而执行响应。动作的实例包括而不限于:移除/删除文件,隔离文件,发送电子邮件,向适当的接收者(例如事件响应者、后端系统、其他设备等等)发送通知,结束特定进程,重启或关闭端点,或者采取补救引起特定端点上的攻陷的条件所需要的任何其他动作。

在至少一个实施例中,可以如在608-612处所表明的那样发生对于子查询中的条件链的处理。条件链(如果存在的话)可以被执行以便对来自函数的输出应用一项或多项条件。在至少一个实施例中,条件可以是输出中的特定字段与预定数值(例如由配置主导查询的管理员选择)之间的比较。所述比较可以使用运算符来进行,所述运算符比如是等于、不等于、小于或等于、大于或等于、小于、大于、不存在、存在、包含等等。所述比较可以在字符串、数字或布尔数值上进行。

在608处,可以确定是否将执行子查询的更多条件链。如果仍然需要执行子查询的任何条件链,则在610处可以对函数输出应用该条件链中的条件,从而生成对应于该条件的结果(或者说“条件结果”)。如果所述条件链包括多项条件,则可以对函数输出应用每一项条件,从而生成对应的条件结果。在612处,可以确定对应于条件链的单一结果。如果在条件链中存在单一条件,则条件链结果可以等效于该单一条件的条件结果。但是在对于一个条件链配置多项条件的情形中,可以通过使用条件运算符(例如逻辑“and”或“or”)评估对应于条件链中的多项条件的条件结果来确定对应于条件链的条件链结果。

处理可以在608处继续,其中可以执行子查询的另一个条件链。当对于子查询没有更多条件链要执行时,然后在614处,可以基于一项或多项条件链结果和过滤器(如果存在的话)生成子查询结果。如果产生单一条件链结果,则可以对所述条件链结果应用任何过滤器从而生成子查询结果。但是在对于一项子查询配置多个条件链的情形中,可以通过使用条件链运算符(例如逻辑“and”或“or”)评估对应于子查询中的多个条件链的条件链结果来确定对应于子查询的单一子查询结果。此外,可以应用过滤器以便在子查询结果中只包括期望的信息。

可以由管理员配置任何类型的过滤器以获得期望的信息。举例来说,函数输出可以包含文件的多个元数据字段(例如名称、尺寸、内容、创建日期、最近一次修改、创建者等等)。条件可以包括基于特定元数据字段而选择文件。但是可以应用过滤器,从而使得仅有满足条件标准的文件的名称被包括在子查询结果中。但是正如在本文中之前所描述的那样,在某些实例中,条件本身可以操作来过滤输出从而生成条件结果。举例来说,如果“primary”子查询对象字段被设定为“true”,则所述条件可以基于该条件对输出进行过滤。

在至少一个实施例中,可以如在604-616处所表明的那样发生对于查询链中的子查询的处理。可以执行子查询以便实施函数、应用条件以及生成子查询结果。在616处,可以确定是否仍然需要执行查询链的更多子查询。如果仍然需要执行查询链的任何子查询,则处理可以返回到604以便识别用于执行的下一项子查询。处理可以按照本文中所描述的那样继续从而在614处生成子查询结果。

如果没有更多的子查询将被执行,则在618处可以确定对应于查询链的单一结果(或者说“查询链结果”)。如果对于查询链配置单一子查询,则查询链结果可以等效于该单一子查询的子查询结果。但是在对于查询链配置多项子查询的情形中,可以通过使用查询运算符(例如逻辑“and”、“or”、“all”)评估对应于查询链中的多项子查询的子查询结果来确定对应于查询链的单一结果。

在620处,可以确定是否将要执行主导查询中的更多查询链。如果在620处确定仍然需要执行任何查询链,则处理可以在602处继续,其中可以识别并且执行主导查询的另一个查询链。当没有更多查询链将被执行时,然后在622处,可以基于一项或多项查询链结果生成主导查询结果。如果产生单一查询链结果,则主导查询结果可以等效于所述单一查询链的查询链结果。但是在主导查询中配置多个查询链的情形中,可以通过使用查询链运算符(例如逻辑“and”或“or”)评估对应于所述多个查询链的查询链结果来确定单一主导查询结果。

参照图7a-7b,图7a-7b示出了用查询语言24编写的示例性主导查询700、示例性函数输出720以及示例性主导查询结果740。在702处,主导查询id被定义成“323”。在703处将执行器提供为“queries”,这表明主导查询700被配置成对存储在端点中或者可以通过其他方式从端点获得的数据(例如从插件或脚本获得的动态信息,存储在端点上的先前收集的信息等等)实施搜索。在该例中,在主导查询中不存在chain_op字段,这是因为只包括一个查询链。

在704处,提供查询链对象字段以定义查询链。查询运算符被定义成“and”,并且q字段表明定义一项或多项子查询。在该例中仅定义一项子查询。在706处,提供具有几个子查询对象字段(platform(平台)、module(模块)、function(函数)和arguments(自变量))的子查询对象。子查询对象定义查询链的子查询。所述子查询被配置成执行函数以搜索基于windows的平台。参数(或自变量)可以被传递到函数以细化搜索。在706中提供的参数包括任何文件名。因此在该例中,函数输出包括在端点上找到的所有文件的列表。所述列表包括对应于在搜索中找到的每一个文件的文件信息(例如创建日期/时间、删除日期/时间、目录路径、完全路径和文件名、最近一次写入、一项或多项散列、文件名以及尺寸)。

在706处,附加的子查询对象字段被用来表明将对函数返回的搜索结果(也就是输出)应用条件。条件链运算符被定义成“and”,以便评估来自多个条件链的结果。在该例中定义了主导查询700、第一条件链708和第二条件链714。第一条件链708包括第一条件710和第二条件712。第一条件710被应用于在函数输出中列出的文件,以便识别出具有大于或等于2015-3-1600:00:00的创建日期的所有文件。第二条件712被应用于在函数输出中列出的文件,以便识别出在文件名中具有数值“service”的所有文件。对应于条件710的条件结果包括函数输出的文件信息722、724和726。对应于712的条件结果包括函数输出的文件信息724。对应于条件链708的条件运算符是“and”。因此,条件链708的条件链结果仅包括文件信息724,其被包括在对应于条件710和条件712全部二者的条件结果中。

第二条件链714包括一项条件716,其被应用于在函数输出中列出的文件,以便识别出具有小于或等于2015-3-1623:00:00的创建日期的所有文件。对应于条件716的条件结果包括函数输出的文件信息722、724和726。该条件结果是条件链714的条件链结果。条件链运算符是“and”。因此,子查询结果仅包括文件信息724,其被包括在全部两项条件链结果708和714中。在该例中,主导查询结果是基于单一查询链的查询链结果而确定的,并且所述单一查询链结果是基于单一子查询的子查询结果而确定的。因此,主导查询结果740被确定为仅包括文件信息724。

本文中所描述的通信系统100的实施例为用户给出了创建复杂查询以便取回期望的实时或历史数据并且按照需要作出响应以便补救被攻陷的端点的能力。可以对于多种使用情况利用本文中所公开的实施例的动态性质,从而不仅分析信息,而且还充当用于与端点相关联的任何类型的数据的查询引擎。举例来说,可以利用查询引擎来分析从信用欺诈数据信息到提供在小测验应用中的答案的所有事项。现在提供几种说明性使用情况。主导查询可以被配置成仅从与规定的查询(例如基于查询链、子查询、条件链、条件)相匹配的端点请求信息,并且随后缩减所返回的实际数据。举例来说,主导查询可以请求满足以下条件的所有当前端点:1)具有名称“malware.exe”或者具有等于“xxxxxxxxx”的sha1散列的当前正在执行的进程,并且2)在最近的24小时内连接到目的地端口911。

其他使用情况可以包括把攻陷指标(ioc)变换到查询语言以便检测被攻陷的端点。ioc信息可以被用来设置触发和响应。举例来说,基于ioc的主导查询可以请求在特定事件发生时执行特定脚本。假设事件是具有尺寸>10并且位于文件目录c:\\temp中的新文件的创建。在该例中,如果创建了文件,则查询引擎接收事件的通知(例如文件被创建),并且可以使用条件来评估文件的尺寸和位置。如果文件满足期望的标准,则可以执行响应以运行期望的脚本。此外,查询引擎40可以作为独立的服务器运行,以便为针对其他类型的处理的请求提供服务。举例来说,超文本标记语言第五次修订版(html5)可以使用查询引擎以特定条件(比如“包含“johnny”作为作者并且其中推文文字在2天前撰写的所有推文”)来远程分析json。

图8是根据一个实施例的处理器的示例性图示。处理器800是端点30(1)-30(n)和后端系统20的处理器39(1)-39(n)的一个可能的实施例。处理器800可以是任何类型的处理器,比如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、多核处理器、单核处理器或者用以执行代码的其他设备。虽然在图8中仅示出一个处理器800,但是处理单元可以替换地包括多于一个图8中示出的处理器800。处理器800可以是单线程核心,或者对于至少一个实施例,处理器800可以是多线程的,这是因为其可以对于每个核心包括多于一个硬件线程上下文(或者说“逻辑处理器”)。

图8还示出了根据一个实施例的耦合到处理器800的存储器802。存储器802是端点30(1)-30(n)和后端系统20的存储器单元37(1)-37(n)的一个实施例。存储器802可以是本领域技术人员已知的或者通过其他方式可获得的多种存储器(包括存储器分层结构的各层)当中的任一种。这样的存储器单元可以包括而不限于随机存取存储器(ram)、只读存储器(rom)、现场可编程门阵列(fpga)的逻辑块、可擦写可编程只读存储器(eprom)以及电可擦写可编程rom(eeprom)。

代码804可以是将由处理器800执行的一条或多条指令,并且可以被存储在存储器802中。代码804可以包括各种模块(例如查询服务22、查询应用38(1)-38(n)、查询引擎40(1)-40(n)、响应函数32(1)-32(n)、持久性收集器34(1)-34(n)、动态收集器36(1)-36(n)、查询引擎40及其组件等等)的指令,该指令可以被存储在软件、硬件、固件或者其任意适当组合中,或者在适当情况下并且基于具体需求可以被存储在任何其他内部或外部组件、设备、单元或对象中。在一个实例中,处理器800可以遵循由代码804表明的指令的程序序列。每一条指令进入前端逻辑806并且由一个或多个译码器808处理。所述译码器可以作为其输出生成微操作,比如具有预定义格式的固定宽度微操作,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。前端逻辑806还包括寄存器重命名逻辑810和调度逻辑812,该寄存器重命名逻辑810和调度逻辑812通常分配资源并且把对应于指令的操作排入队列以供执行。

处理器800还可以包括具有执行单元集合816-1到816-m的执行逻辑814。一些实施例可以包括专用于特定函数或函数集合的一定数目的执行单元。其他实施例可以仅包括一个执行单元或者可以实施特定函数的一个执行单元。执行逻辑814可以实施由代码指令规定的操作。

在由代码指令规定的操作执行完成之后,后端逻辑818可以将代码804的指令引退。在一个实施例中,处理器800允许指令的乱序执行但是要求指令按顺序引退。引退逻辑820可以采取多种已知的形式(例如重新排序缓冲器等等)。通过这种方式,处理器800在代码804的执行期间至少在由以下各项生成的输出方面被变换:由寄存器重命名逻辑810利用的译码器、硬件寄存器和表,以及由执行逻辑814修改的任何寄存器(未示出)。

虽然在图8中未示出,但是处理单元可以包括具有处理器800的芯片上的其他单元。举例来说,处理单元可以包括存储器控制逻辑以及处理器800。处理单元可以包括i/o控制逻辑,并且/或者可以包括与存储器控制逻辑集成在一起的i/o控制逻辑。处理单元还可以包括一个或多个高速缓存。在一些实施例中,非易失性存储器(比如闪存或熔丝)也可以被包括在具有处理器800的芯片上。

图9示出了根据一个实施例的被安排在点对点(ptp)配置中的计算系统900的一个可能的实例。具体来说,图9示出了其中处理器、存储器以及输入/输出设备通过一定数目的点对点接口互连的系统。在至少一个实施例中,本文中所示出并描述的端点30(1)-30(n)和/或后端系统20可以按照与示例性计算系统900相同或类似的方式被配置。

处理器970和980还可以各自包括集成的存储器控制器逻辑(mc)972和982,以便与存储器单元932和934进行通信。在替换的实施例中,存储器控制器逻辑972和982可以是与处理器970和980分开的分立逻辑。存储器单元932和/或934可以存储将由处理器970和980使用来实现与本文中所概述的远程端点信息取回相关联的操作的各种数据。

处理器970和980可以是任何类型的处理器,比如参照图8的处理器800和图1的处理器39(1)-39(n)所讨论的那些处理器。处理器970和980可以分别使用点对点接口电路978和988通过点对点(ptp)接口950交换数据。处理器970和980可以各自使用点对点接口电路976、986、994和998通过单独的点对点接口952和954与控制逻辑990交换数据。正如本文中所示出的那样,控制逻辑990与处理单元970和980分开。但是在一个实施例中,控制逻辑990被集成在与处理单元970和980相同的芯片上。此外,控制逻辑990可以通过不同方式被划分成具有更少或更多的集成电路。此外,控制逻辑990还可以使用接口电路992(其可以是ptp接口电路)通过高性能图形接口939与高性能图形电路938交换数据。在替换的实施例中,图9中示出的任何或所有ptp链接可以被实施成多分支总线而不是ptp链接。

控制逻辑990可以通过接口电路996与总线920进行通信。总线920可以具有通过该总线进行通信的一个或多个设备,比如总线桥接器918和i/o设备916。通过总线910,总线桥接器918可以与其他设备进行通信,该其他设备比如是键盘/鼠标912(或者其他输入设备,比如触摸屏、轨迹球、操纵杆等等)、通信设备926(比如调制解调器、网络接口卡或者可以通过计算机网络960进行通信的其他类型的通信设备)、音频i/o设备914以及/或者数据存储设备928。数据存储设备928可以存储代码930,所述代码930可以由处理器970和/或980执行。在替换的实施例中,所述总线架构的任何部分可以通过一个或多个ptp链接来实施。

图9中描绘出的计算系统是可以被利用来实施本文中所讨论的各个实施例的一个实施例的示意性图示。应当认识到,根据本文中所提供的各个实施例,图9中描绘出的系统的各种组件可以被组合在芯片上系统(soc)架构中或者被组合在能够实现对于私有数据的保护的任何其他适当的配置中。

参照图10,图10是与本公开内容的示例性arm生态系统soc1000相关联的简化方块图。本公开内容的至少一种示例性实现方式可以包括本文中所讨论的远程端点信息取回特征以及arm组件。举例来说,图10的实例可以与端点30(1)-30(n)相关联。此外,所述架构可以是任何类型的平板设备、智能电话(包括androidtm电话、iphonestm)、ipadtm、googlenexustm、microsoftsurfacetm、个人计算机、服务器、视频处理组件、膝上型计算机(包括任何类型的笔记本)、ultrabooktm系统、任何类型的具有触摸功能的输入设备等等的一部分。

在图10的该例中,arm生态系统soc1000可以包括多个核心1006-1007、l2高速缓存控制器1008、总线接口单元1009、l2高速缓存1010、图形处理单元(gpu)1015、互连1002、视频编解码器1020以及液晶显示器(lcd)i/f1025(其可以与耦合到lcd的移动行业处理器接口(mipi)/高清晰度多媒体接口(hdmi)链接相关联)。

arm生态系统soc1000还可以包括订户身份模块(sim)i/f1030、引导只读存储器(rom)1035、同步动态随机存取存储器(sdram)控制器1040、闪存控制器1045、串行外围接口(spi)主机1050、适当的电源控制器1055、动态ram(dram)1060以及闪存1065。此外,一个或多个实施例包括一种或多种通信能力、接口和特征,比如bluetoothtm1070、3g/4g/ng调制解调器1075、全球定位系统(gps)1080和802.11wi-fi1085的实例。

在操作中,图10的实例可以提供处理能力以及相对较低的功率消耗,以便允许各种类型的计算(例如移动计算、高端数字家庭、服务器、无线基础设施等等)。此外,这样的架构可以允许许多软件应用(例如androidtm、adobe®flash®播放器、java平台标准版本(javase)、javafx、linux、嵌入式microsoftwindows、symbian以及ubuntu等等)。在至少一个示例性实施例中,核心处理器可以通过耦合的低等待时间2级高速缓存实施乱序超标量流水线。

关于与端点30(1)-30(n)和后端系统20相关联的内部结构,这些设备可以包括易失性和/或非易失性存储器单元(例如存储器单元37(1)-37(n)等等),以用于存储将在本文中所概述的操作中使用的数据和信息,包括指令、逻辑和/或代码。端点30(1)-30(n)和后端系统20可以把数据和信息保持在任何适当的存储器单元(例如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、可擦写prom(eprom)、电eprom(eeprom)、盘驱动器、软盘、紧致盘rom(cd-rom)、数字通用盘(dvd)、闪存、磁光盘、专用集成电路(asic)或者能够存储数据和信息的其他类型的非易失性机器可读介质)、软件、硬件、固件中,或者在适当的情况下并且基于具体需求保持在任何其他适当的组件、设备、单元或对象中。本文中所讨论的任何存储器项目(例如存储器单元37(1)-37(n))应当被解释成涵盖在宽泛术语“存储器单元”内。此外,在通信系统100中使用、存储、跟踪、发送或接收的信息可以被提供在任何存储结构中,该任何存储结构包括而不限于储存库、数据库、寄存器、队列、表或高速缓存,所有这些可以在任何适当的时间框架下被索引。任何此类存储结构(例如收集数据数据库等等)也可以被包括在本文中所使用的宽泛术语“存储器单元”内。

在某些示例性实现方式中,本文中所概述的函数可以通过编码在一种或多种有形介质中的逻辑(例如提供在asic中的嵌入式逻辑、数字信号处理器(dsp)指令、将由一个或多个处理器执行的软件(潜在地包括目标代码和源代码)或者其他类似的机器等等)来实施,所述有形介质可以包括非瞬时性机器可读存储介质。端点30(1)-30(n)和后端系统20可以包括一个或多个处理器(例如处理器39(1)-39(n)),所述处理器可以执行逻辑或算法以便实施本文中所讨论的活动。处理器可以执行与数据相关联的任何类型的指令以便实现本文中所详述的操作。在一个实例中,处理器可以把单元或物品(例如数据)从一个状态或事物变换到另一个状态或事物。在另一个实例中,本文中所概述的活动可以通过固定逻辑或可编程逻辑(例如由处理器执行的软件/计算机指令)来实施,并且本文中所提到的单元可以是某种类型的可编程处理器、可编程数字逻辑(例如现场可编程门阵列(fpga)、eprom、eeprom)或者包括数字逻辑、软件、代码、电子指令或其任意适当组合的asic。本文中所描述的任何潜在的处理单元、模块和机器应当被解释成涵盖在宽泛术语“处理器”内。

应当提到的是,对于本文中所提供的实例,交互可能是通过两个、三个或更多计算系统来描述的。但是这样做仅仅是出于清楚和举例的目的。在某些情况下,通过仅仅参照有限数目的端点和后端系统可能更容易描述给定的流程集合的一项或多项功能。此外,所述用于远程端点信息取回的系统可以很容易扩展并且可以被实施在大量组件以及更加复杂/精密的安排和配置上。因此,所提供的实例不应当限制潜在地被应用于许多其他架构的所述私有数据保护系统的范围或者抑制其宽泛教导。

此外,很重要地应当提到的是,参照图1-7描述的操作仅仅示出了可以由通信系统100执行或者在通信系统100内执行的一些可能的远程端点信息取回活动。在适当的情况下可以删除或去除这些操作当中的一些,或者在不背离本公开内容的范围的情况下可以对这些操作进行相当程度的修改或改变。此外,这些操作的定时可以被相当程度地改动。前面的操作流程是出于举例和讨论的目的而给出的。通过本文中描述的实施例提供了很高的灵活性,这是因为在不背离本公开内容的教导的情况下,可以提供任何适当的安排、时序(chronology)、配置和定时机制。

除非明确地另行声明,否则如本文中所使用的,对于多个项目(例如单元、条件、活动等等)之前的短语“至少其中之一”的使用应当意味着所提到的项目的任意组合。举例来说,“x、y和z的至少其中之一”应当意味着以下各项当中的至少一项:1)x,但是没有y并且没有z;2)y,但是没有x并且没有z;3)z,但是没有x并且没有y;4)x和y,但是没有z;5)x和z,但是没有y;6)y和z,但是没有x;或者7)x、y和z。此外,除非明确地另行声明,否则“第一”、“第二”、“第三”等术语意图区分其所修饰的特定名词(例如单元、条件、模块、活动、操作、权利要求要素等等),但是不意图表明所修饰的名词的任何类型的顺序、排序、重要性、时间序列或分层结构。举例来说,“第一x”和“第二x”意图标示两个分开的x单元,而不一定受到所述两个单元的任何顺序、排序、重要性、时间序列或分层结构的限制。

虽然参照具体的安排和配置详细描述了本公开内容,但是在不背离本公开内容的范围的情况下可以显著地改变这些示例性配置和安排。此外,虽然通信系统100是参照促进端点信息取回活动的具体单元和操作来描述的,但是这些单元和操作可以通过实现所述用于远程端点信息取回的系统的预定功能的任何适当的架构、协议和/或处理来替代。

其他注释和实例

下面的实例涉及根据本说明书的实施例。实例1提供用以实施以下步骤的装置、系统、一种或多种计算机可读存储介质、方法以及/或者基于硬件、固件和/或软件的逻辑:在网络环境中的端点处接收主导查询;执行定义在主导查询中的一项或多项子查询的集合。在实例1中,执行所述一项或多项子查询的集合当中的第一子查询包括:使得在端点上执行函数以产生第一输出;对第一输出应用一项或多项条件以确定第一结果;以及至少部分地基于第一结果确定主导查询的结果。

在实例2中,实例1的主题内容可以可选地包括,所述主导查询是通过网络连接从另一个节点接收的。

在实例3中,实例1-2当中的任一个的主题内容可以可选地包括,在端点上执行所述函数以便基于一个或多个参数收集实时信息。

在实例4中,实例1-3当中的任一个的主题内容可以可选地包括,所述函数是插件或脚本的其中之一。

在实例5中,实例1-4当中的任一个的主题内容可以可选地包括,对第一输出应用一项或多项条件包括对第一输出进行过滤以确定第一结果。

在实例6中,实例1-5当中的任一个的主题内容可以可选地包括,所述指令在由至少一个处理器执行时使得所述至少一个处理器确定在主导查询中表明的动作类型,并且至少部分地基于所述动作类型生成将要执行的一项或多项子查询的集合。

在实例7中,实例6的主题内容可以可选地包括,所述动作类型是搜索、触发或响应的其中之一。

在实例8中,实例1-7当中的任一个的主题内容可以可选地包括,所述指令在由至少一个处理器执行时使得所述至少一个处理器:如果主导查询结果表明端点被攻陷,则在端点上执行第二函数。

在实例9中,实例1-7当中的任一个的主题内容可以可选地包括执行所述一项或多项子查询的集合当中的第二子查询,所述执行包括:使得在端点上执行第二函数以产生第二输出;以及对第二输出应用一项或多项其他条件以确定第二结果,其中至少部分地通过根据逻辑运算符评估第一和第二结果而确定主导查询的结果。

在实例10中,实例9的主题内容可以可选地包括,所述函数和第二函数将在端点上实施不同的操作。

在实例11中,实例1-10当中的任一个的主题内容可以可选地包括,对第一输出应用一项或多项条件包括:对第一输出应用第一条件以确定第一条件结果;对第一输出应用第二条件以确定第二条件结果;以及至少部分地基于第一条件结果、第二条件结果和条件运算符而确定条件链结果。

在实例12中,实例1-11当中的任一个的主题内容可以可选地包括,第一结果包括从函数返回的至少一个信息字符串。

在实例13中,实例12的主题内容可以可选地包括,对第一结果进行过滤以便从所述信息字符串中排除至少一些信息。

在实例14中,实例1-13当中的任一个的主题内容可以可选地包括,把主导查询的结果传送到另一个节点中的查询服务。

在实例15中,实例1-14当中的任一个的主题内容可以可选地包括,所述主导查询包括:包括第一查询链的多个查询链,其中第一查询链包括所述一项或多项子查询的集合;以及查询链运算符,其中通过使用查询链运算符评估所述多个查询链的查询链结果而确定主导查询结果。

实例16提供用于在端点上取回信息的装置,所述装置包括用于实施实例1-15当中的任一个的方法的装置。

在实例17中,实例16的主题内容可以可选地包括,用于实施所述方法的装置包括至少一个处理器和至少一个存储器单元。

在实例18中,实例17的主题内容可以可选地包括,所述至少一个存储器单元包括机器可读指令,所述机器可读指令在被执行时使得所述装置实施实例1-15当中的任一个的方法。

在实例19中,实例16-18当中的任一个的主题内容可以可选地包括,所述装置是计算系统或芯片上系统的其中之一。

实例20提供包括用于在端点上取回信息的指令的至少一种机器可读存储介质,其中所述指令在被执行时实现一种装置或者实施实例1-15当中的任一个中的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1