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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

synchronized内部工作原理

作者简介: zoro-1,目前大二,正在学习Java,数据结构,javaee等 作者主页: zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 synchronized内部工作原理 syn…

kafka-splunk数据通路实践

目的: 鉴于目前网络上没有完整的kafka数据投递至splunk教程,通过本文操作步骤,您将实现kafka数据投递至splunk日志系统 实现思路: 创建kafka集群部署splunk,设置HTTP事件收集器部署connector服务创建connector任务&a…

前缀和算法

【模板】前缀和 题目链接:前缀和 算法思路 先预处理出来⼀个「前缀和」数组: ⽤ dp[i] 表⽰: [1, i] 区间内所有元素的和,那么 dp[i - 1] ⾥⾯存的就是 [1, i - 1] 区间内所有元素的和,那么:可得递推公式…

docker安装etherpad文档系统

效果 安装 1.创建并进入目录 mkdir -p /opt/etherpad cd /opt/etherpad 2.修改目录权限 chmod -R 777 /opt/etherpad 3.创建并启动容器 docker run -d --name etherpad --restart always -p 10054:9001 -v /opt/etherpad/data:/opt/etherpad-lite/var etherpad/etherpad:la…

YOLO-World——超级轻量级开放词汇目标检测方法

前言 目标检测一直是计算机视觉领域中不可忽视的基础挑战,对图像理解、机器人技术和自主驾驶等领域具有广泛应用。随着深度神经网络的发展,目标检测方面的研究取得了显著进展。尽管这些方法取得了成功,但它们存在一些限制,主要体…

业务架构设计之汽配供应链与实现的实践总结

随着汽车行业的不断发展,汽配供应链的规模和复杂度也在不断增加。为了满足市场需求,建立一个高效、可靠的汽配供应链业务系统至关重要。本文将总结一些关键的实践经验,帮助读者了解如何设计和实现一个稳定且高效的汽配供应链业务系统。 1. 业…

从零开始手写mmo游戏从框架到爆炸(七)— 消息封装

上一篇,我们初步把消息handler 注册到了服务中,在进行后续工作之前我们需要再做一些准备工作。 第一:把之前自己管理的bean放到spring中去管理,后面大部分的bean都通过spring来管理。 第二:为了方便路由消费&#xff0…

C语言:内存函数

创作不易,友友们给个三连吧!! C语言标准库中有这样一些内存函数,让我们一起学习吧!! 一、memcpy函数的使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 1.1 使…

分享65个节日PPT,总有一款适合您

分享65个节日PPT,总有一款适合您 65个节日PPT下载链接:https://pan.baidu.com/s/1hc1M5gfYK8eDxQVsK8O9xQ?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知…

编译原理与技术(二)——词法分析(一)正则表达式

一、词法分析的概貌 一个程序,在我们看来往往是像下图这样的。 实际上,上面的程序本质上就是一个字符串,所以,它等价于下面这样的。 上面的字符串(字符流) ,就是编译器接收到的程序的形式。 所…

centos安装inpanel

前置条件 安装python yum -y install python 安装 cd /usr/local git clone https://gitee.com/WangZhe168_admin/inpanel.git cd inpanel python install.py 安装过程需要设置账户 密码 端口号 我设置的是admin:admin 10050 使用 打开浏览器,输入 http://192.168.168.…

【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)

什么是嵌入? OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于: Search 搜索(结果按与查询字符串的相关性排序)Clustering 聚类(文本字符串按相似性分组)Recommendations 推荐(推荐具有…

02.05

1.单链表 main #include "1list_head.h" int main(int argc, const char *argv[]) { //创建链表之前链表为空Linklist headNULL;int n;datatype element;printf("please enter n:");scanf("%d",&n);for(int i0;i<n;i){printf("ple…

22.仿简道云公式函数实战-数学函数-COT

1. COT函数 COT 函数可用于计算角度的余切值。 2. 函数用法 COT(弧度) 使用该函数时&#xff0c;需要将角度转化为弧度参与计算&#xff0c;可通过 RADIANS 函数 将角度转化为弧度。 3. 函数示例 如计算 COT(45) 的值&#xff0c;可设置公式为COT(RADIANS(45))&#xff0…

算法——二分查找算法

1. 二分算法是什么&#xff1f; 简单来说&#xff0c;"二分"指的是将查找的区间一分为二&#xff0c;通过比较目标值与中间元素的大小关系&#xff0c;确定目标值可能在哪一半区间内&#xff0c;从而缩小查找范围。这个过程不断重复&#xff0c;每次都将当前区间二分…

算法练习-四数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

配置git环境与项目创建

项目设计 名称&#xff1a;KOB 项目包含的模块 PK模块&#xff1a;匹配界面&#xff08;微服务&#xff09;、实况直播界面&#xff08;WebSocket协议&#xff09; 对局列表模块&#xff1a;对局列表界面、对局录像界面 排行榜模块&#xff1a;Bot排行榜界面 用户中心模块&…

【Qt】常见问题

1.存在未解析的标识符 将build文件夹删掉重新编译。 2.左侧项目目录栏无法删除已添加项目 打开目标项目上一级的pro文件&#xff0c;将目标文件名字注释或者删除掉&#xff0c;最后保存&#xff0c;qt就会自动更新&#xff0c;将该项目隐藏掉。 3.在qt creator下添加槽函数…

大型装备制造企业案例分享——通过CRM系统管理全球业务

本期&#xff0c;小Z为大家带来的CRM管理系统客户案例是某大型装备制造企业运用Zoho CRM管理全球业务的过程分享。该企业是创业板上市公司&#xff0c;业务遍及100多个国家和地区&#xff0c;合作伙伴超百位&#xff0c;拥有覆盖全球的销售和服务网络。截止目前&#xff0c;相继…

油猴js 获取替换网页链接并重定向

场景 适用一些镜像网站进行重定向&#xff0c;比如Github。 代码 // UserScript // name New Userscript // namespace http://tampermonkey.net/ // version 2024-02-06 // description try to take over the world! // author You // match …