CN103150507B - 用于检测未知打包器和加密器的系统和方法 - Google Patents
用于检测未知打包器和加密器的系统和方法 Download PDFInfo
- Publication number
- CN103150507B CN103150507B CN201310053734.1A CN201310053734A CN103150507B CN 103150507 B CN103150507 B CN 103150507B CN 201310053734 A CN201310053734 A CN 201310053734A CN 103150507 B CN103150507 B CN 103150507B
- Authority
- CN
- China
- Prior art keywords
- higher level
- packing device
- encryption equipment
- storage
- address
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
公开了用于检测未知打包器和加密器的系统、方法以及计算机程序产品。示范性方法包括对由未知打包器或加密器所修改的软件对象的执行进行仿真;收集关于在仿真期间所实施的存储器操作的信息;将关于多个相关存储器操作的信息结合为至少一个的存储器操作序列集;从至少一个的相关存储器操作序列集中识别与所仿真对象的解包或解密相关联的一个或多个高级操作;以及基于该一个或多个高级操作生成将被用于检测该未知打包器或加密器的该未知打包器或加密器的记录。
Description
相关申请的交叉引用
本申请根据美国法典第35篇119(a)-(d)要求享有于2010年2月24日提交的、申请号为2012106466的俄罗斯申请的优先权,其通过援引并入本文。
技术领域
本公开总地涉及计算机安全领域,并且,更具体地,涉及用于检测用来隐藏恶意软件的未知打包器和加密器的系统、方法和计算机程序产品。
背景技术
计算机和互联网技术方面的发展不断影响着人类社会和我们的生活方式。个人计算机、笔记本电脑、平板电脑、智能手机和其他通信设备提供了对世界各地的信息的即时访问。电子邮件、即时通讯、IP电话和社交网络允许人们相互交流和分享信息。然而,计算机和通信技术方面的进步已加剧了诸如病毒、蠕虫、特洛伊木马等计算机恶意软件的出现和蔓延,网络罪犯出于各种恶意目的对其加以使用。
典型的恶意活动的范围从平庸的流氓行为到严重的网络犯罪,诸如从银行账户里盗窃金融资产,甚至反国家的网络恐怖主义。并且,网络罪犯不断地开发新的用于在计算机系统上部署恶意软件的方法。例如,网络罪犯积极地使用新的漏洞并利用社交工程方法,该方法由于社交网络和其它通信工具的发展,在病毒编写者之间已经特别受欢迎。网络罪犯也不断地寻找新的方式以规避安全和反病毒应用程序。
目前研究中的大多数可执行文件,也包括恶意的可执行文件,是所谓的PE(可移植可执行)文件并具有PE格式(对于Windows家族操作系统来说,大部分恶意软件以该格式写入)。为了使反病毒应用程序在反病毒扫描期间检测不到恶意的可执行文件,病毒编写者采用特殊的应用程序-打包器和加密器-其允许恶意软件可执行文件的代码被压缩、加密和进行其他方面的修改,试图阻挠由反病毒应用程序对恶意软件的检测。
打包器(packer)是使用压缩来减小可执行文件的大小的程序。具体地,在文件打包期间,原始文件的经压缩拷贝和解包程序被写入经压缩文件中。在经压缩文件在用户计算机上启动之后,解包器从归档文件(archive)中提取原始程序代码到系统存储器并将控制权转移给经解包的程序代码。许多解包器从加载在系统存储器中的映像来启动文件并创建文件的经解包版本。然而,如果文件包含病毒,用户计算机将被感染。另外,解包器有若干不同的阻止由反病毒应用程序对恶意代码进行检测的方式,例如,通过当文件启动时仅部分解包代码。
加密器是加密可执行文件以隐藏它们的功能躲避诸如启发式和签名分析器的反病毒扫描引擎的程序。例如,凭借加密器,原始的程序文件被加密并且代码被写入它的头部,一旦启动,其实施解密并执行经解密的程序。最简单的例子是在经加密和受密码保护的归档文件中的病毒或特洛伊木马应用程序的蔓延,其不会被反病毒程序检测到。
很难使用传统检测技术检测到经打包的和/或经加密的恶意软件。因此,用于检测经打包的/经加密的恶意软件的机制是必要的。
发明内容
公开了用于检测未知打包器或加密器的系统、方法和计算机程序产品。在一个示范性实施例中,方法包括:仿真由未知打包器或加密器所修改的软件对象的执行;收集关于在仿真期间所实施的存储器操作的信息;将关于多个相关存储器操作的信息结合为至少一个的存储器操作序列集;从至少一个的相关存储器操作序列集中识别与所仿真对象的解包或解密相关联的一个或多个高级操作;以及基于该一个或多个高级操作生成将被用于检测该未知打包器或加密器的该未知打包器或加密器的记录。
上述示范性实施例的简要概括用来提供对本发明的基本理解。此概括并非本发明的所有预期方面的宽泛概述,并且既不意图确定所有实施例的重要的或关键的元素也不意图描绘任何或所有实施例的范围。其唯一目的是以简化的形式呈现一个或多个实施例,作为接下来对本发明的更详细的描述的前序。为了实现上述目的,一个或多个实施例包括在权利要求书中所描述和具体指出的特征。
附图说明
附图纳入并构成本说明书的一部分,示出了本发明的一个或多个示范性实施例,并且连同详细描述一起用来解释实施例的原理和实现方案。
在附图中:
图1示出了根据一个示范性实施例的用于检测恶意软件的系统的框图。
图2示出了根据一个示范性实施例的用于检测未知打包器和加密器的系统的详细框图。
图3示出了根据一个示范性实施例的用于检测未知打包器和加密器的方法的流程图。
图4示出了根据一个示范性实施例的计算机系统的框图。
具体实施方式
本文围绕用于检测未知打包器和加密器的系统、方法和计算机程序产品对本发明的示范性实施例进行描述。本领域普通技术人员应该认识到以下描述仅是示例性的且并非意在以任何方式进行限制。得益于本公开的本领域技术人员将很容易地想到其他实施例。现在将详细参考如附图中示出的示范性实施例的实现方案。贯穿附图和下述描述都尽可能使用相同的参考标记来指示相同或相似的项。
图1示出了根据一个示范性实施例的用于检测恶意软件的系统的示意图。系统包括反病毒应用程序120,其包含数个分析模块130,用于针对恶意软件的存在对软件对象110进行仿真和分析。反病毒应用程序120还包括反病毒数据库140,其包含反病毒记录。分析模块130使用反病毒记录来实施软件对象110的反病毒分析。反病毒记录可以包括,例如,恶意软件签名、启发式规则、恶意软件行为算法、和关于恶意软件的其他类型的信息。不同的分析模块130可以使用不同的反病毒记录以分析不同类型的软件对象110,诸如可执行文件、脚本、宏命令、数据文件、电子邮件、URL和其他类型的软件对象。数个分析模块还可以针对恶意软件的存在,共同地或单独地实施对象110的分析。
分析模块130可以包括仿真模块150,其配置为分析经打包的和/或经加密的对象110(以下,称为经修改的对象)。该分析的目的是识别对对象110进行修改的打包器或加密器,以确定经解包的和经解密的对象110的恶意性质,以及识别新类型的打包器和加密器。需要注意的是仿真模块150也可以检查未被打包或加密、但是基于由其它分析模块130检查的结果被认为可疑的对象。
图2示出了用于检测未知打包器和加密器的系统的示意配置。以下所描述的系统设计为检测由未知打包器或加密器所进行的软件对象的修改、分析它们的行为并生成允许这些打包器和加密器将来被检测到的反病毒记录。当由未知打包器或加密器所修改的软件对象210被下载到PC上时,首先使用反病毒应用程序120的仿真模块150对其进行分析。
在一个示范性实施例中,仿真模块150可以包括仿真器220、收集器230和处理器240。应该注意,在其他实施例中仿真器220、收集器230和处理器240不是仿真模块150的一部分,而是作为单独的模块实现。在一个示范性实施例中,仿真器220配置为至少实施以下操作:在安全的虚拟计算机环境中仿真对象210;解包和/或解密经修改的对象210;使用启发式规则针对恶意代码的存在分析经解包/解密的对象210;以及使用恶意软件签名针对恶意的程序代码段的存在搜索对象210。
在一个示范性实施例中,仿真器220能够实施各种已知的仿真机制。这种机制可以是,例如,将程序代码解析为指令并在虚拟环境中模拟它们的执行。仿真机制的一个示范性实施例在共同拥有的的第7,620,992号美国专利中公开,该专利通过援引并入本文。
仿真模块150连接到反病毒数据库140,其包含由反病毒应用程序的分析模块130所使用的各种反病毒记录。此外,反病毒数据库140包含反病毒记录集,所述反病毒记录包含已知打包器和加密器的签名和行为算法。这些记录由仿真器220使用来确定对象是否被已知打包器或加密器修改。
在一个示范性实施例中,反病毒数据库140还包含用来确定所仿真对象210是否被未知打包器或加密器修改的初步反病毒记录。初步反病毒记录指定不同类型的打包器和加密器的某些识别特征。这些识别特征可包括,但不限于,由诸如Kernel32.dll、user32.dll和ntdll.dll的OS模块所使用的存储器区域的读,以及诸如PebLdrData的特定的OS数据结构的读,所述PebLdrData包含关于所有所加载的系统进程模块的信息并且经常被恶意的打包器所使用以隐藏API函数的使用。另外,不同家族的打包器和加密器实施特定的操作,这可被用来识别它们。因此,反病毒数据库140也可以包含对不同类型的打包器和加密器共有的某些特定的操作进行识别的初步反病毒记录,其可以被用来在对象210的仿真期间确定该对象被诸如MPRESS、CExe、UPX、PESpin等的未知打包器或加密器所修改。
在一个示范性实施例中,如果在经修改对象210的仿真期间,仿真器220在所仿真对象210的行为中检测到在初步反病毒记录中所指定的识别特征或操作,所述初步反病毒记录与未知打包器或加密器相联系,那么仿真器220激活收集器230和处理器240并且从开始处重新开始对经修改对象210的仿真。因此,对在初步反病毒记录中所指定的特征或操作的检测触发收集器230开始收集与所仿真对象210的存储器相关操作有关的信息。
当仿真器220重新开始对经修改对象210的仿真时,收集器230将在日志中记录诸如读和写操作的所有存储器相关操作、将所记录的存储器操作结合为一个或多个的相关操作序列集、并且发送这些操作集至处理器240。相关存储器操作序列集下文中将称作操作链。每个操作链由收集器230基于操作的地址构建。若干相似操作可以包括在相同链中。每个操作具有其自己的操作开始地址和其大小(称为地址空间)。当将相关存储器操作结合为链时,收集器230搜索操作的地址空间以找到最合适的操作用于结合为单个操作链。如果两个存储器操作的地址空间相关,那么收集器230可以对这两个存储器操作加以结合。例如,一个操作的开始地址对应于另一个操作的结束地址,或当两个操作访问(例如,读或写)相同地址空间时。
下面给出按照上述原则的,由收集器230所收集并结合的存储器操作的两个示例性链A和B:
A.16871;写;FRWD;(4):地址=40A5D8;大小=26BC0;数据=66EBF2B2B90ACCE8;数据=[0-FFFFFFFF];EIP=[431FBB-431FD2];时间=[3F160-82DEE];API=[4-4]。
B.16870;读;FRWD;(4):地址=40A5D8;大小=26BC0;数据=142DBA9052BD9EFF;数据=[7839-FFFFB9F6];EIP=[431FBD-431FD2];时间=[3F161-82DEE];API=[4-4]。
这两条链包含与实施在相同地址空间(即地址=40A5D8;大小=26BC0)中的存储器操作(即READ(读)和WRITE(写))相关联的数据。这些操作因为实施在相同地址空间中而由收集器230进行结合。链的每一行包含与操作相关联的相似的数据。每条链包含以下数据,按从左到右排列:链的唯一识别符;操作的类型;操作的方向;操作实施于其上的数据元素的大小;操作实施于其上的地址;数据的大小;数据的哈希和;链的最小和最大元素的大小;EIP寄存器的最小和最大地址;在链的存在期限期间所执行的处理器命令的数目;以及在链的存在期限期间所执行的API函数的数目。
处理器240在从收集器230接收到结合为链的数据之后,确定在对象210由仿真器220仿真时的解包或解密期间所实施的高级操作。这样,处理器240确定在对象210的仿真期间,由对对象210进行修改的未知打包器或加密器实施了哪些高级操作。高级操作由处理器240基于对在经修改对象210的执行期间所记录的存储器操作的分析来确定,关于所述经修改对象210的信息被收集器230所收集和结合。高级操作由处理器240基于例如包含在处理器240和/或反病毒数据库140中的启发式规则来确定。处理器240将存储器操作链与启发式规则作比较以识别与所仿真对象210的解包和/或解密相关联的高级操作。这种高级操作和相应的启发式规则可以包括,但不限于:
必须注意,处理器240还能够基于对在对象210的仿真期间所实施的存储器操作的分析来确定精准操作,关于所述对象210的信息由收集器230所收集和结合,而无需使用启发式规则。这样的精准操作可能包括,但不限于如下这些操作:
●跳转(branch)-跳到另一个存储器块;
●分配(alloc)-为操作分配存储器;
●释放(free)-存储器的释放;
●加载(load)-模块或库的加载。
括号里的参数包括由处理器240用来进一步处理所获得的存储器操作链的高级操作的名称。
处理器240基于存储器操作链来确定在对象210仿真时的解包或解密期间实施了哪些高级操作并以下述表达式的形式呈现所处理的数据:
address:operation(dst,dst_size,src,src_size,op_size,direction,type);<weight>,
其中address是高级操作的地址;operation是高级操作的名称;dst是接收方数据数组的地址;dst_size是接收方数据数组的大小;src是源数据数组的地址;src_size是源数据数组中的数据的大小;op_size是等于数组的一个元素大小的操作的大小;direction是数据数组处理的方向;type是表征操作的标志;以及weight是为处理数据数组的一个元素所使用的处理器命令的平均数目。
必须注意,上述表达式格式仅是示例性的。可选地,表达式可以被限制为仅描述高级操作的数据。
在一个示范性实施例里,上述表达式中的address参数可以以存储器区域的地址和其中的位移的结合的形式加以呈现。可以使用下列变量之一来指派存储器区域:image-在正被仿真的主文件下的存储器模块;mem–所分配的存储器;以及mod-所加载的模块和库。可以使用下列变量之一来表明上述表达式中数据参数的大小:byte(字节)、word(字)、dword(双字)、和qword(四字)。事件的direction可以由下列变量指派:FRWD-向前;和BKWD-向后。表征操作的flag可以由下列变量指派:DFLT-普通事件;POLY-要求大量指令的事件;API-被隐藏的事件,例如,在解密期间的API函数调用。
使用上述示例性的表达式格式,处理器240可以从示例性的操作链A和B中生成下列表达式:
image+0x00031FBD:decrypt(image+0x0000A5D8,image+0x0000A5D8,0x00026BC0,DWORD,FRWD,DFLT);<000007>
因此,在处理所有由收集器230所提供的存储器操作链之后,处理器240将生成显示在对象210仿真时的解包或解密期间所实施的高级操作的顺序的表达式序列。也就是说,这一表达式序列描述了用来对对象210进行修改的未知打包器或加密器的行为。例如,处理器240可以为UPX(用于可执行文件的最终打包器)打包器生成以下的三个表达式序列:
Image+0х0083A180:unpack(image+0х00001000,0x008384F6,image+0x0048C000,0x003AE15D);<000033>
Image+0х0083A256:filter(image+0x00001000,0x00745C1C);<000005>
Image+0х0083A281:import(image+0x00001000,image+00836000,0x00003328);<000024>
接下来,处理器240将描述未知打包器或加密器的行为的表达式集提供给求解模块250。在一个示范性实施例里,求解模块250可以不是部署于用户PC上的反病毒应用程序120的一部分,而可以由反病毒开发商的服务器提供。在从处理器240接收到描述未知打包器或加密器的行为的表达式集,也就是关于在对象210的解包或解密期间所实施的高级操作的信息之后,求解模块250能够基于所述打包器或加密器的特征化的高级操作来形成可用于检测对象由打包器或加密器所进行的修改的记录(例如,反病毒记录)。为了快速检测未知打包器或加密器,求解模块250可以使用各种已知的方法以创建记录。例如,可以通过在表达式集中以问号取代特定地址位置来从表达式集生成记录,其允许基于操作的相似性来检测打包器而不管它们的特定地址。使用这一技术,求解模块250可以从基于链A和B所形成的表达式(如上所述)中生成下列记录:
image+0x000?????:decrypt(image+0x0000????,image+0x0000????,0x000?????,DWORD,FRWD,DFLT);<00000?>
其他用于生成记录的技术可以用在本发明的其他实施例中。
在一个示范性实施例中,人工恶意软件分析员可以分析描述未知打包器或加密器的行为的表达式序列以帮助求解模块250生成记录。例如,人工分析员可以负责基于描述未知打包器或加密器的行为的表达式序列来形成用于检测未知打包器或加密器的记录。
图3示出了用于检测未知打包器或加密器的系统的操作的算法。系统的基本目标是检测对象210由未知打包器或加密器所进行的修改,分析该未知打包器或加密器的行为,以及随后推导用于检测该打包器或加密器的记录。系统的操作从步骤301开始,在该步骤,仿真模块150的仿真器220对对象210进行仿真并使用包含由反病毒数据库140所提供的签名和/或已知打包器或加密器的行为模式的反病毒记录来针对恶意软件以及已知打包器和加密器的存在对其进行分析。
如前所述,反病毒数据库140也包含初步反病毒记录,其设计为在使用仿真器220对经修改的对象210的执行进行仿真期间,基于特定于打包器或加密器的那些操作,来确定对象210被未知打包器或加密器修改的事实。如果在步骤302,在对经修改的对象210进行仿真期间,初步反病毒记录之一被仿真器220激活,也就是说仿真器220在所仿真对象210的行为中检测到在所激活的初步反病毒记录中所指定的识别特征或者操作,那么在阶段303,仿真器220激活收集器230和处理器240并重新开始对对象210的仿真。在步骤303,收集器230在日志中记录关于在对对象210进行仿真期间所实施的存储器操作的信息。
接下来,在步骤304,收集器230已经将关于检测到的存储器操作的信息记录进日志之后,将相关存储器操作结合为序列操作集--操作链。每条链基于操作的地址来结合操作。若干相似的操作可以包括在相同的链中。如上所解释的,每个操作具有其自己的操作开始地址和其大小(称为地址空间)。当将相关存储器操作结合为链时,收集器230搜索操作的地址空间以找到最合适的操作用于结合为单个操作链。如果两个存储器操作的地址空间以某种方式互相关联,则收集器230可以对它们加以结合。例如,一个操作的开始地址对应于另一个操作的结束地址,或者当两个操作在相同地址空间中进行访问(例如,读或写)时。然后,收集器230将生成的操作链转发给处理器240用于进一步处理。
在步骤305,处理器240分析从收集器230接收到的存储器操作链并识别在所仿真对象210的解包或解密期间所实施的高级操作。在一个示范性实施例里,处理器240基于例如由处理器240或反病毒数据库140所维护的启发式规则来确定实施在所仿真对象210上的高级操作。处理器240将关于与对象210的解包或解密相关联的所识别的高级操作的信息呈现为表达式集,该表达式集显示在对象210的解包或解密期间的高级操作序列。
接下来,在步骤306,处理器240将对用来修改对象210的未知打包器或加密器的行为进行描述的表达式集转发给求解模块250。在从处理器240接收到指示性的表达式集之后,该表达式集确定未知打包器或加密器的行为,即关于在对象210仿真时的解包或解密期间所实施的高级操作集的信息,求解模块250生成反病毒记录,该反病毒记录允许基于所述打包器或加密器的特征化的高级操作来检测未知打包器或加密器。系统的操作在阶段307结束。
图4描绘计算机系统5的一个示范性实施例,其可用来实现用于检测由未知打包器和加密器所修改的恶意软件的系统。如所示的,计算机系统5可以包括由系统总线10所连接的一个或多个处理器15、存储器20、一个或多个硬盘驱动器30、光盘驱动器35、串行端口40、图形卡45、声卡50和网卡55。系统总线10可以是包括使用各种已知总线架构的存储器总线或存储器控制器、外围总线和局域总线的几种类型总线结构的任何一种。处理器15可以包括一个或多个Core2Quad2.33GHz处理器或者其他类型的微处理器。
系统存储器20可以包括只读存储器(ROM)21和随机存取存储器(RAM)23。存储器20可以实现为DRAM(动态RAM)、EPROM、EEPROM、Flash或其他类型的存储器架构。ROM21存储基本输入/输出系统22(BIOS),其包含基本的例程,该例程帮助在计算机系统5的部件之间转移信息,诸如在启动过程中。RAM23存储操作系统24(OS),诸如XP专业版或其他类型的操作系统,其在计算机系统5中负责进程的管理和协调以及硬件资源的分配和共享。存储器20也存储应用程序和程序25,诸如反病毒应用程序130。存储器20也存储由程序25所使用的各种运行时数据26。
计算机系统5可以进一步包括硬盘驱动器30,诸如SATA磁式硬盘驱动器(HDD),和用于对可移动光盘诸如CD-ROM、DVD-ROM或其它光介质进行读出或写入的光盘驱动器35。驱动器30和35及它们相关联的计算机可读介质提供实现本文所公开的算法和方法的计算机可读指令、数据结构、应用程序和程序模块/子例程的非易失性存储。虽然示例性的计算机系统5采用磁盘和光盘,本领域的技术人员应该理解其他类型的可存储由计算机系统5所访问的数据的计算机可读介质,诸如磁带、闪存卡、数字视频光盘、RAM、ROM、EPROM和其他类型的存储器也可以用于计算机系统5的替代实施例中。
计算机系统5进一步包括多个串行端口40,诸如通用串行总线(USB),用于连接数据输入设备75,诸如键盘、鼠标、触摸板和其他。串行端口40也可以用来连接诸如打印机、扫描仪和其他设备的数据输出设备80,以及连接诸如外部数据存储设备等等的其他外围设备85。系统5也可以包括图形卡45,诸如GT240M或其他显卡,用于与监视器60或其他视频再现设备接口。系统5也可以包括用于经由内部或外部扬声器65再现声音的声卡50。此外,系统5可以包括网卡55,诸如以太网、WiFi、GSM、蓝牙或其他有线、无线或蜂窝网络接口,用于将计算机系统5连接到网络70,诸如互联网。
在各种实施例里,本文所描述的算法和方法可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,那么函数可以存储为在非暂时性计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储和通信介质,其有助于计算机程序从一个地方到另一个地方的转移。存储介质可以是可由计算机所访问的任何可用介质。通过示例的方式,而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或任何其他可用于以指令或数据结构的形式承载或存储所需的程序代码并且可被计算机所访问的介质。此外,任何连接都可以被称为计算机可读介质。例如,如果软件是从网站、服务器或其他远程资源使用同轴电缆、光纤电缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术进行传送的,它们被包括在介质的定义里。
为了清晰起见,本文没有公开实施例的所有常规特征。应了解在本发明任何实际的实现方案的开发过程中,必须制定许多特定于实现方案的决策以达到开发者的特定目标,这些特定目标随实现方案的不同以及开发者的不同而改变。应该了解这样的开发工作可能是复杂的和费时的,但是对受益于本公开的本领域技术人员而言,都将是常规的工程任务。
另外,应理解本文所使用的措辞或术语是出于描述而并非限制的目的,以便本领域的技术人员根据本文呈现的教导及指引并结合相关领域技术人员的知识来解读本说明书中的措辞或术语。此外,除非对其明确阐述,在说明书或权利要求中的任何术语都没有被赋予非常规或特殊的意义。
本文所公开的各种实施例包含对本文通过示例的方式提及的已知成分的目前和未来已知的等价物。此外,尽管已经示出和描述了实施例和应用,但对于已受益于本公开的本领域的技术人员来说很明显的是,比上述提到的更多的修改是可能的,而不脱离本文所公开的发明构思。
Claims (8)
1.一种用于检测未知打包器和加密器的计算机实现的方法,所述方法包括:
对由未知打包器或加密器所修改的软件对象用计算机处理器进行仿真;
收集关于在所述仿真期间所实施的存储器操作的信息;
将关于相关存储器操作的信息结合为一个或多个相关存储器操作集,其中每个集包括在它们的地址空间中相关的存储器操作;
由所述计算机处理器比较一个或多个所述相关存储器操作集和关联于解包或解密的高级操作,以识别在所述经仿真的对象上执行所述高级操作的至少一个相关存储器操作集;
基于经识别的至少一个相关存储器操作集,所述存储器操作执行经仿真对象的解包或解密,由所述计算机处理器生成描述执行经仿真的对象的解包或解密的未知打包器或加密器的具体表现的新的反病毒记录,其中生成的新的所述反病毒记录包括表示经识别的所述高级操作的顺序的一个或多个表达式的有序序列,每个表达式识别在经仿真的对象上执行的至少一个高级操作,以及每个高级操作的通用地址空间参数;以及
利用生成的新的所述反病毒记录,由计算机处理器检测另一个由所述未知打包器或加密器修改的软件对象,包括:
获得关于另一个所述软件对象的高级操作的信息;并且
比较包含在新的反病毒记录中的表达式的有序序列和获得的关于高级操作的所述信息,不考虑所述高级操作的关联的存储器地址,以确定另一个所述软件对象是否被所述未知打包器或加密器修改。
2.根据权利要求1所述的方法,其中对由未知打包器或加密器所修改的软件对象进行仿真进一步包括:
检测与所仿真软件对象的解包或解密相关联的一个或多个存储器操作;以及
重新开始对所述软件对象的仿真。
3.根据权利要求1所述的方法,其中相关存储器操作包括下述的一个或多个:
与相同地址空间相关联的两个或更多个存储器操作;以及
一个存储器操作的开始地址对应于另一个存储器操作的结束地址的两个或更多个存储器操作。
4.根据权利要求1所述的方法,其中所收集的关于存储器操作的信息包括下述信息项:所述操作的类型;所述操作的方向;所述操作的范围;所述操作的地址;在所述操作中所涉及的数据的数量;所述数据的哈希和;EIP寄存器的最小和最大地址;在所述数据上所执行的处理器命令的数目;以及与所述数据相关联的API函数的数目。
5.根据权利要求1所述的方法,其中比较一个或多个所述相关存储器操作和关联于解包或解密的高级操作进一步包括:
由计算机处理器比较一个或多个所述相关存储器操作集和描述关联于解包或解密的高级操作的启发式规则。
6.根据权利要求1所述的方法,其中包含在序列表达式中的关于高级操作的信息包括下述信息项:所述高级操作的地址;所述高级操作的名称;接收方数据数组的地址和大小;源数据数组的地址和大小;数据处理的方向;表征所述高级操作的标志;以及为处理所述数据数组的一个元素所使用的处理器命令的平均数目。
7.根据权利要求1所述的方法,其中每个表达式进一步识别包含在每个高级操作中的数据参数的大小和每个高级操作的方向。
8.用于检测未知打包器和加密器的计算机实现的系统,所述系统包括:
存储软件对象的存储器;以及
耦合至所述存储器的处理器并且配置为:
对由未知打包器或加密器所修改的软件对象进行仿真;
收集关于在所述仿真期间所实施的存储器操作的信息;
将关于相关存储器操作的信息结合为一个或多个相关存储器操作集,其中每个集包括在它们的地址空间中相关的存储器操作;
比较一个或多个所述相关存储器操作集和关联于解包或解密的高级操作,以识别在所述经仿真的对象上执行所述高级操作的至少一个相关存储器操作集;
基于经识别的至少一个相关存储器操作集,所述存储器操作执行经仿真对象的解包或解密,生成描述执行经仿真的对象的解包或解密的未知打包器或加密器的具体表现的新的反病毒记录,其中生成的新的所述反病毒记录包括表示经识别的所述高级操作的顺序的一个或多个表达式的有序序列,每个表达式识别在经仿真的对象上执行的至少一个高级操作,以及每个高级操作的通用地址空间参数;以及
利用生成的新的所述反病毒记录,检测另一个由所述未知打包器或加密器修改的软件对象,包括:
获得关于另一个所述软件对象的高级操作的信息;并且
比较包含在新的反病毒记录中的表达式的有序序列和获得的关于高级操作的所述信息,不考虑所述高级操作的关联的存储器地址,以确定另一个所述软件对象是否被所述未知打包器或加密器修改。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2012106466 | 2012-02-24 | ||
RU2012106466/08A RU2491615C1 (ru) | 2012-02-24 | 2012-02-24 | Система и способ формирования записей для обнаружения программного обеспечения |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150507A CN103150507A (zh) | 2013-06-12 |
CN103150507B true CN103150507B (zh) | 2016-07-27 |
Family
ID=46875634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310053734.1A Active CN103150507B (zh) | 2012-02-24 | 2013-02-19 | 用于检测未知打包器和加密器的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8555392B2 (zh) |
EP (1) | EP2631838B1 (zh) |
CN (1) | CN103150507B (zh) |
RU (1) | RU2491615C1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9852290B1 (en) * | 2013-07-12 | 2017-12-26 | The Boeing Company | Systems and methods of analyzing a software component |
US9280369B1 (en) | 2013-07-12 | 2016-03-08 | The Boeing Company | Systems and methods of analyzing a software component |
US9396082B2 (en) | 2013-07-12 | 2016-07-19 | The Boeing Company | Systems and methods of analyzing a software component |
US9336025B2 (en) | 2013-07-12 | 2016-05-10 | The Boeing Company | Systems and methods of analyzing a software component |
US9479521B2 (en) | 2013-09-30 | 2016-10-25 | The Boeing Company | Software network behavior analysis and identification system |
RU2624540C2 (ru) * | 2013-11-25 | 2017-07-04 | Общество с ограниченной ответственностью "Доктор Веб" | Способ обнаружения вредоносных программ для ЭВМ заархивированных по неизвестному алгоритму |
US9355246B1 (en) * | 2013-12-05 | 2016-05-31 | Trend Micro Inc. | Tuning sandbox behavior based on static characteristics of malware |
US9824356B2 (en) | 2014-08-12 | 2017-11-21 | Bank Of America Corporation | Tool for creating a system hardware signature for payment authentication |
US8943598B1 (en) * | 2014-08-12 | 2015-01-27 | Bank Of America Corporation | Automatic compromise detection for hardware signature for payment authentication |
RU2628921C1 (ru) * | 2016-03-18 | 2017-08-22 | Акционерное общество "Лаборатория Касперского" | Система и способ выполнения антивирусной проверки файла на виртуальной машине |
RU2637997C1 (ru) * | 2016-09-08 | 2017-12-08 | Акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносного кода в файле |
US10791138B1 (en) | 2017-03-30 | 2020-09-29 | Fireeye, Inc. | Subscription-based malware detection |
US10798112B2 (en) | 2017-03-30 | 2020-10-06 | Fireeye, Inc. | Attribute-controlled malware detection |
US10848397B1 (en) * | 2017-03-30 | 2020-11-24 | Fireeye, Inc. | System and method for enforcing compliance with subscription requirements for cyber-attack detection service |
RU2659734C1 (ru) * | 2017-07-17 | 2018-07-03 | Акционерное общество "Лаборатория Касперского" | Способ эмуляции исполнения файлов |
CN108959925A (zh) * | 2018-06-22 | 2018-12-07 | 珠海市君天电子科技有限公司 | 一种恶意脚本的检测方法、装置、电子设备及存储介质 |
RU2770570C2 (ru) * | 2020-08-24 | 2022-04-18 | Акционерное общество "Лаборатория Касперского" | Система и способ определения процесса, связанного с вредоносным программным обеспечением, шифрующим файлы компьютерной системы |
US20230385412A1 (en) * | 2022-05-25 | 2023-11-30 | Palo Alto Networks, Inc. | Automatically detecting unknown packers |
CN116361239B (zh) * | 2023-05-24 | 2023-07-28 | 成都交大光芒科技股份有限公司 | 基于对象特征的对象识别同步方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971019B1 (en) * | 2000-03-14 | 2005-11-29 | Symantec Corporation | Histogram-based virus detection |
US7814544B1 (en) * | 2006-06-22 | 2010-10-12 | Symantec Corporation | API-profile guided unpacking |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826013A (en) * | 1995-09-28 | 1998-10-20 | Symantec Corporation | Polymorphic virus detection module |
US5790778A (en) | 1996-08-07 | 1998-08-04 | Intrinsa Corporation | Simulated program execution error detection method and apparatus |
US5794012A (en) | 1996-10-09 | 1998-08-11 | Hewlett-Packard Company | Verification of strongly ordered memory accesses in a functional model of an out-of-order computer system |
US6357008B1 (en) * | 1997-09-23 | 2002-03-12 | Symantec Corporation | Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases |
US6463582B1 (en) | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6415436B1 (en) | 1998-12-11 | 2002-07-02 | Hewlett-Packard Company | Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler |
US6775780B1 (en) * | 2000-03-16 | 2004-08-10 | Networks Associates Technology, Inc. | Detecting malicious software by analyzing patterns of system calls generated during emulation |
US6973577B1 (en) * | 2000-05-26 | 2005-12-06 | Mcafee, Inc. | System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state |
US7069583B2 (en) * | 2000-07-14 | 2006-06-27 | Computer Associates Think, Inc. | Detection of polymorphic virus code using dataflow analysis |
US7350235B2 (en) * | 2000-07-14 | 2008-03-25 | Computer Associates Think, Inc. | Detection of decryption to identify encrypted virus |
US7657419B2 (en) * | 2001-06-19 | 2010-02-02 | International Business Machines Corporation | Analytical virtual machine |
US7356736B2 (en) | 2001-09-25 | 2008-04-08 | Norman Asa | Simulated computer system for monitoring of software performance |
US7415726B2 (en) | 2001-12-28 | 2008-08-19 | Mcafee, Inc. | Controlling access to suspicious files |
US6971017B2 (en) * | 2002-04-16 | 2005-11-29 | Xerox Corporation | Ad hoc secure access to documents and services |
US7409717B1 (en) * | 2002-05-23 | 2008-08-05 | Symantec Corporation | Metamorphic computer virus detection |
US7418729B2 (en) | 2002-07-19 | 2008-08-26 | Symantec Corporation | Heuristic detection of malicious computer code by page tracking |
US7644441B2 (en) | 2003-09-26 | 2010-01-05 | Cigital, Inc. | Methods for identifying malicious software |
US7836504B2 (en) | 2005-03-01 | 2010-11-16 | Microsoft Corporation | On-access scan of memory for malware |
US7568233B1 (en) | 2005-04-01 | 2009-07-28 | Symantec Corporation | Detecting malicious software through process dump scanning |
US7647636B2 (en) | 2005-08-24 | 2010-01-12 | Microsoft Corporation | Generic RootKit detector |
US7779472B1 (en) | 2005-10-11 | 2010-08-17 | Trend Micro, Inc. | Application behavior based malware detection |
US7434105B1 (en) | 2005-11-07 | 2008-10-07 | Symantec Operating Corporation | Selective self-healing of memory errors using allocation location information |
US8261344B2 (en) * | 2006-06-30 | 2012-09-04 | Sophos Plc | Method and system for classification of software using characteristics and combinations of such characteristics |
US7827447B2 (en) | 2007-01-05 | 2010-11-02 | International Business Machines Corporation | Sliding window mechanism for data capture and failure analysis |
US7620992B2 (en) | 2007-10-02 | 2009-11-17 | Kaspersky Lab Zao | System and method for detecting multi-component malware |
US20110041179A1 (en) | 2009-08-11 | 2011-02-17 | F-Secure Oyj | Malware detection |
RU91202U1 (ru) * | 2009-10-01 | 2010-01-27 | ЗАО "Лаборатория Касперского" | Система обнаружения неизвестных вредоносных программ |
-
2012
- 2012-02-24 RU RU2012106466/08A patent/RU2491615C1/ru active
- 2012-06-19 US US13/527,511 patent/US8555392B2/en active Active
- 2012-07-19 EP EP12177005.1A patent/EP2631838B1/en active Active
-
2013
- 2013-02-19 CN CN201310053734.1A patent/CN103150507B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971019B1 (en) * | 2000-03-14 | 2005-11-29 | Symantec Corporation | Histogram-based virus detection |
US7814544B1 (en) * | 2006-06-22 | 2010-10-12 | Symantec Corporation | API-profile guided unpacking |
Also Published As
Publication number | Publication date |
---|---|
US8555392B2 (en) | 2013-10-08 |
CN103150507A (zh) | 2013-06-12 |
EP2631838A1 (en) | 2013-08-28 |
EP2631838B1 (en) | 2014-06-11 |
US20130227300A1 (en) | 2013-08-29 |
RU2491615C1 (ru) | 2013-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150507B (zh) | 用于检测未知打包器和加密器的系统和方法 | |
Saxe et al. | Malware data science: attack detection and attribution | |
Wu et al. | DroidDolphin: a dynamic Android malware detection framework using big data and machine learning | |
US8499352B2 (en) | Obfuscated malware detection | |
Wang et al. | Checksum-aware fuzzing combined with dynamic taint analysis and symbolic execution | |
Tang et al. | A novel hybrid method to analyze security vulnerabilities in android applications | |
Biondi et al. | Tutorial: An overview of malware detection and evasion techniques | |
WO2016135729A1 (en) | A method to identify known compilers functions, libraries and objects inside files and data items containing an executable code | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
Cho et al. | DexMonitor: dynamically analyzing and monitoring obfuscated Android applications | |
Yeh et al. | Craxdroid: Automatic android system testing by selective symbolic execution | |
Duan et al. | TEEFuzzer: A fuzzing framework for trusted execution environments with heuristic seed mutation | |
Korkin et al. | Acceleration of statistical detection of zero-day malware in the memory dump using CUDA-enabled GPU hardware | |
Wang et al. | SyzTrust: State-aware fuzzing on trusted OS designed for IoT devices | |
Liu et al. | Automated binary analysis: A survey | |
Lee et al. | Pinicorn: Towards Automated Dynamic Analysis for Unpacking 32-Bit PE Malware | |
Huang et al. | A coverage-guided fuzzing framework for trusted execution environments | |
Usui et al. | Automatic reverse engineering of script engine binaries for building script API tracers | |
CN113139190A (zh) | 程序文件检测方法、装置、电子设备及存储介质 | |
KR102494837B1 (ko) | 난독화 된 자바스크립트를 탐지하고 복호화하기 위한 방법 및 이를 위한 장치 | |
Gaber et al. | Defeating Evasive Malware with Peekaboo: Extracting Authentic Malware Behavior with Dynamic Binary Instrumentation | |
KR102549124B1 (ko) | 난독화 된 vbscript를 탐지하고 복호화하기 위한 방법 및 이를 위한 장치 | |
Vetter et al. | Uncloaking rootkits on mobile devices with a hypervisor-based detector | |
Chen et al. | Vulnerability-based backdoors: Threats from two-step trojans | |
Cai et al. | A smart fuzzing approach for integer overflow detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |