### 内网有 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 策略
  - 优点：隐蔽性极高，可以有效绕过大多数基于网络层的防御
  - 挑战：技术门槛高，需要对进程和内存有深入理解