CN103269341A - 一种间谍程序的分析方法和计算机系统 - Google Patents
一种间谍程序的分析方法和计算机系统 Download PDFInfo
- Publication number
- CN103269341A CN103269341A CN2013101671668A CN201310167166A CN103269341A CN 103269341 A CN103269341 A CN 103269341A CN 2013101671668 A CN2013101671668 A CN 2013101671668A CN 201310167166 A CN201310167166 A CN 201310167166A CN 103269341 A CN103269341 A CN 103269341A
- Authority
- CN
- China
- Prior art keywords
- interface
- information
- calling
- computer system
- 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.)
- Granted
Links
Images
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
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)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephone Function (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了间谍程序的分析方法和计算机系统,应用于通信技术领域。计算机系统会先捕获执行间谍程序的进程的执行轨迹;然后从执行轨迹中提取出回传数据包操作的子程序,该回传数据包操作是计算机系统执行间谍程序的进程时传输数据包给控制主机的操作;最后分析回传数据包操作的子程序中包括的调用接口的信息中各个组成部分的语义信息并输出。这样可以确定出计算机系统在调用间谍程序与控制主机通信过程中的回传的数据包的具体格式,从而发掘出间谍程序的通信协议,用户就可以根据得到的通信协议重写间谍程序的控制命令以控制间谍程序的执行,从而可以避免用户信息的泄露。
Description
技术领域
本发明涉及计算机技术领域,特别涉及间谍程序的分析方法和计算机系统。
背景技术
随着互联网的发展,恶意程序比如间谍程序等也逐渐发展,给当前的信息安全带来了不容忽视的威胁,因此对恶意程序的研究具有非常重要的意义。
以间谍程序为例说明,现有技术中,远端(比如控制主机)会控制间谍程序会将恶意代码强行注入到计算机系统当前正运行的应用程序的进程中,并获取该计算机系统上的用户信息,从而带来信息安全的问题。一般情况下,这些间谍程序寄宿中计算机系统的某个重要进程中,可以穿越防火墙,且很难用杀毒的应用程序发现,因此,如何防止计算机系统通过间谍程序泄露用户信息是现在需要重点解决的问题。
发明内容
本发明实施例提供间谍程序的分析方法和计算机系统,使得通过对计算机系统在调用间谍程序与控制主机通信过程中的回传数据包的分析,可以发掘间谍程序的通信协议,从而能控制间谍程序的执行,保护。
本发明实施例提供一种间谍程序的分析方法,包括:
捕获计算机系统执行间谍程序的进程的执行轨迹;
从所述执行轨迹中提取出回传数据包操作的子程序,所述回传数据包操作是所述计算机系统执行间谍程序的进程时传输数据包给控制主机的操作,所述回传数据包操作的子程序中包括多个调用接口的信息;
分析所述调用接口的信息中各个组成部分的语义信息并输出。
本发明实施例还提供一种计算机系统,包括:
轨迹捕获单元,用于捕获计算机系统执行间谍程序的进程的执行轨迹;
回传程序提取单元,用于从所述执行轨迹中提取出回传数据包操作的子程序,所述回传数据包操作是所述计算机系统执行间谍程序的进程时传输数据包给控制主机的操作,所述回传数据包操作的子程序中包括多个调用接口的信息;
语义分析单元,用于分析所述调用接口的信息中各个组成部分的语义信息并输出。
可见,本发明实施例的间谍程序的分析方法中,计算机系统会先捕获计算机系统执行间谍程序的进程的执行轨迹;然后从执行轨迹中提取出回传数据包操作的子程序,该回传数据包操作是计算机系统执行间谍程序的进程时传输数据包给控制主机的操作;最后分析回传数据包操作的子程序中包括的调用接口的信息中各个组成部分的语义信息并输出。这样可以确定出计算机系统在调用间谍程序与控制主机通信过程中的回传的数据包的具体格式,从而发掘出间谍程序的通信协议,用户就可以根据得到的通信协议重写间谍程序的控制命令以控制间谍程序的执行,比如用户编写的控制命令为:控制间谍程序的进程在获取用户信息的过程中转向获取其它的非重要信息并返回给控制主机,这样就可以避免用户信息的泄露。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种间谍程序的分析方法的流程图;
图2是本发明实施例提供的另一种间谍程序的分析方法的流程图;
图3是本发明实施例提供的另一种间谍程序的分析方法的流程图;
图4是本发明实施例中确定的部分调用关系图;
图5是本发明实施例提供的另一种间谍程序的分析方法的流程图;
图6是本发明实施例中进行动态切片后的调用关系图;
图7是本发明实施例提供的另一种间谍程序的分析方法的流程图;
图8a是本发明实施例中通过ASI算法分割发送缓冲区的信息的流向图;
图8b是本发明实施例中发送缓冲区的信息中各个组成部分的结构示意图;
图9是本发明实施例提供的一种计算机系统的结构示意图;
图10是本发明实施例提供的另一种计算机系统的结构示意图;
图11是本发明实施例提供的另一种计算机系统的结构示意图;
图12是本发明实施例提供的计算机系统中回传程序提取单元的结构示意图;
图13是本发明实施例提供的间谍程序的分析方法应用于的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种间谍程序的分析方法,主要是对计算机系统执行间谍程序过程中的回传数据包的操作的分析,本发明实施例的方法是任一计算机系统所执行的方法,流程图如图1所示,包括:
步骤101,捕获计算机系统执行间谍程序的进程的执行轨迹。
可以理解,应用程序的进程就是一个活跃着的应用程序,即计算机系统已经将应用程序的代码放到对应的内存空间中,占有了一定的系统资源的应用程序,一个应用程序在没有被调用到内存空间之前叫做为程序,被调用并得到了资源后就可以称为进程,一个进程中可以由许多线程组成,而每个线程能实现一定的功能。每个应用程序对应的内存空间为计算机系统的存储模块中储存该应用程序的代码的空间,每个应用程序对应存储模块中的一段空间。
上述间谍程序通常是由控制主机控制,从计算机系统上搜集信息,并在未得到该计算机系统所属用户许可时便将搜集的信息传递到控制主机的程序,可以包括监视击键的程序;搜集机密信息比如密码、信用卡号、个人识别密码(Personal Identification Number,PIN)码等的程序;获取电子邮件地址的程序,跟踪浏览习惯的程序等。一般情况下,控制主机会控制间谍程序强行注入到计算机系统中正在执行的应用程序的进程中,这样计算机系统在执行应用程序的进程的过程中,会调用该间谍程序,从而会泄露该计算机系统上的用户信息。可见,在执行间谍程序的进程的过程中,计算机系统与控制主机之间会发生通信,又由于这些间谍程序的形式各样,需要通过分析来获得间谍程序的通信协议,并根据得到的通信协议重写间谍程序的控制命令,并控制间谍程序的进程的执行以避免用户信息的泄露。
本实施例中,为了能分析间谍程序,计算机系统需要触发间谍程序的进程启动,并在计算机系统执行间谍程序的进程的过程中捕获执行轨迹。这里执行轨迹是程序进程按照时间顺序的执行记录,其中包括进程信息、模块信息、进程所包含的线程信息、计算机执行间谍程序的进程的指令、指令操作数、操作数污点标记、寄存器状态等。
步骤102,从执行轨迹中提取出回传数据包操作的子程序,该回传数据包操作是计算机系统执行间谍程序的进程时传输数据包给控制主机的操作,具体地可以包括先获取到回传的数据包然后再传输给控制主机,且在回传数据包操作的子程序中包括多个调用接口的信息。
在计算机系统执行间谍程序的进程的过程中,一般可以包括多个线程的操作,每个线程都能实现一定的功能,而每个线程中计算机系统会调用多个接口即应用程序编码接口(Application Programming Interface,,API),比如接收数据包的接口(比如recv接口函数),输出回传数据包的接口(比如send接口函数),打开文件的接口等。
本实施例中主要分析的是回传数据包操作的子程序即线程,由于在执行间谍程序的进程的过程中,计算机系统会与控制主机之间进行通信,则这里每个回传数据包操作对应至少一个接收数据包操作,即回传的数据包是对接收数据包响应的数据包,比如对bot.dns命令即域名系统(Domain NameSystem,DNS)的查询命令响应的数据包等。在该回传数据包操作的子程序中也包括有多个调用接口比如获取用户信息的接口,和输出回传数据包的接口等,由于在步骤101中得到的执行轨迹中已经包括了各个线程中计算机系统调用的接口,则在执行本实施例中,计算机系统可以从执行轨迹中提取出能影响到调用输出回传数据包的第一接口的其它被调用第二接口的信息,和调用输出回传数据包的第一接口一起组成了回传数据包操作的子程序。
步骤103,分析步骤102中得到的回传数据包操作的子程序中每个调用接口的信息中各个组成部分的语义信息并输出,这样就知道了回传的数据包格式,从而得知该间谍程序的通信协议。
其中,在调用接口的信息中可以包括多个组成部分,比如长度和具体内容等,在执行本步骤的分析时,具体可以通过合体结构识别(Aggregate StructureIdentification,ASI)算法将每个调用接口的信息细分成多个组成部分,然后再通过一定的方法得到各个组成部分的语义信息。该ASI算法是将每一个结构体(本实施例中具体为调用接口的信息)仅仅考虑为一个给定长度的一系列字节集,可以将该结构体依据访问方式分解成几个小部分。
可见,本发明实施例的间谍程序的分析方法中,计算机系统会先捕获计算机系统执行间谍程序的进程的执行轨迹;然后从执行轨迹中提取出回传数据包操作的子程序,该回传数据包操作是计算机系统执行间谍程序的进程时传输数据包给控制主机的操作;最后分析回传数据包操作的子程序中包括的调用接口的信息中各个组成部分的语义信息并输出。这样可以确定出计算机系统在调用间谍程序与控制主机通信过程中的回传的数据包的具体格式,从而发掘出间谍程序的通信协议,用户就可以根据得到的通信协议重写间谍程序的控制命令以控制间谍程序的执行,比如用户编写的控制命令为:控制间谍程序的进程在获取用户信息的过程中转向获取其它的非重要信息并返回给控制主机,这样就可以避免用户信息的泄露。
参考图2所示,在一个具体的实施例中,计算机系统在执行上述步骤101时,具体可以通过如下的步骤来实现:
A1:触发计算机系统执行间谍程序的进程,本实施例中,为了对间谍程序进行分析,需要计算机系统先执行间谍程序的进程,在具体实现过程中,可以通过计算机系统中的模拟器来直接执行间谍程序的进程,而不会将该间谍程序注入到其它应用程序的进程中。
A2:输入对间谍程序的进程的控制命令,并监测到计算机系统对控制命令执行的二进制执行轨迹,具体地,用户可以从计算机系统的模拟器提供的接口输入任意一个控制命令,并通过模拟器来监测执行该控制命令的执行轨迹。
A3:根据二进制执行轨迹得到接收上述控制命令及该控制命令对应的回传数据包操作中所包括的各个执行指令的信息。由于汇编代码更容易进行分析,则在执行步骤A3时,可以利用计算机系统的模拟器平台提供的汇编机制,将计算机系统能直接执行的代码(即二进制执行轨迹中包括的代码)转化为汇编代码,得到的每个执行指令的格式为“地址:汇编指令参与操作的寄存器或存储器中的数据污点信息”,其中污点信息是指参与操作的数据是否被打了污点,做了标记,对于被打了污点的数据,即可以追踪它的传播过程。例如“719c3c9c:test %eax,%eax Reax[0×00000000][4](R)T0Reax[0×00000000][4](R)T0”。
且得到的每个执行指令的信息可以如下表1所示:
表1
可见,通过上述A1到A3可以得到汇编格式的执行轨迹,方便之后根据执行轨迹进行间谍程序的分析。
参考图3所示,在另一个具体的实施例中,由于步骤101中得到的执行轨迹中可以包括计算机系统执行间谍程序的进程过程中数据包接收和回传的多个子过程,为了简化分析过程,则计算机系统在执行上述步骤102之前还可以对执行轨迹进行初步过滤得到数据包接收和回传的一个子过程进行着重分析,即在执行步骤102之前执行步骤104,即对步骤101中得到的执行轨迹从输出回传数据包的接口处切割,得到多个子执行轨迹,则每个子执行轨迹中可以包括计算机系统从接收到控制主机的数据包到输出回传数据包给控制主机的一个子过程中的执行轨迹。这种情况下,计算机系统在执行上述步骤102时,会从任一子执行轨迹中提取出回传数据包操作的子程序。
具体地计算机系统在执行上述步骤102时,可以通过如下的步骤来实现:
B1:根据执行轨迹中(本实施例中为一个子执行轨迹)的多个执行指令的信息确定在计算机系统执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图。其中调用关系图是计算机系统在执行某一功能时,调用到的各个接口之间的关系图,具体可以通过S.Horwitz等人提出的构造算法来得到调用关系图。
由于计算机系统在调用一个接口时,在汇编层次上会先出现入口指令即call指令,接下来计算机系统就会进入被调用接口的函数体执行,直到执行结束会有出口指令即ret指令。当出现接口的嵌套调用时,也会有多对call和ret指令,则根据这些执行指令的先后顺序,依次由外层向内层找call指令,然后相反的由内层向外层找ret指令,依次配成指令对,每个指令对可以对应一个被调用的接口。例如,执行轨迹中部分执行指令可以如下表2所示:
表2
可见,上述表2中,第1行的call指令与第3行的ret指令成指令对,第6行的call指令与第7行的ret指令成指令对,第8行的call指令和第13行的ret指令成指令对,第9行的call指令和第12行的ret指令成指令对,第10行的call指令和第11行的ret指令成指令对,第15行的call指令和第16行的ret指令成指令对,第18行的call指令和第19行的ret指令成指令对,第21行的call指令和第22行的ret指令成指令对等,可见,在找指令对时,需要查找缩进量相同的call和ret指令。
因此,在确定本步骤中的调用关系图时,计算机系统具体可以先查找执行轨迹中(本实施例中为一个子执行轨迹)中的多个执行指令中调用每个接口的入口指令和出口指令;然后将入口指令或出口指令作为调用节点,并将存在调用关系的调用节点之间通过调用边连接。其中每个调用节点可以表示一个调用接口的语句,在调用节点中包括被调用接口的起始地址;如果两个接口之间存在调用关系,比如在调用输出回传数据包的接口时,需要先调用打开文件获取信息的接口,则输出回传数据包的接口与打开文件获取信息的接口之间存在调用关系,则用调用边将两个接口对应的调用节点之间连接起来。
例如图4所示得到的部分调用关系图中,每个调用节点中包括一个入口指令及被调用接口的起始地址,存在调用关系的两个调用节点之间用调用边(图4中的箭头)连接。且图4的调用关系图中没有显示与每个call指令成对出现的ret指令,只用call指令表明接口的调用关系,省略了ret指令。
B2:在调用关系图中查找出影响输出回传数据包的第一接口的其它被调用的第二接口,将输出回传数据包的第一接口,及影响输出回传数据包的第一接口的其它被调用的第二接口的信息作为回传数据包操作的子程序。
具体地,计算机系统可以通过动态切片的方法对调用关系图进行动态切片,得到能影响到输出回传数据包的第一接口调用的其它被调用的第二接口。其中动态切片主要是对一个程序按照切片准则进行动态切片后最终得到的切片称为Weiser切片,该切片准则可以用<n,V>来表示,n指程序中的某个兴趣点,一般指一条语句;V表示在这条语句使用的变量的集合。具体地,对于一个程序P的切片S可以通过在程序P中删除零条或者多条语句后得到,且保证程序P和所得的切片S关于切片准则的作用是相同的。进一步地,如果在程序P进行动态切片时考虑程序P的某个具体输入IO,则计算机系统会计算程序P在这个特定输入IO的条件下所有影响V在n点的值的语句和谓词集合,从而得到的切片的准则为<n,V,IO>。
则参考图5所示,在本实施例中,兴趣点n即为确定的动态切片源,计算机系统在执行步骤B2时,具体可以通过如下步骤来实现,包括:
C1:确定动态切片源为调用关系图中的输出回传数据包的第一接口的入口指令。
在确定动态切片源时,计算机系统可以先在执行轨迹中,确定输出回传数据包的第一接口的入口地址,比如send函数的指令寄存器(EIP)即0x71a24c27;然后在调用关系图中找到该入口地址对应的入口指令即调用关系图中的一个调用节点。
C2:判断其它被调用的第二接口的调用是否能影响到动态切片源的调用,即该动态切片源是否为该第二接口的被调用函数,如果影响到,即该第二接口的函数参数会传播到该动态切片源的函数参数,则执行步骤C3;如果没有影响到,则执行步骤C4。
C3:将第二接口的入口指令作为动态切片源,并返回执行判断的步骤C2,这样不停地循环执行,直到对调用关系图内每个调用节点中的入口指令都执行了步骤C2。
C4:将第二接口的入口指令从调用关系图中删除。
例如图6所示,在对上述图4中调用关系图进行动态切片后,得到切片后的调用关系图,每个调用节点包括一条入口指令即call指令,且包括调用一个接口的起始地址。其中调用节点call-404c1c对应的调用接口为输出回传数据包的第一接口,在该调用节点的入口指令内调用输出回传数据包的第一接口(比如send函数),进行回传数据包的输出;最顶端的调用节点call-40b657对应创建回传数据包操作的线程。
需要说明的是,上述第一接口和第二接口并不表示顺序关系,而是为了说明不同的接口。
可见,通过本实施例的步骤B1到B2,可以获得能影响到输出回传数据包的第一接口调用的其它被调用的第二接口,进一步地简化了对于间谍程序的分析。
参考图7所示,在其它具体的实施例中,计算机系统在执行上述步骤103时,计算机系统可以通过如下的步骤来实现步骤103中的操作,包括:
D1:获取回传数据包操作的子程序中各个调用接口的各个组成参数的信息。
可以理解,某个计算机系统中操作系统的接口,如系统接口、应用程序接口及动态链接库中的接口在调用时的各个参数的语义是操作系统供应商所公开,并储存在接口数据库中的。比如对于传输控制协议(Transmission ControlProtocol,TCP)下的输出接口为send,接口数据库中储存的计算机系统调用该输出接口的原型信息为:第二个参数为输出数据的首地址,第三个参数为输出数据的长度。
通常计算机系统在执行间谍程序的进程的过程中,计算机系统传输给控制主机的回传数据包的内容可以包括目标主机的时间,主机信息如主机名、端口和本地IP等。回传数据包操作需要涉及到调用多个系统接口,即操作系统中的应用程序与操作系统底层的接口,计算机系统只有通过调用系统接口才能使计算机系统完成相应的服务。其中涉及到的系统接口可以包括文件操作接口、进程操作接口、注册表操作接口、网络接口、系统服务接口和字符串处理接口等;而这些调用接口的原型信息都存储在接口数据库中,具体可以包含每个调用接口的原型,接口名、接口功能及返回值等信息,还可以包含各类参数的信息比如类型及参数意义等。
本实施例中,计算机系统在执行本步骤D1时,可以先在回传数据包操作的子程序中查找到调用关系图中各个调用节点对应的调用接口的全部信息,但是计算机系统并不知道调用接口的信息中各个参数的意义;还需要利用调用接口的入口指令地址向接口数据库中查找到该调用接口的原型信息,比如对于send接口的第二个参数为输出数据的首地址,第三个参数为输出数据的长度等,则根据原型信息就可以得到调用接口的各个参数的信息。
其中计算机系统在从回传数据包操作的子程序中查找调用接口的信息时,如果回传数据包操作的子程序中每个调用接口的信息是连续代码段,计算机系统很容易找到每个调用接口的全部信息,只要找到每个调用接口的入口指令和出口指令,则在入口指令与出口指令之间的信息即为该调用接口的全部信息。
如果回传数据包操作的子程序是非连续的代码段,即每个调用接口的信息不是连续的代码段,在从回传数据包操作的子程序中查找调用接口的信息时,计算机系统具体可以根据执行轨迹中调用接口在被调用时的位移信息,查找到调用接口的全部信息。这里位移信息是指调用接口中两个参数在被调用到之间的距离信息,可以通过调用语句数量等来衡量,这样计算机系统在确定调用接口的一个参数信息后,再根据该位移信息移动后即可获得调用接口的另一参数信息,这样反复操作直到将调用接口的全部信息都查找到为止。
D2:将回传数据包操作的子程序对应发送缓冲区的信息分割成多个组成部分。
需要说明的是,计算机系统在调用了回传数据包操作的子程序中各个调用接口后,在该回传数据包操作的子程序对应的发送缓冲区内就包括了计算机系统需要发送的回传数据包的信息,主要可以按照字节顺序排列。则计算机系统可以利用ASI算法将该发送缓冲区的信息分割成多个具有语义信息的小分割单元,每个分割单元以字节为单位,是包含多个字节的字节序列,然后计算机系统需要通过下述步骤D3得到各个分割单元的语义信息。
在ASI算法中,对于计算机系统访问待分析数据形式,是通过数据访问限制语言(data-access constraint language,DAC)来指定的,具体地,DAC可以通过如下的程序来指定:
Pgm::==∈|UnifyConstraint Pgm
UnifyConstraint::==DataRef≈DataRef
DataRef::==ProgVars|DataRef[int:int]|DataRef\Int+
上述DAC的程序中,DataRef代表一序列字节,即需要分析的结构体即待分析的程序;UnifyConstraint记录待分析程序中数据流的流向。其中数据流的流向中不包括程序中的直接的数据流,因为对于直接的数据流,即从一个DataRef到另一个DataRef的数据流,认为这两个DataRef具有相同的结构。另外≈表示数据流的流向,int是一个非负整数,Int+是一个正数,ProgVars是程序变量集。且上述的DAC程序指出如下3种数据引用:(1)变量P∈ProgVar表示变量P的所有字节;(2)DataRef[1:u]表示指的是DataRef中从字节l到u,例如,P[8:11]指的是变量P的第8到11字节;(3)DataRef\n表示一个包含n个元素的数组,例如P[0:11]\3指的是一系列字节P[0:3],P[4:7]或者P[8:11]。
例如,回传数据包操作的子程序中一个调用接口的信息的访问限制如下:
P[0:39]\5[0:3]≈const_1[0:3],表示将数组P(包含5个元素)中每个元素的x值赋值为恒量1,即P[i].x=1;
P[0:39]\5[4:7]≈const_2[0:3],表示将数组P中每个元素的y值赋值为恒量2,即P[i].y=2;
Return_main[0:3]≈P[4:7],表示返回值为数组P中第4到7字节,该返回值是被分析程序的实际返回值,即p[0].y的值。
这样该ASI算法中通过DAC程序来指定对于发送缓冲区内待分析程序的访问方式,从而可以确定出被访问的数据的最小分割单元。
按照以上ASI算法可以将发送缓冲区的信息分割成多个组成部分,如图8a示出的分割发送缓冲区的信息的流向,及图8b所示的发送缓冲区的信息的组成部分,其中每个叶子节点都表示最小的不能继续分割的单元,分别代表结构体P中的一系列字节,数组节点用标记,数组节点中的数字表示数组元素的个数。总长度为40字节的被分析的程序被分割成两个具体值(即两个4字节的数即m1和m2)和一个数组m3[4]即P[8:39],其中数组m3[4]进一步地被分割为包含有4个数组元素的数组,每个数组元素有8字节,而8个字节中又由2个4字节的节点即m3.m1和m3.m2组成。其中对于P[4:7]来说,在多个组成部分中都包含了,则该节点为共享节点,也是返回值。
D3:根据步骤D1中得到的调用接口的各个组成参数的信息,对应地确定步骤D2中分割成的各个组成部分的语义信息后输出。
具体地,计算机系统通过步骤D1可以获得各个调用接口的参数信息,比如各个参数的首地址等信息,在执行本步骤D3时,可以利用污点传播技术,先分别将步骤102中得到的回传数据包操作的子程序所包括的各个调用接口的各个参数打污点,观察这些参数中哪些参数被传播到了该回传数据包操作的子程序对应的发送缓冲区的地址空间内。如果某一参数被传播到了发送缓冲区且参数长度与步骤D2中分割得到的分割单元长度相符,则发送缓冲区中的该分割单元的语义即为打污点的参数的语义,而参数的语义在步骤D1中已经获得。
其中将各个调用接口的各个参数打污点时,可以从调用接口的参数的首地址开始,将参数所在的地址空间都打上污点,即将参数的每个字节都打上污点,且污点的粒度是字节级的,也就是每个字节都有一个唯一的污点标记。例如,一个调用接口的参数由4个字节组成,那么这个参数的4个字节将被分别打上不同的污点标记。
例如:通过上述ASI算法及污点传播技术,可以得到的对于bot.dns命令的回传数据包中可以包括如下表3所示的格式:
表3
本发明实施例还提供一种计算机系统,其中各个单元时间可以按照上述间谍程序的分析方法的流程进行分析,其结构示意图如图9所示,包括:
轨迹捕获单元10,用于捕获计算机系统执行间谍程序的进程的执行轨迹;
回传程序提取单元11,用于从所述轨迹捕获单元10捕获的执行轨迹中提取出回传数据包操作的子程序,所述回传数据包操作是所述计算机系统执行间谍程序的进程时传输数据包给控制主机的操作,所述回传数据包操作的子程序中包括多个调用接口的信息;
语义分析单元12,用于分析所述回传程序提取单元11提取的回传数据包操作的子程序中包括的调用接口的信息中各个组成部分的语义信息并输出。
可见,本发明实施例的计算机系统中,轨迹捕获单元10会先捕获计算机系统执行间谍程序的进程的执行轨迹;然后回传程序提取单元11从执行轨迹中提取出回传数据包操作的子程序,该回传数据包操作是计算机系统执行间谍程序的进程时传输数据包给控制主机的操作;最后语义分析单元12分析回传数据包操作的子程序中包括的调用接口的信息中各个组成部分的语义信息并输出。这样可以确定出计算机系统在调用间谍程序与控制主机通信过程中的回传的数据包的具体格式,从而发掘出间谍程序的通信协议,用户就可以根据得到的通信协议重写间谍程序的控制命令以控制间谍程序的执行,比如用户编写的控制命令为:控制间谍程序的进程在获取用户信息的过程中转向获取其它的非重要信息并返回给控制主机,这样就可以避免用户信息的泄露。
参考图10所示,在一个具体的实施例中,计算机系统除了可以包括如图9所示的结构外,其中的轨迹捕获单元10具体可以通过进程执行单元110、控制输入单元120和执行获取单元130来实现,而语义分析单元12具体可以通过参数信息获取单元112、分割单元122和语义确定单元132来实现,具体地:
进程执行单元110,用于触发计算机系统执行所述间谍程序的进程。
控制输入单元120,用于输入对所述间谍程序的进程的控制命令,并监测到所述计算机系统对所述控制命令执行的二进制执行轨迹。用户可以通过控制输入单元120提供的接口输入任意一个控制命令,并监测进程执行单元110执行该控制命令的执行轨迹。
执行获取单元130,用于根据所述控制输入单元120监测到的二进制执行轨迹得到接收所述控制命令及所述控制命令对应的回传数据包操作中包括的各个执行指令的信息。该执行获取单元130可以通过反汇编方法,将计算机系统能直接执行的代码(即二进制执行轨迹中包括的代码)转化为汇编代码,得到的每个执行指令的格式可以为“地址:汇编指令参与操作的寄存器或存储器中的数据污点信息”。
参数信息获取单元112,用于获取回传程序提取单元11提取的回传数据包操作的子程序中各个调用接口的各个组成参数的信息。具体地,参数信息获取单元112可以从所述回传数据包操作的子程序中查找各个调用接口的信息;然后向接口数据库中查找到所述调用接口的原型信息,根据原型信息获知所述调用接口的各个参数的信息。
其中,在查找各个调用接口的信息时,如果回传数据包操作的子程序中每个调用接口的信息是连续代码段,则参数信息获取单元112很容易找到每个调用接口的全部信息,只要找到每个调用接口的入口指令和出口指令,则在入口指令与出口指令之间的信息即为该调用接口的全部信息;如果回传数据包操作的子程序是非连续的代码段,参数信息获取单元112需要根据所述执行轨迹中所述调用接口在被调用时的位移信息,查找到所述调用接口的信息。
分割单元122,用于将所述回传程序提取单元11提取的回传数据包操作的子程序对应发送缓冲区的信息分割成多个组成部分。
语义确定单元132,用于根据所述参数信息获取单元112获取的调用接口的各个组成参数的信息,对应地确定所述分割单元122分割成的各个组成部分的语义信息并输出。
具体地,语义确定单元132在确定语义信息时,可以利用污点传播技术,先分别将回传数据包操作的子程序所包括的各个调用接口的各个参数打污点,观察这些参数中哪些参数被传播到了该回传数据包操作的子程序对应的发送缓冲区的地址空间内。如果某一参数被传播到了发送缓冲区且参数长度与分割单元122分割得到的分割单元长度相符,则发送缓冲区中的该分割单元的语义即为打污点的参数的语义,而参数的语义通过参数信息获取单元112已经获得。
其中语义确定单元132将各个调用接口的各个参数打污点时,可以从调用接口的参数的首地址开始,将参数所在的地址空间都打上污点,即将参数的每个字节都打上污点,且污点的粒度是字节级的,也就是每个字节都有一个唯一的污点标记。例如,一个调用接口的参数由4个字节组成,那么这个参数的4个字节将被分别打上不同的污点标记。
本实施例的计算机系统中,通过轨迹捕获单元10中的进程执行单元110、控制输入单元120和执行获取单元130即可得到包括各个执行指令的信息的执行轨迹;然后由回传程序提取单元11中从执行获取单元130得到的执行轨迹中提取回传数据包操作的子程序;最后由语义分析单元12来进行语义分析并输出。
参考图11所示,在另一个具体的实施例中,计算机系统除了可以包括如图9所示的结构外,还可以包括切割单元13,且其中的回传程序提取单元11具体可以通过调用图确定单元111和查找单元121来实现,具体地:
切割单元13,用于对所述轨迹捕获单元10捕获的执行轨迹从输出回传数据包的接口处进行切割,得到多个子执行轨迹,每个子执行轨迹中可以包括计算机系统从接收到控制主机的数据包到输出回传数据包给控制主机的一个子过程中的执行轨迹,其中捕获的执行轨迹中可以包括多个执行指令的信息。则回传程序提取单元11具体可以从所述任一子执行轨迹中提取出回传数据包操作的子程序。
调用图确定单元111,用于根据所述多个执行指令的信息确定在计算机系统执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图,具体地,该调用图确定单元111可以根据入口指令(即call指令)及出口指令(即ret指令)的先后顺序,依次由外层向内层找call指令,然后相反的由内层向外层找ret指令,依次配成指令对,每个指令对可以对应一个被调用的接口。
查找单元121,用于在所述调用图确定单元111确定的调用关系图中查找出影响输出回传数据包的第一接口的被调用的第二接口,将所述输出回传数据包的第一接口,及影响回传数据包的第一接口的被调用的第二接口的信息作为所述回传数据包操作的子程序。
本实施例中,当轨迹捕获单元10在获得包括多个执行指令的信息的执行轨迹后,可以由回传程序提取单元11中的调用图确定单元111根据这多个执行指令的信息确定调用关系图。进一步地,为了简化分析过程,在轨迹捕获单元10获得执行轨迹后,可以先由切割单元13切割得到多个子执行轨迹,然后再由回传程序提取单元11中的调用图确定单元111根据这多个子执行轨迹中得多个执行指令的信息确定调用关系图,最终得到的每个子执行轨迹的调用关系图可以表示计算机系统从接收到控制主机的数据包到输出回传数据包给控制主机的一个子过程中接口调用的情况。
当调用图确定单元111在确定了调用关系图后,可以由查找单元121通过动态切片的方式查找出回传数据包操作的子程序;最后语义分析单元12分析该回传数据包操作的子程序中各个部分的语义信息。
参考图12所示,在具体实现的过程中,本实施例的调用图确定单元111具体可以通过指令查找单元131和调用图获取单元141来实现,而查找单元121具体可以通过切片源确定单元151、判断单元161、判断处理单元171和删除单元181来实现,其中:
指令查找单元131,用于查找所述轨迹捕获单元10捕获得到的执行轨迹(或切割单元13切割得到的子执行轨迹)包括的多个执行指令中调用每个接口的入口指令和出口指令;
调用图获取单元141,用于将所述指令查找单元131查找的入口指令或出口指令作为调用节点,并将存在调用关系的调用节点之间通过调用边连接。
切片源确定单元151,用于确定动态切片源为所述调用图确定单元111确定的调用关系图中的输出回传数据包的第一接口的入口指令。切片源确定单元151可以先在执行轨迹中,确定输出回传数据包的第一接口的入口地址,比如send函数的指令寄存器(EIP)即0x71a24c27;然后在调用关系图中找到该入口地址对应的入口指令即调用关系图中的一个调用节点。
判断单元161,用于判断所述调用关系图中被调用的第二接口的调用是否影响到所述切片源确定单元151确定的动态切片源的调用。
判断处理单元171,用于如果所述判断单元161判断所述第二接口的调用影响到所述动态切片源的调用,则将所述第二接口的入口指令作为所述动态切片源,并触发所述判断单元161执行所述判断的步骤。
删除单元181,用于如果所述判断单元161判断所述第二接口的调用没有影响到所述动态切片源的调用,则将所述第二接口的入口指令从所述调用关系图中删除。
本实施例中,通过判断单元161、判断处理单元171和删除单元181不停地循环执行动态切片的过程,直到对调用关系图内每个调用节点中的入口指令都由判断单元161进行了判断。
以下主要以本发明实施例的间谍程序分析方法应用于终端中来举例说明,该终端可以包括智能手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III,MP3)播放器、动态影像专家压缩标准音频层面4(Moving Picture Experts Group AudioLayer IV,MP4)播放器、膝上型便携计算机和台式计算机等等。
请参考图13,其示出了本发明实施例所涉及的终端的结构示意图,具体来讲:
终端可以包括射频(Radio Frequency,RF)电路20、包括有一个或一个以上计算机可读存储介质的存储器21、输入单元22、显示单元23、传感器24、音频电路25、无线保真(wireless fidelity,WiFi)模块26、包括有一个或者一个以上处理核心的处理器27、以及电源28等部件。本领域技术人员可以理解,图13中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路20可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器27处理;另外,将涉及上行的数据发送给基站。通常,RF电路20包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路20还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global Systemof Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器21可用于存储软件程序以及模块,处理器27通过运行存储在存储器21的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器21还可以包括存储器控制器,以提供处理器27和输入单元22对存储器21的访问。
输入单元22可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元22可包括触敏表面221以及其他输入设备222。触敏表面221,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面221上或在触敏表面221附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面221可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器27,并能接收处理器27发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面221。除了触敏表面221,输入单元22还可以包括其他输入设备222。具体地,其他输入设备222可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元23可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元23可包括显示面板231,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(OrganicLight-Emitting Diode,OLED)等形式来配置显示面板231。进一步的,触敏表面221可覆盖显示面板231,当触敏表面221检测到在其上或附近的触摸操作后,传送给处理器27以确定触摸事件的类型,随后处理器27根据触摸事件的类型在显示面板231上提供相应的视觉输出。虽然在图13中,触敏表面221与显示面板231是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面221与显示面板231集成而实现输入和输出功能。
终端还可包括至少一种传感器24,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板231的亮度,接近传感器可在终端移动到耳边时,关闭显示面板231和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路25、扬声器251,传声器252可提供用户与终端之间的音频接口。音频电路25可将接收到的音频数据转换后的电信号,传输到扬声器251,由扬声器251转换为声音信号输出;另一方面,传声器252将收集的声音信号转换为电信号,由音频电路25接收后转换为音频数据,再将音频数据输出处理器27处理后,经RF电路20以发送给比如另一终端,或者将音频数据输出至存储器21以便进一步处理。音频电路25还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块26可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图13示出了WiFi模块26,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器27是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器21内的软件程序和/或模块,以及调用存储在存储器21内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器27可包括一个或多个处理核心;优选的,处理器27可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器27中。
终端还包括给各个部件供电的电源28(比如电池),优选的,电源可以通过电源管理系统与处理器27逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源28还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器27会按照如下的指令,执行存储器21中储存的一个或一个以上的应用程序的进程,从而实现各种功能:
捕获该处理器27在执行间谍程序的进程的执行轨迹;
从所述执行轨迹中提取出回传数据包操作的子程序,所述回传数据包操作是该处理器27执行间谍程序的进程时传输数据包给控制主机的操作,所述回传数据包操作的子程序中包括多个调用接口的信息;
分析所述调用接口的信息中各个组成部分的语义信息并输出。
其中处理器27在捕获计算机系统执行间谍程序的进程的执行轨迹时,具体地,可以先触发该处理器27执行所述间谍程序的进程;然后输入对所述间谍程序的进程的控制命令,并监测所述该处理器27对所述控制命令执行的二进制执行轨迹;再根据所述二进制执行轨迹得到接收所述控制命令及所述控制命令对应的回传数据包操作中包括的各个执行指令的信息。
而在分析所述调用接口的信息中各个组成部分的语义信息并输出时,处理器27具体可以:获取所述回传数据包操作的子程序中各个调用接口的各个组成参数的信息;并将回传数据包操作的子程序对应发送缓冲区的信息分割成多个组成部分;然后根据获取的调用接口的各个组成参数的信息,对应地确定分割成的各个组成部分的语义信息并输出。其中处理器27在获取调用接口的各个组成参数的信息时,可以从回传数据包操作的子程序中查找各个调用接口的信息;然后向接口数据库中查找到所述调用接口的原型信息,根据原型信息从而获知所述调用接口的各个参数的信息。而处理器27在查找调用接口的信息时,如果所述回传数据包操作的子程序是非连续的代码段,则处理器27在从所述回传数据包操作的子程序中查找各个调用接口的信息,具体包括:根据所述执行轨迹中所述调用接口在被调用时的位移信息,查找到所述调用接口的信息。
进一步地,为了简化分析过程,处理器捕获该处理器27执行间谍程序的进程的执行轨迹之后,还需要对所述执行轨迹从输出回传数据包的接口处进行切割,得到多个子执行轨迹;则所述从所述执行轨迹中提取出回传数据包操作的子程序,具体包括:从所述任一子执行轨迹中提取出回传数据包操作的子程序。
如果捕获的执行轨迹中包括多个执行指令的信息;则处理器27从所述执行轨迹中提取出回传数据包操作的子程序,具体包括:根据所述多个执行指令的信息确定在该处理器27执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图;在所述调用关系图中查找出影响输出回传数据包的第一接口的被调用的第二接口,将所述输出回传数据包的第一接口,及影响回传数据包的第一接口的被调用的第二接口的信息作为所述回传数据包操作的子程序。其中:
(1)处理器27根据所述多个执行指令的信息确定在该处理器27执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图,具体包括:查找所述多个执行指令中调用每个接口的入口指令和出口指令;将所述入口指令或出口指令作为调用节点,并将存在调用关系的调用节点之间通过调用边连接。
(2)处理器27在所述调用关系图中查找出影响输出回传数据包的第一接口的被调用的第二接口,具体包括:确定动态切片源为所述调用关系图中的输出回传数据包的第一接口的入口指令;判断所述第二接口的调用是否影响到所述动态切片源的调用,如果是,则将所述第二接口的入口指令作为所述动态切片源,并返回执行所述判断的步骤;如果不是,则将所述第二接口的入口指令从所述调用关系图中删除。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的间谍程序的分析方法和计算机系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (18)
1.一种间谍程序的分析方法,其特征在于,包括:
捕获计算机系统执行间谍程序的进程的执行轨迹;
从所述执行轨迹中提取出回传数据包操作的子程序,所述回传数据包操作是所述计算机系统执行间谍程序的进程时传输数据包给控制主机的操作,所述回传数据包操作的子程序中包括多个调用接口的信息;
分析所述调用接口的信息中各个组成部分的语义信息并输出。
2.如权利要求1所述的方法,其特征在于,所述捕获计算机系统执行间谍程序的进程的执行轨迹,具体包括:
触发计算机系统执行所述间谍程序的进程;
输入对所述间谍程序的进程的控制命令,并监测到所述计算机系统对所述控制命令执行的二进制执行轨迹;
根据所述二进制执行轨迹得到接收所述控制命令及所述控制命令对应的回传数据包操作中包括的各个执行指令的信息。
3.如权利要求1或2所述的方法,其特征在于,所述捕获计算机系统执行间谍程序的进程的执行轨迹之后,还包括:
对所述执行轨迹从输出回传数据包的接口处进行切割,得到多个子执行轨迹;
则所述从所述执行轨迹中提取出回传数据包操作的子程序,具体包括:从所述任一子执行轨迹中提取出回传数据包操作的子程序。
4.如权利要求1或2所述的方法,其特征在于,所述捕获的执行轨迹中包括多个执行指令的信息;则所述从所述执行轨迹中提取出回传数据包操作的子程序,具体包括:
根据所述多个执行指令的信息确定在计算机系统执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图;
在所述调用关系图中查找出影响输出回传数据包的第一接口的被调用的第二接口,将所述输出回传数据包的第一接口,及影响回传数据包的第一接口的被调用的第二接口的信息作为所述回传数据包操作的子程序。
5.如权利要求4所述的方法,其特征在于,所述根据所述多个执行指令的信息确定在计算机系统执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图,具体包括:
查找所述多个执行指令中调用每个接口的入口指令和出口指令;
将所述入口指令或出口指令作为调用节点,并将存在调用关系的调用节点之间通过调用边连接。
6.如权利要求4或5所述的方法,其特征在于,所述在所述调用关系图中查找出影响输出回传数据包的第一接口的被调用的第二接口,具体包括:
确定动态切片源为所述调用关系图中的输出回传数据包的第一接口的入口指令;
判断所述第二接口的调用是否影响到所述动态切片源的调用,如果是,则将所述第二接口的入口指令作为所述动态切片源,并返回执行所述判断的步骤;如果不是,则将所述第二接口的入口指令从所述调用关系图中删除。
7.如权利要求1或2所述的方法,其特征在于,所述分析所述调用接口的信息中各个组成部分的语义信息并输出,具体包括:
获取所述调用接口的各个组成参数的信息;
将所述回传数据包操作的子程序对应发送缓冲区的信息分割成多个组成部分;
根据所述调用接口的各个组成参数的信息,对应地确定所述分割成的各个组成部分的语义信息并输出。
8.如权利要求7所述的方法,其特征在于,所述获取所述调用接口的各个组成参数的信息,具体包括:
从所述回传数据包操作的子程序中查找各个调用接口的信息;
向接口数据库中查找到所述调用接口的原型信息,根据原型信息获知所述调用接口的各个参数的信息。
9.如权利要求8所述的方法,其特征在于,如果所述回传数据包操作的子程序是非连续的代码段,所述在所述回传数据包操作的子程序中查找各个调用接口的信息,具体包括:
根据所述执行轨迹中所述调用接口在被调用时的位移信息,查找到所述调用接口的信息。
10.一种计算机系统,其特征在于,包括:
轨迹捕获单元,用于捕获计算机系统执行间谍程序的进程的执行轨迹;
回传程序提取单元,用于从所述执行轨迹中提取出回传数据包操作的子程序,所述回传数据包操作是所述计算机系统执行间谍程序的进程时传输数据包给控制主机的操作,所述回传数据包操作的子程序中包括多个调用接口的信息;
语义分析单元,用于分析所述调用接口的信息中各个组成部分的语义信息并输出。
11.如权利要求10所述的计算机系统,其特征在于,所述轨迹捕获单元具体包括:
进程执行单元,用于触发计算机系统执行所述间谍程序的进程;
控制输入单元,用于输入对所述间谍程序的进程的控制命令,并监测到所述计算机系统对所述控制命令执行的二进制执行轨迹;
执行获取单元,用于根据所述二进制执行轨迹得到接收所述控制命令及所述控制命令对应的回传数据包操作中包括的各个执行指令的信息。
12.如权利要求10或11所述的计算机系统,其特征在于,还包括:
切割单元,用于对所述执行轨迹从输出回传数据包的接口处进行切割,得到多个子执行轨迹;
则所述回传程序提取单元,具体用于从所述任一子执行轨迹中提取出回传数据包操作的子程序。
13.如权利要求10或11所述的计算机系统,其特征在于,所述捕获的执行轨迹中包括多个执行指令的信息;则所述回传程序提取单元具体包括:
调用图确定单元,用于根据所述多个执行指令的信息确定在计算机系统执行间谍程序的进程过程中,被调用的各个接口之间的调用关系图;
查找单元,用于在所述调用关系图中查找出影响输出回传数据包的第一接口的被调用的第二接口,将所述输出回传数据包的第一接口,及影响回传数据包的第一接口的被调用的第二接口的信息作为所述回传数据包操作的子程序。
14.如权利要求13所述的计算机系统,其特征在于,所述调用图确定单元具体包括:
指令查找单元,用于查找所述多个执行指令中调用每个接口的入口指令和出口指令;
调用图获取单元,用于将所述入口指令或出口指令作为调用节点,并将存在调用关系的调用节点之间通过调用边连接。
15.如权利要求13或14所述的计算机系统,其特征在于,所述查找单元具体包括:
切片源确定单元,用于确定动态切片源为所述调用关系图中的输出回传数据包的第一接口的入口指令;
判断单元,用于判断所述第二接口的调用是否影响到所述动态切片源的调用;
判断处理单元,用于如果所述判断单元判断所述第二接口的调用影响到所述动态切片源的调用,则将所述第二接口的入口指令作为所述动态切片源,并触发所述判断单元执行所述判断的步骤;
删除单元,用于如果所述判断单元判断所述第二接口的调用没有影响到所述动态切片源的调用,则将所述第二接口的入口指令从所述调用关系图中删除。
16.如权利要求10或11所述的计算机系统,其特征在于,所述语义分析单元具体包括:
参数信息获取单元,用于向获取所述回传数据包操作的子程序中各个调用接口的各个组成参数的信息;
分割单元,用于将所述回传数据包操作的子程序对应发送缓冲区的信息分割成多个组成部分;
语义确定单元,用于根据所述调用接口的各个组成参数的信息,对应地确定所述分割成的各个组成部分的语义信息并输出。
17.如权利要求16所述的计算机系统,其特征在于,所述参数信息获取单元,具体用于从所述回传数据包操作的子程序中查找各个调用接口的信息,向接口数据库中查找到所述调用接口的原型信息,根据原型信息获知所述调用接口的各个参数的信息。
18.如权利要求17所述的计算机系统,其特征在于,
所述参数信息获取单元,具体用于如果所述回传数据包操作的子程序是非连续的代码段,根据所述执行轨迹中所述调用接口在被调用时的位移信息,从所述回传数据包操作的子程序中查找到所述调用接口的信息。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310167166.8A CN103269341B (zh) | 2013-05-08 | 2013-05-08 | 一种间谍程序的分析方法和计算机系统 |
PCT/CN2013/089032 WO2014180134A1 (en) | 2013-05-08 | 2013-12-11 | Method for analyzing spyware and computer system |
US14/271,120 US20140337975A1 (en) | 2013-05-08 | 2014-05-06 | Method for analyzing spyware and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310167166.8A CN103269341B (zh) | 2013-05-08 | 2013-05-08 | 一种间谍程序的分析方法和计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103269341A true CN103269341A (zh) | 2013-08-28 |
CN103269341B CN103269341B (zh) | 2016-02-17 |
Family
ID=49012950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310167166.8A Active CN103269341B (zh) | 2013-05-08 | 2013-05-08 | 一种间谍程序的分析方法和计算机系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103269341B (zh) |
WO (1) | WO2014180134A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014180134A1 (en) * | 2013-05-08 | 2014-11-13 | Tencent Technology (Shenzhen) Company Limited | Method for analyzing spyware and computer system |
CN106462704A (zh) * | 2014-05-26 | 2017-02-22 | 日本电信电话株式会社 | 动态读入代码分析装置、动态读入代码分析方法以及动态读入代码分析程序 |
EP3091466A4 (en) * | 2014-03-13 | 2017-08-23 | Nippon Telegraph and Telephone Corporation | Identification device, identification method, and identification program |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431521A (zh) * | 2008-11-26 | 2009-05-13 | 北京网康科技有限公司 | 一种防木马的网络安全系统及方法 |
CN101923510A (zh) * | 2010-04-13 | 2010-12-22 | 张克东 | 软件探测方法和应用该方法的软件探测器及软件探测系统 |
CN102799523A (zh) * | 2012-07-03 | 2012-11-28 | 华为技术有限公司 | 动态探测程序执行路径的方法、装置和计算机系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373502B (zh) * | 2008-05-12 | 2012-06-20 | 公安部第三研究所 | 基于Win32平台下病毒行为的自动化分析系统 |
US8667583B2 (en) * | 2008-09-22 | 2014-03-04 | Microsoft Corporation | Collecting and analyzing malware data |
CN103269341B (zh) * | 2013-05-08 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 一种间谍程序的分析方法和计算机系统 |
-
2013
- 2013-05-08 CN CN201310167166.8A patent/CN103269341B/zh active Active
- 2013-12-11 WO PCT/CN2013/089032 patent/WO2014180134A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431521A (zh) * | 2008-11-26 | 2009-05-13 | 北京网康科技有限公司 | 一种防木马的网络安全系统及方法 |
CN101923510A (zh) * | 2010-04-13 | 2010-12-22 | 张克东 | 软件探测方法和应用该方法的软件探测器及软件探测系统 |
CN102799523A (zh) * | 2012-07-03 | 2012-11-28 | 华为技术有限公司 | 动态探测程序执行路径的方法、装置和计算机系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014180134A1 (en) * | 2013-05-08 | 2014-11-13 | Tencent Technology (Shenzhen) Company Limited | Method for analyzing spyware and computer system |
EP3091466A4 (en) * | 2014-03-13 | 2017-08-23 | Nippon Telegraph and Telephone Corporation | Identification device, identification method, and identification program |
US10382455B2 (en) | 2014-03-13 | 2019-08-13 | Nippon Telegraph And Telephone Corporation | Identifying apparatus, identifying method, and identifying program |
CN106462704A (zh) * | 2014-05-26 | 2017-02-22 | 日本电信电话株式会社 | 动态读入代码分析装置、动态读入代码分析方法以及动态读入代码分析程序 |
US10242191B2 (en) | 2014-05-26 | 2019-03-26 | Nippon Telegraph And Telephone Corporation | Dynamically-loaded code analysis device, dynamically-loaded code analysis method, and dynamically-loaded code analysis program |
CN106462704B (zh) * | 2014-05-26 | 2019-05-21 | 日本电信电话株式会社 | 动态读入代码分析装置和动态读入代码分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103269341B (zh) | 2016-02-17 |
WO2014180134A1 (en) | 2014-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102245025B1 (ko) | 메모리 반환 방법 및 장치 | |
CN108415739B (zh) | 一种动态链接库函数的钩挂方法、装置和存储介质 | |
US20160241589A1 (en) | Method and apparatus for identifying malicious website | |
CN107357725B (zh) | 应用测试方法及装置 | |
CN111736980B (zh) | 一种内存管理方法及装置 | |
CN108287918B (zh) | 基于应用页面的音乐播放方法、装置、存储介质和电子设备 | |
CN103336925A (zh) | 一种扫描加速的方法和装置 | |
CN106547844B (zh) | 一种用户界面的处理方法和装置 | |
CN104104711B (zh) | 阅读历史处理方法和装置 | |
WO2014169677A1 (en) | Method and device for extracting message format | |
CN103699595A (zh) | 一种终端浏览器的页面缓存方法和装置及终端 | |
CN107276602B (zh) | 射频干扰处理方法、装置、存储介质及终端 | |
US20150169874A1 (en) | Method, device, and system for identifying script virus | |
CN109933381A (zh) | 一种内核的加载方法及装置 | |
CN104267882A (zh) | 一种页面悬浮框显示方法及装置 | |
CN108984374B (zh) | 一种数据库性能的测试方法和系统 | |
CN108984265B (zh) | 检测虚拟机环境的方法及装置 | |
CN103269341B (zh) | 一种间谍程序的分析方法和计算机系统 | |
CN104966205A (zh) | 对象抽取的方法和装置 | |
CN108664389B (zh) | 一种测试方法、装置及终端 | |
CN109062643A (zh) | 一种显示界面调整方法、装置及终端 | |
CN106709342B (zh) | 恶意程序检测方法及装置 | |
CN109429229A (zh) | 获取网络接入信息的方法、装置及计算机可读存储介质 | |
CN104346176B (zh) | 一种浏览器启动的方法及装置 | |
US20240104058A1 (en) | File connection method and apparatus, terminal device, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |