0x01 内网横向移动的核心解读
内网横向移动是每个红队人员在拿到初始 foothold(立足点)后必须掌握的一项核心技能。它的目标是从一个被攻陷的主机出发,逐步渗透至更高价值的目标,比如域控(Domain Controller)、业务服务器或者存储敏感数据的系统。整个过程的本质,是利用各种技术手段穿越主机之间的边界,实现权限扩展和信息窃取。
从技术角度来看,横向移动的实现依赖以下三个核心点:
- 凭证搜集与滥用:抓取有效的账户凭证(如Hash、明文密码、Kerberos TGT),利用合法的身份对目标系统进行操作。
- 远程执行技术:通过 SMB、WMI、WinRM 等协议在目标主机上远程执行代码/命令。
- 权限维持与清理:在目标主机上建立长期的访问能力,同时掩盖攻击行为以避免被发现。
下面,我们将通过一个完整的内网渗透案例,逐步拆解横向移动的技术细节和实战技巧。
---
0x02 环境搭建全指南
为了模拟真实的企业网络环境,我们设计了一个典型的内网结构,包括以下组件:
- 域控服务器:Windows Server 2019,域名
corp.local。 - 域成员机器:两台 Windows 10 用户工作站,一台运行财务系统,一台开发人员日常使用。
- 攻击者主机:Kali Linux,作为渗透的起点。
- 网络分段:域控与域成员机器在同一内网,攻击者通过 VPN 进入办公网。
部署环境时,可以使用 VirtualBox 或 VMware 创建虚拟化网络,确保域成员机已经加入域,并与域控服务器通信正常。
---
0x03 挖掘横向移动的第一步:凭证搜集
凭证搜集是横向移动的第一步。掌握凭证后,攻击者可以伪装成合法用户访问目标主机。在这部分,我们将重点介绍如何利用内存提取、网络嗅探等方式来实现凭证的获取。
1. 使用 Mimikatz 提取用户凭证

Mimikatz 是横向移动的经典工具。以下是通过它提取凭证的具体方法。
步骤:
- 在已经攻陷的主机上运行 Mimikatz,确保以管理员权限启动。
- 使用以下命令列出当前会话中的明文密码:
<pre><code class="language-plaintext"> privilege::debug sekurlsa::logonpasswords `

- 观察输出,找到目标用户的用户名和密码。
代码示例:
如果想自动提取结果并保存,可以用 PowerShell 执行以下脚本:</code></pre>powershell
调用 Mimikatz 提取凭证并保存到日志文件
Start-Process mimikatz.exe -ArgumentList "privilege::debug sekurlsa::logonpasswords" -NoNewWindow -Wait -RedirectStandardOutput C:\Windows\Temp\creds.txt <pre><code> 实战技巧:
- 如果目标主机上有杀软,建议通过混淆后的 Mimikatz(如 Invoke-Mimikatz)加载到内存中运行。
- 使用远程进程注入(如 PSEXEC 或 Task Scheduler)时,可以借助 PowerShell 加载模块化的 Mimikatz。
---
2. 利用 LLMNR/NBT-NS 投毒嗅探凭证
在企业网络中,很多机器依赖不安全的名称解析协议(如 LLMNR 和 NBNS)。攻击者可以通过投毒和嗅探抓取 NetNTLMv2 Hash。
工具:
- Responder:一款内网嗅探和投毒工具。
步骤:
- 在攻击者主机上启动 Responder,监听网络流量:
`bash responder -I eth0 -rdwv `
- 当某台主机试图解析未知主机名时,Responder 返回伪造的响应,并捕获 NetNTLMv2 Hash。
- 使用 Hashcat 将捕获到的 Hash 离线破解:
`bash hashcat -m 5600 captured_hash.txt rockyou.txt `
实战技巧:
- 如果域控启用了 SMB 策略,建议通过 NTLM 中继(NTLM Relay)直接利用 Hash,不需要破解。
---
0x04 主机间的远程执行艺术
在横向移动的过程中,远程代码执行是实现跨主机访问的关键。接下来我们将介绍几种常见的远程执行技术。
方法 1:通过 SMB 实现远程命令执行
使用 psexec.py(来自 Impacket 工具集)可以通过 SMB 协议在目标机上执行命令。
步骤:
- 确保拿到目标的管理员凭证。
- 使用以下命令在目标机上开启一个命令行会话:
`bash python3 psexec.py DOMAIN/username:password@target_ip `
- 成功后,直接在返回的 shell 中执行命令。

实战技巧:
- 如果目标机上启用了 Windows 防火墙,可以使用 SMB Beacon 或 Cobalt Strike 的 SMB 管道功能绕过。
---
方法 2:利用 WMI 执行代码
WMI(Windows Management Instrumentation)是一种高效的远程管理协议。攻击者可以通过 WMI 执行任意命令。
使用 PowerShell 执行:</code></pre>powershell
远程执行命令
$target = "192.168.1.100" Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "cmd.exe /c whoami" -ComputerName $target <pre><code> 实战技巧:
- WMI 的执行不会触发目标机上的明显警告,适用于隐匿攻击。
- 利用 Kerberos 凭证时,可以通过指定 TGT 实现无密码登录。
---
0x05 如何持久化并清理痕迹?

在目标主机上实现权限维持和痕迹清理是横向移动的重要环节。以下是一些实用的技巧。
技巧 1:注册表后门
将恶意程序注册为开机启动项:</code></pre>powershell
添加注册表启动项
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'MyBackdoor' -Value 'C:\Windows\Temp\backdoor.exe' <pre><code> ---
技巧 2:清理事件日志
通过 PowerShell 删除攻击痕迹:</code></pre>powershell
清空安全日志
Clear-EventLog -LogName Security `
注意事项:清理日志会引起安全人员的注意,建议配合模糊化技术。
---
0x06 总结与个人经验
内网横向移动是一个复杂而细致的过程,需要攻击者具备多方面的技能。从凭证抓取到远程执行再到持久化和痕迹清理,每一步都需要精心设计。真正的挑战在于如何隐蔽自己的行为,同时高效地完成目标。
以下几点是个人经验总结:
- 多种工具结合使用:不要依赖单一工具,比如 Responder 可以结合 NTLM Relay,Mimikatz 可以结合 Cobalt Strike。
- 对抗 EDR 的关键是免杀:在使用远控工具时,确保对抗主流 EDR。
- 每一步操作都要留后手:包括备用后门、备用 C2 通道。
愿这篇文章能帮助你在合法授权的测试中掌握更强的内网渗透能力!