CN107912064A - 壳代码检测 - Google Patents

壳代码检测 Download PDF

Info

Publication number
CN107912064A
CN107912064A CN201680037859.7A CN201680037859A CN107912064A CN 107912064 A CN107912064 A CN 107912064A CN 201680037859 A CN201680037859 A CN 201680037859A CN 107912064 A CN107912064 A CN 107912064A
Authority
CN
China
Prior art keywords
code
getpc
processor
translation
event
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.)
Granted
Application number
CN201680037859.7A
Other languages
English (en)
Other versions
CN107912064B (zh
Inventor
山田康
山田康一
P.R.珊穆加夫拉于塔姆
G.W.达尔彻尔
S.孔达
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.)
Mike Philippines LLC
Original Assignee
Mike Philippines LLC
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
Application filed by Mike Philippines LLC filed Critical Mike Philippines LLC
Publication of CN107912064A publication Critical patent/CN107912064A/zh
Application granted granted Critical
Publication of CN107912064B publication Critical patent/CN107912064B/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/52Monitoring 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • 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

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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Debugging And Monitoring (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)

Abstract

本文中描述的特定实施例提供一种电子设备,其可以被配置成在代码执行时监视所述代码。所述代码可以包括自修改代码。如果在GetPC地址区中出现所述自修改代码则所述系统可以记录该事件。

Description

壳代码检测
相关申请的交叉引用
本申请要求对提交于2015年6月27日、题为“DETECTION OF SHELLCODE(壳代码检测)”的美国临时专利申请号62/185,604以及提交于2015年9月26日、题为“DETECTION OFSHELLCODE(壳代码检测)”的美国非临时专利申请号14/866,860的优先权的利益,其二者由此通过引用整体地并入。
技术领域
本公开一般涉及信息安全的领域,并且更特别地涉及检测壳代码(shellcode)以识别恶意软件。
背景技术
网络安全的领域在当今社会中变得愈发重要。互联网已经使得能够实现在全世界范围内的不同计算机网络的互连。特别地,互联网提供用于在经由各种类型的客户端设备连接到不同计算机网络的不同用户之间交换数据的介质。虽然互联网的使用已经转变企业和个人通信,但是其也已经用作供恶意操作者获得对计算机和计算机网络的未授权访问以及对敏感信息的有意或无意公开的载体。
感染主机计算机的恶意的软件(“恶意软件”)可能能够执行任何数量的恶意行动,诸如从与该主机计算机相关联的企业或个体盗取敏感信息、传播到其它主机计算机和/或帮助分布式拒绝服务攻击、从主机计算机向外发送垃圾邮件(spam)或恶意电子邮件等。因此,仍然存在对于保护计算机和计算机网络免受由恶意的软件和设备的恶意和无意利用(exploitation)的大量的管理挑战。
附图说明
为了提供对本公开以及其特征和优点的更全面的理解,对结合附图进行的以下描述进行参考,其中相同的参考标号表示相同的部分,在附图中:
图1是根据本公开的实施例的用于检测壳代码的通信系统的简化框图;
图2是根据本公开的实施例的用于检测壳代码的通信系统的一部分的简化框图;
图3是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图;
图4是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图;
图5是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图;
图6是根据本公开的实施例的图示出可以与该通信系统相关联的潜在操作的简化流程图;
图7是根据本公开的实施例的图示出可以与该通信系统相关联的潜在操作的简化流程图;
图8是根据本公开的实施例的图示出可以与该通信系统相关联的潜在操作的简化流程图;
图9是根据实施例的图示出以点对点配置布置的示例计算系统的框图;
图10是与本公开的示例ARM生态系统片上系统(SOC)相关联的简化框图;以及
图11是根据实施例的图示出示例处理器核的框图。
附图中的各图不一定按比例绘制,因为它们的尺寸可以相当大地变化而不脱离本公开的范围。
具体实施方式
示例实施例
图1是根据本公开的实施例的用于检测壳代码的通信系统100的简化框图。如图1中图示出的,通信系统100可以包括电子设备102、云服务104和服务器106。电子设备102可以包括处理器110、存储器112、安全模块114、应用116、输入/输出驱动器118和执行剖析(profiling)二进制转译模块124。存储器112可以包括GetPC地址区120和白名单146。云服务104和服务器106可以均包括网络安全模块122。电子设备102、云服务104、服务器106可以使用网络108进行通信。
在示例实施例中,通信系统100可以被配置用于根据本公开的实施例来检测壳代码。图1的各元件可以通过采用任何合适的连接(有线或无线)的一个或多个接口而耦合到彼此,所述连接提供用于网络(例如,网络108等)通信的可行路径。附加地,可以基于特定的配置需要将图1的这些元件中的任何一个或多个组合或者从架构中移除。通信系统100可以包括能够进行传输控制协议/互联网协议(TCP/IP)通信以用于在网络中传输或接收分组的配置。通信系统100还可以在适当的情况下以及基于特定需要结合用户数据报协议/IP(UDP/IP)或任何其它合适的协议进行操作。
为了图示出通信系统100的某些示例技术的目的,重要的是理解可能正横跨网络环境的通信。以下基本信息可以被视为可以根据其来恰当地解释本公开的基础。
当前,使用现有应用或库代码用于进行攻击的返回导向编程(ROP)利用攻击(exploit attack)已经变得普遍以绕过禁用执行权限(DEP)减轻。许多ROP利用涉及到壳代码(例如,机器代码有效载荷)的后续执行以用于进行和完成攻击。这样的壳代码还采用代码混淆,已知其对绕过基于签名的反病毒检测技术是有效的。
恶意软件经常采用诸如压缩、加密等的专有方法之类的混淆技术来使反病毒扫描器无法察觉恶意软件自身。这样的被混淆的代码在许多的通过利用携带的恶意软件有效载荷和恶意软件可执行程序中被发现。已知混淆技术对绕过基于签名的反病毒检测技术是有效的。
不幸的是,针对此类被混淆的恶意软件代码的大多数当前对抗措施被严重地限制,由于基于签名的方法通常不能够检测被混淆的恶意软件。所需要的是被混淆的恶意软件代码的动态运行时检测。如果一种系统和方法可以检测自解密的代码序列并且允许反病毒软件动态地应用基于签名的方法并在被混淆的恶意软件代码的解密之后认出(spot)恶意软件则将会是有益的。
如图1中概述的用于检测壳代码的通信系统可以解决这些问题(以及其它问题)。通信系统100可以被配置成允许被混淆的恶意软件代码的运行时检测,以便检测自解密的代码序列、允许反病毒软件动态地应用基于签名的方法并且在被混淆的恶意软件代码的解密之后识别出恶意软件。被混淆的恶意软件或壳代码通常被加密,并需要在执行之前进行自解密。恶意软件代码的该自解密过程始于GetPC或GetEIP操作,其用于定位被混淆的恶意软件代码主体的地址。一旦利用GetPC操作知晓了被混淆的代码的地址,恶意软件就从所发现的GetPC地址执行解包(解压缩)和自解密(解码)操作。该过程可以涉及到自修改代码操作,其在恶意软件代码执行之前修改其代码中的数个字节。
通常,自解密过程包括GetPC代码执行、GetPC地址的消耗(consumption)以及针对被混淆的恶意软件代码存储器的实际解密(解码)操作。通信系统100可以使用二进制转译技术来识别通常被恶意软件用于GetPC操作的(一个或多个)指令序列、播种(seed)中毒地址以检测GetPC地址的消耗并且使用二进制转译系统的自修改代码(SMC)检测机制来检测实际的解密(解码)操作。术语“毒(poison)”用于修改地址或区域以在访问中毒地址或区域时触发诸如异常、故障、事件、警报等之类的某行动。要注意,可以使用多于一个方法来播种中毒地址。可以通过涉及到诸如前向代码流分析之类的二进制转译技术以确定GetPC地址是在指令区中还是非指令区中并跟踪和关联解密过程事件来避免假阳性确定。另外,可以通过在解密过程之后对去混淆的恶意软件代码应用基于签名的扫描方法以进行恶意软件代码的最终确定来避免假阳性事件。此外,由恶意软件使用的自发现GetPC代码序列也是高度不寻常的。
通信系统100还可以被配置成使用二进制转译器的前瞻(look-ahead)代码流分析来解码和分析包含GetPC操作的代码区并辨别GetPC地址是位于代码区中还是非代码区中。通信系统100可以跟踪这些事件序列并等候直到第三事件出现,以做出最终检测决策并最小化解密过程发现的假阳性。通信系统100还可以允许安全模块114或网络安全模块122在检测到被混淆的恶意软件代码的解密之后动态地应用基于签名的方法。
许多当前的运行时恶意软件检测解决方案和基于签名的检测方法不能够检测恶意软件的混淆技术和代码混淆。被混淆的恶意软件代码的检测是困难的,因为代码必须被去混淆并且经常要求恶意软件专家来进行穷举性手动分析、花费许多小时、许多天并且经常花费数月来分析恶意软件。过程存储器的周期性扫描昂贵地并且严重地影响系统的性能。当今的解决方案的此类严重限制可能妨碍或阻碍反病毒厂商开发和部署有效的自动化恶意软件分析解决方案以及部署用于检测此类被混淆的恶意软件和恶意软件有效载荷的端点安全性(endpoint security)。
通信系统100可以被配置成提供被混淆的恶意软件代码和恶意软件有效载荷的运行时检测机制并使用二进制转译技术来认出被混淆的恶意软件代码的解密过程。通信系统100还可以补充并改进现有的基于签名的方法,其可以在被混淆的恶意软件代码的自解密之后执行代码扫描。
通信系统100可以通过检测恶意软件代码的解密过程来提供针对被混淆的恶意软件代码或被混淆的有效载荷(例如,壳代码)的动态运行时检测机制。恶意软件代码的解密过程可以涉及到GetPC指令序列的执行、所发现的GetPC地址的消耗以及从所发现的PC地址开始的代码区的自修改操作。执行剖析二进制转译模块124可以包括二进制分析、转译器以及运行时功能或模块。二进制分析模块(例如,图2中图示出的转译器128)可以被配置成执行二进制分析并识别GetPC指令序列。转译器模块(例如,转译器128)可以被配置成生成原始应用二进制的转译版本以便装备GetPC代码序列以用于使得能够实现对安全模块进行跟踪和回调。运行时模块(例如,图2中图示出的运行时130)可以被配置用于管理所述转译,包括转译安装、删除和垃圾收集。安全模块(例如,安全模块114或网络安全模块122)可以被配置用于与操作系统交互以及进行OS系统调用的仿真和虚拟化。
存在指令序列中用以实现x86 ISA中的当前PC地址的自发现的数种方式。然而,对于BT模块而言以最小的假阳性识别由恶意软件代码使用的GetPC代码序列是可能的。一个示例包括使用转译器的前瞻代码流分析来解码和分析包含GetPC操作的代码区并辨别GetPC地址是位于实际代码区中还是非代码区中。
例如,CALL(调用) 0之后为POP是用以获取x86代码中的当前PC的相对简单的方式,并且甚至一些合法的运行时代码可以使用该代码序列。然而,该代码序列包含空(null)字节。因为空字节注入通常被监视并可由主机侵入应用来检测,因此恶意软件经常使用FSTENV指令之后为POP指令来实现当前GetPC地址的自发现。恶意软件通常使用的其它GetPC指令序列包括CALL指令,其具有指向CALL指令其自身的中间的调用目标地址。存在由恶意软件的壳代码使用的其它代码序列,但是二进制分析可以被配置成辨识其它模式并识别实现当前IP地址的自发现的此类可疑指令和代码序列。例如,当代码被识别为GetPC操作时,通信系统100可以被配置成执行分析以确认其是否是可疑的GetPC操作以跟踪并最小化假阳性。所述分析可以包括确定所述代码是否在可写(堆、栈等)存储器(包括可执行和可写)中、确定所述代码是否被诸如DLL之类的可执行模块所备份(back)、确定所述代码是否被可执行模块备份以及所述模块是否可信(例如,由可信源签署、通过其它手段审查)等。
一旦发现GetPC指令序列,转译器就可以生成具有必要的仪表的原始二进制的转译版本。在转译版本中,GetPC指令序列被装备成利用GetPC地址记录GetPC执行事件、向安全模块114给出通知(作为GetPC事件)以用于更深层分析以及通过利用可识别的无效地址来更换所述GetPC地址来播种有毒GetPC地址。使用GetPC事件作为对安全模块114的触发器使得能够实现所涉及到的代码的更深层分析,诸如通过针对已知的恶意软件模式进行扫描、识别所使用的指令和序列等等。
播种可唯一识别的中毒GetPC地址允许执行剖析二进制转译模块124检测由恶意软件代码的GetPC地址的准确消耗点。有毒GetPC地址可以是任何无效地址,但是该地址值需要可被执行剖析二进制转译模块124唯一地识别。GetPC地址消耗的检测可以通过拦截通过执行剖析二进制转译模块124的系统层模块由壳代码引起的访问违背异常来进行,其拦截来自OS的异常分派调用并虚拟化应用的OS交互。可以通过检查故障存储器地址来找出其是否与唯一有毒GetPC地址匹配来进行由恶意软件的解密过程在真实访问违背和GetPC地址消耗之间的区分。可选地,执行剖析二进制转译模块124可以被配置成对GetPC地址区(页)进行写保护以当恶意软件执行已加密恶意软件代码主体的自修改操作时检测GetPC地址的消耗,而不是向壳代码的解包代码播种有毒GetPC地址。
在解密过程的最终阶段处,通过使用二进制转译系统的自修改代码检测机制来检测GetPC存储器区上的恶意软件的自修改操作,所述转译系统的自修改代码检测机制或者通过在转译执行期间实行自检查以查看代码是否仍与转译时的字节相同的自检查转译的生成、或者通过利用来自执行剖析二进制转译模块124的系统层模块的帮助来对原始代码页进行写保护来实现。可以通过检查静态存储器控制器(SMC)存储器地址以知晓在GetPC地址区中是否出现SMC来进行由恶意软件的解密过程引起的SMC与其它类型的SMC之间的区分。
由执行剖析二进制转译模块124提供的上述检测机制允许安全模块114监视并精确地跟踪与恶意软件的解密过程相关联的事件的序列。安全模块114可以使用每个单独的事件用于分析和确定恶意软件执行的存在,或者使用全部三个事件、跟踪并关联这些事件以确定这是真实的解密过程还是假阳性。
执行剖析二进制转译模块124还可以被配置成在执行自修改的代码执行之前通知安全模块114。这可以由执行剖析二进制转译模块124在执行SMC转译之前添加通知机制来进行。SMC转译是由执行剖析二进制转译模块124作为SMC事件或操作的结果而创建的转译。这允许安全模块114向去混淆的恶意软件代码动态地应用基于签名的扫描方法以用于找出已知的恶意软件签名。该最终步骤帮助安全模块114确定所发现的解密过程是合法的还是恶意的。
在去混淆期间,恶意软件首先需要读取原始代码。这可以利用中毒地址上的故障来进行检测。当安全模块114确定了需要观察恶意软件执行的最后阶段(原始代码的去混淆)时,安全模块114可以用原始GetPC地址来更换中毒地址。所述最后阶段可以通过由BT模块提供的SMC检测机制来检测。在SMC(例如,去混淆)执行之后,安全模块114可以检验经去混淆的代码以确定所述代码是否是恶意的。
下毒是用来使用GetPC地址拦截加载操作的一种方式。在示例中,可以用唯一保留的无效地址来更换每个GetPC地址。当加载与中毒地址一起出现时,将生成故障并且执行剖析二进制转译模块124可以检验该故障并确定故障地址是否与先前生成的中毒地址中的任何相匹配。在示例中,当发生唯一GetPC操作时,系统可以用唯一的中毒地址来更换该GetPC地址。例如,在两个不同IP位置处发生两个GetPC操作,可以为GetPC地址中的每一个分配两个不同的有毒地址。执行剖析二进制转译模块124可以知晓在故障时(例如,关于加载操作的消耗时间)什么GetPC地址对应于中毒地址。
转向图1的基础设施,示出了根据示例实施例的通信系统100。一般来说,通信系统100可以以任何类型或拓扑的网络来实现。网络108表示用于接收和传输传播通过通信系统100的信息分组的互连通信路径的一系列点或节点。网络108提供节点之间的通信接口,并且可以被配置为任何的局域网(LAN)、虚拟局域网(VLAN)、广域网(WAN)、无线局域网(WLAN)、城域网(MAN)、内联网、外联网、虚拟私人网络(VPN)以及促进网络环境中的通信的任何其它的适当架构或系统或者其任何合适的组合,包括有线和/或无线通信。
在通信系统100中,可以根据任何合适的通信消息传递协议来发送和接收包括分组、帧、信号、数据等的网络业务。合适的通信消息传递协议可以包括多层方案,诸如开放系统互连(OSI)模型或者其任何衍生物或变体(例如,传输控制协议/互联网协议(TCP/IP)、用户数据报协议/IP(UDP/IP))。附加地,也可以在通信系统100中提供通过蜂窝网络的无线电信号通信。可以提供合适的接口和基础设施以使得能够实现与蜂窝网络的通信。
如本文中使用的术语“分组”指的是数据单元,其可以在分组交换网络上在源节点与目的地节点之间进行路由。分组包括源网络地址和目的地网络地址。这些网络地址可以是TCP/IP消息传递协议中的互联网协议(IP)地址。如本文中使用的术语“数据”指的是任何类型的二进制、数值、语音、视频、文本或脚本数据,或者任何类型的源或目标代码,或者,可以在电子设备和/或网络中从一个点传送到另一个点的以任何适当格式的任何其它合适信息。附加地,消息、请求、响应以及查询是网络业务的形式,并且因此可以包括分组、帧、信号、数据等。
在示例实施方式中,电子设备102、云服务104和服务器106是网络元件,其意指涵盖网络器具、服务器、路由器、交换机、网关、桥、负载均衡器、处理器、模块或可操作用于在网络环境中交换信息的任何其它合适的设备、组件、元件或对象。网络元件可以包括促进其操作的任何合适的硬件、软件、组件、模块或对象,以及用于在网络环境中接收、传输和/或以其它方式传送数据或信息的合适的接口。这可以包括允许数据或信息的有效交换的适当算法和通信协议。
关于与通信系统100相关联的内部结构,电子设备102、云服务104和服务器106中的每一个可以包括用于存储要在本文中概述的操作中使用的信息的存储器元件。电子设备102、云服务104和服务器106中的每一个可以在适当的情况下并且基于特定需要将信息保持在任何合适的存储器元件(例如,随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、专用集成电路(ASIC)等)、软件、硬件、固件中或者在任何其它合适的组件、设备、元件或对象中。本文中讨论的任何存储器项目应被解释为被涵盖在广义术语“存储器元件”内。此外,在通信系统100中正使用、跟踪、发送或接收的信息可能以任何的数据库、寄存器、队列、表格、高速缓存、控制列表或其它存储结构来提供,其全部可以在任何合适的时间帧中引用。任何此类存储选项也可以被包括在如本文中使用的广义术语“存储器元件”内。
在某些示例实施方式中,本文中概述的功能可以通过编码在一个或多个有形介质中的逻辑(例如,ASIC中提供的嵌入式逻辑、数字信号处理器(DSP)指令、要由处理器或其它类似机器执行的软件(潜在地包括目标代码和源代码)等)来实现,所述有形介质可以包括非暂时性计算机可读介质。在这些实例中的一些中,存储器元件可以存储用于本文中描述的操作的数据。这包括存储器元件能够存储被执行以实行本文中描述的活动的软件、逻辑、代码或处理器指令。
在示例实施方式中,通信系统100的网络元件——诸如电子设备102、云服务104和服务器106——可以包括软件模块(例如,安全模块114、网络安全模块122以及执行剖析二进制转译模块124)以实现或以培养如本文中概述的操作。这些模块可以以可能基于特定配置和/或供应需要的任何适当的方式来合适地组合。在示例实施例中,此类操作可以通过硬件来实行、在这些元件外部实现、或者被包括在用以实现意图功能的某个其它网络设备中。另外,模块可以被实现为软件、硬件、固件或其任何合适的组合。这些元件还可以包括可以与其它网络元件协作以便实现如本文中概述的操作的软件(或往复式软件)。
附加地,电子设备102、云服务104和服务器106中的每一个可以包括处理器,其可以执行软件或算法来实行如本文中讨论的活动。处理器可以执行与用来实现本文中详述的操作的数据相关联的任何类型的指令。在一个示例中,处理器可以将元素或物品(例如,数据)从一个状态或事物转变成另一个状态或事物。在另一示例中,可以用固定逻辑或可编程逻辑(例如,由处理器执行的软件/计算机指令)来实现本文中概述的活动,并且本文中识别的元件可以是某个类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、EPROM、EEPROM)或ASIC,其包括数字逻辑、软件、代码、电子指令或其任何合适的组合。本文中描述的任何潜在的处理元件、模块和机器应被解释为被涵盖在广义术语“处理器”内。
电子设备102可以是网络元件,并且包括例如台式计算机、膝上型计算机、移动设备、个人数字助理、智能电话、平板电脑或其它类似设备。云服务104被配置成向电子设备102提供云服务。云服务104一般可以被定义为作为网络(诸如互联网)上的服务来递送的计算资源的使用。通常,在云基础设施中提供计算、存储和网络资源,从而有效地将工作负载从本地网络转移到云网络。服务器106可以是诸如服务器或虚拟服务器之类的网络元件,并且可以与希望经由某个网络(例如,网络108)发起通信系统100中的通信的客户端、顾客、端点或终端用户相关联。术语“服务器”包括用于服务客户端的请求和/或代表通信系统100内的客户端执行一些计算任务的设备。虽然在图1中将安全模块114表示为位于电子设备102中,但是这仅是为了说明的目的。安全模块114可以以任何合适的配置进行组合或分离。例如,可以将安全模块114的活动转移到网络安全模块122。
转向图2,图2是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图。如图2中图示出的,执行剖析二进制转译模块124可以包括执行剖析模块126、转译器128、运行时130和二进制转译系统层132。执行剖析二进制转译模块124可以与安全模块114和转译代码高速缓存134通信。执行剖析二进制转译模块124可以被配置成连同安全模块114一起在目标应用进程空间内运行,并且可以由安全模块114动态地加载以使得能够实现应用执行的动态行为监视。
执行剖析模块126可以被配置成与安全模块114通信并且暴露执行应用程序接口(API)。转译器128可以被配置成提供与应用或代码相关的二进制分析、转译、优化和其它类似活动。运行时130可以被配置成提供转译高速缓存管理、查找表管理、系统管理控制器(SMC)处置等。二进制转译系统层132可以被配置成提供虚拟化操作系统接口,诸如系统调用、异常、异步回调、进程和线程创建等。
转向图3,图3是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图。如图3中图示出的,可以将来自应用的原始代码136发送给转译器128。转译器128可以转译原始代码136的部分并将转译部分存储在转译代码高速缓存134中。可以由安全模块114针对恶意或可疑活动的存在来分析转译代码高速缓存134中的转译代码。
执行剖析二进制转译模块124可以作为dll注入到目标应用或进程中,并且可以由安全模块114来配置策略。执行剖析二进制转译模块124可以被配置成创建转译高速缓存并开始转译(以策略检查和/或策略嵌入)并且从目标应用或进程的恢复点JIT到转译高速缓存。可以由安全模块114指定用于(图5中图示出的)执行剖析生命周期的停止点。使用转译器128和运行时130,当执行剖析二进制转译模块124检测到策略违背时,可以将触发该违背的应用或代码传送给安全模块114以用于进一步分析。
转向图4,图4是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图。如图4中图示出的,安全模块114可以初始化和关闭执行剖析二进制转译模块124。安全模块114还可以命令执行剖析二进制转译模块124开始监视、设置针对回调的条件以及停止监视。
转向图5,图5是根据本公开的实施例的用于检测壳代码的通信系统的示例细节的简化框图。如图5中图示出的,执行剖析生命周期500可以包括注入和策略设置阶段140、动态二进制分析阶段142、执行监视阶段144和报告阶段145。在注入和策略设置阶段140处,安全模块114可以被配置成确定策略以及针对特定应用进行监视。剖析和监视可以应特定事件或在访问存储器的地址或区域时开始。注入和策略设置阶段140可以针对整个进程来执行或以线程水平执行。从注入和策略设置阶段140,安全模块114可以向执行剖析二进制转译模块124发送针对监视应用的请求,并且执行剖析生命周期500可以进入动态二进制分析阶段142。
在动态二进制分析阶段142处,执行剖析二进制转译模块124可以被配置成在执行代码之前分析原始二进制代码并利用白名单(例如,白名单146)验证所述代码和所述代码的地址范围。在动态二进制分析阶段142处,执行剖析二进制转译模块124还可以被配置成针对所述代码识别合法的调用、返回和跳转目标。转译器128可以为执行监视阶段144转译所述代码。
在执行监视阶段144处,执行剖析二进制转译模块124可以被配置用于分支监视和剖析、控制流完整性(例如,调用和返回匹配等)、监视具体的或特定的地址和指令以及应用程序接口策略使用。可疑活动或预配置条件的激活可以使执行剖析二进制转译模块124向安全模块114发送通知。例如,如果所述代码位于可写存储器区中,则应针对恶意软件分析所述代码。安全模块114可以分析所怀疑的或剖析的数据并采取必要行动来防止或减轻恶意软件。
转向图6,图6是根据实施例的图示出可以与检测壳代码相关联的流程600的可能操作的示例流程图。在实施例中,流程600的一个或多个操作可以由安全模块114和执行剖析二进制转译模块124来执行。在602处,执行针对代码的转译。在604处,系统确定是否找出转译。如果找出转译,则执行转译,如在606中。如果没有找出转译,则确定针对代码转译的(存储器的)区,如在620中。在622处,系统确定代码的所确定的区是否包括GetPC代码。如果所确定的区确实包括GetPC代码,则记录GetPC执行事件,如在628中。在630处,向安全模块传送与GetPC执行事件相关的通知。在632处,播种有毒GetPC地址。播种有毒GetPC地址以在出现可疑活动时引起故障或触发警报。在624处,生成转译。返回到622,如果所确定的区不包括GetPC代码,则生成(针对所述代码的)转译,如在624中。在606处,执行该转译。
在608处,系统确定该转译是否与GetPC代码相关。如果该转译不与GetPC代码相关,则不采取另外的行动。如果该转译与GetPC代码相关,则记录GetPC执行事件,如在610中。在612处,系统确定是否要求报告。如果要求报告,则播种有毒GetPC地址,如在614中。播种有毒GetPC地址以在出现可疑活动时引起故障或触发警报并且使报告被生成。如果不要求报告,则分析GetPC执行事件,如在616中。在示例中,可以由安全模块114和/或网络安全模块122来分析GetPC执行事件。
转向图7,图7是根据实施例的图示出可以与检测壳代码相关联的流程700的可能操作的示例流程图。在实施例中,流程700的一个或多个操作可以由安全模块114和执行剖析二进制转译模块124来执行。在702处,转译代码执行。在704处,系统确定在转译期间是否出现异常。例如,可能已经播种有毒GetPC地址以引起异常。如果没有出现异常,则不采取另外的行动。如果确实出现了异常,则拦截异常分派流,如在706中。在708处,系统确定是否出现触发事件。例如,触发事件可以是异常存储器故障(例如,存储器故障转译、由中毒地址引起的存储器故障)或者发信号通知或指示可疑行为的某个其它预定事件。如果没有出现触发事件,则不采取另外的行动。如果确实出现了触发事件,则系统确定故障地址是否与无效地址相匹配,如在710中。如果故障地址不与无效地址相匹配,则不采取另外的行动。如果故障地址确实与无效地址相匹配,则记录事件,如在712中。在714处,系统确定是否要求报告。如果不要求报告,则不采取另外的行动。如果要求报告,则可以分析该事件,如在714中。在示例中,可以由安全模块114和/或网络安全模块122来分析该事件。
转向图8,图8是根据实施例的图示出可以与检测壳代码相关联的流程800的可能操作的示例流程图。在实施例中,流程800的一个或多个操作可以由安全模块114和执行剖析二进制转译模块124来执行。在802处,辨识GetPC指令。在804处,系统确定是否检测到自修改代码。如果没有检测到自修改代码,则不采取另外的行动。如果检测到自修改代码,则系统确定该自修改代码是否出现在所监视的地址区中,如在806中。在示例中,从在802中辨识出的GetPC指令以及从辨识出的GetPC指令中获得的GetPC地址来计算所监视的地址区。如果在所监视的地址区中没有出现自修改代码,则不采取另外的行动。如果在所修改的地址区中出现自修改代码,则创建安全事件,如在808中。在810处,记录自修改事件。在812处,系统确定是否要求报告。如果不要求报告,则不采取另外的行动。如果要求报告,则可以分析所记录的事件,如在814中。在示例中,可以由安全模块114和/或网络安全模块122来分析所记录的事件。
图9图示出根据实施例的以点对点(PtP)配置布置的计算系统900。特别地,图9示出了其中通过数个点对点接口来互连处理器、存储器和输入/输出设备的系统。一般来说,通信系统100的网络元件中的一个或多个可以以与计算系统900相同或类似的方式进行配置。
如图9中图示出的,系统900可以包括若干个处理器,为了清楚起见只示出了其中的两个,处理器970和980。虽然示出了两个处理器970和980,但是要理解的是,系统900的实施例也可以仅包括一个这样的处理器。处理器970和980可以均包括一组核(即,处理器核974A和974B以及处理器核984A和984B)以执行程序的多个线程。所述核可以被配置成以类似于上文中参考图6-9讨论的方式来执行指令代码。每个处理器970、980可以包括至少一个共享高速缓存971、981。共享高速缓存971、981可以存储由处理器970、980的一个或多个组件(诸如处理器核974和984)利用的数据(例如,指令)。
处理器970和980还可以均包括集成存储器控制器逻辑(MC)972和982以与存储器元件932和934通信。存储器元件932和/或934可以存储由处理器970和980使用的各种数据。在替换实施例中,存储器控制器逻辑972和982可以是与处理器970和980分离的分立逻辑。
处理器970和980可以是任何类型的处理器并且可以分别使用点对点接口电路978和988经由点对点(PtP)接口950来交换数据。处理器970和980可以均使用点对点接口电路976、986、994和998经由单独的点对点接口952和954来与芯片组990交换数据。芯片组990还可以使用接口电路992(其可以是PtP接口电路)经由高性能图形接口939来与高性能图形电路938交换数据。在替换实施例中,图9中图示出的PtP链路中的任何或全部可以被实现为多点总线而不是PtP链路。
芯片组990可以经由接口电路996与总线920通信。总线920可以具有通过其进行通信的一个或多个设备,诸如总线桥918和I/O设备916。经由总线910,总线桥918可以与其它设备通信,所述其他设备诸如键盘/鼠标912(或其它输入设备,诸如触摸屏、轨迹球等)、通信设备926(诸如调制解调器、网络接口设备或可以通过计算机网络960通信的其它类型的通信设备)、音频I/O设备914和/或数据存储设备928。数据存储设备928可以存储代码930,其可以由处理器970和/或980来执行。在替换实施例中,总线架构的任何部分可以用一个或多个PtP链路来实现。
在图9中描绘的计算机系统是可以用来实现本文中讨论的各种实施例的计算系统的实施例的示意性图示。将领会到,在图9中描绘的系统的各种组件可以以片上系统(SoC)架构或以任何其它合适的配置进行组合。例如,本文中公开的实施例可以并入到包括移动设备的系统中,所述移动设备诸如智能蜂窝电话、平板计算机、个人数字助理、便携式游戏设备等。将领会到,在至少一些实施例中,这些移动设备可以被提供有SoC架构。
转向图10,图10是与本公开的示例ARM生态系统SOC 1000相关联的简化框图。本公开的至少一个示例实施方式可以包括本文中讨论的壳代码检测特征以及ARM组件。例如,图10的示例可以与任何ARM核(例如,A-9、A-15等)相关联。另外,该架构可以是任何类型的平板电脑、智能电话(包括Android™电话、iPhones™、iPad™、谷歌Nexus™、微软Surface™、个人计算机、服务器、视频处理组件、膝上型计算机(包括任何类型的笔记本)、Ultrabook™系统、任何类型的触摸使能输入设备等的部分。
在图10的该示例中,ARM生态系统SOC 1000可以包括多个核1006-1007、L2高速缓存控制1008、总线接口单元1009、L2高速缓存1010、图形处理单元(GPU)1015、互连1002、视频编解码器1020以及液晶显示器(LCD)I/F 1025,所述液晶显示器(LCD)I/F 1025可以与耦合到LCD的移动工业处理器接口(MIPI)/高清晰度多媒体接口(HDMI)链路相关联。
ARM生态系统SOC 1000还可以包括订户身份模块(SIM)I/F 1030、引导只读存储器(ROM)1035、同步动态随机存取存储器(SDRAM)控制器1040、闪存控制器1045、串行外围接口(SPI)主设备1050、合适的功率控制1055、动态RAM(DRAM)1060以及闪存1065。此外,一个或多个示例实施例包括一个或多个通信能力、接口和特征,诸如以下实例:Bluetooth™1070、3G调制解调器1075、全球定位系统(GPS)1080以及802.11 Wi-Fi 1085。
在操作中,图10的示例可以提供处理能力以及相对低的功率消耗来使得能够实现各种类型的计算(例如,移动计算、高端数字家庭、服务器、无线基础设施等)。此外,这样的架构可以使得能够实现任何数量的软件应用(例如,Android™、Adobe™ Flash™ 播放器、Java平台标准编辑(JavaSE)、JavaFX、Linux、微软Windows嵌入式、塞班(Symbian)和乌班图(Ubuntu)等)。在至少一个示例实施例中,核心处理器可以利用所耦合的低等待时间2级高速缓存来实现无序超标量流水线。
图11图示出根据实施例的处理器核1100。处理器核1100可以是用于任何类型的处理器的核,所述处理器诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器或用以执行代码的其它设备。虽然在图11中仅图示出一个处理器核1100,但是处理器可以替换地包括多于一个的图11中图示出的处理器核1100。例如,处理器核1100表示参考图9的处理器970和980示出和描述的处理器核974a、974b、984a和984b的一个示例实施例。处理器核1100可以是单线程核,或者针对至少一个实施例,处理器核1100可以是多线程的,因为其可以包括每个核多于一个硬件线程上下文(或“逻辑处理器”)。
图11还图示出根据实施例的耦合到处理器核1100的存储器1102。存储器1102可以是如本领域技术人员已知或以其它方式可得到的各种各样的存储器中的任何(包括存储器层级中的各种层)。存储器1102可以包括代码1104,其可以是要由处理器核1100执行的一个或多个指令。处理器核1100可以遵循由代码1104指示的指令的程序序列。每个指令进入前端逻辑1106并由一个或多个解码器1108进行处理。解码器作为其输出可以生成微操作(诸如以预定义的格式的固定宽度微操作),或者可以生成反映原始代码指令的其它指令、微指令或控制信号。前端逻辑1106还包括寄存器重命名逻辑1110和调度逻辑1112,其一般分配资源并使对应于指令的操作排队以用于执行。
处理器核1100还可以包括具有一组执行单元1116-1到1116-N的执行逻辑1114。一些实施例可以包括专用于具体功能或功能组的数个执行单元。其它实施例可以包括能够执行特定功能的一个执行单元或仅一个执行单元。执行逻辑1114实行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑1118可以使代码1104的指令退役。在一个实施例中,处理器核1100允许无序执行,但是要求指令的有序退役。退役逻辑1120可以采取各种各样的已知形式(例如,重排序缓冲器等等)。以此方式,处理器核1100在代码1104的执行期间至少在由解码器生成的输出、由寄存器重命名逻辑1110利用的硬件寄存器和表格以及由执行逻辑1114修改的任何寄存器(未示出)方面变换。
虽然未在图11中图示出,但是处理器可以包括与处理器核1100一起的芯片上的其它元件,其中的至少一些在本文中参考图10示出和描述。例如,如图10中所示,处理器可以包括存储器控制逻辑连同处理器核1100。处理器可以包括I/O控制逻辑,和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。
要注意,在本文中提供的示例的情况下,可以在两个、三个或更多个网络元件方面描述交互。然而,这么做仅是为了清楚和示例的目的。在某些情况下,通过仅参考有限数量的网络元件可能更易于描述给定的流程集的功能中的一个或多个。应领会到,通信系统100和其教导可容易地缩放,并且可以适应大量的组件以及更复杂/精密的布置和配置。相应地,所提供的示例不应限制范围或者抑制如潜在地适用于其它架构的混合的通信系统100的宽泛教导。
还重要的是要注意,前述流程图(即图6-8)中的操作仅图示出可以由通信系统100或在通信系统100内执行的可能关联场景和模式中的一些。这些操作中的一些可以在适当的情况下被删除或移除,或者这些操作可以被相当大地修改或改变而不脱离本公开的范围。此外,数个这些操作已经被描述为与一个或多个附加操作并发或并行执行。然而,可以相当大地更改这些操作的定时。已经提供了前述操作流用于示例和讨论的目的。由通信系统100提供大量的灵活性,在于可以提供任何合适的布置、年表、配置和定时机制而不脱离本公开的教导。
虽然已经参考特定布置和配置详细地描述了本公开,但是可以显著地改变这些示例配置和布置而不脱离本公开的范围。此外,可以基于特定需要和实施方式来对某些组件进行组合、分离、消除或添加。附加地,虽然已经参考促进通信过程的特定元件和操作图示出了通信系统100,但是这些元件和操作可以被实现通信系统100的意图功能的任何合适的架构、协议和/或过程所更换。
本领域技术人员可以确定许多其它的改变、替换、变化、变更和修改,并且本公开旨在涵盖落入所附权利要求的范围内的所有这些改变、替换、变化、变更和修改。为了协助美国专利商标局(USPTO)以及附加地在本申请上发布的任何专利的任何读者来解释本文所附的权利要求,申请人希望指出申请人:(a)不意图所附权利要求中的任何援引35 U.S.C.第112章节第六(6)段,如其在本申请申请日时存在的那样,除非在特定权利要求中具体地使用词语“用于…的部件”或“用于…的步骤”;以及(b)不意图通过说明书中的任何陈述以未在所附权利要求中以其它方式反映的任何方式来限制本公开。
其它注意和示例
示例C1是具有一个或多个指令的至少一个机器可读介质,所述指令当被至少一个处理器执行时使所述至少一个机器可读介质:在代码执行时监视代码,其中所述代码包括自修改代码;以及如果在GetPC地址区中出现所述自修改代码则记录该事件。
在示例C2中,示例C1的主题可以可选地包括一个或多个指令,其当被所述至少一个处理器执行时使所述至少一个机器可读介质针对恶意软件分析所述代码。
在示例C3中,示例C1-C2中的任一个的主题可以可选地包括一个或多个指令,其当被所述至少一个处理器执行时使所述至少一个机器可读介质在所述GetPC地址区中播种有毒GetPC地址。
在示例C4中,示例C1-C3中的任一个的主题可以可选地包括其中所述有毒GetPC地址引起存储器故障。
在示例C5中,示例C1-C4中的任一个的主题可以可选地包括一个或多个指令,其当被所述至少一个处理器执行时使所述至少一个机器可读介质,如果确定在转译期间出现存储器故障异常并且所述存储器故障转译与无效地址相匹配则记录该事件。
在示例C6中,示例C1-C5中的任一个的主题可以可选地包括一个或多个指令,其当被所述至少一个处理器执行时使所述至少一个机器可读介质,如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
在示例C7中,示例C1-C6中的任一个的主题可以可选地包括一个或多个指令,其当被所述至少一个处理器执行时使所述至少一个机器可读介质,确定在所述代码的转译期间是否出现异常,以及如果在无效地址处出现异常则记录该事件。
在示例C8中,示例C1-C7中的任一个的主题可以可选地包括一个或多个指令,其当被所述至少一个处理器执行时使所述至少一个机器可读介质,如果所述代码在可写存储器区中则将所述代码传送给安全模块。
在示例A1中,一种电子设备可以包括执行剖析二进制转译模块,其中所述执行剖析二进制转译模块被配置成:在代码执行时监视代码,其中所述代码包括自修改代码;以及如果在GetPC地址区中出现所述自修改代码则记录该事件。
在示例A2中,示例A1的主题可以可选地包括安全模块,其被配置成针对恶意软件分析所述代码。
在示例A3中,示例A1-A2中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成在所述GetPC地址区中播种有毒GetPC地址。
在示例A4中,示例A1-A3中的任一个的主题可以可选地包括其中所述有毒GetPC地址引起存储器故障。
在示例A5中,示例A1-A4中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成如果确定在所述代码的转译期间出现存储器故障异常并且存储器故障转译与无效地址相匹配则记录该事件。
在示例A6中,示例A1-A5中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
在示例A7中,示例A1-A6中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成确定在所述转译期间是否出现异常,以及如果在无效地址处出现异常则记录该事件。
在示例A8中,示例A1-A7中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成如果所述代码在可写存储器区中则将所述代码传送给安全模块。
示例M1是一种方法,其包括:当代码执行时监视所述代码,其中所述代码包括自修改代码;以及如果在GetPC地址区中出现所述自修改代码则记录该事件。
在示例M2中,示例M1的主题可以可选地包括针对恶意软件分析所述代码。
在示例M3中,示例M1-M2中的任一个的主题可以可选地包括在所述GetPC地址区中播种有毒GetPC地址。
在示例M4中,示例M1-M3中的任一个的主题可以可选地包括其中所述有毒GetPC地址引起存储器故障。
在示例M5中,示例M1-M4中的任一个的主题可以可选地包括如果确定在所述代码的转译期间出现存储器故障异常并且存储器故障转译与无效地址相匹配则记录该事件。
在示例M6中,示例M1-M5中的任一个的主题可以可选地包括如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
在示例M7中,示例M1-M6中的任一个的主题可以可选地包括确定在所述转译期间是否出现异常,以及如果在无效地址处出现异常则记录该事件。
示例S1是一种用于检测壳代码的系统,所述系统包括执行剖析二进制转译模块,其被配置用于:在代码执行时监视所述代码,其中所述代码包括自修改代码;以及如果在GetPC地址区中出现所述自修改代码则记录该事件。
在示例S2中,示例S1的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置用于在所述GetPC地址区中播种有毒GetPC地址。
示例SS1是一种用于检测壳代码的系统,所述系统包括执行剖析二进制转译模块,其被配置成:在代码执行时监视所述代码,其中所述代码包括自修改代码;以及如果在GetPC地址区中出现所述自修改代码则记录该事件。
在示例SS2中,示例S1的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成针对恶意软件分析所述代码。
在示例SS3中,示例SS1-SS2中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成在所述GetPC地址区中播种有毒GetPC地址。
在示例SS4中,示例SS1-SS3中的任一个的主题可以可选地包括其中所述有毒GetPC地址引起存储器故障。
在示例SS5中,示例SS1-SS3中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成如果确定在所述代码的转译期间出现存储器故障异常并且存储器故障转译与无效地址相匹配则记录该事件。
示例SS6,示例SS1-SS6中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
示例SS7,示例SS1-SS6中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成确定在所述转译期间是否出现异常,以及如果在无效地址处出现异常则记录该事件。
示例SS8,示例SS1-SS7中的任一个的主题可以可选地包括其中所述执行剖析二进制转译模块进一步被配置成如果所述代码在可写存储器区中则将所述代码传送给安全模块。
示例X1是一种包括机器可读指令的机器可读存储介质,所述机器可读指令用以实施如在示例M1-M7中的任一个中所述的方法或者实现如在示例A1-A8中的任一个中所述的装置。示例Y1是一种装置,其包括用于执行示例方法M1-M7中的任一个的部件。在示例Y2中,示例Y1的主题可以可选地包括包含处理器和存储器的用于执行所述方法的部件。在示例Y3中,示例Y2的主题可以可选地包括包含机器可读指令的存储器。

Claims (25)

1.包括一个或多个指令的至少一个机器可读介质,所述一个或多个指令当被至少一个处理器执行时使所述至少一个处理器:
在代码执行时监视所述代码,其中所述代码包括自修改代码;以及
如果在GetPC地址区中出现所述自修改代码则记录该事件。
2.根据权利要求1所述的至少一个机器可读介质,包括一个或多个指令,其当被至少一个处理器执行时使所述至少一个处理器:
针对恶意软件分析所述代码。
3.根据权利要求1和2中的任一项所述的至少一个机器可读介质,包括一个或多个指令,其当被至少一个处理器执行时使所述至少一个处理器:
在所述GetPC地址区中播种有毒GetPC地址。
4.根据权利要求3所述的至少一个机器可读介质,其中所述有毒GetPC地址引起存储器故障。
5.根据权利要求1所述的至少一个机器可读介质,包括一个或多个指令,其当被至少一个处理器执行时使所述至少一个处理器:
如果确定在转译期间出现存储器故障异常并且所述存储器故障转译与无效地址相匹配则记录该事件。
6.根据权利要求1所述的至少一个机器可读介质,进一步包括一个或多个指令,其当被至少一个处理器执行时进一步使所述至少一个处理器:
如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
7.根据权利要求1所述的至少一个机器可读介质,进一步包括一个或多个指令,其当被至少一个处理器执行时进一步使所述至少一个处理器:
确定在所述代码的转译期间是否出现异常;以及
如果在无效地址处出现异常则记录该事件。
8.根据权利要求1所述的至少一个机器可读介质,进一步包括一个或多个指令,其当被至少一个处理器执行时进一步使所述至少一个处理器:
如果所述代码在可写存储器区中则将所述代码传送给安全模块。
9.一种装置,包括:
执行剖析二进制转译模块,其被配置成:
在代码执行时监视所述代码,其中所述代码包括自修改代码;以及
如果在GetPC地址区中出现所述自修改代码则记录该事件。
10.根据权利要求9所述的装置,其中所述装置进一步包括:
安全模块,其被配置成:
针对恶意软件分析所述代码。
11.根据权利要求9和10中的任一项所述的装置,其中所述执行剖析二进制转译模块进一步被配置成:
在所述GetPC地址区中播种有毒GetPC地址。
12.根据权利要求11所述的装置,其中,所述有毒GetPC地址引起存储器故障。
13.根据权利要求9所述的装置,其中所述执行剖析二进制转译模块进一步被配置成:
如果确定在转译期间出现存储器故障异常并且存储器故障转译与无效地址相匹配则记录该事件。
14.根据权利要求9所述的装置,其中所述执行剖析二进制转译模块进一步被配置成:
如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
15.根据权利要求9所述的装置,其中所述执行剖析二进制转译模块进一步被配置成:
确定在所述代码的转译期间是否出现异常;以及
如果在无效地址处出现异常则记录该事件。
16.根据权利要求9所述的装置,其中所述执行剖析二进制转译模块进一步被配置成:
如果所述代码在可写存储器区中则将所述代码传送给安全模块。
17.一种方法,包括:
在代码执行时监视所述代码,其中所述代码包括自修改代码;以及
如果在GetPC地址区中出现所述自修改代码,则记录该事件。
18.根据权利要求17所述的方法,进一步包括:
针对恶意软件分析所述代码。
19.根据权利要求17和18中的任一项所述的方法,进一步包括:
在所述GetPC地址区中播种有毒GetPC地址。
20.根据权利要求19所述的方法,其中所述有毒GetPC地址引起存储器故障。
21.根据权利要求17所述的方法,进一步包括:
如果确定在转译期间出现存储器故障异常并且存储器故障转译与无效地址相匹配则记录该事件。
22.根据权利要求17所述的方法,进一步包括:
如果在GetPC地址区中出现所述自修改代码则将所述代码传送给安全模块。
23.根据权利要求17所述的方法,进一步包括:
确定在所述代码的转译期间是否出现异常;以及
如果在无效地址处出现异常则记录该事件。
24.一种用于检测壳代码的系统,所述系统包括:
执行剖析二进制转译模块,其被配置用于:
在代码执行时监视所述代码,其中所述代码包括自修改代码;以及
如果在GetPC地址区中出现所述自修改代码则记录该事件。
25.根据权利要求24所述的系统,其中所述执行剖析二进制转译模块进一步被配置用于:
在所述GetPC地址区中播种有毒GetPC地址。
CN201680037859.7A 2015-06-27 2016-05-26 壳代码检测 Active CN107912064B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562185604P 2015-06-27 2015-06-27
US62/185604 2015-06-27
US14/866860 2015-09-26
US14/866,860 US10803165B2 (en) 2015-06-27 2015-09-26 Detection of shellcode
PCT/US2016/034267 WO2017003601A1 (en) 2015-06-27 2016-05-26 Detection of shellcode

Publications (2)

Publication Number Publication Date
CN107912064A true CN107912064A (zh) 2018-04-13
CN107912064B CN107912064B (zh) 2022-01-14

Family

ID=57603134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680037859.7A Active CN107912064B (zh) 2015-06-27 2016-05-26 壳代码检测

Country Status (5)

Country Link
US (1) US10803165B2 (zh)
EP (1) EP3314513A1 (zh)
JP (1) JP2018519603A (zh)
CN (1) CN107912064B (zh)
WO (1) WO2017003601A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437998B2 (en) 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
US10440036B2 (en) * 2015-12-09 2019-10-08 Checkpoint Software Technologies Ltd Method and system for modeling all operations and executions of an attack and malicious process entry
US10880316B2 (en) 2015-12-09 2020-12-29 Check Point Software Technologies Ltd. Method and system for determining initial execution of an attack
US10291634B2 (en) 2015-12-09 2019-05-14 Checkpoint Software Technologies Ltd. System and method for determining summary events of an attack
US10108798B1 (en) * 2016-01-04 2018-10-23 Smart Information Flow Technologies LLC Methods and systems for defending against cyber-attacks
US10372908B2 (en) * 2016-07-25 2019-08-06 Trap Data Security Ltd. System and method for detecting malware in a stream of bytes
WO2018083702A1 (en) * 2016-11-07 2018-05-11 Perception Point Ltd System and method for detecting and for alerting of exploits in computerized systems
US10372902B2 (en) * 2017-03-06 2019-08-06 Intel Corporation Control flow integrity
EP3612969A1 (en) * 2017-04-20 2020-02-26 Morphisec Information Security 2014 Ltd. System and method for runtime detection, analysis and signature determination of obfuscated malicious code
WO2021011138A1 (en) * 2019-07-14 2021-01-21 Jung Yong Kyu A hybrid security-enabled lookahead microprocessor based method and apparatus for securing computer systems and data
US11681804B2 (en) 2020-03-09 2023-06-20 Commvault Systems, Inc. System and method for automatic generation of malware detection traps

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094496A1 (en) * 2005-10-25 2007-04-26 Michael Burtscher System and method for kernel-level pestware management
CN101645119A (zh) * 2008-08-07 2010-02-10 中国科学院软件研究所 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
CN102081719A (zh) * 2009-12-01 2011-06-01 王伟 基于动态污染传播的软件安全测试系统及方法
CN103221960A (zh) * 2012-12-10 2013-07-24 华为技术有限公司 恶意代码的检测方法及装置
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US20140123280A1 (en) * 2012-10-30 2014-05-01 Gabriel Kedma Runtime detection of self-replicating malware
US20140181976A1 (en) * 2011-05-06 2014-06-26 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines
US6073142A (en) 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
EP1630710B1 (en) * 2004-07-21 2019-11-06 Microsoft Technology Licensing, LLC Containment of worms
US8639828B1 (en) * 2004-10-13 2014-01-28 Symantec Corporation Accelerated TCP network communications
US20070234330A1 (en) * 2006-03-01 2007-10-04 Microsoft Corporation Prevention of executable code modification
KR101003097B1 (ko) * 2007-12-18 2010-12-21 한국전자통신연구원 폴리몰픽 쉘코드 탐지방법
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US8856789B2 (en) * 2012-09-06 2014-10-07 Assured Information Security, Inc. Facilitating execution of a self-modifying executable
KR101429131B1 (ko) * 2013-06-12 2014-08-11 소프트캠프(주) 시스템 보호를 위한 파일 보안용 관리장치와 관리방법
US8943592B1 (en) 2013-07-15 2015-01-27 Eset, Spol. S.R.O. Methods of detection of software exploitation
US10229268B2 (en) * 2015-03-28 2019-03-12 Leviathan, Inc. System and method for emulation-based detection of malicious code with unmet operating system or architecture dependencies

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094496A1 (en) * 2005-10-25 2007-04-26 Michael Burtscher System and method for kernel-level pestware management
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
CN101645119A (zh) * 2008-08-07 2010-02-10 中国科学院软件研究所 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
CN102081719A (zh) * 2009-12-01 2011-06-01 王伟 基于动态污染传播的软件安全测试系统及方法
US20140181976A1 (en) * 2011-05-06 2014-06-26 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
US20140123280A1 (en) * 2012-10-30 2014-05-01 Gabriel Kedma Runtime detection of self-replicating malware
CN103221960A (zh) * 2012-12-10 2013-07-24 华为技术有限公司 恶意代码的检测方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
QINGHUA ZHANG,DOUGLAS S. REEVES,ET AL: "Analyzing Network Traffic To Detect Self- Decrypting Exploit Code", 《IN PROCEEDINGS OF THE ACM SYMPOSIUM ON》 *
刘智: "二进制代码级的漏洞攻击检测研究", 《中国博士学位论文全文数据库 信息科技辑》 *
赵帅: "苹果操作系统下应用程序的安全性研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
JP2018519603A (ja) 2018-07-19
EP3314513A1 (en) 2018-05-02
US10803165B2 (en) 2020-10-13
CN107912064B (zh) 2022-01-14
WO2017003601A1 (en) 2017-01-05
US20160381043A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
CN107912064A (zh) 壳代码检测
Balasubramanian et al. System programming in rust: Beyond safety
CN105393255B (zh) 用于虚拟机中的恶意软件检测的过程评估
TWI575397B (zh) 利用運行期代理器及動態安全分析之應用程式逐點保護技術
CN107430662B (zh) 识别进程的恶意运行
TWI590096B (zh) 來自程序的返回目標限制返回指令、處理器、方法、及系統
CN102592082B (zh) 通过操作码随机化的安全
US10210323B2 (en) Information assurance system for secure program execution
CN107408176A (zh) 恶意对象的执行剖析检测
CN112639778A (zh) 指针认证及指针认证方案之间的动态切换
JP6984710B2 (ja) コンピュータ装置およびメモリ管理方法
TW201941049A (zh) 用於轉換詮釋資料處理的指令的系統和方法
EP2973154B1 (en) Method, apparatus, system, and computer readable medium to provide secure operation
US20140282832A1 (en) Method, apparatus, system, and computer readable medium for providing apparatus security
CN106575336A (zh) 对敏感代码恶意调用的检测与抑制
EP3178032B1 (en) Embedding secret data in code
Küster et al. Monitoring real android malware
Ruan et al. Analyzing android application in real-time at kernel level
Qiang et al. Libsec: A hardware virtualization-based isolation for shared library
Tian et al. A policy‐centric approach to protecting OS kernel from vulnerable LKMs
US10452408B1 (en) System and method for intercepting data flow between a computer process and a file
US12099624B2 (en) Controlled data access via container visible location
CN113268726B (zh) 程序代码执行行为的监控方法、计算机设备
Heiland et al. (B) LOCKBOX--Secure Software Architecture with Blockchain Verification
McDaniel et al. Identifying weaknesses in VM/hypervisor interfaces

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
CB02 Change of applicant information

Address after: California, USA

Applicant after: MCAFEE, Inc.

Address before: American Texas

Applicant before: MCAFEE, Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant