CN110298173A - 检测由软件程序的延迟循环隐藏的恶意软件 - Google Patents
检测由软件程序的延迟循环隐藏的恶意软件 Download PDFInfo
- Publication number
- CN110298173A CN110298173A CN201910194524.1A CN201910194524A CN110298173A CN 110298173 A CN110298173 A CN 110298173A CN 201910194524 A CN201910194524 A CN 201910194524A CN 110298173 A CN110298173 A CN 110298173A
- Authority
- CN
- China
- Prior art keywords
- software program
- circulation
- malware
- instruction
- exit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
一种设备接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,并且利用循环标识技术处理软件程序以标识软件程序中的循环。该设备利用循环退出技术并且基于来自循环标识技术的数据来修改软件程序以退出循环,并且在修改软件程序以退出循环之后,利用恶意软件检测技术处理软件程序以确定软件程序是否包含恶意软件。该设备基于利用恶意软件检测技术处理软件程序的结果来引起一个或多个动作被执行。
Description
背景技术
恶意的软件或恶意软件可以包括各种形式的恶意或侵入性软件,诸如计算机病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件、恐吓性软件等。恶意软件可以经由可执行代码、脚本、活动内容等来提供。恶意软件可以由恶意意图(例如,违背计算机用户的要求)定义,并且可能不包括由于某些缺陷而导致意外伤害的软件。
发明内容
根据一些实现,一种设备可以包括一个或多个存储器和一个或多个处理器,一个或多个处理器处理器用于接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,并且利用循环标识技术处理该软件程序以标识软件程序中的循环。一个或多个处理器可以利用循环退出技术并且基于来自循环标识技术的数据来修改软件程序以退出循环,并且可以在修改软件程序以退出循环之后,利用恶意软件检测技术处理软件程序以确定软件程序是否包含恶意软件。一个或多个处理器可以基于利用恶意软件检测技术处理软件程序的结果来引起一个或多个动作被执行。
根据一些实现,一种非暂态计算机可读介质可以存储包括一个或多个指令在内的指令,一个或多个指令在由一个或多个处理器执行时引起一个或多个处理器接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,并且利用循环标识技术标识软件程序中的循环。一个或多个指令可以引起一个或多个处理器利用循环退出技术并且基于来自循环标识技术的数据来修改软件程序以退出循环,以及在修改软件程序以退出循环之后,利用恶意软件检测技术处理软件程序以确定软件程序是否包含恶意软件。一个或多个指令可以引起一个或多个处理器基于利用恶意软件检测技术处理软件程序来确定软件程序包含恶意软件,并且基于确定软件程序包含恶意软件来引起一个或多个动作被执行。
根据一些实现,一种方法可以包括由设备接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,以及由该设备利用循环标识技术处理软件程序以标识软件程序中的循环。该方法可以包括由该设备使用循环退出技术并且基于来自循环标识技术的数据来修改软件程序以退出循环,并且在修改软件程序以退出循环之后,由该设备利用恶意软件检测技术处理软件程序以确定软件程序是否包含恶意软件。该方法可以包括由该设备基于利用恶意软件检测技术处理软件程序的结果来选择性地执行动作,其中当软件程序包含恶意软件时,动作包括第一动作,并且当软件程序不包含恶意软件时,动作包括第二动作。
附图说明
图1A-1H是本文中描述的示例实现的概述的图;
图2是其中可以实现本文中描述的系统和/或方法的示例环境的图;
图3是图2的一个或多个设备的示例组件的图;以及
图4是用于检测由软件程序的延迟循环隐藏的恶意软件的示例过程的流程图。
具体实施方式
以下对示例实现的详细描述参考附图。不同附图中的相同附图标记可以标识相同或相似的元素。
恶意软件使用不同种类的装甲(armoring)来防止测试沙箱中的动态分析和检测。一种类型的装甲包括利用延迟技术。由于恶意软件在测试沙箱中执行有限时间量,因此除非减轻,否则任何类型的延迟策略都会导致将程序确定为恶意软件以及确定恶意软件的实际意图的效率的降低。
一种类型的延迟技术包括从循环内调用应用编程接口(API)(例如,睡眠API)或任何基于睡眠的API变体。另一种类型的延迟技术包括延迟循环形式的装甲。这些延迟循环的一个变体包括重复调用某个不必要的API(例如,DUMMY_API(虚拟_API))的循环,其意图是进一步增加由循环引入的延迟。这可能导致测试沙箱的生产率降低并且降低恶意软件检测。例如,以延迟循环形式的装甲减少了在软件程序中更有意义的API和/或跟踪的记录。此外,如果测试沙箱捕获或挂钩(hook)DUMMY_API,则跟踪日志将包含DUMMY_API跟踪,并且如果测试沙箱对可以记录的API调用/跟踪总数有限制,则跟踪日志可能不包括除了DUMMY_API跟踪之外的任何API跟踪(例如,软件程序的API跟踪)。这限制了对大量有意义的跟踪的检测,并且进一步降低了恶意软件检测和恶意软件意图的确定。
本文中描述的一些实现提供了一种检测由软件程序的延迟循环隐藏的恶意软件的恶意软件检测平台。例如,恶意软件检测平台可以接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,并且可以利用循环标识技术处理软件程序以标识软件程序中的循环。恶意软件检测平台可以利用循环退出技术并且基于来自循环标识技术的数据来处理软件程序中的所标识的循环以退出软件程序中的循环。恶意软件检测平台可以利用恶意软件检测技术处理软件程序的除了循环之外的剩余部分以确定软件程序是否包含恶意软件,并且可以基于软件程序是否包含恶意软件来执行一个或多个动作。
在一些实现中,软件程序可以执行被挂钩的特定API(例如,win32API)(例如,拦截在软件组件之间传递的信息的代码)。在一些实现中,恶意软件检测平台可以以调试模式启动软件程序,该调试模式使得能够在软件程序中建立和利用断点(例如,有意停止或暂停位置)。在一些实现中,恶意软件检测平台可以执行除了软件程序之外的外部程序(例如,或者具有软件程序的额外控制线程),该外部程序等待来自执行软件程序的信号或主动地确定外部程序是否在任何循环内,而没有来自执行软件程序的任何信号。如果外部程序在循环内,则恶意软件检测平台可以采取措施强制软件程序退出循环。在一些实现中,外部程序可以暂停和/或恢复执行软件程序的线程,并且可以对软件程序执行其他操作,诸如读取、写入、更新和/或修补存储器、读取、反汇编、更新和/或修补软件程序、读取和/或更新软件程序的寄存器等。以这种方式,恶意软件检测平台可以检测由软件程序的延迟循环隐藏的恶意软件。
图1A-1H是本文中描述的示例实现100的概述的图。如图1A所示,用户设备可以与恶意软件检测平台相关联。如图1A和附图标记105进一步所示,用户设备的用户(例如,经由提供给用户的用户界面)可以引起用户设备下载软件程序,并且恶意软件检测平台可以在允许用户设备下载软件程序之前测试软件程序的恶意软件。在一些实现中,软件程序可以包括潜在恶意软件(例如,要由恶意软件检测平台检测)和用于防止潜在恶意软件的检测的一个或多个延迟循环。在一些实现中,恶意软件检测平台可以从除了用户设备之外的另一源接收软件程序。例如,当用户设备尝试下载软件程序时,代表用户设备进行操作的安全设备可以将软件程序重新路由到恶意软件检测平台。
如图1A进一步所示,在一个示例中,第一软件程序(软件程序1)可以包括已经被挂钩的API(例如,睡眠API)(例如,拦截在软件组件之间传递的信息的代码):
for(i=0;i<1000000;i++){
Sleep(20);
}。
在另一示例中,如图1A所示,第二软件程序(软件程序2)可以包括不调用API的循环,或者可以包括调用尚未被挂钩的API的循环:
在一些实现中,恶意软件检测平台可以根据软件程序的内容利用不同的循环标识技术来标识软件程序中的循环。例如,如果软件程序包括与第一软件程序类似的内容,则恶意软件检测平台可以利用第一循环标识技术,如下面结合图1B所述。在另一示例中,如果软件程序包括与第二软件程序类似的内容,则恶意软件检测平台可以利用第二循环标识技术,如下面结合图1C所述。在一些实现中,恶意软件检测平台可以利用与结合图1B和1C描述的技术不同的一种或多种循环标识技术。
如图1B以及附图标记105和110所示,如果软件程序包括第一软件程序,则恶意软件检测平台可以利用频率计数阈值来处理软件程序以标识软件程序中的循环。在一些实现中,恶意软件检测平台可以确定睡眠API挂钩是否执行满足频率计数阈值的次数(例如,每秒五十次、每秒一百次、每秒一千次等)。在这样的实现中,当满足频率计数阈值时,恶意软件检测平台可以确定循环调用软件程序挂钩(例如,睡眠API挂钩)。在一些实现中,频率计数阈值可以是可变且可调节的。在一些实现中,为了进一步验证循环调用软件程序挂钩,恶意软件检测平台可以从软件程序挂钩内部检查软件程序挂钩的返回地址。通过获取软件程序挂钩的返回地址,恶意软件检测平台可以针对返回地址计算频率计数,并且可以将频率计数与频率计数阈值进行比较。
在一些实现中,当软件程序包括从相同循环多次调用的相同API时,恶意软件检测平台可以利用频率计数阈值和先前描述的技术,如以下示例所述:
for(i=0;i<1000000;i++){
Sleep(20);
Sleep(40);
}。
在一些实现中,恶意软件检测平台可以将返回地址存储在可以用于退出循环的数据结构(例如,阵列,诸如INST[n])中,如本文中其他地方所述。在这样的实现中,一旦恶意软件检测平台确定从循环调用软件程序挂钩,则恶意软件检测平台就可以将返回地址存储在阵列中。
如图1C以及附图标记105和115所示,如果软件程序包括第二软件程序,则恶意软件检测平台可以基于处理器使用数据来处理软件程序以标识软件程序中的循环。在一些实现中,为了标识具有这样的循环的软件程序,恶意软件检测平台可以监测软件程序的线程的处理器使用。如果处理器使用满足特定处理器使用阈值(例如,处理器的使用的60%、70%等),则恶意软件检测平台可以确定软件程序包括一个或多个循环。
在一些实现中,为了验证第二软件程序包括一个或多个循环,恶意软件检测平台可以多次测试软件程序的线程的指令指针,如下所述。一旦获取足够的测试,恶意软件检测平台就可以创建与指令指针相关联的指令地址(例如,数据点)的直方图。如果直方图指示某些指令地址或连续范围的地址包括高数据点计数,则恶意软件检测平台可以确定软件程序包括一个或多个循环。
例如,假定软件程序包括多个(例如,十二个)指令(例如,INSTRUCTION_01至INSTRUCTION_12)并且不包括循环,或者没有卡在循环中。在软件程序中的任何点处,软件程序的指令指针可以位于任何指令处(例如,INSTRUCTION_01至INSTRUCTION_12)。如果恶意软件检测平台暂停软件程序并且查看指令指针,则恶意软件检测平台可以确定指令指针位于INSTRUCTION_01至INSTRUCTION_12处或之间。如果恶意软件检测平台大量次数且非常快速地做出这样的确定,则恶意软件检测平台可以为每个所查看的指令生成直方图(例如,数据点的直方图)。在这样的示例中,由于软件程序不包括循环,或者没有卡在循环中,因此直方图可以包括均匀分布。
在另一示例中,假定软件程序包括循环,或者卡在循环中(例如,在INSTRUCTION_03与INSTRUCTION_10之间)。如果恶意软件检测平台暂停软件程序并且查看指令指针,则恶意软件检测平台可以确定指令指针位于INSTRUCTION_03至INSTRUCTION_10处或之间。如果恶意软件检测平台大量次数且非常快速地做出这样的确定,则恶意软件检测平台可以为每个所查看的指令生成直方图(例如,数据点的直方图)。在这样的示例中,由于软件程序包括循环,或者卡在循环中,因此直方图将不包括均匀分布。相反,直方图可以包括如下分布:该分布包括INSTRUCTION_03至INSTRUCTION_10的高数据点计数以及INSTRUCTION_01、INSTRUCTION_02、INSTRUCTION_11和INSTRUCTION_12的低数据点计数。
在一些实现中,恶意软件检测平台可以将与直方图相关联的信息(例如,与指令指针相关联的地址)存储在数据结构(例如,阵列INST[n])中,该数据结构可以用于退出循环,如本文中其他地方所述。
在一些实现中,当软件程序包括多于一个循环时,恶意软件检测平台可以利用处理器使用数据和先前描述的直方图技术,如以下示例所述:
在一些实现中,恶意软件检测平台可以利用一个或多个循环退出技术(例如,循环退出技术的组合)来退出软件程序中的循环。例如,恶意软件检测平台可以利用如下面结合图1D所述的第一循环退出技术、如下面结合图1E所述的第二循环退出技术、如下面结合图1F所述的第三循环退出技术、第一循环退出技术、第二循环退出技术和第三循环退出技术的一种或多种组合等。
如图1D以及附图标记120和125所示,恶意软件检测平台可以利用第一循环退出技术,该技术利用从循环标识确定的数据并且将循环内的特定指令(例如,无条件JUMP(跳转)指令)相关联以退出循环。在一些实现中,在将在循环内的无条件JUMP指令相关联时,恶意软件检测平台可以利用从循环的标识确定的数据(例如,存储在阵列INST[n]中的数据)(例如,因为存储在阵列中的数据标识软件程序中的循环)。在一些实现中,恶意软件检测平台可以以调试模式启动软件程序以允许恶意软件检测平台在软件程序的特定指令处设置断点。在一些实现中,恶意软件检测平台可以修改软件程序以在循环内包括无条件JUMP指令,并且无条件JUMP指令可以引起软件程序移动或跳转到循环要退出到的指令地址。
例如,恶意软件检测平台可以修改第一软件程序以包括如下的无条件JUMP指令:
在另一示例中,恶意软件检测平台可以修改第二软件程序以包括如下的无条件JUMP指令:
如图1E和附图标记130所示,恶意软件检测平台可以利用第二循环退出技术,该技术将指令指针设置到循环要退出到的指令,以便退出循环。在一些实现中,并且如图1E中的附图标记120所示,在将指令指针设置为循环要退出到的指令时,恶意软件检测平台可以利用从循环的标识确定的数据(例如,存储在阵列INST中的数据)(例如,因为存储在阵列中的数据标识软件程序中的循环)。
例如,恶意软件检测平台可以修改第一软件程序以将指令指针设置为循环要退出到的指令,如下:
在另一示例中,恶意软件检测平台可以修改第二软件程序以将指令指针设置为循环要退出到的指令,如下:
如图1F和附图标记135所示,恶意软件检测平台可以利用第三循环退出技术,该技术修改循环内的特定指令处的寄存器以便退出循环。在一些实现中,并且如图1F中的附图标记120所示,当修改循环内的特定指令处的寄存器时,恶意软件检测平台可以利用从循环的标识确定的数据(例如,存储在阵列INST中的数据)(例如,因为存储在阵列中的数据标识软件程序中的循环)。在一些实现中,恶意软件检测平台可以以调试模式启动软件程序以允许恶意软件检测平台在软件程序的特定指令处设置断点。在一些实现中,恶意软件检测平台可以修改特定指令(例如,循环内的条件JUMP)处的任何寄存器(例如,控制寄存器),并且可以利用寄存器来退出循环。
在一些实现中,为了强制退出循环,恶意软件检测平台可以暂停软件程序的执行,并且可以在循环周围反汇编指令。恶意软件检测平台可以循环内的条件JUMP指令处修改寄存器,并且可以利用经修改的寄存器来退出循环。
在一些实现中,在暂停软件程序的执行之后,恶意软件检测平台可以确定阵列(例如,阵列INST)中的指令地址是否满足特定地址空间(例如,在诸如win32模块地址空间等特定地址空间内)。如果阵列中的特定指令地址满足特定地址空间,则恶意软件检测平台可以移动到阵列中的下一指令地址。如果阵列中的特定指令地址不满足特定地址空间(例如,不在特定地址空间内),则恶意软件检测平台可以用特定指令地址更新阵列。在一些实现中,恶意软件检测平台可以继续该过程,直到阵列中的每个指令地址不满足特定地址空间。
在如上所述更新阵列之后,在一些实现中,对于阵列(例如,阵列INST)中的每个指令地址,恶意软件检测平台可以在指令地址周围反汇编指令以确定与指令地址相关联的功能。恶意软件检测平台可以将与功能相关联的功能开始地址和功能结束地址存储在数据结构(例如,诸如两个阵列FUNC_START和FUNC_END)中。在一些实现中,恶意软件检测平台可以从两个阵列(例如,FUNC_START和FUNC_END)中移除任何重复的功能条目,并且可以从阵列(例如,阵列INST)中移除相应的指令地址条目。
在一些实现中,对于与存储在两个阵列(例如,FUNC_START和FUNC_END)中的每个功能相关联的指令,恶意软件检测平台可以反汇编指令,并且可以标识经反汇编的指令中的循环。恶意软件检测平台可以从所标识的循环中选择循环,其中所选择的循环可以包括特定指令(例如,INST[i])。恶意软件检测平台可以将所选择的循环的起始地址和结束地址存储在两个数据结构(例如,诸如两个阵列LOOP_START和LOOP_END)中的对应索引[i]处。如果特定指令INST[i]不在该功能的任何标识的循环内(例如,存储在FUNC_START和FUNC_END中),则恶意软件检测平台可以不在两个阵列(例如,LOOP_START和LOOP_END)中创建对应条目。
在一些实现中,对于每个所标识的循环(例如,LOOP_START[i]和LOOP_END[i]),恶意软件检测平台可以确定循环的退出指令。在一个示例中,退出指令可以包括特定指令(例如,COMPARE(比较)指令)和退出循环的对应指令(例如,对应的条件JUMP指令)。在对应的条件JUMP指令处,恶意软件检测平台可以将与对应的条件JUMP指令相关联的地址和第一字节存储在数据结构(例如,诸如两个阵列STORE_JMP_ADDRESS和STORE_JMP_BYTE)中。在一些实现中,恶意软件检测平台可以用断点指令替换条件JUMP指令的第一字节。
在一些实现中,恶意软件检测平台可以恢复软件程序的执行,并且可以遇到断点指令。在遇到断点指令时,恶意软件检测平台可以获取断点指令的位置的地址(例如,断点地址)。恶意软件检测平台可以利用断点地址来标识STORE_JMP_ADDRESS阵列中的索引,并且可以利用索引从STORE_JMP_BYTE阵列中检索对应的字节(例如,其用断点指令被替换)。恶意软件检测平台可以恢复断点地址处的对应字节。在一些实现中,并且基于存在于断点地址处的条件JUMP指令类型,恶意软件检测平台可以更新软件程序的对应寄存器。在这样的实现中,并且当恢复软件程序的执行时,条件JUMP指令可以引起软件程序退出循环。
如图1G以及附图标记105和140所示,恶意软件检测平台可以利用恶意软件检测技术处理软件程序以确定软件程序是否包含恶意软件。在一些实现中,恶意软件检测平台可以利用一种或多种恶意软件检测技术来处理软件程序的剩余部分(例如,除了包含(多个)循环的软件程序的(多个)部分之外)以确定软件程序是否是包含恶意软件。例如,如图1G所示,软件程序的剩余部分可以包括程序AP1、程序AP2、程序AP3等。
在一些实现中,一个或多个恶意软件检测技术可以包括以下中的一个或多个:基于签名的技术、基于行为的技术、基于启发式扫描的技术、基于文件分析的技术、基于权重的启发式技术、基于规则的启发式技术、基于API调用的启发式技术、基于控制流图的启发式技术、基于N元语法的启发式技术、基于操作代码的启发式技术等。
基于签名的技术可以包括使用从各种恶意软件中提取的模式来标识软件程序中的任何这样的恶意软件的发生的恶意软件检测技术。基于签名的技术标识与已知恶意软件威胁相关联的一个或多个这样的模式(即,签名)。例如,签名可以包括唯一地标识特定恶意软件的算法或散列(例如,从文本串中导出的数字)。取决于用于标识软件程序中的恶意软件的扫描器类型,签名可以是包括恶意软件特有的代码片段的所计算的数值的静态散列。为了标识恶意软件(例如,病毒),基于签名的技术可以将文件的内容与签名(例如,病毒签名)字典进行比较。
基于行为的技术可以包括观察软件程序的行为以确定软件程序是否恶意的恶意软件检测技术。在基于行为的技术中,针对可疑活动分析对象行为(或潜在行为)。尝试执行明显异常或未经授权的操作可以表明该对象是恶意的或至少是可疑的。指示潜在危险的行为可以包括尝试发现沙箱环境,禁用安全控制,安装隐匿程式,注册自动启动,等等。与基于签名的技术不同,基于行为的技术可以防止字典中不存在的新的恶意软件。基于行为的技术可以在对象可以实际执行该行为之前基于预期动作来评估对象。
基于启发式扫描的技术可以包括在软件程序内寻找在典型软件程序中找不到的某些指令或命令的恶意软件检测技术。因此,基于启发式扫描的技术能够检测新的、先前未经检查的功能中的潜在恶意功能,诸如病毒的复制机制、蠕虫的分发例程、特洛伊木马的有效负载等。基于启发式扫描的技术可以利用数据挖掘和/或机器学习技术来学习软件程序的行为。
基于文件分析的技术可以包括采用与软件程序相关联的文件的深入观察的恶意软件检测技术。基于深入观察,基于文件分析的技术可以确定文件和/或与文件相关联的软件程序的意图、目的地和/或目的。例如,如果文件包括删除某些文件的指令,则基于文件分析的技术可以确定文件与恶意软件相关联。
基于权重的启发式技术可以包括采用依赖于基于权重的系统的启发式引擎的恶意软件检测技术。基于权重的启发式技术可以根据功能可能造成的危险程度利用特定权重来对每个检测到的软件功能进行评级,并且可以基于对每个功能进行加权的结果来确定是否存在恶意软件。例如,如果权重之和达到某个阈值,则基于权重的启发式技术可以触发指示恶意软件的潜在存在的警报。
基于规则的启发式技术可以包括应用一个或多个规则来检测恶意软件的潜在存在的恶意软件检测技术。例如,基于规则的启发式技术可以从软件程序的文件中提取特定规则,并且可以将特定规则和与恶意代码相关联的一组规则进行比较。如果一个或多个特定规则匹配与恶意代码相关联的一个或多个规则,则基于规则的启发式技术可以触发警报。
基于API调用的启发式技术可以包括分析API调用序列以标识恶意软件的潜在存在的恶意软件检测技术。几乎所有软件程序都使用API调用向与软件程序的执行相关联的操作系统发送请求。基于API调用的启发式技术可以基于API调用和API调用发生的序列来标识可疑功能。例如,基于API调用的启发式技术可以从软件程序中提取API调用序列,可以利用机器学习模型处理API调用序列,并且可以基于利用机器学习模型处理API调用的结果来将软件程序分类为恶意软件或良性。
基于控制流图的启发式技术可以包括分析软件程序的控制流图的特征以标识恶意软件的潜在存在的恶意软件检测技术。控制流图是有向图,其中每个节点表示软件程序的语句,并且每个边表示语句之间的控制流。在基于控制流图的启发式技术中,控制流图可以包括使用图表符号对在软件程序的执行期间可能遍历软件程序的所有路径的表示。基于控制流图的启发式技术可以通过在软件程序的控制流图中标识与恶意软件相关联的控制流图特征来标识软件程序中的恶意软件。
基于N元语法的启发式技术可以包括分析与软件程序相关联的N元语法以标识恶意软件的潜在存在的恶意软件检测技术。N元语法是较大字符串的子字符串,使得子字符串的长度为N。基于N元语法的启发式技术可以通过在软件程序中标识可以与恶意软件相关联的一个或多个N元语法来标识软件程序中的恶意软件。
基于操作代码的启发式技术可以包括分析与软件程序相关联的操作代码以标识恶意软件的潜在存在的恶意软件检测技术。操作代码(有时称为OpCode)是标识要执行的操作的机器语言指令的一部分。例如,在将两个寄存器的内容相加的指令中,操作代码可以对应于相加操作。基于操作代码的启发式技术可以通过在软件程序中标识与可以与恶意软件相关联的操作相对应的一个或多个操作代码来标识软件程序中的恶意软件。
在一些实现中,恶意软件检测平台可以利用一种或多种恶意软件检测技术或者两种或更多种恶意软件检测技术的组合。在一些实现中,恶意软件检测平台可以执行软件程序的初始分析,并且可以基于初始分析来选择恶意软件检测技术,或者定义恶意软件检测技术的执行顺序。在这样的实现中,恶意软件检测平台可以利用恶意软件检测技术来确定软件程序是否包括恶意软件。
如图1H和附图标记145所示,恶意软件检测平台可以向用户设备提供指示恶意软件确定的信息(例如,经由用户界面)。例如,恶意软件检测平台可以提供指示软件程序包含恶意软件和试图隐藏恶意软件的循环的信息。在一些实现中,用户设备可以从恶意软件检测平台接收该信息,并且可以提供该信息用于经由用户界面(例如,向用户设备的用户)进行显示。
在一些实现中,恶意软件检测平台可以基于恶意软件确定来自动执行一个或多个动作或者引起一个或多个动作被执行。例如,如果恶意软件检测平台确定软件程序包含恶意软件,则恶意软件检测平台可以自动阻止用户设备接收软件程序,这消除了用户设备被恶意软件感染的可能性。恶意软件检测平台可以从用户设备中移除软件程序,或者指示用户设备从用户设备中移除软件程序,这可以消除用户设备被恶意软件感染的可能性。恶意软件检测平台可以隔离软件程序以进行进一步分析,这可以防止恶意软件扩散到用户设备和/或其他用户设备。恶意软件检测平台可以引起一个或多个网络设备更新规则以阻止软件程序,这可以防止恶意软件扩散到其他用户设备。恶意软件检测平台可以标识软件程序的源,并且可以将与源相关的信息添加到黑名单,这可以防止恶意软件的传播。恶意软件检测平台可以标识软件程序的源,并且可以通知问题的来源。恶意软件检测平台可以引起恶意软件检测程序在用户设备上执行,以便从用户设备中移除恶意软件。恶意软件检测平台可以向网络管理员通知恶意软件的检测,使得网络管理员可以解决该问题。恶意软件检测平台可以向其他网络管理员(例如,与恶意软件检测平台或用户设备无关的管理员)通知软件程序和恶意软件的检测(例如,用于帮助防止恶意软件的全局服务)。
在一些实现中,如果恶意软件检测平台确定软件程序不包含恶意软件,则恶意软件检测平台可以引起软件程序被发送到用户设备。恶意软件检测平台可以标识软件程序的源,并且可以将与源相关的信息添加到白名单。恶意软件检测平台可以标识软件程序的源,并且可以向源通知软件程序没有恶意软件问题。恶意软件检测平台可以向其他网络管理员(例如,与恶意软件检测平台或用户设备无关的管理员)通知软件程序以及没有检测到恶意软件。
以这种方式,用于检测由软件程序的延迟循环隐藏的恶意软件的过程的若干不同阶段被自动化,这可以消除过程中的人为主观性和浪费,并且可以提高过程的速度和效率并且节省计算资源(例如,处理器资源、存储器资源等)。此外,本文中描述的实现使用严格的计算机化过程来执行先前未执行或先前使用主观人类直觉或输入执行的任务或角色。例如,目前,不存在用于检测包括延迟循环形式的装甲的恶意软件的技术。最后,对用于检测由软件程序的延迟循环隐藏的恶意软件的过程进行自动化节省了否则将在试图检测恶意软件时被浪费的计算资源(例如,处理器资源、存储器资源等)和执行恶意软件将被浪费的用户设备的计算资源。
如上所述,图1A-1H仅作为示例提供。其他示例是可能的,并且可以与关于图1A-1H描述的示例不同。
图2是其中可以实现本文中描述的系统和/或方法的示例环境200的图。如图2所示,环境200可以包括用户设备210、恶意软件检测平台220和网络230。环境200的设备可以经由有线连接、无线连接或有线和无线连接的组合进行互连。
用户设备210包括能够接收、生成、存储、处理和/或提供信息(诸如本文中描述的信息)的一个或多个设备。例如,用户设备210可以包括移动电话(例如,智能电话、无线电话等)、膝上型计算机、平板计算机、台式计算机、手持式计算机、游戏设备、可穿戴通信设备(例如,智能手表、智能眼镜等)或类似类型的设备。在一些实现中,用户设备210可以从恶意软件检测平台220接收信息,和/或向恶意软件检测平台220传输信息。
恶意软件检测平台220包括能够检测由软件程序的延迟循环隐藏的恶意软件的一个或多个设备。在一些实现中,恶意软件检测平台220可以被设计为模块化的,使得某些软件组件可以根据特定需要而被换入或换出。这样,可以容易地和/或快速地重新配置恶意软件检测平台220以用于不同的用途。在一些实现中,恶意软件检测平台220可以从一个或多个用户设备210接收信息,和/或向一个或多个用户设备210传输信息。
在一些实现中,如图所示,恶意软件检测平台220可以被托管在云计算环境222中。值得注意的是,虽然本文中描述的实现将恶意软件检测平台220描述为托管在云计算环境222中,但是在一些实现中,恶意软件检测平台220可以不是基于云的(即,可以在云计算环境之外实现,诸如在用户设备210、服务器设备等之内),或者可以是部分基于云的。
云计算环境222包括托管恶意软件检测平台220的环境。云计算环境222可以提供计算、软件、数据访问、存储等服务,这些服务不需要终端用户对托管恶意软件检测平台220的(多个)系统和/或(多个)设备的物理位置和配置的知识。如图所示,云计算环境222可以包括一组计算资源224(统称为“计算资源224”并且单独称为“计算资源224”)。
计算资源224包括一个或多个个人计算机、工作站计算机、服务器设备或其他类型的计算和/或通信设备。在一些实现中,计算资源224可以托管恶意软件检测平台220。云资源可以包括在计算资源224中执行的计算实例、在计算资源224中提供的存储设备、由计算资源224提供的数据传输设备等。在一些实现中,计算资源224可以经由有线连接、无线连接或有线和无线连接的组合与其他计算资源224通信。
如图2进一步所示,计算资源224包括一组云资源,诸如一个或多个应用(“APP”)224-1、一个或多个虚拟机(“VM”)224-2、虚拟化存储装置(“VS”)224-3、一个或多个管理程序(“HYP”)224-4等。
应用224-1包括可以提供给用户设备210或由用户设备210访问的一个或多个软件应用。应用224-1可以消除在用户设备210上安装和执行软件应用的需要。例如,应用224-1可以包括与恶意软件检测平台220相关联的软件和/或能够经由云计算环境222提供的任何其他软件。在一些实现中,一个应用224-1可以经由虚拟机224-2向/从一个或多个其他应用224-1发送/接收信息。
虚拟机224-2包括执行诸如物理机器等程序的机器(例如,计算机)的软件实现。虚拟机224-2可以是系统虚拟机或进程虚拟机,这取决于虚拟机224-2对任何真实机器的使用和对应程度。系统虚拟机可以提供支持完整操作系统(“OS”)的执行的完整系统平台。进程虚拟机可以执行单个程序,并且可以支持单个进程。在一些实现中,虚拟机224-2可以代表用户(例如,用户设备210的用户或恶意软件检测平台220的运营商)执行,并且可以管理云计算环境222的基础设施,诸如数据管理、同步或长持续时间数据传输。
虚拟化存储装置224-3包括在计算资源224的存储系统或设备内使用虚拟化技术的一个或多个存储系统和/或一个或多个设备。在一些实现中,在存储系统的上下文中,虚拟化类型可以包括块虚拟化和文件虚拟化。块虚拟化可以是指逻辑存储从物理存储的抽象(或分离),使得可以访问存储系统而不考虑物理存储或异构结构。分离可以允许存储系统的管理员灵活地管理终端用户的存储。文件虚拟化可以消除在文件级访问的数据与文件物理存储的位置之间的依赖性。这可以实现存储使用、服务器整合和/或无中断文件迁移性能的优化。
管理程序224-4可以提供允许多个操作系统(例如,“客户操作系统”)在主机计算机(诸如计算资源224)上同时执行的硬件虚拟化技术。管理程序224-4可以向客户操作系统呈现虚拟操作平台,并且可以管理客户操作系统的执行。各种操作系统的多个实例可以共享虚拟化硬件资源。
网络230包括一个或多个有线和/或无线网络。例如,网络230可以包括蜂窝网络(例如,第五代(5G)网络、长期演进(LTE)网络、第三代(3G)网络、码分多址(CDMA)网络等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如,公共交换电话网(PSTN))、专用网络、自组织网络、内联网、因特网、基于光纤的网络等、和/或这些或其他类型的网络的组合。
图2所示的设备和网络的数目和布置作为示例提供。实际上,可以存在与图2所示的相比更多的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或者不同地布置的设备和/或网络。此外,
图2所示的两个或更多个设备可以在单个设备中实现,或者图2所示的单个设备可以实现为多个分布式设备。另外地或替代地,环境200的一组设备(例如,一个或多个设备)可以执行被描述为由环境200的另一组设备执行的一个或多个功能。
图3是设备300的示例组件的图。设备300可以对应于用户设备210、恶意软件检测平台220和/或计算资源224。在一些实现中,用户设备210、恶意软件检测平台220和/或计算资源224可以包括一个或多个设备300和/或设备300的一个或多个组件。如图3所示,设备300可以包括总线310、处理器320、存储器330、存储组件340、输入组件350、输出组件360和通信接口370。
总线310包括允许设备300的组件之间的通信的组件。处理器320用硬件、固件或硬件和软件的组合来实现。处理器320是中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他类型的处理组件。在一些实现中,处理器320包括能够被编程为执行功能的一个或多个处理器。存储器330包括随机存取存储器(RAM)、只读存储器(ROM)和/或存储用于由处理器320使用的信息和/或指令的其他类型的动态或静态存储设备(例如,闪存、磁存储器和/或光存储器)。
存储组件340存储与设备300的操作和使用有关的信息和/或软件。例如,存储组件340可以包括硬盘(例如,磁盘、光盘、磁光盘和/或固态盘)、光盘(CD)、数字通用光盘(DVD)、软盘、盒式磁带、磁带和/或其他类型的非暂态计算机可读介质、以及对应的驱动器。
输入组件350包括允许设备300接收信息的组件,诸如经由用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关和/或麦克风)。另外地或替代地,输入组件350可以包括用于感测信息的传感器(例如,全球定位系统(GPS)组件、加速计、陀螺仪和/或致动器)。输出组件360包括从设备300提供输出信息的组件(例如,显示器、扬声器和/或一个或多个发光二极管(LED))。
通信接口370包括使得设备300能够与其他设备进行通信(诸如经由有线连接、无线连接或有线和无线连接的组合)的类似收发器的组件(例如,收发器和/或单独的接收器和发射器)。通信接口370可以允许设备300从另一设备接收信息,和/或向另一设备提供信息。例如,通信接口370可以包括以太网接口、光学接口、同轴接口、红外接口、射频(RF)接口、通用串行总线(USB)接口、无线局域网接口、蜂窝网络接口等。
设备300可以执行本文中描述的一个或多个过程。设备300可以基于处理器320执行由诸如存储器330和/或存储组件340等非暂态计算机可读介质存储的软件指令来执行这些过程。计算机可读介质在本文中被定义为非暂态存储器设备。存储器设备包括在单个物理存储设备内的存储器空间或跨多个物理存储设备而分布的存储器空间。
软件指令可以经由通信接口370从另一计算机可读介质或从另一设备读取到存储器330和/或存储组件340中。当被执行时,存储在存储器330和/或存储组件340中的软件指令可以引起处理器320执行本文中描述的一个或多个过程。另外地或替代地,可以使用硬连线电路代替软件指令或与软件指令组合以执行本文中描述的一个或多个过程。因此,本文中描述的实现不限于硬件电路和软件的任何特定组合。
图3所示的组件的数目和布置作为示例提供。实际上,设备300可以包括与图3所示的相比更多的组件、更少的组件、不同的组件、或者不同地布置的组件。另外地或替代地,设备300的一组组件(例如,一个或多个组件)可以执行被描述为由设备300的另一组组件执行的一个或多个功能。
图4是用于检测由软件程序的延迟循环隐藏的恶意软件的示例过程400的流程图。在一些实现中,图4的一个或多个过程框可以由恶意软件检测平台(例如,恶意软件检测平台220)执行。在一些实现中,图4的一个或多个过程框可以由与恶意软件检测平台220分离或包括恶意软件检测平台220的另一设备或一组设备(诸如用户设备210)来执行。
如图4所示,过程400可以包括接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序(框410)。例如,恶意软件检测平台(例如,使用计算资源224、处理器320、通信接口370等)可以接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,如上面结合图1A-2所述。
如图4进一步所示,过程400可以包括利用循环标识技术处理软件程序以标识软件程序中的循环(框420)。例如,恶意软件检测平台(例如,使用计算资源224、处理器320等)可以利用循环标识技术处理软件程序以标识软件程序中的循环,如上面结合图1A-2所述。
如图4进一步所示,过程400可以包括利用循环退出技术并且基于来自循环标识技术的数据来修改软件程序以退出所标识的循环(框430)。例如,恶意软件检测平台(例如,使用计算资源224、处理器320等)可以利用循环退出技术并且基于来自循环标识技术的数据来修改软件程序以退出所标识的循环,如上面结合图1A-2所述。
如图4进一步所示,过程400可以包括利用恶意软件检测技术处理软件程序的除了循环之外的剩余部分以确定软件程序是否包含恶意软件(框440)。例如,恶意软件检测平台(例如,使用计算资源224、处理器320等)可以利用恶意软件检测技术处理软件程序的除了循环之外的剩余部分以确定软件程序是否包含恶意软件,如上面结合图1A-2所述。
如图4进一步所示,过程400可以包括提供指示软件程序是否包含恶意软件的信息(框450)。例如,恶意软件检测平台(例如,使用计算资源224、处理器320、通信接口370等)可以提供指示软件程序是否包含恶意软件的信息,如上面结合图1A-2所述。
过程400可以包括附加实现,诸如下面描述的任何单个实现或实现的任何组合。
在一些实现中,在利用循环标识技术处理软件程序时,恶意软件检测平台可以基于频率计数阈值来处理软件程序以标识软件程序中的循环。在一些实现中,在利用循环标识技术处理软件程序时,恶意软件检测平台可以基于处理器使用数据来处理软件程序以标识软件程序中的循环。在一些实现中,在修改软件程序以退出循环时,恶意软件检测平台可以在软件程序的循环内插入无条件跳转指令,其中无条件跳转指令可以引起软件程序跳转到该软件程序的在循环外部的指令。
在一些实现中,在修改软件程序以退出循环时,恶意软件检测平台可以在软件程序中提供循环要退出到的指令指针。在一些实现中,在修改软件程序以退出循环时,恶意软件检测平台可以修改循环内的特定指令处的寄存器,其中经修改的寄存器可以引起循环退出。在一些实现中,恶意软件检测平台可以基于利用恶意软件检测技术处理软件程序的结果来提供指示软件程序是否包含恶意软件的信息。
在一些实现中,当软件程序包含恶意软件时,恶意软件检测平台可以阻止用户设备接收软件程序,从用户设备中移除软件程序,指示用户设备从用户设备中移除软件程序,隔离软件程序以进行进一步分析,将与软件程序的源相关的信息添加到黑名单,向网络管理员通知确定软件程序包含恶意软件,等等。
在一些实现中,由恶意软件检测平台利用的恶意软件检测技术可以包括基于签名的技术、基于行为的技术、基于启发式扫描的技术、基于文件分析的技术、基于权重的启发式技术、基于规则的启发式技术、基于应用编程接口(API)调用的启发式技术、基于控制流图的启发式技术、基于N元语法的启发式技术、基于操作代码的启发式技术等。
在一些实现中,恶意软件检测平台可以提供指示软件程序包含恶意软件的信息。在一些实现中,当软件程序不包括恶意软件时,恶意软件检测平台可以引起软件程序被发送到用户设备,将与软件程序的源相关的信息添加到白名单,向网络管理员通知软件程序不包含恶意软件,等等。
尽管图4示出了过程400的示例框,但是在一些实现中,过程400可以包括与图4中描绘的相比更多的框、更少的框、不同的框、或者不同地布置的框。另外地或替代地,过程400的两个或更多个框可以并行执行。
本文中描述的一些实现提供了一种检测由软件程序的延迟循环隐藏的恶意软件的恶意软件检测平台。例如,恶意软件检测平台可以接收具有潜在恶意软件和用于隐藏潜在恶意软件的循环的软件程序,并且可以利用循环标识技术处理软件程序以标识软件程序中的循环。恶意软件检测平台可以利用循环退出技术并且基于来自循环标识技术的数据来处理软件程序中的所标识的循环以退出软件程序中的循环。恶意软件检测平台可以利用恶意软件检测技术处理软件程序的除了循环之外的剩余部分以确定软件程序是否包含恶意软件,并且可以基于软件程序是否包含恶意软件来执行一个或多个动作。
前述公开内容提供说明和描述,而非旨在穷举或将实现限于所公开的精确形式。鉴于以上公开内容,修改和变化是可能的,或者可以从实现的实践中获取。
如本文中使用的,术语“组件”旨在广义地解释为硬件、固件或硬件和软件的组合。
本文中已经描述和/或在附图中示出了某些用户界面。用户界面可以包括图形用户界面、非图形用户界面、基于文本的用户界面等。用户界面可以提供用于显示的信息。在一些实现中,用户可以与信息交互,诸如通过经由提供用户界面以用于显示的设备的输入组件来提供输入。在一些实现中,用户界面可以由设备和/或用户可配置(例如,用户可以改变用户界面的大小、经由用户界面提供的信息、经由用户界面提供的信息的位置等)。另外地或替代地,用户界面可以被预先配置为标准配置、基于显示用户界面的设备类型的特定配置、和/或基于与显示用户界面的设备相关联的能力和/或规范的一组配置。
很清楚的是,本文中描述的系统和/或方法可以以不同形式的硬件、固件或硬件和软件的组合来实现。用于实现这些系统和/或方法的实际专用控制硬件或软件代码不限制实现。因此,本文中描述了系统和/或方法的操作和行为,而没有参考特定的软件代码——应当理解,软件和硬件可以被设计为基于本文中的描述来实现系统和/或方法。
即使特定的特征组合在权利要求中记载和/或在说明书中公开,但是这些组合并不旨在限制可能的实现的公开。实际上,很多这些特征可以以未在权利要求中具体记载和/或在说明书中公开的方式进行组合。尽管下面列出的每个从属权利要求可以直接仅依赖于一个权利要求,但是可能的实现的公开包括每个从属权利要求与权利要求组中的每个其他权利要的组合。
除非明确地如此描述,否则本文中使用的元件、动作或指令都不应当被解释为是关键或必要的。此外,如本文中使用的,冠词“一个(a)”和“一个(an)”旨在包括一个或多个项目,并且可以与“一个或多个”可互换地使用。此外,如本文中使用的,术语“集合”旨在包括一个或多个项目(例如,相关项目、不相关项目、相关项目和不相关项目的组合等),并且可以与“一个或多个”可互换地使用。在仅有一个项目的情况下,使用术语“一个(one)”或类似的语言。此外,如本文中使用的,术语“具有(has)”、“具有(have)”、“具有(having)”等意图是开放式术语。此外,除非另有明确说明,否则短语“基于”旨在表示“至少部分基于”。
Claims (20)
1.一种设备,包括:
一个或多个存储器;以及
一个或多个处理器,用于:
接收具有潜在恶意软件和用于隐藏所述潜在恶意软件的循环的软件程序;
利用循环标识技术处理所述软件程序以标识所述软件程序中的所述循环;
利用循环退出技术并且基于来自所述循环标识技术的数据来修改所述软件程序以退出所述循环;
在修改所述软件程序以退出所述循环之后,利用恶意软件检测技术处理所述软件程序以确定所述软件程序是否包含恶意软件;以及
基于利用所述恶意软件检测技术处理所述软件程序的结果,引起一个或多个动作被执行。
2.根据权利要求1所述的设备,其中在利用所述循环标识技术处理所述软件程序时,所述一个或多个处理器用于:
基于频率计数阈值或基于处理器使用数据来处理所述软件程序以标识所述软件程序中的所述循环。
3.根据权利要求1所述的设备,其中在利用所述循环标识技术处理所述软件程序时,所述一个或多个处理器用于:
基于所述软件程序中的指令地址的直方图来处理所述软件程序以标识所述软件程序中的所述循环。
4.根据权利要求1所述的设备,其中在修改所述软件程序以退出所述循环时,所述一个或多个处理器用于:
在所述软件程序中的所述循环内插入无条件跳转指令,
所述无条件跳转指令用于引起所述软件程序跳转到所述软件程序的在所述循环外部的指令。
5.根据权利要求1所述的设备,其中在修改所述软件程序以退出所述循环时,所述一个或多个处理器用于:
在所述软件程序中提供所述循环要退出到的指令指针。
6.根据权利要求1所述的设备,其中在修改所述软件程序以退出所述循环时,所述一个或多个处理器用于:
修改所述循环内的特定指令处的寄存器,
经修改的所述寄存器引起所述循环被退出。
7.根据权利要求1所述的设备,其中在引起所述一个或多个动作被执行时,所述一个或多个处理器用于:
基于利用所述恶意软件检测技术处理所述软件程序的结果,提供指示所述软件程序是否包含恶意软件的信息。
8.一种存储指令的非暂态计算机可读介质,所述指令包括:
一个或多个指令,在由一个或多个处理器执行时引起所述一个或多个处理器:
接收具有潜在恶意软件和用于隐藏所述潜在恶意软件的循环的软件程序;
利用循环标识技术标识所述软件程序中的所述循环;
利用循环退出技术并且基于来自所述循环标识技术的数据来修改所述软件程序以退出所述循环;
在修改所述软件程序以退出所述循环之后,利用恶意软件检测技术处理所述软件程序以确定所述软件程序是否包含恶意软件;
基于利用所述恶意软件检测技术处理所述软件程序,确定所述软件程序包含恶意软件;以及
基于确定所述软件程序包含恶意软件,引起一个或多个动作被执行。
9.根据权利要求8所述的非暂态计算机可读介质,其中所述一个或多个动作包括以下中的一个或多个:
阻止用户设备接收所述软件程序,
从所述用户设备中移除所述软件程序,
指示所述用户设备从所述用户设备中移除所述软件程序,
隔离所述软件程序以进行进一步分析,
将与所述软件程序的源相关的信息添加到黑名单,或者
向网络管理员通知所述软件程序包含恶意软件。
10.根据权利要求8所述的非暂态计算机可读介质,其中所述恶意软件检测技术包括以下中的一个或多个:
基于签名的技术,
基于行为的技术,
基于启发式扫描的技术,
基于文件分析的技术,
基于权重的启发式技术,
基于规则的启发式技术,
基于应用编程接口(API)调用的启发式技术,
基于控制流图的启发式技术,
基于N元语法的启发式技术,或者
基于操作代码的启发式技术。
11.根据权利要求8所述的非暂态计算机可读介质,其中引起所述一个或多个处理器标识所述软件程序中的所述循环的所述一个或多个指令引起所述一个或多个处理器进行以下之一:
基于频率计数阈值标识所述软件程序中的所述循环,
基于处理器使用数据标识所述软件程序中的所述循环,或者
基于所述软件程序中的指令地址的直方图来标识所述软件程序中的所述循环。
12.根据权利要求8所述的非暂态计算机可读介质,其中引起所述一个或多个处理器修改所述软件程序以退出所述循环的所述一个或多个指令引起所述一个或多个处理器进行以下之一:
在所述软件程序中的所述循环内插入无条件跳转指令,
所述无条件跳转指令用于引起所述软件程序跳转到所述软件程序的在所述循环外部的指令,或者
在所述软件程序中提供所述循环要退出到的指令指针。
13.根据权利要求8所述的非暂态计算机可读介质,其中引起所述一个或多个处理器修改所述软件程序以退出所述循环的所述一个或多个指令引起所述一个或多个处理器:
修改所述循环内的特定指令处的寄存器,
经修改的所述寄存器引起所述循环被退出。
14.根据权利要求8所述的非暂态计算机可读介质,其中所述指令还包括:
一个或多个指令,在由所述一个或多个处理器执行时引起所述一个或多个处理器:
提供指示所述软件程序包含恶意软件的信息。
15.一种方法,包括:
由设备接收具有潜在恶意软件和用于隐藏所述潜在恶意软件的循环的软件程序;
由所述设备利用循环标识技术处理所述软件程序以标识所述软件程序中的所述循环;
由所述设备使用循环退出技术并且基于来自所述循环标识技术的数据来修改所述软件程序以退出所述循环;
在修改所述软件程序以退出所述循环之后,由所述设备利用恶意软件检测技术处理所述软件程序以确定所述软件程序是否包含恶意软件;以及
由所述设备基于利用所述恶意软件检测技术处理所述软件程序的结果来选择性地执行动作,
当所述软件程序包含恶意软件时,所述动作包括第一动作,以及
当所述软件程序不包含恶意软件时,所述动作包括第二动作。
16.根据权利要求15所述的方法,其中所述第一动作包括以下中的一个或多个:
阻止用户设备接收所述软件程序,
从所述用户设备中移除所述软件程序,
指示所述用户设备从所述用户设备中移除所述软件程序,
隔离所述软件程序以进行进一步分析,
将与所述软件程序的源相关的信息添加到黑名单,或者
向网络管理员通知所述软件程序包含恶意软件。
17.根据权利要求15所述的方法,其中所述第二动作包括以下中的一个或多个:
引起所述软件程序被发送到用户设备,
将与所述软件程序的源相关的信息添加到白名单,或者
向网络管理员通知所述软件程序不包含恶意软件。
18.根据权利要求15所述的方法,其中利用所述循环标识技术处理所述软件程序包括以下之一:
基于频率计数阈值处理所述软件程序以标识所述软件程序中的所述循环,
基于处理器使用数据处理所述软件程序以标识所述软件程序中的所述循环,或者
基于所述软件程序中的指令地址的直方图来处理所述软件程序以标识所述软件程序中的所述循环。
19.根据权利要求15所述的方法,其中修改所述软件程序以退出所述循环包括以下之一:
在所述软件程序中的所述循环内插入无条件跳转指令,
所述无条件跳转指令用于引起所述软件程序跳转到所述软件程序的在所述循环外部的指令;
在所述软件程序中提供所述循环要退出到的指令指针;或者
修改所述循环内的特定指令处的寄存器,
经修改的所述寄存器引起所述循环被退出。
20.根据权利要求15所述的方法,还包括:
提供指示所述软件程序是否包含恶意软件的信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/934,356 | 2018-03-23 | ||
US15/934,356 US10860716B2 (en) | 2018-03-23 | 2018-03-23 | Detecting malware concealed by delay loops of software programs |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110298173A true CN110298173A (zh) | 2019-10-01 |
Family
ID=65812160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910194524.1A Withdrawn CN110298173A (zh) | 2018-03-23 | 2019-03-14 | 检测由软件程序的延迟循环隐藏的恶意软件 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10860716B2 (zh) |
EP (1) | EP3543883A1 (zh) |
CN (1) | CN110298173A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112149124A (zh) * | 2020-11-02 | 2020-12-29 | 电子科技大学 | 一种基于异构信息网络的安卓恶意程序检测的方法和系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11010472B1 (en) * | 2018-10-23 | 2021-05-18 | Architecture Technology Corporation | Systems and methods for signature-less endpoint protection against zero-day malware attacks |
US11250131B2 (en) * | 2019-12-19 | 2022-02-15 | Beijing Didi Infinity Technology And Development Co., Ltd. | Multi-purpose agent for endpoint scanning |
WO2023067667A1 (ja) * | 2021-10-18 | 2023-04-27 | 日本電信電話株式会社 | 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム |
KR102396237B1 (ko) * | 2022-02-09 | 2022-05-10 | 주식회사 샌즈랩 | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971019B1 (en) | 2000-03-14 | 2005-11-29 | Symantec Corporation | Histogram-based virus detection |
US9900324B1 (en) * | 2014-01-29 | 2018-02-20 | SecondWrite LLC | System to discover and analyze evasive malware |
US9817974B1 (en) * | 2015-11-10 | 2017-11-14 | Trend Micro Incorporated | Anti-malware program with stalling code detection |
-
2018
- 2018-03-23 US US15/934,356 patent/US10860716B2/en active Active
-
2019
- 2019-03-14 EP EP19162753.8A patent/EP3543883A1/en not_active Withdrawn
- 2019-03-14 CN CN201910194524.1A patent/CN110298173A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112149124A (zh) * | 2020-11-02 | 2020-12-29 | 电子科技大学 | 一种基于异构信息网络的安卓恶意程序检测的方法和系统 |
CN112149124B (zh) * | 2020-11-02 | 2022-04-29 | 电子科技大学 | 一种基于异构信息网络的安卓恶意程序检测的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US10860716B2 (en) | 2020-12-08 |
EP3543883A1 (en) | 2019-09-25 |
US20190294791A1 (en) | 2019-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737895B (zh) | 使用静态和动态恶意软件分析来扩展恶意软件的动态检测 | |
CN105593870B (zh) | 用于恶意软件检测的复杂评分 | |
CN110298173A (zh) | 检测由软件程序的延迟循环隐藏的恶意软件 | |
CN105229612B (zh) | 使用基于硬件的微体系结构数据的异常程序执行的检测 | |
CN105989283B (zh) | 一种识别病毒变种的方法及装置 | |
JP6706273B2 (ja) | インタープリタ仮想マシンを用いた挙動マルウェア検出 | |
CN103559446B (zh) | 一种基于安卓系统的设备的动态病毒检测方法和装置 | |
US10382468B2 (en) | Malware identification via secondary file analysis | |
US9135443B2 (en) | Identifying malicious threads | |
Canfora et al. | Acquiring and analyzing app metrics for effective mobile malware detection | |
AU2014330136A1 (en) | Complex scoring for malware detection | |
US10162966B1 (en) | Anti-malware system with evasion code detection and rectification | |
CN102034050A (zh) | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 | |
EP3640826B1 (en) | Utilizing heuristic and machine learning models to generate a mandatory access control policy for an application | |
RU2748518C1 (ru) | Способ противодействия вредоносному программному обеспечению (ВПО) путем имитации проверочной среды | |
US11880458B2 (en) | Malware detection based on user interactions | |
CN104715202A (zh) | 一种虚拟机中的隐藏进程检测方法和装置 | |
Sihag et al. | Opcode n-gram based malware classification in android | |
Li et al. | Large-scale third-party library detection in android markets | |
Lee et al. | Kernel-level rootkits features to train learning models against namespace attacks on containers | |
Dam et al. | Learning android malware | |
Lin et al. | Classifying android malware with dynamic behavior dependency graphs | |
CN110516445A (zh) | 反检测恶意代码的识别方法、装置及存储介质 | |
US11636205B2 (en) | Method and system for detecting malware using memory map | |
EP3598331A1 (en) | Extending dynamic detection of malware using static and dynamic malware analyses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20191001 |
|
WW01 | Invention patent application withdrawn after publication |