From f406735da34bba8c62dfe2264ae00f1274a33975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=BE=E5=B3=B6=E9=A3=8E=E8=B5=B7=E6=99=82?= Date: Thu, 25 Sep 2025 03:41:26 +0800 Subject: [PATCH] Add files via upload --- Chapter8/8-1.md | 33 ++++++++++++++++++ Chapter8/8-10.md | 41 ++++++++++++++++++++++ Chapter8/8-2.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++ Chapter8/8-3.md | 56 ++++++++++++++++++++++++++++++ Chapter8/8-4.md | 28 +++++++++++++++ Chapter8/8-5.md | 41 ++++++++++++++++++++++ Chapter8/8-6.md | 21 +++++++++++ Chapter8/8-7.md | 28 +++++++++++++++ Chapter8/8-8.md | 19 ++++++++++ Chapter8/8-9.md | 32 +++++++++++++++++ Chapter8/README.md | 19 ++++++++++ 11 files changed, 404 insertions(+) create mode 100644 Chapter8/8-1.md create mode 100644 Chapter8/8-10.md create mode 100644 Chapter8/8-2.md create mode 100644 Chapter8/8-3.md create mode 100644 Chapter8/8-4.md create mode 100644 Chapter8/8-5.md create mode 100644 Chapter8/8-6.md create mode 100644 Chapter8/8-7.md create mode 100644 Chapter8/8-8.md create mode 100644 Chapter8/8-9.md diff --git a/Chapter8/8-1.md b/Chapter8/8-1.md new file mode 100644 index 0000000..e2d6d88 --- /dev/null +++ b/Chapter8/8-1.md @@ -0,0 +1,33 @@ +### 正向代理和反向代理区别 + +**正向代理 (Forward Proxy)** + +**正向代理**是我们通常所说的代理,它代理的是**客户端**的请求。在内网渗透中,正向代理通常用于让内网主机(客户端)访问外部网络资源 + +**渗透中的应用场景** + +当你成功控制了一台内网主机,但它无法直接访问互联网时,你可以利用另一台可以访问互联网的内网主机作为正向代理。这样,被控制的主机就可以通过这个代理访问你部署在公网的服务器,从而进行数据传输或下载恶意文件 + +**举例说明** + +想象一下,你控制了内网中的一台主机 **A**,而你的攻击机 **C** 在公网。主机 **A** 无法直接访问互联网,但内网中有一台主机 **B** 可以访问。你可以在主机 **B** 上搭建一个正向代理,让主机 **A** 的流量都通过 **B** 转发到公网,从而连接到你的攻击机 **C** + +**反向代理 (Reverse Proxy)** + +**反向代理**代理的是**服务器**的请求。它位于服务器的前端,将来自客户端的请求转发给后端的服务器。在内网渗透中,反向代理常用于将公网的流量转发到内网中的某台主机,从而实现公网与内网的通信 + +**渗透中的应用场景** + +当你需要让公网的攻击机(客户端)主动连接到内网中的一台主机(服务器)时,反向代理就非常有用了。特别是当内网主机没有公网 IP,或由于防火墙、NAT 等原因无法直接从公网访问时,你可以在一台具有公网 IP 的服务器上设置反向代理 + +**举例说明** + +假设你的攻击机 **C** 在公网,你成功让内网中的主机 **A** 运行了你的木马程序。但主机 **A** 无法直接接收来自公网的连接。这时,你可以在公网的服务器 **S** 上设置反向代理。让主机 **A** 主动连接到服务器 **S**,然后服务器 **S** 将来自你攻击机 **C** 的流量转发给主机 **A**。这样,你的攻击机 **C** 就能控制主机 **A**,即使它没有公网 IP + +| 特性 | 正向代理(Forward Proxy) | 反向代理(Reverse Proxy) | +| -------- | ------------------------- | ---------------------------- | +| 代理对象 | 客户端(内网主机) | 服务器(内网主机) | +| 流量方向 | 从内网到公网 | 从公网到内网 | +| 目的 | 帮助内网主机访问外部资源 | 帮助外部主机访问内网资源 | +| 代理位置 | 通常在内网中 | 通常在公网中或内网与公网边界 | +| 常用工具 | proxychains, ssh -D | frp, ngrok, reGeorg | \ No newline at end of file diff --git a/Chapter8/8-10.md b/Chapter8/8-10.md new file mode 100644 index 0000000..8ae6e16 --- /dev/null +++ b/Chapter8/8-10.md @@ -0,0 +1,41 @@ +### 内网有 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 策略 + - **优点**:隐蔽性极高,可以有效绕过大多数基于网络层的防御 + - **挑战**:技术门槛高,需要对进程和内存有深入理解 \ No newline at end of file diff --git a/Chapter8/8-2.md b/Chapter8/8-2.md new file mode 100644 index 0000000..db5890b --- /dev/null +++ b/Chapter8/8-2.md @@ -0,0 +1,86 @@ +### 如何进行内网穿透 + +**1. 反向代理与隧道技术** + +这是最常用也是最稳定的内网穿透方式。其原理是**让内网主机主动连接公网服务器,并建立一个持久的通信隧道** + +**工具:Frp** + +**Frp** 是一个高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,它可以将内网服务暴露给公网 + +**工作流程:** + +- **公网服务器(VPS):** 运行 `frps`(服务端),监听一个端口 +- **内网主机(目标机器):** 运行 `frpc`(客户端),连接到公网服务器 +- **配置:** 在 `frpc.ini` 配置文件中指定要暴露的内网服务(如 SSH 服务、Web 服务),并将其转发到公网服务器的指定端口上 + +**Frp 优点:** + +- **多协议支持:** 几乎可以转发任何类型的流量 +- **配置简单:** 配置文件清晰,易于上手 +- **性能优秀:** 资源占用低,转发速度快 +- **隐蔽性:** 流量经过加密,且内网主机是主动出站连接,不易被防火墙拦截 + +**工具:Ngrok** + +Ngrok 提供了类似的隧道服务,但它通常需要注册账号,并且免费版有诸多限制。对于渗透测试来说,自己搭建的 Frp 更灵活、更可靠 + +**2. SSH 隧道** + +SSH 隧道利用 SSH 协议来转发流量,是许多渗透测试工程师的首选工具,因为它在大多数 Linux 和 macOS 系统中都自带了 SSH 客户端 + +**反向 SSH 隧道** + +**原理:** 攻击者在公网服务器上监听一个端口,然后让内网主机使用 `ssh -R` 命令,将内网的端口映射到公网服务器上 + +**示例:** 假设内网Web服务运行在 `127.0.0.1:8080`,公网VPS IP 为 `203.0.113.10`。 在内网主机上执行: `ssh -R 8080:127.0.0.1:8080 user@203.0.113.10` + +- `-R`:表示反向端口转发 +- `8080`:公网服务器上的监听端口 +- `127.0.0.1:8080`:内网服务的地址和端口 +- `user@203.0.113.10`:公网服务器的登录信息 + +现在,你就可以通过访问 `http://203.0.113.10:8080` 来访问内网的 Web 服务了 + +**SSH 隧道优点:** + +- **原生支持:** 无需额外安装工具 +- **加密:** 流量全程加密,安全可靠 +- **易用性:** 命令行简单,操作便捷 + +**3. DNS 隧道** + +在一些网络环境极端受限(如只允许 DNS 请求通过)的情况下,DNS 隧道是一种非常隐蔽且有效的穿透方式 + +**原理:** 将需要传输的数据编码为域名请求(DNS Query),发送到攻击者控制的公网 DNS 服务器。公网服务器接收到请求后,将其解码,然后将响应数据编码在 DNS 响应(DNS Reply)中返回 + +**工具:** + +- **iodine:** 这是一个流行的 DNS 隧道工具 +- **dnscat2:** 另一个功能强大的 DNS 隧道工具,可以模拟一个交互式 Shell + +**DNS 隧道优点:** + +- **极度隐蔽:** DNS 流量通常不被防火墙严格审查,容易绕过限制 +- **穿透力强:** 几乎可以在任何网络环境中工作 + +**DNS 隧道缺点:** + +- **速度慢:** 由于 DNS 协议的限制,传输速度非常慢,不适合传输大量数据 +- **不稳定:** 容易受到网络波动影响 + +**4. HTTP/HTTPS 隧道** + +当目标网络只允许 HTTP/HTTPS 流量出站时,可以利用 HTTP/HTTPS 隧道 + +**原理:** 将流量伪装成 HTTP/HTTPS 请求,通过公网服务器的 Web 代理或隧道工具进行转发 + +**工具:** + +- **Tunna:** 一个利用 HTTP 协议进行 TCP 隧道转发的工具 +- **meterpreter 的 Reverse HTTP/HTTPS Payload:** Metasploit 框架中的反向 shell,其流量就是通过 HTTP/HTTPS 隧道传输的 + +**HTTP/HTTPS 隧道优点:** + +- **绕过代理:** 能够穿透只允许 Web 流量的网络 +- **隐蔽性好:** 流量伪装成正常浏览行为,不易被发现 \ No newline at end of file diff --git a/Chapter8/8-3.md b/Chapter8/8-3.md new file mode 100644 index 0000000..bf5fa96 --- /dev/null +++ b/Chapter8/8-3.md @@ -0,0 +1,56 @@ +### 如何隐藏 CS 流量 + +**1. 域前置** + +域前置是一种非常有效的流量隐藏技术,它利用了内容分发网络(CDN)的特性 + +**核心思想:** 攻击者将 CS 流量伪装成对一个著名且无害的域名的访问请求(比如 `www.google.com` 或 `www.amazon.com`)。当请求到达 CDN 服务器后,CDN 服务器会根据请求头中的特定字段(如 `Host` 字段),将流量转发到攻击者控制的真正恶意域名或 IP 地址上 + +**工作流程:** + +1. 你注册一个域名,例如 `attacker.com` +2. 将 `attacker.com` 的 CNAME 记录指向一个支持域前置的 CDN 服务提供商(如 Amazon CloudFront 或 Akamai) +3. 在 CS 的配置文件中,将监听器的 Host Header 设置为 `attacker.com` +4. 在 Beacon 的配置文件中,将 Host 设置为公共域名,例如 `www.google.com` + +**为什么有效?** 网络安全设备看到的是对 `www.google.com` 的访问请求,这通常是白名单流量,很难被拦截。只有当流量到达 CDN 服务器后,其内部转发机制才会将其导向真正的恶意服务器 + +**2. Malleable C2 配置文件** + +这是隐藏 CS 流量最基本也是最强大的方法。Malleable C2 配置文件允许你自定义 Beacon 的所有网络通信特征,使其看起来像合法的流量 + +**核心思想:** CS 的默认流量特征非常明显。通过修改 **Malleable C2 配置文件**,你可以改变 Beacon 的 HTTP 请求头、响应头、URI、HTTP POST 请求中的数据格式等等,使其模仿其他应用程序的流量,如 Google Chrome、Office 365 等 + +**主要配置项:** + +- **`http-get`:** 定义 Beacon 向 C2 服务器获取任务的 GET 请求。你可以自定义 `user-agent`、`uri` 等 +- **`http-post`:** 定义 Beacon 向 C2 服务器回传数据的 POST 请求。你可以自定义 `uri`、`data` 等 +- **`headers`:** 修改请求头,让其看起来像正常的 Web 流量 +- **`stage`:** 更改 Beacon 的 Payload 特征,使其更难被检测 + +**示例:** 一个精心制作的 Malleable C2 配置文件,可以使 Beacon 的流量看起来像在访问 Outlook Web Access 或者一个合法的 CDN 资源。这大大增加了网络安全设备的识别难度。 + +**3. DNS over HTTPS(DoH)隧道** + +DoH 是一种将 DNS 查询通过加密的 HTTPS 协议发送的技术。你可以利用它来隐藏 CS 的 DNS 流量 + +**核心思想:** 传统的 DNS 流量是明文的,很容易被监控。如果你使用 DNS 作为 C2 通信信道,将 Beacon 的 DNS 请求伪装成 DoH 流量,可以有效绕过一些防火墙的 DNS 流量检测 + +**优点:** + +- **加密:** 流量全程加密,难以被中间人分析 +- **伪装性:** 将 DNS 流量混入正常的 HTTPS 流量中,非常隐蔽 + +**实现方式:** 需要使用支持 DoH 的 CS 插件或者自定义脚本来构建隧道 + +**4. 利用其他协议隐藏流量** + +除了 HTTP/HTTPS 和 DNS,CS 还可以利用其他协议进行 C2 通信,从而绕过针对 Web 流量的检测 + +**a. SMB Beacon** + +SMB Beacon 利用 SMB 协议在内网中进行横向移动和 C2 通信。它不产生任何出站流量,所有通信都在内网主机之间进行。 **优点:** 完美隐藏了出站流量,只在内网活动,非常适合内网横向渗透。 **缺点:** 无法从外部直接控制,需要先在一个跳板机上建立一个 HTTP/DNS Beacon + +**b. ICMP Beacon** + +ICMP Beacon 利用 ICMP 协议进行 C2 通信。 **优点:** 许多网络环境对 ICMP 流量审查不严,因此隐蔽性较好。 **缺点:** 传输数据量小,速度慢,不稳定 \ No newline at end of file diff --git a/Chapter8/8-4.md b/Chapter8/8-4.md new file mode 100644 index 0000000..2ebef01 --- /dev/null +++ b/Chapter8/8-4.md @@ -0,0 +1,28 @@ +### ICMP 隧道的流量特征 + +由于 ICMP 隧道将其他协议的数据“借壳上市”,它的流量行为和正常的 `ping` 命令有显著区别。以下是 ICMP 隧道的几个主要流量特征: + +**1. 非标准的ICMP数据载荷** + +- **正常流量**:标准的 `ping` 命令(ICMP echo request/reply)通常携带的数据载荷较小,通常为32或64字节,并且数据内容是可预测的,比如 `ABCDEFGHIJKLMNOPQRSTUVWXYZ` 等 +- **隧道流量**:ICMP 隧道的数据载荷大小会根据传输的数据量而变化,通常**远大于**正常的 `ping` 载荷。这些载荷是经过**编码和加密**的,因此其内容是**随机且不可读**的 + +**2. ICMP包类型和代码异常** + +- **正常流量**:`ping`命令使用的ICMP包类型是`Echo Request`(类型8)和`Echo Reply`(类型0) +- **隧道流量**:ICMP隧道可能会使用其他不常见的ICMP类型,例如`Timestamp Request`(类型13)、`Address Mask Request`(类型17)等,或者使用**不常见的ICMP Code**来作为数据传输的标记 + +**3. 高频、连续的`ping`请求** + +- **正常流量**:用户手动 `ping` 一个地址通常是短期的、低频的行为,比如几秒钟一次,持续几十次 +- **隧道流量**:为了维持稳定的通信,ICMP 隧道工具会**高频率、连续地**发送和接收 ICMP 包,其频率远超正常`ping`行为,表现为一种持续不断的“心跳”模式 + +**4. 异常的 ICMP ID 和 Sequence Number** + +- **正常流量**:`ping` 命令的 `ID` 通常是随机生成的,`Sequence Number` 则按顺序递增。在一次会话结束后,`ID` 会改变 +- **隧道流量**:ICMP 隧道工具可能会**自定义**这些字段来传输数据,使其`ID`和`Sequence Number`表现出非线性和不规则的模式,这在自动化分析中很容易被标记为异常 + +**5. 传输方向和目的地址异常** + +- **正常流量**:`ping `命令通常是从内网主机到外网服务器,或者在内网中进行测试 +- **隧道流量**:恶意 ICMP 隧道流量会从**内网主机**流向**外部攻击者控制的服务器**,这在网络流向分析中是一个重要的异常点 \ No newline at end of file diff --git a/Chapter8/8-5.md b/Chapter8/8-5.md new file mode 100644 index 0000000..65c9faa --- /dev/null +++ b/Chapter8/8-5.md @@ -0,0 +1,41 @@ +### 代理转发常用的工具有哪些 + +**1. Frp** + +**FRP** 是一款开源的高性能反向代理应用,可以帮助你将内网服务暴露到公网。它支持多种协议,如 TCP、UDP、HTTP、HTTPS,并且配置简单 + +- **优点:** 性能高、功能强大、支持多平台、社区活跃 +- **适用场景:** 将内网中的 Web 服务、SSH 服务等暴露给公网,或者建立一个稳定的代理通道 + +**2. EW** + +**EW** 是一款专为内网穿透设计的轻量级工具。它通过 SOCKS5 代理的方式,将流量在多个节点之间进行转发,可以轻松构建多级代理 + +- **优点:** 体积小巧、使用简单、无需安装、支持多级代理 +- **适用场景:** 在复杂的内网环境中,通过多个跳板机构建代理链,实现流量的隐蔽传输。 + +**3. Nps** + +**Nps** 是一款功能强大的开源内网穿透工具,支持 TCP、UDP、SOCKS5、HTTP 等多种代理模式。它提供了 Web 管理界面,方便用户管理代理和查看流量信息 + +- **优点:** 功能丰富、有 Web 管理界面、支持多种协议、性能稳定 +- **适用场景:** 需要长期、稳定地维护一个内网穿透通道时,特别是在团队协作的环境下。 + +**4. Ligolo-ng** + +**Ligolo-ng** 是一款基于隧道(Tun)设备的代理工具。它在客户端和服务器端之间创建一个虚拟网络接口,使得攻击者可以像直接连接到内网一样,通过这个接口访问内网资源 + +- **优点:** 提供了完整的二层网络访问能力、流量隐蔽性高、不易被检测 +- **适用场景:** 当你需要执行更复杂的网络操作(如端口扫描、漏洞利用等),而不仅仅是简单的流量转发时 + +**5. SSH Tunneling** + +**SSH** 本身就是一种强大的代理转发工具。通过 SSH 隧道,你可以创建正向代理、反向代理和动态代理(SOCKS5 代理) + +- **正向代理:** 将客户端的流量转发到 SSH 服务器 +- **反向代理:** 将 SSH 服务器的流量转发到内网服务,实现内网穿透 +- **动态代理:** 将本地端口变成一个 SOCKS5 代理,可以用于代理浏览器流量或整个系统的流量 + +**优点:** 系统自带、隐蔽性好、加密传输、无需额外工具 + + **适用场景:** 已经获得了 SSH 权限,且只需进行简单的端口转发或动态代理时 \ No newline at end of file diff --git a/Chapter8/8-6.md b/Chapter8/8-6.md new file mode 100644 index 0000000..3a52a6f --- /dev/null +++ b/Chapter8/8-6.md @@ -0,0 +1,21 @@ +### 目标机器 Ping 不通外网,没有办法走网络层协议如何搭建隧道 + +**1. HTTP/HTTPS 隧道** + +如果目标机器能够访问互联网上的某个网站,那么 HTTP/HTTPS 隧道就有了用武之地 + +- **工作原理:** 我们可以将流量伪装成正常的 **HTTP/HTTPS 请求**(例如 GET 或 POST),将其发送到攻击者控制的 Web 服务器。Web 服务器接收到请求后,再将流量转发到真正的目的地。反之亦然,通过 Web 服务器的响应将数据传回 +- **工具:** + - **reGeorg:** 一个经典的 HTTP 隧道工具,通过在 Web 服务器上部署一个 Web Shell,来建立 SOCKS 代理 + - **Meterpreter 的 `http/https` 模块:** 在使用 Metasploit 框架时,这是一个非常方便的选项,可以直接利用 HTTP/HTTPS 协议进行反向连接 + - **Tunna:** 类似于 reGeorg,但提供了更多功能和灵活性 + +**2. DNS 隧道** + +这是最常用也是最有效的方案之一。DNS 协议通常被认为是“无害”的,很少有防火墙会完全阻止它 + +- **工作原理:** 我们通过将恶意流量封装在 **DNS 查询请求(A 记录、TXT 记录等)**或 **DNS 响应**中,从而建立一个隐蔽的通道。目标机器作为客户端,向攻击者控制的 DNS 服务器发起查询,而查询的域名中就携带着数据。攻击者服务器收到查询后,通过 DNS 响应将数据传回给客户端 +- **工具:** + - **iodine:** 一个非常经典的开源工具,支持 IPv4 over DNS + - **DNSCat2:** 支持加密和更复杂的数据传输,可以模拟一个交互式的 Shell + - **dnscapy:** 侧重于 DNS 数据包的解析和生成,适合自定义隧道 \ No newline at end of file diff --git a/Chapter8/8-7.md b/Chapter8/8-7.md new file mode 100644 index 0000000..56eff26 --- /dev/null +++ b/Chapter8/8-7.md @@ -0,0 +1,28 @@ +### 内网的多级代理用什么东西代理 + +**1. SOCKS 代理** + +**什么是 SOCKS 代理?** SOCKS(Socket Secure)是一种网络协议,它允许客户端通过一个代理服务器进行通信,而不必知道具体的应用层协议。它工作在 OSI 模型的第五层(会话层),因此可以支持几乎所有的应用层协议,如 HTTP、FTP、SSH 等 + +**如何实现?** + +- **SSH**: `ssh -D 1080 user@remote_server` 这是最常见也最简单的方式。这条命令会在本地开启一个 SOCKS 代理(通常是 1080 端口),所有经过该代理的流量都会通过 SSH 连接加密后发送到远程服务器。远程服务器再将流量转发到目标内网。SSH 的优点是自带加密,且几乎所有 Linux 系统都默认安装 +- **Metasploit 的 `auxiliary/server/socks4a` 或 `socks5` 模块**: 如果已经获取了 Meterpreter 会话,你可以直接在会话中运行 `background`,然后在 MSFconsole 中使用这个模块。它会利用已有的会话作为通道,建立一个 SOCKS 代理,让你可以通过 Metasploit 访问内网 +- **frp (Fast Reverse Proxy)**: frp 是一个高性能的反向代理工具,它可以在公网服务器和内网服务器之间建立一个 TCP/UDP/HTTP/HTTPS/SOCKS5 等协议的通道。在多级代理场景中,frp 表现出色,因为它支持多级级联代理,并且配置灵活 + +**2. HTTP 代理** + +**什么是 HTTP 代理?** HTTP 代理是一种工作在应用层(OSI 模型的第七层)的代理,主要用于转发 HTTP 和 HTTPS 流量。虽然功能不如 SOCKS 代理通用,但在某些特定场景下非常有用,尤其是在内网中部署了 Web 服务器时 + +**如何实现?** + +- **Venom**: Venom 是一种使用 Go 语言开发的强大代理工具,它支持多级级联代理,可以模拟 HTTP/HTTPS 协议,从而绕过一些网络审计设备的检测。它的优点是轻量、配置简单,并且支持 Windows、Linux 等多个平台 +- **Neo-reGeorg**: Neo-reGeorg 是 reGeorg 的升级版,它利用 HTTP(S) 隧道技术将流量封装在 HTTP 请求中。这意味着只要目标内网能访问 Web 服务,并且你能上传一个脚本(如 ASP/JSP/PHP),就能建立一个代理隧道 + +**3. VPN** + +**什么是 VPN?** VPN(Virtual Private Network)是一种虚拟专用网络,它可以在公用网络上建立一个加密的、安全的通信通道。在渗透测试中,我们有时会利用 VPN 软件(如 OpenVPN)在跳板机上建立一个 VPN 服务,然后让目标内网机器连接到这个服务,从而将目标机器完全纳入我们的攻击网络,实现对内网的完全控制 + +**如何实现?** + +- **OpenVPN**: 这是最常见且开源的 VPN 软件。你可以在一台公网 VPS 上搭建 OpenVPN 服务器,然后将客户端配置上传到内网跳板机,在跳板机上运行客户端连接服务器。这样,你的本地机器就可以通过这个 VPN 通道直接访问内网 \ No newline at end of file diff --git a/Chapter8/8-8.md b/Chapter8/8-8.md new file mode 100644 index 0000000..334b094 --- /dev/null +++ b/Chapter8/8-8.md @@ -0,0 +1,19 @@ +### 如果 TCP 和 UDP 不出网怎么绕过 + +**1. 利用 DNS 协议进行隧道传输** + +DNS 协议是最常见的出网协议之一,很多防火墙为了保证正常的网络解析,都会放行 DNS 流量。因此,我们可以利用 DNS 请求和响应来传输数据 + +- **工作原理**: 我们把需要传输的数据编码成 DNS 域名请求(通常是子域名),发送给一个可控的 DNS 服务器。我们的服务器收到请求后,会解析这些数据,并把响应数据编码在 DNS 回复包中,发回给目标机器 +- **常用工具**: + - **dnscat2**: 这是一个功能强大的 DNS 隧道工具,支持加密和交互式会话,可以建立一个类似 shell 的通道 + - **iodine**: 另一个流行的 DNS 隧道工具,可以将 IPv4 流量封装在 DNS 请求中 + +**2. 利用 ICMP 协议进行隧道传输** + +ICMP(互联网控制消息协议)主要用于网络诊断,例如 `ping` 命令就是基于 ICMP 协议。如果网络管理员没有禁用 ICMP,我们可以利用 ICMP 包来传输数据 + +- **工作原理**: 将数据封装在 ICMP Echo 请求或回复的数据载荷中。目标机器发送带有数据的 ICMP 请求到我们的服务器,我们的服务器解析数据并发送 ICMP 回复包,以此实现双向通信 +- **常用工具**: + - **`icmpsh`**: 一个简单的 ICMP shell,可以在两台机器之间建立一个交互式命令行 + - **`ptunnel`**: 一个 TCP over ICMP 的隧道工具,可以将 TCP 流量通过 ICMP 隧道传输 \ No newline at end of file diff --git a/Chapter8/8-9.md b/Chapter8/8-9.md new file mode 100644 index 0000000..1c03beb --- /dev/null +++ b/Chapter8/8-9.md @@ -0,0 +1,32 @@ +### 多级代理如何做一个 CDN 进行中转 + +**步骤一:准备 C2 服务器** + +首先,你需要一台公网服务器作为你的 C2 服务器 + +1. **购买一台云服务器**:选择一个知名云服务商,比如 AWS、Azure、Google Cloud 或 Linode +2. **配置 C2 框架**:安装你的渗透测试框架,例如 **Cobalt Strike**、**Metasploit** 或 **Sliver** +3. **配置监听器**:在 C2 框架中设置一个 HTTP/HTTPS 的监听器。**确保监听的端口是 80 或 443**,这是 CDN 默认支持的端口,也是最常见的 Web 流量端口 + +**步骤二:配置 CDN 服务** + +接下来,你需要配置一个 CDN 服务来指向你的 C2 服务器。这里我们以 Cloudflare 为例,因为它是最常用且免费的选项 + +1. **注册域名**:你需要一个自己的域名。可以是任何后缀,比如 `.com`、`.net` 或 `.xyz` +2. **将域名解析到 Cloudflare**: + - 在域名注册商那里,将域名的 DNS 服务器修改为 Cloudflare 提供的 DNS 服务器 + - 在 Cloudflare 中,添加你的域名 +3. **创建 DNS 记录**: + - 在 Cloudflare 的 DNS 设置页面,创建一个 **A 记录**,将你想要的子域名(例如 `cdn.yourdomain.com`)指向你的 **C2 服务器的真实 IP 地址** + - **关键步骤**:确保这个记录的代理状态(Proxy status)设置为 **“已代理”(Proxied)**,即那个云朵图标是亮的。这是告诉 Cloudflare 将流量通过它的网络中转,而不是直接解析到你的 IP +4. **配置 SSL/TLS**: + - 在 Cloudflare 的 SSL/TLS 设置页面,将模式设置为 **“完全 (严格)”(Full (strict))**。这会确保从客户端到 Cloudflare 的流量是加密的,同时从 Cloudflare 到你的服务器的流量也是加密的 + - 你需要在你的 C2 服务器上为你的域名安装一个有效的 SSL 证书。可以使用 Let's Encrypt 免费生成 + +**步骤三:在目标机器上执行** + +现在,你已经有了一个通过 CDN 中转的 HTTPS 流量通道 + +1. **生成 payload**:使用你的 C2 框架生成一个 payload,其回调地址(Callback URL)就是你刚才配置的 **CDN 子域名**(例如 `https://cdn.yourdomain.com/`) +2. **执行 payload**:将这个 payload 部署到目标机器上并执行 +3. **C2 通信**:当 payload 在目标机器上运行时,它会向 `cdn.yourdomain.com` 发送 HTTPS 请求。这个请求首先会到达 Cloudflare 的边缘节点,Cloudflare 识别到这是一个代理流量,然后将它转发到你后台配置的 C2 服务器的真实 IP 地址。这样,C2 服务器就能与目标机器建立连接 \ No newline at end of file diff --git a/Chapter8/README.md b/Chapter8/README.md index 8b13789..9eecb4f 100644 --- a/Chapter8/README.md +++ b/Chapter8/README.md @@ -1 +1,20 @@ +# 网安面试题(涵盖护网、红队、逆向、二进制) +上万道安全面试题已经全部为您划分好,适用于网络安全所有岗位!!! + +HR:请问………… + +我:叽里咕噜说啥呢,看看八股文上写了没 + +(Summary.md 是目录噢!!) + +**🙏 特别感谢名单** + +在整理和完善本项目的过程中,以下朋友给予了宝贵的帮助与支持,在此表示诚挚的感谢!(排名不分先后) + +- **@用户名1** —— 提供了大量安全面试题方向的补充 +- **@用户名2** —— 纠正了多个问题的答案与表述 +- **@用户名3** —— 贡献了真实面试题经验分享 +- **@用户名4** —— 对内容结构与目录提出改进建议 + +如果您也愿意参与本项目,欢迎通过 **微信: XR3327026244** 投稿面试题或反馈问题,我们会在后续版本中加入您的名字