Windows系统环境下基于内存分析的木马病毒取证
郑文庚1, 李凌崴1, 廖广军2
1.广州市公安局花都区分局,广州 510800
2.广东警官学院,广州510440

第一作者简介:郑文庚,男,广东韶关人,学士,研究方向为电子物证。E-mail: 2211241970@qq.com

摘要

木马病毒是网络犯罪的重要载体,动态内存取证分析研究能够确定木马病毒在计算机的位置、木马运行时的DLL、木马对注册表和系统的改变情况,从而实现木马病毒攻击的证据固定。笔者在Windows系统虚拟环境下开展仿真实验,利用木马病毒对目标计算机进行模拟攻击,使用占用内存最小的DumpIt取证软件对内存在线提取数据,并使用volatility分析内存中的注册表、进程等,对木马攻击行为进行分析研究。实验结果表明,通过内存数据分析能够获取木马病毒进程位置、通信端口、功能等信息。本文还将内存分析数据与注册表文件进行对比分析,进一步实现了木马病毒攻击计算机的线索发现或证据固定。

关键词: 网络犯罪; 木马取证; 内存分析; volatility; 注册表
中图分类号:DF793.2 文献标志码:A 文章编号:1008-3650(2020)06-0572-05
Internal Memory-based Forensics against Trojan Assaulting Windows-operating Computer
ZHENG Wengeng1, LI Lingwei1, LIAO Guangjun2
1. Huadu Branch of Guangzhou Public Security Bureau, Guangzhou 510800, China
2. Department of Criminal Science and Technology, Guangdong Police College, Guangzhou 510440, China
Abstract

Trojan, one major vector with cybercrime, can be determined of its location in the assaulted computer, DLL of its running time, and the resulted alterations to the registry and/or the operation system if the forensic analysis can be gone into the involving dynamic random-access memory. Consequently, the evidence would be fixed about such a virus attack. This paper was to carry out the simulating experiments under virtual Windows-operating environment. Through one Trojan virus to assault a computer being operated with Windows, the DumpIt forensics software, selected as it takes up smallest memory, was to extract the instantaneous online memory data, along with the volatility (also one electronic forensic tool) to analyze the registry and process in the memory, so as to obtain the dynamic course of the virus assault. The experimental results showed that such an analysis of instant data from internal memory was able to acquire the information of virus attacking process and location, the relating communication ports and the affected functions. Moreover, the comparative analysis was carried out between the memory data and registry files, therefore having the clues discovered and the evidence fixed on Trojan virus assaulting computer.

Key words: Internet crime; Trojan forensics; internal memory analysis; volatility; registry

为了应对在线取证多样性、复杂性的场景需求, 特别是木马病毒攻击的场景, 国外较早开展了内存取证研究, 文献[1, 2]提到使用通用数据分析工具(如字符串、grep等)完成内存取证分析研究, 但这些工具不是专门为内存取证创建的, 难以广泛使用。Ford[3]利用Linux崩溃实用程序专门开发的memget和mempeek(用于恢复和分析内存), 实现了基于内存的rootkit的分析。2005年DFRWS发布了内存取证分析挑战[2], 极大地推动了内存取证技术的发展, 研究人员创建了专门用于分析内存的转储工具, 以实现内部数据结构解析, 进而可以重构进程列表和进程信息等。

木马病毒在内存中运行, 通过内存取证分析能够获取木马病毒部分情况, 从而实现线索查找、证据固定。本文介绍了内存数据的提取和数据分析的方法, 并在windows环境下开展了仿真实验, 通过分析木马病毒对进程的影响, 结合注册表键值分析, 梳理出Windows环境下基于内存取证的木马病毒取证的方法。

1 内存数据的提取与分析

内存数据是一种易失性数据, 它的提取主要有两种方式, 一种是硬取证, 通过安装外部硬件到计算机后对内存进行提取, 另一种是软取证, 通过软件提取内存, 然后对所提取的数据进行分析。

1.1 内存数据的硬取证

内存数据的硬取证主要有四种方法。第一种是Carrier和Grand [4]提出的使用“ Tribble” 硬件扩展卡获取物理内存。此方法不会改变系统内存且操作简便, 但是要提前将设备安装到目标计算机中, 现实中难以实现, 无法广泛使用。第二种是通过Fire Ware [5, 6]进行提取。使用Fire Ware可以不经过CPU直接访问系统内存(DMA), 然后利用外部软件直接获取系统内存镜像。但是此方法有两个缺点:一是通过Fire Ware提取内存镜像可能导致系统挂机或者部分内存丢失; 二是可能导致系统蓝屏, 会改变部分内存的偏移地址。第三种是通过崩溃转储, 就是将运行中的计算机蓝屏, 使计算机自动将内存转储, 从而获得转储内存文件。这种方式包括三种转储模式:自动转储[7]、小内存(64 KB)转储 [8]和完全转储[9]。自动转储和小内存转储都无法获得完整的内存数据, 只有将系统设置为完全转储时, 才能获得完整内存数据。第四种是Windows操作系统进入休眠时, 系统的电源管理组件会自动对系统物理内存进行压缩, 将压缩的内存数据存放在系统分区根目录的Hiberfil.sys文件中, 但是经过压缩后无法完全获得之前的内存数据。

1.2 内存数据的软取证

利用软件实现物理内存数据提取是常见的方法。根据物质交换原理[10], 使用软件对物理内存提取会使内存产生变化, 所以小且运行时占用内存少的内存提取软件较适合应用于内存数据的软取证。对常用的四款软件进行测试对比结果如表1所示。

表1 物理内存提取软件的综合分析 Table 1 Four pieces of common software extracting physical memory

表1可看出, DumpIt和MagetRAMCaptur软件自身较小, 占用内存较小, 提取内存数据较为全面, 是软取证的优先选择工具。

1.3 内存数据取证分析

volatility软件是当前使用最广泛的内存取证分析工具, 它可以在Linux, Windows系统上运行并对提取的镜像内存进行分析, 可以识别动态内存所在的虚拟地址块以及偏移量、进程和DLL、进程具体信息、内核内存情况、网络连接状态、注册表信息、崩溃转储、休眠文件和文件内容, 从而确定木马在目标计算机的运行机制、攻击情况等。

2 木马病毒的检测

木马病毒种类多样, 包括网游木马、网银木马和下载类木马等, 本文仅针对下载类木马进行分析。大部分的下载类木马病毒, 攻击目标计算机之后会通过各种方式隐藏, 比如修改图标、捆绑文件、出错提示、定制端口和更改名字等, 然后获取目标计算机权限, 调用Windows系统API函数, 实现攻击目的。木马病毒作为一种恶意进程, 它具有恶意进程的一些特性, 通过检测计算机自启动项[11]、计算机服务端口、恶意进程的物理内存使用率和CPU使用率与调用操作系统API[12]等方法可以检测计算机是否存在木马类恶意进程的情况。

1)检测计算机自启动项。大多数木马病毒随着计算机开机而启动, 对计算机自启动项的检测有助于检测木马病毒。检测方法包括:检测计算机的自启动目录, 如C:\windows\start menu\programs\startup; 检测系统自启动的配置文件, 如WIN.NIN、SYSTEM.NIN; 检测计算机注册表启动项, 如[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]等注册表启动项。

2)检测计算机服务器端口。木马病毒启动后, 会在内存中加载, 随后开启通信端口。打开CMD输入“ netstat-nab” 命令可以查看计算机的网络连接、端口占用和程序运行的详细信息, 从而检测是否有恶意的木马进程打开了相关端口。

3)检测进程物理内存使用率和CPU使用率。大部分的木马病毒启动后进入内存中运行会大量占用物理内存或CPU, 通过打开Windows任务管理器, 查看进程使用大量物理内存或CPU等相关信息, 可以推断是否存在木马病毒等恶意进程。

4)检测进程调用操作系统的API。木马病毒作为一种可以执行的程序, 它想要调用Windows系统资源必须使用Windows操作系统提供的API函数, 所以可以通过检测恶意进程调用Windows操作系统的API的情况, 来分析恶意进程的功能。

以上四种方法是常见的木马病毒检测方法, 用一种或多种手段可以确定木马病毒, 也不排除变异木马病毒需要用其他手段进行检测。

3 基于内存分析的木马病毒设计与实现
3.1 基于内存分析的木马病毒实验设计

为模拟通过U盘传播木马病毒后, 对目标计算机进行攻击的情景, 设计了木马攻击的流程与取证的流程如图1、图2。

图1 模拟木马攻击流程图Fig.1 Course for Trojan to assault in simulation

图2 取证分析流程图Fig.2 Forensic analysis into the process of Trojan attack

木马病毒对目标计算机模拟攻击后, DumpIt取证软件对内存数据在线提取, volatility实现对内存中的注册表以及进程等方面取证分析。通过查找木马病毒在计算机内存运行的进程, 确定木马病毒在计算机的位置, 以及通过木马病毒运行时加载的DLL、对系统的改变与对计算机注册表的改变, 与镜像提取的注册表文件进行对应分析, 从而为分析木马病毒攻击证据的查找固定起到快速定位的作用。

3.2 实验仿真

3.2.1 实验环境

安装VMware虚拟机, 利用虚拟机安装全新的Windows8.1系统, 使用kali(linux)系统, 制作木马病毒。因为未对木马病毒进行免杀和加壳处理, 所以实验前对Windows8.1系统关闭防火墙和Windows Defender。

1)VMware Workstation虚拟机环境:内存2 G, 处理器4核, 硬盘(SCSI)30 G, 网络适配器(桥接模式), usb控制器, 声卡, 打印机, 显示器。

2)Windows8.1系统环境:安装VMware Workstation tool, 在桌面新建桌面文档, 关闭防火墙, 关闭Windows Defender。

3.2.2 实验仿真过程

将木马病毒win8_flash.exe拷贝到U盘中, 插入虚拟机中, 将木马Win8_flash.exe复制到桌面, 打开客户端kali系统, 输入客户端的IP:192.168.43.88和端口443等, 等待木马程序启动。然后点击木马程序, 木马程序将自动连接客户端, 而且服务端的shell和用户权限将被客户端获取。此时, 通过在客户端输入cmd命令对服务端计算机进行攻击。获得权限后, 如图3所示, 对服务端计算机桌面的文档执行删除命令。

图3 木马攻击计算机Fig.3 Trojan hijacking its attacked computer

3.3 取证分析

1)潜在木马分析。为了确定木马病毒win8_flash.exe, 按照如下步骤检测木马病毒。

第一步, 使用DumpIt内存取证工具, 执行内存转储, 将服务端计算机的内存在线提取出来。

第二步, 通过Windows任务管理器检查除常见Windows系统外的其他进程, Win8_flash.exe占用目标计算机的内存较大, 初步怀疑Win8_flash.exe是恶意进程。

第三步, 使用“ netstat -nab” 命令查看计算机的网络连接、端口占用和程序运行的详细信息, 发现Win8_flash.exe将目标计算机的443端口打开进行通信。443端口为网页浏览端口, 一般程序不会打开此端口进行通信。

2)内存数据分析。为进一步确定木马病毒Win8_flash.exe的特性, 将提取的内存用volatility软件进行分析, 分析步骤如下。

第一步, 使用imageinfo命令以识别操作系统、Service Pack、硬件结构体系(32或64位)以及DTB地址和内存提取时间等, 从而分析确定内存所在的物理内存位置, 以便作进一步的分析。

第二步, 使用filescan命令, 输出显示Win8_flash.exe的FILE_OBJECT的物理偏移量, 指向对象的指针数, 指向该对象的句柄数以及授予该对象的有效权限。此步骤确定win8_flash.exe进程隐藏位置在\Device\HarddiskVolume2\User\Desktop文件夹中以及在物理内存块的真实位置, 且发现该进程具有读与写的权限。具有该项权限是高危的。

第三步, 使用volatility通过pslist命令列出系统的所有进程进行查看。将显示PsActiveProcessHead变量地址指向的双向链接列表, 并显示进程启动和退出时的偏移量、进程名称、进程ID, 父进程ID、线程数、句柄数和日期/时间。如图4, 可以得知win8_flash.exe进程攻击时的偏移量为0xfffe00000960900, 进程ID为2388, 父进程为3136, 还有攻击时间2017-09-24 , 15:32:11。

第四步, 进一步查看木马病毒进程加载的DLL。通过命令将输出PEB的InLoadOrderModuleList指向_LDR_DATA_TABLE_ENTRY结构的双向链接列表。当进程调用LoadLibrary(或其他进程, 如LdrLoadDll)时, DLL将自动添加到此列表中, 并且直到FreeLibrary被调用并且引用计数达到零为止, 它们才被删除。通过负载计数列可知DLL是否被静态加载(即由于存在于exe或其他DLL的导入表中)或动态加载。由图4可知, win8_flash.exe通过Windows操作系统提供了API函数, 通过LoadLibrary调用了cmd.exe进程。

通过以上分析, 发现win8_flash.exe程序通过打开443端口进行通信, 具有随意读写的权限且可以获取目标计算机权限, 通过系统API函数调用其他进程, 如CMD等, 具有很强的破坏性, 所以确定win8_flash.exe程序为木马病毒。

3)注册表的对应分析。除此之外, 还需要对内存中运行的注册表进行调查分析, 查找内存中CMHIVE(注册表配置单元)的物理地址, 以便查看是否有其他异常键值的改变, 是否能与对目标计算机注册表分析的结果相互对应。为在物理内存中查找注册表配置单元的虚拟地址以及磁盘上相应配置单元的完整路径, 使用hivelist命令, 将显示内存中注册表HIVE的键值, 以便查看HIVE的地址。然后进一步查看是否存在内存中注册表中移动设备的键值, 与移动设备的ID相对应。从内存取证分析实验结果图5, 可以得知, 携带恶意进程的U盘插入被入侵的计算机中, 分配的盘符为D, 图5中REG_BINARY对应所示数值代码是移动存储设备的类ID(UID), 也是区别移动存储设备的唯一序号。此序号为3517aeb8-22a4-11e8-8252-00c29ffb897。进一步对注册表具体的键值进行分析可得知写入的时间, 关联的文件信息等。Volatility和注册表的对照分析如表2所示。

图4 进程加载的DLLFig.4 DLL loaded into process

图5 U盘盘符与键值Fig.5 Drive letter of U-disk and the allocated key values

表2 Volatility和注册表的对照分析 Table 2 Comparative analysis from volatility and the registry

实验结果由表2可知, 在本研究中, 在模拟木马攻击目标计算机后的取证分析结果有计算机基本信息、版本信息、进程信息和U盘信息等等。在这些信息中, 能够相互对应的有计算机基本信息、版本信息和U盘信息。木马进程因为对注册表分析不够深入, 未能获取有效信息。相互对应的计算机取证分析信息能够起到进一步固定内存信息的作用, 使得内存证据在法庭上得到支持。而不能对应的信息则可以与证据相互补充, 本身计算机的调查取证应尽可能提取更多证据, 且物理内存信息无法涵盖计算机的所有信息。

4 结论

在模拟计算机被木马攻击的情形中, 通过对内存提取分析确定了木马win8_flash.exe, 且确定了该木马获得权限后打开443端口进行通信, 通过Windows系统调用API函数打开CMD等进程进行攻击。通过对注册表的取证分析与对计算机内存的取证分析进行对比发现, 注册表的部分信息可以和内存信息相对应, 进一步证实了内存信息的真实性, 对内存分析所得的证据有一定的促进作用, 也为木马病毒取证证据的固定提供一种方式。

本研究在模拟木马攻击计算机后, 对物理内存的提取分析只是内存取证分析中的一部分。本研究还有许多不足之处, 在此次实验中, 未对木马病毒脱壳、加密等问题进行分析, 所以在接下来的工作中将进一步深入对物理内存和木马病毒的分析研究, 使得物理内存的取证分析更为完善。

参考文献
[1] Wikipedia. Memory forensics[EB/OL]. (2018 -12-03)[2019-05-25]. https://en.wikipedia.org/wiki/Memory_forensics. [本文引用:1]
[2] 张瑜, 吴庆中, 李涛, . 内存取证研究与进展[J]. 软件学报, 2015, 26(5): 1151-1172.
(ZHANG Yu, WU Qingzhong, LI Tao, et al. Research and development of memory forensics[J]. Journal of Software, 2015, 26(5): 1151-1172. ) [本文引用:2]
[3] FORD M. Linux memory forensics[EB/OL]. (2004-05-04) [2019-05-25]. http://www.drdobbs.com/linux-memory-forensics/199101801. [本文引用:1]
[4] CARRIER B D, GRAND J. A hardware-based memory acquisition procedure for digital investigations[EB/OL]. (2004-02-01) [2019-05-25]. http://www.digital-evidence.org/papers/tribble-preprint.pdf. [本文引用:1]
[5] BECHER M, DORNSEIF M, KLEIN C N. FireWire[EB/OL]. (2005 -12-01)[2019-05-25]. https://cansecwest.com/core05/2005-firewire-cansecwest.pdf. [本文引用:1]
[6] BOILEAU A. Physical access attacks with firewire[EB/OL]. [2019-05-25]. http://www.security-assessment.com/files/presentations/ab_firewire_rux2k6-final.pdf. [本文引用:1]
[7] Active memory dump[EB/OL]. (2017 -11-28) [2019-05-25]. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/active-memory-dump. [本文引用:1]
[8] Small memory dump[EB/OL]. (2017 -05-23) [2019-05-25]. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/small-memory-dump. [本文引用:1]
[9] Automatic memory dump[EB/OL]. (2018 -05-08) [2019-05-25]. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/automatic-memory-dump. [本文引用:1]
[10] 卡维. Windows取证分析[M]. 王智慧, 崔孝晨, 陆道宏, 译. 北京: 科学出版社, 2009: 58-83.
(CARVEY H. Windows forensic analysis[M]. WANG Zhihui, CUI Xiaochen, LU Daohong, trans. Beijing: Science Press, 2009: 58-83. ) [本文引用:1]
[11] 李达. 基于行为分析的木马病毒主动防御系统的研究与实现[D]. 北京: 北京邮电大学, 2018.
(LI Da. Research and implementation of the active defense system of Trojan horse virus based on behavior analysis[D]. Beijing: Beijing University of Post and Telecommunication, 2018. ) [本文引用:1]
[12] 胡中雨. 木马行为特征及防护策略的研究[D]. 哈尔滨: 哈尔滨工程大学, 2012.
(HU Zhongyu. Research on Trojan behavior characteristics and protection strategy[D]. Harbin: Harbin Engineering University, 2012. ) [本文引用:1]