CN113569244A - 一种基于处理器跟踪的内存恶意代码检测方法 - Google Patents
一种基于处理器跟踪的内存恶意代码检测方法 Download PDFInfo
- Publication number
- CN113569244A CN113569244A CN202111104188.0A CN202111104188A CN113569244A CN 113569244 A CN113569244 A CN 113569244A CN 202111104188 A CN202111104188 A CN 202111104188A CN 113569244 A CN113569244 A CN 113569244A
- Authority
- CN
- China
- Prior art keywords
- memory
- code
- malicious
- processor
- behavior
- 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/562—Static detection
- G06F21/563—Static detection by source code analysis
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
本发明公开了一种基于处理器跟踪的内存恶意代码检测方法,属于信息安全技术领域,其特征在于,包括以下步骤:a、驱动模块初始化Intel处理器跟踪功能;b、监控目标进程的代码执行路径;c、解码缓冲区获取执行路径的完整虚拟地址;d、对内存页进行恶意代码检测;e、判断代码是否属于可信内存代码;f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配。本发明除了能对无文件攻击中使用的内存代码、经过加壳的恶意代码、加密后的恶意代码病毒和木马常见场景进行检测外,同时对漏洞利用过程中的shellcode代码执行同样也有检测效果,不仅检测效果好,而且具有很好的普适性。
Description
技术领域
本发明涉及到信息安全技术领域,尤其涉及一种基于处理器跟踪的内存恶意代码检测方法。
背景技术
传统终端安全检测软件的恶意代码检测机制通常主要是针对文件实体内容进行检测,而近年来兴起的“无文件攻击”和“shellcode分离免杀”技术不会直接在系统中产生实体文件,使得传统安全检测软件的检测手段完全失效,比如恶意软件“Poison IVY”木马就提供了类似的能力,其能够直接生成shellcode形式的木马,用户可以自行将shellcode形式的木马嵌入到各种载体中进行传播,同时结合代码加密和运行时解密来绕过安全防御软件的检测。这两种攻击手段本质上都是将恶意代码直接在内存中执行,可以不在磁盘产生明显的exe文件和dll文件这些关键实体文件,或者只产生少量非关键外壳启动代码,通过近年各种网络安全报告可以看到该技术越来越多的出现在APT攻击甚至一般网络攻击中,其能够有效的对抗传统安全检测软件。
英特尔在其Core微架构的处理器上开始提供了分支记录功能,能将程序分支跳转记录到LBR寄存器或者内存缓冲区,到酷睿M和第五代英特尔酷睿处理器中引入了处理器跟踪功能IPT,对处理器跟踪功能IPT做了进一步的强化和性能优化,这里将这两种技术统一称为处理器跟踪,其功能都是将程序代码执行路径记录下来,处理器跟踪作为一种芯片硬件提供的功能,对监控目标不会有侵入性修改,有着很高的性能和可靠性,在信息安全领域有着很广阔的应用前景。
基于挂钩和系统原生的行为监控机制虽然是目前应用程序行为监控系统广泛使用的,已经被大部分安全软件所使用,但其依然存在诸多局限和问题未能解决。传统的挂钩技术通常需要侵入式的修改目标进程的二进制代码,当有多个挂钩程序同时挂钩或者没有处理好多核并发问题时,会导致目标进程运行不稳定,甚至导致目标进程崩溃。挂钩技术修改二进制代码后通常会存在修改痕迹,目标进程可以通过读取二进制代码被修改的痕迹来发现是否存在挂钩函数,甚至某些恶意程序会使用挂钩对抗技术,比如通过恢复被修改的二进制代码让“挂钩”机制失效,从而从行为监控系统中逃逸出去。现代操作系统并不提倡甚至禁止使用挂钩技术,因为其破坏了操作系统的完整性,最新的Win10和macOS操作系统都提供了内核补丁保护机制来保护操作系统代码的完整性,导致传统挂钩技术不能在内核中使用。内核补丁保护机制极大的限制了挂钩技术的使用范围和监控范围,以及只能通过在用户层实施的挂钩技术来实现有限的行为监控能力,降低了行为监控的可靠性。
操作系统原生提供的行为监控机制通常有较好的稳定性和可靠性,但目前绝大部分操作系统所提供的监控机制有限,大部分安全防御软件通常利用文件过滤驱动、进程行为监控、注册表过滤驱动、网络过滤驱动技术监控常见的文件操作、进程操作和注册表操作这些关键行为,不能实现更细粒度的应用层行为监控,如组件对象模型接口操作的监控、win32子系统窗口操作监控和其他非内核调用的应用层应用程序接口操作监控,操作系统提供的行为监控技术并不能完全覆盖安全防御系统所需要的行为监控需求。
总之,无论是基于挂钩技术还是操作系统原生行为监控机制实现的应用程序行为监控,在实际应用场景中都不同程度的存在监控范围、监控深度和监控可靠性不足的问题。
常见的基于特征码扫描的恶意代码检测技术,其通常是基于某些固定时机来触发对目标的扫描检测,如:在进程启动时对进程发起特征码扫描,在线程启动时对线程入口范围的内存地址空间发起特征码扫描,在加载动态链接库时对动态链接库发起特征码扫描。针对这种基于固定时机的特征码扫描,在实际安全对抗场景已经出现了比较多的绕过手段,比如:将恶意代码进行加密和代码加壳,在实际运行时才将恶意代码进行动态解密,可能由于特征码扫描的时机过早,在特征码扫描时恶意代码还未完全解密,从而绕过了恶意代码检测。另一种绕过手段是将需要调用的系统API名称字符串进行加密,当实际调用时才将API名称进行解密,然后通过动态获取函数指针的方式调用系统API,由于很多安全防御软件是基于系统API名称字符串来抽取的特征码,将系统API名称加密后就绕过了特征码扫描。
公开号为CN 110268411A,公开日为2019年09月20日的中国专利文献公开了一种控制流完整性实施方法,其特征在于,所述方法在计算机系统的运行时环境中执行的受保护进程上执行,所述方法包括:
拦截源于在所述运行时环境中执行的所述受保护进程的执行的系统调用;
所述计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;
所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图定义内的程序控制流条目,所述条目具有表示程序控制流的可信度的关联信用值;以及在所述匹配之后,如果所述关联信用值不满足指定阈值,则调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。
该专利文献公开的控制流完整性实施方法,首先通过离线的二进制代码静态分析或运行时模糊测试分析来获取程序的可信的控制流图,然后在实时运行时通过处理器跟踪功能记录代码执行路径,结合内核调用拦截器,在敏感系统调用上增加监控机制以检查控制流转移路径合法性,如果当前系统调用的控制流路径与预期可信控制流图不一致则说明是不可信的系统调用来源,并阻止该系统调用,以此防御二进制漏洞利用中常见的控制流劫持攻击。控制流完整性技术的实施需要预先离线训练准备目标进程所有代码的可信控制流图,这导致了其无法在新的未适配的应用程序上发挥作用;此外,可信控制流图的获取需要对目标进程进行二进制静态分析或运行时动态模糊测试,静态分析无法对运行时多态、动态调用API以及其他形式的运行时动态代码执进行分析,而运行时动态模糊测试受限于代码覆盖率的限制,无法达到百分之百的代码路径覆盖,无法完全分析程序的所有行为,这两种方式都不能保证获得完整目标代码的可信控制流图,在最终技术所达到的效果上看,控制流完整性所防御的主要是针对目标程序的漏洞利用过程中控制流劫持行为,如返回导向编程、跳转导向编程、返回至C标准库,其并不能直接用于针对木马病毒所常用的内存中直接执行恶意代码攻击场景的检测。
发明内容
本发明为了克服上述现有技术的缺陷,提供一种基于处理器跟踪的内存恶意代码检测方法,本发明在未适配的应用程序上也能发挥安全防御能力,针对的检测目标是更广义上的内存恶意代码,除了能对无文件攻击中使用的内存代码、经过加壳的恶意代码、加密后的恶意代码病毒和木马常见场景进行检测外,同时对漏洞利用过程中的shellcode代码执行同样也有检测效果,不仅检测效果好,而且具有很好的普适性。
本发明通过下述技术方案实现:
一种基于处理器跟踪的内存恶意代码检测方法,其特征在于,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
所述步骤c中,判断地址空间是否是首次执行具体是指对内存空间以4KB粒度建立位图索引,4KB内存未执行时标为0,执行过后标为1。
所述步骤e中,所述代码内存可信度分析算法具体是指判断当前进程类型,如果当前进程类型属于不可产生动态代码的进程,则判断这个内存代码为恶意代码,产生报警;如果当前进程类型属于产生动态代码的进程类型,则跟踪判断内存代码是否是由即时编译器引擎产生的可信代码,如果不是则产生报警;对产生报警的内存地址空间最后进行白名单匹配,如果属于白名单则属于可信代码,忽略报警。
所述判断当前进程类型之前还包括判断内存是否关联有文件映像,如果内存没有关联有文件映像则判断当前进程类型。
所述步骤f中,与异常行为知识库进行匹配具体是指将API接口和COM接口调用行为记录生成调用行为序列,将调用行为序列与异常行为知识库进行匹配。
所述步骤f中,可疑行为包括反弹shell行为、代理转发行为、权限提权行为、异常进程操作、异常文件操作、异常注册表操作和异常网络行为。
本发明所述shellcode是一段用于利用软件漏洞而执行的代码。
本发明所述CR3是指控制寄存器。
本发明所述API是指应用程序接口。
本发明所述COM接口是指组件对象模型接口,是微软的一套软件组件的二进制接口标准。
本发明所述反弹shell行为是被控端主动连接到控制端,并将其命令行的输入输出转到控制端,实现控制端直接操作被控端的命令行。
本发明的有益效果主要表现在以下方面:
1、本发明,a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警,作为一个完整的技术方案,较现有技术而言,在未适配的应用程序上也能发挥安全防御能力,针对的检测目标是更广义上的内存恶意代码,除了能对无文件攻击中使用的内存代码、经过加壳的恶意代码、加密后的恶意代码病毒和木马常见场景进行检测外,同时对漏洞利用过程中的shellcode代码执行同样也有检测效果,不仅检测效果好,而且具有很好的普适性。
2、本发明,将处理器跟踪功能与恶意代码检测相结合,不依赖传统挂钩技术,能够绕过内核补丁保护,实现更全面的行为监控,借助处理器跟踪功能所实现的CPU代码执行实时监控,实现更细粒度的应用层代码行为分析,解决了在安全防御对抗中代码加壳和代码加密通过运行时代码动态解密代码来绕过特征码扫描的问题,能够发现传统恶意代码检测软件很难检测的rootkit类恶意软件隐藏代码执行。
3、本发明,处理器跟踪功能不会侵入式的修改目标进程,整个行为监控过程在目标进程中没有任何内存修改的痕迹,能够规避常规挂钩技术所带来的挂钩对抗问题和挂钩稳定性问题,在行为监控的可靠性、稳定性和监控力度上都有很大的提升。
4、本发明,借助处理器跟踪功能实现的API接口和COM接口动态实时调用行为监控,其能够监控到传统基于挂钩或者基于特征码扫描所不能解决的加密API调用和动态API调用。在不依赖挂钩技术和操作系统提供的行为监控技术情况下,能对更细粒度的API调用行为和COM接口调用行为进行动态运行时监控,从而实现更新细粒度和更完善的应用程序行为分析。
5、本发明,动态的运行时行为监控能够跟踪代码运行的真实路径,有效的解决了传统基于特征码扫描技术利用加密API调用和动态API调用技术来对抗特征码扫描的问题。
附图说明
下面将结合说明书附图和具体实施方式对本发明作进一步的具体说明:
图1为本发明的逻辑框图;
图2为本发明代码内存可信度分析算法的逻辑框图。
具体实施方式
实施例1
参见图1,一种基于处理器跟踪的内存恶意代码检测方法,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警,作为一个完整的技术方案,较现有技术而言,在未适配的应用程序上也能发挥安全防御能力,针对的检测目标是更广义上的内存恶意代码,除了能对无文件攻击中使用的内存代码、经过加壳的恶意代码、加密后的恶意代码病毒和木马常见场景进行检测外,同时对漏洞利用过程中的shellcode代码执行同样也有检测效果,不仅检测效果好,而且具有很好的普适性。
实施例2
参见图1,一种基于处理器跟踪的内存恶意代码检测方法,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
所述步骤c中,判断地址空间是否是首次执行具体是指对内存空间以4KB粒度建立位图索引,4KB内存未执行时标为0,执行过后标为1。
将处理器跟踪功能与恶意代码检测相结合,不依赖传统挂钩技术,能够绕过内核补丁保护,实现更全面的行为监控,借助处理器跟踪功能所实现的CPU代码执行实时监控,实现更细粒度的应用层代码行为分析,解决了在安全防御对抗中代码加壳和代码加密通过运行时代码动态解密代码来绕过特征码扫描的问题,能够发现传统恶意代码检测软件很难检测的rootkit类恶意软件隐藏代码执行。
实施例3
参见图1和图2,一种基于处理器跟踪的内存恶意代码检测方法,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
所述步骤c中,判断地址空间是否是首次执行具体是指对内存空间以4KB粒度建立位图索引,4KB内存未执行时标为0,执行过后标为1。
所述步骤e中,所述代码内存可信度分析算法具体是指判断当前进程类型,如果当前进程类型属于不可产生动态代码的进程,则判断这个内存代码为恶意代码,产生报警;如果当前进程类型属于产生动态代码的进程类型,则跟踪判断内存代码是否是由即时编译器引擎产生的可信代码,如果不是则产生报警;对产生报警的内存地址空间最后进行白名单匹配,如果属于白名单则属于可信代码,忽略报警。
处理器跟踪功能不会侵入式的修改目标进程,整个行为监控过程在目标进程中没有任何内存修改的痕迹,能够规避常规挂钩技术所带来的挂钩对抗问题和挂钩稳定性问题,在行为监控的可靠性、稳定性和监控力度上都有很大的提升。
实施例4
参见图1和图2,一种基于处理器跟踪的内存恶意代码检测方法,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
所述步骤c中,判断地址空间是否是首次执行具体是指对内存空间以4KB粒度建立位图索引,4KB内存未执行时标为0,执行过后标为1。
所述步骤e中,所述代码内存可信度分析算法具体是指判断当前进程类型,如果当前进程类型属于不可产生动态代码的进程,则判断这个内存代码为恶意代码,产生报警;如果当前进程类型属于产生动态代码的进程类型,则跟踪判断内存代码是否是由即时编译器引擎产生的可信代码,如果不是则产生报警;对产生报警的内存地址空间最后进行白名单匹配,如果属于白名单则属于可信代码,忽略报警。
所述判断当前进程类型之前还包括判断内存是否关联有文件映像,如果内存没有关联有文件映像则判断当前进程类型。
所述步骤f中,与异常行为知识库进行匹配具体是指将API接口和COM接口调用行为记录生成调用行为序列,将调用行为序列与异常行为知识库进行匹配。
借助处理器跟踪功能实现的API接口和COM接口动态实时调用行为监控,其能够监控到传统基于挂钩或者基于特征码扫描所不能解决的加密API调用和动态API调用。在不依赖挂钩技术和操作系统提供的行为监控技术情况下,能对更细粒度的API调用行为和COM接口调用行为进行动态运行时监控,从而实现更新细粒度和更完善的应用程序行为分析。
实施例5
参见图1和图2,一种基于处理器跟踪的内存恶意代码检测方法,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
所述步骤c中,判断地址空间是否是首次执行具体是指对内存空间以4KB粒度建立位图索引,4KB内存未执行时标为0,执行过后标为1。
所述步骤e中,所述代码内存可信度分析算法具体是指判断当前进程类型,如果当前进程类型属于不可产生动态代码的进程,则判断这个内存代码为恶意代码,产生报警;如果当前进程类型属于产生动态代码的进程类型,则跟踪判断内存代码是否是由即时编译器引擎产生的可信代码,如果不是则产生报警;对产生报警的内存地址空间最后进行白名单匹配,如果属于白名单则属于可信代码,忽略报警。
所述判断当前进程类型之前还包括判断内存是否关联有文件映像,如果内存没有关联有文件映像则判断当前进程类型。
所述步骤f中,与异常行为知识库进行匹配具体是指将API接口和COM接口调用行为记录生成调用行为序列,将调用行为序列与异常行为知识库进行匹配。
所述步骤f中,可疑行为包括反弹shell行为、代理转发行为、权限提权行为、异常进程操作、异常文件操作、异常注册表操作和异常网络行为。
动态的运行时行为监控能够跟踪代码运行的真实路径,有效的解决了传统基于特征码扫描技术利用加密API调用和动态API调用技术来对抗特征码扫描的问题。
Claims (6)
1.一种基于处理器跟踪的内存恶意代码检测方法,其特征在于,包括以下步骤:
a、安装驱动模块,在内核中注册进程和线程的启动和退出的回调处理例程,在进程回调例程中记录所有启动的线程、进程和文件信息,记录进程的CR3寄存器信息,驱动模块初始化Intel处理器跟踪功能,为每个CPU核心配置物理内存缓冲区和中断处理例程并启动处理器跟踪功能;
b、处理器跟踪功能监控目标进程的代码执行路径,对所有间接跳转指令执行行为进行记录,将指令执行路径记录到缓冲区中,当缓冲区满时触发中断处理例程,在中断处理例程中切换后备的缓冲区,并启动恶意代码分析;
c、解码缓冲区获取执行路径的完整虚拟地址,根据分页信息包和CR3寄存记录与进程进行关联,对间接跳转指令所跳转的目的地址进行符号解析,获得目标跳转地址存在的真实API名称或者COM接口名称,并以4KB为粒度关联代码路径所在内存页,判断地址空间是否是首次执行,如果是则进入步骤d;
d、对内存页进行恶意代码检测,判断内存页是否属于文件映像所映射的内存范围,如果是则开始对文件映像进行恶意代码检测,如果文件对象不可信或存在恶意特征码则认为存在恶意代码并发出报警,如果地址空间不属于文件则进入步骤e;
e、获取代码内存属性信息,获取当前进程类型,通过代码内存可信度分析算法判断代码是否属于可信内存代码;
f、检测内存代码API调用记录和COM接口调用记录,并与异常行为知识库进行匹配,如果匹配到可疑行为则报警。
2.根据权利要求1所述的一种基于处理器跟踪的内存恶意代码检测方法,其特征在于:所述步骤c中,判断地址空间是否是首次执行具体是指对内存空间以4KB粒度建立位图索引,4KB内存未执行时标为0,执行过后标为1。
3.根据权利要求1所述的一种基于处理器跟踪的内存恶意代码检测方法,其特征在于:所述步骤e中,所述代码内存可信度分析算法具体是指判断当前进程类型,如果当前进程类型属于不可产生动态代码的进程,则判断这个内存代码为恶意代码,产生报警;如果当前进程类型属于产生动态代码的进程类型,则跟踪判断内存代码是否是由即时编译器引擎产生的可信代码,如果不是则产生报警;对产生报警的内存地址空间最后进行白名单匹配,如果属于白名单则属于可信代码,忽略报警。
4.根据权利要求3所述的一种基于处理器跟踪的内存恶意代码检测方法,其特征在于:所述判断当前进程类型之前还包括判断内存是否关联有文件映像,如果内存没有关联有文件映像则判断当前进程类型。
5.根据权利要求1所述的一种基于处理器跟踪的内存恶意代码检测方法,其特征在于:所述步骤f中,与异常行为知识库进行匹配具体是指将API接口和COM接口调用行为记录生成调用行为序列,将调用行为序列与异常行为知识库进行匹配。
6.根据权利要求1所述的一种基于处理器跟踪的内存恶意代码检测方法,其特征在于:所述步骤f中,可疑行为包括反弹shell行为、代理转发行为、权限提权行为、异常进程操作、异常文件操作、异常注册表操作和异常网络行为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111104188.0A CN113569244B (zh) | 2021-09-18 | 2021-09-18 | 一种基于处理器跟踪的内存恶意代码检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111104188.0A CN113569244B (zh) | 2021-09-18 | 2021-09-18 | 一种基于处理器跟踪的内存恶意代码检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113569244A true CN113569244A (zh) | 2021-10-29 |
CN113569244B CN113569244B (zh) | 2021-12-03 |
Family
ID=78173848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111104188.0A Active CN113569244B (zh) | 2021-09-18 | 2021-09-18 | 一种基于处理器跟踪的内存恶意代码检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113569244B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113868673A (zh) * | 2021-12-06 | 2021-12-31 | 荣耀终端有限公司 | 漏洞检测方法和装置 |
CN114329447A (zh) * | 2021-12-14 | 2022-04-12 | 北京三快在线科技有限公司 | 一种基于进程白名单的检测方法及装置 |
CN114629711A (zh) * | 2022-03-21 | 2022-06-14 | 广东云智安信科技有限公司 | 一种针对Windows平台特种木马检测的方法及系统 |
CN114662111A (zh) * | 2022-05-18 | 2022-06-24 | 成都数默科技有限公司 | 一种恶意代码软件基因同源性分析方法 |
CN115033879A (zh) * | 2022-06-08 | 2022-09-09 | 南京邮电大学 | 一种针对物联网恶意木马的检测方法 |
CN115600204A (zh) * | 2022-10-26 | 2023-01-13 | 安芯网盾(北京)科技有限公司(Cn) | 一种检测shellcode恶意代码的方法和系统及计算机设备 |
CN115795489A (zh) * | 2023-02-09 | 2023-03-14 | 中国电子科技集团公司第三十研究所 | 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 |
CN117093404A (zh) * | 2023-10-17 | 2023-11-21 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
WO2024112272A1 (en) | 2022-11-24 | 2024-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Using memory page offsets to detect cybersecurity attacks |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159732A (zh) * | 2007-08-14 | 2008-04-09 | 电子科技大学 | 基于数据流分析的恶意攻击检测方法 |
CN102034050A (zh) * | 2011-01-25 | 2011-04-27 | 四川大学 | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 |
CN102622536A (zh) * | 2011-01-26 | 2012-08-01 | 中国科学院软件研究所 | 一种恶意代码捕获方法 |
CN104021344A (zh) * | 2014-05-14 | 2014-09-03 | 南京大学 | 一种用于收集和截获计算机内存行为的蜜罐机制及其方法 |
US20150178513A1 (en) * | 2004-07-01 | 2015-06-25 | Texas Instruments Incorporated | Method and system of verifying proper execution of a secure mode entry sequence |
CN105760787A (zh) * | 2015-06-30 | 2016-07-13 | 卡巴斯基实验室股份制公司 | 用于检测随机存取存储器中的恶意代码的系统及方法 |
CN106850582A (zh) * | 2017-01-05 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种基于指令监控的apt高级威胁检测方法 |
CN106991324A (zh) * | 2017-03-30 | 2017-07-28 | 兴华永恒(北京)科技有限责任公司 | 一种基于内存保护类型监控的恶意代码跟踪识别方法 |
CN110036377A (zh) * | 2017-06-28 | 2019-07-19 | 辉达公司 | 可缓存的但不可通过推测指令访问的内存类型 |
CN110268411A (zh) * | 2017-02-06 | 2019-09-20 | 华为技术有限公司 | 计算机系统中基于处理器跟踪实施的控制流完整性 |
CN110417768A (zh) * | 2019-07-24 | 2019-11-05 | 北京神州绿盟信息安全科技股份有限公司 | 一种僵尸网络的跟踪方法及装置 |
CN110727942A (zh) * | 2018-07-16 | 2020-01-24 | 瞻博网络公司 | 用于恶意软件检测的存储器跟踪 |
-
2021
- 2021-09-18 CN CN202111104188.0A patent/CN113569244B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150178513A1 (en) * | 2004-07-01 | 2015-06-25 | Texas Instruments Incorporated | Method and system of verifying proper execution of a secure mode entry sequence |
CN101159732A (zh) * | 2007-08-14 | 2008-04-09 | 电子科技大学 | 基于数据流分析的恶意攻击检测方法 |
CN102034050A (zh) * | 2011-01-25 | 2011-04-27 | 四川大学 | 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法 |
CN102622536A (zh) * | 2011-01-26 | 2012-08-01 | 中国科学院软件研究所 | 一种恶意代码捕获方法 |
CN104021344A (zh) * | 2014-05-14 | 2014-09-03 | 南京大学 | 一种用于收集和截获计算机内存行为的蜜罐机制及其方法 |
CN105760787A (zh) * | 2015-06-30 | 2016-07-13 | 卡巴斯基实验室股份制公司 | 用于检测随机存取存储器中的恶意代码的系统及方法 |
CN106850582A (zh) * | 2017-01-05 | 2017-06-13 | 中国电子科技网络信息安全有限公司 | 一种基于指令监控的apt高级威胁检测方法 |
CN110268411A (zh) * | 2017-02-06 | 2019-09-20 | 华为技术有限公司 | 计算机系统中基于处理器跟踪实施的控制流完整性 |
CN106991324A (zh) * | 2017-03-30 | 2017-07-28 | 兴华永恒(北京)科技有限责任公司 | 一种基于内存保护类型监控的恶意代码跟踪识别方法 |
CN110036377A (zh) * | 2017-06-28 | 2019-07-19 | 辉达公司 | 可缓存的但不可通过推测指令访问的内存类型 |
CN110727942A (zh) * | 2018-07-16 | 2020-01-24 | 瞻博网络公司 | 用于恶意软件检测的存储器跟踪 |
CN110417768A (zh) * | 2019-07-24 | 2019-11-05 | 北京神州绿盟信息安全科技股份有限公司 | 一种僵尸网络的跟踪方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113868673A (zh) * | 2021-12-06 | 2021-12-31 | 荣耀终端有限公司 | 漏洞检测方法和装置 |
CN114329447A (zh) * | 2021-12-14 | 2022-04-12 | 北京三快在线科技有限公司 | 一种基于进程白名单的检测方法及装置 |
CN114629711A (zh) * | 2022-03-21 | 2022-06-14 | 广东云智安信科技有限公司 | 一种针对Windows平台特种木马检测的方法及系统 |
CN114629711B (zh) * | 2022-03-21 | 2024-02-06 | 广东云智安信科技有限公司 | 一种针对Windows平台特种木马检测的方法及系统 |
CN114662111A (zh) * | 2022-05-18 | 2022-06-24 | 成都数默科技有限公司 | 一种恶意代码软件基因同源性分析方法 |
CN114662111B (zh) * | 2022-05-18 | 2022-08-09 | 成都数默科技有限公司 | 一种恶意代码软件基因同源性分析方法 |
CN115033879A (zh) * | 2022-06-08 | 2022-09-09 | 南京邮电大学 | 一种针对物联网恶意木马的检测方法 |
CN115600204A (zh) * | 2022-10-26 | 2023-01-13 | 安芯网盾(北京)科技有限公司(Cn) | 一种检测shellcode恶意代码的方法和系统及计算机设备 |
WO2024112272A1 (en) | 2022-11-24 | 2024-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Using memory page offsets to detect cybersecurity attacks |
CN115795489A (zh) * | 2023-02-09 | 2023-03-14 | 中国电子科技集团公司第三十研究所 | 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 |
CN117093404A (zh) * | 2023-10-17 | 2023-11-21 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
CN117093404B (zh) * | 2023-10-17 | 2024-02-09 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113569244B (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113569244B (zh) | 一种基于处理器跟踪的内存恶意代码检测方法 | |
US7836504B2 (en) | On-access scan of memory for malware | |
US9392016B2 (en) | System and method for below-operating system regulation and control of self-modifying code | |
US7779472B1 (en) | Application behavior based malware detection | |
Liang et al. | Fast and automated generation of attack signatures: A basis for building self-protecting servers | |
US8195953B1 (en) | Computer program with built-in malware protection | |
US8875288B2 (en) | Taint tracking mechanism for computer security | |
US8621607B2 (en) | Computational system including mechanisms for tracking taint | |
EP2691908B1 (en) | System and method for virtual machine monitor based anti-malware security | |
US7984304B1 (en) | Dynamic verification of validity of executable code | |
US6941473B2 (en) | Memory device, stack protection system, computer system, compiler, stack protection method, storage medium and program transmission apparatus | |
US7886148B2 (en) | Secure execution of a computer program | |
US8904537B2 (en) | Malware detection | |
US7631356B2 (en) | System and method for foreign code detection | |
US10984096B2 (en) | Systems, methods, and apparatus for detecting control flow attacks | |
US20120255014A1 (en) | System and method for below-operating system repair of related malware-infected threads and resources | |
US20050010804A1 (en) | Secure execution of a computer program using a code cache | |
KR20180032566A (ko) | 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들 | |
Cavallaro et al. | Anti-taint-analysis: Practical evasion techniques against information flow based malware defense | |
Xuan et al. | Toward revealing kernel malware behavior in virtual execution environments | |
CN105844161A (zh) | 安全防御方法、装置与系统 | |
Grizzard et al. | Re-establishing trust in compromised systems: recovering from rootkits that trojan the system call table | |
EP4002165A1 (en) | Code flow protection with error propagation | |
Kirmani et al. | Analyzing detection avoidance of malware by process hiding | |
CN114556341A (zh) | 完整性监视器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |