CN105074717A - 在网络环境中的恶意脚本语言代码的检测 - Google Patents
在网络环境中的恶意脚本语言代码的检测 Download PDFInfo
- Publication number
- CN105074717A CN105074717A CN201480003756.XA CN201480003756A CN105074717A CN 105074717 A CN105074717 A CN 105074717A CN 201480003756 A CN201480003756 A CN 201480003756A CN 105074717 A CN105074717 A CN 105074717A
- Authority
- CN
- China
- Prior art keywords
- event
- script
- function
- compiling
- execution
- 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.)
- Pending
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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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/564—Static detection by virus signature recognition
-
- 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/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
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)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
在一个示例实施例中提供了一种方法并且包括发起经编译的脚本的执行、评价在该经编译的脚本中调用的函数、基于至少第一标准检测执行事件、以及在执行事件队列中存储于该执行事件相关联的信息。该方法还包括基于与执行事件队列中的至少一个执行事件相关联的信息来验证关联签名。在特定实施例中,该方法包括在由编译器对脚本进行编译期间评价脚本的赋值语句、基于至少第二标准检测编译事件、以及在编译事件队列中存储与该编译事件相关联的信息。在另一额外的实施例中,该关联签名的验证是部分地基于与该编译事件队列中的一个或多个编译事件相关联的信息的。
Description
技术领域
本公开总体上涉及网络安全领域,更特别地,涉及网络环境中恶意脚本语言代码的检测。
背景技术
计算机网络安全领域在当今社会越来越重要并且越来越复杂。计算机网络环境被配置用于几乎每个企业或组织,这些企业和组织典型地具有多个互连的计算机(例如,终端用户计算机、膝上型计算机、服务器、移动设备等)。典型地,该网络环境被配置以与其他网络环境经由广域网(例如互联网)进行通信。因此,各种文件可从一个终端主机转移至在相同的或不同的网络中的另一终端主机。这些文件可经由任何合适的电子通信机制传输,包括例如电子邮件(email)消息、超文本传输协议(HTTP)、文件传输协议(FTP)、和对等文件共享。
扫描可执行软件文件和其他对象的技术通常用于检测计算机上的恶意代码(“恶意软件”)或其他威胁。针对恶意软件来扫描对象总体上是使用已知恶意代码的静态签名执行的。计算机攻击者经常使用诸如JavaScript的脚本语言来在其它良性文件中***恶意代码。脚本语言可本质上是动态的,此外,模糊技术总体上用于进一步阻碍检测恶意代码。因此,需要创新的工具以在跨计算机网络环境转移的对象中检测脚本语言形式的恶意代码。
附图说明
为提供对本公开和特征及其优点的更完整的理解,结合附图对如下描述进行参考,其中相同附图标记表示相同部件,其中:
图1为简化框图,其示出了根据示例实施例的用于在网络环境中检测恶意脚本语言代码的通信***;
图2为简化框图,其示出了根据示例实施例的***的额外细节;
图3为简化流程图,其示出了可与本公开的实施例相关联的示例操作;
图4为简化流程图,其示出了可与本公开的实施例相关联的额外示例操作;
图5为简化流程图,其示出了可与本公开的实施例相关联的进一步示例操作;
图6为简化流程图,其示出了可与本公开的实施例相关联的更进一步的示例操作;
图7为根据实施例的示例处理器的简化的框图;以及
图8为根据实施例的示例计算***的简化框图。
具体实施方式
示例实施例
图1为简化框图,其示出了用于检测恶意脚本语言代码的通信***100的示例实现。可在网络115中提供终端主机1201至120n,网络115可为局域网(LAN)、内联网、或其他网络,网络115提供对诸如互联网的广域网(WAN)110和/或其他网络的访问。网络115还可包括安全设备130,安全设备130从诸如WAN110的其他网络接收进入到网络115的网络业务。安全设备还可接收外出到诸如WAN110的其他网络的网络业务。安全设备130可包括标准检测模块140、预处理模块145、脚本评价引擎150、函数评价模块160、和后评价模块170。安全设备还可包括处理器180和存储器元件190。本文中的合适的情况下,终端主机1201-n被统称为“多个终端主机120”并且单数地被称为“终端主机120”,以便于参考。
图1的元件可通过采用任何合适的连接的一个或多个接口(有线或无线)相互耦合,该任何合适的连接为网络通信提供可行的通路。另外地,图1的这些元件中的一个或多个可基于特定的配置需要而合并或从架构中移除。通信***100可包括能够传输控制协议/互联网协议(TCP/IP)通信以在网络中传输或接收分组的配置。通信***100还可结合用户数据报协议/IP(UDP/IP)或在合适的情况下的以及基于特定的需要的任何其它合适的协议来操作。另外地,通过蜂窝网络的无线电信号通信还可提供于通信***100中。
为了示出通信***100的技术,重要的是理解可呈现于给定网络(例如图1中示出的网络115)中的活动和安全关注。如下基础信息可视为可根据其而合适地说明本公开的基础。该信息仅被提供用于说明,并且因此,不应当以任何方式将这样的信息理解为限制本公开广泛的范围和其潜在应用。
网络业务可程序对计算机网络中的设备的许多安全威胁。安全威胁总体上属于如下分类中的一个或多个:(1)恶意软件;(2)间谍软件;(3)隐私威胁;和(4)易受攻击的应用程序。恶意软件包括被设计以参与电子设备上的恶意、敌意、侵入、不需要、和/或未授权的行为的软件或代码。恶意软件的示例可包括但不限于,计算机病毒、蠕虫、僵尸程序(bot)、和木马。恶意软件总体上包括被设计以通过对数据的未授权访问、破坏、公开、修改和/或对服务的拒绝来干扰计算机或网络的正常操作的任何软件。恶意软件通常被设计以在用户不知情的情况下执行动作,例如改变诸如终端主机的设备、从感染的设备发送未经请求的消息至其他设备、或通过设备给予攻击者远程控制。恶意软件还可用于从设备窃取个人信息,这些个人信息可导致身份盗用、金融诈骗或其他隐私侵犯(例如,个人医疗信息)。
间谍软件为被设计以在用户不知情或未许可的情况下收集或使用数据的软件。隐私威胁可由这样的应用程序所导致:该应用程序可能不一定危害设备,但可未经授权而收集或使用执行其主要功能所不必要的信息。这样的信息的示例可包括但不限于,用户的位置、联系人列表、个人可识别信息、财务信息、医疗信息、机密或敏感的企业数据等。
易受攻击的应用程序可包含可被用于恶意目的而利用的软件易受攻击生。例如,易受攻击性可经常允许攻击者使用恶意代码来访问敏感信息、执行不希望的动作、使服务停止正常工作、自动下载恶意软件或以其他方式参与不希望的行为。在一些实例,恶意代码可得到对易受攻击的应用程序的控制、破坏易受攻击的应用程序、和/或感染在其上执行易受攻击的应用程序的设备。
网络业务可将包含恶意代码的软件应用程序和其他对象传输至计算机网络环境中的终端主机和网络元件。例如,可下载的对象、附在电子邮件消息的对象、或经由对等通信传输的对象可导致恶意代码跨网络环境传输至接收终端主机或网络元件。特别地,诸如ECMAScript的脚本语言或其变型(例如JavaScript)可用于在诸如超文本标记语言(HTML)文件和便携式文档格式(PDF)文件中的嵌入代码。ECMAScript为由ECMA-262规范的Ecmainternational和ISO/IEC16262标准化的脚本语言。JavaScript代码可例如使用HTML文件的<script>标签或使用PDF文件的/JS或/JavaScript而作为脚本被嵌入文件。JavaScript可直接嵌入文件中,或嵌入包含可指定的JavaScript的外部文件中。
各种类型的安全解决方案可用于尝试防止恶意软件攻击、检测计算机上的恶意软件和其他威胁、和/或当需要时修复计算机。例如,基于签名的威胁检测为常用的防病毒技术,该技术涉及在对象内查找已知模式的数据。入侵阻止***(IPS)是一个示例,并且可被配置为基于网络的装置,该装置监听网络是的所有业务并尝试对其进行解析以查找网络业务内的恶意模式或攻击。IPS可生成在网络业务中接收到的对象的签名并将该签名与当前已知的恶意签名相比较。对象的签名可生成自密码哈希函数,密码哈希函数为从对象中获取数据块并返回固定大小的比特串的算法。该固定大小的比特串为哈希值或签名。哈希函数的示例可包括但不限于:1)报文摘要算法(例如,MD5),其由网络工作组定义、请求注解(RFC)1321,R.Rivest等,1992年4月,以及2)安全哈希算法(SHA-1、SHA-2、SHA3),由美国国家标准和技术(NIST)研究所发布以作为美国联邦信息处理标准。
在特定示例中,网络业务可为从网络服务器下载到终端主机上的浏览器的PDF文件。IPS可监听该网络业务,因为接收者终端主机知晓要传输什么,以便理解和解释文件格式。由IPS进行的标准检测可包括计算PDF文件的一个或多个MD5哈希并将该一个或多个哈希与已知的恶意代码的静态签名进行比较。如果存在匹配,则PDF文件可标识为恶意的。
尽管签名检测对于标识不发生变化的恶意静态对象可以是有用的,但是脚本语言可用于某些对象中以规避检测。如在网络(即,在网络业务中)上可见的JavaScript是自由形式文本。JavaScript的动态特质使允许攻击者引入多个规避技术,这些规避技术可绕开IPS签名检测。对于每个JavaScript,可产生新的规避。因此,使用静态签名的标准签名检测技术可能无法检测恶意代码。
图1的用于检测恶意脚本语言代码的通信***解决了前述问题(以及更多问题)中的许多问题。当由网络业务中的安全设备接收到具有脚本语言代码的对象时,诸如JavaScript的脚本语言代码被提取。尽管通信***100可适于其他形式的脚本语言,但是为便于参考,在本文称为“JavaScript”,以描述实施例的各个方面。在编译JavaScript代码期间使用启发式技术,以检测攻击者所使用的潜在的规避技术。规避技术可包括用于在脚本中隐藏数据或代码的编码、解码和/或计算。如果检测到任何规避技术,则引发编译事件并且与该事件相关联的信息可被存储并且在后评价分析期间与其他事件关联。
在JavaScript被编译之后,经编译的脚本被执行而同时监视调用特定函数(本文称为“相关函数”),其经常被用于帮助攻击者规避脚本的设计和模糊。基于启发式技术和触发的机制可在兴趣点处捕获流。执行中的兴趣点可包括指示执行脚本可能为恶意的事件。该事件可包括指示代码的模糊的函数,例如执行堆喷射(heapspray)的代码。另一兴趣点包括对壳代码(shellcode)的标识,壳代码为攻击者所使用的在感染的终端主机上执行的恶意代码。与事件相关联的信息可被存储以用于后续的执行分析。与编译事件和/或执行事件相关联的事件信息可被关联以验证恶意行为。捕获JavaScript的行为和关联的事件信息可揭示JavaScript流的实质,这可帮助确定该JavaScript是否意图采取任何恶意动作。
现在转向图2,图2为简化框图,其示出了与通信***100相关联的细节的一个可能的集合。脚本评价引擎150可包括编译器152、编译时启发式检测模块154、和执行引擎156。编译器152可接收诸如JavaScript200的输入文件,并且在编译该输入文件之后,可提供经编译的脚本300至执行引擎156。在经编译的脚本被提供至执行引擎156之前,编译时启发式检测模块154可在编译期间执行对规避和/或模糊技术的启发式检测并且可将检测到的经编译的事件添加到编译事件队列157。执行引擎156可与函数评价模块160和后评价模块170交互。函数评价模块160可包括事件分析模块162和相关数据分析模块166,事件分析模块162和相关的数据分析模块166可分别执行堆喷射检测164和壳代码检测168。函数评价模块160可将与检测到的执行事件相关联的信息添加到执行事件队列159。后评价模块170可基于关联签名175和来自编译事件队列157和执行事件队列159的信息来执行恶意事件关联172。在讨论与图1-2的架构相关联的可能的流程之前,提供了关于可包括于通信***100中的一些可能的基础设施的简单讨论。
总体上,通信***100可实现于任何类型或拓扑的网络中。网络115和广域网110的每一个表示用于接收和传输通过通信***100传播的信息的分组的互连通信路径的一系列点或节点。这些网络在节点之间提供通信接口,并且可被配置为任何局域网(LAN)、虚拟局域网(VLAN)、广域网(WAN)、无线局域网(WLAN)、城域网(MAN)、内联网、外联网、虚拟专用网(VPN)和便于网络环境中的通信(包括有线和/或无线通信)的任何其他合适的架构或***,或其任何合适的组合。
在通信***100中,可根据任何合适的通信消息发送协议来发送和接收包括分组、帧、信号、数据等的网络业务。合适的通信消息发送协议可包括多层机制,例如开放***互联(OSI)模型或其任何衍生物或变型(例如,传输控制协议/互联网协议(TCP/IP)、用户数据报协议/IP(UDP/IP))。另外地,在通信***100中还可以提供通过蜂窝网络通信的无线电信号。可提供合适的接口和基础设施以使能与蜂窝网络的通信。
如本文所使用的术语“数据”,指代二进制、数字、语音、视频、媒体、文本、或脚本数据中的任何类型,或源代码或目标代码中的任何类型,或可以以任何适当的格式从电子设备和/或网络的一点传送到另一点的任何其他信息。对象意图包括任何软件文件或包含可由计算机理解和处理的至少一些指令的其他数据。对象可包括例如可执行文件、库模块、目标代码、源代码、其他可执行模块、脚本文件、解释器文件、具有诸如JavaScript的嵌入脚本的PDF文件、具有诸如JavaScript的嵌入脚本的HTML文件等。
在可能的实施例中,通信***100包括安全设备130,以用于接收在终端主机120和其他终端主机之间经由广域网110或任何其他网络而进行通信的网络业务中的对象。安全设备130可为网络元件,其意图包含路由器、交换机、网关、网桥、负载均衡器、防火墙、内联服务节点、代理、服务器、装置、处理器、模块或任何其他合适的可操作以在网络环境中交换信息的设备、组件、元件或专有设备。该网络元件可包括任何合适的硬件、软件、组件、模块、引擎或便于它们的操作的接口。这可包括允许有效的数据交换的合适的算法和通信协议。
终端主机120意图包括任何电子设备、组件、或元件,所述电子设备、组件、或元件能够在通信***100内经由一些网络而执行语音、音频、视频、媒体和/或数据交换。终端主机包括于个人计算机、膝上型计算机、移动设备、智能装置和其他互联网连接的设备(例如,电视、数字视频录像机(DVR)、机顶盒、互联网无线电设备(IRD)等)。移动设备意图包括移动电话、智能移动电话(智能电话)、电子书阅读器、平板计算机、iPad、个人数字助理(PDA)、膝上型计算机或电子笔记本、便携式导航***、多媒体工具(例如,照相机、视频和/或音频播放器等)、游戏***、其他手持电子设备等。终端主机还可表示诸如服务器的网络元件,其可经由广域网110或一些其他网络来接收对象。终端主机可作为网络业务的源节点和/或目的节点。
在各个实施例中,安全设备130包括可协调、管理或以其他方式协作以便实现如本文所述的恶意脚本语言代码的检测的逻辑(和/或往复式逻辑)。注意,如本文进一步描述的,这些元件中的每一个可具有内部结构(例如,处理器、存储器元件等),以便于一些检测操作。检测活动的逻辑可被实现为软件、硬件、固件或其任何合适的组合。另外地,该元件可包括促成其操作的任何合适的算法、硬件、固件、软件、组件、模块、引擎、接口、或对象。
在一些实施例中,检测活动中的一些或全部可提供在这些元件外部(例如,安全设备130的外部)、包括在用于实现这些所期望的功能的其他设备中、或以任何合适的方式结合。在一个示例实施中,由脚本评价引擎150、函数评价模块160、和/或后评价模块170提供的功能可被提供在可经由广域网110(例如,互联网)或任何其他网络访问的云网络中。在另一示例实施中,由脚本评价引擎150、函数评价模块160、和/或后评价模块170提供的功能可被提供在一个或多个终端主机120或网络环境115的任何另一网络元件中。
编译事件队列157、执行事件队列159、和关联签名175可被配置为一个或多个队列、高速缓存、表格、列表、数据库、或任何其他合适的存储结构或其任何合适的组合。编译事件队列157、执行事件队列159和关联签名175可在使用例如一些网络存储技术(例如网络附接存储(NAS)或存储区域网络(SAN))的安全设备130的内部或外部(整个或部分地)。替代地,这些存储器元件可被配置在具有脚本评价引擎150、函数评价模块160、和/或后评价模块170的其它网络元件或终端主机中。
安全设备130可包含标准检测模块140,以用于评价已知可能为恶意的特定模式。在一个示例中,标准检测模块140计算接收到的对象的签名(或多个签名)并基于所计算的签名和已知的恶意签名的比较而确定对象是否包含恶意代码。
如果对象通过标准检测机制,则预处理模块145可预处理该对象以从该对象中获取脚本部分,例如JavaScript200。预处理可包括预过滤、提取、解压缩、和对象净化,使得JavaScript200实质上被配置以例如向终端主机120传输。最初,对象可提取自硬连线(wire)并转换为终端主机120可接收的原始格式。对象可被解析以查找JavaScript代码(例如,通过查找小于和大于符号)。所标识的脚本和其他相关信息(例如,基于事件的触发函数、形式、PDF文件的元数据等)可被提取。另外地,如果对象的任何部分被压缩,则安全设备130可解压缩这些部分,以得到JavaScript的精确代码。
脚本评价引擎150在隔离环境中仿真JavaScript200的执行,以确定JavaScript200是否包含恶意代码。脚本评价引擎包括编译器152和执行引擎156,以创建允许JavaScript200如同在真实应用中执行一样工作的最小执行环境。
在编译期间,编译器152可生成诸如抽象语法树(AST)的树结构来表示JavaScript200。编译器152将JavaScript200变换为通常称为“目标代码”并且在图2引用为经编译的脚本300的另一计算机语言。经编译的脚本300可由执行引擎156执行。
在本文的示例实施例中,编译时启发式检测模块154在编译期间与编译器152协作以基于一个或多个标准来检测在恶意代码中通常使用的特定规避和/或模糊技术。规避技术可用于使恶意代码模糊,从而使检测更加困难。一个规避技术涉及编码或解码以改变恶意代码的呈现。当使用编码时,JavaScript200的可读格式可被编码为一些其他格式。在示例情形中,编码可由攻击者使用以生成JavaScript。当该JavaScript被执行时,其可包含用于对数据进行解码以获取恶意壳代码的函数。可在编译期间被评价的另一规避技术包括使用计算以获取恶意活动所需要的值。该值可通过以不同的形式表示来隐藏。为了获取恶意代码所希望的值,可在一个或多个不同的形式上执行计算。
规避技术典型地使用某些函数调用来实现它们的目标。总体上,函数为当其被调用时所执行的代码或逻辑的块。可用于规避技术和满足一个或多个其他标准的某些函数,可为编译事件并且可由编译时启发式检测模块154检测。例如,编译时启发式检测模块154可检查JavaScript200并且可标识可指示规避和/或模糊的某些函数重新赋值和过长的变量名。这样的函数可涉及编码或解码活动(例如,UNESCAPEJavaScript函数)或对不同的值的计算(例如,EVALJavaScript函数)。该启发式检测可通过将该代码置于负责在编译期间生成抽象语法树的代码中而实现。
如果检测到编译事件,则编译时启发式检测模块154可引发编译事件。如本文所使用的,“引发事件”意图包括将与特定事件相关联的信息添加至合适的事件队列。因此,引发编译事件可包括将与编译事件相关联的信息添加到编译事件队列157以用于与关联于其他编译和/或执行事件的信息进行关联。在示例实施例中,与编译事件相关联的信息可包括触发该事件的函数的标识、事件在脚本中被检测的总次数、编译事件的预先确定的序列的标识、以及相对于脚本中某些其它编译事件的特定编译事件的时间和距离。关联可在经编译的脚本300由执行引擎156执行之后执行。然而,在一些实例中,关联可在由执行引擎156执行经编译的脚本300期间执行。
脚本评价引擎150中的执行引擎156可为JavaScript引擎,其允许经编译的脚本300中的函数被执行。执行引擎156被配置以允许经编译的脚本300如同在真实应用中执行一样被执行。在示例实现中,代码被钩进(hookinto)JavaScript调用的现有函数中。因此,当与在运行时期间检测恶意代码有关的函数(本文称为“相关函数”)在经编译的脚本300中被调用时,执行引擎156执行该被钩进的代码。一些函数可不与检测恶意代码有关,并且因此,可不包含钩。然而,当相关函数在经编译的脚本300中被调用时,被钩进的代码允许执行引擎156将控制传送至函数评价模块160。
如果相关函数在经编译的脚本300的执行期间被调用,则执行引擎156将相关数据传输至函数评价模块160。相关数据可包括标识号,以确定当前执行的函数和上下文(context)。函数评价模块160可执行相关函数的原始代码并针对恶意活动的指示而分析相关函数的行为。函数的上下文及其参数可用于分析其行为。
函数评价模块160可包括一个或多个模块以基于一个或多个标准执行各种分析以检测不同的执行事件。当事件分析模块162和相关数据分析模块166评价相关函数时,执行事件可由它们来检测。在示例实施例中,执行事件可包括1)满足预先确定的的阈值的函数的参数,2)可用于规避和/或模糊技术的函数,3)已知具有用于恶意行为的高信用的函数、和/或4)如果使用结合特定对象类型使用,则可异常地被用作恶意行为的函数。如果函数评价模块160检测到执行事件,则函数评价模块160可引发该执行事件。引发执行事件可包括将与执行事件相关联的信息添加到执行事件队列159。在示例实施例中,与执行事件相关联的信息可包括但不限于:触发事件的函数的标识、在执行脚本中的事件已发生的总次数、编译和/或执行事件的预先确定的序列的标识、以及相对于执行脚本中某些其它执行事件的特定执行事件的时间和距离。
事件的预先确定的序列可定义两个或更多个特定事件,当在脚本的编译和/或执行期间被引发时,这些特定事件指示潜在地恶意行为。因此,当引发编译或执行事件时,可存储检测到的事件的预先确定的序列的标识。事件的预先确定的序列可在其定义中要求特定事件以随机发生或执行、或以指定的顺序发生或执行。在示例情形中,事件的预先确定的序列可在其定义中包括涉及相同的变量的两个或更多个事件,无论它们在编译期间何时发生或它们何时被执行。在这种情况下,当涉及引发先前的事件的变量的第二事件(编译或执行)被引发时,事件的预先确定的序列可被检测并且信息(例如,序列的标识)可被添加到合适的事件队列157或159。
在实施例中,事件分析模块162可检测并引发与参数有关的执行事件。当一个或多个参数被传递至函数并且任何参数满足预先确定的的阈值时,可引发执行事件。在一个示例中,可计数参数中字符的数量。如果字符数量大于针对参数字符的预先确定的阈值,则可引发执行事件。与所引发的执行事件相关联的信息可被添加到执行事件队列159。
在实施例中,事件分析模块162可检测并引发与规避和/或模糊技术有关的执行事件。除编译时间外,还可在运行期间来分析的一种规避技术涉及编码和/或解码以改变恶意代码的呈现。如果编码或解码函数是针对较大的串来使用的并且所得到的串的长度大于预先确定的阈值长度,则可引发执行事件。例如,如果UNESCAPEJavaScript函数被调用并且所得到的串长度大于700二进制/原始字节,则可引发执行事件。由此,与所引发的执行事件相关联的信息可被添加到执行事件队列159。
除编译时间外,还可在运行时期间来分析的另一规避技术涉及表达式的计算。如果针对表达式执行计算,则结果可用于指向为恶意代码的一部分或由恶意代码使用的另一串。因此,如果计算函数被执行,并且数据大小大于预先确定的阈值大小,则可引发执行事件。例如,如果EVALJavaScript函数被调用并且EVAL数据大于1024二进制/原始字节,则可引发执行事件。由此,与所引发的执行事件相关联的信息可被添加到执行事件队列159。
可在运行期间来分析的另一规避技术涉及指向数据串或变量的指针,其中串或变量的一部分包含壳代码。指针可指示串或变量内的字节位置(例如,针对2000字节串的20字节的字节位置1000)。指定的字节可包含壳代码,其可通过使用该信息被提取和执行。替代地,该技术可用于从串或变量内的位置提取壳代码,然后将其与存储于其他位置中的其他壳代码块并置。可以使用指针来作为规避技术的函数的特定的示例包括:STRINGFROMCHARCODE、CHARCODEAT、或CHARATJavaScript函数。因为使用这些函数以用于规避和/或模糊目的是非常普遍的,使用这些函数的执行本身可被配置为执行事件。因此,在一些实施例中,当这些函数被执行时,可在不满足阈值参数的情况下引发执行事件。与所引发的执行事件相关联的信息可被添加到执行事件队列159并且执行事件可与稍后引发的其他事件关联。
另一规避技术涉及将壳代码(即,恶意代码)分割为不同的代码块并且在不同的位置存储这些块。块可稍后被并置为一段代码。在各个位置的多个代码块减少了检测机会。当针对串的并置函数被调用时,如果被并置的串的最终长度满足预先确定的阈值长度,则其可被引发为事件。例如,如果STRCATJavaScript函数被调用并且被并置的串的所得到的长度大于2*1024字节,则可引发执行事件。由此,与所引发的执行事件相关联的信息可被添加到执行事件队列159。
类似于串并置技术的规避技术涉及并置阵列。阵列可被并置以更高效地利用所希望的数据来清理非常大量的存储器。在特定情形中,堆喷射为恶意技术,其中无操作(NOP)指令存储于大的存储器块并且恶意代码存储在该块中的某个位置。堆喷射成功的可能性随着存储于存储器中的NOP指令数量增加而增加。并置阵列为在非常大的存储器块中存储NOP的高效的方式。因此,如果阵列并置函数被调用,如果并置的阵列的最终长度满足预先确定的阈值长度,则可被引发为执行事件。例如,如果ARRYA.CONCATJavaScript函数被调用并且所得到的并置的阵列的结果长度大于2*1024字节,则可引发执行事件可产生。由此,与所引发的执行事件相关联的信息可被添加到执行事件队列159。
对NOP进行编码还可用作规避技术来避免检测。因此,如果检测到解码函数并且得到已知作为NOP指令或其他什么都不做指令的字符,则可引发执行事件。在特定示例中,如果UNESCAPEJavaScript函数被使用并且所得到的字符为0x9090、0x4141、或0x0c0c,则可引发执行事件。由此,与所引发的执行事件相关联的信息可被添加到执行事件队列159。
实现规避的另一方式涉及构造串并且替换串内的位置中的一些数据,其中该数据为恶意代码或最终变换为恶意代码。在该情形中,在任何给定时间,串的模式匹配将不产生与已知的恶意代码的匹配。因此,如果替换函数被调用,并且所替换的数据的长度满足预先确定的阈值长度,则可引发执行事件。例如,如果REPLACEJavaScript函数被调用,并且所替换的数据的长度大于512字节,则可引发执行事件。由此,与所引发的执行事件相关联的信息可被添加到执行事件队列159。
在实施例中,当函数被调用并且已知该函数具有被用于恶意活动的高信用时,函数评价模块160的相关数据分析模块166可检测并且引发执行事件。高信用函数的一个示例为执行动态函数创建的函数。总体上,当通过网页或PDF对象下载JavaScript时,如果JavaScript被嵌入对象中,则典型地非常简单。例如,这样的JavaScript可被配置为帮助呈现HTML页面。总体上动态函数不需要呈现任何内容,并且因此,动态函数为恶意行为的高级指示。因此,当检测到动态函数创建时,可引发执行事件并且与动态函数创建相关联的信息可存储于执行事件队列159中。在实施例中,还可引发并且存储函数体本身。
另一高信用函数的示例为终端主机上的易受攻击性的壳代码利用。相关数据分析模块166可执行壳代码检测168,以确定在执行的函数是否被配置为利用终端主机上的易受攻击性。所述利用的示例涉及获得对与包含正在被评价的JavaScript的对象相关联的软件应用程序的控制。例如,如果JavaScript200被嵌入PDF对象中,则AdobePDF阅读器可用于目的终端主机以读取PDF对象。如果AdobePDF阅读器包含任何易受攻击性,则恶意JavaScript函数可获取对阅读器的控制,潜在地破坏阅读器、和/或感染运行AdobePDF阅读器的终端主机的***。
为实现所描述的壳代码的利用,JavaScript200可包含壳代码,其使恶意代码在具有特定处理器的终端主机内作为本地指令运行。例如,利用终端主机的易受攻击性的恶意代码可以是以包含由终端主机的特定处理器可理解的指令的格式来写的。因此,终端主机能够执行恶意代码,并且由恶意代码控制。
在壳代码检测168的实施例中,经编译的脚本本身可被检查。如果经编译的脚本300包含目的终端主机的特定处理器能够理解的任何指令,则其为指示恶意软件高信用的函数,并且因此为执行事件。执行事件可被引发并且与执行事件相关联的信息可存储于执行事件队列159中。任何合适的已知机制(例如,可插接第三方库)可由例如相关数据分析模块166使用以检测壳代码。
在实施例中,事件分析模块162可进一步检测并且引发与结合特定对象类型使用的函数有关的执行事件。在实施例中,结合超文本标记语言(HTML)对象使用的某些JavaScript函数可被引发为执行事件。某些JavaScript函数可在HTML文件内使用以生成数据和/或脚本并将它们写回正在下载的当前文件中。可基于预先确定的阈值(例如长度)来评价数据和/或脚本,并且对应的函数可被引发为执行事件。在一个示例实现中,如果该类型的JavaScript函数被调用并且所写的数据的长度大于5*1024,则可引发执行事件。由此,与执行事件相关联的信息可被添加到执行事件队列159中。此外,如果所写的数据包含脚本,则执行引擎156可处理额外的脚本,以便评价函数。
可在某些特定实现中引发的另一执行事件包括不具有脚本标签的函数。脚本标签定义要被提取和执行的JavaScript部分。在脚本标签中,某些变量被定义以指示脚本必须遵循的格式,以使浏览器或PDF阅读器理解代码使得该代码可被执行。如果脚本标签丢失,则浏览器不能理解该格式并且执行可能失败或发生故障。该事件可被引发,或可仅在特定对象已具有异常或其他事件时被引发。
在示例实施例中,函数评价模块160的事件分析模块162还可基于其他所引发的执行事件来执行堆喷射检测164。该分析可在经编译的脚本300的执行期间来执行,这是因为只要基于所引发的事件而使高信用关联签名被验证,就可更高效地引发警告。然而,在其它实施例中,堆喷射检测可在经编译的脚本300结束执行之后来执行。在这些实施例中,其可在后评价模块170中利用其他关联签名检查来执行。
堆喷射为广泛使用以增加在终端主机的处理器上携带壳代码的本地代码的执行成功率的技术。壳代码可使用缓冲器溢出来利用终端主机上的易受攻击性。缓冲器溢出可当缓冲器被定义时发生,函数被调用,然后返回地址被推送至缓冲器中。典型地,溢出技术已用于改变返回地址并且在由新的返回地址指示的位置中存储恶意壳代码。因此,当函数被返回时,其被返回至恶意壳代码的位置。然而,当前的安全机制使得该技术难以由攻击者完成。
堆喷射技术帮助避免攻击者不能使用缓冲器溢出技术。堆喷射将大块的NOP(即,简称“无操作”)指令以及壳代码复制至存储器中。NOP指令为汇编语言指令,其实际上什么也不做。在堆喷射中,利用NOP指令清理存储器并且攻击者的壳代码被嵌入该存储器的部分中。尽管攻击者可能不使用固定的返回地址来溢出原始返回地址,但是回到具有NOP指令的特定存储器段的机会可以是显著的。这在NOP指令消耗存储器的大范围时尤其如此。
在实施例中,事件分析模块162被配置为在经编译的脚本300的执行期间检测堆喷射动作。当执行事件队列159中的信息指示串并置函数已被调用多次并且所得到的并置的串的长度满足预先确定的阈值长度时,检测到堆喷射。例如,如果STRCATJavaScript函数已被调用多次,并且如果所得到的串长度大于3*1024,则引发堆喷射执行事件。变量可控制该确定。在示例实施例中,变量可存储于或链接至执行事件队列159。如果检测到堆喷射执行事件,则可采取合适的动作并且在一些实施例中可终止经编译的脚本300的执行。
在函数评价模块160完成其对函数的评价之后,控制可返回给执行引擎156。可在每次当经编译的脚本300的相关函数被调用时将控制传递回给函数评价模块160。一旦当经编译的脚本300的所有函数已完成评价和执行,后评价模块170可提后评价分析。
后评价模块170可基于关联签名175和编译事件队列157和执行事件队列159中的事件信息来执行恶意事件关联172。在实施例中,关联签名定义事件信息的各种组合。每个组合已被确定以指示具有编译和/或执行事件的特定组合的脚本是恶意的。事件信息可包括例如事件发生的次数、相对于其他事件的该事件的发生的时间和位置、和/或触发事件的每个函数被分配的权重。恶意事件关联172包括基于关联签名175来评价事件队列157和159中的事件信息,以确定JavaScript,并且因此其对应的对象是否是恶意的。
在实施例中,当关联签名为固定的关联签名时,一些关联签名可以为永久的。在示例中,固定的关联签名可以包括被调用了预先确定的阈值次数的指针函数。例如,如果CHARAT、CHARCODEAT、和/或STRINGFROMCHARCODEJavaScript函数被调用多于5次,则固定的关联签名可指示JavaScript是恶意的。在另一示例中,固定的关联签名可包括与编码、解码和/或计算函数有关的事件。例如,如果针对导致大量数据的编码/解码函数(例如,UNESCAPEJavaScript函数)引发了第一事件,并且针对在编码/解码事件的5个事件内发生计算函数(例如,EVALJavaScript函数)引发了另一事件,则固定的关联签名可指示JavaScript是恶意的。在进一步的示例中,如果针对动态函数创建的执行事件在对应于替换函数的执行事件的某个距离(例如,事件数量)内发生,则固定的关联签名可指示恶意的JavaScript。例如,如果在针对REPLACEJavaScript函数(其中串中的所替换的数据满足预先确定的阈值长度(例如,>512字节))所引发的事件的2个事件内针对动态函数创建而引发了执行事件,则固定的关联签名可提供JavaScript函数是恶意的。
本文针对各种相关函数、预先确定的阈值、和关联签名所提供的特定示例意在是示例性的而不是限制性的。将显而易见的是,本公开的概念可应用于许多不同的函数和这些函数的阈值。类似地,通过使用执行和/或编译事件的各种组合,可应用本文提供的概念以定义许多不同的关联签名。此外,概念可进一步应用于其他JavaScript函数(或其他脚本语言函数),而非在本文特别地举例说明的函数。最后,触发执行事件和/或编译事件的相关函数和对应的阈值可由厂商、终端用户或两者来配置。类似地,定义关联签名的事件的组合可由厂商、终端用户、或两者来配置。
转向图3,流程图示出了可至少部分地由脚本评价引擎150的编译时启发式检测模块154执行的活动的流程300。流程300可在由编译器152执行对JavaScript200的编译期间执行。在一个示例实施例中,可针对JavaScript200中的每个语句执行流程300。
在302,编译时启发式检测模块154基于至少一个标准来评价诸如JavaScript200的脚本中的语句,以便检测编译事件,该标准可为赋值语句的右侧值或左侧变量。如果例如在304确定语句不是赋值,则流程可终止。然而,如果语句尝试重新赋值变量,则在306,赋值语句的右侧值可被评价以确定右侧值是否生成自规避和/或模糊函数。规避和/或模糊函数可为将数据从一个格式转换成另一格式的编码/解码函数(例如,UNESCAPEJavaScript函数)。另一规避和/或模糊函数可为计算函数,其对表达式或值执行计算(例如,EVALJavaScript函数)。如果在赋值语句的右侧发现规避和/或模糊函数,如在308确定的,则在310可通过将与编译事件相关联的信息添加到编译事件队列157而引发编译事件。与编译事件相关联的信息可基于在赋值语句中一数值被赋值到的变量的范围。范围可指示变量在脚本中是局部的(即,仅对一个函数)或全局的(即,在全脚本中)。另外地,如果在赋值语句中发现多个规避和/或模糊函数,则可引发多个编译事件。
在312,赋值语句的左侧也可被评价以确定变量名是否异常。总体上,可基于变量名的长度(例如,大于预先确定的阈值)或基于变量名的随机性来将变量名标识为异常。长度和随机性两者都可指示由恶意算法而非合法编程者创建的变量名。这些示例并非意为限制性的,并且将显而易见的是,变量名的其他特性还可指示恶意行为。如果在314确定变量名为异常,则编译事件在316可通过将与编译事件相关联的信息添加到编译事件队列157而引发编译事件。该信息可基于赋值语句中的变量的范围。该范围可指示变量在脚本中是否为局部的或全局的。另外地,如果在赋值语句中发现多个异常变量名,则可引发多个编译事件。
在一些实施例中,可执行另一检查。赋值语句的右侧值可潜在地被评价以确定右侧值是否异常地长。如果确定右侧值异常地长(例如,大于预先确定的阈值长度),则可通过将与该事件相关联的信息添加到编译事件队列而引发编译事件。该信息可基于在赋值语句中一数值被赋值到的变量的范围。然而,在其它实施例中,该检查可不在编译期间执行。相反,类似评价可在经编译的脚本的执行期间执行,如将参考图5在本文进一步的描述。
转向图4,流程图示出了可至少部分地由脚本评价引擎150的执行引擎156执行的活动的流程400。当从编译器152接收经编译的脚本300时执行流程400。
在402,执行引擎156从编译器152接收经编译的脚本300(例如,可执行的JavaScript)。在404,执行引擎156发起经编译的脚本的执行。在406,确定被调用的函数是否与针对恶意代码的分析相关。在实施例中,基于代码是否被钩进函数中从而导致控制在函数开始时离开执行引擎来做出该确定。
如果函数是相关的,则在408,被钩进的代码可将控制传递至函数评价模块160,由图4中的B表示。一旦函数评价模块完成其评价,在410,执行引擎156就从函数评价模块160接收回控制,由图4中的A表示。一旦执行引擎156接收回控制,或如果在406确定函数是不相关的(例如,函数不包含代码钩),则在412,执行引擎156可继续执行经编译的脚本。
在414,确定在经编译的脚本中另一函数是否被调用。如果另一函数被调用,则流程可回到406。如果函数与检测恶意代码相关,并且因此包含到函数评价模块160的钩,则控制可被传递到函数评价模块160。对于经编译的脚本300中调用的每个相关的函数,该处理可继续。当在414不再有函数被调用时,则经编译的脚本的所有函数已被执行并且编译和执行事件的后评价分析可在416执行。
在图5中,流程图示出了可至少部分地由函数评价模块160执行的活动的流程500。在实施例中,当相关函数中的被钩进的代码将控制从执行引擎156传递至函数评价模块160时,可执行流程500,如由图5中的B指示的。
在502,在执行引擎156中执行经编译的脚本时,函数评价模块160接收对在经编译的脚本300中调用的相关函数(例如,已被钩进的JavaScript函数)的控制。在504,可基于至少一个标准(例如,函数类型、预先确定的阈值)来评价所调用的函数的执行,以便检测执行事件。在506,确定被传递至函数的任何参数是否具有大于预先确定的阈值的长度。如果发现这样的参数,则在516可通过将与参数执行事件有关的信息添加到执行事件队列159而引发执行事件。
如果没有参数满足阈值,则在510,确定所调用的函数是否使用任何规避和/或模糊技术。例如,可以用于本文先前描述的规避和/或模糊技术的JavaScript函数包括、但不限于:UNESCAPE、EVAL、STRCAT、STRINGFROMCHARCODE、CHARCODEAT、CHARAT、ARRAY.CONCAT、UNESCAPE、和REPLACE。如果所调用的函数为规避或模糊函数并且如果函数满足针对该特定函数(例如,预先确定的阈值,例如长度、大小等)的其他所要求的标准,则可在516通过将与规避和/或模糊执行事件有关的信息添加到执行事件队列159而引发事件。
如果所调用的函数不是规避或模糊函数、或如果所调用的函数为规避或模糊函数但不满足其相应的其他标准(例如,满足阈值),则在512,确定函数是否为高信用的恶意行为函数。例如,如本文先前描述的具有恶意行为的高信用的JavaScript函数,包括但不限于:导致动态函数创建的函数以及壳代码检测。如果所调用函的数为具有恶意行为的高信用的函数,则可在516通过将与高信用执行事件有关的信息添加到执行事件队列159而引发执行事件。
如果所调用的函数不是高信用函数,则在514,确定函数是否为可对于特定对象类型(例如HTML)而异常地使用的函数。例如,可作为利用HTML的恶意技术的某些JavaScript函数包括在HTML文件内使用的函数,以生成大量数据和/或脚本并且将该大量数据和脚本数据写回正在下载的当前文件中。如果所调用的函数为可异常地被使用作为利用特定对象类型(例如HTML)的恶意技术的函数,并且如果该函数满足任何其他所要求标准,则可在516通过将与特定对象类型执行事件有关的信息添加到执行事件队列159而引发执行事件。
一旦对于特定的所调用的函数的评价完成时,则在518,在将控制传递回执行引擎156之前,可执行验证以确定高信用关联签名的存在。例如,验证可确定事件队列157和159中的事件信息是否与高信用关联签名(例如针对堆喷射的关联签名)匹配。如果在520确定高信用关联签名存在,则在522可采取任何合适的动作。例如,对应于脚本的对象可被阻止或隔离。还可发送警告、可记录恶意代码检测的日志等。一旦流程500结束执行,控制就可被传递回执行引擎156,如由图5中的A指示的。
在图6中,流程图示出了可至少部分地由后评价模块170执行的活动的流程600。在实施例中,流程600可当经编译的脚本300中的所有函数已由执行引擎156执行时执行。
在602,来自事件队列157和159的事件信息可被关联以确定脚本是否包含恶意代码。这可通过基于来自编译事件队列157和/或执行事件队列159的事件信息而验证固定的关联签名(例如,来自关联签名175)来实现。例如,一个固定的关联签名可包括指针函数,其被调用预先确定的阈值次数。另一固定的关联签名可包括计算函数的预先确定的位置内的编码和/或解码函数。又一固的定关联签名可包括在替换函数的时间和距离内发生的动态函数创建。如果在604验证了固定的关联签名,则在610,可采取任何合适的动作(例如,阻止对象、隔离对象、发送警告、记录恶意代码检测等)。
然而,如果在604未验证固定的关联签名,则在606,可验证可修改的关联签名(例如,来自关联签名175)。可修改关联签名可由用户配置和/或可包括默认关联签名。如果在608验证可修改的关联签名,则在610,可采取任何合适的动作(例如,阻止对象、隔离对象、发送警告、记录恶意代码检测等)。然而,如果在608未验证可修改的关联签名,则流程600可技术,并且经编译的脚本可被认为是非恶意的。
关联签名(固定的关联签名和可修改的关联签名)可包括事件的特定组合、事件的发生的次数、相对于其他事件的该发生的时间和/或位置、和/或函数权重,以确定脚本是否为恶意的。
图7-8为可根据本文公开的实施例使用的示例性计算机架构的框图。也可以使用本领域已知的针对处理器和计算***的其他计算机架构设计。总体上,针对本文公开的实施例的合适的计算机架构可包括但不限于图7-8中所示出的配置。
图7为根据实施例的处理器示例示出。处理器700为安全设备130的处理器180的一个示例实施例。
图7还示出了根据实施例的耦合到处理器700的存储器702。存储器702为安全设备130的存储器元件190的一个示例实施例。存储器702可为本领域技术人员已知的或以其它方式能够使用各种存储器(包括存储器层次结构的各个层)中的任何存储器。这样的存储器元件可包括但不限于,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)、以及电可擦除可编程ROM(EEPROM)。
处理器700可执行与操作相关联的任何类型的指令,以检测本文详细描述的恶意脚本语言代码。总体上,处理器700可将元素或制品(例如,数据)从一个状态或事物转换成另一个状态或事物。
代码704可为要由处理器700执行的一个或多个指令,代码704可存储于存储器702中。代码704可包括各种模块(例如,标准检测模块140、预处理模块145、脚本评价引擎150、函数评价模块160、后评价模块170等)的指令,代码704可存储于软件、硬件、固件或其任何合适的组合、或任何其他合适的并且基于特定需要的内部或外部组件、设备、元件、或对象中。在一个示例中,处理器700可遵循由代码704指示的指令的程序序列。每个指令进入前端逻辑706并且由一个或多个解码器708处理。解码器可生成(作为该解码器的输出)微操作,例如以预先确定的格式的固定宽度的微操作,或可生成反映原始代码指令的其他指令、微指令、或控制信号。前端逻辑706还包括寄存器重命名逻辑710和调度逻辑712,它们总体上对应于要执行的指令来分配资源以及将操作入队。
处理器700可还包括具有一组执行单元7161至716m的执行逻辑714。一些实施例可包括专用于特定函数或函数组的多个执行单元。其他实施例可仅包括一个执行单元或可执行特定函数的一个执行单元。执行逻辑714执行由代码指令指定的操作。
在完成由代码指令指定的操作的执行之后,后端逻辑718可使代码704的指令退出。在一个实施例,处理器700允许乱序执行并且要求有序的指令的退出。退出逻辑720可采用多种已知的形式(例如,重排序缓冲器等)。以这种方式,处理器700在代码704的执行期间被转换,至少在由解码器生成的输出、由寄存器重命名逻辑710利用的硬件寄存器和表格、以及由执行逻辑714修改的任何寄存器(未示出)等方面。
尽管在图7中未示出,但是处理元件可包括在具有处理器700的芯片上的其他元件。例如,处理元件可包括与处理器700一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可包括一个或多个高速缓存。在一些实施例中,非易失性存储器(例如闪速存储器或熔丝)还可被包括在具有处理器700的芯片上。
现参照图8,图8示出了根据实施例被布置成点对点(PtP)配置的计算***800。特别地,图8示出了一种***,其中处理器、存储器、和输入/输出设备由多个点对点接口互连。总体上,通信***100的一个或多个计算***可以以与计算***800相同的或类似的方式被配置。例如,本文示出和描述的安全设备130和终端主机120可以以与示例性计算***800相同的或类似方式被配置。
处理器870和880每个还可包括集成的存储器控制器逻辑(MC)872和882,以与存储器元件832和834相通信。在替代的实施例中,存储器控制器逻辑872和882可为独立于处理器870和880的分立的逻辑。存储器元件832和/或834可存储要由处理器870和880在实现与检测恶意脚本语言代码相关联的操作中使用的各种数据,如本文概括的。
处理器870和880可为任何类型的处理器,例如参考图7的处理器700以及图1的处理器180的讨论那些处理器。处理器870和880可分别使用点对点接口电路878和888经由点对点(PtP)接口850来交换数据。处理器870和880每个可使用点对点接口电路876、886、894和898经由独立的点对点接口852和854与芯片组890交换数据。芯片组890还可使用可为PtP接口电路的接口电路892经由高性能图形接口839来与高性能图形电路838交换数据。在替代的实施例中,图8中示出的任何或全部PtP链路可被实现为多点分支总线而不是PtP链路。
芯片组890可经由接口电路896与总线820通信。总线820可具有通过其进行通信的一个或多个设备,例如总线桥818和I/O设备816。经由总线810,总线桥818可与其他设备通信,例如键盘/鼠标812(或其他输入设备,例如触摸屏、跟踪球等)、通信设备826(例如可通过计算机网络860通信的调制解调器、网络接口设备或其他类型的通信设备)、音频I/O设备814和/或数据存储设备828。数据存储设备828可存储代码830,代码830可由处理器870和/或880执行。在替代的实施例中,总线架构的任何部分可利用一个或多个PtP链路实现。
图8中描绘的计算机***为可被利用以实现本文讨论的各种实施例的计算***的实施例的示意性示出。应当理解,图8中描绘的***的各种组件可合并于片上***(SoC)架构中或合并于能够检测恶意脚本语言代码的任何其他合适的配置中,如本文所提供的。
本文概括的通信***100的检测功能,可由以在一个或多个有形的介质(例如,在专用集成电路(ASIC)的嵌入式逻辑、数字信号处理器(DSP)指令、由处理器(例如,处理器180)或其他类似机器执行的软件(潜在地包括对象代码和源代码)等)中编码的逻辑来实现。有形的介质在至少一些实施例中可为非瞬时性的。在这些实例中的一些中,存储器(例如,存储器元件190)可存储用于本文描述的操作的数据。这包括能够存储被执行以实现说明书中描述的活动的软件、逻辑、代码或处理器指令的存储器。在实施例中,有形的介质可在安全设备130中提供。
另外地,被跟踪、发送、接收或存储于通信***100中的信息(例如,执行事件信息、编译事件信息、关联签名等)可基于特定需要和实现而提供于任何数据库、寄存器、表格、高速缓存、队列、控制列表、或存储结构中,可以以任何合适的时间表(timeframe)来参照所有这些。本文讨论的任何存储器项应当被解释为包含于广义术语“存储器元件”中。类似地,说明书描述的任何潜在的处理元件、模块和机器应当被解释为包含于广义术语“处理器”中。
注意,利用本文提供的许多示例,可以以多个网络元件、计算***、模块和/或其他组件的形式来描述交互。然而,这仅用于清楚和示例的目的。应当理解,***可以任何合适的方式合并。利用类似的设计替代物,图1中的任何示出的模块、节点、元件和其他组件可在各个可能的配置中被合并或分割,所有这些显然在本说明书的范围内。应当理解,图1的***(及其教导)是容易缩放的并且可容纳大量的组件以及更复杂的/高级的布置和配置。由此,因为所提供的示例可能应用于多种其他架构,所以所提供的示例不应限制***100的范围或约束其广义教导。
还重要的是,应注意参考前述附图描述的操作仅示出了可由***执行或在***内执行的一些可能的情形。在合适的情况下,这些操作中的一些可被删除或移除,或这些操作可被显著修改或改变而不背离所讨论概念的范围。此外,这些操作的时序可显著改变并且仍然实现本公开中教导的结果。前述操作流已被提供用于示例和讨论的目的。由***提供的实质上的灵活性在于可提供任何合适的布局、时间顺序、配置、和时序机制而不背离所讨论概念的教导。
在其它示例中,本文描述的功能可包含专有元件(如作为防病毒解决方案的一部分),其可被提供于(或接近于)这些标识的元件中,或被提供于任何其他网络元件或其他设备中,或被提供为补充的解决方案(例如,结合防火墙),或被提供于网络的某处。此外,本文描述的功能可以任何合适的方式合并。
以下示例涉及根据本说明书的实施例。一个或多个实施例可提供用于在网络环境脚本中检测恶意代码的方法。该方法可包含:发起经编译的脚本的执行;评价在经编译的脚本中调用的函数;基于至少第一标准检测执行事件;在执行事件队列中存储与执行事件相关联的信息;以及基于与执行事件队列中的至少一个执行事件相关联的信息来验证关联签名。
实施例的示例可进一步包含:在由编译器对脚本进行编译期间评价脚本的赋值语句,其中经编译的脚本生成自该脚本;基于至少第二标准检测编译事件;并且在编译事件队列中存储与编译事件相关联的信息。
在实施例的示例中,验证关联签名是部分地基于与编译事件队列中的编译事件相关联的信息的。
在实施例的示例中,编译事件队列和执行事件队列被集成。
在实施例的示例中,当经编译的脚本被执行时执行验证。
在实施例的示例中,当经编译的脚本完成执行时执行验证。
在实施例的示例中,关联签名可由用户配置。
在实施例的示例中,一个或多个参数在执行期间被传递至函数,并且第一标准是基于所述参数中的任意一个的预先确定的阈值长度的。
在实施例的示例中,该函数对数据进行编码或解码,并且第一标准是基于由该函数产生的串的预先确定的阈值长度的。
在实施例的示例中,该函数对数据进行并置,并且第一标准是基于由并置的数据产生的串的预先确定的阈值长度的。
实施例的示例进一步可包含:响应于确定函数为预先确定的相关函数,当函数被调用时将控制从执行引擎传递至函数评价模块;并且当函数结束执行时将控制从函数评价模块传递至执行引擎。
在实施例的示例中,信息包括以下中的一个或多个:执行事件的标识、已检测到的执行事件的次数、预先确定的事件的序列的标识、以及执行事件和一个或多个其他执行事件之间的距离。
在实施例的示例中,验证关联签名是部分地基于被分配至函数的权重的,其中所述权重表示函数的相对重要性。
在实施例的示例中,第二标准包括评价赋值语句的右侧值。
在实施例的示例中,第二标准包括评价赋值语句的左侧变量名。
在实施例的示例中,函数为一个或多个预先确定的相关函数中的一个。
一个或多个实施例可提供一种用于检测网络环境中的脚本中的恶意代码的装置。该装置可包含:一个或多个处理器;执行引擎,其被配置为在一个或多个处理器中的至少一个上执行以发起经编译的脚本的执行;以及函数评价模块,其被配置为在至少一个处理器上执行以:评价在经编译的脚本中调用的函数;基于至少第一标准检测执行事件;并且在执行事件队列中存储与执行事件相关联的信息,其中关联签名是基于与执行事件队列中的至少一个执行事件相关联的信息来进行验证的。
在实施例的示例中,在经编译的脚本的执行完成之前,函数评价模块验证关联签名。
实施例的示例可进一步包含:后评价模块,其被配置为在至少一个处理器上执行,以在经编译的脚本的执行结束之后验证关联签名。
实施例的示例可进一步包含:编译时启发式检测模块,其被配置为在至少一个处理器上执行以:在由编译器对脚本进行编译期间评价脚本的赋值语句,其中该经编译的脚本生成自该脚本;基于至少第二标准检测经编译的事件;并且在编译事件队列中存储与编译事件相关联的信息。
在实施例的示例中,验证关联签名是部分地基于与编译事件队列中的编译事件相关联的信息。
在实施例的示例中,编译事件队列和执行事件队列被集成。
在实施例的示例中,关联签名能够由用户配置。
在实施例的示例中,执行引擎可进一步被配置为将参数传递至函数评价模块,并且第一标准是基于参数的预先确定的阈值长度的。
在实施例的示例中,该函数对数据进行编码或解码,并且第一标准是基于该函数产生的串的预先确定的阈值长度的。
在实施例的示例中,该函数对数据进行并置,并且第一标准是基于由并置的数据产生的串的预先确定的阈值长度的。
在实施例的示例中,执行引擎可进一步被配置为,响应于确定函数为预先确定的相关函数,当函数被调用时将控制传递至函数评价模块;以及函数评价模块,可进一步被配置为当函数结束执行时将控制传递至执行引擎。
在实施例的示例中,信息包括以下中的一个或多个:执行事件的标识、已检测到的执行事件的次数、预先确定的事件的序列的标识、以及执行事件和一个或多个其他执行事件之间的距离。
在实施例的示例中,验证关联签名是部分地基于被分配至函数的权重被验证的,其中权重表示函数的相对重要性。
在实施例的示例中,第二标准包括评价赋值语句的右侧值。
在实施例的示例中,第二标准包括评价赋值语句的左侧变量名。
在实施例的示例中,函数为一个或多个预先确定的相关函数中的一个。
一个或多个实施例可提供至少一个具有存储于其上的用于检测网络环境中的脚本中的恶意代码的指令的机器可访问存储介质。当由处理器执行指令时使得处理器:发起经编译的脚本的执行;评价在经编译的脚本中调用的函数;基于至少第一标准检测执行事件;以及在执行事件队列中存储与执行事件相关联的信息;以及基于与执行事件队列中的至少一个执行事件相关联的信息来验证关联签名。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:在编译器对脚本进行编译期间评价脚本的赋值语句,其中经编译的脚本生成自脚本;基于至少第二标准检测编译事件;以及在编译事件队列中存储与编译事件相关联的信息。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:部分地基于与编译事件队列中的编译事件相关联的信息来验证关联签名。
在实施例的示例中,编译事件队列和执行事件队列被集成。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:在经编译的脚本的执行结束之前验证关联签名。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:在经编译的脚本的执行结束之后验证关联签名。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:允许关联签名由用户配置。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:在执行期间将参数传递至函数,以及第一标准是基于参数的预先确定的阈值长度的。
在实施例的示例中,该函数对数据进行编码或解码,并且第一标准是基于由函数产生的串的预先确定的阈值长度的。
在实施例的示例中,该函数对数据进行并置,并且第一标准是基于并置的数据产生的串的预先确定的阈值长度的。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:响应于确定函数为预先确定的相关函数,当函数被调用时将控制从执行引擎传递至函数评价模块;并且当函数结束执行时将控制从函数评价模块传递至执行引擎。
在实施例的示例中,信息包括以下中的一个或多个:执行事件的标识、检测到的执行事件的次数、预先确定的事件的序列的标识、以及执行事件和一个或多个其他执行事件之间的距离。
在实施例的示例中,验证关联签名是部分地基于被分配至函数的权重被验证的,其中权重表示函数的相对重要性。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:评价赋值语句的右侧值以确定第二标准是否已被满足。
实施例的示例可包含进一步指令,当由处理器执行时,使得处理器:评价赋值语句的左侧变量名以确定第二标准是否已被满足。
在实施例的示例中,函数为一个或多个预先确定的相关函数中的一个。
在实施例的示例中,函数的评价是响应于确定在经编译的脚本中调用的函数为预先确定的相关函数的。
用于在网络环境中的脚本中检测恶意代码的示例实现可包括用于发起经编译的脚本的执行的模块;用于评价在经编译的脚本中调用的函数的模块;用于基于至少第一标准检测执行事件的模块;用于在执行事件队列中存储与执行事件相关联的信息的模块;以及用于基于与执行事件队列中的至少一个执行事件相关联的信息来验证关联签名的模块。实现还可包括用于在由编译器对脚本进行编译期间评价脚本的赋值语句的模块,其中经编译的生成自该脚本;用于基于至少第二标准检测编译事件的模块;以及用于在编译事件队列中存储与编译事件相关联的信息的模块。用于验证关联签名的模块可在经编译的脚本的执行完成之前和/或在之后执行。该实现可包括,响应于确定函数为预先确定的相关函数,用于当函数被调用时将控制从执行引擎传递至函数评价模块的模块;以及用于当函数结束执行时将控制从函数评价模块传递至执行引擎的模块。该实现还可包括用于评价赋值语句的左侧值和/或右侧变量名以确定第二标准是否已被满足的模块。该实现可包括用于在执行期间将参数传递至函数的模块,以及用于评价参数长度以确定第一标准是否已被满足的模块。
Claims (25)
1.至少一种机器可访问存储介质,其具有存储于其上的用于检测脚本中的恶意代码的指令,其中当由至少一个处理器执行所述指令时,使得所述至少一个处理器:
发起经编译的脚本的执行;
评价在所述经编译的脚本中调用的函数;
基于至少第一标准检测执行事件;
在执行事件队列中存储与所述执行事件相关联的信息;并且
基于与所述执行事件队列中的至少一个执行事件相关联的信息来验证关联签名。
2.根据权利要求1所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
在由编译器对所述脚本进行编译期间评价所述脚本的赋值语句,其中所述经编译的脚本生成自所述脚本;
基于至少第二标准检测编译事件;并且
在编译事件队列中存储与所述编译事件相关联的信息。
3.根据权利要求2所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
部分地基于与所述编译事件队列中的所述编译事件相关联的信息来验证所述关联签名。
4.根据权利要求2所述的至少一种机器可访问存储介质,其中所述编译事件队列和所述执行事件队列被集成。
5.根据权利要求2所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
评价所述赋值语句的右侧值以确定所述第二标准是否已被满足。
6.根据权利要求2所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
评价所述赋值语句的左侧变量名以确定所述第二标准是否已被满足。
7.根据权利要求1所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
在所述经编译的脚本的执行结束之前验证所述关联签名。
8.根据权利要求1所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
在所述经编译的脚本的执行结束之后验证所述关联签名。
9.根据权利要求1所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
允许所述关联签名能够由用户配置。
10.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
在所述执行期间将参数传递至所述函数,其中所述第一标准是基于所述参数的预先确定的阈值长度的。
11.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中所述函数对数据进行解码,并且其中所述第一标准是基于由所述函数产生的串的预先确定的阈值长度的。
12.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中所述函数对数据进行并置,并且其中所述第一标准是基于由并置的数据产生的串的预先确定的阈值长度的。
13.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中当由所述至少一个处理器执行所述指令时,使得所述至少一个处理器:
响应于确定所述函数为预先确定的相关函数,当所述函数被调用时将控制从执行引擎传递至函数评价模块;以及
当所述函数结束执行时将控制从所述函数评价模块传递至所述执行引擎。
14.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中所述信息包括以下中的一个或多个:所述执行事件的标识、已检测到的所述执行事件的次数、预先确定的事件的序列的标识、以及所述执行事件和一个或多个其他执行事件之间的距离。
15.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中所述关联签名是部分地基于被分配至所述函数的权重被验证的,其中所述权重表示所述函数的相对重要性。
16.根据权利要求1-9中的任意一项所述的至少一种机器可访问存储介质,其中所述函数的评价为一个或多个预先确定的相关函数中的一个。
17.一种用于检测脚本中的恶意代码的装置,所述装置包括:
一个或多个处理器;
执行引擎,其被配置为在所述一个或多个处理器中的至少一个上执行以发起经编译的脚本的执行;以及
函数评价模块,其被配置为在所述处理器中的至少一个上执行以:
评价在所述经编译的脚本中调用的函数;
基于至少第一标准检测执行事件;并且
在执行事件队列中存储与所述执行事件相关联的信息,其中关联签名是基于与所述执行事件队列中的至少一个执行事件相关联的信息来验证的。
18.根据权利要求17所述的装置,进一步包括:
编译时启发式检测模块,其被配置为在所述处理器中的至少一个上执行以:
在由编译器对所述脚本进行编译期间评价所述脚本的赋值语句,其中所述经编译的脚本生成自所述脚本;
基于至少第二标准检测编译事件;并且
在编译事件队列中存储与所述编译事件相关联的信息。
19.根据权利要求17-18中的任意一项所述的装置,其中所述函数评价模块在所述经编译的脚本的执行结束之前验证所述关联签名。
20.根据权利要求17-18中的任意一项所述的装置,进一步包括:
后评价模块,其被配置为在所述处理器中的至少一个上执行,以在所述经编译的脚本的执行结束之后验证所述关联签名。
21.一种用于检测脚本中的恶意代码的方法,所述方法包括:
发起经编译的脚本的执行;
评价在所述经编译的脚本中调用的函数;
基于至少第一标准检测执行事件;
在执行事件队列中存储与所述执行事件相关联的信息;并且
基于与所述执行事件队列中的至少一个执行事件相关联的信息来验证关联签名。
22.根据权利要求21所述的方法,进一步包括:
在由编译器对所述脚本进行编译期间评价所述脚本的赋值语句,其中所述经编译的脚本生成自所述脚本;
基于至少第二标准检测编译事件;并且
在编译事件队列中存储与所述编译事件相关联的信息。
23.根据权利要求22所述的方法,进一步包括:
评价所述赋值语句的左侧变量名和所述赋值语句的右侧值中的至少一个,以确定所述第二标准是否已被满足。
24.一种用于检测脚本中的恶意代码的装置,所述装置包括用于执行根据权利要求21-23中的任意一项所述的方法的模块。
25.根据权利要求24所述的装置,其中用于执行所述方法的所述模块包括至少一个处理器和至少一个存储器元件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN50KO2013 | 2013-01-16 | ||
IN50/KOL/2013 | 2013-01-16 | ||
PCT/US2014/011907 WO2014113597A1 (en) | 2013-01-16 | 2014-01-16 | Detection of malicious scripting language code in a network environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105074717A true CN105074717A (zh) | 2015-11-18 |
Family
ID=51210069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480003756.XA Pending CN105074717A (zh) | 2013-01-16 | 2014-01-16 | 在网络环境中的恶意脚本语言代码的检测 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10140451B2 (zh) |
EP (1) | EP2946329A4 (zh) |
KR (2) | KR20170143006A (zh) |
CN (1) | CN105074717A (zh) |
WO (1) | WO2014113597A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109997143A (zh) * | 2016-09-30 | 2019-07-09 | 迈克菲有限责任公司 | 敏感数据的安全共享 |
CN110363006A (zh) * | 2019-06-26 | 2019-10-22 | 中国科学院信息工程研究所 | 多链哈希栈结构及检测函数返回地址被篡改的方法 |
US20200252428A1 (en) * | 2018-12-21 | 2020-08-06 | Fireeye, Inc. | System and method for detecting cyberattacks impersonating legitimate sources |
CN111758241A (zh) * | 2017-12-22 | 2020-10-09 | 皇家飞利浦有限公司 | 使用函数的事件评价 |
CN113391793A (zh) * | 2021-06-25 | 2021-09-14 | 中债金科信息技术有限公司 | 一种面向流处理的金融欺诈建模语言的处理方法及装置 |
CN113906394A (zh) * | 2019-05-24 | 2022-01-07 | 微软技术许可有限责任公司 | 用于客观分支验证的可执行代码分支注释 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9591015B1 (en) * | 2014-03-28 | 2017-03-07 | Fireeye, Inc. | System and method for offloading packet processing and static analysis operations |
EP3161709B1 (en) * | 2014-06-24 | 2018-08-01 | Virsec Systems, Inc. | Automated code lockdown to reduce attack surface for software |
US10805340B1 (en) | 2014-06-26 | 2020-10-13 | Fireeye, Inc. | Infection vector and malware tracking with an interactive user display |
US9411964B1 (en) | 2014-11-24 | 2016-08-09 | Bluerisc, Inc. | Characterizing, detecting and healing vulnerabilities in computer code |
US9754112B1 (en) | 2014-11-24 | 2017-09-05 | Bluerisc, Inc. | Detection and healing of vulnerabilities in computer code |
US9690933B1 (en) | 2014-12-22 | 2017-06-27 | Fireeye, Inc. | Framework for classifying an object as malicious with machine learning for deploying updated predictive models |
US9935995B2 (en) * | 2014-12-23 | 2018-04-03 | Mcafee, Llc | Embedded script security using script signature validation |
WO2016109558A1 (en) * | 2014-12-29 | 2016-07-07 | Rubicon Labs, Inc. | System and method for secure code entry point control |
US9838417B1 (en) | 2014-12-30 | 2017-12-05 | Fireeye, Inc. | Intelligent context aware user interaction for malware detection |
US10148693B2 (en) | 2015-03-25 | 2018-12-04 | Fireeye, Inc. | Exploit detection system |
US10089084B2 (en) | 2015-04-03 | 2018-10-02 | Oracle International Corporation | System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language |
US10268496B2 (en) * | 2015-04-03 | 2019-04-23 | Oracle International Corporation | System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment |
US10223142B2 (en) * | 2015-04-03 | 2019-03-05 | Oracle International Corporation | System and method for supporting javascript activities in a process defined by a process execution language for execution in a SOA middleware environment |
US10223143B2 (en) | 2015-04-03 | 2019-03-05 | Oracle International Corporation | System and method for supporting javascript as an expression language in a process defined by a process execution language for execution in a SOA middleware environment |
US9825976B1 (en) * | 2015-09-30 | 2017-11-21 | Fireeye, Inc. | Detection and classification of exploit kits |
WO2018006241A1 (en) * | 2016-07-04 | 2018-01-11 | Mcafee, Inc. | Method and apparatus to detect security vulnerabilities in web application |
US10706144B1 (en) | 2016-09-09 | 2020-07-07 | Bluerisc, Inc. | Cyber defense with graph theoretical approach |
US10728274B2 (en) * | 2016-09-22 | 2020-07-28 | Check Point Software Technologies Ltd. | Method and system for injecting javascript into a web page |
US10482248B2 (en) * | 2016-11-09 | 2019-11-19 | Cylance Inc. | Shellcode detection |
US10581879B1 (en) * | 2016-12-22 | 2020-03-03 | Fireeye, Inc. | Enhanced malware detection for generated objects |
US11038905B2 (en) | 2017-01-25 | 2021-06-15 | Splunk, Inc. | Identifying attack behavior based on scripting language activity |
US10657252B2 (en) * | 2017-06-22 | 2020-05-19 | Oracle International Corporation | Detecting malicious code embedded in documents |
US10817607B1 (en) * | 2018-01-26 | 2020-10-27 | CA Inc. | Securing a network device from malicious executable code embedded in a computer document |
US10678916B2 (en) * | 2018-03-20 | 2020-06-09 | Didi Research America, Llc | Malicious program detection |
US11030304B2 (en) * | 2018-07-31 | 2021-06-08 | Oracle International Corporation | Buffer overflow detection based on a synthesis of assertions from templates and k-induction |
US11163888B2 (en) * | 2019-02-15 | 2021-11-02 | Oracle International Corporation | Detecting second-order security vulnerabilities via modelling information flow through persistent storage |
US11630900B2 (en) * | 2019-09-30 | 2023-04-18 | Mcafee, Llc | Detection of malicious scripted activity in fileless attacks |
US11491749B2 (en) * | 2019-12-03 | 2022-11-08 | GM Global Technology Operations LLC | Methods for forming composite components with sealed bi-material interfaces |
US11436327B1 (en) * | 2019-12-24 | 2022-09-06 | Fireeye Security Holdings Us Llc | System and method for circumventing evasive code for cyberthreat detection |
US11422854B2 (en) * | 2020-02-26 | 2022-08-23 | Sap Se | Cross-compilation, orchestration, and scheduling for in-memory databases as a service |
US11595436B2 (en) * | 2020-04-07 | 2023-02-28 | Target Brands, Inc. | Rule-based dynamic security test system |
US11748460B2 (en) * | 2020-04-27 | 2023-09-05 | Imperva, Inc. | Procedural code generation for challenge code |
US11811824B2 (en) | 2020-06-08 | 2023-11-07 | Target Brands, Inc. | Security system for detecting malicious actor's observation |
CN113965333A (zh) * | 2020-07-01 | 2022-01-21 | 深信服科技股份有限公司 | 一种目标流量检测方法、装置、设备及可读存储介质 |
US11475122B1 (en) | 2021-04-16 | 2022-10-18 | Shape Security, Inc. | Mitigating malicious client-side scripts |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090070663A1 (en) * | 2007-09-06 | 2009-03-12 | Microsoft Corporation | Proxy engine for custom handling of web content |
US20110197272A1 (en) * | 2010-02-09 | 2011-08-11 | Webroot Software, Inc. | Low-Latency Detection of Scripting-Language-Based Exploits |
US20120266244A1 (en) * | 2011-04-13 | 2012-10-18 | Microsoft Corporation | Detecting Script-Based Malware using Emulation and Heuristics |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
WO2003009532A1 (en) | 2001-07-19 | 2003-01-30 | Intrusion, Inc. | System and method for detecting network events |
US7340777B1 (en) * | 2003-03-31 | 2008-03-04 | Symantec Corporation | In memory heuristic system and method for detecting viruses |
US7904955B1 (en) * | 2002-06-13 | 2011-03-08 | Mcafee, Inc. | Method and apparatus for detecting shellcode |
US7640587B2 (en) * | 2005-03-29 | 2009-12-29 | International Business Machines Corporation | Source code repair method for malicious code detection |
US8079037B2 (en) * | 2005-10-11 | 2011-12-13 | Knoa Software, Inc. | Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications |
US7620992B2 (en) * | 2007-10-02 | 2009-11-17 | Kaspersky Lab Zao | System and method for detecting multi-component malware |
US8272059B2 (en) * | 2008-05-28 | 2012-09-18 | International Business Machines Corporation | System and method for identification and blocking of malicious code for web browser script engines |
-
2014
- 2014-01-16 EP EP14741074.0A patent/EP2946329A4/en not_active Withdrawn
- 2014-01-16 CN CN201480003756.XA patent/CN105074717A/zh active Pending
- 2014-01-16 WO PCT/US2014/011907 patent/WO2014113597A1/en active Application Filing
- 2014-01-16 US US14/761,285 patent/US10140451B2/en active Active
- 2014-01-16 KR KR1020177036232A patent/KR20170143006A/ko not_active Application Discontinuation
- 2014-01-16 KR KR1020157017244A patent/KR101811325B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090070663A1 (en) * | 2007-09-06 | 2009-03-12 | Microsoft Corporation | Proxy engine for custom handling of web content |
US20110197272A1 (en) * | 2010-02-09 | 2011-08-11 | Webroot Software, Inc. | Low-Latency Detection of Scripting-Language-Based Exploits |
US20120266244A1 (en) * | 2011-04-13 | 2012-10-18 | Microsoft Corporation | Detecting Script-Based Malware using Emulation and Heuristics |
Non-Patent Citations (1)
Title |
---|
CHARLIE CURTSINGER等: "快速精确的浏览器JavaScript恶意软件检测", 《USENIX》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109997143A (zh) * | 2016-09-30 | 2019-07-09 | 迈克菲有限责任公司 | 敏感数据的安全共享 |
CN111758241A (zh) * | 2017-12-22 | 2020-10-09 | 皇家飞利浦有限公司 | 使用函数的事件评价 |
US20200252428A1 (en) * | 2018-12-21 | 2020-08-06 | Fireeye, Inc. | System and method for detecting cyberattacks impersonating legitimate sources |
US11743290B2 (en) * | 2018-12-21 | 2023-08-29 | Fireeye Security Holdings Us Llc | System and method for detecting cyberattacks impersonating legitimate sources |
CN113906394A (zh) * | 2019-05-24 | 2022-01-07 | 微软技术许可有限责任公司 | 用于客观分支验证的可执行代码分支注释 |
CN110363006A (zh) * | 2019-06-26 | 2019-10-22 | 中国科学院信息工程研究所 | 多链哈希栈结构及检测函数返回地址被篡改的方法 |
CN113391793A (zh) * | 2021-06-25 | 2021-09-14 | 中债金科信息技术有限公司 | 一种面向流处理的金融欺诈建模语言的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2946329A4 (en) | 2016-08-31 |
KR20150091492A (ko) | 2015-08-11 |
US10140451B2 (en) | 2018-11-27 |
KR20170143006A (ko) | 2017-12-28 |
US20150363598A1 (en) | 2015-12-17 |
KR101811325B1 (ko) | 2017-12-22 |
EP2946329A1 (en) | 2015-11-25 |
WO2014113597A1 (en) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105074717A (zh) | 在网络环境中的恶意脚本语言代码的检测 | |
US10915659B2 (en) | Privacy detection of a mobile application program | |
US8769692B1 (en) | System and method for detecting malware by transforming objects and analyzing different views of objects | |
US11882134B2 (en) | Stateful rule generation for behavior based threat detection | |
US20190222591A1 (en) | Method and server for determining malicious files in network traffic | |
Chandran et al. | An efficient classification model for detecting advanced persistent threat | |
Amamra et al. | Smartphone malware detection: From a survey towards taxonomy | |
CN105247532A (zh) | 使用硬件特征的无监督的基于异常的恶意软件检测 | |
CN104025102A (zh) | 用于检测嵌入在任意位置的文件并且判定文件的信誉的***和方法 | |
Hamed et al. | Mobile malware detection: A survey | |
CN103577323A (zh) | 基于动态关键指令序列胎记的软件抄袭检测方法 | |
Sangeetha et al. | Signature based semantic intrusion detection system on cloud | |
Hwang et al. | Semi-supervised based unknown attack detection in EDR environment | |
Hasan et al. | SUBLμME: Secure blockchain as a service and microservices-based framework for IoT environments | |
Kim et al. | Runtime detection framework for android malware | |
Casolare et al. | On the resilience of shallow machine learning classification in image-based malware detection | |
Kanaker et al. | Trojan Horse Infection Detection in Cloud Based Environment Using Machine Learning. | |
Sombatruang et al. | Internet Service Providers' and Individuals' Attitudes, Barriers, and Incentives to Secure {IoT} | |
Huang et al. | Acquiring data traffic for sustainable IoT and smart devices using machine learning algorithm | |
Rouached et al. | An efficient formal framework for intrusion detection systems | |
Chen et al. | Detecting mobile application malicious behaviors based on data flow of source code | |
James et al. | Malware attacks: A survey on mitigation measures | |
Hillier et al. | Turning the Hunted into the Hunter via Threat Hunting: Life Cycle, Ecosystem, Challenges and the Great Promise of AI | |
Alyasiri | Evolving rules for detecting cross-site scripting attacks using genetic programming | |
Jin et al. | Analysis and control stratagems of flash disk virus dynamic propagation model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151118 |
|
WD01 | Invention patent application deemed withdrawn after publication |