CN103914652B - 恶意程序控制指令识别方法及装置 - Google Patents

恶意程序控制指令识别方法及装置 Download PDF

Info

Publication number
CN103914652B
CN103914652B CN201310007680.5A CN201310007680A CN103914652B CN 103914652 B CN103914652 B CN 103914652B CN 201310007680 A CN201310007680 A CN 201310007680A CN 103914652 B CN103914652 B CN 103914652B
Authority
CN
China
Prior art keywords
capping unit
control instruction
perform track
track
rogue program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310007680.5A
Other languages
English (en)
Other versions
CN103914652A (zh
Inventor
王志
邹赞
张晓康
贾春福
刘露
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.)
Tencent Technology Shenzhen Co Ltd
Nankai University
Original Assignee
Tencent Technology Shenzhen Co Ltd
Nankai University
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 Tencent Technology Shenzhen Co Ltd, Nankai University filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201310007680.5A priority Critical patent/CN103914652B/zh
Publication of CN103914652A publication Critical patent/CN103914652A/zh
Application granted granted Critical
Publication of CN103914652B publication Critical patent/CN103914652B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种恶意程序控制指令识别方法,包括:监控恶意程序的注入过程,获取注入进程和注入地址;监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;对所述执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。此外,还提供了一种恶意程序控制指令识别装置。上述恶意程序控制指令识别方法及装置能够提高控制指令识别的准确率。

Description

恶意程序控制指令识别方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种恶意程序控制指令识别方法及装置。
背景技术
伴随着计算机技术的发展,恶意程序越来越多的出现在日常生活中,对企业的信息安全以及人们的正常生活产生不良影响。例如,现有的僵尸网络恶意程序即通过感染传播的手段,将大量恶意程序客户端植入到多个主机之中,然后不法分子可通过僵尸网络服务器发送控制指令操纵被控制的多个主机发起DDOS(拒绝服务攻击)攻击。例如,不法分子可操纵被控制的多个主机同时向某个网站发起大量请求,使该网站的服务器负载增加,从而影响用户正常的浏览服务。
因此,为遏制恶意程序造成的危害,通常需要先对恶意程序的控制指令进行识别,然后再通过数据包分析将附带有恶意程序控制指令的数据包截获,从而在全局控制恶意程序的危害。
然而,现有技术中对恶意程序控制指令的识别方法,通常通过人工的方式静态的分析恶意程序的代码,或者动态的分析数据包的统计特征,其识别准确度均较低。
发明内容
基于此,有必要提供一种能提高识别准确率的恶意程序控制指令识别方法。
一种恶意程序控制指令识别方法,包括:
监控恶意程序的注入过程,获取注入进程和注入地址;
监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;
对所述执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;
根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;
根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。
此外,还有必要提供一种能提高识别准确率的恶意程序控制指令识别装置。
一种恶意程序控制指令识别装置,包括:
进程监控模块,用于监控恶意程序的注入过程,获取注入进程和注入地址;
执行轨迹获取模块,用于监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;
执行轨迹筛选模块,用于对所述执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;
覆盖单元定位模块,用于根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;
指令获取模块,用于根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。
上述恶意程序控制指令识别方法及装置,通过监控恶意程序对系统进程的注入过程获取与输入数据对应的执行轨迹,在对执行轨迹进行筛选后得到与注入地址即恶意程序加载在内存中的区域对应的执行轨迹,然后通过分析各个执行轨迹中包含的覆盖单元的代码覆盖率来定位与控制指令判断逻辑对应的覆盖单元。由于与控制指令判断逻辑对应的覆盖单元中必然包含用于校验输入数据中包含的控制指令是否正确的标准控制指令集,因此,根据该与控制指令判断逻辑对应的覆盖单元即可获取恶意程序控制指令。和现有技术相比,上述恶意程序控制指令识别方法及装置由于通过监控准确定位到了与控制指令判断逻辑对应的覆盖单元,使得识别的准确度得到了提高。
附图说明
图1为一个实施例中恶意程序控制指令识别方法的流程图;
图2为一个实施例中计算执行轨迹的相似度,并将执行轨迹归一化的步骤的流程图;
图3为一个实施例中恶意程序控制指令识别装置的结构示意图;
图4为另一个实施例中恶意程序控制指令识别装置的结构示意图;
图5为一个应用场景中对Zeus恶意程序对explorer.exe进程的注入过程进行监控的示意图;
图6为一个应用场景中对获取到的执行轨迹的示意图;
图7为一个应用场景中筛选后得到的执行轨迹的示意图;
图8为一个应用场景中执行轨迹的统计数据的示意图;
图9为一个应用场景中通过计算代码覆盖率得到分支覆盖单元的示意图;
图10为一个应用场景中通过计算代码覆盖率得到条件判断覆盖单元的示意图;
图11为一个应用场景中得到的执行序列的示意图;
图12为一个应用场景中定位到的污点数据的示意图;
图13为一个应用场景中定位到的指令判断函数的示意图;
图14为一个应用场景中指令判断函数的参数值取值的示意图;
图15为一个应用场景中获取到的标准控制指令集的地址信息的示意图;
图16为一个应用场景中获取到的标准控制指令集的示意图;
图17为一个应用场景中校验得到的所有执行轨迹的示意图。
具体实施方式
在一个实施例中,如图1所示,一种恶意程序控制指令识别方法,包括以下步骤:
步骤S102,监控恶意程序的注入过程,获取注入进程和注入地址。
恶意程序在感染主机后,通常会通过注入函数将其绑定在某个系统进程中,该被注入的系统进程即为注入进程。当该注入进程加载并运行时,则通过函数调用启动恶意程序运行。例如,在windows系统中,恶意程序通常会注入到explorer进程(资源管理器进程)中,从而随着操作系统的启动而启动。
在本实施例中,可通过监控文件的创建和读写操作过程以及进程之间的交互行为来确定注入进程以及注入函数,通过获取注入函数的参数获取注入地址以及注入地址的大小。
步骤S104,监控与注入进程对应的输入数据,获取与输入数据对应的执行轨迹。
在一个实施例中,可在获取到输入数据后,可获取监控时长,然后在监控时长的时间长度内获取与输入数据对应的执行轨迹。监控时长可以为预设值,预设值优选为5分钟。
在一个实施例中,监控与注入进程对应的输入数据的步骤可包括:获取污点数据类型,根据污点数据类型对输入数据进行筛选。
污点数据类型即可能触发恶意程序运行的输入数据类型。污点数据类型可以是网络数据包、键盘输入数据、操作系统时间等。污点数据类型可预先设置。例如,在获取僵尸网络恶意程序的控制指令时,由于用户在被感染的主机上的键盘输入等操作不会产生能触发僵尸网络恶意程序的控制指令,因此污点数据类型可预设为网络数据包,即获取网络数据包对应的注入进程的执行轨迹。
执行轨迹即在监控时间内运行的覆盖单元的序列。在计算机技术中,程序以二进制指令代码的形式存储在内存空间中,并按照内存地址的顺序连续执行。当执行过程中遇到函数调用时,则跳转至该函数调用对应的内存空间继续执行其存储的二进制指令代码,函数调用结束后,再跳转回继续执行。覆盖单元即连续存储二进制指令代码的内存空间。
在本实施例中,可根据获取到的注入地址提取二进制代码并进行反汇编从而得到相应的汇编指令。可对汇编指令按地址顺序进行迭代,将顺序执行的二进制指令划归为同一覆盖单元,若迭代到的指令为函数调用指令或程序跳转指令时,则根据跳转到的内存地址进行递归迭代,并创建对应该函数调用指令或程序跳转指令的覆盖单元,从而得到执行轨迹对应的覆盖单元集合。
在本实施例中,获取与输入数据对应的执行轨迹的步骤还可包括:判断执行轨迹是否对应输入数据的传播轨迹,若不包含,则可忽略该执行轨迹。
输入数据的传播轨迹即输入数据经过运算操作和复制操作进行传播的数据集合。若执行轨迹中的所有覆盖单元均不包含该数据集合中的元素,则该执行轨迹与输入数据的传播轨迹不对应。也就是说,在本实施例中,若执行轨迹并没有对接收到的网络数据包中的数据进行提取,与网络数据包中的数据完全无关时,可忽略该执行轨迹。
进一步的,在迭代过程中,还可获取覆盖单元对应的运行次数和运行时间。由于指令在执行时,通常会存在循环执行的情况,因此,覆盖单元还对应运行次数,可根据运行次数判断该覆盖单元被循环运行了多少次。
在本实施例中,还可将监控获取到的执行轨迹存储在执行轨迹数据库中,可将执行轨迹包含的覆盖单元的内存起始位置、运行时间和运行次数与监控时间对应存储在执行轨迹数据库中。
步骤S106,对执行轨迹进行筛选,筛选得到与注入地址对应的执行轨迹。
在一个实施例中,对执行轨迹进行筛选,筛选得到与注入地址对应的执行轨迹的步骤包括:获取执行轨迹中包含的系统函数调用指令,移除系统函数调用指令对应的覆盖单元。
恶意程序在运行时,可能会进行系统函数调用。例如,可通过调用系统函数获取操作系统当前时间。在本实施例中,可仅在执行轨迹中保留系统函数调用的调用语句和返回语句,而过滤掉系统函数调用对应的覆盖单元。
系统函数调用对应的覆盖单元为操作系统加载动态链接库文件的内存区域,与恶意程序的控制指令无关,过滤掉系统函数调用对应的覆盖单元可排除系统函数调用的干扰。
在一个实施例中,对执行轨迹进行筛选,筛选得到与注入地址对应的执行轨迹的步骤还可包括:获取执行轨迹中包含的与注入进程对应的调用指令,移除注入进程对应的调用指令对应的覆盖单元。
在获取到输入数据后,注入进程也在执行过程中,执行轨迹可能会包含注入进程对应的覆盖单元,通过移除与注入进程对应的调用指令对应的覆盖单元,可避免注入进程的指令造成的误识别。
在一个实施例中,对执行轨迹进行筛选,筛选得到与注入地址对应的执行轨迹的步骤还可包括:
获取执行轨迹包含的覆盖单元及覆盖单元的运行次数,根据包含的覆盖单元和运行次数计算执行轨迹之间的相似度;获取相似度阈值;将相似度大于所述相似度阈值的执行轨迹归一化。
也就是说,若两条执行轨迹包含的覆盖单元大部分相同,则可认为该两条执行轨迹对应同一条控制指令,从而可将其中一条移除。
在本实施例中,获取执行轨迹包含的覆盖单元及所述覆盖单元的运行次数,根据包含的覆盖单元和运行次数计算执行轨迹之间的相似度的步骤可具体为:
获取执行轨迹包含的内存地址相同且运行次数相同的相同覆盖单元个数、内存地址不同的特有覆盖单元个数以及内存地址相同但运行次数不同的近似覆盖单元个数,根据相同覆盖单元个数、特有覆盖单元个数和,覆盖单元个数计算执行轨迹之间的相似度。
在本实施例中,可根据下述步骤将执行轨迹归一化:
步骤S202,在获取到的执行轨迹中迭代选取执行轨迹I。
步骤S204,遍历获取到的执行轨迹R,根据公式:
计算遍历到的执行轨迹R与选取的执行轨迹I的相似度;其中,SimI,R为相似度,ns为执行轨迹I和R均包含的且运行次数也相同的相同覆盖单元个数,nl为执行轨迹I和R均包含的但运行次数不相同的近似覆盖单元个数,nI为仅执行轨迹I包含的覆盖单元的个数,nR为仅执行轨迹R包含的覆盖单元的个数。
步骤S206,将计算得到的相似度与相似度阈值进行比较,若相似度大于相似度阈值,则移除遍历到执行轨迹。
步骤S208,遍历结束则跳转继续执行步骤S202,直到迭代完毕。
进一步的,在本实施例中,获取相似度阈值的步骤可具体为:根据公式:
计算相似度阈值。其中,STh为相似度阈值,n为获取到的执行轨迹的个数,Simij为执行轨迹相似度i和j之间的相似度。
步骤S108,根据筛选得到的执行轨迹计算代码覆盖率,根据代码覆盖率定位对应控制指令判断逻辑的覆盖单元。
代码覆盖率即覆盖单元在筛选得到的执行轨迹中的出现次数(也可以是比例)。
在本实施例中,根据筛选得到的执行轨迹计算代码覆盖率的步骤可具体为:获取筛选得到的执行轨迹的覆盖单元及其运行次数,计算覆盖单元在筛选得到的执行轨迹中各自的出现次数,根据出现次数计算代码覆盖率。
例如,若筛选得到的执行轨迹的数量为10,若覆盖单元A在其中2个执行轨迹中出现,则出现次数为2或出现频率为2/10;若覆盖单元B在所有执行轨迹中均出现,则出现次数为10或出现频率为10/10。
在本实施例中,根据代码覆盖率定位对应控制指令判断逻辑的覆盖单元的步骤可具体为:根据代码覆盖率获取出现次数为1的分支覆盖单元和每个执行轨迹均包含的且运行次数不同的条件判断覆盖单元,根据分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元。
出现次数为1的分支覆盖单元即仅在唯一一条执行轨迹中运行过的覆盖单元。由于恶意程序的控制指令判断逻辑通常需要从网络数据包中提取控制指令,然后将该控制指令与其定义在二进制代码中的标准控制指令集中的控制指令进行比较,从而进行相应的操作,因此,每个执行轨迹均包含的且运行次数不同的条件判断覆盖单元,即为判断控制指令是否正确的逻辑部分。
根据分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元的步骤可具体为:
获取分支覆盖单元的分支时间戳和条件判断覆盖单元的判断时间戳,获取运行时间戳在分支时间戳和判断时间戳之间的覆盖单元,并根据获取到的覆盖单元、分支覆盖单元和条件判断覆盖单元定位判断指令执行序列。
判断指令执行序列即对应了控制指令判断逻辑的覆盖单元的执行序列。如前所述,恶意程序在判断控制指令是否正确时,会在条件判断覆盖单元运行数次,若控制指令匹配,则会进入分支覆盖单元进行运行,因此,由条件判断覆盖单元到分支覆盖单元的执行序列必然包含了控制指令判断逻辑。
步骤S110,根据对应控制指令判断逻辑的覆盖单元获取其对应的标准控制指令集。
在本实施例中,如前所述,由于判断指令执行序列必然包含了控制指令判断逻辑,且通常通过函数调用对控制指令是否正确进行判断(因为会跳转到分支覆盖单元,因此必然会有函数调用过程,且会将控制指令作为参数传递),则需要通过获取前述的标准控制指令集来与输入的控制指令进行比较,因此可通过定位获取标准控制指令集的指令的地址信息来获取标准控制指令集。标准控制指令集即能够触发恶意程序的控制指令的集合。
在本实施例中,还可提取判断指令执行序列中的函数调用的参数值,根据参数值更新获取到的标准控制指令集。
可判断标准控制指令集中是否包含该参数值,若包含,则表示该控制指令未进行加密,若不包含,则表示该控制指令在与标准控制指令集进行比对之前进行了加密。可进一步通过地反编译函数调用对应的指令获取该加密函数,然后根据该加密函数更新获取到的标准控制指令集。
例如,若标准控制指令集中的控制指令均为经过加密算法加密后的控制指令,则控制指令在进入判断指令执行序列中后,同样会在经过加密算法处理后再与标准控制指令集中的控制指令进行比较。因此,可进一步地通过反编译函数调用得到具体的加密函数,并通过相应的解密函数对标准控制指令集中的控制指令进行处理,从而将标准控制指令集更新。或者,也可以在后期进行分析网络数据包是否包含恶意程序控制指令时,先将网络数据包中的数据经过加密算法处理后再与标准控制指令集进行比对。
在一个实施例中,根据对应控制指令判断逻辑的覆盖单元获取标准控制指令集步骤之后还可根据标准控制指令集生成测试指令,通过修改函数调用参数值输入测试指令,获取测试执行轨迹,根据测试执行轨迹校验标准控制指令集。
例如,若仅通过监控到10次执行轨迹即获取到标准控制指令集,且标准控制指令集中包括25个控制指令,则可将该25个控制指令依次作为测试指令取出,并通过将输入到条件判断覆盖单元中的函数调用的参数值修改为测试指令来获取对应的分支覆盖单元,从而得到与取出的测试指令对应的分支覆盖单元。若获取到的分支覆盖单元各不相同,则意味着获取到的标准控制指令集校验正确。也就是说,即使监控到的10次执行轨迹中并没有完全包含标准控制指令集中的所有控制指令,但是可通过修改条件判断覆盖单元中的函数调用的参数值来补全所有可能的控制指令判断执行分支,若分支覆盖单元各不相同,则意味着僵尸程序根据不同的控制指令执行了不同的操作,从而验证了获取到的标准控制指令集为正确;否则,若存在相同的分支覆盖单元,则意味着存在多个判断错误的控制指令(参考if-else语句,判断错误的控制指令必然会进入else对应的分支覆盖单元),从而验证标准控制指令集为错误,需要重新获取标准控制指令。
在一个实施例中,如图4所示,一种恶意程序控制指令识别装置,包括进程监控模块102、执行轨迹获取模块104、执行轨迹筛选模块106、覆盖单元定位模块108以及指令获取模块110,其中:
进程监控模块102,用于监控恶意程序的注入过程,获取注入进程和注入地址。
恶意程序在感染主机后,通常会通过注入函数将其绑定在某个系统进程中,该被注入的系统进程即为注入进程。当该注入进程加载并运行时,则通过函数调用启动恶意程序运行。例如,在windows系统中,恶意程序通常会注入到explorer进程(资源管理器进程)中,从而随着操作系统的启动而启动。
在本实施例中,进程监控模块102可用于通过监控文件的创建和读写操作过程以及进程之间的交互行为来确定注入进程以及注入函数,通过获取注入函数的参数获取注入地址以及注入地址的大小。
执行轨迹获取模块104,用于监控与注入进程对应的输入数据,获取与输入数据对应的执行轨迹。
在一个实施例中,执行轨迹获取模块104可用于在获取到输入数据后,获取监控时长,然后在监控时长的时间长度内获取与输入数据对应的执行轨迹。监控时长可以为预设值,预设值优选为5分钟。
在一个实施例中,执行轨迹获取模块104可用于获取污点数据类型,根据污点数据类型对输入数据进行筛选。
污点数据类型即可能触发恶意程序运行的输入数据类型。污点数据类型可以是网络数据包、键盘输入数据、操作系统时间等。污点数据类型可预先设置。例如,在获取僵尸网络恶意程序的控制指令时,由于用户在被感染的主机上的键盘输入等操作不会产生能触发僵尸网络恶意程序的控制指令,因此污点数据类型可预设为网络数据包,即获取网络数据包对应的注入进程的执行轨迹。
执行轨迹即在监控时间内运行的覆盖单元的序列。在计算机技术中,程序以二进制指令代码的形式存储在内存空间中,并按照内存地址的顺序连续执行。当执行过程中遇到函数调用时,则跳转至该函数调用对应的内存空间继续执行其存储的二进制指令代码,函数调用结束后,再跳转回继续执行。覆盖单元即连续存储二进制指令代码的内存空间。
在本实施例中,执行轨迹获取模块104可用于根据获取到的注入地址提取二进制代码并进行反汇编从而得到相应的汇编指令。可对汇编指令按地址顺序进行迭代,将顺序执行的二进制指令划归为同一覆盖单元,若迭代到的指令为函数调用指令或程序跳转指令时,则根据跳转到的内存地址进行递归迭代,并创建对应该函数调用指令或程序跳转指令的覆盖单元,从而得到执行轨迹对应的覆盖单元集合。
在本实施例中,执行轨迹获取模块104还可用于判断执行轨迹是否对应输入数据的传播轨迹,若不包含,则忽略该执行轨迹。
输入数据的传播轨迹即输入数据经过运算操作和复制操作进行传播的数据集合。若执行轨迹中的所有覆盖单元均不包含该数据集合中的元素,则该执行轨迹与输入数据的传播轨迹不对应。也就是说,在本实施例中,若执行轨迹并没有对接收到的网络数据包中的数据进行提取,与网络数据包中的数据完全无关时,可忽略该执行轨迹。
进一步的,在迭代过程中,执行轨迹获取模块104还可用于获取覆盖单元对应的运行次数和运行时间。由于指令在执行时,通常会存在循环执行的情况,因此,覆盖单元还对应运行次数,可根据运行次数判断该覆盖单元被循环运行了多少次。
在本实施例中,还可将监控获取到的执行轨迹存储在执行轨迹数据库中,可将执行轨迹包含的覆盖单元的内存起始位置、运行时间和运行次数与监控时间对应存储在执行轨迹数据库中。
执行轨迹筛选模块106,用于对执行轨迹进行筛选,筛选得到与注入地址对应的执行轨迹。
在一个实施例中,执行轨迹筛选模块106可用于获取执行轨迹中包含的系统函数调用指令,移除系统函数调用指令对应的覆盖单元。
恶意程序在运行时,可能会进行系统函数调用。例如,可通过调用系统函数获取操作系统当前时间。在本实施例中,可仅在执行轨迹中保留系统函数调用的调用语句和返回语句,而过滤掉系统函数调用对应的覆盖单元。
系统函数调用对应的覆盖单元为操作系统加载动态链接库文件的内存区域,与恶意程序的控制指令无关,过滤掉系统函数调用对应的覆盖单元可排除系统函数调用的干扰。
在一个实施例中,执行轨迹筛选模块106还可用于获取执行轨迹中包含的与注入进程对应的调用指令,移除注入进程对应的调用指令对应的覆盖单元。
在获取到输入数据后,注入进程也在执行过程中,执行轨迹可能会包含注入进程对应的覆盖单元,通过移除与注入进程对应的调用指令对应的覆盖单元,可避免注入进程的指令造成的误识别。
在一个实施例中,执行轨迹筛选模块106还可用于获取执行轨迹包含的覆盖单元及覆盖单元的运行次数,根据包含的覆盖单元和运行次数计算执行轨迹之间的相似度;获取相似度阈值;将相似度大于所述相似度阈值的执行轨迹归一化。
也就是说,若两条执行轨迹包含的覆盖单元大部分相同,则可认为该两条执行轨迹对应同一条控制指令,从而可将其中一条移除。
在本实施例中,执行轨迹筛选模块106还可用于获取执行轨迹包含的内存地址相同且运行次数相同的相同覆盖单元个数、内存地址不同的特有覆盖单元个数以及内存地址相同但运行次数不同的近似覆盖单元个数,根据相同覆盖单元个数、特有覆盖单元个数和,覆盖单元个数计算执行轨迹之间的相似度。
在本实施例中,执行轨迹筛选模块106还可用于在获取到的执行轨迹中迭代选取执行轨迹I,遍历获取到的执行轨迹R,根据公式:
计算遍历到的执行轨迹R与选取的执行轨迹I的相似度;其中,SimI,R为相似度,ns为执行轨迹I和R均包含的且运行次数也相同的相同覆盖单元个数,nl为执行轨迹I和R均包含的但运行次数不相同的近似覆盖单元个数,nI为仅执行轨迹I包含的覆盖单元的个数,nR为仅执行轨迹R包含的覆盖单元的个数;将计算得到的相似度与相似度阈值进行比较,若相似度大于相似度阈值,则移除遍历到执行轨迹;且在遍历结束则跳转继续迭代选取执行轨迹I,直到迭代完毕。
进一步的,在本实施例中,执行轨迹筛选模块106还可用于根据公式:
计算相似度阈值。其中,STh为相似度阈值,n为获取到的执行轨迹的个数,Simij为执行轨迹相似度i和j之间的相似度。
覆盖单元定位模块108,用于根据筛选得到的执行轨迹计算代码覆盖率,根据代码覆盖率定位对应控制指令判断逻辑的覆盖单元。
代码覆盖率即覆盖单元在筛选得到的执行轨迹中的出现次数(也可以是比例)。
在本实施例中,覆盖单元定位模块108可用于获取筛选得到的执行轨迹的覆盖单元及其运行次数,计算覆盖单元在筛选得到的执行轨迹中各自的出现次数,根据出现次数计算代码覆盖率。
例如,若筛选得到的执行轨迹的数量为10,若覆盖单元A在其中2个执行轨迹中出现,则出现次数为2或出现频率为2/10;若覆盖单元B在所有执行轨迹中均出现,则出现次数为10或出现频率为10/10。
在本实施例中,覆盖单元定位模块108还可用于根据代码覆盖率获取出现次数为1的分支覆盖单元和每个执行轨迹均包含的且运行次数不同的条件判断覆盖单元,根据分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元。
出现次数为1的分支覆盖单元即仅在唯一一条执行轨迹中运行过的覆盖单元。由于恶意程序的控制指令判断逻辑通常需要从网络数据包中提取控制指令,然后将该控制指令与其定义在二进制代码中的标准控制指令集中的控制指令进行比较,从而进行相应的操作,因此,每个执行轨迹均包含的且运行次数不同的条件判断覆盖单元,即为判断控制指令是否正确的逻辑部分。
覆盖单元定位模块108还可用于获取分支覆盖单元的分支时间戳和条件判断覆盖单元的判断时间戳,获取运行时间戳在分支时间戳和判断时间戳之间的覆盖单元,并根据获取到的覆盖单元、分支覆盖单元和条件判断覆盖单元定位判断指令执行序列。
判断指令执行序列即对应了控制指令判断逻辑的覆盖单元的执行序列。如前所述,恶意程序在判断控制指令是否正确时,会在条件判断覆盖单元运行数次,若控制指令匹配,则会进入分支覆盖单元进行运行,因此,由条件判断覆盖单元到分支覆盖单元的执行序列必然包含了控制指令判断逻辑。
指令获取模块110,用于根据对应控制指令判断逻辑的覆盖单元获取其对应的标准控制指令集。
在本实施例中,如前所述,由于判断指令执行序列必然包含了控制指令判断逻辑,且通常通过函数调用对控制指令是否正确进行判断(因为会跳转到分支覆盖单元,因此必然会有函数调用过程,且会将控制指令作为参数传递),则需要通过获取前述的标准控制指令集来与输入的控制指令进行比较,因此可通过定位获取标准控制指令集的指令的地址信息来获取标准控制指令集。标准控制指令集即能够触发恶意程序的控制指令的集合。
在本实施例中,指令获取模块110还可用于提取判断指令执行序列中的函数调用的参数值,根据参数值更新获取到的标准控制指令集。
可判断标准控制指令集中是否包含该参数值,若包含,则表示该控制指令未进行加密,若不包含,则表示该控制指令在与标准控制指令集进行比对之前进行了加密。可进一步通过地反编译函数调用对应的指令获取该加密函数,然后根据该加密函数更新获取到的标准控制指令集。
例如,若标准控制指令集中的控制指令均为经过加密算法加密后的控制指令,则控制指令在进入判断指令执行序列中后,同样会在经过加密算法处理后再与标准控制指令集中的控制指令进行比较。因此,可进一步地通过反编译函数调用得到具体的加密函数,并通过相应的解密函数对标准控制指令集中的控制指令进行处理,从而将标准控制指令集更新。或者,也可以在后期进行分析网络数据包是否包含恶意程序控制指令时,先将网络数据包中的数据经过加密算法处理后再与标准控制指令集进行比对。
在一个实施例中,恶意程序控制指令识别装置还包括控制指令校验模块112,用于根据标准控制指令集生成测试指令,通过修改函数调用参数值输入测试指令,获取测试执行轨迹,根据测试执行轨迹校验标准控制指令集。
例如,若仅通过监控到10次执行轨迹即获取到标准控制指令集,且标准控制指令集中包括25个控制指令,则控制指令校验模块112可用于将该25个控制指令依次作为测试指令取出,并通过将输入到条件判断覆盖单元中的函数调用的参数值修改为测试指令来获取对应的分支覆盖单元,从而得到与取出的测试指令对应的分支覆盖单元。若获取到的分支覆盖单元各不相同,则意味着获取到的标准控制指令集校验正确。也就是说,即使监控到的10次执行轨迹中并没有完全包含标准控制指令集中的所有控制指令,但是可通过修改条件判断覆盖单元中的函数调用的参数值来补全所有可能的控制指令判断执行分支,若分支覆盖单元各不相同,则意味着僵尸程序根据不同的控制指令执行了不同的操作,从而验证了获取到的标准控制指令集为正确;否则,若存在相同的分支覆盖单元,则意味着存在多个判断错误的控制指令(参考if-else语句,判断错误的控制指令必然会进入else对应的分支覆盖单元),从而验证标准控制指令集为错误,需要重新获取标准控制指令。
在一个典型的应用场景中,可通过前述的恶意程序控制指令识别方法和装置获取Zeus僵尸网络的控制指令。Zeus是近年来地下黑客社区中非常著名的一款用于控制僵尸网络的恶意软件,据报道,它已经感染了超过360万台的美国主机。
进程监控模块102可用于先将Zeus客户端程序bot.exe加载到监控主机中(即主动让监控主机被其感染),并对监控主机的系统进程的注入过程进行监控。
如图5所示,bot.exe程序启动后,可监控到监控主机的操作系统依次调用了如下系统函数序列:
Open Process→VirtualAllocEx→Write ProcessMemory→CreateRemoteThread
则获取到被注入进程是explorer.exe。
执行轨迹获取模块104则可用于在接收到数据输入之后,在预设监控时长内,对explorer.exe进程进行监控,从而生成一个执行轨迹,将其加入到执行轨迹数据库。生成的执行轨迹如图6所示。
执行轨迹筛选模块106还可用于计算执行轨迹数据库的覆盖相似度阈值STh,然后判断数据库中任意两个执行轨迹的覆盖相似度,如果覆盖相似度大于STh,则将从数据库中删除。
在本应用场景中,执行轨迹数据库中保留了Zeus客户端的10个不同的执行轨迹。
执行轨迹筛选模块106还对执行轨迹进行进一步的筛选。首先是过滤系统空间指令,只保留系统函数的调用语句。系统函数的地址分布是0x42000000~0xfc000000,将该段地址范围内的指令从执行轨迹中去除。其次要过滤非注入空间指令。注入地址是0x01f00000~0x01f27000(即explorer.exe对应的地址),保留该地址段的地址。筛选后的结果如图7所示。
覆盖单元定位模块108则用于对数据库中的每个执行轨迹进行以下操作:
将僵尸客户端程序所在内存地址空间的二进制代码提取出来进行反汇编,得到相应的汇编指令。对汇编指令按地址从低到高依次遍历:第一条指令视为第一个覆盖单元;当遇到顺序指令时,则它与上一条指令同归于当前覆盖单元;当遇到call、retn或jmp、je等指令时,则划分为一个新的覆盖单元。这样将程序地址空间划分成8701个覆盖单元。依次遍历执行轨迹的每条指令,初始时该执行轨迹的所有覆盖单元的执行次数为0,执行时间为0;当某个覆盖单元被执行时,该覆盖单元的执行次数加1,覆盖单元的最近执行执行时间更新为当前执行时间。如果覆盖单元的执行次数为1,则把初次执行时间设置为当前执行时间。得到该执行轨迹的覆盖情况统计。如图8所示,每个覆盖单元的统计数据(记作CUS)格式记为:覆盖单元内首地址,覆盖单元内末地址,执行次数,初次执行时间,最近执行时间。
如图9所示,覆盖单元定位模块108还用于横向检测每个覆盖单元在执行轨迹数据库中每个执行轨迹的覆盖情况,提取出cc=1/n的覆盖单元(记作pe),cc为覆盖单元的出现频率。统计信息pe每行的数据格式为:CU1的CUS,CU2的CUS,…,CUn的CUS。其中CU为覆盖单元,CUS为覆盖单元的统计数据,n为符合条件的覆盖单元个数。
如图10所示,覆盖单元定位模块108还用于横向检测每个覆盖单元在执行轨迹数据库中每个执行轨迹的覆盖情况,提取出cc=100%且每个执行轨迹的执行次数各不相同的覆盖单元(称为ad)。统计信息ad每行的数据格式为:CU1的CUS,CU2的CUS,…,CUn的CUS。其中CU为覆盖单元,CUS为覆盖单元的统计数据,n为符合条件的覆盖单元个数
如图11所示,覆盖单元定位模块108还用于纵向检测数据库中的每个元素,计算每个ad覆盖单元与各自的下一个pe覆盖单元的时间差。如果存在某个ad单元与pe单元对在数据库中所有执行轨迹中的时间差都小于时间差阈值,则将其提取为Seq执行序列,此时的ad单元即为结果覆盖单元。在Zeus的执行轨迹数据库中的每个执行轨迹中,ad覆盖单元0x01f0879与0x01f087a到其各自的下一个pe覆盖单元的时间差均小于5,因此提取为Seq执行序列,这两个覆盖单元为bl。
此外,执行轨迹获取模块104还用于在执行轨迹数据库的每个执行轨迹中检索0x01f0879覆盖单元与0x01f87a覆盖单元中的污点标记。得到的执行轨迹Tr1的指令污点信息如图12所示。
执行轨迹两个覆盖单元0x01f0879和0x01f87a都存在网络污点。对于执行轨迹Tr1,污点来源为10003号网络数据包,数据包内偏移量为302字节。且由此可知10003号网络数据包为含控制命令数据包,包内偏移量302字节位于其控制命令字段。
覆盖单元定位模块108则用于在执行轨迹中检索执行序列,提取出其中所包含的函数调用。如图13所示,地址0x01f08794的call指令调用了函数0x7c80aa26。根据进程空间系统函数分布可确定该函数为:
kernel32.dll::lstrcmpiW@EIP:0x7c80aa26。
覆盖单元定位模块108可动态监控该lstrcmpiW函数,提取函数参数如图14所示,其中的每个Inside字符串即为Zeus的每个控制命令,且观察到命令比较过程在比较结果相同时停止。
检索命令判断单元附近的指令操作数来源,如图15所示,得到的包含同一单元的操作数的指令有:地址0x01f087ab的指令操作数为0x01f025bc,地址0x01f0877c的指令操作数为0x01f025b8。将进程地址空间中地址0x1f025b8开始的数据提取出来,即获取到了该僵尸网络命令与控制协议的标准控制指令集。
如图16所示,标准控制指令集中依次列出了每个命令的编号及对应的模块入口地址,共25条控制命令。
控制指令校验模块112则用于检索执行轨迹数据库中每个执行轨迹的命令,寻找执行轨迹数据库中不存在的控制命令执行轨迹。
如图17所示,若执行轨迹数据库中还没有命令bot_httpinject_enable,则动态监控系统,在调用lstrcmpiW函数时重写输入参数值为bot_httpinject_enable。之后即可生成新的执行轨迹。依次类推进行操作,直到当最终获取到全部25条执行轨迹,从而验证获取到的标准控制指令集为正确。
获取到标准控制指令集之后,即可在网关、路由器等网络枢纽设备中加入对数据包的监控设备,在监控到包含标准控制指令集中的控制指令的数据包时,则可将该数据包拦截,从而起到对僵尸网络的防范作用。
上述恶意程序控制指令识别方法及装置,通过监控恶意程序对系统进程的注入过程获取与输入数据对应的执行轨迹,在对执行轨迹进行筛选后得到与注入地址即恶意程序加载在内存中的区域对应的执行轨迹,然后通过分析各个执行轨迹中包含的覆盖单元的代码覆盖率来定位与控制指令判断逻辑对应的覆盖单元。由于与控制指令判断逻辑对应的覆盖单元中必然包含用于校验输入数据中包含的控制指令是否正确的标准控制指令集,因此,根据该与控制指令判断逻辑对应的覆盖单元即可获取恶意程序控制指令。和现有技术相比,上述恶意程序控制指令识别方法及装置由于通过监控准确定位到了与控制指令判断逻辑对应的覆盖单元,使得识别的准确度得到了提高。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (20)

1.一种恶意程序控制指令识别方法,包括:
监控恶意程序的注入过程,获取注入进程和注入地址;
监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;
对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;
根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;
根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。
2.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹的步骤还包括:
获取所述输入数据对应的执行轨迹中包含的系统函数调用指令;
移除所述系统函数调用指令对应的覆盖单元。
3.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹的步骤还包括:
获取所述输入数据对应的执行轨迹中包含的与所述注入进程对应的调用指令;
移除所述注入进程对应的调用指令对应的覆盖单元。
4.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹的步骤还包括:
获取所述输入数据对应的执行轨迹包含的覆盖单元及所述执行轨迹包含的覆盖单元的运行次数,根据所述包含的覆盖单元和运行次数计算所述执行轨迹之间的相似度;
获取相似度阈值;
将相似度大于所述相似度阈值的执行轨迹归一化。
5.根据权利要求4所述的恶意程序控制指令识别方法,其特征在于,所述获取所述输入数据对应的执行轨迹包含的覆盖单元及所述执行轨迹包含的覆盖单元的运行次数,根据所述包含的覆盖单元和运行次数计算所述执行轨迹之间的相似度的步骤为:
获取所述输入数据对应的执行轨迹包含的内存地址相同且运行次数相同的相同覆盖单元个数、内存地址不同的特有覆盖单元个数以及内存地址相同但运行次数不同的近似覆盖单元个数;
根据所述相同覆盖单元个数、特有覆盖单元个数和近似覆盖单元个数计算所述输入数据对应的执行轨迹之间的相似度。
6.根据权利要求1所述的恶意程序控制指令识别方法,其特征在于,所述根据筛选得到的执行轨迹计算代码覆盖率包括:
获取筛选得到的执行轨迹的覆盖单元及其运行次数;
计算所述覆盖单元在所述筛选得到的执行轨迹中各自的出现次数;
根据所述出现次数计算代码覆盖率。
7.根据权利要求6所述的恶意程序控制指令识别方法,其特征在于,所述根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元的步骤为:
根据所述代码覆盖率获取出现次数为1的分支覆盖单元和每个筛选得到的执行轨迹均包含的且运行次数不同的条件判断覆盖单元;
根据所述分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元。
8.根据权利要求7所述的恶意程序控制指令识别方法,其特征在于,所述根据所述分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元的步骤为:
获取所述分支覆盖单元的分支时间戳和所述条件判断覆盖单元的判断时间戳;
获取运行时间戳在所述分支时间戳和所述判断时间戳之间的覆盖单元,并根据获取到的覆盖单元、分支覆盖单元和条件判断覆盖单元定位判断指令执行序列。
9.根据权利要求1至8任一项所述的恶意程序控制指令识别方法,其特征在于,所述根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集步骤之后还包括:
根据所述标准控制指令集生成测试指令;
通过修改函数调用参数值输入测试指令,获取测试执行轨迹;
根据所述测试执行轨迹校验所述标准控制指令集。
10.根据权利要求1至8任一项所述的恶意程序控制指令识别方法,其特征在于,所述监控与所述注入进程对应的输入数据的步骤包括:
获取污点数据类型;
根据所述污点数据类型对所述输入数据进行筛选。
11.一种恶意程序控制指令识别装置,其特征在于,包括:
进程监控模块,用于监控恶意程序的注入过程,获取注入进程和注入地址;
执行轨迹获取模块,用于监控与所述注入进程对应的输入数据,获取与所述输入数据对应的执行轨迹;
执行轨迹筛选模块,用于对所述输入数据对应的执行轨迹进行筛选,筛选得到与所述注入地址对应的执行轨迹;
覆盖单元定位模块,用于根据筛选得到的执行轨迹计算代码覆盖率,根据所述代码覆盖率定位对应控制指令判断逻辑的覆盖单元;
指令获取模块,用于根据所述对应控制指令判断逻辑的覆盖单元获取标准控制指令集。
12.根据权利要求11所述的恶意程序控制指令识别装置,其特征在于,所述执行轨迹筛选模块还用于获取所述输入数据对应的执行轨迹中包含的系统函数调用指令,移除所述系统函数调用指令对应的覆盖单元。
13.根据权利要求11所述的恶意程序控制指令识别装置,其特征在于,所述执行轨迹筛选模块还用于获取所述输入数据对应的执行轨迹中包含的与所述注入进程对应的调用指令,移除所述注入进程对应的调用指令对应的覆盖单元。
14.根据权利要求11所述的恶意程序控制指令识别装置,其特征在于,所述执行轨迹筛选模块还用于获取所述输入数据对应的执行轨迹包含的覆盖单元及所述执行轨迹包含的覆盖单元的运行次数,根据所述包含的覆盖单元和运行次数计算所述执行轨迹之间的相似度,获取相似度阈值,将相似度大于所述相似度阈值的执行轨迹归一化。
15.根据权利要求14所述的恶意程序控制指令识别装置,其特征在于,所述执行轨迹筛选模块还用于获取所述输入数据对应的执行轨迹包含的内存地址相同且运行次数相同的相同覆盖单元个数、内存地址不同的特有覆盖单元个数以及内存地址相同但运行次数不同的近似覆盖单元个数,根据所述相同覆盖单元个数、特有覆盖单元个数和近似覆盖单元个数计算所述输入数据对应的执行轨迹之间的相似度。
16.根据权利要求11所述的恶意程序控制指令识别装置,其特征在于,所述覆盖单元定位模块还用于获取筛选得到的执行轨迹的覆盖单元及其运行次数,计算所述覆盖单元在所述筛选得到的执行轨迹中各自的出现次数,根据所述出现次数计算代码覆盖率。
17.根据权利要求16所述的恶意程序控制指令识别装置,其特征在于,所述覆盖单元定位模块还用于根据所述代码覆盖率获取出现次数为1的分支覆盖单元和每个筛选得到的执行轨迹均包含的且运行次数不同的条件判断覆盖单元,根据所述分支覆盖单元和条件判断覆盖单元定位对应控制指令判断逻辑的覆盖单元。
18.根据权利要求17所述的恶意程序控制指令识别装置,其特征在于,所述覆盖单元定位模块还用于获取所述分支覆盖单元的分支时间戳和所述条件判断覆盖单元的判断时间戳,获取运行时间戳在所述分支时间戳和所述判断时间戳之间的覆盖单元,并根据获取到的覆盖单元、分支覆盖单元和条件判断覆盖单元定位判断指令执行序列。
19.根据权利要求11至18任一项所述的恶意程序控制指令识别装置,其特征在于,所述装置还包括控制指令校验模块,用于根据所述标准控制指令集生成测试指令,通过修改函数调用参数值输入测试指令,获取测试执行轨迹,根据所述测试执行轨迹校验所述标准控制指令集。
20.根据权利要求11至18任一项所述的恶意程序控制指令识别装置,其特征在于,所述执行轨迹获取模块还用于获取污点数据类型,根据所述污点数据类型对所述输入数据进行筛选。
CN201310007680.5A 2013-01-09 2013-01-09 恶意程序控制指令识别方法及装置 Active CN103914652B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310007680.5A CN103914652B (zh) 2013-01-09 2013-01-09 恶意程序控制指令识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310007680.5A CN103914652B (zh) 2013-01-09 2013-01-09 恶意程序控制指令识别方法及装置

Publications (2)

Publication Number Publication Date
CN103914652A CN103914652A (zh) 2014-07-09
CN103914652B true CN103914652B (zh) 2018-05-22

Family

ID=51040326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310007680.5A Active CN103914652B (zh) 2013-01-09 2013-01-09 恶意程序控制指令识别方法及装置

Country Status (1)

Country Link
CN (1) CN103914652B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6246377B2 (ja) * 2014-08-28 2017-12-13 三菱電機株式会社 プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム
US10853483B2 (en) 2014-12-09 2020-12-01 Nippon Telegraph And Telephone Corporation Identification device, identification method, and identification program
CN106850658B (zh) * 2017-02-28 2019-12-03 南开大学 实时在线学习的网络恶意行为检测方法
CN108509791B (zh) * 2018-02-09 2021-06-04 清华大学 检测处理器的方法、检测装置以及检测系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404658A (zh) * 2008-10-31 2009-04-08 北京锐安科技有限公司 一种检测僵尸网络的方法及其系统
CN101714118A (zh) * 2009-11-20 2010-05-26 北京邮电大学 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法
CN101930517A (zh) * 2010-10-13 2010-12-29 四川通信科研规划设计有限责任公司 一种僵尸程序的检测方法
CN102054149A (zh) * 2009-11-06 2011-05-11 中国科学院研究生院 一种恶意代码行为特征提取方法
CN102789417A (zh) * 2012-04-27 2012-11-21 北京大学 一种移动智能终端上的定向符号执行程序检测系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404658A (zh) * 2008-10-31 2009-04-08 北京锐安科技有限公司 一种检测僵尸网络的方法及其系统
CN102054149A (zh) * 2009-11-06 2011-05-11 中国科学院研究生院 一种恶意代码行为特征提取方法
CN101714118A (zh) * 2009-11-20 2010-05-26 北京邮电大学 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法
CN101930517A (zh) * 2010-10-13 2010-12-29 四川通信科研规划设计有限责任公司 一种僵尸程序的检测方法
CN102789417A (zh) * 2012-04-27 2012-11-21 北京大学 一种移动智能终端上的定向符号执行程序检测系统及方法

Also Published As

Publication number Publication date
CN103914652A (zh) 2014-07-09

Similar Documents

Publication Publication Date Title
Prokhorenko et al. Web application protection techniques: A taxonomy
CN112769821B (zh) 一种基于威胁情报和att&ck的威胁响应方法及装置
US20210099483A1 (en) Runtime detection of injection attacks on web applications via static and dynamic analysis
Shabtai et al. F-sign: Automatic, function-based signature generation for malware
CN104091121B (zh) 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法
JP5090661B2 (ja) ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
KR100910761B1 (ko) 프로세스 행위 예측 기법을 이용한 비정형 악성코드 탐지방법 및 그 시스템
CN103914652B (zh) 恶意程序控制指令识别方法及装置
CN110958257B (zh) 一种内网渗透过程还原方法和系统
US20170061126A1 (en) Process Launch, Monitoring and Execution Control
WO2007117582A2 (en) Malware detection system and method for mobile platforms
CN106549980A (zh) 一种恶意c&c服务器确定方法及装置
CN110336835A (zh) 恶意行为的检测方法、用户设备、存储介质及装置
Cepeda et al. Feature selection and improving classification performance for malware detection
CN108268773B (zh) Android应用升级包本地存储安全性检测方法
Wang et al. {MetaSymploit}:{Day-One} Defense against Script-based Attacks with {Security-Enhanced} Symbolic Analysis
Soliman et al. Taxonomy of malware analysis in the IoT
Rosenberg et al. Bypassing system calls–based intrusion detection systems
Lo et al. Towards an effective and efficient malware detection system
KR101674895B1 (ko) 자바 메소드 콜 그래프 기반의 자바 보안 취약점 분석 시스템
CN106919844A (zh) 一种Android系统应用程序漏洞检测方法
Faisal et al. Input Validation Vulnerabilities in Web Applications: Systematic Review, Classification, and Analysis of the Current State-of-the-Art
Frühwirt et al. Using machine learning techniques for traffic classification and preliminary surveying of an attackers profile
Pal et al. A3: An environment for self-adaptive diagnosis and immunization of novel attacks
CN113553584A (zh) 一种工业互联网安全未知威胁检测方法、系统及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant