掌桥专利:专业的专利平台
掌桥专利
首页

一种云虚拟机内存恶意行为追溯取证方法

文献发布时间:2024-04-18 20:01:23


一种云虚拟机内存恶意行为追溯取证方法

技术领域

本发明属于数字取证领域,具体涉及一种云虚拟机内存恶意行为追溯取证方法。

背景技术

随着网络攻击技术的内存化,很多重要的数字证据仅仅存在于系统内存,这使得传统基于文件系统的数字取证技术不能有效应对,且攻击者的目的也从单纯的破坏计算机系统转变为更隐蔽的信息窃取和资源控制,给企业安全防护和取证溯源都带来了巨大的挑战。

当前绝大多数用于进程分析的取证工具能直观展现的进程关系均为时间关系和创建关系,如Windows自带的任务管理器,进程查看管理工具Process Explorer,内存取证工具Volatility。取证人员在掌握一定证据后,将沿着这两类关系出发,逐步追溯并还原入侵场景。但仅通过这两类关系能追溯到的证据有限,也难以将恶意行为痕迹之间的因果关系描述清楚。

现有的内存取证技术是通过对地址转译和内核对象结构的解析,将内存信息翻译为进程、线程、驱动、令牌等高级语义信息,再通过取证人员工作经验从中分析入侵痕迹,最终从时间并发关系和进程创建关系两个维度出发还原入侵过程。

这种方式首先严重依赖取证人员的经验和知识积累;其次人工操作过多,耗时长;再次得到的证据离散且不完整;追溯恶意行为时仅通过时间和创建关系出发,维度太少难以完整还原入侵事件。

发明内容

本发明所要解决的技术问题是提供一种云虚拟机内存恶意行为追溯取证方法,通过自动化提取恶意行为痕迹减少取证过程中的人员干预,降低对取证人员的依赖;通过多元关系关联分析,从更多的维度进行恶意行为追溯,能发现更多的恶意行为痕迹,还原入侵场景更完整。

为了解决技术问题,本发明的技术方案是:

1.一种云虚拟机内存恶意行为追溯取证方法,其特征在于,包括以下操作:

1)通过云虚拟机自省库从宿主机中获取目标虚拟机内存数据信息,并通过内存分析技术对内存数据进行语义解析和语义重构,还原出目标虚拟机的运行状态;

2)从包括隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹方面分别来检查目标主机是否遭受攻击,进一步提取恶意行为痕迹,以此判定是否目标虚拟机中是否存在恶意活动;若不存在则结束取证;若存在,则备份镜像文件作为证据保留;

3)依据基于层次聚类的进程关联度,将进程之间的关系整合到父子创建关系、时间并发关系、同源路径关系、名称相似关系、同源账户关系、网络通信关系、管道通信关系、文件操作关系、DLL载入关系九个维度中,对所述恶意行为痕迹中恶意进程的元素逐个与除该恶意进程外的全体进程进行多元关系关联分析;

4)将与恶意进程相关联的进程组成进程链,将多元关系关联分析的关联强弱可视化结果后,重构入侵场景。

与现有技术相比,本发明的优点在于:

在本发明中,通过归纳总结恶意行为在内存中的痕迹表现,设计了隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹六类恶意行为痕迹的检测规则,完成对内存转储文件的恶意行为痕迹自动化提取。

利用进程之间的父子关系和时间关系进行进程关联分析,这种关联可以发现进程之间复杂且紧密的关联关系,形成一条条证据链,通过对这些证据链进行分析可以有效推断和还原出恶意活动。

通过将进程之间的关系整合到父子创建关系、时间并发关系、同源路径关系、名称相似关系、同源账户关系、网络通信关系、管道通信关系、文件操作关系、DLL载入关系九个维度中,相较于传统内存取证使用的父子创建关系和时间并发关系可发现更多进程间的关联。

利用Python进行层次聚类和聚类结果可视化表示,可将关联强弱数值化表示,直观地表现出与恶意进程存在关系紧密的进程。取证人员可从得到的进程链着手分析,大大提高取证效率。

通过进程多元关系关联分析,能将具有关联的进程相互联系起来,而不仅仅是针对恶意进程,通过离散证据点的标注就可以发现那些包含正常行为的犯罪过程,理解入侵的全过程。

附图说明

图1为本发明云虚拟机内存恶意行为追溯取证方法的流程图;

图2为本发明进行恶意行为痕迹提取时涉及的六类恶意行为痕迹检查内容图;

图3为本发明使用时间关系和创建关系进行进程关联分析可视化结果;

图4为本发明使用进程多元关系关联分析可视化结果。

具体实施方式

下面结合实施例描述本发明具体实施方式。

内存取证分为内存获取和内存分析两个部分,但在云环境中同时缺乏对云用户主机内存获取和分析的方法。本发明首先通过LibVMI虚拟机自省库从宿主机中获取目标虚拟机内存数据信息,并通过内存分析技术对内存数据进行语义重构,还原出目标虚拟机的运行状态;从隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹六个方面来检查目标主机是否遭受攻击,进一步提取恶意行为痕迹,以此判定是否目标虚拟机中是否存在恶意活动;若不存在则结束取证;若存在,则备份镜像文件作为证据保留;再依据基于层次聚类的进程关联度算法,将进程之间的关系整合到父子创建关系、时间并发关系、同源路径关系、名称相似关系、同源账户关系、网络通信关系、管道通信关系、文件操作关系、DLL载入关系九个维度中,计算进程关联度,将与恶意进程相关联的进程组成进程链,以此重构入侵场景。

实施例一

如图1所示,一种云虚拟机内存恶意行为追溯取证方法,所述方法包括:

获取目标主机的内存转存文件;

对所述内存转存文件进行恶意行为痕迹提取;

对所述恶意行为痕迹中恶意进程的元素逐个与所述内存转存文件中的除该恶意进程外的全体进程进行多元关系关联分析;

在得到所述多元关系关联分析的关联强弱可视化结果后,重构入侵场景。

内存取证方法:指的就是进行恶意行为痕迹提取。

如图2所示,通过归纳总结恶意行为在内存中的痕迹表现,设计了隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹六类恶意行为痕迹的检测规则,完成对内存转储文件的恶意行为痕迹自动化提取。

利用进程之间的父子关系和时间关系进行进程关联分析,这种关联可以发现进程之间复杂且紧密的关联关系,形成一条条证据链,通过对这些证据链进行分析可以有效推断和还原出恶意活动。在本发明中,通过将进程之间的关系整合到父子创建关系、时间并发关系、同源路径关系、名称相似关系、同源账户关系、网络通信关系、管道通信关系、文件操作关系、DLL载入关系九个维度中,相较于传统内存取证使用的父子创建关系和时间并发关系可发现更多进程间的关联。利用Python进行层次聚类和聚类结果可视化表示,可将关联强弱数值化表示,直观地表现出与恶意进程存在关系紧密的进程。取证人员可从得到的进程链着手分析,大大提高取证效率。

进一步,在所述获取目标主机的内存转存文件之后,所述方法还包括:对所述内存转存文件进行语义解析和语义重构。

进一步,所述恶意行为痕迹具体包括:隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹。

进一步,对所述恶意行为痕迹中恶意进程的元素逐个与除该恶意进程外的全体进程进行多元关系关联分析;具体包括:

解析所述恶意进程和所述内存转存文件的除该恶意进程外的全体进程的资源结构;

利用所述资源结构中的句柄表、安全描述符、特权、线程、载入模块、虚拟地址描述符和元数据信息,将进程关系整合至九个关系维度中;

定义九个关系维度的关联度度量算法后,计算后,得到可量化描述的进程之间的关联度。

进一步,所述元数据信息包括进程创建时间。

进一步,所述九个关系维度包括:父子创建关系维度、时间并发关系维度、同源路径关系维度、名称相似关系维度、同源账户关系维度、网络通信关系维度、管道通信关系维度、文件操作关系维度、DLL载入关系维度。

进一步,所述得到可量化描述的进程之间的关联度后,所述方法还包括:

通过层次聚类算法将与所述恶意进程关联性强的进程聚为一簇,得到进程链;

分析进程链并重构入侵场景。

进一步,所述通过层次聚类算法将与所述恶意进程关联性强的进程聚为一簇得到进程链具体包括:

通过Python构建层次聚类,把关联度矩阵作为输入,得到进程的聚类结果表示;

通过设置距离阈值,将聚类结果可视化表示,得到进程链。

实施例二

一种云虚拟机内存恶意行为追溯取证方法,用于单一主机的内存取证,所述方法包括:

对目标主机进行内存转储文件获取;

对目标主机内存转储文件进行恶意行为痕迹提取;

将恶意进程与其余进程进行关联。

如图2所示,恶意行为痕迹提取部分通过检查内存转储文件中是否存在隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹六个方面的典型痕迹遗留实现的。

对于隐藏自身行为,本发明从进程关系列表、内存池标签、全局句柄表三个视角交叉验证进程是否存在,发现隐藏进程;

对于权限维持行为,本发明从内存转储文件中重构注册表信息,设定检查项发现包括自启动、添加账户、服务在内的多种权限维持行为;

对于异常网络连接行为,本发明通过检查套接字和进程句柄表,设定IP地址白名单来发现存在异常远程连接和打开网卡混杂模式的进程;同时通过检查浏览历史记录发现存在下载可执行文件行为的进程;

对于注入行为,本发明通过检查进程调用API、进程内存空间保护级别和是否存在Hook函数,发现存在注入的进程;

对于敏感API调用行为,本发明通过检查恶意代码存在的自我复制与自删除行为、获取系统基本信息行为、反调试行为、加解密行为遍历进程行为、文件操作行为共六种特征行为使用的API,发现存在敏感API调用的进程;

对于系统关键进程异常行为,本发明通过对Windows关键系统进程的内存行为解析,设置了相应的检查规则,如:system进程的PID应为4,且在磁盘中没有对应的可执行文件。以此发现异常进程。

将恶意进程与其余进程进行关联,使用进程多元关系关联分析技术。

当前绝大多数用于进程分析的取证工具能直观展现的进程关系均为时间关系和创建关系,如Windows自带的任务管理器,进程查看管理工具Process Explorer,内存取证工具Volatility。取证人员在掌握一定证据后,将沿着这两类关系出发,逐步追溯并还原入侵场景。但仅通过这两类关系能追溯到的证据有限,也难以将恶意行为痕迹之间的因果关系描述清楚,因此本发明采取了一种云虚拟机内存恶意行为追溯取证方法。

通过解析进程资源结构,从进程的句柄表、安全描述符、特权、线程、载入模块和虚拟地址描述符多个方面出发,再加上进程创建时间等元数据信息,将进程之间的关系整合到父子创建关系、时间并发关系、同源路径关系、名称相似关系、同源账户关系、网络通信关系、管道通信关系、文件操作关系、DLL载入关系九个维度中,并定义了不同关系的关联度度量算法,使得进程之间的关联度可量化描述。最后通过层次聚类算法将与恶意进程关联强的进程聚为一簇,形成进程链。对进程链分析可将原本离散的证据相关联,同时发现更多恶意进程,重构入侵事件。

父子创建关系:父子创建关系是进程关系中最紧密、最直接的关系。一方面恶意代码可能通过注入等行为隐藏到正常进程的子进程中,另一方面恶意代码也会创建进程来达成自己的目的,因此可以通过父子创建关系更确切的得到恶意代码入侵路线。进程_EPROCESS.UniqueProcessID成员为每个进程建立了唯一的标识,即PID,_EPROCESS.InheritedFromUniqueProcessId成员为该进程对应父进程的标识,即PPID,因此可通过此标识进行父子创建关系的关联。

时间并发关系:任何恶意行为都是需要通过进程完成的,随着恶意代码行为不断复杂化,单一进程难以达到恶意代码需求,某一时间段内,恶意代码会创建多个进程与主进程进行协调合作,以完成攻击。因此某一时间段内同时创建的进程之间都可能与恶意进程存在某种关系。_EPROCESS.CreateTime与_EPROCESS.ExitTime即为进程的创建时间与退出时间,通过分析进程间这两个时间的关联即可完成恶意进程时间并发关系的关联分析。

同源路径关系:恶意代码在攻击过程中常常会在指定目录运行恶意程序,通过追溯进程结构体_EPROCESS.Peb.Ldr.InLoadOrderModuleList链表首项可发现进程可执行文件路径,检测进程是否来自同一路径可关联进程间的同源路径关系。

名称相似关系:属于同一恶意家族的或由同一攻击组织开发的恶意代码通常名称相似,可通过比较恶意进程间字符串相似度来得到进程间名称相似关系。

同源账户关系:恶意用户在实施恶意行为时,为了不引起管理员的发觉,通常会创建一个隐藏账户用于权限维持和持久化攻击。因此可将来自同一用户的进程进行关联。Windows内核中使用安全标识符(Security Identifiers,SID)来表示账户。例如:S-1-5-21-622690269-3353002068-1713335120-500为管理员账户。本发明通过检测相同SID来完成进程账户关联,_EPROCESS.Token.UserAndGroup成员指向SID_AND_ATTRIBUTES结构体,该结构体中的SID即为账户对应的唯一标识。

网络通信关系:恶意代码为了建立远程控制会尝试与C&C服务器建立远程连接,通过追溯_TCP_ENDPOINT.AddrInfo.Remote成员可获得套接字的远程通信地址,并由_TCP_ENDPOINT.Owner成员找到对应的进程,监测相同远程连接地址可完成此部分网络通信关联。

管道通信关系:进程间的通信由命名管道实现,尽管每个进程实例使用自己的缓冲区和句柄,但一个命名管道的所有实例都会共享一个相同的管道名。进程对所有资源的访问都通过句柄实现,因此包含NamedPipe内容的句柄即为进程使用的管道名。

文件操作关系:对于文件系统中同一文件有操作行为的进程应当被关联,进程对文件资源的访问同样通过Handle实现,包含HarddiskVolume内容的句柄即为进程操作的文件对象。

DLL载入关系:恶意代码执行命令时大部分函数来自原生或自己创建的DLL,因此本发明对载入相同DLL的进程进行关联。可在Ldr结构体中找到DLL相关的三个链表,以此获取进程加载DLL列表,对于恶意进程,可通过遍历VAD树,找到映射文件对象来获取DLL列表。最后通过对比同一DLL关联进程即可完成DLL调用关系的关联。

通过定义的九元关系度量代替相似度度量函数。

定义1:设

定义2:

定义3:假设有任意两个进程a与b,则进程任意特征属性x

ω

定义4:若任意特征属性

r

其中g

定义5:若R

其中θ为一常量。R′

通过归一化可将关联度量的值域转化到(0,1)之间。

定义6:若R′

D

根据上述定义,对内存中运行的所有进程可建立距离对称矩阵:

对于时间并发关系,将任意进程的创建时间记为T

表1

时间并发关系算法:

由进程间的父子创建关系可得到两种关系模式{m

表2

从上表关系模式可得到,进程之间的父子创建关系关联度矩阵应为0-1矩阵。由于同源账户关系、同源路径关系均与父子创建关系形式类似,仅包含是与不是两种关系模式,因此用相同算法即可。

由进程间的网络通信关系可得到两种关系模式{m

表3

从上表关系模式可得到,进程之间的网络通信关系关联度矩阵应为0-1矩阵。由于管道通信关系、文件操作关系、DLL载入关系形式类似,因此用相同算法即可。

进程间的名称相似关系仅有一种关系模式,因此由定义4可得

由编辑距离可得到进程a,b的名称关联度公式:

名称相似关系算法:

由上述算法最终可得到进程关系的度量表示:

最终通过Python实现层次聚类,将上述得到距离对称矩阵作为输入,得到进程的聚类结果表示,使得关联较强的进程聚成一簇。通过设置距离阈值,将聚类结果可视化表示,可得到进程链。

优选地,在本发明中,通过归纳总结恶意行为在内存中的痕迹表现,设计了隐藏自身行为痕迹、权限维持行为痕迹、异常网络连接行为痕迹、注入行为痕迹、敏感API调用行为痕迹和系统关键进程异常行为痕迹六类恶意行为痕迹的检测规则,完成对内存转储文件的恶意行为痕迹自动化提取。

利用进程之间的父子关系和时间关系进行进程关联分析,这种关联可以发现进程之间复杂且紧密的关联关系,形成一条条证据链,通过对这些证据链进行分析可以有效推断和还原出恶意活动。

优选地,在本发明中,通过将进程之间的关系整合到父子创建关系、时间并发关系、同源路径关系、名称相似关系、同源账户关系、网络通信关系、管道通信关系、文件操作关系、DLL载入关系九个维度中,相较于传统内存取证使用的父子创建关系和时间并发关系可发现更多进程间的关联。

优选地,利用Python进行层次聚类和聚类结果可视化表示,可将关联强弱数值化表示,直观地表现出与恶意进程存在关系紧密的进程。取证人员可从得到的进程链着手分析,大大提高取证效率。

如图3和如图4所示为同一入侵场景下,使用父子关系和时间关系分析和使用多元关系关联分析结果对比。从图3中发现可分析出入侵行为的强关联进程链(2180,1156,1472,1188,1908,2000),(400,1912),(2336,2132)。但由于对进程间关系的描述不足,不能挖掘出两条进程链之间潜在的关联。尽管通过降低关联度阈值可以发现两条进程链之间的关系,但同时会得到大量冗余关系,不利于分析。分析图4,从强关联进程中可得到进程关系链(1912,400,1908,1156,2180,1472,2000,2132,2336),不仅挖掘出了进程链间的潜在联系,同时得到的干扰信息更少。

通过进程多元关系关联分析,能将具有关联的进程相互联系起来,而不仅仅是针对恶意进程,通过离散证据点的标注就可以发现那些包含正常行为的犯罪过程,理解入侵的全过程。

下面给出应用实施例。

本实施例以感染了震网病毒的32位Windows XP系统为例,对恶意行为分析方法进行验证。

首先以池标签扫描获取Windows进程对象及其资源情况为例进行实例分析,其余对象体重构方式类似。

任何一个结构体对象必须包含一个内存池头部,一个固定对象头,一个对象体组成。进程结构体的内存池标签为ProxE3。其后0x20h偏移处为EPROCESS结构体起始地址,通过验证结构体完整性来判断是否找到EPROCESS对象。上图为一通过池标签扫描得到的进程结构体。

对于非地址类型的成员,直接通过EPROCESS结构成员偏移读取其值,如偏移0x174h处为ImageFileName成员,代表进程对应的可执行文件名,此例中为lsass.exe。对于指针类型的成员,如偏移0x1b0h处为PEB结构指针,由于指向的都是虚拟地址,需要进行地址转译,具体过程如下:

1、读取0x18h偏移DirectoryTableBase成员,该成员保存CR3基址,小端序此处值为0x0A9403C0h;

2、读取PEB成员虚拟地址,此处为0x7FFDE000;

3、虚拟地址转为二进制表示,0b01111111111111011110000000000000;

4、由于本例中操作系统采用PAE地址转译,其虚拟地址各字段含义如下表所示:

表1 PAE地址转译虚拟地址字段含义

5、逐级读取页目录指针、页目录、页表、页内偏移,将虚拟地址转为物理地址;

6、读取PEB物理地址0x1334C000h。

由此即可完成对任意结构体对象的信息重构。

从系统关键进程异常行为进行分析:

Lsass.exe是本地安全授权子系统进程,在正常Windows系统中仅存在一个此进程,且在Win dows XP中其父进程应为winlogon.exe。其中上图中PID为868、1928的进程为恶意进程。

从隐藏自身行为痕迹分析,通过对比进程PEB视角和内核VAD视角,发现进程868,1928均存在DLL隐藏行为。

由分析结果可知,进程私有空间0x00080000,0x01000000处存在隐藏DLL。其中0x01000000处可从InLoadOrderModuleList链表和InMemoryOrderModuleList链表中读取到lsass.exe可执行文件,但在VAD视角中无法获取到,这说明此文件并没有真正映射到内存空间。事实上,震网病毒通过process hollowing注入替换了原本映射lsass.exe模块的内存,实际申请0x01000000内存的内容与lsass.exe可执行文件无关。

通过注入行为痕迹分析可进一步确认恶意代码注入方式,868进程的0x01000000处可能为注入区域(0x00080000雷同)。这是因为此区域具有PAGE_EXECUTE_READWRIT保护级别,允许进程读写和执行,且此区域以MZ开头,这意味着该区域很可能存储了PE文件。

对比上述结果可发现,尽管检查恶意lsass.exe进程PEB块,显示其载入的第一个模块与正常lsass.exe进程相同,均为C:Windowssystem32lsass.exe。但实际上恶意lsass.exe模块内容已被替换,且正常lsass.exe可执行程序中包含对常见DLL的引用,而恶意lsass.exe中包含各种文件操作敏感API以及被Hook的API。

通过网络连接行为痕迹检查,从已建立的套接字中并未找到异常连接,说明此时还未进行传播,但从1928进程句柄表中可看到打开了DeviceIp和DeviceTcp句柄,说明1928进程确实试图建立网络连接。

通过敏感API调用行为痕迹分析,发现668进程存在文件读写敏感API的调用。

取证结果表明,本发明所述恶意行为痕迹提取方法可有效发现内存中的恶意行为活动,并提取出相应的证据信息。

上面对本发明优选实施方式作了详细说明,但是本发明不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

不脱离本发明的构思和范围可以做出许多其他改变和改型。应当理解,本发明不限于特定的实施方式,本发明的范围由所附权利要求限定。

相关技术
  • 一种可自由组合的刀库机构及其换刀方法
  • 一种辅助刀库刀仓换刀机构
技术分类

06120116550931