CentOS基于volatility2的内存取证实验

CentOS,Redhat和Fedora 都是Red Hat体系,采用yum管理器,不同于Debian、Ubuntu作为Debian体系使用apt

本文以CentOS为例,采用avml制作内存镜像,并利用volatility官方所给工具制作profile符号文件,进行简单的内存取证实验

虚拟机安装

本次实验测试了centos7和centos8版本,其他同理

https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso
https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

安装过程不过多赘述了,安装时建议直接选最小安装,centos一般用ssh连,图形化界面不太好用

其他都默认就行

安装好后查看一下ip 发现net没分配到ip

配置一下网卡,ifcfg后跟的ens网卡名称和上面对应

复制代码
vi /etc/sysconfig/network-scripts/ifcfg-ens160

重启一下服务

复制代码
# CentOS7
service network restart
# CentOS8
service NetworkManager restart

有内网ip了就可以ssh连了

制作内存镜像(建议可以放到最后)

下载avmlReleases · microsoft/avml (github.com)

然后用ssh传到centos里,给予运行权限

复制代码
chmod 711 avml

打内存镜像

复制代码
./avml out.lime

制作profile

将vol的tools目录下的linux文件夹传到centos里,并尝试编译

复制代码
make

遇到致命错误

复制代码
make -C //lib/modules/3.10.0-1160.el7.x86_64/build CONFIG_DEBUG_INFO=y M="/root/linux" modules
make: *** //lib/modules/3.10.0-1160.el7.x86_64/build: 没有那个文件或目录。 停止。
make: *** [dwarf] 错误 2

提示/lib/modules/3.10.0-1160.el7.x86_64/build目录不存在

查看了一下发现build符号链接指向/usr/src/kernels/3.10.0-1160.el7.x86_64

这符合通常的情况,因为在许多Linux发行版中,内核源码通常位于/usr/src/kernels/目录下。

这种设置是为了让开发人员方便地访问内核源码,特别是用于编译内核模块时。

进一步发现kernels目录下没有对应内核开发包

复制代码
[root@localhost 3.10.0-1160.el7.x86_64]# cd /usr/src/kernels/3.10.0-1160.el7.x86_64
-bash: cd: /usr/src/kernels/3.10.0-1160.el7.x86_64: 没有那个文件或目录
[root@localhost 3.10.0-1160.el7.x86_64]# ls -a /usr/src/kernels
.  ..

安装内核开发包,全部选yes就可以

复制代码
sudo yum install kernel-devel

再查看,发现已经有了

但是发现名字跟之前的软连接对不上,之前软连接指向的是/usr/src/kernels/3.10.0-1160.el7.x86_64

重新构造软连接

复制代码
sudo rm /lib/modules/3.10.0-1160.el7.x86_64/build
sudo ln -s /usr/src/kernels/3.10.0-1160.108.1.el7.x86_64 /lib/modules/3.10.0-1160.el7.x86_64/build

ps:在这里可以看到其实内核的kernel已经做了一部分修改了,建议在这一步先reboot一下

如果内存镜像在这一步之前打的,后面做下去会提示报错

复制代码
 ArmAddressSpace: Failed valid Address Space check

所以建议内存镜像放在最后去制作

再进行make,又遇到致命错误

复制代码
[root@localhost linux]# make
make -C //lib/modules/3.10.0-1160.el7.x86_64/build CONFIG_DEBUG_INFO=y M="/root/linux" modules
make[1]: 进入目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
arch/x86/Makefile:96: stack-protector enabled but compiler support broken
arch/x86/Makefile:169: *** CONFIG_RETPOLINE=y, but not supported by the compiler. Compiler update recommended.。 停止。
make[1]: 离开目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
make: *** [dwarf] 错误 2

指出编译器不支持所需的特性。特别地,指出启用了 RETPOLINE(一种用于缓解Spectre漏洞的技术),但是编译器不支持。

centos默认编译器是gcc,重新安装一下

复制代码
# 安装软件源
sudo yum install epel-release
# 安装gcc
sudo yum install gcc

再make,这次提示报错没有dwarfdump

复制代码
[root@localhost linux]# make
make -C //lib/modules/3.10.0-1160.el7.x86_64/build CONFIG_DEBUG_INFO=y M="/root/linux" modules
make[1]: 进入目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: 离开目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
dwarfdump -di module.ko > module.dwarf
/bin/sh: dwarfdump: 未找到命令
make: *** [dwarf] 错误 127
[root@localhost linux]# dwarfdump
-bash: dwarfdump: 未找到命令
安装dwarfdump

这里不建议安装最新版本的dwarfdump,在后面继续做会产生报错ValueError: invalid literal for int() with base 16: '128 (-128)' · Issue #866 · volatilityfoundation/volatility (github.com)

但是暂未有前辈给出修改方案,所以建议安装了较新版本的dwarfdump或者产生如下所述报错的,重新卸载并装老版本的dwarfdump

复制代码
ValueError: invalid literal for int() with base 16: '168 (-88)'

# 下载并解压包
wget https://www.prevanders.net/libdwarf-20201201.tar.gz

tar -xf libdwarf-20201201.tar.gz
cd libdwarf-20201201

# 配置并编译
sudo ./configure
sudo make install 

继续回到linux目录下编译,成功得到dwarf内核调试文件

复制代码
[root@localhost linux]# make
make -C //lib/modules/3.10.0-1160.el7.x86_64/build CONFIG_DEBUG_INFO=y M="/root/linux" modules
make[1]: 进入目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: 离开目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
dwarfdump -di module.ko > module.dwarf
make -C //lib/modules/3.10.0-1160.el7.x86_64/build M="/root/linux" clean
make[1]: 进入目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
  CLEAN   /root/linux/.tmp_versions
  CLEAN   /root/linux/Module.symvers
make[1]: 离开目录"/usr/src/kernels/3.10.0-1160.108.1.el7.x86_64"
[root@localhost linux]# ls
kcore  libdwarf-0.9.1.tar.xz  Makefile  Makefile.enterprise  module.c  module.cile  module.dwarf
[root@localhost linux]# ls -lh
总用量 5.0M
drwxr-xr-x. 2 root root   71 2月   5 20:14 kcore
-rw-r--r--. 1 root root 2.6M 1月  28 03:27 libdwarf-0.9.1.tar.xz
-rw-r--r--. 1 root root  384 2月   5 20:14 Makefile
-rw-r--r--. 1 root root  314 2月   5 20:14 Makefile.enterprise
-rw-r--r--. 1 root root  18K 2月   5 20:14 module.c
-rw-r--r--. 1 root root   46 2月   5 20:20 module.cile
-rw-r--r--. 1 root root 2.4M 2月   5 21:12 module.dwarf

获取system.map内存表文件

复制代码
ls -lh /boot/System.map-$(uname -r)

[root@localhost linux]# ls -lh /boot/System.map-$(uname -r)
-rw-------. 1 root root 3.5M 10月 20 2020 /boot/System.map-3.10.0-1160.el7.x86_64

打包

复制代码
sudo zip $(lsb_release -i -s)_$(uname -r)_profile.zip module.dwarf /boot/System.map-$(uname -r)

# 如果没有lsb_release命令
yum install redhat-lsb-core

[root@localhost linux]# sudo zip $(lsb_release -i -s)_$(uname -r)_profile.zip module.dwarf /boot/System.map-$(uname -r)
  adding: module.dwarf (deflated 91%)
  adding: boot/System.map-3.10.0-1160.108.1.el7.x86_64 (deflated 79%)
[root@localhost linux]# ls
CentOS_3.10.0-1160.108.1.el7.x86_64_profile.zip  kcore  Makefile  Makefile.enterprise  module.c  module.cile  module.dwarf

将zip移到volatility2\volatility\plugins\overlays\linux目录下

复制代码
# linux下用grep,我volatility2装在windows里
python2 vol.py --info | findstr "Linux" 
复制代码
python2 vol.py -f out.lime --profile=LinuxCentOS_3_10_0-1160_108_1_el7_x86_64_profilex64 linux_banner

成功解析

相关推荐
Doro再努力1 小时前
Vim 快速上手实操手册:从入门到生产环境实战
linux·编辑器·vim
wypywyp1 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
Doro再努力1 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene1 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
忧郁的橙子.1 小时前
02-本地部署Ollama、Python
linux·运维·服务器
醇氧2 小时前
【linux】查看发行版信息
linux·运维·服务器
No8g攻城狮2 小时前
【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤
linux·运维·ubuntu
XiaoFan0123 小时前
免密批量抓取日志并集中输出
java·linux·服务器
souyuanzhanvip3 小时前
ServerBox v1.0.1316 跨平台 Linux 服务器管理工具
linux·运维·服务器
HalvmånEver4 小时前
Linux:线程互斥
java·linux·运维