Linux 内存镜像制作
Linux下有Dumplt for Linux、不过没有release、可以自行编译,项目地址
https://github.com/MagnetForensics/dumpit-linux
有编译好的版本可以直接下载
https://github.com/deeFIR/dumpit-linux/releases/tag/v0.1.0
不过、更推荐使用微软提供的avml
项目地址: https://github.com/microsoft/avml
以root权限直接+x运行即可
wget https://github.com/microsoft/avml/releases/download/v0.14.0/avml
./avml output.lime
Windows 内存镜像制作
Windows内存镜像制作工具较多,常用的有如下几个:
- AccessData FTK Imager
- Belkasoft RAM Capture
- Magnet RAM Capture
- DumpIt
- 取证大师
- WinPmem
较为好用的是 DumpIt、WinPmem
DumpIt项目地址:https://www.magnetforensics.com/resources/magnet-dumpit-for-windows/
WinPmem项目地址:https://winpmem.velocidex.com/
以管理员权限直接运行即可,会在当前文件夹下生成dmp文件
利用volatility3进行内存分析取证
git clone https://github.com/volatilityfoundation/volatility3.git
使用volatility3开始分析即可,具体操作参考官方文档
python3 vol.py -f image.dmp -h
Linux符号表缺失问题
Windows版本支持较好,Linux则由于版本过多支持缺失。
从现有ISF库中获取
首先获取banner信息、或者kernel信息
$ python3 vol.py -f ./ubuntu20_memory.lime banners.Banners
Volatility 3 Framework 2.4.2
Progress: 100.00 PDB scanning finished
Offset Banner
0x2b8001a0 Linux version 5.4.0-26-generic (buildd@lcy01-amd64-029) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 (Ubuntu 5.4.0-26.30-generic 5.4.30)
0x2c392e54 Linux version 5.4.0-26-generic (buildd@lcy01-amd64-029) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 (Ubuntu 5.4.0-26.30-generic 5.4.30)
0x6fafd1e0 Linux version 5.4.0-26-generic (buildd@lcy01-amd64-029) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 (Ubuntu 5.4.0-26.30-generic 5.4.30)
0xc4f1f220 Linux version 5.4.0-26-generic (buildd@lcy01-amd64-029) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 (Ubuntu 5.4.0-26.30-generic 5.4.30)
0x10e33bc88 Linux version 5.4.0-26-generic (buildd@lcy01-amd64-029) (gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 (Ubuntu 5.4.0-26.30-generic 5.4.30)
下面两个项目搜集了大量ISF数据
下载到对应目录
$ cd volatility3/volatility3/symbols/
$ wget [download link]
$ ls -l
total 1944
-rwxr-xr-x 1 cpuu cpuu 1979312 May 11 11:19 5.4.0-26-generic_5.4.0-26.30_amd64.json.xz
使用dwarf2json工具自制符号表
dwarf2json是一个Go(1.14+必需)程序,它处理包含符号和类型信息的文件,以生成适用于Linux和macOS分析的Volatity3中间符号文件(ISF)JSON输出。
$ git clone https://github.com/volatilityfoundation/dwarf2json.git
$ cd dwarf2json/
$ go build
$ ./dwarf2json --help
Usage: ./dwarf2json COMMAND
A tool for generating intermediate symbol file (ISF)
Commands:
linux generate ISF for Linux analysis
mac generate ISF for macOS analysis
创建ISF文件需要两个组件:
- Linux kernel DWARF file (vmlinux)
- System.Map
简单来说,需要一个vmlinux文件,如果有一个额外的system.map文件,可以获得更准确的结果。如果提供的信息之间存在冲突,则以system.map信息为准。然而,根据我的执行,即使只提供vmlinux文件,分析本身似乎也可以完成(仅使用system.map文件无法进行分析)。
那么,如何获取vmlinux文件呢?首先,如果转到/boot目录,默认情况下可以看到一个名为vmlinuz-5.4.0-26-generic的文件。然而,这是vmlinux文件的压缩形式。我们需要的是原始的vmlinux文件。人们可能会认为,简单地解压就足够了,但事实并非如此。当vmlinux被压缩到vmlinuz时,大量的内核调试信息被删除(剥离)并丢失。我们想要查找的信息包含在此类调试数据中,因此简单地解压缩它是不令人满意的。
因此,必须获取vmlinux文件的相应版本。首先,检查Linux系统的确切版本信息(如果是任意内存映像,请检查banner信息):
$ uname -r
5.4.0-26-generic
要安装调试符号,请参阅以下基于Ubuntu的页面(调试符号包:
$ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | \
sudo tee -a /etc/apt/sources.list.d/ddebs.list
$ sudo apt install ubuntu-dbgsym-keyring
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2EDC64DC5AEE1F6B9C621F0C8CAB6595FDFF622
$ sudo apt-get update
现在,您可以输入所需内核映像版本的dbgsym信息:
$ sudo apt install linux-image-5.4.0-26-generic-dbgsym
$ cd /usr/lib/debug/boot
$ ls -lh
total 742M
-rw-r--r-- 1 root root 742M Apr 20 2020 vmlinux-5.4.0-26-generic
包含内核调试符号的vmlinux文件位于/usr/lib/debug/boot目录中,如上所示。您可以使用dwarf2json基于vmlinux文件提取ISF output.json文件。
$ ./dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-5.4.0-26-generic > output.json
如果您还获得了system.map文件(检查它是否存在于/boot目录下),您可以将其合并:
$ sudo ./dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-5.4.0-26-generic --system-map /boot/System.map-5.4.0-26-generic > output2.json
将创建的output.json文件保存到~/volatility3/volatility3/symbols/。此时,JSON文件的名称并不重要,因为搜索是基于文件的内容。但是,为了便于管理,建议使用内核名称并指定一个文件名,如[kernel-name].json。例如,您可以将其命名为linux-image-4.9.0-3-amd64-dbg_4.9.30-2+deb9u2_amd64.json。
暂无评论内容