vulntarget-n靶场搭建 & write up

admin 2024年7月2日21:50:07评论2 views字数 7897阅读26分19秒阅读模式

vulntarget靶场系列仅供安全专业人员练习渗透测试技术,此靶场所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用靶场中的技术资料对任何计算机系统进行入侵操作。利用此靶场所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

vulntarget靶场系列拥有对此靶场系列的的修改、删除和解释权限,未经授权,不得用于其他!!!

靶场地址:https://github.com/crow821/vulntarget

vulntarget-n靶场搭建 & write up

1. 靶场描述

在面对勒索病毒这样的网络威胁时,我们需要了解攻击的原理和过程,熟练掌握应急响应和取证分析的技术,以便在面对真实的威胁时能够迅速有效地应对。

vulntarget-n是一个模拟全球化勒索病毒高发环境下的应急响应和取证分析案例,其模拟了一个正常运行的业务服务被勒索病毒攻击的情景:

  • 客户在阿里云部署的业务环境
  • 今天突然发现首页变成了一个勒索的界面,要求用户支付赎金以解密数据
  • 客户发现其中部分重要文件被加密为.vulntarget结尾
vulntarget-n靶场搭建 & write up

随即客户要你进行应急响应并取证分析,因为是阿里云的ECS,客户将阿里云ECS实例镜像导出到本地,要求你在明天分析出结果。

具体要求如下:

  • 分析攻击事件是如何发生的,请给出攻击画像
  • 解密勒索
  • 恢复原来的index.jsp页面,恢复正常的web服务
  • 找到隐藏在其中的3flag

已知服务器系统为Ubuntu20.04,账号密码:
账号:root
密码:Vulntarget@123

ps:在本次攻击中少了一次反弹shell的操作,主要是防止ip出现泄露,在攻击路径中可以不对此进行说明

2. 环境配置

2.1 阿里云ECS购买

在阿里云上选择:云服务器ECS

vulntarget-n靶场搭建 & write up

选择立即购买,配置ip和相关信息之后,服务器配置完成,密码:Vulntarget@666

2.2 tomcat环境配置

安装java环境,在这里安装java1.8

apt update && apt install openjdk-8-jdk && apt install unzip -y

当然也要顺带安装unzip,方便解压tomcat的环境包:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up
  1. 打开环境变量文件:
vim /etc/profile
  1. 在文件末尾添加以下行:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
vulntarget-n靶场搭建 & write up
  1. 保存并关闭文件,然后使更改生效:
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
  1. 解压Tomcat压缩包:
unzip apache-tomcat-7.0.79.zip
vulntarget-n靶场搭建 & write up
  1. 移动Tomcat到一个合适的目录(例如:/opt/tomcat):
mv apache-tomcat-7.0.79 /opt/tomcat
  1. 为Tomcat脚本赋予执行权限:
chmod +x /opt/tomcat/bin/*.sh
vulntarget-n靶场搭建 & write up

2.4 设置Tomcat靶标环境

  1. 启动Tomcat:
/opt/tomcat/bin/startup.s
vulntarget-n靶场搭建 & write up
  1. 验证Tomcat是否启动成功: 打开浏览器,访问以下地址:
http://8.*.*.136:8080/

如果看到Tomcat的欢迎页面,说明Tomcat安装和配置成功:

vulntarget-n靶场搭建 & write up

2.5 修改8080端口到80

cp /opt/tomcat/conf/server.xml /opt/tomcat/conf/server.xml.bak
vim /opt/tomcat/conf/server.xml
vulntarget-n靶场搭建 & write up

修改之后,需要重启服务,先把原来的服务关掉,然后再重启:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

2.6  修改配置文件创造漏洞条件

此时需要修改web.xml文件:

cp web.xml web.xml.bak
vim web.xml
vulntarget-n靶场搭建 & write up
<init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
</init-param>

然后重启服务之后,漏洞搭建成功:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

2.7 修改首页&&删除ico文件

修改后台页面为vulntarget后台登录界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>vulntarget后台管理系统</title>
    <style>
        @keyframes gradient {
            0% {
                background-position0% 50%;
            }
            50% {
                background-position100% 50%;
            }
            100% {
                background-position0% 50%;
            }
        }
        body {
            font-family: Arial, sans-serif;
            margin0;
            padding0;
            backgroundlinear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB);
            background-size400% 400%;
            animation: gradient 15s ease infinite;
        }
        .login-container {
            max-width300px;
            margin0 auto;
            padding-top100px;
            box-sizing: border-box;
        }
        .login-container h1 {
            text-align: center;
            padding15px 0;
        }
        .login-container form {
            background-color#fff;
            padding20px;
            border-radius5px;
            box-sizing: border-box;
        }
        .login-container form input {
            width100%;
            padding10px;
            margin-bottom10px;
            border-radius5px;
            border1px 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-n靶场搭建 & write up

当输入账号密码之后,跳转到vulntarget

vulntarget-n靶场搭建 & write up

2.8 设置tomcat自启动

crontab里面设置:先安装cron

apt-get install cron
@reboot /opt/tomcat/bin/startup.sh
vulntarget-n靶场搭建 & write up

重启服务器看下服务能否正常起来:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

服务正常启动。

2.9 攻击

现在的日志并不多,直接放一个大马吧:

vulntarget-n靶场搭建 & write up

直接连接:

http://8...6/404.jsp?pwd=vulntarget&i=whoami

vulntarget-n靶场搭建 & write up

在这里已经可以执行命令了,在这里就不进行反弹了,会暴露ip,直接在原机器上进行操作。

vulntarget-n靶场搭建 & write up

3. 放置flag

3.1  flag1-history

history里面放一个:

flag{vulntarget_very_G00d}
vulntarget-n靶场搭建 & write up

3.2 flag2-勒索

在这里对tomcat下的index.jspjsp后缀的文件都勒索掉:路径:/opt/tomcat/webapps/ROOT先生成公私钥,直接在tmp目录下做。

3.2.1 生成公私钥

在这里注意,命令都不能少,考察历史命令分析的能力:

vulntarget-n靶场搭建 & write up
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位的公私钥:

vulntarget-n靶场搭建 & write up

3.2.2 加密demo版

把公钥复制过去:

cp keys/pubkey.pem /opt/tomcat/webapps/ROOT
vulntarget-n靶场搭建 & write up

生成一个flag.jsp文件,然后准备加密:

vulntarget-n靶场搭建 & write up

编辑加密:vim encrypt_vulntarget.py(暂不提供)

在这里实现的是对当前目录下的文件进行加密操作:

vulntarget-n靶场搭建 & write up

此时文件加密完成,删除公钥和加密代码:

此时的界面就没了:

vulntarget-n靶场搭建 & write up

3.3 flag3:日志文件

找到tomcat的日志文件,然后放一个flag,在这里需要把文件编辑下,把我的本地ip修改掉,然后再放flag

通过命令:

:%s/(d+.d+.d+.d+)/123.123.123.123/g

将里面的所有ip进行替换:

vulntarget-n靶场搭建 & write up

再添加一个flag

flag{Welcome_t0_join_Us}
此时结束。

3.4 修改index.jsp文件

在这里生成一个狠话版的index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Your Files Have Been Encrypted!</title>
    <style>
        body {
            background-color: black;
            color: red;
            font-family: Arial, sans-serif;
            text-align: center;
        }
        h1 {
            margin-top: 20%;
        }
    </style>
</head>
<body>
    <h1>Your files have been encrypted!</h1>
    <p>To decrypt your files, please send 1 vulntarget coin to the following address:</p>
    <p><a href="https://github.com/crow821/vulntarget" style="color: red;">https://github.com/crow821/vulntarget</a></p>
    <p>Once the payment is confirmed, your files will be decrypted.</p>
    <p>Remember, don't try to fool us. If you do, you will lose your files forever.</p>
</body>
</html>
vulntarget-n靶场搭建 & write up

4. 云端镜像取证前准备工作

4.1 创建自定义镜像

在这里点击更多,搜索创建自定义镜像:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

点击确认之后,在镜像栏等待创建成功:

vulntarget-n靶场搭建 & write up

过一段时间之后,刷新一下界面,如果显示可用,即代表创建成功:

vulntarget-n靶场搭建 & write up

4.2 镜像导出

vulntarget-n靶场搭建 & write up

在选择导出镜像的时候,会使用ossoss是一项收费的服务(创建自定义镜像也是收费的):

vulntarget-n靶场搭建 & write up

如果没有oss,需要新增:

vulntarget-n靶场搭建 & write up

此时看到暂时未授权ECSOSS资源的访问权限,直接根据这个提示来打开以下链接:vulntarget-n靶场搭建 & write up

点击同意授权即可:

vulntarget-n靶场搭建 & write up

授权之后,可以看到概览:

vulntarget-n靶场搭建 & write up

此时回到刚刚的导出镜像页面,继续下一步:

vulntarget-n靶场搭建 & write up

此时导出的时候,会让你选择OSS Bucket,这一些列操作结束之后(此处省略,东西太多),回到对象存储的界面,找到你的Bucket列表,然后找到碎片管理,再点击统计:

vulntarget-n靶场搭建 & write up

等待一会,这个40G的镜像,压缩完之后,大概是4G左右,所以多等会。此时显示没有碎片的时候,就已经完成了:

vulntarget-n靶场搭建 & write up

从这里可以看到当前显示的文件名和大小:

vulntarget-n靶场搭建 & write up

此时点击一下详情,修改下读写权限:

vulntarget-n靶场搭建 & write up

此时直接使用URL进行下载,在这里可以直接复制链接在浏览器里面下载,也可以使用迅雷下载,看了很多文章,都推荐使用迅雷下载(断点续传):

https://vulntarget.oss-cn-hongkong.aliyuncs.com/vuln_m-j_system.raw.tar.gz
vulntarget-n靶场搭建 & write up

5. 本地环境打开镜像

将镜像导出到本地之后,需要对镜像转换,将raw的格式转换为wmdk的文件,使用VMware打开。

5.1 qemu格式转换

这个步骤你可以在mac上的vm虚拟机里面用Windows的机器来操作,也可以选择使用实体Windows系统的机器来操作,效果是一样的。

下载下来的文件是压缩过的,在这里将其解压:

vulntarget-n靶场搭建 & write up

文件解压之后,有40多个G,目前是raw格式,需要将其转化为vmdk的格式,使用VMware打开,在这里下载qemu-img软件:

下载地址:https://qemu.weilnetz.de/

在这里看到只有win版本的,所以在这直接选择64位的下载下来:

vulntarget-n靶场搭建 & write up

直接双击安装:

vulntarget-n靶场搭建 & write up

安装完成之后,需要配置相应的环境变量,如果不配置其实也可以:

vulntarget-n靶场搭建 & write up

新建cmd打开,看下qemu-img命令是否生效:

vulntarget-n靶场搭建 & write up

此时在解压之后的那个文件夹中使用该命令将raw格式转换为vmdk

qemu-img convert -f raw raw文件名 -O vmdk 保存的vmdk文件名

qemu-img convert -f raw vulntarget.raw -O vmdk 123.vmdk
vulntarget-n靶场搭建 & write up

转换需要时间,等待转换完成:

vulntarget-n靶场搭建 & write up

转换完成的文件大概是10g,这时候准备使用VMware打开看下。

5.2 VMware Fusion-mac下打开

vulntarget-n靶场搭建 & write up

创建自定义虚拟机:

vulntarget-n靶场搭建 & write up

选择操作系统:

vulntarget-n靶场搭建 & write up

默认:

vulntarget-n靶场搭建 & write up

选择现有虚拟磁盘:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

然后存储选择和命令:

vulntarget-n靶场搭建 & write up

设置好之后,跑一下看看:

vulntarget-n靶场搭建 & write up

以前做的大概需要好久才可以进入界面,但是这次很快就可以进去了:

vulntarget-n靶场搭建 & write up

至此,导入到本地成功。

6. 取证分析

打开之后,发现已经被勒索:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

6.1 history分析

先分析下history,在这里直接将history到处到1.txt里面看:

vulntarget-n靶场搭建 & write up

此时获取到了第一个flag,再分析下当前root用户做了哪些操作:

在这里看到,对首页进行了备份,然后新增了一个首页:

vulntarget-n靶场搭建 & write up

vulntarget.jsp修改为了404.jsp,应该是一个后门,到时候结合日志进行分析。

在这里看到生成了一个公私钥,并且使用了一个加密,找下这两个公私钥是否存在:

vulntarget-n靶场搭建 & write up

从这里看到,当前的公钥还没删,当然私钥也没删,应该是可以恢复数据的(/tmp目录是我自己刚刚复制出来的,忽略):

vulntarget-n靶场搭建 & write up

在这来看下,先恢复数据吧,把根目录的.vulntarget结尾的文件和公私钥都复制到tmp目录去,然后分析。

6.2 勒索解密

vulntarget-n靶场搭建 & write up

分析密钥应该是只做了rsa一次加密,在这里尝试解密:本地做一个程序,然后直接解密试试:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

解密成功,并且获取的一个关键的flag

6.3 恢复页面

将已经恢复的index.jsp界面恢复到根目录中:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

此时界面恢复成功。

6.4 分析日志

vulntarget-n靶场搭建 & write up

将日志文件拷贝,在主机上进行分析:

vulntarget-n靶场搭建 & write up
vulntarget-n靶场搭建 & write up

在这里发现了最后一个flag

结合history和日志来进行分析:在这里发现了一个put了一个vulntarget.jsp文件,然后找到这个文件看下:

vulntarget-n靶场搭建 & write up

显示信息是:hack by crow

vulntarget-n靶场搭建 & write up

明显就是攻击信息了,而且写入成功。

后面又写入了一个vulntargetn.jsp文件:

vulntarget-n靶场搭建 & write up

这个文件后面又经过history里面的命令,将该文件重命名为404.jsp

vulntarget-n靶场搭建 & write up

看下这个文件:

vulntarget-n靶场搭建 & write up

这是一个小马文件,从日志里面也可以看到当前执行的命令:

vulntarget-n靶场搭建 & write up

至此分析完成。

6.5 攻击路径

其实在这里少了一个反弹shell,之所以没有反弹shell,主要是防止靶场制作者信息泄露:攻击路径如下:

  • 攻击者通过tomcatput漏洞上传了一个shell
  • 通过shell执行了命令
  • 通过shell拿到权限(该条暂时缺失,没有反弹shell
  • 通过命令在受害者机器上生成了rsa的公私钥
  • 通过公钥对于关键数据进行了加密
  • 攻击者忘记删除了生成的公私钥
  • 通过执行命令将index.jsp文件替换为勒索界面

原文始发于微信公众号(合天网安实验室):vulntarget-n靶场搭建 & write up

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日21:50:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   vulntarget-n靶场搭建 & write uphttps://cn-sec.com/archives/2910695.html

发表评论

匿名网友 填写信息