GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>电脑问题 > 实例讲解基于Volatility的内存分析技术Part 1

实例讲解基于Volatility的内存分析技术Part 1

来源:Ghost系统之家浏览:时间:2023-04-06 07:29:04

欢迎各位阅读基于Volatility的内存分析系列文章。为了顺利阅读本系列文章,读者最好具备Windows内部运行机制方面的基础知识。准确来说,读者需要了解内存在Windows中运行机制方面的基础知识,为此,我们将给出详尽的介绍。除此之外,不管你有什么不懂的知识,都不会影响您理解本文的内容!

阅读清单:

  • 内核模式
  • 用户模式
  • 虚拟内存
  • Windows进程

一点背景知识:

内存取证(有时称为内存分析)是指对计算机内存转储中易失性数据进行的一种分析。信息安全专业人员可以通过内存取证,来调查和识别那些不会在硬盘驱动器数据中留下痕迹的攻击或恶意行为。

通过内存取证,安全人员可以了解运行时的各种系统活动,例如开放的网络连接或最近执行的命令和进程等。

程序在计算机上运行之前,首先需要被加载到内存中,这使得内存取证变得非常重要——这意味着所有被创建、检查或删除的程序或数据都将被保存到RAM中。这其中包括图像、所有Web浏览活动、加密密钥、网络连接或注入的代码片段。在许多情况下,某些证据只能在RAM中找到,例如在崩溃期间存在的开放网络连接。由于攻击者可以开发只驻留在内存中而不在硬盘落地的恶意软件,从而使标准的计算机取证方法几乎看不到它。这使得内存取证工具变得愈发重要。

Volatility是一个先进的内存取证框架。它为调查人员提供了许多自动工具,人们可以利用其先进的内存分析技术揭示主机上的恶意活动。需要指出的是,该框架是用python实现的,而且是开源的。该框架的下载地址为https://github.com/volatilityfoundation/volatility,相关的文档地址为https://github.com/volatilityfoundation/volatility/wiki/Command-Reference-Mal。

在这个系列文章中,我们将以Coreflood木马为例,来介绍相关的内存取证方法。

Coreflood是由一群俄罗斯黑客创建并在2010年发布的木马和僵尸网络。FBI已经将“大约17个州或地方政府机构,包括1个警察局;3个机场;2个国防承包商;5个银行或金融机构;大约30个学院或大学;大约20个医院或医疗公司;以及数百家企业”[1]列入受感染系统的名单中。截至2011年5月。它已经感染了世界各地230多万台计算机;到目前为止,它仍然是一个巨大的威胁。——维基百科

对于该样本软件,可以通过下面的地址进行下载(.vmem文件):

https://github.com/mgoffin/malwarecookbook/blob/master/16/6/coreflood.vmem.zip

这个文章系列的目标是借助于volatility来了解这个恶意软件的行为,以及相应的内存取证方法。我将尝试发掘所有关于Coreflood的取证工具,以了解这个恶意软件背后的动机到底是什么。我希望能从这次取证分析中学到一些新的东西,并教给大家一些新的东西!

为了开始调查,我想先搞清楚主机上运行的进程。为此,我们只需借助于pslist命令,就能查看是否有明显可疑的进程在运行。

Windows使用一个循环的双链接列表_EPROCESS结构体来跟踪所有的活动进程;并且,这个列表位于内核中。而Volatility就是利用了这个事实:首先,它会寻找PsActiveProcessHead指针,因为该指针指向内核的_EPROCESS结构体列表的起始位置;之后,Volatility会遍历这个列表,从而找出正在运行的所有进程。

主机上正在运行的所有进程:volatility -f coreflood.exe pslist命令的输出结果

我们可以看到,似乎一切都很正常,不过有几件事引起了我们的注意。当前,IE浏览器在运行,同时cmd也在运行,看来正确的做法是检查出站连接,因为恶意软件可能伪装成InternetExplorer浏览器,以隐藏自己与C&C的通信流量。

此外,我们也可以检查一下cmd在那边做什么,这一点将在后面讨论。

一个最简单的操作就是查看出站连接。如果IE出站连接没有找到可疑之处,我们就需要从其他地方寻找恶意活动的踪迹。

下面,我们将使用connscan命令来检查之前终止的和当前活动的连接:

“要想使用池标签扫描功能查找_TCPT_OBJECT结构体,请使用connscan命令。这样做的好处是,我们不仅可以从活动的连接中查找证据,还可以从之前被终止的连接中搜索证据。”——摘自Volatility的官方文档

实际上,这种工作方式就是先通过扫描物理内存,找到4个字节的签名0x54455054(“TCPT”),然后,解析出接下来的28个字节,并将其作为完整的_TCPT_OBJECT结构体。

实例讲解基于Volatility的内存分析技术Part1

volatility -f coreflood.vmem connscan命令的输出结果

从上面的输出结果来看,主机好像正在进行正常的通信,所有的通信都是由pid2044进程(IEXPLORE.EXE)创建的。我查了一下这些IP的地理位置,它们都是注册在一些大公司的名下,比如微软、AT&T等公司。当然,关于这些IP的数据可能已经改变了,因为当前考察的vmem文件已经有些陈旧了;此外,这些也可能是黑客为了欺骗调查人员而对这些IP地址数据做了手脚。

为了确保的确没有恶意通信,我们应该检查入站连接是否安全。为此,我们可以使用sockscan命令,该命令将扫描内存中的_ADDRESS_OBJECT结构体。通过扫描内存中的这个内存结构,我们可以深入了解以前打开的套接字和当前打开的套接字。

volatility -f coreflood.vmem sockscan命令的输出结果

正如我们所看到的,进程pid2044(即IEXPLORE.EXE)中有一些非常奇怪的入站连接。这看起来非常可疑,所以,是时候拿出我们的内存取证神器Volatility,检查一下该进程中是否隐藏着恶意软件了。

我们之所以说Volatility是一个内存取证神器,是因为它提供了许多功能强大的恶意软件分析工具。

我们经常用到的第一个分析工具就是malfind命令。这个命令可用于寻找进程内存中的注入代码。它是通过寻找已分配内存的段(通过查看VAD树数据结构),并检查它们是否有未映射到磁盘上任何文件的可执行代码的线索来实现这一点的。

“VAD节点还引用了一些其他的内核结构体,这些结构体可能对调查人员非常有用……因此,如果该内存区被用于已映射的文件(如加载的DLL),则可以引用相应的_FILE_OBJECT结构体,并提取文件的名称。这可以为调查人员提供一种替代的方法来列出进程加载的模块,然后可以与其他方法找到的模块进行比较,从而找到库注入和隐藏模块的相关证据。”——ScienceDirect

用于检查一段内存是否包含注入代码的方法是检查VAD的页面权限,例如EXECUTE权限等。如果内存中的某一段具有执行权限,并且它没有映射到磁盘上的任何可执行文件的话,就说明这里很可能存在注入的代码。

volatility -f coreflood.vmem malfind命令的输出结果,这里似乎存在误报

正如我们在上图中看到的,该命令的输出结果好像并没有带来太多真正有价值的信息。

这可能是该恶意软件没有加载任何显式PE(可移植可执行文件)代码到内存中,而只是注入了一些shellcode所致,又或者映像的头部被分页了所致。此外,还有一种可能——恶意软件通过调用注入的DLL的ImageBase上的VirtualFree,从内存中清除PE的头部,以避免检测到。当然,也可能是由于某些原因,这部分内存被分页或无法访问。无论如何,我们还不能确定这里存在恶意活动,因为我们没有找到确切的证据。

接下来我们可以使用的命令是apihooks。

“它可以用来查找IAT、EAT、Inline式hook,以及几种特殊类型的hook。对于Inlinehook,它可以检测直接和间接位置的CALL和JMP指令……以及对内核内存中未知代码页的调用。”——Volatility官方文档

为了理解这里到底发生了什么,我们需要快速回顾一下IAT和EAT。

当可执行文件第一次被加载时,Windows加载器将负责读取文件的PE结构,并将可执行文件的映像加载到内存中。其中一步,就是加载应用程序使用的所有dll,并将它们映射到进程地址空间。

此外,可执行文件还会指出在每个dll中需要的所有函数。不过,由于函数地址不是静态的,所以,我们必须开发一种机制,以允许修改这些变量,这样就不必在运行时修改所有已编译的代码了。

这一点是通过导入地址表(IAT)实现的;而IAT,实际上就是由windows加载器在加载dll时所填写的函数指针表。

EAT的工作方式和IAT基本一致,只不过它是供代码库用于将函数导出到映像可执行文件中的,以便供程序从其中将函数地址导入到IAT中(具体细节我就不多说了)。

恶意软件可以通过操纵这两个内存结构体,使得可执行文件调用其他函数,而非原本要调用的函数。

我之所以要在IEXPLORE.EXE上使用apihooks参数,是因为根据sockscan的输出结果,我已经怀疑它可能被篡改了。

实例讲解基于Volatility的内存分析技术Part1

我们将使用apihooks参数并将输出结果保存在一个文本文件中

难以置信! Internet Explorer已经被钩取了十几次以调用同一个函数。

实例讲解基于Volatility的内存分析技术Part1

上图内容摘自保存apihooks命令输出结果的文本文件。实际上,这只是十几个不同函数的hook中的一个而已;它们都调用同一个地址0x7ff82a6e。

我们可以看到,在这个例子中,恶意软件在WINHTTP.dll中“挂钩”了LoadLibrary。

LoadLibrary可用于将库模块加载到进程的地址空间中,并返回一个句柄,该句柄可用于GetProcAddress以获取DLL函数的地址。因此,LoadLibrary是一个非常显而易见的钩取对象,因为我们知道很多PE都会使用其他dll,并导入这些库中的相关函数。

我们需要搞清楚恶意软件在这里试图达到什么目的。为了做到这一点,我们需要尝试深入到恶意软件试图执行的那段代码中。因此,我们要使用Volatility的volshell工具。Volshell是一个非常强大的工具,可以用来浏览内存的内容。我们可以跳转到内存的各个部分,之后,我们不仅可以查看其中的内容,还可以反汇编或读取其中的内容。

输入volshell命令,然后按照流程操作即可。

在输入volshell命令后,我使用cc(

实例讲解基于Volatility的内存分析技术Part1

上面高亮显示的文字(从上到下)向我们展示了被钩住的地址,在它的下面,还高亮显示了恶意软件希望我们的代码要跳转到的地址。

如上图所示,为了弄清楚该恶意软件的意图,我们需要反汇编相关的地址。为此,我将这个地址作为参数复制到volshell命令dis(

我们最终得到的输出结果,就是恶意注入的代码。

关于这个恶意代码的作用,我们将在后面的文章中加以介绍。心急的读者,也可以自己动手尝试一下。

在本文中,我们为读者介绍了如何使用volatility在主机运行的进程中查找潜在的恶意代码。为此,我们首先介绍了一些基本的操作,比如确保没有任何可疑的东西,这样,一旦出现可疑的进程或不常见的IP地址相关的流量,我们就能立即察觉。最后,我们通过volatility考察了恶意软件样本是否通过向无辜的进程注入代码来实现隐身,并发现了一些有趣的代码。在下一篇文章中,我们将深入研究这些代码,看看这个恶意软件到底想达到什么目的。

祝阅读愉快,我们下篇见。

推荐系统

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户

  • 番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    语言:中文版系统大小:3.91GB系统类型:Win7

    欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统

常用系统