CN105760787B - 用于检测随机存取存储器中的恶意代码的系统及方法 - Google Patents

用于检测随机存取存储器中的恶意代码的系统及方法 Download PDF

Info

Publication number
CN105760787B
CN105760787B CN201610066763.5A CN201610066763A CN105760787B CN 105760787 B CN105760787 B CN 105760787B CN 201610066763 A CN201610066763 A CN 201610066763A CN 105760787 B CN105760787 B CN 105760787B
Authority
CN
China
Prior art keywords
code
address space
trusted program
trusted
target
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.)
Active
Application number
CN201610066763.5A
Other languages
English (en)
Other versions
CN105760787A (zh
Inventor
M·A·帕夫柳什切克
A·V·莫纳斯泰尔斯基
D·A·那扎洛夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from RU2015125972/08A external-priority patent/RU2589862C1/ru
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of CN105760787A publication Critical patent/CN105760787A/zh
Application granted granted Critical
Publication of CN105760787B publication Critical patent/CN105760787B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Abstract

公开了用于检测随机存取存储器中的恶意代码的系统及方法。示例性实施例包括:由硬件处理器检测计算机上的不受信任程序的进程;由硬件处理器识别由不受信任程序的进程产生的函数调用,包括由进程产生的到目标进程的进程间函数调用;由硬件处理器确定是否在经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中执行代码的恶意软件分析;以及当确定执行恶意软件分析时,使用可由硬件处理器执行的防病毒软件来分析经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中的代码。

Description

用于检测随机存取存储器中的恶意代码的系统及方法
技术领域
本发明大体上涉及计算机安全领域,并且更具体地涉及用于检测随机存取存储器中的恶意代码的系统及方法。
背景技术
软件应用的数目以巨大的步伐增长。在多种应用中,存在许多恶意程序(恶意软件),其引起对计算机或计算机用户的危害,如,网间蠕虫、键盘记录器和计算机病毒。还存在许多技术用于向计算机提供安全性,如,防病毒软件,其设计成检测恶意程序,以及限制其可操作性(如,将它们置于隔离区中或将它们从计算机完全除去)。
然而,存在由恶意程序的开发者使用的各种方法来从防病毒应用隐藏恶意软件的活动。取决于由用于检测恶意软件的防病毒应用使用的方法,如,签名分析 (搜索分析的程序的代码的给定节段与来自恶意程序的签名库的已知代码或签名之间的对应性的技术)、探试分析(涉及分析的程序的执行的仿真、创建对API功能的调用的记录和搜索对API功能创建的调用记录与恶意程序的仿真 (emulation)的库之间的数据对应性的技术),或前瞻性分析(涉及拦截对将分析且在系统中启动的程序的API功能的调用、创建API功能的调用的记录和搜索创建的记录与恶意程序的API功能的调用的库之间的数据对应性的技术),恶意应用的开发者可使用以下方法:反仿真(如,检查其仿真很可能在仿真程序中未实现的函数返回的值,以便检测代码执行的仿真)、根工具包(隐藏其在计算装置上的存在(例如,借助于驱动程序)的恶意程序)、多形恶意程序(其执行代码在其执行的时间期间变化的恶意程序)以及应用代码的混淆(将恶意程序的代码变为能够操作但难以分析的形式)。除针对阻碍防病毒应用(例如,由防病毒应用阻碍检测) 的上文所述的途径外,恶意软件可应用从受信任应用(已知不是恶意的应用,且此应用的任何活动由防病毒应用允许)的地址空间执行恶意代码(指令)的方法。
各种途径用于监测来自受信任应用的地址空间的恶意代码的执行,包括涉及跟踪用于控制转移的各种API函数或访问进程的地址空间的调用,以便跟踪对恶意代码或其写入受信任进程的地址空间的调用。
尽管上述途径针对解决受信任进程的地址空间的恶意代码的检测领域中的某些问题,但它们并未足够有效地解决该问题:提到的途径需要访问第三方进程的多个可能操作(包括由受信任进程执行的操作)的检查,或它们调查有限的情形组合,为此需要检查进程的地址空间以便揭示恶意代码。本发明允许了更有效解决检测随机存取存储器中的恶意代码的问题。
发明内容
公开了一种用于检测随机存取存储器中的恶意代码的系统及方法。示例性方法包括:由硬件处理器检测计算机上的不受信任程序的进程;由硬件处理器识别由不受信任程序的进程产生的函数调用,包括由该进程到目标进程的进程间函数调用;由硬件处理器确定是否在经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中执行代码的恶意软件分析;以及当确定执行恶意软件分析时,使用可由硬件处理器执行的防病毒软件来分析经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中的代码。
在一个示例性方面中,识别由检测到的进程产生的函数调用包括以下一个或多个:确定函数调用的目标进程的标识符;确定目标进程的地址空间中的写入的存储块的大小;确定存储块中的可执行文件的标题的存在;确定目标进程是否是受信任进程;以及确定进程间函数调用是否在专用于动态链接库的存储区域中的目标进程的可执行代码上转移控制。
在一个示例性方面中,确定是否执行目标进程的地址空间中的代码的恶意软件分析包括:由硬件处理器收集关于不受信任程序的信息;以及对在识别函数调用的进程内收集的信息和关于不受信任程序的收集信息应用探试规则来确定是否在目标进程的地址空间中执行代码的恶意软件分析。
在一个示例性方面中,关于不受信任程序的收集的信息包括以下至少一者: (i)关于不受信任程序的唯一用户的信息,(ii)从不受信任程序由用户的第一次已知执行起的时间,(iii)不受信任程序的名称,以及(iv)储存装置内的不受信任程序的位置。
在一个示例性方面中,该方法还包括:当在目标进程的分析地址空间中检测到恶意代码时,由防病毒软件通过将由可执行代码调用的函数的地址与载入目标进程的地址空间中的函数的地址相比较来确定可由恶意代码执行的系统函数。
在一个示例性方面中,该方法还包括:由防病毒软件生成用于不受信任程序的控制规则,其阻止不受信任程序产生可由检测恶意代码执行的系统函数的调用。
在一个示例性方面中,该方法还包括:当在目标进程的分析的地址空间中检测到恶意代码时,由防病毒软件指定为对应于具有其地址空间中的具有恶意代码的目标进程的不受信任程序。
在一个示例性方面中,该方法还包括:当在目标进程的分析的地址空间中检测到恶意代码时,由防病毒软件确定由恶意代码使用的URI;以及由防病毒软件生成包含由恶意代码使用的确定的URI的至少一部分的防病毒记录。
一种用于检测随机存取存储器中的恶意代码的示例性系统:硬件处理器,其配置成:检测计算机上的不受信任程序的进程;识别由不受信任程序的进程进行的函数调用,包括由进程产生的到目标进程的进程间函数调用;确定是否执行经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间的代码的恶意软件分析;以及当确定执行恶意软件分析时,使用可由硬件处理器执行的防病毒软件来分析经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中的代码。
本发明的示例性方面的以上简化的概述用于提供本发明的基本理解。该概述不是所有构想的方面的宽泛综述,且旨在既然识别所有方面的关键或重要元素,又不划出本发明的任何或所有方面的范围。其唯一目的在于以简化形式提出一个或多个方面作为之后的本发明的更详细描述的前序。为了实现上述内容,本发明的一个或多个方面包括权利要求中描述和特别指出的特征。
附图说明
并入且构成本说明书的一部分的附图示出了本发明的一个或多个示例性方面,且连同详细描述用于阐释其原理和实施方式。
图1示出了用于检测随机存取储存器中的恶意代码的示例性系统的框图。
图2A和2B示出了随机存取存储器中的恶意代码的示例性检测方法的流程图。
图3示出了系统和方法的公开方面可借助于其实施的通用计算机系统的实例。
具体实施方式
本发明的示例性方面在此在用于检测随机存取存储器中的恶意代码的系统、方法和计算机程序产品的背景下描述。本领域的普通技术人员将认识到以下描述仅为示范性的,且不旨在以任何方式进行限制。受益于本公开内容的本领域的技术人员对于其它方面自身将是容易受到启示。现在将详细参照如附图中所示的示例性方面的实施方式。相同的参考指示符将在附图和以下描述各处可能的程度用于表示相同或相似的项目。
恶意代码(或程序或应用)可为引起对计算机或计算机用户的损害的计算机指令,如,网间蠕虫、键盘记录器或计算机病毒。引起的损害可为出于窃取其的目的、对包括储存在计算机上的数据的计算机资源的未授权访问,以及包括用于数据储存、执行计算等的资源的未授权使用。
签名分析可为搜索分析的程序的代码的给定节段与来自恶意软件的签名库的已知代码或签名之间的匹配的技术,以用于检测恶意程序的目的。应当注意的是,该技术可用于检测计算装置的随机存取存储器中的恶意程序和恶意代码的两种文件。
函数调用的环境(context)可为关于函数调用的信息,至少包括以下调用属性:函数的名称、函数运算对象的值(如果运算对象为存储器中的地址,则环境还可包括函数的对应运算对象涉及的存储器中的数据块,如,100字节中的一个)、函数的调用地址(可从函数的返回地址计算)、执行对函数的调用的线程的标识符 (线程ID)、执行对函数的调用的线程的描述符(线程句柄),以及对函数的调用将在其内发生的进程的描述符(进程句柄)。
受信任的应用可为不会引起对计算装置或其用户的损害的应用。人们可将受信任的应用认作是由受信任软件制造者开发的从受信任源下载的应用,或其标识符(如,应用文件的MD5)储存在受信任应用库中的应用(制造者的标识符,如,证书,也可储存在受信任应用库中)。
不受信任的应用可为不受信任,而且例如通过使用安全应用并未识别为恶意的应用。
不受信任的进程可为从不受信任的应用开始的进程。
探试分析可为涉及对分析的程序的执行仿真、创建由程序产生的API函数调用的记录和搜索创建的API函数调用的记录与由已知恶意程序产生的函数调用库之间的匹配,以便确定分析程序是否是恶意的技术。
注入的数据可为由一个进程的一个线程写入另一个进程的地址空间中的数据(包括由用于处理器的指令构成的可执行代码)。
关于应用的数据可为描述应用(以及还为从应用开始的进程)的信息,包括应用的可执行文件和其它组成部分(例如,多媒体源、配置文件等)。关于应用的数据还可至少包括应用的名称(且因此从应用产生和运行的进程的名称)、进程的启动目录、运行应用的唯一用户的数目以及从应用的第一次已知执行起过去的时间。
进程间通信函数可为用于执行另一进程(不是给定函数从其调用的一个)的地址空间(有时称为"来自地址空间")中的代码的系统函数(如,Windows API函数),如,CreateRemoteThread、SetThreadContext、NTQueueApcThread或 ResumeRemoteThread,以及用于注入将由另一进程(如,WriteProcessMemory)执行的代码的函数。进程间通信函数调用的目标可为进程(目标进程),且进程间通信函数调用的环境将包含数据的写入(例如,将利用函数WriteProcessMemory完成)发生在目标进程的地址空间中,或控制转移发生至作为进程间通信函数调用的目标的进程的地址空间存在的可执行代码的参数(argument)的该值。
代码的功能性可为可在代码的执行期间执行的多个系统调用。
图1示出了用于检测计算装置的随机存取存储器中的恶意代码的示例性系统。图1中示意性示出的计算装置100,其详图将在图3中给出,可为个人计算机(为了简单起见,"计算机")、移动计算装置(如,智能电话或笔记本计算机),或还可为由上述装置构成的分布式计算机网络。计算装置100可具有在其上安装和运行的至少一个应用110(程序或软件)。应用110可由计算装置100的使用者使用,例如,以查看网页、收听音频文件或与因特网交互。除上文所述的应用110 之外,计算装置100可具有安装在其上的安全应用120(如,防病毒应用),其设计成保护计算装置100和其用户免受恶意程序影响。为了执行保护计算装置100的任务,安全应用120可包括一定数目的模块(未示出),如,签名分析模块、探试分析模块和记录模块。
在一个示例性方面中,记录模块设计成拦截系统调用或对系统函数(如, WinAPI函数)的调用,其由计算装置100上的各种进程执行,且还设计成保存这些函数调用的环境。例如,当使用Windows系列的操作系统时,记录模块通过安装过滤器驱动程序(加至用于与装置交互的驱动程序组的驱动程序)来拦截函数调用。为了实现该途径,可使用过滤器管理器,其中加载了执行记录模块的功能逻辑的驱动程序。
在一个示例性方面中,计算装置100还可包括应用控制模块130。应用控制模块130设计成控制应用110的启动和执行。在一个示例性方面中,应用控制模块130按管理其在不同情形(如,控制上述软件的动作)中的性能的规则("应用控制规则"或"控制规则")操作。例如,此控制规则可在不同应用110以及来自不同组的应用的启动和执行时指定模块130的操作。应用组可包括但不限于:受信任的软件、恶意软件、不受信任的软件。在一个示例性方面中,控制规则可包括但不限于:防止恶意软件的启动;允许仅受信任软件的启动(默认拒绝规则);以及允许不在恶意软件组中的软件的启动。
在一个示例性方面中,如果应用110并未由安全应用120根据一个检测的恶意程序的方法(例如,签名或探试)识别为恶意的以及应用110也并未识别为受信任的,则安全应用120确定特定应用110属于不受信任的应用组。如果可存在为安全应用120的一部分或在远程安全服务器(图1中未示出)上的受信任应用库包含应用110(如,检查和MD5)的标识符,则继而又承认应用110是受信任的。
在一个实例中,进程1140可为从不受信任应用创建的进程。安全应用120 借助于记录模块拦截进程1 140的执行的过程中调用的函数,包括进程间通信函数。应当注意的是,安全应用120可配置成拦截所有应用110(不仅是不受信任的那些)的函数调用。安全应用120还可配置成确定用于拦截的函数调用(包括用于进程间通信函数的那些)的函数调用的环境。
除调用的环境之外,安全应用120可配置成收集关于用于拦截函数的进程调用从其开始的应用110的数据。在一个示例性方面中,为了获得关于应用110的数据,安全应用120可收集远程安全服务器(未示出),其响应于由安全应用 120(如,检查和MD5)传输的应用110的标识符,可将关于应用的以下数据发送至安全应用120:启动应用的唯一用户的数目的信息,以及从应用的第一次已知启动起过去的时间。为了此信息在安全服务器上可用,安全应用120在启动应用 110时继而又将对应的消息(连同应用的标识符)发送至安全服务器。在一个示例性方面中,关于应用110的数据可包括但不限于关于计算装置内的应用110的位置的信息(例如,至应用的对应文件的路径)。
一方面,应用110上的数据可由安全应用120收集直至检测到不受信任的进程的时刻。在此情况中,例如,安全应用120可收集安装在背景中的计算装置上的各个应用110上的上述数据。另一方面,安全应用120可在其认作是不受信任的之后收集关于应用110的数据。
除包含在调用的环境中的调用的上述属性之外,安全应用120能够确定各个拦截函数调用的附加调用属性(包括对进程间通信函数的调用):目标进程的名称 (可使用目标进程的标识符作为函数调用的参数来确定);写入目标进程的地址空间中的存储块的尺寸;写入目标进程的地址空间(例如,对于Windows系列的OS,其可通过在PE标题(MZ签名)、DOS标题等的结构的存储块中查看来找出)中的存储块(注入的数据块)中的可执行文件(如,Windows系列的OS的PE标题、Unix 系列的OS的ELF标题或OS安卓的DEX标题)的标题的存在;目标进程是否是受信任进程;进程间通信函数是否执行为动态库的代码预留的区域中的目标进程的可执行代码的控制转移。
在一个示例性方面中,进程2 150为用于进程间通信函数的调用的目标进程,其从进程1 140的地址空间调用。图1示出了进程2 150的地址空间的表示的实例。如可从图1看到那样,所述地址空间包含属于进程2 150的数据,如,可执行代码;堆存储区域;使用的库的可执行代码等。该数据示为"进程2数据"。同时,进程2 150的地址空间还可包含"注入数据",其是进程1 140借助于进程间通信函数写入进程2 150的地址空间中的数据。
图2A和2B示出了随机存取存储器中的恶意代码的示例性检测方法。在步骤201中,安全应用120检测从一个应用110启动的不受信任进程(进程1 140)。在步骤202,安全应用120收集关于进程1 140从其启动的应用110(其是不受信任的)。接下来,在步骤203中,安全应用120借助于记录模块拦截来自进程1 140 的地址空间的至少一个进程间通信函数的调用,拦截的函数调用的目标为进程2 150。在步骤204中,安全应用120确定在之前步骤中拦截的至少一个进程间通信函数调用的属性。进程间通信函数调用指出了进程1 140试图执行来自进程2 150的地址空间的某种代码,或将该可执行代码注入(写入)进程2 150的地址空间中。在步骤205中,安全应用120确定分析进程间通信函数调用的目标进程的地址空间中的代码的需求。在一个示例性方面中,上述存储器区域中的代码为可执行代码。在又一个示例性方面中,上述存储器区域中的代码为储存在存储器中的任何二进制数据。
分析属于目标进程的存储器区域中的代码(进程的地址空间中的代码,其为进程间通信函数调用的目标)的需求可借助于探试规则确定,其应用于关于启动不受信任的进程1 140的应用110的收集数据以及还应用于至少一个进程间通信函数调用的属性确定是否需要分析目标进程的地址空间中的代码。在一个示例性方面中,上述探试规则可为以下:
1.如果包含PE标题的数据块写入目标进程中,则必须分析代码;
2.如果从目录"应用数据"(在Windows OS中,该目录的完整路径包含在 "APPDATA"环境变量中)启动的进程将数据注入受信任目标进程,则必须分析代码;
3.如果从"Temp"目录(在Windows OS中,该目录的完整路径包含在"TEMP" 环境变量中)启动的进程将数据注入受信任目标进程中,则必须分析代码;
4.如果从对应于桌面的目录启动的进程将数据注入受信任目标进程,则必须分析代码;
5.如果进程将数据注入受信任系统进程(如,具有名称"svchost"、"csrss"、 "winlogon"、"rundll"或"iexplorer"的那些),则必须分析代码;
6.如果进程调用函数"NTQueueApcThread",同时函数的参数涉及受信任的目标进程,则必须分析代码;
7.如果进程将数据注入目标进程中,同时进程和目标进程的名称重合,且启动进程从其启动的应用的唯一用户的数目并未超过阈值(如50),且从进程从其启动的应用的第一次已知启动起过去的时间并未超过阈值(如,1天),则必须分析代码。
应当注意的是,规则2,3和4可组合成"如果从之前确定的目录启动的进程将数据注入受信任目标进程中,则必须分析代码"的单个规则。实际上,注入数据的进程是受信任的,人们由此得出从其启动的应用110是受信任的应用。
如果分析代码的需求根据步骤205中的上述探试规则中的一个确定,则在步骤206中,安全应用120可执行属于数据进程间通信函数调用(目标进程的地址空间)的目标进程的存储区域中的代码的分析,以便检测恶意代码。在一个示例性方面中,代码分析的已知方法可在该步骤期间使用,例如,如,签名和/或探试分析。如果发现代码不是恶意的,则分析在步骤209中结束。
但是,如果恶意代码在步骤206中检测到,则在步骤207中,安全应用120 确定在步骤206中识别为恶意的代码的功能性。在一个示例性方面中,代码功能性可借助于安全应用120通过比较从可执行代码调用的函数的地址和载入进程的地址空间中的函数的地址来确定(在注入进程的地址空间的代码的功能性的环境中,这意味着载入该相同目标进程的地址空间中的库)。基于比较的结果,安全应用120确定代码功能性(系统函数的集合,其可从识别为恶意的代码调用)。在步骤209中,安全应用120生成用于应用控制模块130的至少一个应用控制规则。在一个示例性方面中,安全应用120生成应用控制规则,使得对于启动目标进程的应用禁止组成恶意代码的功能性的系统函数的调用。在又一个示例性方面中,安全应用120生成应用控制规则,由此应用控制规则130请求组成目标进程从其启动的应用的恶意代码的功能性的系统函数调用的用户确认。在步骤209中生成应用控制规则之后,安全应用120将所述应用控制规则发送至应用控制模块130,且在步骤210中,应用控制模块根据生成的应用控制规则使用。
在一个示例性方面中,当恶意代码在步骤206中检测到时,安全应用120可停止恶意代码注入其中的其地址空间的目标进程的执行。在又一个示例性方面中,当恶意代码在步骤206中检测到时,安全应用120可从目标进程的地址空间除去恶意代码。在另一个示例性方面中,安全应用120可将执行对进程间通信函数的调用的进程从其启动的应用100除去或置于隔离区中。
在一个示例性方面中,在步骤206中检测到恶意代码之后,安全应用120可生成应用控制模块130的应用控制规则,由此,目标进程从其启动的应用110由应用控制模块130置于不受信任的应用列表中(例如,通过改变对应于受信任应用库中的应用110的标识符的记录)。如上文所述,应用控制模块130配置成控制应用110的启动和执行,包括不受信任的应用。在一个示例性方面中,应用控制模块130可阻止不受信任的应用的启动。在又一个示例性方面中,应用控制模块130可阻止与远程资源(如,站点)的建立连接的所有尝试,直到计算装置100 的用户允许建立此连接。
在又一个示例性方面中,在步骤206中检测到恶意代码之后,安全应用120 可确定由恶意代码使用的至少一个统一的资源标识符(URI)。URI的检测(确定) 可通过分析包含恶意代码的进程的地址空间来执行。在一个示例性方面中,安全应用120通过搜索可能的URI的字符串表示(如,远程资源的地址 "http://******.com/****"或文件系统内的资源"file://****")来确定URI。在又一个示例性方面中,安全应用120可将操作系统(如,Windows OS)的寄存器中的地址确定为URI。在一个示例性方面中,安全应用120可通过目标进程的地址空间执行对对应URI的搜索。在又一个示例性方面中,搜索可从恶意代码的启动起在不大于一个特定字节值(如,不大于1000字节)的地址空间的部分中完成。在又一个示例性方面中,搜索可在用作组成恶意代码的指令的参数的地址附近(如,100字节)内完成。资源包括可通过使用URI涉及的对象,此资源是:文件、站点、寄存器参数等。
如果发现URI,则安全应用120可生成对应的防病毒记录来记住确定的 URI(或例如由URI的字符串表示计算的哈希)。继而,防病毒记录由安全应用120 使用,使得安全应用120可阻止(限制)从计算装置100到具有包含在防病毒记录中的URI(或其哈希)的资源的访问。在一个示例性方面中,安全应用120可将创建的防病毒记录发送至远程安全服务器,其继而又可将防病毒记录分配至许多其它计算装置,计算装置运行安全应用120,以便随后使用。
在一个示例性方面中,安全应用120可生成并非用于所有确定的URI,而是仅用于缺乏受信任的URI库的那些的防病毒记录,其可为安全应用120的一部分,且其包含受信任的URI列表。受信任的URI包括其访问将不会引起对计算装置 100或其用户的损害(例如,损害的实例可为恶意软件的加载和/或启动)的URI。在一个示例性方面中,储存在受信任的URI库中的URI的列表可在远程安全服务器上例如借助于计算机安全的专业人员生成,且发送至安全应用120,以用于随后储存和使用。
图3示出了公开的系统和方法可在其上实施的通用计算机系统(其可为个人计算机或服务器)的实例。如图所示,计算机系统包括中央处理单元21、系统存储器22和连接各种系统构件(包括与中央处理单元21相关联的存储器)的系统总线23。系统总线23实现为从现有技术中获知的任何总线结构,继而又包括总线存储器或总线存储器控制器、外围总线和本地总线,其能够与任何其它总线构架交互。系统存储器包括永久性存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26包括确保信息在个人计算机20的元件之间传输的基本进程,如,借助于ROM24加载操作系统时的那些。
个人计算机20继而又包括用于读取和写入数据的硬盘27、用于在可移动的磁盘29上读取和写入的磁盘驱动器28以及用于在可移动的光盘31上读取和写入的光学驱动器30,如,CD-ROM、DVD-ROM和其它光学信息介质。硬盘27、磁盘驱动器28和光学驱动器30分别穿过硬盘接口32、磁盘接口33和光学驱动器接口34连接到系统总线23上。驱动器和对应的计算机信息介质为用于个人计算机20的计算机指令、数据结构、程序模块和其它数据的储存的功率独立模块。
本公开内容提供了使用硬盘27、可移动磁盘29和可移动光盘31的系统的实施例,但应当理解的是,有可能使用其它类型的计算机信息介质56,其能够储存可由计算机可读的形式的数据(固态驱动器、闪速存储卡、数字盘、随机存取存储器(RAM)等),其经由控制器55连接到系统总线23上。
计算机20具有保存记录的操作系统35的文件系统36,以及附加的应用37、其它程序模块38和程序数据39。用户能够通过使用输入装置(键盘40、鼠标42) 将命令和信息输入个人计算机20中。其它输入装置(未示出)可使用:麦克风、操纵杆、游戏控制器、扫描仪等。此类输入装置通常经由继而又连接到系统总线上的串行端口46插入计算机系统20中,但它们可以以其它方式连接,例如,借助于并行端口、游戏端口或通用串行总线(USB)。显示器47或其它类型的显示装置也通过接口如视频适配器48连接到系统总线23上。除显示器47之外,个人计算机可配备有其它外围输出装置(未示出),如,扬声器、打印机等。
个人计算机20能够在网络环境中使用与一个或多个远程计算机49的网络连接来操作。远程计算机(或多个计算机)49也是具有如图3中所示的个人计算机20 的所述性质中的大部分或所有上述元件的个人计算机或服务器。其它装置也可存在于计算机网络中,如,路由器、网络站点、对等装置或其它网络节点。
网络连接可形成局域计算机网络(LAN)50和广域计算机网络(WAN)。此网络用于企业计算机网络和内部公司网络中,且它们大体上可访问因特网。在LAN 或WAN网络中,个人计算机20通过网络适配器或网络接口51连接到局域网络 50上。当使用网络时,个人计算机20可使用调制解调器54或其它模块来用于提供与广域计算机网络如因特网的通信。可为内部或外部装置的调制解调器54由串行端口46连接到系统总线23上。应当注意的是,网络连接仅为实例,且不必绘出网络的准确构造,即,实际上存在由技术通信模块形成一个计算机与另一个计算机的连接的其它方式。
在各种方面中,本文所述的系统和方法可在硬件、软件、固件或它们的任何组合中实施。如果在软件中实施,则方法可储存为非暂时性计算机可读介质上的一个或多个指令或代码。计算机可读介质包括数据储存器。举例来说但不限制的是,此计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM、闪速存储器或其它类型的电学、磁性或光学储存介质,或可用于传送或储存指令或数据结构形式的期望程序代码且可由通用计算机的处理器访问的任何其它介质。
在各种方面中,本公开内容中以模块的方式描述了系统和方法。如本文使用的术语"模块"是指使用硬件来实施的现实世界的装置、构件或构件布置,例如,如,通过专用集成电路(ASIC)或现场可编程门阵列(FPGA),或作为硬件和软件的组合,如,通过微处理器系统和一组指令来实施模块的功能,其(在执行时)将微处理器系统转换成专用装置。模块还可实施为两者的组合,其中某些功能由硬件单独促进,而其它功能由硬件和软件的组合来促进。在某些实施方式中,模块的至少一部分(且有时全部)可在通用计算机的处理器上执行(如,在以上的图3中更详细描述的那一个)。因此,各个模块均可以以多种适合的配置实现,且不应当限于本文列举的任何特定实施方式。
为了清楚起见,本文并未公开所述方面的所有常规特征。将认识到的是,在本公开内容的任何实际实施方式的发展中,必须进行许多实施方式特有的决定,以便实现开发者特定的目标,且这些特定目标将对于不同的实施方式和不同的开发者变化。将理解的是,此开发努力可能很复杂且耗时,但仍将是受益于本公开内容的本领域的普通技术人员所从事的工程的常规任务。
此外,将理解的是,本文使用的措辞或术语为了描述而非限制的目的,使得本说明书的措辞或术语将由本领域的技术人员鉴于本文提出的教导内容和方针与相关领域中的技术人员的知识组合来理解。此外,不期望说明书或权利要求中的任何用语归于不常见或特殊的意义,除非明确地如此阐明。
本文公开的各种方面包含本文通过图示提到的已知模块的目前和未来的已知的等同物。此外,尽管示出和描述了方面和应用,但受益于本公开内容的本领域的技术人员将清楚的是,比上文提到的更多的改型是可能的,而不会脱离本文公开的发明构想。

Claims (14)

1.一种用于检测计算机上的恶意软件的方法,所述方法包括:
由硬件处理器检测所述计算机上的不受信任程序的进程;
由所述硬件处理器识别由不受信任程序的进程产生的函数调用,包括由所述进程到目标进程的进程间函数调用;
由所述硬件处理器确定是否在经历由不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中执行代码的恶意软件分析,所述确定包括:
由所述硬件处理器收集关于所述不受信任程序的信息;以及
对在识别函数调用的所述进程内收集的信息和关于所述不受信任程序的收集信息应用探试规则以确定是否在所述目标进程的地址空间中执行所述代码的恶意软件分析;以及
当确定执行恶意软件分析时,使用可由所述硬件处理器执行的防病毒软件来分析经历由所述不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中的代码。
2.根据权利要求1所述的方法,其中,识别由所检测到的进程产生的函数调用包括以下一个或多个:
确定所述函数调用的目标进程的标识符;
确定所述目标进程的地址空间中的写入的存储块的大小;
确定所述存储块中的可执行文件的标题的存在;
确定所述目标进程是否是受信任进程;以及
确定进程间函数调用是否在所述计算机的专用于动态链接库的存储区域中的目标进程的可执行代码上转移控制。
3.根据权利要求1所述的方法,其中,关于所述不受信任程序的所收集的信息包括以下至少一者:(i)关于所述不受信任程序的唯一用户的信息,(ii)从所述不受信任程序由用户的第一次已知执行起的时间,(iii)所述不受信任程序的名称,以及(iv)所述计算机的存储装置内的不受信任程序的位置。
4.根据权利要求1所述的方法,其中,所述方法还包括:当在所述目标进程的分析的地址空间中检测到恶意代码时,由所述防病毒软件通过将由所述地址空间中的代码调用的函数的地址与载入所述目标进程的地址空间中的函数的地址相比较来确定可由所述恶意代码执行的系统函数。
5.根据权利要求4所述的方法,其中,所述方法还包括:由所述防病毒软件生成用于所述不受信任程序的控制规则,其阻止所述不受信任程序产生可由所检测到的恶意代码执行所述系统函数的调用。
6.根据权利要求1所述的方法,其中,所述方法还包括:当在所述目标进程的分析的地址空间中检测到恶意代码时,由所述防病毒软件指定为对应于具有其地址空间中的具有恶意代码的目标进程的不受信任程序。
7.根据权利要求1所述的方法,其中,所述方法还包括:
当在所述目标进程的分析的地址空间中检测到恶意代码时,由所述防病毒软件确定由所述恶意代码使用的URI;以及
由所述防病毒软件生成包含由所述恶意代码使用的确定的URI的至少一部分的防病毒记录。
8.一种用于检测计算机上的恶意软件的系统,所述系统包括:
硬件处理器,其配置成:
检测所述计算机上的不受信任程序的进程;
识别由所述不受信任程序的进程进行的函数调用,包括由所述进程产生的到目标进程的进程间函数调用;
确定是否执行经历由所述不受信任程序的进程产生的进程间函数调用的目标进程的地址空间的代码的恶意软件分析,所述确定是通过由所述硬件处理器收集关于所述不受信任程序的信息并且对在识别函数调用的所述进程内收集的信息和关于所述不受信任程序的收集信息应用探试规则以确定是否在所述目标进程的地址空间中执行所述代码的恶意软件分析来实现的;以及
当确定执行恶意软件分析时,使用可由所述硬件处理器执行的防病毒软件来分析经历由所述不受信任程序的进程产生的进程间函数调用的目标进程的地址空间中的代码。
9.根据权利要求8所述的系统,其中,识别由所述检测到的进程进行的函数调用包括以下一个或多个:
确定所述函数调用的目标进程的标识符;
确定所述目标进程的地址空间中的写入的存储块的大小;
确定所述存储块中的可执行文件的标题的存在;
确定所述目标进程是否是受信任进程;以及
确定进程间函数调用是否在所述计算机的专用于动态链接库的存储区域中的目标进程的可执行代码上转移控制。
10.根据权利要求8所述的系统,其中,关于所述不受信任程序的所述收集信息包括以下至少一者:(i)关于所述不受信任程序的唯一用户的信息,(ii)从所述不受信任程序由用户的第一次已知执行起的时间,(ii)所述不受信任程序的名称以及(iv)所述计算机的存储装置内的不受信任程序的位置。
11.根据权利要求8所述的系统,其中,所述处理器还配置成:当恶意代码在所述目标进程的分析的地址空间中检测到时,由所述防病毒软件通过将由所述地址空间中的代码调用的函数的地址与载入所述目标进程的地址空间中的函数的地址相比较来确定可由所述恶意代码执行的系统函数。
12.根据权利要求11所述的系统,其中,所述处理器还配置成:由所述防病毒软件生成用于所述不受信任程序的控制规则,其阻止所述不受信任程序进行可由所检测到的恶意代码执行所述系统函数的调用。
13.根据权利要求8所述的系统,其中,所述处理器还配置成:当在所述目标进程的分析的地址空间中检测到恶意代码时,由所述防病毒软件指定为对应于具有其地址空间中的恶意代码的目标进程的不受信任程序。
14.根据权利要求8所述的系统,其中,所述处理器还配置成:
当恶意代码在所述目标进程的分析的地址空间中检测到时,由所述防病毒软件确定由所述恶意代码使用的URI;以及
由所述防病毒软件生成包含由所述恶意代码使用的所述确定的URI的至少一部分的防病毒记录。
CN201610066763.5A 2015-06-30 2016-01-29 用于检测随机存取存储器中的恶意代码的系统及方法 Active CN105760787B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2015125972 2015-06-30
RU2015125972/08A RU2589862C1 (ru) 2015-06-30 2015-06-30 Способ обнаружения вредоносного кода в оперативной памяти
US14/951,915 2015-11-25
US14/951,915 US9407648B1 (en) 2015-06-30 2015-11-25 System and method for detecting malicious code in random access memory

Publications (2)

Publication Number Publication Date
CN105760787A CN105760787A (zh) 2016-07-13
CN105760787B true CN105760787B (zh) 2019-05-31

Family

ID=55024907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610066763.5A Active CN105760787B (zh) 2015-06-30 2016-01-29 用于检测随机存取存储器中的恶意代码的系统及方法

Country Status (1)

Country Link
CN (1) CN105760787B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2637997C1 (ru) * 2016-09-08 2017-12-08 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного кода в файле
CN107016286B (zh) * 2016-12-30 2019-09-24 深圳市安之天信息技术有限公司 一种基于随机跟踪的恶意代码随机化识别方法及系统
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
RU2697954C2 (ru) * 2018-02-06 2019-08-21 Акционерное общество "Лаборатория Касперского" Система и способ создания антивирусной записи
JP7000978B2 (ja) * 2018-05-01 2022-01-19 コニカミノルタ株式会社 画像処理装置および制御プログラム
CN109144616A (zh) * 2018-09-30 2019-01-04 珠海市君天电子科技有限公司 一种检测反射式动态链接库文件的方法及装置
CN113742659A (zh) * 2021-08-09 2021-12-03 航天信息股份有限公司 一种应用程序防护方法、装置、电子设备和存储介质
CN113569244B (zh) * 2021-09-18 2021-12-03 成都数默科技有限公司 一种基于处理器跟踪的内存恶意代码检测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982283A (zh) * 2012-11-27 2013-03-20 蓝盾信息安全技术股份有限公司 一种杀死受保护的恶意计算机进程的系统及方法
CN103559439A (zh) * 2013-11-19 2014-02-05 浪潮(北京)电子信息产业有限公司 一种缓冲区溢出检测方法及系统
CN103679032A (zh) * 2013-12-13 2014-03-26 北京奇虎科技有限公司 防御恶意软件的方法和装置
CN103886252A (zh) * 2013-04-26 2014-06-25 卡巴斯基实验室封闭式股份公司 受信进程地址空间中执行的软件代码的恶意性的选择评估

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8136155B2 (en) * 2003-04-01 2012-03-13 Check Point Software Technologies, Inc. Security system with methodology for interprocess communication control
US9465936B2 (en) * 2013-11-06 2016-10-11 Bitdefender IPR Management Ltd. Systems and methods for detecting return-oriented programming (ROP) exploits

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982283A (zh) * 2012-11-27 2013-03-20 蓝盾信息安全技术股份有限公司 一种杀死受保护的恶意计算机进程的系统及方法
CN103886252A (zh) * 2013-04-26 2014-06-25 卡巴斯基实验室封闭式股份公司 受信进程地址空间中执行的软件代码的恶意性的选择评估
CN103559439A (zh) * 2013-11-19 2014-02-05 浪潮(北京)电子信息产业有限公司 一种缓冲区溢出检测方法及系统
CN103679032A (zh) * 2013-12-13 2014-03-26 北京奇虎科技有限公司 防御恶意软件的方法和装置

Also Published As

Publication number Publication date
CN105760787A (zh) 2016-07-13

Similar Documents

Publication Publication Date Title
CN105760787B (zh) 用于检测随机存取存储器中的恶意代码的系统及方法
US10242186B2 (en) System and method for detecting malicious code in address space of a process
Sood et al. Targeted cyber attacks: multi-staged attacks driven by exploits and malware
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
EP2955658B1 (en) System and methods for detecting harmful files of different formats
Alazab et al. Analysis of malicious and benign android applications
Hassanshahi et al. Web-to-application injection attacks on android: Characterization and detection
Meng et al. A survey of Android exploits in the wild
CN106326737B (zh) 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法
KR20200052957A (ko) 보안 제어 방법 및 컴퓨터 시스템
BR102015017215A2 (pt) método implementado em computador para classificação de aplicativos móveis, e, programa de computador codificado em um meio de armazenamento não-trasitório
RU2697950C2 (ru) Система и способ выявления скрытого поведения расширения браузера
CN109558207A (zh) 在虚拟机中形成用于进行文件的防病毒扫描的日志的系统和方法
Druffel et al. Davinci: Android app analysis beyond frida via dynamic system call instrumentation
Borzacchiello et al. Reconstructing C2 servers for remote access trojans with symbolic execution
Hei et al. Two vulnerabilities in Android OS kernel
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
Bakhshi et al. A Review of IoT Firmware Vulnerabilities and Auditing Techniques
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
US11620129B1 (en) Agent-based detection of fuzzing activity associated with a target program
CN110659478A (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
Park et al. A-pot: a comprehensive android analysis platform based on container technology
Gupta et al. Developing a blockchain-based and distributed database-oriented multi-malware detection engine
Smolka et al. Fuzz on the Beach: Fuzzing Solana Smart Contracts
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant