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.gztar -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_versionsCLEAN   /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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对象存储minio

参考Linux搭建免费开源对象存储 wget https://dl.minio.io/server/minio/release/linux-amd64/minio yum install -y wget yum install -y wget wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod x minio sudo mv minio /usr/local/bin/ minio --vers…

第7节、双电机直线运动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:前面章节主要介绍单个电机控制,本节内容介绍两个电机完成Bresenham直线运动 一、Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发,最初用于计…

小白水平理解面试经典题目LeetCode 20. Valid Parentheses【栈】

20.有效括号 小白渣翻译 给定一个仅包含字符 ‘(’ 、 ‘)’ 、 ‘{’ 、 ‘}’ 、 ‘[’ 和 ‘]’ ,判断输入字符串是否有效。 输入字符串在以下情况下有效: 左括号必须由相同类型的括号封闭。 左括号必须按正确的顺序关闭。 每个右括号都有一个对…

openstack(T版)公有云--Dashboard服务

公有云上OpenStack Train最小化安装_openstack最小化部署-CSDN博客 我的opensatck(T)是参考上面链接去部署完成的,在部署完Dashboard服务后,将要用浏览器访问的时候出现了404 500 Internal Server Error 等各种各样的问题,以下是我排查问题…

代码随想录算法训练营第二七天 | 回溯 组合 分割

目录 组合总和组合总和II分割回文串 LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &am…

嵌入式软件的设计模式与方法

思想有多远,我们就能走多远 4、状态与工作流类设计模式 4.1 状态与事件 行为随条件变化而改变,这里状态切换的模式也称为状态机。有限状态机 (Finite State Machine,FSM) 是由3 个主要元素组成的有向图: 状态、转换和动作。 状态是系统或者…

12. UE5 RPG使用GameplayEffect修改角色属性(三)

书接 11. UE5 RPG使用GameplayEffect修改角色属性(二) 前面,介绍了GameplayEffect的Instant和Duration的使用,这一篇主要介绍一下无限制时间类型的infinite的使用方式。 无限时间限制模式下,如果你的周期时间&#xff…

Android meminfo 查看方法及解析

目录 Android 上查看memory 信息的方法 内存限制的信息 手动释放缓存 例 adb shell dumpsys meminfo pid 解析 adb shell dumpsys meminfo 汇总信息说明 Total RAM Free RAM ION Used RAM Lost RAM ZRAM /proc/meminfo 参考文档 Android 上查看memory 信息的方法 …

vscode配置wsl ubuntu c++的环境

在ubuntu安装llvm/clang sudo apt install llvm clang clangd lldb vscode的调试器接口是按GDB开发的,所以需要一个适配器,lldb-mi就是这个适配器。lldb-mi原来是llvm项目的一部分,后面成为了一个单独的项目https://github.com/lldb-tools/…

【Docker】.NET Core 6.0 webapi 发布上传到Docker Desktop并启动运行访问,接口返回数据乱码解决方法

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

C语言——联合体类型

📝前言: 在前面两篇文章:C语言——结构体类型(一)和C语言——结构体(二)中,我们讲述了C语言中重要的数据类型之一:结构体类型,今天我们来介绍一下C语言中的另…

C语言数组元素的引用

存储模式:一片连续的内存,按数据类型分割成若干相同大小的格子元素下标:数组开头位置的偏移量,a[0]引用第1个格子,a[1]引用第2个格子,以此类推 int a[5]; // 有效的下标范围是 0 ~ 4 a[0] 1; a[1] 2; a[2…

【机器学习】科学库使用手册第2篇:机器学习任务和工作流程(已分享,附代码)

本系列文章md笔记(已分享)主要讨论人工智能相关知识。主要内容包括,了解机器学习定义以及应用场景,掌握机器学习基础环境的安装和使用,掌握利用常用的科学计算库对数据进行展示、分析,学会使用jupyter note…

linux 自动定时清理缓存

文章目录 1,查看内存占用情况:1.1、free和available的区别?1.2、交换分区的作用? 2,手动清理命令3,定时自动清理3.1,创建文件夹3.2,新建文件cleanBuffer.sh3.3,添加内容3…

Transformer实战-系列教程2:Transformer算法解读2

🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 Transformer实战-系列教程1:Transformer算法解读1 Transformer实战-系列教程2:Transformer算法解读2 5、Multi-head机制 在4中我们的输入是X&#x…

【保姆级教程|YOLOv8改进】【5】精度与速度双提升,使用FasterNet替换主干网络

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

重写Sylar基于协程的服务器(6、HOOK模块的设计)

重写Sylar基于协程的服务器(6、HOOK模块的设计) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日志模…

大数据Zookeeper--案例

文章目录 服务器动态上下线监听案例需求需求分析具体实现测试 Zookeeper分布式锁案例原生Zookeeper实现分布式锁Curator框架实现分布式锁 Zookeeper面试重点选举机制生产集群安装多少zk合适zk常用命令 服务器动态上下线监听案例 需求 某分布式系统中,主节点可以有…

CentOS 8 安装配置 Hadoop3.3.6 伪分布式安装方式(适用于开发和调试)

1.配置服务器ssh免密登录,否则后面启动会报错:尝试通过SSH连接到主机出现认证错误的提示 配置服务器ssh免密登录: 1.生成SSH密钥对(如果尚未生成): 执行下面的命令生成密钥对,一直回车即可 ssh…

为后端做准备

这里写目录标题 flask 文件上传与接收flask应答(接收请求(文件、数据)flask请求(上传文件)传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …