vulntarget
靶场系列仅供安全专业人员练习渗透测试技术,此靶场所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用靶场中的技术资料对任何计算机系统进行入侵操作。利用此靶场所提供的信息而造成的直接或间接后果和损失,均由使用者本人
负责。
vulntarget
靶场系列拥有对此靶场系列的的修改、删除和解释权限,未经授权,不得用于其他!!!
靶场地址:
https://github.com/crow821/vulntarget
1. 靶场描述
在面对勒索病毒这样的网络威胁时,我们需要了解攻击的原理和过程,熟练掌握应急响应和取证分析的技术,以便在面对真实的威胁时能够迅速有效地应对。
vulntarget-n
是一个模拟全球化勒索病毒高发环境下的应急响应和取证分析案例,其模拟了一个正常运行的业务服务被勒索病毒攻击的情景:
-
-
今天突然发现首页变成了一个勒索的界面,要求用户支付赎金以解密数据
-
客户发现其中部分重要文件被加密为
.vulntarget
结尾
随即客户要你进行应急响应并取证分析,因为是阿里云的
ECS
,客户将阿里云
ECS
实例镜像导出到本地,要求你在明天分析出结果。
具体要求如下:
-
-
-
恢复原来的
index.jsp
页面,恢复正常的
web
服务
-
已知服务器系统为
Ubuntu20.04
,账号密码:
账号:
root
密码:
Vulntarget@123
ps:在本次攻击中少了一次反弹
shell
的操作,主要是防止
ip
出现泄露,在攻击路径中可以不对此进行说明
2. 环境配置
2.1 阿里云ECS购买
在阿里云上选择:云服务器
ECS
选择立即购买,配置
ip
和相关信息之后,服务器配置完成,密码:
Vulntarget@666
2.2 tomcat环境配置
安装
java
环境,在这里安装
java1.8
:
apt update && apt install openjdk-8-jdk && apt install unzip -y
当然也要顺带安装
unzip
,方便解压
tomcat
的环境包:
-
vim /etc/profile
-
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
-
source /etc/profile
2.3 安装Tomcat 7
现在
Java
环境已经配置好了,接下来我们安装
Tomcat
。下载
Tomcat 7
:
wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.zip
-
unzip apache-tomcat-7.0.79.zip
-
移动Tomcat到一个合适的目录(例如:/opt/tomcat):
mv apache-tomcat-7.0.79 /opt/tomcat
-
chmod +x /opt/tomcat/bin/*.sh
2.4 设置Tomcat靶标环境
-
/opt/tomcat/bin/startup.s
-
验证Tomcat是否启动成功:
打开浏览器,访问以下地址:
http://8.*.*.136:8080/
如果看到
Tomcat
的欢迎页面,说明
Tomcat
安装和配置成功:
2.5 修改8080端口到80
cp /opt/tomcat/conf/server.xml /opt/tomcat/conf/server.xml.bak
vim /opt/tomcat/conf/server.xml
修改之后,需要重启服务,先把原来的服务关掉,然后再重启:
2.6 修改配置文件创造漏洞条件
此时需要修改
web.xml
文件:
cp web.xml web.xml.bak
vim web.xml
readonly
false
然后重启服务之后,漏洞搭建成功:
2.7 修改首页&&删除ico文件
修改后台页面为
vulntarget
后台登录界面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
html>
<html>
<head>
<meta charset="UTF-8">
<title>vulntarget后台管理系统title>
<style>
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background: linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB);
background-size: 400% 400%;
animation: gradient 15s ease infinite;
}
.login-container {
max-width: 300px;
margin: 0 auto;
padding-top: 100px;
box-sizing: border-box;
}
.login-container h1 {
text-align: center;
padding: 15px 0;
}
.login-container form {
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-sizing: border-box;
}
.login-container form input {
width: 100%;
padding: 10px;
margin-bottom: 10px;
border-radius: 5px;
border: 1px solid #ccc;
box-sizing: border-box;
}
.login-container form input[type="submit"] {
background-color: #4CAF50;
color: white;
cursor: pointer;
}
.login-container form
input[type="submit"]:hover {
background-color: #45a049;
}
style>
head>
<body>
<div class="login-container">
<h1>登录h1>
<form action="https://github.com/crow821/vulntarget" method="post">
<input type="text" name="username" placeholder="用户名" required="required" />
<input type="password" name="password" placeholder="密码" required="required" />
<input type="submit" value="登录" />
form>
div>
body>
html>
当输入账号密码之后,跳转到
vulntarget
:
2.8 设置tomcat自启动
在
crontab
里面设置:先安装
cron
:
apt-get install cron
@reboot /opt/tomcat/bin/startup.sh
重启服务器看下服务能否正常起来:
服务正常启动。
2.9 攻击
现在的日志并不多,直接放一个大马吧:
直接连接:
http://8.
.
.6/404.jsp?pwd=vulntarget&i=whoami
在这里已经可以执行命令了,在这里就不进行反弹了,会暴露
ip
,直接在原机器上进行操作。
3. 放置flag
3.1 flag1-history
在
history
里面放一个:
flag{vulntarget_very_G00d}
3.2 flag2-勒索
在这里对
tomcat
下的
index.jsp
,
jsp
后缀的文件都勒索掉:路径:
/opt/tomcat/webapps/ROOT
先生成公私钥,直接在
tmp
目录下做。
3.2.1 生成公私钥
在这里注意,命令都不能少,考察历史命令分析的能力:
import rsa
pub, priv = rsa.newkeys(1024)
pub = pub.save_pkcs1()
with open(f"./keys/pubkey.pem", mode="wb") as file:
file.write(pub)
priv = priv.save_pkcs1()
with open(f"./keys/privkey.pem", mode="wb") as file:
file.write(priv)
在这里使用
rsa
生成
1024
位的公私钥:
3.2.2 加密demo版
把公钥复制过去:
cp keys/pubkey.pem /opt/tomcat/webapps/ROOT
生成一个
flag.jsp
文件,然后准备加密:
编辑加密:
vim encrypt_vulntarget.py
(暂不提供)
在这里实现的是对当前目录下的文件进行加密操作:
此时文件加密完成,删除公钥和加密代码:
此时的界面就没了:
3.3 flag3:日志文件
找到
tomcat
的日志文件,然后放一个
flag
,在这里需要把文件编辑下,把我的本地
ip
修改掉,然后再放
flag
:
通过命令:
:%s/\(\d\+\.\d\+\.\d\+\.\d\+\)/123.123.123.123/g
将里面的所有
ip
进行替换:
再添加一个
flag
:
flag{Welcome_t0_join_Us}
此时结束。
3.4 修改index.jsp文件
在这里生成一个狠话版的
index.jsp
:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
"UTF-8">
Your Files Have Been Encrypted!
Your files have been encrypted!
To decrypt your files, please send 1 vulntarget coin to the following address:
"https://github.com/crow821/vulntarget" style="color: red;">https://github.com/crow821/vulntarget
Once the payment is confirmed, your files will be decrypted.
Remember, don't try to fool us. If you do, you will lose your files forever.
4. 云端镜像取证前准备工作
4.1 创建自定义镜像
在这里点击更多,搜索创建自定义镜像:
点击确认之后,在镜像栏等待创建成功:
过一段时间之后,刷新一下界面,如果显示可用,即代表创建成功:
4.2 镜像导出
在选择导出镜像的时候,会使用
oss
,
oss
是一项收费的服务(创建自定义镜像也是收费的):
如果没有
oss
,需要新增:
此时看到暂时未授权
ECS
对
OSS
资源的访问权限,直接根据这个提示来打开以下链接:
点击同意授权即可:
授权之后,可以看到概览:
此时回到刚刚的导出镜像页面,继续下一步:
此时导出的时候,会让你选择
OSS Bucket
,这一些列操作结束之后(此处省略,东西太多),回到对象存储的界面,找到你的
Bucket
列表,然后找到碎片管理,再点击统计:
等待一会,这个
40G
的镜像,压缩完之后,大概是
4G
左右,所以多等会。此时显示没有碎片的时候,就已经完成了:
从这里可以看到当前显示的文件名和大小:
此时点击一下详情,修改下读写权限:
此时直接使用URL进行下载,在这里可以直接复制链接在浏览器里面下载,也可以使用迅雷下载,看了很多文章,都推荐使用迅雷下载(断点续传):
https://vulntarget.oss-cn-hongkong.aliyuncs.com/vuln_m-j_system.raw.tar.gz
5. 本地环境打开镜像
将镜像导出到本地之后,需要对镜像转换,将
raw
的格式转换为
wmdk
的文件,使用
VMware
打开。
5.1 qemu格式转换
这个步骤你可以在
mac
上的
vm
虚拟机里面用
Windows
的机器来操作,也可以选择使用实体
Windows
系统的机器来操作,效果是一样的。
下载下来的文件是压缩过的,在这里将其解压:
文件解压之后,有
40
多个
G
,目前是
raw
格式,需要将其转化为
vmdk
的格式,使用
VMware
打开,在这里下载
qemu-img
软件:
下载地址:https://qemu.weilnetz.de/
在这里看到只有
win
版本的,所以在这直接选择
64
位的下载下来:
直接双击安装:
安装完成之后,需要配置相应的环境变量,如果不配置其实也可以:
新建
cmd
打开,看下
qemu-img
命令是否生效:
此时在解压之后的那个文件夹中使用该命令将
raw
格式转换为
vmdk
:
qemu-img convert -f raw raw文件名 -O vmdk 保存的vmdk文件名
qemu-img convert -f raw vulntarget.raw -O vmdk 123.vmdk
转换需要时间,等待转换完成:
转换完成的文件大概是
10g
,这时候准备使用
VMware
打开看下。