发明内容
如鉴于以下公开内容将变得清楚的那样,本公开内容构建于在我们的先前申请US-A-2007/0016953中公开的技术上以解决这些和其他问题。
根据本发明的第一方面,提供一种将计算机对象分类为恶意软件的方法,该方法包括:
在基本计算机从多个远程计算机中的每个远程计算机接收关于计算机对象的数据,该对象或者相似对象在多个远程计算机上被存储和/或处理;
其中基本计算机包括多个威胁服务器,多个威胁服务器被布置用于从多个远程计算机接收所述数据并且对该数据实时应用规则和/或启发法以确定所述对象是否为恶意软件并且向远程计算机传达所述确定;
所述基本计算机还包括至少一个中心服务器,至少一个中心服务器与威胁服务器通信并且被布置用于从威胁服务器接收关于对象的所述数据以维护从所有威胁服务器关于对象接收的数据的主数据库。
在优选实施例中,威胁服务器基于该对象的从远程计算机发送的细节进行关于该对象是否为善意或者恶意的实时判决。每个威胁服务器连接到如下数据库,该数据库包含用于基本计算机已知的所有对象的条目和对象是否为安全或者不安全的分类。数据库也可以存储用于基于从远程计算机接收的信息判决未知对象是否为安全或者不安全的规则。中心服务器提供关于所有对象接收的所有数据的主数据库。这可以在调查恶意软件威胁时由人类分析师或者计算机分析来使用。
优选地,至少一个威胁服务器包括用于保持从它附着到的远程计算机接收的信息的至少一个数据库,该方法包括:在威胁服务器的至少一个数据库中存储所述数据;以及按照间隔将数据库的内容与时间戳一起存储于存储装置中并且数据库。可以预定或者动态设置间隔。这一数据结构在提供数据的安全、可缩放、可靠更新时具有许多优点。这一方案与如下常规方案比较按照显著比例减少网络中的工作量和流量,在该常规方案中,每条数据通常在由威胁服务器接收时将立即向系统中的将保持数据的所有其他威胁服务器传播。
优选地,该方法包括通过在中心服务器接收所有加时间戳的数据块并且向它的数据库中并入它们来创建备份中心服务器。因此,可以用当前数据集快速创建备份服务器而未干扰当前“活(live)”服务器的操作。活服务器无需变成下线并且可以在创建备份服务器时继续工作。
在一个实施例中,该方法包括:让中心服务器下线一个时间段,从而使得它在该时间段期间不从威胁服务器接收数据的更新;在时间段已经流逝之后,用来自存储装置的具有比在中心服务器变成下线时的时间更晚的时间戳的加时间戳的数据块更新中心服务器的数据库;以及使中心服务器恢复上线。这允许中心服务器被下线以例如用于维护或者软件更新并且被快速和简单地更新以便具有当前数据。没有其他服务器不得不被下线或者以其他方式受这一过程影响。
在一个实施例中,该方法包括:回滚中心服务器的数据库到以往时间点;以及用来自存储装置的具有比所述以往时间点更晚的时间戳的加时间戳的数据块更新中心服务器的数据库;以及使中心服务器恢复上线。因此,如果数据库出于任何原因而被破坏,则可以回滚数据库到在破坏发生之前的点。然后,可以用遗漏数据更新数据库。同样,没有其他服务器被下线或者以其他方式受这一过程影响。
优选地,中心服务器具有包括以下各项中的任何一项或者多项的数据库:a)对象签名和关于该对象的元数据;b)对象行为;以及c)关于什么对象存在于什么远程计算机上的信息。这允许基本计算机跨越群体构建对象的活动及其属性和行为的全画面,从而允许执行深度分析以标识恶意软件以及在数据中的趋势和转变。
在一个优选实施例中,使用云计算来实施所述威胁和中心服务器。这允许“弹性”计算,从而使得系统管理员可以如需要的那样创建、起动和终止服务器实例,从而仅支付使用什么计算资源并且允许对实例的地理位置的控制,这允许延时优化和高冗余度水平。
优选地,该方法包括:在威胁服务器维护在该威胁服务器先前看见并且向中心服务器转发的对象的列表;并且如果对象以前未被看见,则向中心服务器发送关于该对象的数据,并且如果对象以前已经被看见,则增加用于该对象的计数而不是发送数据。这显著减少网络和服务器上的网络流量和负荷。
根据本发明的第二方面,提供一种用于将计算机对象分类为恶意软件的装置,该装置包括:
基本计算机,被布置用于从多个远程计算机中的每个远程计算机接收关于计算机对象的数据,该对象或者相似对象在多个远程计算机上被存储和/或处理;
其中基本计算机包括多个威胁服务器,多个威胁服务器被布置用于从多个远程计算机接收所述数据并且对该数据实时应用规则和/或启发法以确定所述对象是否为恶意软件并且向远程计算机传达所述确定;
所述基本计算机还包括至少一个中心服务器,至少一个中心服务器与威胁服务器通信并且被布置用于从威胁服务器接收关于对象的所述数据以维护从所有威胁服务器关于对象接收的数据的主数据库。
根据本发明的第三方面,提供一种将计算机对象分类为恶意软件的方法,该方法包括:
在基本计算机从多个远程计算机中的每个远程计算机接收关于计算机对象的数据,该对象或者相似对象在多个远程计算机上被存储和/或处理;
在给定的时间段中对具有一个或者多个公共属性或者行为的对象已经被远程计算机看见的次数计数;
比较计数的次数与基于以往观测的预计次数;以及
如果比较超过某一预定阈值,则标注对象为不安全或者为可疑。
如将被理解的那样,从在远程计算机上运行的代理程序接收的数据量可能庞大并且因此适合由计算机处理。让人类操作者关注所有这一数据以确定恶意软件将不切实际。这一方面允许将更大聚焦置于研究这些局外者(outlier)。可以容易地开发如下过程,这些过程可以使用这一局外者信息以自动地分组、标识或者优先化研究工作并且甚至进行恶意软件确定。在自动化规则用来标识恶意软件时,这一信息可以用来在应用于已经被标识为局外者的组中的对象时自动提高这些规则的灵敏度。
对象的属性可以是以下各项中的一项或者任何组合:文件名、文件类型、文件位置、在文件中包含的厂商信息、文件大小、与该文件有关的注册表关键字或者任何其他系统推导的数据或者与对象有关的事件数据。
根据本发明的第四方面,提供一种用于将计算机对象分类为恶意软件的装置,该装置包括:基本计算机,被布置用于从多个远程计算机中的每个远程计算机接收关于计算机对象的数据,该对象或者相似对象在多个远程计算机上被存储和/或处理;基本计算机被布置用于:
在给定的时间段中对具有一个或者多个公共属性或者行为的对象已经被远程计算机看见的次数计数;
比较计数的次数与基于以往观测的预计次数;以及
如果比较超过某一预定阈值,则标注对象为不安全或者为可疑。
根据本发明的第五方面,提供一种将计算机对象分类为恶意软件的方法,该方法包括:
在基本计算机从多个远程计算机中的每个远程计算机接收关于计算机对象的数据,该对象或者相似对象在多个远程计算机上被存储和/或处理;
在数据库中存储所述数据;以及
向用户呈现与多个对象的组和那些对象的各种属性有关的信息的显示,该显示被布置以使得在对象之间示出共性,其中显示的对象的组对应于数据库的用户查询。
因此,通过能够跨越已经看见对象的所有远程计算机查询和分析对象的集总视图、即它的元数据和行为,可以无论通过人类或者计算机推导对象的更信息丰富的视图。此外,有可能基于对象的标准、即元数据和行为中的任何标准对它们进行交叉分组。
在根据这一方案对对象进行分组时运用的用户无需是熟练的恶意软件分析师。用户在使用工具时和在通过运行查询并且寻找共性来对对象进行分组时仅需基本训练。对查询覆盖的对象的最终分析可以由熟练的恶意软件分析师进行。这一系统的关键优点是计算机在处理任务过大而以至于让人类操作者完成不切实际的原始数据时完成工作。对数据进行分组的人类操作者无需熟练,这减少用于业务的成本。这减少成本并且让熟练的恶意软件分析师集中于被发现为用于进一步调查的良好候选的查询。因此,这些操作者的技能在使用他们的经验以标识恶意软件时被最有效地部署。
在一个实施例中,以表格形式显示信息,其中表格的行对应于对象并且表格的列对应于对象的属性。然而,可以使用其他显示形式,例如,图形、图表、3D可视化等。
优选地,用图示向用户呈现对象的至少一个属性,从而使得向具有公共属性的对象给予相同图示表示。在一个优选实施例中,图示表示包括具有不同形状和/或颜色的符号。这允许用户瞥一眼辨认属性中的共性。这对于如下属性良好地起作用,在这些属性中,共性重要而属性的实际值相对地不重要。
优选地,该方法包括:标识在对象之间在一个或者多个属性中的共性;以及根据所述标识的共性精化查询。通过根据发现的共性精化查询,用户可以快速和简单地调查恶意软件。可以标注查询的分组数据以用于由人类分析师进一步调查或者立即被标注为善意或者恶意。
优选地,该方法包括如果确定用户查询在确定恶意软件时是确定性的则从查询创建规则。
在一个优选实施例中,该方法包括:将对象的用户分组与采取的任何和所有用户动作(比如将组的对象分类为安全或者不安全)一起监视;在生成用于将对象分类为恶意软件的新规则时自动应用所述分组和动作。因此,通过跟踪这些动作,服务器有可能从人类分析师学习如何自动标识和确定对象。应用可以优选地记住用户已经运行的查询。如果相同查询由用户反复地运行并且返回恶意对象,或者如果研究者始终采取确定对象为恶意软件的动作,则系统可以自动标识这一状况并且创建用于确定匹配对象为恶意的标准和动作的规则。
优选地,该方法包括在基本计算机将规则应用于对象和/或向远程计算机发送规则并且在远程计算机将规则应用于对象以将对象分类为安全或者不安全。因此,可以通过将规则应用于对象来针对以前未被看见的对象实时给予保护。在远程计算机运行的代理软件可以例如在失去与基本计算机的联系的情况下针对对象应用规则从而允许代理软件即使在基本计算机“下线”时仍然进行提供保护以防新恶意软件对象。
优选地,该方法包括在基本计算机的数据库中存储根据规则对对象的为安全或者不安全的分类。可以在评价规则性能时和在制定新规则时考虑这一信息。
在一个优选实施例中,该方法包括:从远程计算机接收被所述规则分类为恶意软件的对象被认为不是恶意软件这样的信息;以及,根据所述信息修改或者删除规则。这允许向中心服务器的关于规则的性能的如下反馈,可以在如果必要则修改或者删除规则时考虑该反馈并且可以在确定将来规则时考虑该反馈。
根据本发明的第六方面,提供一种用于将计算机对象分类为恶意软件的装置,该装置包括:基本计算机,被布置用于从多个远程计算机中的每个远程计算机接收关于计算机对象的数据,该对象或者相似对象在多个远程计算机上被存储和/或处理;基本计算机被布置用于:
在数据库中存储所述数据;以及
向用户呈现与多个对象的组和那些对象的各种属性有关的信息的显示,该显示被布置以使得在对象之间示出共性,其中显示的对象的组对应于数据库的用户查询。
根据本发明的第七方面,提供一种在计算机上操作安全程序的方法,该方法包括操作安全程序以在监视在计算机上运行的对象时冒充或者使用操作系统功能,所述监视是为了确定对象是否为恶意软件。
这允许程序抵御来自恶意对象的攻击。程序可以通过在有必要依赖于标准系统调用时冒充系统的上下文或者通过如原始水平的数据被存储于盘上一样访问它来回避任何系统调用来执行操作。在这样做时,恶意软件无法通过废除(kill)进程来做出反应,因为进程是操作系统。废除操作系统也将防止恶意软件操作。
根据本发明的第八方面,提供一种用于对抗恶意软件的计算机程序,该计算机程序包括程序指令,这些程序指令在运行于计算机上时使计算机监视在计算机上运行的对象以确定对象是否为恶意软件,该监视使得程序冒充或者使用操作系统功能。
根据本发明的第九方面,提供一种在计算机上操作安全程序的方法,该方法包括:
在计算机上加载安全程序的第一组件;
在计算机上动态创建安全程序的第二组件,第二组件具有与第一组件不同的属性并且将在第一组件由于恶意活动而加载失败的情况下自动加载。
优选地,第二组件将具有相同功能、但是将被修改以便表现为按照名称和形式而不同。在这一场景中,如果主要可执行文件最可能由于被恶意软件废除而加载失败,则第二组件将被加载以执行它的功能。如果主要可执行文件加载成功,则次级可执行文件将简单地终止以通过标识主要可执行文件的存在来避免冲突。
优选地,第二组件被布置用于去除它自己的数字签名。
根据本发明的第十方面,提供一种用于对抗恶意软件的计算机程序,该计算机程序包括程序指令,这些程序指令在运行于计算机程序上时使计算机在计算机上加载安全程序的第一组件;以及在计算机上动态创建安全程序的第二组件,第二组件具有与第一组件不同的属性并且将在第一组件由于恶意活动而加载失败的情况下自动加载。
根据本发明的第十一方面,提供一种记录于载体上的如以上描述的计算机程序。
根据本发明的第十二方面,提供一种将远程计算机连接到多个服务器之一的方法,该方法包括:
在远程计算机上安装代理程序;代理程序具有用于向由在安装代理程序时的时间确定的服务器分配远程计算机的算法;以及
将代理程序连接到分配的服务器。
优选实施例提供将远程计算机动态映射到服务器的简单、伪随机方式,即使同时安装数千远程计算机,该方式仍然在服务器之间均匀分担负荷。这与其中专用硬件用来在服务器之间分担负荷的一些现有技术方案比较。
优选地,算法向也由远程计算机与服务器的邻近度确定的服务器分配远程计算机。通过基于位置分配,可以最小化延时。
优选地,该方法包括使用DNS分布网络将远程计算机连接到服务器。这提供将服务器名称映射到服务器的物理地址的方便方式。
优选地,代理程序具有用于在原先分配的服务器不可访问的情况下为远程计算机确定次要服务器的次要算法。这例如在原先分配的服务器不可操作的情况下或者如果恶意软件干扰用来将服务器映射到物理地址的机制(例如,DNS网络)则提供有用备份。优选地,该方法包括根据代理程序从原先分配的服务器接收的信息将远程计算机连接到不同服务器。这些技术允许更多灵活性和集中控制以向服务器重新分配远程计算机。
根据本发明的第十三方面,提供一种包括用于以下操作的程序指令的计算机程序:
向由在远程计算机上安装程序时的时间确定的在多个服务器中的一个服务器分配远程计算机;以及
将代理程序连接到分配的服务器。
根据本发明的第十四方面,提供一种记录于载体上的如以上描述的计算机程序。载体可以是任何物理介质,例如,盘、USB存储装置、硬驱动、光学介质等。
根据本发明的第十五方面,提供一种提供保护以防恶意软件的方法,该方法包括:
在连接到网络的远程计算机上执行代理程序,代理程序被配置用于经由网络与基本计算机通信,代理程序包括被布置用于根据预定规则阻止在远程计算机与在网络上的实体之间的通信的防火墙;以及
根据从基本计算机接收的规则配置防火墙。
优选实施例的可配置防火墙因此可以利用在基本计算机保持的关于恶意对象和网络URL开发的规则和知识以在通过禁用恶意软件的通信来对抗恶意软件时提供下一道防线。在已知防火墙中,用户通常必须人工配置防火墙。
优选地,该方法包括:在远程计算机从基本计算机接收在远程计算机上的对象和/或在网络上的实体不安全这样的信息;以及在远程计算机包括规则,从而使得涉及到不安全对象和/或不安全实体的预期网络通信被防火墙阻止。防火墙因此可以被配置用于停止在远程计算机上的试图通信的恶意对象与在网络上的实体(比如第三方服务器)之间的通信,或者停止在远程计算机上的任何对象与已知与恶意活动关联的网络位置(比如由已知罪犯操作的URL)之间的通信。这可以用来例如防止罪犯窃取个人数据、口令等。
优选地,该方法包括:在远程计算机从基本计算机接收在远程计算机上的对象和/或在网络上的实体不安全这样的信息;请求来自远程计算机的用户的对于与第三方共享涉及到不安全对象和/或不安全实体的预期网络通信的细节的准予;以及截获涉及到不安全对象和/或不安全实体的预期网络通信并且与第三方共享它们。这解决如下事实,该事实为在现有技术中,在应付计算机犯罪时大多数工作集中于停止恶意软件的影响而不是标识和试图阻止在恶意软件后面的罪犯。一个难点是防恶意软件或者甚至警方侵入罪犯的服务器以发现罪犯的数据是不合法的。实际上,罪犯使用所谓的“僵尸网络(botnet)”是已知伎俩,这些僵尸网络是合法用户的已经被恶意软件感染并且由此在罪犯的控制之下的计算机的“僵尸网络”。优选实施例保持涉及到恶意软件的通信的记录,因此当局可以看见罪犯正窃取什么数据。出于法律原因,在向第三方发送任何数据之前获得用户的同意。这可以用各种方式来实施:1)总是询问(对于每个适用检测),2)获得每恶意软件类型的总括准予;以及3)获得无论恶意软件类型如何的总括准许。
根据本发明的第十六方面,提供一种用于提供保护以防恶意软件的计算机程序,该计算机程序包括程序指令,这些程序指令当在连接到网络的远程计算机上执行时:
经由网络与基本计算机通信,计算机程序包括被布置用于根据预定规则阻止在远程计算机与在网络上的实体之间的通信的防火墙;以及
根据从基本计算机接收的规则配置防火墙。
如鉴于以下公开内容将变得清楚的那样,以上描述的任何实施例的特征可以与如以上描述的本发明的任何方面的任何其他实施例的特征中的任何特征组合。
具体实施方式
参照图1,将计算机网络总体上示出为围绕分布式网络(比如因特网1)为基础。然而,本发明可以跨越其他类型的网络(比如LAN)来实施或者使用其他类型的网络。多个本地或者“远程”计算机2经由因特网1连接到“中心”或者“基本”计算机3。计算机可以各自不同地是个人计算机、任何类型的服务器、PDA、移动电话、交互式电视或者能够加载和操作计算机对象的任何其他设备。对象在这一意义上可以是计算机文件、文件的部分或者子程序、宏、网页或者将由计算机或者在计算机上操作的任何其他代码片段或者无论是否被执行、模拟、仿真或者解译的任何其他事件。对象4在图中被示意地示出并且可以例如如由线5所示经由因特网1被下载到远程计算机2或者如由线6所示被直接应用。对象4可以驻留于计算机RAM中、计算机的硬盘驱动上、连接到计算机的可去除存储装置(比如USB笔驱动)上、电子邮件附件等。
在一个优选实施例中,基本计算机3与数据库7通信,远程计算机2可以在远程计算机2运行对象4时与数据库7交互以确定对象4是否为安全或者不安全。随时间用与在所有连接的远程计算机2上运行的每个对象有关的信息填充群体数据库7。如以下将进一步讨论的那样,代表每个对象4的数据优选地采用与对象、它的属性和行为有关的所谓的签名或者关键字的形式。
现在参照图2,在开始点21,在远程计算机2运行计算机对象4,比如进程。在步骤22,通过在远程计算机2上运行的本地“代理”程序或者软件的操作,挂起进程的操作,从而使得代理程序可以搜索在远程计算机2存储的本地数据库以搜寻代表该特定进程、它的有关对象和/或事件的签名或者关键字。如果本地签名存在,则它将指示进程被视为安全或者将指示进程被视为不安全。不安全进程可以是已经被发现为恶意或者已经未预见或者知道它的运行产生不安全或者恶意结果的进程。如果签名指示进程安全,则该进程或者事件在步骤23被远程计算机2上的本地代理程序允许运行。如果签名指示进程不安全,则在步骤24停止进程或者事件。
将理解,可以存在除了“安全”或者“不安全”之外的多于两个状态并且可以向用户给予选择。例如,如果对象被本地视为不安全,则可以向用户呈现用于却允许有关进程运行的选项。也有可能向每个远程计算机2呈现不同状态。状态可以由基本计算机变化以考虑远程计算机的位置、状态或者所有权或者时间帧。
另外,在远程计算机2的代理软件可以被布置用于从基本计算机3接收用于将对象分类为安全或者不安全的规则或者启发法。如果对象本地未知,则代理软件可以将规则或者启发法应用于对象的细节以试图将对象分类为安全或者不安全。如果进行分类,则向基本计算机3传递对象和分类的细节以存储于群体数据库7中。这意味着代理软件即使它被“下线”(例如,它出于任何原因而不能连接到基本计算机)仍然能够提供保护以防先前未看见的对象。随后在公开内容中更具体地描述这一机制。
如果对象仍然未被本地分类,则通过因特网1或者其他网络向基本计算机3传递对象的细节以用于存储于群体数据库7中并且优选地用于在基本计算机3进一步分析。在该情况下,然后在步骤25搜索群体数据库7以寻找已经在群体数据库7中存储的用于该对象的签名。向群体数据库7供应代表由每个监视的远程计算机2运行的对象(比如程序或者进程)的签名。在领域中的典型实现方式中,可以存在连接或者可连接到基本计算机3的数千或者甚至数百万远程计算机2,并且因此将很快发现在因特网1上新发布或者在这些远程计算机2中的任何远程计算机上以其他方式发现的任何对象并且相应远程计算机2创建并且向基本计算机3发送签名。
在搜索群体数据库7以寻找在涉及的远程计算机2先前未知的对象的签名时,然后如果签名被发现并且指示该对象为安全,则在步骤26向涉及的远程计算机2的本地数据库发送签名的副本或者至少对象为安全这样的消息以填充本地数据库。以这一方式,远程计算机2让这一信息在下次遇到对象4时立即可用。也向远程计算机2传递回单独消息以允许对象在当前实例中运行。
如果在群体数据库7中发现签名并且这出于某一原因而指示对象为不安全,则在步骤27再次向本地数据复制回签名并且标记“不安全”和/或向远程计算机2发送消息,从而使得停止对象的运行(或者不允许它运行)和/或向用户给予是否运行它的通知的选择。
如果在已经搜索整个群体数据库7之后对象仍然未知,则假设这是在领域中前所未见的全新对象。因此在步骤28创建代表对象的签名或者远程计算机2发送的签名用于这一目的。
此时,基本计算机3可以将规则或者启发法应用于对象的细节以试图将对象分类为安全或者不安全。如果进行分类,则在群体数据库7中相应地将签名标记为安全或者不安全。向首先运行对象的远程计算机2的本地数据块复制签名。随后在公开内容中更具体地描述这一机制。
如果对象仍然未被分类,则可以在步骤29在群体数据库7中将签名初始地标记为坏或者不安全。在步骤30向首先运行对象的远程计算机2的本地数据库复制签名。然后可以向远程计算机2传递消息以指示远程计算机2不运行对象或者备选地可以向用户给予关于是否允许对象运行的通知的同意。此外,群体数据库7可以在步骤31请求来自远程计算机2的对象本身的副本。
如果用户在远程计算机2选择运行由于进程太新而被视为不安全的进程,则该进程可以由远程计算机2和/或群体数据库7监视,并且如果没有有害效果在例如n天的时间段之后出现或者被表现,则它然后可以被视为安全。备选地,群体数据库7可以保持进程的由形成网络的部分的许多远程计算机2发现的每个实例的日志,并且在已经记录特定数目的实例而可能该另一特定数目的实例或者进程被允许运行并且安全运行之后,然后可以将群体数据库7中的签名标记为安全而不是不安全。可以在这一概念内完成监视安全的许多其他变化。
数据库7还可以包括用于对象4的如下行为掩码,该行为掩码阐明对象的性能和操作的参数。如果允许对象在远程计算机2上运行,则即使初始签名搜索22指示对象为安全,仍然可以在掩码的参数内监视该对象的操作。标识并且可以使用超出掩码允许的行为的任何行为以连续评估对象是否继续为安全。
对象4的向基本计算机3传递的细节优选地是唯一地标识对象4的签名或者“关键字”的形式。这主要为了保持数据存储和传输要求尽可能最少。这一关键字可以由在远程计算机2对对象操作的哈希化函数形成。
关键字在优选实施例中被具体布置用于具有至少三个可分组件,所述组件中的第一组件代表在对象内包含或者由对象构成的可执行指令,所述组件中的第二组件代表关于所述对象的数据,并且所述组件中的第三组件代表对象的物理大小。第二组件中的关于对象的数据可以是其他标识形式如文件的名称、它在盘上的物理和文件夹位置、它的原文件名、它的创建和修改日志、资源信息如厂商、产品和版本以及在对象内存储的任何其他信息、它的文件首部或者远程计算机2关于它保持的文件首部;以及当在相应远程计算机上创建、配置或者运行对象时由对象发起或者涉及到对象的事件中的任何或者所有数据。一般而言,在关键字中提供的信息可以包括这些要素中的至少一个要素或者这些要素中的在任何组合中的任何两个或者更多要素。
在一个优选实施例中,为所有可执行文件(比如(但不限于)为类型PE(如由Microsoft定义的可移植可执行文件).exe和.dll文件)创建校验和。根据文件的性质生成三个类型的校验和。
类型1:将文件的五个不同节段(section)校验求和。这些包括导入表、在码节段的开头的节段和在末尾的节段以及在整个文件的开头的节段和在末尾的节段。这一类型适用于分析的绝大多数文件;
类型2:对于旧DOS或者16位可执行文件,将整个文件校验求和;
类型3:对于在某个预定义大小以上的文件,将文件采样成然后被校验求和的组块(chunk)。对于少于某个预定义大小的文件,将整个文件校验求和;
对于校验求和过程,在原理上任何技术是可能的。MD5(消息-摘要算法5)是可以用于这一目的的广泛使用的密码哈希函数。
这允许通过仅查看校验和的可执行元素并且在共享公共可执行代码的两个可执行文件之间进行比较来生成核心校验和。
对于以上提到的类型1校验和,可以使用三个签名过程。第一个定义整个文件并且将随着对文件的内容的几乎任何改变而改变。具体而言,第一个定义程序的内容的有代表性的采样,因为如果对程序进行任何根本改变,则校验和将改变,但是可以这样标识琐碎改变从而允许相关回到原程序体。第二个尝试仅定义改变少得多的进程的处理指令。第三个利用文件的大小,这对于不同大小的对象大量减少冲突的可能。通过跟踪与不同对应物(counterpart)个别出现的所有签名的出现,有可能标识如下进程,已经改变或者已经从公共点创建了这些进程、但是已经编辑了这些进程以执行新的可能的恶意功能。
优选地捕获并且向基本计算机3发送关于对象的元数据以及校验和数据。捕获并且向基本计算机3发送的元数据的类型可以是以下类型以及其他类型:
“事件”:这些定义如下对象的动作或者行为,该对象作用于另一对象或者某一其他实体。事件具有三个主要组件:执行动作的对象的关键字(“施动者”)、被执行的动作(“事件类型”)和被执行动作的对象的关键字或者另一实体的标识(“受动者(victim)”)。例如,事件数据可以捕获对象与之通信的网络实体的标识(例如,IP地址或者URL)、作用于对象或者对象作用于的另一程序、对象写入到的数据库或者IP注册表条目等。尽管简单,但是这一结构允许定义无限系列的行为和关系。事件的三个组件的示例可以是:
“标识”:这些定义对象的属性。它们包括项目,比如文件的名称、它在盘上或者在存储器中的物理位置、它在文件系统内在盘上的逻辑位置(它的路径)、文件的首部细节,这些首部细节包括何时创建文件、上次何时访问它、上次何时修改它、被存储为厂商的信息、产品(它是该产品的部分)和文件的版本号以及它的内容、它的原始文件名和它的文件大小。
“起源施动者(genesisactor)”:如下对象的关键字,该对象不是事件的直接施动者,但是该对象是被执行的事件的最终父代。例如,在软件安装的情况下,这将是如下对象的关键字,用户或者系统首先执行该对象并且该对象发起软件安装过程,例如,Setup.exe。
“辅助数据”:许多事件可能需要辅助数据,例如,事件,比如用来记录创建注册表运行关键字的事件。在这一情形中,“事件”将标识创建注册表运行关键字的施动者对象、事件类型本身(例如,“regrunkey”)和注册表运行关键的受动者或者受体(subject)。辅助数据在这一情况下将定义运行关键字条目本身;Hive、关键字名称和值。
“事件校验和”:由于事件数据可以很大从而延伸至用于单个事件、它的用于施动者和受动者的标识以及人和辅助数据的数百字节信息,所以系统允许这一数据本身由事件校验和概括。使用两个事件检验和,这些事件检验和利用多种算法,比如CRC和Adler。校验和属于用于事件的核心数据。这允许远程计算机2向中心计算机3发送数据的校验和,该中心计算机可以已经让与那些校验和有关的数据被存储。在这一情况下,它无需来自远程计算机2的进一步信息。仅如果中心计算机3从未接收检验和,它将请求来自远程计算机2的关联数据。这为远程计算机2和中心计算机3赋予明显性能提高,从而允许有效得多的缩放。
因此,从远程计算机2获得的元数据可以在群体数据库7用来跨越群体定义进程的行为。如提到的那样,数据可以包括以上提到的元素(文件大小、位置等)中的至少一个元素或者两个或者三个或者四个或者五个或者六个或者所有七个(或者这里未具体提到的更多元素)。在群体数据库7中存储的数据提供对象的创建、配置、执行、行为、标识和与作用于它或者由它作用于的其他对象或者实体的关系的广泛推论。这可以相应地用来建模、测试和创建新的自动化规则和启发法以用于在群体数据库7中使用以及作为如下规则,可以向在远程计算机2的本地数据库中保持和使用的规则添加这些规则以标识和确定远程计算机2对新的或者未知进程和进程活动的响应。
另外,有可能将进程与任何可选子进程一起作为同构(homogenous)实体来监视,并且然后比较遍及群体的顶级进程的活动并且推断某些潜在恶意实践仅出现于也加载一个或者多个具体子进程时。这允许如下程序(比如Internet Explorer或者其他浏览器)的有效监视(而无不必要的阻止),这些程序的功能可能容易被用户从因特网获取的可下载可选代码更改,这当然是如今主要恶意代码源。
分布式架构
如至此描述的系统总体上如在我们的先前申请US-A-2007/0016953中描述的那样。现在接着描述在操作这样的系统时的新的有利方案。将理解,在关于图1和2的描述中,为了方便而将中心计算机和群体数据库呈现为单一实体。如将从以下讨论中清楚的那样,基本计算机3可以由多个计算机和服务器等组成,并且群体数据库7可以由围绕这一中心系统分布的多个数据库和存储装置组成。
图3示出用于基本计算机3的布置的优选示例。远程计算机2具有一般包括与以上关于图1和2描述的代理程序相同的功能的代理程序10。简言之,代理程序10监视在该计算机2上的对象及其行为并且与基本计算机3通信以发送在远程计算机2上发现的新对象和行为的细节并且接收对象是否安全的确定。代理程序10可选地与本地数据库11通信,该本地数据库11保持与在远程计算机2上发现的对象有关的签名的本地副本。
代理程序10与其他可商购防恶意软件的软件比较可以比较小。用于代理程序10的下载大小可以少于1MB并且在运行时占用约3MB存储器,从而使用更多存储器仅暂时保持被扫描的文件的映像。比较而言,其他防恶意软件包将通常具有50MB的下载并且在扫描文件之时占用50MB至200MB的计算机存储器。因此,优选架构与其他产品比较可以占用少于2%的系统资源。
这主要由优选代理程序10实现,该代理程序10被用低级语言来开发、具有对系统资源(比如视频显示器、盘、存储器、网络)的直接访问并且未并入许多标准代码或者动态链接库以执行这些功能。通过在本地数据库结构中存储如下数据来优化存储器使用,该数据提供用于通过唯一标识符而无需全文件名或者签名引用对象的能力。所有不必要的动态链接库在它们被标识为不再被使用时立即从进程被卸载,并且合并背景线程以减少CPU使用。小型、高效代理可以被更快地部署并且可以与包括其他安全程序的其他程序并用而在计算机上的负荷更少或者对计算机的性能影响更少。这一方式也具有用于恶意软件攻击的表面区域更少从而使它固有地更安全的优点。
代理程序10经由因特网的域名解析系统(DNS)50通过因特网1与基本计算机3通信。
基本计算机3具有包括一个或者多个服务器61的第一层,该一个或者多个服务器在这一示例中为web服务器。在本公开内容中,web服务器61被称为“FX服务器”或者“威胁服务器”,并且第一层被称为“FX层”。然而,将理解,可以根据需要而使用任何类型的适当服务器。如以下更具体说明的那样向web服务器61之一分配远程计算机2。
FX层60基于对象的从远程计算机2发送的细节进行关于该对象是否为善意或者恶意的实时判决。FX层60的每个web服务器61连接到数据库62,该数据库包含用于基本计算机3已知的所有对象的条目和对象是否为安全或者不安全的分类。数据库62也存储用于基于从远程计算机2接收的信息判决未知对象是否为安全或者不安全的规则。web服务器61首先搜索数据库62以寻找匹配签名以确定对象是否为安全或者不安全或者未知。如以上描述的那样,签名可以是在任何组合中的从文件本身推导的哈希的函数(校验和数据)、涉及到对象的事件数据和/或关于对象的元数据。如果对象未知,则web服务器61然后向远程计算机2传达回对象是否安全并且可以被允许运行、不安全并且被防止运行或者未知,在该情况下可以根据用户偏好允许对象运行或者不允许。
因此,FX层60对威胁实时做出反应以确定是否应当允许恶意软件在远程计算机2上运行。
第二层(这里被称为“ENZO”层70)处于FX层60后面。向ENZO层70发送由FX层60从远程计算机2接收的关于对象的信息,从而使得在ENZO层70维护从所有远程计算机2接收的所有数据的主记录。以下更具体地描述这一过程。
ENZO层70具有连接到一个或者多个“主”数据库的一个或者多个服务器74(在本公开内容中被称为“中心服务器”或者“ENZO服务器”),该一个或者多个“主”数据库聚合来自所有远程计算机2的从所有web服务器61接收的所有信息。数据库可以包括以下三个数据库的任何组合并且在优选实施例中具有所有三个。
1)对象数据库71,该对象数据库具有如下条目,这些条目包含对象签名(例如,它们的MD5校验和)并且包括关于对象接收的元数据,例如,文件名、文件位置或者如以上描述的由系统收集的任何其他元数据。
2)行为数据库72,该行为数据库用于捕获在远程计算机2上观测的对象的行为的细节。这一数据库72由从远程计算机2发送的事件数据填充并且允许构建对象具有跨越群体的行为和关系的画面。
3)计算机对象数据库73,该计算机对象数据库通过在对象细节传输期间关联对象与从远程计算机2发送的标识码来关联群体中的远程计算机2与在那些远程计算机2上观测的对象。优选地,计算机由从远程计算机发送的至少以下三个标识符标识:与物理系统有关的标识符、与操作系统实例有关的标识符和与登录的用户有关的标识符。
如将理解的那样,在例如具有1千万或者更多远程计算机2(每个远程计算机平均具有数百到数千个对象,每个对象具有大量行为和与其他对象的关联)的群体中,在数据库71、72、73中保持的数据量庞大。
ENZO服务器70可以查询数据库71、72、73并且在跨越群体监视对象行为时以及在调查对象和开发用于辨认恶意软件的规则时通过自动化或者通过来自人类分析师的输入或者通过二者可操作。这些规则被反馈到FX层60和/或在远程计算机10上运行的代理程序10并且如在本文中别处讨论的那样由web服务器61或者代理程序10实时用来阻止恶意软件在远程计算机2上运行。这些规则在准确阻止远程计算机2上的恶意软件时的性能被反馈到ENZO层70并且可以用来精化规则。在以下公开内容中进一步描述使用的技术。
在一个优选实施例中,使用云计算来实施FX层60和ENZO层70的服务器61、74和数据库62、71、72、73中的一些或者所有服务器和数据库。云计算是提供独立于位置的计算的手段,借此共享的服务器按需求向计算机和其他设备提供资源、软件和数据。一般而言,云计算客户不拥有物理基础结构,而是通过从第三方提供者租赁使用来避免资本开支。云计算用户在它们向提供者仅支付它们使用的内容时避免关于硬件、软件和服务的资本支出。可以快速让新资源上线。这为用户提供大灵活程度。
云计算的示例是Amazon弹性计算云(EC2),该EC2是Amazon.com云计算平台的中心部分、即Amazon Web服务(AWS)。另一示例是Windows Azure平台,该平台是使客户能够向云中部署应用和数据的Microsoft云平台。EC2在本例中用来提供云计算。然而,将理解,在原理上,任何适当云架构可以用来实施基本计算机3。备选地,常规数据中心可以用来实施基本计算机3,或者可以使用常规数据中心和基于云的架构的混合。
EC2允许用户租赁用于在其上运行它们自己的计算机应用的虚拟计算机。EC2通过提供如下web服务来允许应用的可缩放部署,用户可以通过该web服务引导Amazon机器映像以创建包含任何所需软件的虚拟机,Amazon将该虚拟机称为“实例”。
用户可以如需要的那样创建、起动和终止服务器实例,从而对于活跃服务器按小时支付、允许提供“弹性”计算。EC2向用户提供对对实例的地理位置的控制,这允许延时优化和高冗余性水平。例如,为了最小化停用时间,用户可以在对于多数故障原因相互隔离的多个区段(zone)中建立服务器实例,从而使得一个备份另一个。以这一方式,云提供用户的计算资源及其配置(即,在资源上安装的操作系统和软件包)的完全控制。Amazon EC2允许用户选择对于操作系统和应用最优的存储器、CPU、实例存储和引导分区大小的配置。EC2减少为了获得和引导新服务器实例而需要的时间为分钟,从而允许用户在它们的计算要求改变时快速放大和缩小容量。
EC2在包括美国东海岸、美国西海岸、EU(爱尔兰)和亚太(APAC)(新加坡)的不同地理区域中维护多个数据中心。如图4中所示,在优选实施例中,在多个这些地理位置80中实施基本计算机3的服务器和数据库。
因此出现如何向FX层60中的特定web服务器实例61分配远程计算机2的重要问题。在这一判决中的重要考虑是最小化延时并且跨越web服务器均匀分担负荷。理想地,将跨越所有web服务器实例近似均匀分担资源上的负荷以便避免未充分利用web服务器并且最小化所需web服务器的数目。也希望实施如下简单解决方案,该解决方案未显著添加远程计算机上的代理程序10的速度或者大小或者在基本计算机3上施加开销。
1)在一个优选实施例中,代理程序10在向web服务器61分配远程计算机2时使用远程计算机2的地理位置,即基于它与云的地理区域80的邻近度。远程计算机的位置可以通过任何方便手段来确定,比如比对已知位置范围的数据库检查远程计算机2的IP地址,或者执行网络路由分析以确定为了到达目的地服务器而需要的“跳跃”的数目。这一功能可以在远程计算机2上运行的代理程序10在第一次被安装于计算机2时由代理程序10执行。通过基于位置分配,可以最小化延时。
2)在一个优选实施例中,代理程序10以远程计算机的唯一标识符为种子基于它的安装的日期和时间生成随机数以判决它应当被映射到哪个web服务器61。这提供将远程计算机2映射到web服务器61的简单的、伪随机的方式,即使同时安装数千个远程计算机,该方式仍然在web服务器61之间均匀分担负荷。
3)DNS分布层然后将URL映射到物理数据中心。域名系统(DNS)是在分布式数据库上为连接到因特网或者专用网的计算机、服务或者任何资源构建的分级命名系统。它关联各种信息与向参与实体中的每个参与实体指派的域名。DNS分布网络50允许向组成FX层60的多个服务器61平衡负荷。
这些技术的任何组合可以由代理程序10用来向web服务器61分配远程计算机2。优选地,在组合中使用所有三个。
代理程序10优选地具有用于在主要URL出于任何原因(例如,如果服务器停机)而不可用的情况下将远程计算机2重新映射到不同URL的次要算法。也在恶意软件已经能够禁用DNS机制的情况下,代理程序10然后可以通过直接引用为这一目的保留的一系列直接IP地址来进行与FX服务器61的直接联系。
可选地,布置代理程序10以使得它可以通过从计算机已经连接到的服务器61接收反馈/指令来向不同服务器61重新指派远程计算机2。这可以用来将集中控制添加到代理程序10向服务器61的分配,这向系统添加更多灵活性。
因此,这一方案允许在服务器之间动态平衡负荷并且提供弹性而又应对地理位置的简单的、代理管理的方式。在已知现有技术布置中,专门化硬件负荷平衡器在网络中用来向其他服务器划分负荷,或者在安装代理程序10时向web服务器61另外人工分配代理。
将基于云的分布式架构用于基本计算机3在试图跨越服务器维护数据完整性时和在跨越许多服务器管理数据的更新时呈现挑战。如将从前文清楚的那样,web服务器61在典型实现方式中将应对大量数据。将在数据中存在可以用于确定关于什么对象是恶意软件的规则的大量共性。然而,在所有区域上的所有web服务器61上存储所有数据不切实际。这在实时确定数据是否为公共时呈现问题。
为了解决这些问题,一个优选实施例采用以下方案。在FX层60中的每个web服务器61检查关于在远程计算机2上看见的对象的来自该远程计算机2的传入数据包。代理程序10生成数据包的校验和并且向web服务器61发送它。web服务器61具有先前已经被看见并且已经向ENZO服务器74发送的对象的数据库62。web服务器61检查它的数据库62以寻找传入数据的校验和。如果发现校验和,则数据已经被ENZO服务器74看见。在这一情况下,web服务器61仅增加与数据已经被看见的次数的与它的数据库中的该校验和关联的计数以辅助确定一款软件的流行度或者具体事件的出现频率。然后,可以向ENZO服务器74转发这一信息。如果在FX数据库62中未发现校验和,则web服务器请求来自远程计算机的全数据包,并且然后向ENZO服务器74转发它。ENZO服务器74然后在适当数据71、72、73中存储这一数据。因此,ENZO层70在对象数据库71中保持在所有远程计算机2上看见的所有数据对象、它们的元数据和行为的主列表。向在所有地理位置80的所有web服务器61传播回这一主列表。因此,用关于群体已经看见哪些对象的信息更新所有web服务器61。
已经发现这一方案与如下常规方案比较按照约50的倍率减少网络中的工作量和流量,在该常规方案中,每条数据通常在由web服务器接收时将立即向系统中的所有其他服务器传播。
希望在ENZO层70中的主数据库71、72、73中保持的数据为用户提供数据的可缩放性、可访问性和弹性。将理解,如果仅使用一个活ENZO服务器74,则如果该服务器变成不可访问,则失去所有活数据。出于这一原因,优选地在云的每个区域80中具有至少一个ENZO服务器74以提供冗余性。这意味着web服务器61未都被直接链接到相同ENZO服务器74,相反地,web服务器61仅被链接到在它们自己的区域80中的ENZO服务器74。这产生对于向多个数据库服务器提供数据的可扩展方法的需要。
图5示意地示出从web服务器61向ENZO服务器74更新数据的方案。每个web服务器61具有链接到它的两个暂时数据库63a、63b。在初始起点,一个数据库63a为部分满63b(活跃)而另一个为空(不活跃)。在web服务器61从远程计算机2接收关于对象的信息时,它向活跃数据库63a中投寄数据。这一信息将是从关于在远程计算机2上看见的对象或者事件从远程计算机接收的校验和信息。如果在web服务器先前未看见校验和,则关于该对象或者事件的关联数据与它的校验和一起被投寄给数据库。
一旦活跃数据库63a达到预定大小或者满足某一其他预定标准,则活跃数据库63a与在这发生时的时间点的时间戳一起被放入长期存储装置66中。在这出现之时,不活跃数据库63b被变得活跃并且在新数据到来时用它填充,并且清理先前活跃的数据库63a并且使它不活跃。同样,在这一数据库为满时,然后重复加时间戳并且将数据库的内容移向长期存储装置的过程并且调换数据库。在优选实施例中,FX层60具有负责管理向对长期存储装置66的输入/输出的S3子层65。S3(简单存储服务)是由Amazon Web服务赋予的在线存储web服务。S3是用于通过简单web服务接口在安全和非易失性环境中存储大量数据的Amazon服务。S3用来存储被从FX服务器向ENZO服务器发送的FX服务器数据的历史。在将数据块放入长期存储装置66中时,S3层66也向一个或者多个ENZO服务器74转发这一数据,从而使得ENZO服务器可以更新它的数据库。所有FX服务器经由S3存储服务向所有ENZO服务器馈送。
可以例如每数分钟或者甚至每数秒向长期存储装置66中腾空数据库63a、63b。然而,如将理解的那样,可以根据数据库的负荷和大小选择并且可以例如基于数据库上的负荷或者数据的大小动态选择使用的实际时间段。
因此,S3层65保持群体中的由所有web服务器61接收的所有数据。这具有如图6所示的许多优点。
首先,这可以用来允许例如在ENZO服务器74显露问题的情况下重建主ENZO数据库71、72、73。另外,如果ENZO服务器74保持的数据例如被ENZO服务器74上的软件升级中的问题有些破坏,则有可能回滚在ENZO服务器74的数据库到在破坏出现之前的点。通过使用与S3层65中的数据块关联的时间戳,ENZO服务器74可以请求向ENZO服务器74重发在S3层65的长期存储装置66中的数据块,因此可以使服务器的数据库71、72、73最新。
另外,使用这一方案,在多个区域80中的ENZO服务器74可以通过从S3层接收数据来创建ENZO服务器的备份数据库。可以完成这一点而未影响活ENZO数据库74,因此这些可以无缝继续运转。
备选将是向在被指明为主服务器的单个ENZO服务器的数据库投寄并且从主服务器向群体中的其他服务器传播数据。然而,这在效果上创建一个“活”服务器和一个或者多个备份。活服务器因此完成多数工作,例如预处理从代理接收的数据、更新数据库并且分析数据以寻找威胁而备份服务器未被充分利用。因此,活服务器必须比备份服务器更强大。这往往资源浪费和低效。比较而言,优选实施例围绕服务器同等分担工作量。
也希望操作者、人类恶意软件分析师等具有来自活服务器的数据的副本以用于研究等。可以用与活服务器和备份服务器相同的方式创建映像服务器。系统的用户可以在他需要取得映像以用于下线使用时使映像服务器下线。一旦取得映像,则可以使用来自S3层的数据块来使映像数据库最新。
云计算可以很快地(例如,以分钟计)重建web服务器的实例。云计算因此在其中事务量增长(或者缩减)的实现方式中有利。在这一情形中,可以快速地创建新服务器实例以处置新负荷。然而,有必要取得活服务器的映像以创建映像。这对在映像化期间在该实例上运行的进程有破坏性。因此,明显不可接受对于这一时段使活服务器不可用。因此,在ENZO服务器后面维护以与活服务器和备份服务器相似的方式更新的特殊专用映像服务器。在这一情况下,使映像服务器下线并且对它映像化。这一过程可能需要例如30分钟。在这一时间期间,映像服务器未从S3服务器接收更新并且因此变得过时。然而,由于在服务器变成下线时的确切时间已知,所以可以通过用比在它变成下线时更晚的时间戳请求来自S3服务器的数据块来更新它。因此,可以取得更新的服务器的映像以用于下线使用等并且使映像最新而不影响系统的运行。
也希望能够扩大ENZO层70的架构。例如,活服务器74可能由于它从web服务器61或者代理10看到的流量增加而用完处理能力。例如,更多远程计算机2可以连接到系统或者可以更新公共软件包从而造成向ENZO层70发送大量新数据。在这一情形中,可以在ENZO层70中创建第二或者更多活服务器实例以便水平扩大(有别于向现有服务器添加更多CPU/RAM)。如以上描述的那样,在云计算环境中创建ENZO服务器74的映像是相对简单直接的。如从图7可见,将每个服务器74上的数据划分成多个节段。在这一情况下,将服务器74上的数据划分成八个节段0-7。每个节段分担该服务器上的处理。在划分服务器时,向每个服务器分配各种节段。因此,例如,在图7的示例中,原服务器L1处理数据0-3,并且新创建的服务器L2处理数据4-7。每个服务器然后处置预处理和存储它自己的数据。为了分析数据,来自这些多个服务器74的数据优选地由服务器聚合,从而使得人类分析师在调查恶意软件时工作于完整数据集(如以下更具体描述的那样)。当然,可以根据需要在服务器之间以不同方式划分数据。
因此,取代保持单个数据库并且然后如果要求跨越多个服务器分布负荷则必须切分它,在优选实施例中已经切分数据库从而使得更易于进行向跨越多个服务器进一步分布数据库工作量的转变。
优选地选择数据节段数目为八,因为这足以给予合理的扩张灵活性和能力。然而,罕见的是业务在任何时间需要扩张多于800%。然而,可以如适合的那样使用其他多个数目的数据节段。
这一架构允许跨越多个位置和服务器管理大量数据。可以缩放架构并且复制服务器而未引起额外工作或者影响系统的运行。可以跨越可以动态改变的服务器交换数据。
使用趋势数据
恶意软件以显著步伐演变。历史上,恶意软件使用单个感染(模块或者程序)以感染许多计算机。由于这允许恶意软件研究者快速变得了解感染,所以可以快速部署签名以标识和阻止威胁。在过去十年内,恶意软件作者已经使它们的威胁包含许多变化的模块,这些模块共享公共目的。检测和阻止这些威胁对于恶意软件研究以及对创建和分布签名以标识和阻止所有变化是大得多的挑战,这些变化中的任何变化将感染一个或者多个计算机。由于这些现代威胁的变化和分布性质,恶意软件研究者经常迟于标识威胁甚至存在。
通过收集通过路径和文件细节而相关的新程序和模块的哈希、签名和统计并且在中心位置聚合这一信息,有可能使用将允许快速标识新威胁的分析方法。
在任何给定的日子,创建的新商用程序和模块的量可以被视为几乎恒定。这一数据可以比对关于对象收集的元数据或者事件数据中的任何数据来被测量。在一个示例中,比对创建的新文件的路径(文件夹)位置测量数据。也可以比对它们的文件名和文件类型(例如,.exe、.dll、.drv等)以及如下细节测量数据,这些细节比如是厂商、产品和版本信息、注册表关键字或者向基本计算机转发的任何其他系统推导的数据。这些因素的任何组合是可能的。无论选择哪种方式对数据进行分组,通过为这一数据跨越组的模式和分布建立基线,有可能快速标识局外者。
图8示出与建立的正态分布(基线)比较的根据文件系统中的文件夹分组的在时间段内的收集的数据的示例。如果在windows系统32子文件夹中的新程序数目通常在任何给定的时间段t中(例如,在给定的日子中)为x而在考虑的特定时间段t1中它为1.4x(或者超过某一其他预定比值),则它指示新文件数目的异常增加,这意味着可能的恶意软件活动。这一标识允许将更大聚焦放在研究这些局外者。可以容易地开发如下过程,这些过程可以使用这一局外者信息以自动分组、标识或者优先化研究工作并且甚至进行恶意软件确定。在自动化规则用来标识恶意软件时,这一信息可以用来在应用于已经被标识为局外者的组中的对象时自动提高这些规则的灵敏度。
这一技术的另一示例是聚焦于文件名并且比较利用该名称的新对象(如由它的哈希代表)的数目或者都具有新名称的新对象的数目。这与多数商业软件的一般原理相反,该商业软件需要一致性以实现它们的产品的可管理性。多数商业应用仅有少数名称,并且在使每个新发布可用时,每个文件名称仅有少数变化。对照而言,某一恶意软件具有使用相同、相似或者相似地构造的名称并且群体在很短时间窗(秒-周)内利用有关名称观测的数千个变化。
在原理上,可以选择用于窗的任何时间长度。在实践中,这很可能为每15分钟或者每数小时或者天这一级,而不是更长时段,比如每周。
在一个优选实施例中,提供用于为研究者提供上下文的技术。在检测恶意软件时,人类分析师和计算机自动化分析具有不同强度并且经常在某一程度上一起用来利用二者的能力。计算机善于将规则应用于大量数据并且处理大量数据。在本申请中,从在远程计算机2上运行的代理程序10接收的数据量大并且因此适合由计算机处理。让人类操作者关注所有这一数据以确定恶意软件将是不切实际的。另一方面,有经验的人类分析师在被给予关于该对象和相似对象及其上下文的适当聚焦的数据时高度地善于辨认恶意软件。人类分析师经常可以用难以减少成规则集并且向机器传授的方式“直观地”辨认恶意软件。例如,kerne132.dll是与Windows(RTM)操作系统关联的文件。恶意软件程序可以有时称谓相似,例如,kerne164.dll,这将立即被用户明白为可疑,但是这难以传授机器以辨认。
模式可以在向分析师呈现相关数据时在回顾中是明显的。然而,这是后视镜方式。问题是在基本计算机3接收的大量数据中发现相关数据,从而使得分析师可以将他的/她的时间聚焦于重要数据。如图9所示,需要的是如何将原始数据100提炼成有关数据101的组以提供用于恶意软件研究者调查和采取必要动作102以相应地将对象标记为坏或者安全103的聚焦的起点。
如将理解的那样,跨越群体在远程计算机2上的单个对象可以具有与在远程计算机2上的其他对象的高程度关联。目前存在可以映射在实体之间的链接以创建关联的网络的一些工具。然而,在用于恶意软件对象及其与其他对象的关联时,这些将造成如下图,该图如此密集和复杂以至于它实际上无助于允许人类分析师标识恶意软件。问题是筛选这一数据,因此为分析师提取有用特征,从而使得他可以快速聚焦于用于作为恶意软件的可能的候选。
图10至13所示的一个优选实施例提供如下软件程序,该软件程序在ENZO服务器74上运行并且向用户给予用于比对数据库运行查询的基于可视的工具。查询语言(比如TSQL)可以例如用来基于用户的输入查询数库。如在前文中提到的那样,ENZO层70在它们的数据库中具有在所有远程计算机2上看见的所有对象的属性和活动的完整记录。图10示出如下屏上显示和用户界面的示例,该屏上显示和用户界面包括表105,在该表中,行代表与当前查询的结果匹配的对象(由它们的签名确定)。用户界面提供用于创建新查询106、用于显示内容和新近查询107并且用于对在表中为当前查询108显示的数据进行排序的工具。显然可以存在比将在一个屏幕上相配的结果更多的结果。因此可以存在用户可以通过由用户界面提供的适当控件109导航到的多于一个页面的结果。
表105具有代表关于对象的信息的多列数据。信息可以包括由远程计算机2向基本计算机3发送的关于对象、它的元数据或者它的行为收集的数据中的任何数据。这可以例如包括以下各项中的任何项:文件的名称和文件的位置(路径)、第一次遇到对象的国家、遇到对象的远程计算机的标识、它的操作系统和版本号、在计算机上安装的web浏览器和任何其他安全产品的细节、文件的创建者、与文件关联的图标等。信息可以包括关于文件的元数据,比如对象的作者或者对象的大小或者与对象中的可执行指令有关的信息。数据可以包含“施动者”和“受动者”信息及其注册表关键字的细节。信息可以包括关于对象是否在远程计算机2或者在FX服务器61被标识为安全或者不安全的信息。
显示的信息可以包含特定属性在由查询返回的所有对象之中或者跨越群体多么经常存在的计数。此外,信息可以包含更少容易理解的信息。如以上讨论的那样,关于对象收集的信息可以包括可执行文件的部分(例如,文件的可执行部分的前500字节)的校验和。在许多情况下,校验和的实际值或者其他数据让用户几乎不或者不感兴趣。因此,优选地以利用颜色、形状和/或不同符号的图形方式向用户呈现这一信息中的一些或者所有信息,这使得辨认数据中的模式对于用户更直观和快速。
优选地,根据以下方案呈现至少一列数据:
1)如果值在该列中在代表对象的数据行之间唯一,则呈现数值“1”,
2)如果在屏幕上的数据行之间或者在与该查询匹配的所有数据行之间重复值,则为该值分配并且在该列中为共享该值的所有行显示有色符号(例如,绿色三角形或者在蓝色方块中的红色字母“P”等)。因此,无需知道符号代表什么,用户可以瞥一眼看见屏幕上的哪些行具有属性的共性。
这提供用于运行更多查询的起点。例如,用户可以快速看见在看来感兴趣的对象之间的共性。如在本文中别处说明的那样,恶意软件的典型特点是对象使用大量文件名、文件位置、相似文件大小、相似代码部分等。程序允许用户通过例如点击表中的列并且使用查询创建工具106以向查询的谓词添加特定属性值或者开始在谓词中的用这一个列值的新查询等来精化查询。
这一过程的最终目的是让用户发现如下查询,该查询返回具有共性的最大数目的行。通过这一过程,用户标识可以用来准确标识共享标准的相似对象的由哈希和其他元数据定义组成的标准集。例如,图11示出如下用户查询,该用户查询返回具有高程度共性的如下行,这些行代表具有共性的对象。软件也优选地允许用户为已经从查询返回的对象产生统计的屏幕。具体而言,如由图12所示,界面可以向用户显示数据库已知为恶意软件的由查询返回的对象的数目、已知为不是恶意软件的数目和仍然未知对象是否为恶意软件的数目(在图12中由不同阴影/颜色的条代表)。可以如图13中所示以图形形式(例如,条形图或者饼形图)示出关于查询的结果或者如下对象的其他数据,这些对象具有由用户选择的某个属性。用户可以在判决查询的结果是否确定恶意软件时考虑这一信息以及表105中所示的信息。用户然后可以采取适当动作,比如将由查询返回的对象标注为恶意软件、不是恶意软件或者可疑并且需要进一步调查。因此,通过能够跨越已经看见对象的所有代理10查询和分析对象的集总视图,即它的元数据和行为,可以无论通过人类或者计算机推导对象的更信息丰富的视图。此外,有可能基于对象的标准(即元数据和行为)中的任何标准对它们进行交叉分组。
举例而言,某些类型的恶意软件的先前标识的特点是恶意对象位于操作系统的“回收站”中。这给予用于用户运行查询以通过关注对象的“路径”属性来发现位于回收站中的所有对象或者在用户指定的时间帧期间遇到的所有对象的起点。这将向用户显示与发现的不同对象对应的行(例如,每行对应于不同的MD5签名)。用户然后可以通过点击列中的值选择感兴趣的属性来经过行下探。例如,用户可以选择如下对象,这些对象的属性示出对象的图标与“记事本”程序(与Microsoft Windows(RTM)操作系统相伴)使用的图标相同,但是这些对象不是源于Microsoft的程序。系统优选地允许用户在精化查询时应用布尔算符。系统允许用户产生查询多么好地覆盖系统已知为恶意或者善意的对象的统计以向用户给予关于查询在对对象进行分类时有用的信息。
在根据这一方案对对象进行分组时运用的用户无需是高度熟练恶意软件分析师。用户在使用工具时和在通过运行查询并且寻找共性来对对象进行分组时仅需基本训练。由查询覆盖的对象的最终分析可以由熟练恶意软件分析师进行。这一系统的优点是计算机在处理任务太大而让人类操作者完成不切实际的原始数据时完成工作。对数据进行分组的人类操作者无需熟练,这减少用于业务的成本。这减少成本并且让熟练恶意软件分析师集中于被发现为用于进一步调查的良好候选的查询。因此,这些操作者的技能在使用他们的经验以标识恶意软件时被最有效地部署。
参照图9,如果在阶段103,用户判决查询(Q5)在将由查询返回的对象分类为安全或者不安全时是确定性的,则可以向web服务器61和/或在远程计算机2的代理程序10传递回规则并且在判决在web服务器61或者远程计算机2看见的新对象是否为安全或者不安全时实时使用规则。
如果群体以前未看见的新对象由远程计算机2或者web服务器61接收并且被由远程计算机2或者web服务器61运行的规则之一视为不安全,则可以实时阻止对象在远程计算机2上运行或者可以警告远程计算机2的用户并且向用户给予是否继续的选项。另外,远程计算机2(经由它被指派给的web服务器61)或者web服务器61可以向ENZO服务器74报告新对象已经被规则确定安全或者不安全。ENZO服务器74可以用这一发现更新它的主数据库,并且这一发现可以被传达到其他远程计算机2和/或web服务器61并且用来向它们的数据库更新具有该签名的对象不安全并且应当在将来被阻止或者安全并且应当被允许运行。
备选地,规则可以由在ENZO层的人类分析师用来监视可疑对象。可以向人类分析师显示由规则覆盖的对象,并且分析师然后转而可以对于每个对象判决它是否为恶意或者善意并且相应地标记对象。对于每个对象的这些确定被发送回到web服务器62和/或代理软件10并且用来实时判决对象当在远程计算机被遇到时是否被允许运行。这一方法与在web服务器62和/或代理软件10实时应用规则比较未一样快地对新威胁做出反应。然而,它可以在希望保持“误判”数目低的情况和/或发现规则善于标识可疑对象(这些对象在可以进行它们是恶意软件这样的确信确定之前需要进一步调查)的情况下是优选的。
另外,这一动作可以半自动化。应用可以将分组与采取的任何和所有动作(比如将组确定为恶意或者为善意)一起监视。通过跟踪这些动作,ENZO服务器74有可能从人类分析师学习如何自动标识和确定对象。应用可以优选地记住用户已经运行的查询。如果相同查询由用户反复地运行并且返回恶意对象,或者如果研究者始终采取确定对象为恶意软件的动作,则系统可以自动标识这一状况并且创建用于确定匹配对象为恶意的标准和动作的规则。这一规则可以被发送到FX服务器层60以实现进行实时动作以捕捉与规则匹配的对象并且将它们确定为恶意。这些规则和由规则应用的恶意软件分组的标识然后可以被反馈到代理和ENZO服务器74两者。以这一方式,FX服务器61代表自身执行由ENZO服务器74批准和分布的动作。类似地,这些相同过程可以被应用于善意对象组从而造成如下规则,这些规则以与用于“坏”对象的规则相同的方式将可以向FX层60传播回的这样的对象确定为“好”。因此,ENZO层70允许用户容易地标识这些分组。ENZO层然后可以将分组与采取的任何和所有动作(比如将组确定为恶意或者为善意)一起监视。通过跟踪这些动作,ENZO层70有可能从人类学习如何自动标识和确定对象。
ENZO层70也可以监视趋势并且让信息引起人类分析师的注意,比如先前已知的好的程序的行为中的演变。例如,游戏Solitaire的合法版本将被ENZO服务器74观测以具有在时间段内来自如下动作的特定行为简档,这些动作是该程序在远程计算机上执行的。如果在时间段之后程序开始表现新的可疑行为(比如试图安装驱动程序或者访问另一国家中的web服务器),则可以标注这一点以用于调查。
另外,优选地,在远程计算机的代理程序10提供允许用户向系统报告“误判”的界面,即,其中已经将用户认为是合法软件的对象标注为恶意软件。系统被布置用于向ENZO服务器74反馈这一信息。此时,系统可以确定在发现恶意软件时规则不再可靠地是确定性的并且可以禁用规则。备选地,系统可以标注规则以用于由人类分析师人工审查和/或修改。备选地,可以判决规则尽管有误判但仍然总体上有用并且误判是局外者。然后可以在FX层70通过将冲突善意对象放在白名单上来从规则具体排除它。
应当注意,规则可以被优先化(以优先级为序应用)并且可以被建立为仅适用于如下对象,这些对象具有具体确定、位置、流行度、年龄或者数据库已知或者推导的任何其他标准。例如,如果第一规则确定对象源于Microsoft,则可以判决不应用任何进一步规则。对照而言,如果第一规则确定对象可疑,则可以判决如适合的那样应用进一步规则。
因此,在ENZO服务器74上运行的优选软件应用提供强大的对象行为监视和评估。软件部分地通过提供强大的数据可视化技术来允许用户获得对象在远程计算机上的行为和在其中观测它的上下文环境的透彻理解。软件使大型研究团队能够协作地和增量地工作并且通过专家系统自动化来利用人类研究技能和经验。
可配置防火墙
希望在计算机变成被感染之前(例如,在通过电子邮件接收、下载感染的文件时或者在第一次安装或者运行它时)停止恶意软件。
恶意软件程序的公知示例是“Zeus”木马。这一程序在感染的计算机上后台运行并且在用户在屏幕上录入登录细节时通过监视用户的键击来窃取它们。这一信息然后被发送到罪犯的服务器,它在该服务器可以用来取得对感染的计算机的控制。在恶意软件程序检测到在在线银行网站上录入登录信息时通过网络向罪犯发送即时消息,因此罪犯接近实时地接收这一信息。木马然后可以使用虚拟网络连接协议来取得对用户的计算机的远程控制,该协议是允许远程用户远程访问计算机并且取得对计算机的控制的协议。罪犯然后可以从受害者的银行账户窃取资金。
尽管大多数防恶意软件的软件尝试阻止恶意软件感染主机计算机或者尽可能快地停止与恶意软件的通信,但是尚未给予太多注意来发现和告发应负责的罪犯。一个难点在于防恶意软件或者甚至警方侵入罪犯的服务器以发现罪犯的数据是不合法的。实际上,罪犯使用所谓的“僵尸网络(botnet)”是已知伎俩,这些僵尸网络是合法用户的已经被恶意软件感染并且由此在罪犯的控制之下的计算机的“僵尸网络”。
如图14中所示优选实施例与在远程计算机2的代理程序10实施防火墙95。防火墙本身是公知的。然而,防火墙通常由用户输入的如下规则配置,这些规则用于支配什么程序具有用于对于传入/传出流量访问网络的准予。优选实施例还从基本计算机3取得用于限制远程计算机2上的哪些对象可以跨越防火墙并且与网络上的哪些实体96、97通信的规则。例如,可以从基本计算机3向防火墙95发送如下信息,该信息为阻止Zeus服务器97的已知活跃URL交换来自远程计算机2上的所有对象的消息。因此,防火墙95可以实施如下规则,该规则阻止与罪犯的服务器的通信。
这提供防范恶意软件的有价值的第二道防线。一般希望通过阻止恶意软件感染计算机来在感染点停止恶意软件。下一道防线是停止恶意软件通信。可配置防火墙95因此可以利用在基本计算机3保持的关于恶意对象和网络URL开发的规则和知识以在对抗恶意软件时提供下一道防线。
另外,在一个优选实施例中,如果检测到恶意因特网流量,则代理程序10可以用来联系当局98,例如,执法代理。在感染的计算机2与罪犯的服务器97之间的IP流量可以由防火墙95截获、存储并且发送到当局的服务器98,因此当局可以看见罪犯通过恶意软件窃取什么信息。为了附加安全性,这一信息可以用加密形式被发送到当局的服务器98。在优选实施例中,产生和存储向当局的服务器98发送的数据的校验和,因为存在非常严格的过程代替应当遵守的法庭数据处置和证据保全。
合法约束将在大多数实例中意味着有必要在捕捉并且向第三方发送这一信息之前从感染的计算机2的用户获得准予。在这一情形中,代理程序10将打开与用户的对话以在继续之前获得准予。在一些实例中,用户可以无论何时在他的计算机2上检测到恶意软件程序或者特定类的恶意软件程序都乐意对于待发送的数据给予总括准予,因此将不必每当检测到恶意对象或者通信时获得具体准予。
自防御
恶意软件已经演变到它将攻击、禁用或者以其他方式破坏在计算机上安装的安全产品这样的状态。
存在需要考虑的两个主矢量。
第一方式是以恶意软件用来标识安全产品的方法为目标。在这一具体情况下,恶意软件将使用在远程计算机上运行的如下进程的行为监视,这些进程查看、观测、记录、检查或者以其他方式干扰恶意软件代码的任何方面。示例可以是恶意软件实体留意如下进程或者任务,这些进程或者任务关注恶意软件已经用来配置、控制或者记录它的操作的注册表关键字。如将理解的那样,恶意软件在它的性质上是鬼鬼祟祟的。从恶意软件的观点来看,在远程计算机上的进程不应监视恶意软件对象或者与恶意软件对象交互,因为恶意软件对象在本地计算机上的存在应当未知。如果任何进程监视恶意软件,则因此很可能是安全软件或者系统监视工具或者系统工具由计算机2的用户用来让计算机2摆脱感染。
因此,通过发现这样做的进程,恶意软件进程可以发现进程的标识和它在盘上的一个或者多个位置。这一标识然后允许它有用于删除、禁用或者干扰它已经标识为潜在威胁的一个或者多个进程的能力。在多数情况下,这些将确实是它可能均视为威胁的安全程序或者系统监视工具。
本发明的一个优选实施例通过在检查恶意软件时防止安全程序的行为检测来防范恶意软件程序的这一可能干扰。这通过隐藏在核心操作系统组件后面、伪装为和/或利用核心操作系统组件以检查恶意软件的状态和组件来实现。具体而言,代理程序10在有必要依赖于标准系统调用时通过冒充系统的上下文或者通过访问在原始水平的数据如它存储于盘上一样回避任何系统调用来执行操作。例如,代理程序10可以在调用ZwTerminateProcess函数以终止恶意进程时直接冒充操作系统的内核。在这样做时,恶意软件不能向代理程序回溯调用。恶意软件将这一行为视为正常,因为它预计操作系统与它交互(例如,操作系统有必要能够在计算机被关停时终止进程),并且因此恶意软件未尝试终止代理程序进程。另外,恶意软件不能通过废除进程来做出反应,因为进程仅可标识为操作系统本身。废除操作系统也将防止恶意软件操作。
图15示出从在最低级的内核级92、操作系统级91和在操作系统91上运行的web浏览器92进行的对计算机系统2的控制的分级。第二考虑是为了恶意软件确立对计算机的操作的最大控制,它将经常尝试安装驱动程序(可能为内核模式驱动程序)该驱动程序具有对执行的进程和动作的完整控制。常被称为“rootkit”的恶意软件类型以这一方式操作并且可以用来藏匿其他恶意软件(特别是口令窃取密钥记录器和计算机病毒)以及其他操作。在某些情况下,恶意软件将加载恶意驱动程序并且使用这一驱动程序以使安全应用和驱动程序无法在Windows启动时启动。具体而言,恶意软件可以具有它已知与安全产品对应的驱动程序或者程序组件的列表。
为了防止恶意软件使用这一种禁用安全应用的方式,代理程序10动态创建第二或者备份驱动程序或者组件94,该第二或者备份驱动程序或者组件在主要组件93不可访问的情况下在安装或者引导期间加载作为主要组件93的备份(如图14所示)。它将具有相同功能、但是将被修改以便表现为按照名称和形式而不同。这可以被随机化,从而使得恶意软件不能学习标识安全程序。在这一场景中,如果主要组件最可能由于被恶意软件废除而加载失败,则第二驱动程序94将被加载以执行它的功能。如果主要组件93成功加载,则次要组件94将简单地终止以通过标识主要组件93的存在来避免冲突。通过随机化包括代理程序10的安装的对象的文件名和校验和,代理程序10能够规避如下活跃威胁的启发法检测,这些威胁将尝试终止或者去除关键代理组件。
Microsoft的Windows操作系统的后来版本通过要求对系统和低级驱动程序进行签名来提供增强的安全性。被称为内核模式代码签名策略的这一策略不允许加载任何未授权或者恶意驱动程序。一些恶意软件创建修改主引导记录以使驱动程序认证检验无效。由感染的主引导记录执行的恶意软件通过改变Microsoft引导程序的引导选项来回避驱动程序签名策略,这将允许未签名的驱动程序加载。
因此,在这些状况中,次级驱动程序或者组件可以去除它自己的数字签名以规避恶意软件的检测。这意味着除非已经修改主引导记录以禁用驱动程序验证否则它将加载失败。因此,它代表对未感染的系统无威胁并且除非干扰系统并且修改主引导记录否则从未加载。
已经具体参照所示示例描述了本发明的实施例。然而,将清楚,可以在本发明的范围内对描述的示例进行变化和修改。