当前位置: 首页 > news >正文

基于WebSocket的命令与控制工具WSC2详解

命令与控制与WebSocket:WSC2

这一切始于我与几位BHIS测试人员的讨论。当时我正在测试一个使用WebSocket的Web应用程序,该应用让我头疼不已,我正在宣泄挫折感。渗透测试人员、红队和攻击者始终在寻找绕过防御的新方法。因此,讨论转向如何将这些挑战用于进攻能力也就不足为奇了。有人提到,拥有一个使用WebSocket的命令与控制(C2)通道会非常酷。在我们深入探讨为什么这很酷之前,我们应该仔细看看WebSocket协议。

WebSocket并不是那么新。该协议最初出现在2000年代中后期的HTML5中。它获得了开发者的青睐,开始随浏览器一起发布,并于2011年最终确定了规范(RFC 6455)。WebSocket协议通过TCP在服务器和客户端之间促进全双工通信通道。这使得客户端和服务器之间能够实现真正的异步通信。这与HTTP协议的请求/响应性质大不相同。在WebSocket之前,实现“异步”通信最流行的方法是使用AJAX。但AJAX仍然依赖于客户端轮询服务器,因此它实际上只是半双工。WebSocket允许服务器随意向客户端发送消息,反之亦然。

跟踪异步通信的流程比跟踪传统HTTP请求和响应的流程稍微困难一些。此外,使用WebSocket发送的数据格式几乎完全由应用程序开发者指定。正如我所发现的,这些因素使得测试使用WebSocket的应用程序更具挑战性。这也意味着防御者需要检查Web流量时要做更多的工作!因此,我们的想法是,我们可以使用WebSocket建立一个可能不会受到太多审查的命令与控制通道。

幸运的是,@Arno0x0x在这方面远远领先于我们,并编写了一个名为WSC2的工具,该工具可在GitHub上找到:https://github.com/Arno0x/WSC2。还有一篇很棒的博客文章介绍了该工具:https://arno0x0x.wordpress.com/2017/11/10/using-websockets-and-ie-edge-for-c2-communications/。

让我们来试试WSC2!该工具几乎在克隆到攻击服务器后即可使用。像C2服务器的IP地址这样的细节在一个名为config.py的配置文件中管理。我对此文件做了一些修改,比如配置回调指向我的命令与控制服务器,并设置新密码。

启动后,我发现WSC2的控制器组件直观且类似于我以前使用的其他C2应用程序。WSC2带有几个stager payload,但我决定使用PowerShell一行stager在Windows 10受害机器上启动一个代理。由于回调配置已经在单独的文件中处理,生成payload就像启动WSC2控制器并输入“genStager psoneliner”一样快。剩下的就是在我的受害机器上运行PowerShell一行命令。我立即得到了代理回调的回报!以下截图从控制器的角度显示了整个过程。

WSC2代理本身并没有包含大量功能。它确实允许你上传和下载文件到受害机器,以及进入shell并在远程主机上执行命令。

WSC2代理的一个有趣之处是,它通过Internet Explorer/Edge使用COM对象与C2服务器通信。@Arno0x0x添加这一点是为了规避EDR,我认为这很酷。为了演示目的,我在受害机器上运行了Process Monitor(Windows Sysinternals Suite的一部分)来观察代理运行时参与网络通信的进程。果然,我所有的代理流量都显示为IEXPLORE.EXE。

我将Internet Explorer配置为通过受害端的Burp Suite代理流量。这使我能够看到从HTTP到WebSocket的连接升级。

我们还可以使用Burp Suite来查看向代理发出命令时生成的WebSocket流量。

使用WebSocket进行命令与控制应该是渗透测试人员、红队和防御者考虑的事情。WSC2使得在你的环境中建立WebSocket命令与控制通道来测试你的监控和防御解决方案快速而简单。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.wxhsa.cn/company.asp?id=5501

相关文章:

  • LocalDateTime节日和平日在时间占比计算方法
  • JSON字符串转换List对象列表 JSONArray toJavaList
  • vue3 使用 docx-preview 预览 Word文档
  • 数据库原理-第三章——SQL
  • 啥是CPU
  • C# Avalonia 15- Animation- CodeAnimation
  • ubuntu 18.04安装mysql 8.0.41
  • Topaz Photo AI Pro 4.0.4 AI图片智能降噪(win版)
  • 阿里云基础设施 AI Tech Day AI 原生,智构未来——AI 原生架构与企业实践专场
  • 实用指南:LINUX910 CENTOS8 新建虚拟机;重设root密码/时间同步
  • 零基础学习PYthon记录
  • C++ std::unordered_set
  • 如何将一个项目同时提交到GitHub和Gitee(码云)上
  • 基于Matlab的LeNet-5车牌字符识别系统实现
  • MATLAB的交通标志牌识别实现
  • Python常见的数据结构和代码示例
  • Grafana 中文入门教程 | 构建你的第一个仪表盘
  • Gitee DevOps:中国开发者效率革命的数字引擎
  • Topaz Photo AI Pro 4.0.4 AI图片智能降噪
  • C++ std::map
  • 易基因:Nat Genet/IF29:董朝斌团队ChIP-seq等揭示作物株型穗型发育调控新机制 助力表观遗传育种驯化改良(顶刊佳作)
  • Edge浏览器网页长截图
  • Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用
  • C++多线程编程—线程控制、同步与互斥详解
  • MySQL启动失败:mysqld.log Permis 报错处理.250916
  • 源码管理—密钥硬编码问题
  • 无速度传感器交流电机的扩展Luenberger观测器
  • AI Ping体验记:终于有人做大模型服务的“性能监控”了
  • 数据库原理-第二章——关系型数据库
  • mac 的任务栏 Windows-Style Taskbar For macOS