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