课程所用 C2 服务器配置

考虑到在 Azure 上部署服务作为 C2 基础设施的组成部分,具有一定的门槛与成本,在课程推进与靶场中,我们搭建一个简易的 C2 基础设施。出于节约成本起见,转发器与 C2 服务器同主机,让 Nginx 充当反向代理,我们需要保护 CS 的监听端口。

这里我们选择 JQuery C2 侧写文件。

image.png

我们可以添加特定的 User Agent,这样的话,除了我自己的 Beacon,不会有其他的浏览器或者客户端工具使用相同的 User Agent

image.png

在 CS 中新建一个监听器,HTTPS HostsVPS IP,HTTPS Host (Stager) 同样如此。HTTPS Port (C2) 为 Nginx 监听端口HTTPS Port (Bind) 为 Cobalt Strike 的监听器端口

image.png


Nginx配置文件

配置 Nginx 的配置文件 /etc/nginx/ngix.conf

image.png

        server {
                 listen 443;
		 ssl on;
		 ssl_certificate /etc/ssl/certs/public.crt;
		 ssl_certificate_key /etc/ssl/private/private.key;
                 server_name azuresky.live;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 location ~*/ {
                         if ($http_user_agent != "Innocent") {  
                         return 403;
                 }               
                 proxy_pass  https://localhost:8443;
                 }
        }

proxy_set_header 这行用于配置 Nginx 转发源 IP

proxy_pass 这行用于将 Nginx 端口的流量转发到 CS 的监听器端口

location ~*/ 这里定义了根据 User Agent 进行过滤。因为我之前留了一个几乎不可能存在于 Beacon 之外的 UA,很好用于区分是来自 Beacon 的通信,还是其他的客户端。非 Beacon 的通信全部转到403错误页面。

对比图如下

image.png

通过这些简单的转发与请求过滤处理,我们不需要将 HTTPS 监听端口团队服务器的端口暴露在公网。最后,我们可以通过 SSH 隧道,将 Cobalt Strike 团队服务器的端口映射到自用 Kali 主机上,用于登陆客户端。


Revision #6
Created 5 October 2023 02:34:32 by unknown
Updated 17 April 2025 01:11:47 by 海森堡