freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

模拟全球化勒索病毒——应急响应和取证分析案例
2024-06-07 18:26:09

一、前言

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

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 命令历史分析

1717751347_6662ce338a1f57800a0f8.png!small?1717751349568

这些整个"/root/.bash_history"文件具体操作包括以下内容,按照顺序操作:

  1. 更新apt源并安装openjdk-8-jdk和unzip软件包。

  2. 使用vim编辑/etc/profile文件。

  3. 执行source命令以使更改生效。

  4. 使用wget下载Apache Tomcat 7.0.79版本。

  5. 使用unzip解压下载的Tomcat压缩文件。

  6. 将解压后的Tomcat文件夹移动到/opt目录下。

  7. 为Tomcat的可执行脚本添加执行权限。

  8. 查看当前目录下的文件列表。

  9. 查看命令历史记录。

  10. 输出"flag{vulntarget_very_G00d}"。

  11. 启动Tomcat服务器。

  12. 备份Tomcat的server.xml配置文件。

  13. 使用vim编辑Tomcat的server.xml配置文件。

  14. 查看正在运行的Tomcat进程。

  15. 杀死指定的Tomcat进程。

  16. 再次启动Tomcat服务器。

  17. 备份web.xml配置文件。

  18. 查看当前工作目录的绝对路径。

  19. 切换到上一级目录。

  20. 列出当前目录下的文件列表。

  21. 切换到/opt目录。

  22. 列出/opt目录下的文件列表。

  23. 切换到Tomcat目录。

  24. 列出Tomcat目录下的文件列表。

  25. 切换到Tomcat的conf目录。

  26. 备份web.xml配置文件。

  27. 使用vim编辑web.xml配置文件。

  28. 再次查看正在运行的Tomcat进程。

  29. 再次杀死指定的Tomcat进程。

  30. 再次启动Tomcat服务器。

  31. 查看当前工作目录的绝对路径。

  32. 切换到上一级目录。

  33. 列出当前目录下的文件列表。

  34. 切换到webapps目录。

  35. 列出webapps目录下的文件列表。

  36. 切换到ROOT目录。

  37. 列出ROOT目录下的文件列表。

  38. 删除favicon.ico文件。

  39. 备份index.jsp文件。

  40. 再次查看当前目录下的文件列表。

  41. 使用vim编辑index.jsp文件。

  42. 删除index.jsp文件。

  43. 再次使用vim编辑index.jsp文件。

  44. 编辑cron任务。

  45. 查看命令历史记录。

  46. 再次列出当前目录下的文件列表。

  47. 将vulntargetn.jsp文件重命名为404.jsp。

  48. 再次列出当前目录下的文件列表。

  49. 删除index.jsp.bak文件。

  50. 使用pip3安装rsa包。

  51. 再次列出当前目录下的文件列表。

  52. 列出当前目录下的所有文件,并显示详细信息。

  53. 创建.vulntarget隐藏目录。

  54. 进入.vulntarget目录。

  55. 列出.vulntarget目录下的文件列表。

  56. 创建keys目录。

  57. 再次列出.vulntarget目录下的文件列表。

  58. 查看命令历史记录。

  59. 再次列出当前目录下的文件列表。

  60. 使用vim编辑get_pem.py文件。

  61. 运行get_pem.py文件。

  62. 再次列出当前目录下的文件列表。

  63. 删除get_pem.py文件。

  64. 再次列出当前目录下的文件列表。

  65. 返回上一级目录。

  66. 列出当前目录下的文件列表。

  67. 将.pubkey.pem文件复制到当前目录。

  68. 再次列出当前目录下的文件列表。

  69. 使用grep命令查找包含"jsp"的文件。

  70. 使用vim编辑encrypt_vulntarget.py文件。

  71. 再次列出当前目录下的文件列表。

  72. 使用vim编辑flag.jsp文件。

  73. 再次查找包含"jsp"的文件。

  74. 运行encrypt_vulntarget.py文件。

  75. 再次列出当前目录下的文件列表。

  76. 进入.vulntarget目录。

  77. 列出.vulntarget目录下的文件列表。

  78. 进入keys目录。

  79. 列出keys目录下的文件列表。

  80. 查看pubkey.pem文件的内容。

  81. 查看privkey.pem文件的内容。

  82. 返回上一级目录。

  83. 列出当前目录下的文件列表。

  84. 返回上一级目录。

  85. 列出当前目录下的文件列表。

  86. 返回上一级目录。

  87. 删除encrypt_vulntarget.py文件。

  88. 删除pubkey.pem文件。

  89. 再次列出当前目录下的文件列表。

  90. 使用vim编辑index.jsp文件。

  91. 再次列出当前目录下的文件列表。

  92. 返回上一级目录。

  93. 列出当前目录下的文件列表。

  94. 返回上一级目录。

  95. 列出当前目录下的文件列表。

  96. 进入logs目录。

  97. 列出logs目录下的文件列表。

  98. 查看localhost_access_log.2024-06-04.txt文件的内容。

  99. 使用vim编辑localhost_access_log.2024-06-04.txt文件。

  100. 再次列出当前目录下的文件列表。

  101. 再次使用vim编辑localhost_access_log.2024-06-04.txt文件。

  102. 再次列出当前目录下的文件列表。

  103. 查看命令历史记录。

  104. 使用curl访问本地主机。

  105. 再次列出当前目录下的文件列表。

  106. 返回主目录。

  107. 列出主目录下的文件列表。

  108. 列出主目录下的所有文件,并显示详细信息。

  109. 查看.bashrc文件的内容。

  110. 再次列出主目录下的文件列表。

  111. 将命令历史记录保存到.bash_history文件中。

第一个Flag:

在"/root/.bash_history"文件中也就是11行,输出了第一个:flag{vulntarget_very_G00d}

1717751578_6662cf1a486ea8ffa5150.png!small?1717751583412

第二个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 -

利用过程复现:

版本查询,输入不存的文件路径,会返回包含版本信息的错误页面。


# 渗透测试 # 黑客 # 网络安全 # web安全 # 系统安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录