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连,图形化界面不太好用

image-20240205154755982

其他都默认就行

image-20240205154817509
约等待两小时…
安装好后查看一下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

image-20240205123134361

打内存镜像

./avml out.lime

image-20240205123320328

制作profile

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

make

image-20240205123441947

遇到致命错误

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/目录下。

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

image-20240205123626834

进一步发现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

image-20240205123927304

再查看,发现已经有了

image-20240205124004126

但是发现名字跟之前的软连接对不上,之前软连接指向的是/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

image-20240205125058492

再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" 

image-20240205153722214

python2 vol.py -f out.lime --profile=LinuxCentOS_3_10_0-1160_108_1_el7_x86_64_profilex64 linux_banner

成功解析

image-20240205155404692

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 中,虚拟内存是由操作系统用于扩展物理内存的一种技术。它允许将部分硬盘空间用作临时存储,以便在物理内存不足时使用。 要配置虚拟内存,可以按照以下步骤进行操作: 1. 查看当前的虚拟内存配置:可以使用命令 `sysctl vm.swappiness` 来查看当前的 swappiness 值,该值表示内核在多大程度上倾向于将内存页面交换到磁盘中的交换空间。默认值为 60。 2. 修改虚拟内存配置:可以使用命令 `sysctl -w vm.swappiness=新值` 来修改 swappiness 值。较低的值(如10)将减少交换,而较高的值(如100)将增加交换。 3. 永久修改虚拟内存配置:可以编辑 `/etc/sysctl.conf` 文件,在文件末尾添加 `vm.swappiness=新值`,保存并退出。然后使用命令 `sysctl -p` 来重新加载配置文件。 4. 创建交换文件:如果需要增加虚拟内存空间,可以创建一个交换文件。首先,创建一个具有适当大小的文件(例如 2GB):`sudo fallocate -l 2G /swapfile`。然后设置访问权限:`sudo chmod 600 /swapfile`。接下来,将文件转换为交换文件:`sudo mkswap /swapfile`。最后,激活交换文件:`sudo swapon /swapfile`。 5. 永久激活交换文件:可以编辑 `/etc/fstab` 文件,在末尾添加一行 `/swapfile swap swap defaults 0 0`,保存并退出。这样系统在每次启动时会自动激活交换文件。 请注意,虚拟内存的使用可能会对系统性能产生一定影响。因此,在调整虚拟内存配置时需谨慎,并根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值