记一次应急响应靶场学习

admin 2024年8月6日14:50:10评论31 views字数 3082阅读10分16秒阅读模式
记一次应急响应靶场学习

一、项目背景:

vulntarget-n是一个模拟全球化勒索病毒高发环境下的应急响应和取证分析案例,其模拟了一个正常运行的业务服务被勒索病毒攻击的情景:
01、客户在阿里云部署的业务环境
02、今天突然发现首页变成了一个勒索的界面,要求用户支付赎金以解密数据
03、客户发现其中部分重要文件被加密为.vulntarget结尾

记一次应急响应靶场学习

随即客户要你进行应急响应并取证分析,因为是阿里云的ECS,客户将阿里云ECS实例镜像导出到本地,要求你在明天分析出结果。
具体要求如下:
01、分析攻击事件是如何发生的,请给出攻击画像
02、解密勒索
03、恢复原来的index.jsp页面,恢复正常的web服务

二、环境配置:

A、靶场下载:

链接: https://pan.baidu.com/s/1sv9qdioNF4PTUliix5HEfg提取码: 2dwq

B、格式转换:

使用镜像格式转换将原本的RAW格式转换成虚拟机的VMDK格式

相关文档说明:https://help.aliyun.com/zh/ecs/user-guide/convert-the-format-of-an-image

工具下载地址:https://qemu.weilnetz.de/w64/

格式转换命令:qemu-img convert -f raw -O vmdk .vuln_m-j6cegcrhehdcba0r5h4v_system.raw vuln_m-j6cegcrhehdcba0r5h4v_system.vmdk



最后转换完成后会产生一个.vmdk的虚拟文件

记一次应急响应靶场学习

C、新建虚拟机:

选择:“稍后安装操作系统”,选择linux类型的Ubuntu系统,磁盘选择:现有磁盘,然后找到刚才转换的VMDK镜像。

记一次应急响应靶场学习

D、云服务器配置:

账号:root

密码:Vulntarget@123

三、应急响应/取证:

A、vulntarget文件查找:

首先我们可以从项目背景中得到一个有用的信息就是客户的重要文件被加密成了.vulntarget结尾,可以直接在服务器上查询一下带有vulntarget的文件

命令:find / -name *vulntarget*解释:直接搜索服务器上带有vulntarget的文件(模糊查询)

01、查找结果:

我们可以发现客户是使用的tomcat中间件进行部署的且安装目录在opt下

记一次应急响应靶场学习

02、Tomcat版本:

可以直接在当前用户的home目录下执行ls命令发现zip的安装包

记一次应急响应靶场学习

B、查看Tomcat日志:

01、catalina是tomcat自己的一些配置日志,暂时不用管;

02、主要看localhost_access_log日志信息;

记一次应急响应靶场学习

03、可以发现有六百多条日志内容,日志相对来说不是特别多;

记一次应急响应靶场学习

C、日志筛选:

首先筛选一下日志信息,因为一般攻击者都会上传webshell或者首先查询POST、PUT等请求,然后再筛选状态码200的代表成功。

01、POST排除:

可以发现攻击者有在尝试POST上传文件但是并没有成功,所以不是POST

记一次应急响应靶场学习

02、PUT确定:

当我们筛选PUT请求的时候发现改jsp文件上传成功了且状态码为201,并且攻击者还访问过vulntarget.jsp文件且状态码为200;

201状态码:请求成功并且服务器创建了新的资源;

记一次应急响应靶场学习

D、tomcat上传漏洞复现:

BurpSuite测试:

记一次应急响应靶场学习

访问:

记一次应急响应靶场学习

从日志分析可知,攻击者通过tomcat中间件的历史漏洞(CVE-2017-12615)上传了恶意JSP文件到服务器,从而获得服务器权限。

E、root权限:

通过命令查看Tomcat中间件的进程信息发现是root权限,所以基本上可以知道攻击者获得了服务器的root权限;

命令:ps -aux | grep tomcat

记一次应急响应靶场学习

记一次应急响应靶场学习

F、history历史命令:

01、反弹shell:

在获得root权限后一般攻击者会进行反弹shell的操作,可以通过history命令查看历史命令的使用情况(这里由于不方便显示IP用的flag代替)

记一次应急响应靶场学习

02、rsa加密:

通过历史命令的查看发现了攻击者通过python对文件进行了rsa加密(包含私钥、公钥创建以及存储路径)

记一次应急响应靶场学习

03、删除文件:

然后删除了当前目录下公钥、加密脚本等;

记一次应急响应靶场学习

G、得到私/公钥:

但是通过history的查看发现在/opt/tomcat/webapps/ROOT/.vulntarget目录中存在公钥、加密脚本文件等。

记一次应急响应靶场学习

记一次应急响应靶场学习

1、解密flag.jsp.vulntarget文件:

通过在线平台进行rsa解密第一个flag.jsp.vulntarget文件

记一次应急响应靶场学习

2、解密vulntarget.jsp.vulntarget文件:

通过在线平台进行rsa解密第二个vulntarget.jsp.vulntarget文件

记一次应急响应靶场学习

3、小问题:

但是后续其它文件通过这种方法无法进行解密因为长度问题,没有数据,只有简单写个py脚本进行解密

完整代码:

import rsa  import base64  

PRIVATE_KEY_FILE = "./privkey.pem"  

ENCRYPTED_FILE = "./1.txt"  

DECRYPTED_FILE = ENCRYPTED_FILE.replace(".encrypted", "")  

with open(PRIVATE_KEY_FILE, mode='rb') as file:      private_key = rsa.PrivateKey.load_pkcs1(file.read())  

with open(ENCRYPTED_FILE, mode='r') as file:      encrypted_data = file.read()  decoded_data = base64.b64decode(encrypted_data)  

decrypted_blocks = []  for i in range(0, len(decoded_data), BLOCK_SIZE):      block = decoded_data[i:i + BLOCK_SIZE]      try:          decrypted_block = rsa.decrypt(block, private_key)          decrypted_blocks.append(decrypted_block)      except rsa.pkcs1.DecryptionError:          print(f"Decryption failed for block at index {i}")          break    

decrypted_data = b''.join(decrypted_blocks)  

with open(DECRYPTED_FILE, mode='wb') as file:      file.write(decrypted_data)

print(f"{DECRYPTED_FILE} 文件解密成功")

4、解密index.jsp.vulntarget文件:

通过编写python脚本解密第三个index.jsp.vulntarget文件

记一次应急响应靶场学习

5、解密404.jsp.vulntarget文件:

通过编写python脚本解密第四个404.jsp.vulntarget文件

记一次应急响应靶场学习

H、业务恢复:

01、index.jsp代码替换:

将解密后的index.jsp替换服务器中的文件即可恢复正常业务,并将其它文件进行替换即可。

记一次应急响应靶场学习

I、后门文件:

解密后的 404.jsp 也对应了 history 里面的命令记录,将后门文件伪装成404页面。

记一次应急响应靶场学习

四、攻击者画像:

记一次应急响应靶场学习

五、总结:

本次勒索事件整体并不是和难,但是这些勒索事件都是很接近实际的,企业应该重视这些安全事件,大部分都是由于没有及时更新版本或者配置从而导致攻击者有可乘之机,进而一步造成勒索事件的发生。

原文始发于微信公众号(青春计协):记一次应急响应靶场学习

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月6日14:50:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次应急响应靶场学习http://cn-sec.com/archives/3039260.html

发表评论

匿名网友 填写信息