### 内网有 ACL 策略,如果是白名单如何绕过 **1. 利用被允许的协议和端口** 这是最直接、最有效的方法。你需要找到 ACL 策略放行的协议和端口,然后利用它们建立隧道 - **DNS 隧道**:如果 ACL 允许 DNS 流量(通常是放行的,因为网络解析需要),这是首选方法 - **原理**:将你的恶意流量(例如 C2 通信)编码成 DNS 查询请求(通常是子域名),发送到你控制的公网 DNS 服务器。你的服务器解析后,再将响应数据编码在 DNS 回复包中返回 - **优点**:几乎所有网络都允许 DNS 流量出网,隐蔽性极高 - **工具**:**`iodine`** 和 **`dnscat2`** 是最经典的 DNS 隧道工具 - **ICMP 隧道**:如果 ACL 允许 ICMP 流量(例如允许 `ping`),你就可以利用它 - **原理**:将你的数据封装在 ICMP Echo 请求包的载荷中,通过 `ping` 的方式发送出去,并从回复包中接收数据 - **优点**:同样利用了网络诊断的合法协议,不易被察觉 - **工具**:**`ptunnel`** 或 **`icmpsh`** - **HTTP/S 隧道**:如果内网允许访问特定网站或端口的 HTTP/S 流量,你可以伪装成这种流量 - **原理**:将你的 C2 通信封装在 HTTP/S 请求和响应中。你可以利用 **CDN**、**合法域名**或者**特定的代理服务器**来伪装流量 - **优点**:流量看起来像是正常的网页浏览,非常具有迷惑性 - **工具**:**`reGeorg` / `Neo-reGeorg`**、**`sliver`**、**`Cobalt Strike`** 都可以配置 HTTPS 监听器来绕过 **2. 利用白名单 IP 或域名** 除了协议和端口,ACL 策略也可能基于 IP 地址或域名进行白名单控制 - **利用合法代理服务器**:如果 ACL 允许访问某个合法的代理服务器(例如公司内部的 Web 代理),你可以尝试利用这个代理来转发你的流量 - **原理**:配置你的攻击工具,让其通过这个代理服务器进行通信 - **挑战**:代理服务器可能会有日志记录和内容审计 - **利用被允许的域名进行 C2 通信**:如果 ACL 只允许访问特定的几个域名(比如 `*.microsoft.com`),你可以尝试使用**域名欺骗(Domain Fronting)**技术,将你的 C2 服务器 IP 隐藏在这些域名背后 - **原理**:将你的 C2 服务器部署在某个**云服务商**(如 AWS、Azure)上,然后利用这些服务商的合法域名作为流量的“正面”,而你的真实 C2 流量则通过 SNI 等方式悄悄地指向你的服务器 - **挑战**:需要深入了解域名欺骗的原理和云服务的配置,且随着安全防御的升级,这种方法越来越难以成功 **3. 利用物理或软件层面的漏洞** 如果以上网络层面的方法都失败了,你可能需要考虑更底层的绕过方式 - **利用已安装的软件进行通信**:有些内网机器上会安装一些特殊的软件,这些软件可能拥有出网的白名单权限 - **原理**:例如,一些企业的远程协助软件、杀毒软件、或者特定的企业应用,它们的通信流量是允许的。如果你能劫持或利用这些软件的进程,就可以将你的流量注入其中 - **挑战**:需要深入分析目标机器上运行的软件,并找到其漏洞或利用点 - **DLL 注入或进程注入**:这是一种更高级的攻击方式 - **原理**:将你的恶意代码注入到某个**拥有出网白名单权限的合法进程**中。这样,你的流量就会伪装成该进程的流量,从而绕过 ACL 策略 - **优点**:隐蔽性极高,可以有效绕过大多数基于网络层的防御 - **挑战**:技术门槛高,需要对进程和内存有深入理解