溯源取证-Linux内存取证 中难度篇

这篇具有很好参考价值的文章主要介绍了溯源取证-Linux内存取证 中难度篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原谅我这么晚才出来文章,因为最近忙着录课,至于为啥没有基础篇,是因为靶场里没看见,哈哈

这个也是研究了好几个晚上才出来的东西,此处场景为linux环境下的rootkit病毒,我们通过这篇文章可以通过内存取证发现rootkit病毒相关的知识,我个人觉得还是挺实用的,比较linux的rootkit病毒在不借助工具的前提下是不太好发现的

使用工具:
volatility_2.6_lin64_standalone

环境:
kali linux
python 2.7

需要着重注意的是,此次测试环境芮然依然是kali linux,但是使用的volatility_2.6工具不再是集成工具,而是python脚本了,大家需要重新下载或者是获取此工具

1.机器上安装的 CentOS 版本是什么?

strings  dump.mem| grep -i  "Linux release"

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
或者直接解压文件
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
链接: https://forums.centos.org/viewtopic.php?t=74194
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

2.在 bash 历史记录中有一个命令包含一条奇怪的消息。你能读懂吗?

此次我们需要使用 python版本的脚本,集成式的脚本不太适用于linux环境,我们首先看一下集成式的volatility_2.6_lin64_standalone工具,里面是没有linux的环境的

./volatility_2.6_lin64_standalone --info 

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
我们看一下python脚本形式的,忽略报错即可

python2 vol.py --info   

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
所以我们需要使用python格式的脚本进行实验,环境为python2.7

 python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_bash

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
我们直接进行base64编码转换即可

echo 'c2hrQ1RGe2wzdHNfc3Q0cnRfdGgzXzFudjNzdF83NWNjNTU0NzZmM2RmZTE2MjlhYzYwfQo=' | base64 -d

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

3.可疑进程的 PID 是什么?

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_psaux 

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
很明显,该pid进程执行了个nc的脚本,该命令是用来链接肉鸡用的

4.攻击者下载了后门程序以获得持久性。这个后门隐藏的信息是什么?

 python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_bash  

我们回到问题2,会发现,历史命令中,有一条向github下载东西的指令
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
但是我们直接使用浏览器访问github,发现该文件其实就是一个普通的备份工具
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
首先检查用户是否已 root 身份运行脚本,如果不是,则提示用户需要 root 权限才能进行备份操作。
然后读取用户输入的选择,选择备份的方式 (生成新 Snapshot、使用最近 Snapshot 或使用最近 Diff 文件)。
如果用户没有提供任何选择,则提示用户并提供备份选项。
如果用户选择生成新 Snapshot,则要求用户指定要备份的目录,并使用 app.snapshot.generateSnapshot() 函数生成新的 Snapshot。
如果用户选择使用最近 Snapshot,则要求用户指定要备份的目录,并使用 app.snapshot.getLast() 函数获取最近生成的 Snapshot。
如果用户选择使用最近 Diff 文件,则要求用户指定要备份的目录,并使用 app.compare.getLast() 函数获取最近生成的 Diff 文件。
如果用户选择使用 Diff 文件进行备份,则使用 app.backup.copyFiles() 函数将 Diff 文件备份到指定的目录中。
最后,程序会打印出备份程序已停止的提示信息。
而后我查看了一下 …/app/snapshot.py 文件和 …/app/compare.py 文件,没发现任何端倪
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
似乎没有什么问题的样子
问题就在这了,如果使用git命令下载完整脚本,snapshot内容如下

git clone https://github.com/tw0phi/PythonBackup

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
和明显,直接访问github是看不到该隐藏内容的,实际上该脚本并不是什么恶意文件,只不过这个链接是我们解题需要用到的罢了

curl https://pastebin.com/raw/nQwMKjtZ 

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
这次可以看见,该脚本其实是执行 ncat的命令了

echo c2hrQ1RGe3RoNHRfdzRzXzRfZHVtYl9iNGNrZDAwcl84NjAzM2MxOWUzZjM5MzE1YzAwZGNhfQo= | base64 -d

解析base64编码内容,获得flag
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

5.攻击者的 IP 地址和目标计算机上的本地端口是什么?

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_netstat

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
结果太多了,我们可以过滤一下

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_netstat | grep "12345"

因为上面我们看到,ncat的命令开启了12345作为通信端口,所以我们可以直接过滤12345作为关键数据
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_bash_env | grep "192.168.49.1"

为了验证我们的猜想,我们执行该命令,看一下该地址正在使用的其他信息
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

6.攻击者执行的第一个命令是什么?

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_psaux 

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
我们可以看到,在执行了ncat命令后,执行了python -c import pty; pty.spawn(“/bin/bash”) 该命令,此命令允许生成新的 tty

7.更改用户密码后,我们发现攻击者仍然具有访问权限。你能知道怎么做吗?

接上题,攻击者生成了新的tty之后,访问了/etc/rc.local目录文件,rc.local 是一个脚本,其内容在所有系统服务启动后执行,大家可以理解为计划任务
我们可以直接转储此进程或者是转储他的父进程,这里我转储他的父进程2887
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

mkdir 2887  

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_dump_map --pid 2887 -D 2887/

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

生成了很多的文件,我们筛选一下

find 2887 -name "*.vma" -type f -exec file {} \; -exec grep -q "/etc/rc.local" {} \; -print  

首先我们筛选一下 包含/etc/rc.local字符串的文件有哪些
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
很显然,只有task.2887.0x7f673821e000.vma文件符合
我们进入该文件,继续检索

strings -a task.2887.0x806000.vma| grep "/etc/rc.local" -A 10 -B 10

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
很明显,攻击者在该文件写入了加密密钥,但是没有找到我们需要的东西,我们继续检索

strings -a task.2887.0x806000.vma| grep "ssh-rsa " -A 10 -B 10

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
此时我们看到,有一个played条目

shkCTF{rc.l0c4l_1s_funny_be2472cfaeed467ec9cab5b5a38e5fa0}

linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

8.攻击者使用的 rootkit 的名称是什么?

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_dmesg | grep "out-of-tree" -A 5 -B 5

该命令用于提取系统内存信息,通过分析系统内存信息来查看哪一个模块是没有进行系统认证的,通常情况下,rootkit病毒的模块都是没有进行系统认证的
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全
我们可以看到内核警告,指出加载的 sysemptyrect 模块未经验证,可能会损害内核,即模块不受信任。
然后执行CRC65加密。

python2 vol.py -f ../c73-EZDump/dump.mem  --profile=LinuxCentos7_3_10_1062x64 linux_check_syscall | grep "HOOKED"

我们可以看到其中一个系统调用(系统调用编号 88 是 symlink)被 sysemptyrect 模块拦截,内核也向该模块发出警告
linux内存取证,溯源取证,linux,bash,运维,溯源取证,安全

9.rootkit 使用 crc65 加密,秘钥是什么?

strings -a dump.mem| grep "sysemptyrect" -A 5 -B 5

直接按照该 rootkit的关键字搜索就行文章来源地址https://www.toymoban.com/news/detail-586004.html

到了这里,关于溯源取证-Linux内存取证 中难度篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(48)
  • Windows与Linux取证分析

    目录 一、电子数据取证基本概念 1.电子取证学 2.常规取证 3.洛卡德物质交换原理 4.电子数据范围 5.电子数据取证的概念和目的 6.电子数据取证过程 二、Linux系统取证 1.基本信息获取 (1)获取系统基础信息 (2)用户/用户组信息 (3)网络信息 2.系统运行状态 (1)任务计划

    2024年02月17日
    浏览(21)
  • [linux kernel]slub内存管理分析(4) 细节操作以及安全加固

    前情回顾 关于slab几个结构体的关系和初始化和内存分配的逻辑请见: [linux kernel]slub内存管理分析(0) 导读 [linux kernel]slub内存管理分析(1) 结构体 [linux kernel]slub内存管理分析(2) 初始化 [linux kernel]slub内存管理分析(2.5) slab重用 [linux kernel]slub内存管理分析(3) kmalloc 描述方法约定

    2023年04月09日
    浏览(41)
  • Linux 应急响应-溯源-系统日志排查

    w 是一个命令行工具,它可以展示当前登录用户信息,并且每个用户正在做什么。它同时展示以下信 息:系统已经运行多长时间,当前时间,和系统负载。 第一行展示的信息和 uptime 命令运行结果一样。它包含了下列信息: 10:45:27 系统当前时间 up 3 min 系统上线时间 1 user 登录

    2024年01月25日
    浏览(33)
  • 数字取证学习之内存取证CTF解题实例

    之前做了几道偏向取证的CTF题目,特此分享下,对于内存取证学习有一定的帮助 volatility2: 一款开源的内存取证框架工具,能够对导出的内存文件进行取证分析 Github开源地址:https://github.com/volatilityfoundation/volatility TA在KALI的低版本有自带 高版本移除了需要自己单独安装 安装

    2023年04月23日
    浏览(44)
  • 区块链部署和运维---食品溯源

    一.应用背景:     基于FISCO BCOS部署去中心化的食品溯源系统,部署方式为基于容器技术Docker,部署内容包括系统前端、后端、数据库,并在最后进行验证。具体工作内容如下:     1. 以容器的方式部署Mysql以及Redis数据库     2. 配置Dockerfile,生成系统后端的镜像    

    2024年02月04日
    浏览(32)
  • OtterCTF—内存取证wp

    目录 前言 一、工具说明 二、题目解析 1.What the password? 2.General Info 3.Play Time 4.Name Game 5.Name Game 2 6.Silly Rick 7.Hide And Seek 8.Path To Glory 9.Path To Glory 2 10.Bit 4 Bit 11.Graphic\\\'s For The Weak 12.Recovery 13.Closure 总结 前几天有幸参加了本市的选拔赛,其中有内存取证的题,当时就愣住了,考完后

    2024年02月08日
    浏览(27)
  • 记录一次内存取证

    Volatility是一个用于内存取证的框架工具,集成了多种模块,支持市面常见的操作系统。 下面简单浏览一下大概界面和常用模块 第一题:从内存文件中找到异常程序的进程,将进程的名称作为Flag值提交; 使用vol判断是否文件版本         vol.exe -f gs02.raw imageinfo 选择一个系统版

    2024年02月10日
    浏览(25)
  • linux bash快捷键

    1、^abc-^-123: 这个命令用于运行上一个命令,并将其中的\\\"abc\\\"替换为\\\"123\\\"。 示例:如果上一个命令是echo abc,则运行^abc-^-123后会执行命令echo 123。 2、!!: 这个命令用于重复执行上一条命令。 示例:如果上一条命令是ls -l,则执行!!后会再次运行ls -l。 3、!*: 这个命令用于执行前一

    2024年02月12日
    浏览(30)
  • linux清除历史linux清除history/在 Linux 中清除 bash 历史记录

    有几种方法可以清除 Linux 中的 bash 历史记录,具体操作如下: 1. 清空当前会话的历史记录 这将清空当前终端窗口的历史记录。关闭窗口后再打开,历史记录将重新开始记录。 2. 清空 ~/.bash_history 文件 ~/.bash_history ~/.bash_history 文件存储了所有的历史命令记录,这条命令将清空文件的

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包