一、前言
在面对勒索病毒这样的网络威胁时,我们不能被动等待,而要积极应对。我们需要了解攻击的原理和过程,熟练掌握应急响应和取证分析的技术,以便在面对真实的威胁时能够迅速有效地应对。
vulntarget-n是一个模拟全球化勒索病毒高发环境下的应急响应和取证分析案例,其模拟了一个正常运行的业务服务被勒索病毒攻击的情景:
● 客户在阿里云部署的业务环境
● 今天突然发现首页变成了一个勒索的界面,要求用户支付赎金以解密数据。
● 客户发现其中部分重要文件被加密为.vulntarget结尾。
随即客户要你进行应急响应并取证分析,因为是阿里云的ECS,客户将阿里云ECS实例镜像导出到本地,要求你在明天分析出结果。
具体要求如下:
● 分析攻击事件是如何发生的,请给出攻击画像
● 恢复原来的index.jsp页面,恢复正常的web服务
● 找到隐藏在其中的3个flag
已知服务器账号密码:
账号:root
密码:Vulntarget@123
二、排查
查看系统日志,尤其是认证日志(如/var/log/auth.log
)和系统日志(如/var/log/syslog
或/var/log/messages
)。查找有关登录尝试、sudo命令、异常进程启动等的记录。
还有还有一个是"/root/.bash_history"文件,一个位于Linux系统中的文件,用于存储用户在命令行终端中输入的历史命令记录。每当用户在命令行终端中输入并执行一个命令时,该命令都会被记录到".bash_history"文件中,以便用户可以随时查看和重新执行之前执行过的命令。这对于追踪和管理命令历史非常有用。
三、/root/.bash_history 命令历史分析
这些整个"/root/.bash_history"文件具体操作包括以下内容,按照顺序操作:
更新apt源并安装openjdk-8-jdk和unzip软件包。
使用vim编辑/etc/profile文件。
执行source命令以使更改生效。
使用wget下载Apache Tomcat 7.0.79版本。
使用unzip解压下载的Tomcat压缩文件。
将解压后的Tomcat文件夹移动到/opt目录下。
为Tomcat的可执行脚本添加执行权限。
查看当前目录下的文件列表。
查看命令历史记录。
输出"flag{vulntarget_very_G00d}"。
启动Tomcat服务器。
备份Tomcat的server.xml配置文件。
使用vim编辑Tomcat的server.xml配置文件。
查看正在运行的Tomcat进程。
杀死指定的Tomcat进程。
再次启动Tomcat服务器。
备份web.xml配置文件。
查看当前工作目录的绝对路径。
切换到上一级目录。
列出当前目录下的文件列表。
切换到/opt目录。
列出/opt目录下的文件列表。
切换到Tomcat目录。
列出Tomcat目录下的文件列表。
切换到Tomcat的conf目录。
备份web.xml配置文件。
使用vim编辑web.xml配置文件。
再次查看正在运行的Tomcat进程。
再次杀死指定的Tomcat进程。
再次启动Tomcat服务器。
查看当前工作目录的绝对路径。
切换到上一级目录。
列出当前目录下的文件列表。
切换到webapps目录。
列出webapps目录下的文件列表。
切换到ROOT目录。
列出ROOT目录下的文件列表。
删除favicon.ico文件。
备份index.jsp文件。
再次查看当前目录下的文件列表。
使用vim编辑index.jsp文件。
删除index.jsp文件。
再次使用vim编辑index.jsp文件。
编辑cron任务。
查看命令历史记录。
再次列出当前目录下的文件列表。
将vulntargetn.jsp文件重命名为404.jsp。
再次列出当前目录下的文件列表。
删除index.jsp.bak文件。
使用pip3安装rsa包。
再次列出当前目录下的文件列表。
列出当前目录下的所有文件,并显示详细信息。
创建.vulntarget隐藏目录。
进入.vulntarget目录。
列出.vulntarget目录下的文件列表。
创建keys目录。
再次列出.vulntarget目录下的文件列表。
查看命令历史记录。
再次列出当前目录下的文件列表。
使用vim编辑get_pem.py文件。
运行get_pem.py文件。
再次列出当前目录下的文件列表。
删除get_pem.py文件。
再次列出当前目录下的文件列表。
返回上一级目录。
列出当前目录下的文件列表。
将.pubkey.pem文件复制到当前目录。
再次列出当前目录下的文件列表。
使用grep命令查找包含"jsp"的文件。
使用vim编辑encrypt_vulntarget.py文件。
再次列出当前目录下的文件列表。
使用vim编辑flag.jsp文件。
再次查找包含"jsp"的文件。
运行encrypt_vulntarget.py文件。
再次列出当前目录下的文件列表。
进入.vulntarget目录。
列出.vulntarget目录下的文件列表。
进入keys目录。
列出keys目录下的文件列表。
查看pubkey.pem文件的内容。
查看privkey.pem文件的内容。
返回上一级目录。
列出当前目录下的文件列表。
返回上一级目录。
列出当前目录下的文件列表。
返回上一级目录。
删除encrypt_vulntarget.py文件。
删除pubkey.pem文件。
再次列出当前目录下的文件列表。
使用vim编辑index.jsp文件。
再次列出当前目录下的文件列表。
返回上一级目录。
列出当前目录下的文件列表。
返回上一级目录。
列出当前目录下的文件列表。
进入logs目录。
列出logs目录下的文件列表。
查看localhost_access_log.2024-06-04.txt文件的内容。
使用vim编辑localhost_access_log.2024-06-04.txt文件。
再次列出当前目录下的文件列表。
再次使用vim编辑localhost_access_log.2024-06-04.txt文件。
再次列出当前目录下的文件列表。
查看命令历史记录。
使用curl访问本地主机。
再次列出当前目录下的文件列表。
返回主目录。
列出主目录下的文件列表。
列出主目录下的所有文件,并显示详细信息。
查看.bashrc文件的内容。
再次列出主目录下的文件列表。
将命令历史记录保存到.bash_history文件中。
第一个Flag:
在"/root/.bash_history"文件中也就是11行,输出了第一个:flag{vulntarget_very_G00d}
第二个Flag:
root@iZj6c6hytildlalnu0cwt4Z:/opt/tomcat/webapps/ROOT# ls 404.jsp.vulntarget bg-button.png bg-nav-item.png bg-upper.png index.jsp RELEASE-NOTES.txt tomcat.gif tomcat-power.gif vulntarget.jsp.vulntarget asf-logo-wide.svg bg-middle.png bg-nav.png flag.jsp.vulntarget index.jsp.vulntarget tomcat.css tomcat.png tomcat.svg WEB-INF
这里一共发现三个被加密的文件,分别是404.jsp.vulntarget、vulntarget.jsp.vulntarget、flag.jsp.vulntarget、index.jsp.vulntarget(其中的第二个Flag文件被加密)。返回"/root/.bash_history"文件第51行,安装了rsa
51 pip3 install rsa
创建一个.vulntarget隐藏目录
54 mkdir .vulntarget 55 cd .vulntarget/
储存了私钥和公钥
79 cd keys/ 80 ls 81 cat pubkey.pem 82 cat privkey.pem
根据命令历史目录和秘钥的路径,获取私钥进行解密
root@iZj6c6hytildlalnu0cwt4Z:/opt/tomcat/webapps/ROOT# cat flag.jsp.vulntarget Au+XkLqSjNieysLjjYxz9/XKnZ0l5iyhvBi4/zXw7LBBD/LykamEm5MrEIboYoL/zYE+AhvCf2a84e9ApJxsBrzcwCLSxv77dbkqzLy9+W127e1k0iz+1SM60W2315Yq1aYeEWcznVrzY9qrjtv/eXXOVEMUHONm3VLCs3mHDc0=
flag{https://github.com/crow821/vulntarget}
第三个flag:
在/opt/tomcat/logs文件下的localhost_access_log.2024-06-04.txt文本中,第544行发现第三个Flag。
四、恢复原来的index.jsp页面
先访问原始的页面:
解密环节:在/opt/tomcat/webapps/ROOT目录下的一个index.jsp.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-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>
五、分析攻击事件
在/opt/tomcat/webapps/ROOT目录下有一个404.jsp.vulntarget文件,解密之后发现是JSP马!解密复原一下命令执行的操作!
首先我是想到了日志localhost_access_log.2024-06-04.txt,木马 404.jsp.vulntarget 是在 2024 年 6 月 4 日下午 2 点 27 分 15 秒被上传到服务器上,所以暂时用这个思路。发现全是API扫描,并没有发现其它的动作,然后在最下面找了第三个Flag!
123.123.123.123 - - [04/Jun/2024:14:33:57 +0800] "GET /vulntargetn.jsp?pwd=vulntarget&i=whoami HTTP/1.1" 200 2060
2024年6月4日的14:33:57时,通过GET请求访问了/vulntargetn.jsp
页面,并附带了参数pwd=vulntarget&i=whoami
。服务器返回了状态码200,请求成功,并且返回的内容大小为2060字节。这里可以判断vulntargetn.jsp就是404.jsp.vulntarget文件,在命令历史分析的第47:将vulntargetn.jsp文件重命名为404.jsp,然后在进行对文件进行加密。
然后在第144行中发现了一个PUT标头,响应为201的状态码,通过当前的Apache Tomcat/7.0.79是存在Tomcat代码执行漏洞(CVE-2017-12615)漏洞。
123.123.123.123 - - [04/Jun/2024:14:31:18 +0800] "PUT /vulntarget.jsp/ HTTP/1.1" 201 -
利用过程复现:
版本查询,输入不存的文件路径,会返回包含版本信息的错误页面。