一、攻击者的核心目标:横向移动的技术原理
在内网渗透中,横向移动是攻击者从初始入侵点向内网深处扩展的重要步骤。其核心目标是利用被攻陷主机的权限,获取更多主机或服务的控制权,最终接近目标资产或数据。为了实现这一目标,攻击者经常会利用系统信任关系、协议特性、弱口令等手段,结合多种工具和技术完成攻击链的延展。
我们可以将横向移动的核心技术原理归结为以下几个关键点:
- 凭证窃取与重用
攻击者通过窃取已登录用户的明文密码、哈希值或票据(如Kerberos票据),在内网中模仿合法用户登录其他主机或服务。
- 协议滥用与特性利用
内网中广泛使用的协议(如SMB、RDP、WMI等)本质上是为系统管理和资源共享设计的,却因其高权限和默认配置,成为攻击者横向移动的桥梁。
- 漏洞利用与提权
利用操作系统或常见软件中的漏洞,直接获得更高权限,或通过提权进一步扩大攻击范围。
- 信任关系攻击
企业内网中存在大量的信任关系,如域控与工作站之间的Kerberos信任、服务器之间的共享访问权限等。这些信任关系如果配置不当,很容易被攻击者滥用。
下面我们将基于这些原理,在实验环境中一步步复现多个横向移动的技术细节,并配以代码实现。
---
二、实验环境:搭建一片适合攻击的战场
为了更好地展示横向移动的技术细节,这里搭建一个真实的企业内网环境,包括以下几种关键角色:
- 攻击者主机(Kali Linux)
攻击者使用的设备,搭载渗透测试工具(如Cobalt Strike、Impacket工具包等)。
- 靶机1(Windows 10 工作站)
模拟普通员工使用的设备,运行日常办公软件,存在弱口令和潜在漏洞。
- 靶机2(Windows Server 2019)
模拟内网中一台敏感的文件服务器,存储着重要数据,启用了SMB共享。
- 域控制器(Windows Server 2019 AD环境)
负责域用户身份验证和权限管理,是攻击者的最终目标。
网络配置
- 内网子网为
192.168.1.0/24。 - Kali Linux:
192.168.1.100 - Windows 10:
192.168.1.101 - Windows Server:
192.168.1.102 - 域控制器:
192.168.1.103
模拟场景:攻击者初始掌握了192.168.1.101工作站的低权限用户凭据,接下来将使用横向移动技术控制整个内网。

---
三、SMB协议滥用:从凭证到远程命令执行
SMB(Server Message Block)协议是攻击者横向移动的首选目标之一,因为它在Windows内网中几乎无处不在。通过获得的用户名和密码,我们可以尝试登录其他主机,并利用其共享功能或服务执行命令。
核心步骤
- 使用有效凭证对目标主机进行身份验证。
- 利用SMB协议执行远程命令。
- 清理痕迹以防被管理员发现。
攻击工具选择
我们使用Impacket工具包中的psexec.py模块,该工具可以通过SMB协议在目标主机上执行命令。
POC代码实现
以下是利用psexec.py实现远程命令执行的代码:
<pre><code class="language-bash"># 使用Impacket实现对目标主机的SMB登录与命令执行 python3 psexec.py <domain>/<username>:<password>@<target-ip></code></pre>
示例: <pre><code class="language-bash"># 假设我们获得了以下凭据:
用户名:user1,密码:P@ssw0rd
目标主机IP:192.168.1.102
python3 psexec.py user1:P@[email protected]</code></pre>
运行后,攻击者将在目标主机上获得一个SYSTEM权限的交互式Shell。
代码细节解析
psexec.py通过SMB协议登录目标主机,并上传一个服务二进制文件以执行命令。- 一旦服务启动,攻击者便拥有目标主机的控制权。
绕过EDR的技巧
- 修改Impacket工具默认生成的二进制文件,使其更难被杀软检测。
- 使用内存加载技术,避免在磁盘上留下攻击痕迹。
- 尽量伪装命令,例如调用常见系统进程(如
svchost.exe)。
---
四、WMI与PowerShell:隐蔽的远程执行手段
为什么选择WMI?
WMI(Windows Management Instrumentation)允许管理员远程管理设备和监控系统信息。攻击者常利用其强大的远程执行能力,隐蔽地控制目标主机。
POC代码实现
我们可以使用Python中的wmiexec.py工具实现远程命令执行。
<pre><code class="language-bash"># 使用wmiexec.py执行远程命令 python3 wmiexec.py <domain>/<username>:<password>@<target-ip></code></pre>
示例: <pre><code class="language-bash"># 假设目标IP为192.168.1.102 python3 wmiexec.py user1:P@[email protected] "ipconfig"</code></pre>
更隐蔽的方法:使用PowerShell 攻击者可以直接通过PowerShell远程执行命令:
<pre><code class="language-powershell"># 启用远程PowerShell Enable-PSRemoting -Force
执行远程命令
Invoke-Command -ComputerName 192.168.1.102 -ScriptBlock { Get-Process }</code></pre>

绕过检测的技巧
- 禁用脚本日志:攻击者可以尝试通过修改日志配置隐藏PowerShell执行记录。
- 使用加密的Payload:通过对脚本加密,防止被静态分析。
---
五、Kerberos黄金票据:横向移动的终极武器
Kerberos是一种经典的身份验证协议。通过窃取域控中的KRBTGT账户哈希,攻击者可以伪造任意用户的认证票据,完成横向移动。

攻击流程
- 窃取
KRBTGT哈希值。 - 使用Mimikatz生成黄金票据。
- 伪装为域内任意用户,登录目标主机。
黄金票据的生成
以下是生成黄金票据的典型Mimikatz命令:
<pre><code class="language-bash"># 使用Mimikatz生成黄金票据 kerberos::golden /user:administrator /domain:example.com /sid:S-1-5-21-1234567890 /krbtgt:<krbtgt_hash> /id:500</code></pre>
生成的票据加载到内存后,攻击者即可无障碍访问域内资源。
---
六、个人经验分享:如何规避常见失误
- 重视日志清理
攻击者的每一步操作都可能被安全设备记录,确保清理Windows事件日志(如Security、PowerShell等)。
- 避免过度依赖工具
尽管工具如Impacket、Mimikatz功能强大,但其行为容易被特征化。建议根据实际需求开发定制化工具。
- 流量伪装
横向移动过程中产生的SMB、WMI流量可疑性较高,建议使用流量加密或协议混淆技术。

---
至此,我们完成了从初始入侵到横向移动的完整攻击链展示。在实际操作中,请确保所有测试行为均在授权范围内执行。攻击者的每一步行动,都在为防御者提供改进的方向。