CN103927484B - 基于Qemu模拟器的恶意程序行为捕获方法 - Google Patents
基于Qemu模拟器的恶意程序行为捕获方法 Download PDFInfo
- Publication number
- CN103927484B CN103927484B CN201410161863.7A CN201410161863A CN103927484B CN 103927484 B CN103927484 B CN 103927484B CN 201410161863 A CN201410161863 A CN 201410161863A CN 103927484 B CN103927484 B CN 103927484B
- Authority
- CN
- China
- Prior art keywords
- rogue program
- api
- thread
- sample
- qemu
- 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.)
- Expired - Fee Related
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
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)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于Qemu模拟器的恶意程序行为捕获方法,其特征在于:直接在Qemu模拟器的源代码内***恶意程序行为捕获模块,在Qemu模拟器上装载客户机操作***,然后利用Qemu模拟器内部运行的恶意程序行为捕获模块对运行在客户机操作***上的恶意程序样本进行行为捕获。本发明的优点在于:难以被探测和绕过,本方法直接在Qemu模拟器的源代码内***恶意程序行为捕获模块,恶意程序行为捕获模和在客户机操作***上运行的样本是完全隔离的,恶意程序行为捕获模块位于操作***的下层,从理论上讲,恶意程序样本是没有办法检测到恶意程序行为捕获模块。
Description
技术领域
本发明属于计算机安全领域,更进一步涉及恶意程序行为分析领域,特别是基于Qemu模拟器的恶意程序行为捕获方法。
背景技术
在恶意程序分析领域中,对恶意程序进行行为分析,是为了得到恶意程序的行为报告,以辅助分析人员理解恶意程序的行为或用于检测恶意程序。目前恶意程序的检测主要使用基于样本的特征码和非正常攻击行为模式的传统安全解决方案,如防火墙、入侵保护***、杀毒软件、网络网关等,这存在着以下问题:
第一,无法有效应对利用0day漏洞的攻击。0day漏洞是新出现的漏洞,这种漏洞的静态特点和攻击方式,很可能是以前未曾发现的。传统的安全解决方案从原理上来讲是难以防范这种攻击的。
第二,消耗资源。传统安全解决方案不能应对***性增长的恶意程序的需求。在传统安全解决方案中,每个样本必须存储相应的特征码或非正常攻击行为模式,随着恶意程序的不断涌现,存储这些信息所需的资源也不断增加,这会消耗大量的***资源。
基于行为分析可以克服这两个弊端。这是因为恶意程序总是要表现出恶意行为,且样本的恶意行为种类总是有限的。
电子科技大学拥有的专利技术“基于API HOOK的恶意代码自动分析方法和***”(公开号:CN102314561A,授权日:2012年01月11日,申请日:2010年07月01日)中公开了一种恶意代码自动分析方法。该方法利用API钩子技术和远程线程注入技术,对样本进行监控。记录恶意代码运行过程中对整个***的影响,并自动生成动态分析报告,记录恶意代码样本对文件,网络,注册表,进程所产生的影响,当样本运行结束后,将***恢复到样本执行前的状态。检测恶意代码样本对文件的创建,删除,修改等行为;检测恶意代码样本对网络的操作行为;检测恶意代码样本对注册表添加,删除和修改等行为。检测恶意代码样本创建进程的操作行为。最终提交恶意代码样本动态监控报告。该方法适用于大量样本的无人工干预的分析,分析速度比较快,分析报告中的无用信息比较少。但仍存在以下缺点:
1、没有分析被恶意程序注入的进程。恶意程序除了在主进程和其创建的子进程中实施恶意行为外,还可能注入***进程或其它应用程序进程,在被注入的进程中实施恶意行为。
2、没有覆盖恶意程序的全生命周期。部分恶意程序在初次运行为了隐藏的目的,只有创建自启动的行为,如写注册表自启功项或是创建服务。恶意程序真正的恶意行为会在重新启动表现出来。
3、API HOOK的方法易被检测出来。该专利采用的API HOOK方法需要在监控过程中改写内存中被监控API的头5个字节为jump汇编指令,使该函数能跳到监控模块自定义的函数。珠海金山软件股份有限公司专利“一种Windows平台下对抗API挂接的方法”(公开号:CN1936834A,授权日:2007年03月28日,申请日:2006年09月14日)公布了一种Windows平台下对抗API挂接的方法。该方法读取PE文件中API的内容和进程中API内容,通过比较内容来识别是否有API挂接。该专利采用的APIHOOK方法即可被检测出来。恶意程序也可以采用这种方式检测并绕过该专利的分析方法。
沙盒是分析恶意程序行为的重要工具。目前对沙盒的利用,主要是利用沙盒构建一个隔离,可快速恢复的执行环境,在该环境中运行程序,并捕获样本的行为。沙盒的构建主要是利用虚拟机,这是因为虚拟机本身具有隔离的性质,并且可使用快照快速恢复到一固定执行环境。沙盒中普遍采用的行为捕获方法是在客户机操作***上构建监控模块,这种沙盒存在两点缺陷,一是当恶意样本含有比监控模块更低层的功能模块时,可以绕过监控模块或去除监控模块,使监控无效或错误;二是含有反虚拟机功能的样本,可以检测出样本运行于沙盒中,从而可以不实施真正的逻辑,逃避沙盒的监控。另外,很多通用的沙盒在被构造时并没有结合恶意程序的行为特点,导致恶意程序的不能有效的覆盖恶意程序运行的轨迹和全生命周期。
江苏金陵科技集团公司拥有的专利技术“恶意程序行为自动化分析、检测与分类***及方法”(公开号:CN102930210A,授权日:2013年2月13日,申请日:2012.10.14)公布了一种恶意程序行为自动化分析、检测与分类***及方法。该***包括静态分析模块、沙盒调度管理模块、沙盒监控模块、行为抽象模块和检测与分类模块。该发明具有以下优点:第一,基于指令集仿真环境的行为检测;第二,在沙盒中通过环境配置和修改服务器程序等手段构建虚拟Internet,模拟常见网络服务,使得恶意程序发起的DNS解析、http访问、文件下载、Email登录、邮件发送等操作能够成功执行,诱骗恶意程序产生恶意网络行为,同时确保这些网络行为不会对宿主机和真实网络造成破坏,克服了恶意程序动态分析中恶意程序网络行为无法充分表现等缺点。其中沙盒监控模块完成对API的收集,是该技术方案原始的数据来源,决定了该技术方案行为捕获的质量;但是该技术方案存在以下缺点:
1、公开号为CN102930210A的中国专利所公开的方案中,监控单位是进程,而非线程,这会导致两点问题:一是漏监控样本的很多行为,恶意程序普遍存在多个工作线程。公开号为CN102930210A的中国专利所公开的方案中采用入口地址比较识别API,在识别出API后,压入返回地址,当EIP指令寄存器中存储的地址与压入的返回地址相等时,认为完成该API的调用,并开始等待监控下一个API;操作***以线程为单位调度CPU执行,各线程被调度后获得执行机会,某线程压入返回地址后,如果其他线程被调度执行,其他线程的API调用不能被监控到,这会导致漏监控大量样本行为;二是API报告不易理解,公开号为CN102930210A的中国专利所公开的方案中,各线程的API相互交错,且完全没办法区分,本领域技术人员无法理解并实现;
2、无法实现对样本全生命周期的监控,公开号为CN102930210A的中国专利所公开的方案中只能实现对样本初次运行的行为进行监控。恶意程序通常会利用创建自启动项或是创建服务实现自身的自启动,其生命周期也扩展到下一次***运行。一些恶意程序样本为了隐藏的需要,主要恶意行为并不在初次运行时表现,而是在以后运行中表现,公开号为CN102930210A的中国专利所公开的方案中则无法监测这些项目;
3、无法实现API的配置化监控:公开号为CN102930210A的中国专利所公开的方案中采用回调函数实现API参数的读取,需要为每个监控的API编写两个回调函数,限制了被监控API的扩展;
4、API监控的指导原则不完善。API监控应遵循三个原则,一是顶层监控原则,二是分层监控原则,三是不受监控API的语义传递原则。顶层监控是指只监控顶层API,而不监控该API调用的子API,这有助于减少语义的冗余。分层监控是指尽量监控语义高级的API,同时应监控Native API保证语义的完整,这有助于语义的抽取并减少语义的遗漏。不受监控API的语义传递是指不受监控API,其子API也不受监控,这保证了不受监控API的语义一致。公开号为CN102930210A的中国专利所公开的方案中只遵循了顶层监控原则,而没有遵循其它两点原则;
综上所述,目前恶意程序行为捕获方法存在种种缺陷,而且行为分析方法在恶意程序分析与检测领域具有重要作用,急需一种真正有效的恶意程序行为捕获方法。
发明内容
本发明所要解决的技术问题是针对目前沙盒在恶意程序行为捕获方面存在的易被绕过、不完整、不准确,提出一种Qemu模拟器的恶意程序行为捕获方法,该方法难以被探测和绕过。
本发明解决上述技术问题所采用的技术方案为:一种基于Qemu模拟器的恶意程序行为捕获方法,其特征在于:直接在Qemu模拟器的源代码内***恶意程序行为捕获模块,在Qemu模拟器上装载客户机操作***,然后利用Qemu模拟器内部运行的恶意程序行为捕获模块对运行在客户机操作***上的恶意程序样本进行行为捕获。
作为改进,恶意程序行为捕获模块内封装有读字符串函数,恶意程序行为捕获模块通过如下步骤对运行在客户机操作***上的恶意程序样本进行行为捕获:
步骤1、恶意程序样本上传运行:将恶意程序样本文件上传到客户机操作***,并在客户机操作***内加载和运行该恶意程序样本,同时记录下该恶意程序样本的名字;
步骤2、通过恶意程序行为捕获模块对恶意程序样本的主进程进行识别;
恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式得到在客户机操作***中运行的进程名字,如果当前进程的名字与步骤1中记录的恶意程序样本名字相同,则识别出恶意程序样本的主进程;
步骤3、通过恶意程序行为捕获模块对恶意程序样本的子进程进行识别:
步骤4、通过恶意程序行为捕获模块对恶意程序样本的线程进行识别,恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式找到恶意程序样本的线程ID;
步骤5、通过恶意程序行为捕获模块对恶意程序样本的子线程进行识别;
步骤6、通过恶意程序行为捕获模块对恶意程序样本调用的API进行识别;
步骤7、通过恶意程序行为捕获模块对恶意程序样本调用的API的参数进行识别;
步骤8,通过恶意程序行为捕获模块对恶意程序样本注入进程进行识别;
步骤9,通过恶意程序行为捕获模块将恶意程序样本产生的文件传出;
步骤10,通过恶意程序行为捕获模块对恶意程序样本的后续行为进行识别和分析。
较好的,所述恶意程序行为捕获模块在Qemu模拟器的源代码中指令翻译代码部分***。
作为改进,所述步骤2通过如下方式实现:
2a)、由Qemu模拟器的处理器控制块KPRCB定位到Qemu模拟器的线程内核块KTHREAD,Qemu模拟器的处理器控制块KPRCB在客户机操作***中有固定的虚拟地址,Qemu模拟器的处理器控制块KPRCB偏移0x04处是指向Qemu模拟器的线程内核块KTHREAD的指针,读取该指针即可定位到Qemu模拟器的线程内核块KTHREAD的虚拟内存地址;
2b)、由Qemu模拟器的线程内核块KTHREAD定位到Qemu模拟器的进程内核块EPROCESS,Qemu模拟器的线程内核块KTHREAD偏移0x44处是指向Qemu模拟器的进程内核块EPROCESS的指针,读取该指针即可定位到Qemu模拟器的进程内核块EPROCESS的虚拟内存地址。
2c)、由Qemu模拟器的进程内核块EPROCESS定位到Qemu模拟器的进程名字ImageFileName,Qemu模拟器的进程内核块EPROCESS偏移0x174处是指向Qemu模拟器的进程名字字符串的指针,读取该指针即可定位到Qemu模拟器的进程名字ImageFileName字符串的虚拟内存地址;
2d)、调用恶意程序行为捕获模块内封装的读字符串函数读取进程名字;
2e)、将2d)步骤读取的进程名字与步骤1中记录的恶意程序样本的名字进行比较,相同则当前正在运行的进程为恶意程序样本的主进程,反之则不是恶意程序样本的主进程,结束处理。
再改进,所述步骤3通过如下方式实现:
3a)、维护两个CR3控制寄存器列表,第一CR3控制寄存器列表为受监控进程列表,第二CR3控制寄存器列表为不受监控的进程列表,其中第一CR3控制寄存器列表包含:恶意程序样本主进程的CR3控制寄存器列表,恶意程序样本子进程的CR3控制寄存器列表,和被恶意程序样本注入的进程的CR3控制寄存器列表;第一CR3控制寄存器列表和第二CR3控制寄存器列表的初始都为空;在步骤2对恶意程序样本的主进程识别完成后,把恶意程序样本的主进程CR3控制寄存器值加入第一CR3控制寄存器列表;另外,枚举Qemu模拟器的进程内核块EPROCESS的双向链表,把枚举到的除恶意程序样本的主进程外的其它进程的CR3控制寄存器值加入第二CR3控制寄存器列表;
3b)、识别出恶意程序样本的子进程:用当前CR3控制寄存器值去查询第一CR3控制寄存器列表,如果查到,说明本进程是一个受监控进程;如果查不到,用当前CR3控制寄存器值去查询第二CR3控制寄存器列表,如果查到,说明本进程是一个不受监控的进程,如果查不到,表示出现了一个新的子进程,并把该CR3控制寄存器值加入第一CR3控制寄存器列表。
再改进,所述步骤4通过如下方式实现:
4a)、创建第一线程ID列表,该第一线程ID列表初始为空;
4b)、由Qemu模拟器的处理器控制块KPRCB定位到Qemu模拟器的线程内核块KTHREAD,Qemu模拟器的处理器控制块KPRCB在客户机操作***中有固定的虚拟地址,Qemu模拟器的处理器控制块KPRCB偏移0x04处是指向Qemu模拟器的线程内核块KTHREAD的指针,读取该指针即可定位到Qemu模拟器的线程内核块KTHREAD的虚拟内存地址;
4c)、由Qemu模拟器的线程内核块KTHREAD定位到Qemu模拟器的线程环境块TEB,Qemu模拟器的线程内核块KTHREAD偏移0x20处是指向Qemu模拟器的线程环境块TEB的指针,读取该指针即可定位到Qemu模拟器的线程环境块TEB的虚拟内存地址;
4d)、由Qemu模拟器的线程环境块TEB定位到Qemu模拟器的线程ID块ThreadId,Qemu模拟器的线程环境块TEB偏移0x24处是Qemu模拟器的线程ID块ThreadId,直接使用Qemu模拟器提供的内存读写接口ldl_code即可读取恶意程序样本的线程ID,然后将恶意程序样本的线程ID加入第一线程ID列表,这里恶意程序样本的线程包括恶意程序样本主进程的线程、恶意程序样本子进程的线程,和被恶意程序样本注入的进程的线程。
再改进,所述步骤5通过如下方式实现:
5a)、创建第二线程ID列表,该第二线程ID列表初始为空;
5b)、在步骤3a基础上,当识别出当前进程为受监控进程时,使用当前受监控进程的线程ID,查询第一线程ID列表,如果查找到,说明该线程是已经出现的线程,如果查找不到,说明出现了新的线程,则把新线程的ID加入第二线程ID列表。
再改进,所述步骤6通过如下方式实现:
6a)、加载客户机操作***所调用的所有API的地址名称列表;
6b)、读取第一CR3控制寄存器列表内存放的地址,用该地址与6a)中API的地址名称列表中的地址栏进行比对,找出与该地址栏所对应的API名称,即找出所有受监控的进程和线程调用的API的名称,找出了所有受监控的进程和线程调用的API的名称也即找出了恶意程序样本所调用的API名称。这里受监控的进程包括:恶意程序样本主进程、恶意程序样本子进程、被恶意程序样本注入的进程,受监控的线程包括:恶意程序样本主进程的线程与子线程、恶意程序样本子子进程的线程与子线程、被恶意程序样本注入的线程与子线程。
再改进,所述步骤7通过如下方式实现:
API的参数分为输入参数、输出参数和返回值,输入参数是指只读参数,输出参数是指会在API调用后,会被改写的参数;
7a)、为每个恶意程序样本调用的API注册一个用于读取输入参数的前向回调函数和一个用于读取输出参数的后向回调函数;
7b)、使用前向回调函数读取输入参数:在步骤6基础上,当恶意程序样本调用的某个API被成功识别后,该API的输入参数自动压入程序栈,虚拟寄存器ESP内存储的内容即为该API的第一个输入参数的虚拟地址,该API后续的每个输入参数的虚拟地址为前一个输入参数的虚拟地址加4,得到该API的输入参数的虚拟地址后,调用7a)中注册的前向回调函数读取该API的输入参数,前向回调函数使用Qemu模拟器的虚拟内存读取接口读取相应的输入参数,对字符串型的输入参数,使用恶意程序行为捕获模块内封装的读字符串函数读取,如果输入参数为结构体中的某一个字段,可以通过连续调用虚拟内存读取接口实现该输入参数的读取;
7c)、使用后向回调函数读取输出参数和返回值:在恶意程序样本调用的某一个API执行完毕后,该API的输出参数自动压入程序栈,虚拟寄存器ESP内存储的内容即为该API的第一个输出参数的虚拟地址,该API后续的每个输出参数的虚拟地址为前一个输出参数的虚拟地址加4,得到该API的输出参数的虚拟地址后,调用7a)中注册的后向回调函数读取该API的输入参数,后向回调函数使用Qemu模拟器的虚拟内存读取接口读取相应的输出参数;同时从虚拟EAX寄存器中读取该API的返回值;
调用7a)注册的后向回调函数读取Qemu模拟器内名称为EIP的指令寄存器内存放的地址,EIP指令寄存器内存放的地址即为该API的输出参数的虚拟地址,得到该API的输出参数的虚拟地址后,使用Qemu模拟器的虚拟内存读取接口读取该API的输出参数。
再改进,所述步骤8通过如下方式实现:
8a)、创建一个进程句柄表,该进程句柄表的表项含有进程句柄和进程名字,该进程句柄表初始为空,
8b)、在步骤6基础上,如果恶意程序样本成功调用名称为CreateProcess或OpenProcess这两个API时,会得到一个进程句柄,把得到的进程句柄加入进程句柄表,并维护进程句柄和进程名字的关联;
8c)、识别被注入进程:在步骤7读出恶意程序样本调用的API参数后,若当前API名称为WriteProcessMemory,并且已成功写入其它进程的内存,则内存被写入的进程为被注入进程;
8d)、通过API参数关联,找到被注入的进程的名字:名称为WriteProcessMemory的API的第一个输入参数为被注入进程的进程句柄,以该进程句柄的值查找进程句柄表,如果找到,则读出被注入进程的名字;
8e)、恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式,由该被注入进程的名字得到该被注入进程的CR3寄存器值;
8e)、从第二CR3控制寄存器列表中,清除该被注入进程的CR3寄存器值,并把该值加入第一CR3控制寄存器列表。
再改进,所述步骤9通过如下方式实现:
9a)创建一个文件句柄表,该文件句柄表的表项含有文件路径和文件名字,初始该表为空;
9b)、当恶意程序样本调用WriteFile或CopyFile这两个API后,会产生一个文件,将该文件的文件路径和文件名称加入文件句柄表的表项;
9c)、当恶意程序样本分析完成后,遍历文件句柄表,找到所有文件的文件路径,通过socket函数传出这些文件;
所述步骤10通过如下方式实现:
10a)、收集服务信息:当恶意程序样本使用名称为CreateService的API创建了一个服务,但没有调用StartService开启该服务,在恶意程序样本调用CreateService时,从API的输出参数中获得所创建服务的名字,以及创建的服务主程序文件路径;
10b)、收集自启动信息:恶意程序样本通过创建注册表项将释放的可执行文件设置为自启动项,通过对注册表操作API的监控,从API的参数中获得自启动项信息,包括:自启动项在注册表内的位置,以及被设置为自启动项的可执行文件的路径;
10c)、后续行为加载:对10a)、10b)收集到的服务和自启动项目,在客户机操作***里重新加载运行,并由恶意程序行为捕获模块对这些重新加载运行的服务和项目进行步骤1至步骤9所述的监控。
与现有技术相比,本发明的优点在于:难以被探测和绕过,本方法直接在Qemu模拟器的源代码内***恶意程序行为捕获模块,恶意程序行为捕获模和在客户机操作***上运行的样本是完全隔离的,恶意程序行为捕获模块位于操作***的下层,从理论上讲,恶意程序样本是没有办法检测到恶意程序行为捕获模块;
另外,进一步方案的优点有:
第一,覆盖样本运行的全踪迹和全生命周期,恶意程序行为捕获模位能以线程为单位,捕获恶意程序样本的进程,恶意程序样本创建的子进程,被恶意程序样本注入的进程等样本运行踪迹的全部行为,另外,可以捕获需要在机器重启后运行的服务、自启动的镜像文件的行为,这样实现了对样本全生命周期的捕获;
第二,遵循API监控三原则,遵循顶层监控原则,引入标志变量,初始为0,在受监控API(即恶意程序样本调用的API)被调用时,存储第二条指令的地址,并把标识变量置1,直到函数返回,标志变量置0,这样就保证了受监控API的子API不被监控,遵循分层监控原则;针对API分层调用的特点,把最底层的Native API纳入监控,这样保证了尽量在高层监控的同时,不遗漏API的语义;遵循不受监控API的语义传递原则;在本专利中,除了被监控API表外,还引入了API全集表,API全集表和受监控API表的差集即为API黑名单,黑名单中的API不会被监控,且其调用的子API也不会被监控,去除了子API可能带来的语义混淆;
第三,可以方便扩展受监控API的范围,本专利采用前回调函数和后回调函数的方式读取API参数,通常情况下,增加对一个新API的监控,只需要写入配置文件,可以方便的实现被监控API的扩展。
附图说明
图1为本发明实施例中基于Qemu模拟器的恶意程序行为捕获方法的流程部。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
如图1所示,本发明提供了一种基于Qemu模拟器的恶意程序行为捕获方法,该方法直接在Qemu模拟器的源代码内***恶意程序行为捕获模块,恶意程序行为捕获模块内封装有读字符串函数,此处,恶意程序行为捕获模块也是一系列软件代码,该软件代码具有的功能将在下述方案中详细描述,恶意程序行为捕获模块最好是在Qemu模拟器的源代码中指令翻译代码部分***,这样能消除恶意程序样本运行时Qemu模拟器的数据和客户机操作***之间的语义鸿沟;Qemu模拟器是一套由Fabrice Bellard所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛,Bochs,PearPC等与其类似,但不具备其许多特性,比如高速度及跨平台的特性,通过KQEMU这个闭源的加速器,Qemu模拟器能模拟至接近真实电脑的速度;Qemu模拟器有两种主要运作模式,一种是User mode模拟模式,亦即是使用者模式,还有一种是System mode模拟模式.亦即是***模式;
另外,在Qemu模拟器上装载客户机操作***,然后利用Qemu模拟器内部运行的恶意程序行为捕获模块对运行在客户机操作***上的恶意程序样本进行行为捕获,具体包括如下步骤:
步骤1、恶意程序样本上传运行:将恶意程序样本文件上传到客户机操作***,并在客户机操作***内加载和运行该恶意程序样本,同时记录下该恶意程序样本的名字;
步骤2、通过恶意程序行为捕获模块对恶意程序样本的主进程进行识别;
恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式得到在客户机操作***中运行的进程名字,如果当前进程的名字与步骤1中记录的恶意程序样本名字相同,则识别出恶意程序样本的主进程:
2a)、由Qemu模拟器的处理器控制块KPRCB定位到Qemu模拟器的线程内核块KTHREAD,Qemu模拟器的处理器控制块KPRCB在客户机操作***中有固定的虚拟地址,Qemu模拟器的处理器控制块KPRCB偏移0x04处是指向Qemu模拟器的线程内核块KTHREAD的指针,读取该指针即可定位到Qemu模拟器的线程内核块KTHREAD的虚拟内存地址;
2b)、由Qemu模拟器的线程内核块KTHREAD定位到Qemu模拟器的进程内核块EPROCESS,Qemu模拟器的线程内核块KTHREAD偏移0x44处是指向Qemu模拟器的进程内核块EPROCESS的指针,读取该指针即可定位到Qemu模拟器的进程内核块EPROCESS的虚拟内存地址。
2c)、由Qemu模拟器的进程内核块EPROCESS定位到Qemu模拟器的进程名字ImageFileName,Qemu模拟器的进程内核块EPROCESS偏移0x174处是指向Qemu模拟器的进程名字字符串的指针,读取该指针即可定位到Qemu模拟器的进程名字ImageFileName字符串的虚拟内存地址;
2d)、调用意程序行为捕获模块内封装的读字符串函数读取进程名字;
2e)、比较2d)读取的进程名字与步骤1中记录的恶意程序样本的名字,相同则判断当前进程为恶意程序样本的主进程,反之则当前进程不是恶意程序样本的主进程,结束处理;
步骤3、通过恶意程序行为捕获模块对恶意程序样本的子进程进行识别:
3a)、维护两个CR3控制寄存器列表,第一CR3控制寄存器列表为受监控进程列表,第二CR3控制寄存器列表为不受监控的进程列表,其中第一CR3控制寄存器列表包含:恶意程序样本主进程的CR3控制寄存器列表,恶意程序样本子进程的CR3控制寄存器列表,和被恶意程序样本注入的进程的CR3控制寄存器列表;第一CR3控制寄存器列表和第二CR3控制寄存器列表的初始都为空;在步骤2对恶意程序样本的主进程识别完成后,把恶意程序样本的主进程CR3控制寄存器值加入第一CR3控制寄存器列表;另外,枚举Qemu模拟器的进程内核块EPROCESS的双向链表,把枚举到的除恶意程序样本的主进程外的其它进程的CR3控制寄存器值加入第二CR3控制寄存器列表;
3b)、识别出恶意程序样本的子进程:用当前CR3控制寄存器值去查询第一CR3控制寄存器列表,如果查到,说明本进程是一个受监控进程;如果查不到,用当前CR3控制寄存器值去查询第二CR3控制寄存器列表,如果查到,说明本进程是一个不受监控的进程,如果查不到,表示出现了一个新的子进程,并把该CR3控制寄存器值加入第一CR3控制寄存器列表;
步骤4、通过恶意程序行为捕获模块对恶意程序样本的线程进行识别,恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式找到恶意程序样本的线程ID:
4a)、创建第一线程ID列表,该第一线程ID列表初始为空;
4b)、由Qemu模拟器的处理器控制块KPRCB定位到Qemu模拟器的线程内核块KTHREAD,Qemu模拟器的处理器控制块KPRCB在客户机操作***中有固定的虚拟地址,Qemu模拟器的处理器控制块KPRCB偏移0x04处是指向Qemu模拟器的线程内核块KTHREAD的指针,读取该指针即可定位到Qemu模拟器的线程内核块KTHREAD的虚拟内存地址;
4c)、由Qemu模拟器的线程内核块KTHREAD定位到Qemu模拟器的线程环境块TEB,Qemu模拟器的线程内核块KTHREAD偏移0x20处是指向Qemu模拟器的线程环境块TEB的指针,读取该指针即可定位到Qemu模拟器的线程环境块TEB的虚拟内存地址;
4d)、由Qemu模拟器的线程环境块TEB定位到Qemu模拟器的线程ID块ThreadId,Qemu模拟器的线程环境块TEB偏移0x24处是Qemu模拟器的线程ID块ThreadId,直接使用Qemu模拟器提供的内存读写接口ldl_code即可读取恶意程序样本的线程ID,然后将恶意程序样本的线程ID加入第一线程ID列表,这里恶意程序样本的线程包括恶意程序样本主进程的线程、恶意程序样本子进程的线程,和被恶意程序样本注入的进程的线程;
步骤5、通过恶意程序行为捕获模块对恶意程序样本的子线程进行识别:
5a)、创建第二线程ID列表,该第二线程ID列表初始为空;
5b)、在步骤3a基础上,当识别出当前进程为受监控进程时,使用当前受监控进程的线程ID,查询第一线程ID列表,如果查找到,说明该线程是已经出现的线程,如果查找不到,说明出现了新的线程,则把新线程的ID加入第二线程ID列表;
步骤6、通过恶意程序行为捕获模块对恶意程序样本调用的API进行识别,API,Application Programming Interface,中文为应用编程接口,其实就是操作***留给应用程序的一个调用接口,应用程序通过调用操作***的API而使操作***去执行应用程序的命令(动作:
6a)、加载客户机操作***所调用的所有API的地址名称列表;
6b)、读取第一CR3控制寄存器列表内存放的地址,用该地址与6a)中API的地址名称列表中的地址栏进行比对,找出与该地址栏所对应的API名称,即找出所有受监控的进程和线程调用的API的名称;找出了所有受监控的进程和线程调用的API的名称也即找出了恶意程序样本所调用的API名称;
步骤7、通过恶意程序行为捕获模块对恶意程序样本调用的API的参数进行识别:
API的参数分为输入参数、输出参数和返回值,输入参数是指只读参数,输出参数是指会在API调用后,会被改写的参数;
7a)、为每个恶意程序样本调用的API注册一个用于读取输入参数的前向回调函数和一个用于读取输出参数的后向回调函数;
7b)、使用前向回调函数读取输入参数:在步骤6基础上,当恶意程序样本调用的某个API被成功识别后,该API的输入参数自动压入程序栈,虚拟寄存器ESP内存储的内容即为该API的第一个输入参数的虚拟地址,该API后续的每个输入参数的虚拟地址为前一个输入参数的虚拟地址加4,得到该API的输入参数的虚拟地址后,调用7a)中注册的前向回调函数读取该API的输入参数,前向回调函数使用Qemu模拟器的虚拟内存读取接口读取相应的输入参数,对字符串型的输入参数,使用恶意程序行为捕获模块内封装的读字符串函数读取,如果输入参数为结构体中的某一个字段,可以通过连续调用虚拟内存读取接口实现该输入参数的读取;
7c)、使用后向回调函数读取输出参数和返回值:在恶意程序样本调用的某一个API执行完毕后,该API的输出参数自动压入程序栈,虚拟寄存器ESP内存储的内容即为该API的第一个输出参数的虚拟地址,该API后续的每个输出参数的虚拟地址为前一个输出参数的虚拟地址加4,得到该API的输出参数的虚拟地址后,调用7a)中注册的后向回调函数读取该API的输入参数,后向回调函数使用Qemu模拟器的虚拟内存读取接口读取相应的输出参数;同时从虚拟EAX寄存器中读取该API的返回值;
步骤8,通过恶意程序行为捕获模块对恶意程序样本注入进程进行识别:
8a)、创建一个进程句柄表,该进程句柄表的表项含有进程句柄和进程名字,该进程句柄表初始为空,
8b)、在步骤6基础上,如果恶意程序样本成功调用名称为CreateProcess或OpenProcess这两个API时,会得到一个进程句柄,把得到的进程句柄加入进程句柄表,并维护进程句柄和进程名字的关联;
8c)、识别被注入进程:在步骤7读出恶意程序样本调用的API参数后,若当前API名称为WriteProcessMemory,并且已成功写入其它进程的内存,则内存被写入的进程为被注入进程;
8d)、通过API参数关联,找到被注入的进程的名字:名称为WriteProcessMemory的API的第一个输入参数为被注入进程的进程句柄,以该进程句柄的值查找进程句柄表,如果找到,则读出被注入进程的名字;
8e)、恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式,由该被注入进程的名字得到该被注入进程的CR3寄存器值;
8e)、从第二CR3控制寄存器列表中,清除该被注入进程的CR3寄存器值,并把该值加入第一CR3控制寄存器列表;
步骤9,通过恶意程序行为捕获模块将恶意程序样本产生的文件传出:
9a)创建一个文件句柄表,该文件句柄表的表项含有文件路径和文件名字,初始该表为空;
9b)、当恶意程序样本调用WriteFile或CopyFile这两个API后,会产生一个文件,将该文件的文件路径和文件名称加入文件句柄表的表项;
9c)、当恶意程序样本分析完成后,遍历文件句柄表,找到所有文件的文件路径,通过socket函数传出这些文件;
步骤10,通过恶意程序行为捕获模块对恶意程序样本的后续行为进行识别和分析:
10a)、收集服务信息:当恶意程序样本使用名称为CreateService的API创建了一个服务,但没有调用StartService开启该服务,在恶意程序样本调用CreateService时,从API的输出参数中获得所创建服务的名字,以及创建的服务主程序文件路径;
10b)、收集自启动信息:恶意程序样本通过创建注册表项将释放的可执行文件设置为自启动项,通过对注册表操作API的监控,从API的参数中获得自启动项信息,包括:自启动项在注册表内的位置,以及被设置为自启动项的可执行文件的路径;
10c)、后续行为加载:对10a)、10b)收集到的服务和自启动项目,在客户机操作***里重新加载运行,并由恶意程序行为捕获模块对这些重新加载运行的服务和项目进行步骤1至步骤9所述的监控。
本发明利用了Qemu模拟器理论上不可检测的优点,在Qemu模拟器的源代码内部构建监控模块,同时结合恶意程序的行为特点以进行恶意程序行为的捕获,本发明结合恶意程序的特点,设计了主进程识别、子进程识别、注入进程识别、子线程识别、产生文件识别传出及后续行为逻辑,全面监控和捕捉恶意程序样本的各种行为,为后续判断恶意程序样本是否为恶意程序提供了有益的依据。
Claims (1)
1.一种基于Qemu模拟器的恶意程序行为捕获方法,其特征在于:直接在Qemu模拟器的源代码内***恶意程序行为捕获模块,Qemu模拟器上装载有客户机操作***,利用Qemu模拟器内部运行的恶意程序行为捕获模块对运行在客户机操作***上的恶意程序样本进行行为捕获;恶意程序行为捕获模块内封装有读字符串函数;恶意程序行为捕获模块通过如下步骤对恶意程序样本进行行为捕获:
步骤1、恶意程序样本上传运行:将恶意程序样本文件上传到客户机操作***,并在客户机操作***内加载和运行该恶意程序样本,同时记录下该恶意程序样本的名字;
步骤2、通过恶意程序行为捕获模块对恶意程序样本的主进程进行识别;
恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式得到在客户机操作***中运行的进程名字,如果当前进程的名字与步骤1中记录的恶意程序样本名字相同,则识别出恶意程序样本的主进程;该步骤通过如下方式实现:
2a)、由Qemu模拟器的处理器控制块KPRCB定位到Qemu模拟器的线程内核块KTHREAD,Qemu模拟器的处理器控制块KPRCB在客户机操作***中有固定的虚拟地址,Qemu模拟器的处理器控制块KPRCB偏移0x04处是指向Qemu模拟器的线程内核块KTHREAD的指针,读取该指针即可定位到Qemu模拟器的线程内核块KTHREAD的虚拟内存地址;
2b)、由Qemu模拟器的线程内核块KTHREAD定位到Qemu模拟器的进程内核块EPROCESS,Qemu模拟器的线程内核块KTHREAD偏移0x44处是指向Qemu模拟器的进程内核块EPROCESS的指针,读取该指针即可定位到Qemu模拟器的进程内核块EPROCESS的虚拟内存地址;
2c)、由Qemu模拟器的进程内核块EPROCESS定位到Qemu模拟器的进程名字ImageFileName,Qemu模拟器的进程内核块EPROCESS偏移0x174处是指向Qemu模拟器的进程名字字符串的指针,读取该指针即可定位到Qemu模拟器的进程名字ImageFileName字符串的虚拟内存地址;
2d)、调用恶意程序行为捕获模块内封装的读字符串函数读取进程名字;
2e)、比较2d)读取的进程名字与步骤1中记录的恶意程序样本的名字,相同则判断当前进程为恶意程序样本的主进程,反之则当前进程不是恶意程序样本的主进程,结束处理;
步骤3、通过恶意程序行为捕获模块对恶意程序样本的子进程进行识别,具体识别方式包含:
3a)、维护两个CR3控制寄存器列表,第一CR3控制寄存器列表为受监控进程列表,第二CR3控制寄存器列表为不受监控的进程列表,其中第一CR3控制寄存器列表包含: 恶意程序样本主进程的CR3控制寄存器列表,恶意程序样本子进程的CR3控制寄存器列表,和被恶意程序样本注入的进程的CR3控制寄存器列表;第一CR3控制寄存器列表和第二CR3控制寄存器列表的初始都为空;在步骤2对恶意程序样本的主进程识别完成后,把恶意程序样本的主进程CR3控制寄存器值加入第一CR3控制寄存器列表;另外,枚举Qemu模拟器的进程内核块EPROCESS的双向链表,把枚举到的除恶意程序样本的主进程外的其它进程的CR3控制寄存器值加入第二CR3控制寄存器列表;
3b)、识别出恶意程序样本的子进程:用当前CR3控制寄存器值去查询第一CR3控制寄存器列表,如果查到,说明本进程是一个受监控进程;如果查不到,用当前CR3控制寄存器值去查询第二CR3控制寄存器列表,如果查到,说明本进程是一个不受监控的进程,如果查不到,表示出现了一个新的子进程,并把该CR3控制寄存器值加入第一CR3控制寄存器列表;
步骤4、通过恶意程序行为捕获模块对恶意程序样本的线程进行识别,恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式找到恶意程序样本的线程ID;该步骤通过如下方式实现:
4a)、创建第一线程ID列表,该第一线程ID列表初始为空;
4b)、由Qemu模拟器的处理器控制块KPRCB定位到Qemu模拟器的线程内核块KTHREAD,Qemu模拟器的处理器控制块KPRCB在客户机操作***中有固定的虚拟地址,Qemu模拟器的处理器控制块KPRCB偏移0x04处是指向Qemu模拟器的线程内核块KTHREAD的指针,读取该指针即可定位到Qemu模拟器的线程内核块KTHREAD的虚拟内存地址;
4c)、由Qemu模拟器的线程内核块KTHREAD定位到Qemu模拟器的线程环境块TEB,Qemu模拟器的线程内核块KTHREAD偏移0x20处是指向Qemu模拟器的线程环境块TEB的指针,读取该指针即可定位到Qemu模拟器的线程环境块TEB的虚拟内存地址;
4d)、由Qemu模拟器的线程环境块TEB定位到Qemu模拟器的线程ID块ThreadId,Qemu模拟器的线程环境块TEB偏移0x24处是Qemu模拟器的线程ID块ThreadId,直接使用Qemu模拟器提供的内存读写接口ldl_code即可读取恶意程序样本的线程ID,然后将恶意程序样本的线程ID加入第一线程ID列表,这里恶意程序样本的线程包括恶意程序样本主进程的线程、恶意程序样本子进程的线程,和被恶意程序样本注入的进程的线程;步骤5、通过恶意程序行为捕获模块对恶意程序样本的子线程进行识别,该步骤通过如下方式实现:
5a)、创建第二线程ID列表,该第二线程ID列表初始为空;
5b)、在步骤3a基础上,当识别出当前进程为受监控进程时,使用当前受监控进程 的线程ID,查询第一线程ID列表,如果查找到,说明该线程是已经出现的线程,如果查找不到,说明出现了新的线程,则把新线程的ID加入第二线程ID列表;
步骤6、通过恶意程序行为捕获模块对恶意程序样本调用的API进行识别,该步骤通过如下方式实现:
6a)、加载客户机操作***所调用的所有API的地址名称列表;
6b)、读取第一CR3控制寄存器列表内存放的地址,用该地址与6a)中API的地址名称列表中的地址栏进行比对,找出与该地址栏所对应的API名称,即找出所有受监控的进程和线程调用的API的名称;找出了所有受监控的进程和线程调用的API的名称也即找出了恶意程序样本所调用的API名称;
步骤7、通过恶意程序行为捕获模块对恶意程序样本调用的API的参数进行识别,该步骤通过如下方式实现:
API的参数分为输入参数、输出参数和返回值,输入参数是指只读参数,输出参数是指会在API调用后,会被改写的参数;
7a)、为每个恶意程序样本调用的API注册一个用于读取输入参数的前向回调函数和一个用于读取输出参数的后向回调函数;
7b)、使用前向回调函数读取输入参数:在步骤6基础上,当恶意程序样本调用的某个API被成功识别后,该API的输入参数自动压入程序栈,虚拟寄存器ESP内存储的内容即为该API的第一个输入参数的虚拟地址,该API后续的每个输入参数的虚拟地址为前一个输入参数的虚拟地址加4,得到该API的输入参数的虚拟地址后,调用7a)中注册的前向回调函数读取该API的输入参数,前向回调函数使用Qemu模拟器的虚拟内存读取接口读取相应的输入参数,对字符串型的输入参数,使用恶意程序行为捕获模块内封装的读字符串函数读取,如果输入参数为结构体中的某一个字段,可以通过连续调用虚拟内存读取接口实现该输入参数的读取;
7c)、使用后向回调函数读取输出参数和返回值:在恶意程序样本调用的某一个API执行完毕后,该API的输出参数自动压入程序栈,虚拟寄存器ESP内存储的内容即为该API的第一个输出参数的虚拟地址,该API后续的每个输出参数的虚拟地址为前一个输出参数的虚拟地址加4,得到该API的输出参数的虚拟地址后,调用7a)中注册的后向回调函数读取该API的输入参数,后向回调函数使用Qemu模拟器的虚拟内存读取接口读取相应的输出参数;同时从虚拟EAX寄存器中读取该API的返回值;步骤8,通过恶意程序行为捕获模块对恶意程序样本注入进程进行识别,该步骤通过如下方式实现:
8a)、创建一个进程句柄表,该进程句柄表的表项含有进程句柄和进程名字,该进程句柄表初始为空;
8b)、在步骤6基础上,如果恶意程序样本成功调用名称为CreateProcess或OpenProcess这两个API时,会得到一个进程句柄,把得到的进程句柄加入进程句柄表,并维护进程句柄和进程名字的关联;
8c)、识别被注入进程:在步骤7读出恶意程序样本调用的API参数后,若当前API名称为WriteProcessMemory,并且已成功写入其它进程的内存,则内存被写入的进程为被注入进程;
8d)、通过API参数关联,找到被注入的进程的名字:名称为WriteProcessMemory的API的第一个输入参数为被注入进程的进程句柄,以该进程句柄的值查找进程句柄表,如果找到,则读出被注入进程的名字;
8e)、恶意程序行为捕获模块在Qemu模拟器内通过直接对内核对象进行操作的方式,由该被注入进程的名字得到该被注入进程的CR3寄存器值;
8e)、从第二CR3控制寄存器列表中,清除该被注入进程的CR3寄存器值,并把该值加入第一CR3控制寄存器列表;
步骤9,通过恶意程序行为捕获模块将恶意程序样本产生的文件传出,该步骤通过如下方式实现:
9a)创建一个文件句柄表,该文件句柄表的表项含有文件路径和文件名字,初始该表为空;
9b)、当恶意程序样本调用WriteFile或CopyFile这两个API后,会产生一个文件,将该文件的文件路径和文件名称加入文件句柄表的表项;
9c)、当恶意程序样本分析完成后,遍历文件句柄表,找到所有文件的文件路径,通过socket函数传出这些文件;
步骤10,通过恶意程序行为捕获模块对恶意程序样本的后续行为进行识别和分析,该步骤通过如下方式实现:
10a)、收集服务信息:当恶意程序样本使用名称为CreateService的API创建了一个服务,但没有调用StartService开启该服务,在恶意程序样本调用CreateService时,从API的输出参数中获得所创建服务的名字,以及创建的服务主程序文件路径;
10b)、收集自启动信息:恶意程序样本通过创建注册表项将释放的可执行文件设置为自启动项,通过对注册表操作API的监控,从API的参数中获得自启动项信息,包括:自启动项在注册表内的位置,以及被设置为自启动项的可执行文件的路径;
10c)、后续行为加载:对10a)、10b)收集到的服务和自启动项目,在客户机操作***里重新加载运行,并由恶意程序行为捕获模块对这些重新加载运行的服务和项目进行步骤1至步骤9所述的监控。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410161863.7A CN103927484B (zh) | 2014-04-21 | 2014-04-21 | 基于Qemu模拟器的恶意程序行为捕获方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410161863.7A CN103927484B (zh) | 2014-04-21 | 2014-04-21 | 基于Qemu模拟器的恶意程序行为捕获方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927484A CN103927484A (zh) | 2014-07-16 |
CN103927484B true CN103927484B (zh) | 2017-03-08 |
Family
ID=51145702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410161863.7A Expired - Fee Related CN103927484B (zh) | 2014-04-21 | 2014-04-21 | 基于Qemu模拟器的恶意程序行为捕获方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927484B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104200161B (zh) * | 2014-08-05 | 2017-01-25 | 杭州安恒信息技术有限公司 | 一种实现沙箱智能检测文件的方法及其沙箱智能检测*** |
CN105678164B (zh) | 2014-11-20 | 2018-08-14 | 华为技术有限公司 | 检测恶意软件的方法及装置 |
CN104715202B (zh) * | 2015-03-31 | 2018-06-12 | 北京奇虎科技有限公司 | 一种虚拟机中的隐藏进程检测方法和装置 |
CN105303111B (zh) * | 2015-10-16 | 2019-02-15 | 珠海豹趣科技有限公司 | 一种用户终端中恶意进程的识别方法、装置及用户终端 |
CN106650438A (zh) * | 2015-11-04 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种恶意程序检测的方法及装置 |
CN105763640B (zh) * | 2016-02-04 | 2019-03-15 | 无锡华云数据技术服务有限公司 | 一种云计算环境下的虚拟机管控*** |
CN105930201B (zh) * | 2016-04-25 | 2019-03-22 | 南京大学 | 一种可重构专用处理器核的功能模拟器 |
CN105871917A (zh) * | 2016-06-08 | 2016-08-17 | 北京金山安全管理***技术有限公司 | 传输控制协议tcp连接调度的方法及装置 |
CN106919837B (zh) * | 2016-10-20 | 2020-02-07 | 深圳市安之天信息技术有限公司 | 一种恶意代码未知自启动识别方法及*** |
CN106778242B (zh) * | 2016-11-28 | 2020-10-16 | 北京奇虎科技有限公司 | 基于虚拟机的内核漏洞检测方法及装置 |
CN106778244B (zh) * | 2016-11-28 | 2019-12-06 | 北京奇虎科技有限公司 | 基于虚拟机的内核漏洞检测进程保护方法及装置 |
CN109684826B (zh) * | 2018-01-15 | 2021-01-29 | 北京微步在线科技有限公司 | 应用程序沙箱反逃逸方法和电子设备 |
CN108509795B (zh) * | 2018-04-25 | 2020-08-04 | 厦门安胜网络科技有限公司 | 一种监控elf文件调用***函数的方法、装置及存储介质 |
CN108830078B (zh) * | 2018-05-09 | 2022-04-19 | 中国船舶重工集团公司第七一四研究所 | 一种针对工控设备的恶意代码发现方法 |
CN110414220B (zh) * | 2019-06-28 | 2021-08-24 | 奇安信科技集团股份有限公司 | 沙箱内程序动态执行过程中的操作文件提取方法及装置 |
CN110673901B (zh) * | 2019-09-23 | 2022-11-04 | 郑州阿帕斯科技有限公司 | 一种虚拟设备的识别方法、装置及其设备 |
CN110807198B (zh) * | 2019-11-04 | 2022-09-23 | 吉林亿联银行股份有限公司 | 一种修复漏洞的信息的获取方法及补丁处理*** |
CN111209225B (zh) * | 2020-01-03 | 2022-04-22 | 北京字节跳动网络技术有限公司 | 获取实际地址的方法、装置、介质和电子设备 |
CN113902458A (zh) * | 2021-12-07 | 2022-01-07 | 深圳市活力天汇科技股份有限公司 | 一种恶意用户的识别方法、装置及计算机设备 |
CN115795462B (zh) * | 2022-12-07 | 2023-06-16 | 安芯网盾(北京)科技有限公司 | Linux内核模块执行进程的检测方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622536A (zh) * | 2011-01-26 | 2012-08-01 | 中国科学院软件研究所 | 一种恶意代码捕获方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866408B (zh) * | 2010-06-30 | 2011-11-30 | 华中科技大学 | 一种基于虚拟机架构的透明信任链构建*** |
CN102012987B (zh) * | 2010-12-02 | 2013-03-13 | 李清宝 | 自动二进制恶意代码行为分析*** |
CN102651062B (zh) * | 2012-04-09 | 2014-06-18 | 华中科技大学 | 基于虚拟机架构的恶意行为跟踪***和方法 |
CN102930210B (zh) * | 2012-10-14 | 2015-11-25 | 江苏金陵科技集团有限公司 | 恶意程序行为自动化分析、检测与分类***及方法 |
-
2014
- 2014-04-21 CN CN201410161863.7A patent/CN103927484B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622536A (zh) * | 2011-01-26 | 2012-08-01 | 中国科学院软件研究所 | 一种恶意代码捕获方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103927484A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927484B (zh) | 基于Qemu模拟器的恶意程序行为捕获方法 | |
CN108133139B (zh) | 一种基于多运行环境行为比对的安卓恶意应用检测*** | |
CN102314561B (zh) | 基于api hook的恶意代码自动分析方法和*** | |
CN106462703B (zh) | 补丁文件分析***与分析方法 | |
US9715588B2 (en) | Method of detecting a malware based on a white list | |
CN102930210B (zh) | 恶意程序行为自动化分析、检测与分类***及方法 | |
CN104598824A (zh) | 一种恶意程序检测方法及其装置 | |
CN111291384B (zh) | 漏洞扫描方法、装置及电子设备 | |
CN107688743B (zh) | 一种恶意程序的检测分析方法及*** | |
US9239922B1 (en) | Document exploit detection using baseline comparison | |
CN104766007B (zh) | 一种基于文件***过滤驱动实现沙箱快速恢复的方法 | |
CN110391937B (zh) | 一种基于soap服务模拟的物联网蜜网*** | |
CN109558726B (zh) | 一种基于动态分析的控制流劫持攻击检测方法与*** | |
CN103634306A (zh) | 网络数据的安全检测方法和安全检测服务器 | |
CN102521542B (zh) | 一种计算机软件漏洞利用的捕获方法及*** | |
CN106330599B (zh) | Android应用程序网络流量多线程采集***及方法 | |
CN108762888A (zh) | 一种基于虚拟机自省的病毒检测***及方法 | |
CN109190368B (zh) | 一种sql注入检测装置及sql注入检测方法 | |
CN105740711B (zh) | 一种基于内核对象行为本体的恶意代码检测方法及*** | |
CN111191243A (zh) | 一种漏洞检测方法、装置和存储介质 | |
CN101388055B (zh) | 一种用于漏洞模型检测的程序操作特征提取方法 | |
CN115270131A (zh) | 一种Java反序列化漏洞检测方法及*** | |
KR101327740B1 (ko) | 악성코드의 행동 패턴 수집장치 및 방법 | |
CN103646213B (zh) | 一种恶意软件的分类方法和装置 | |
CN107729748B (zh) | 一种描述文件在沙箱中运行轨迹图的方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170308 |