# 课程所用 C2 服务器配置

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

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-01/scaled-1680-/s9oOkrRF5ZeENYaJ-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-01/s9oOkrRF5ZeENYaJ-image.png)

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-10/scaled-1680-/W8ftXC6pehCLWlRV-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-10/W8ftXC6pehCLWlRV-image.png)

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2025-04/scaled-1680-/rDGXZY8PwZuHfjLS-image.png)](https://raven-medicine.com/uploads/images/gallery/2025-04/rDGXZY8PwZuHfjLS-image.png)

**Nginx配置文件**

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

[![image.png](https://raven-medicine.com/uploads/images/gallery/2023-10/scaled-1680-/W5oS9cgQKJdDE1PU-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-10/W5oS9cgQKJdDE1PU-image.png)

```nginx
        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://raven-medicine.com/uploads/images/gallery/2023-10/scaled-1680-/DN661NwFchCUCXw1-image.png)](https://raven-medicine.com/uploads/images/gallery/2023-10/DN661NwFchCUCXw1-image.png)

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