一、攻击者的核心目标:横向移动的技术原理

在内网渗透中,横向移动是攻击者从初始入侵点向内网深处扩展的重要步骤。其核心目标是利用被攻陷主机的权限,获取更多主机或服务的控制权,最终接近目标资产或数据。为了实现这一目标,攻击者经常会利用系统信任关系、协议特性、弱口令等手段,结合多种工具和技术完成攻击链的延展。

我们可以将横向移动的核心技术原理归结为以下几个关键点:

  1. 凭证窃取与重用
  2. 攻击者通过窃取已登录用户的明文密码、哈希值或票据(如Kerberos票据),在内网中模仿合法用户登录其他主机或服务。

  1. 协议滥用与特性利用
  2. 内网中广泛使用的协议(如SMB、RDP、WMI等)本质上是为系统管理和资源共享设计的,却因其高权限和默认配置,成为攻击者横向移动的桥梁。

  1. 漏洞利用与提权
  2. 利用操作系统或常见软件中的漏洞,直接获得更高权限,或通过提权进一步扩大攻击范围。

  1. 信任关系攻击
  2. 企业内网中存在大量的信任关系,如域控与工作站之间的Kerberos信任、服务器之间的共享访问权限等。这些信任关系如果配置不当,很容易被攻击者滥用。

下面我们将基于这些原理,在实验环境中一步步复现多个横向移动的技术细节,并配以代码实现。

---

二、实验环境:搭建一片适合攻击的战场

为了更好地展示横向移动的技术细节,这里搭建一个真实的企业内网环境,包括以下几种关键角色:

  1. 攻击者主机(Kali Linux)
  2. 攻击者使用的设备,搭载渗透测试工具(如Cobalt Strike、Impacket工具包等)。

  1. 靶机1(Windows 10 工作站)
  2. 模拟普通员工使用的设备,运行日常办公软件,存在弱口令和潜在漏洞。

  1. 靶机2(Windows Server 2019)
  2. 模拟内网中一台敏感的文件服务器,存储着重要数据,启用了SMB共享。

  1. 域控制器(Windows Server 2019 AD环境)
  2. 负责域用户身份验证和权限管理,是攻击者的最终目标。

网络配置

  • 内网子网为 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内网中几乎无处不在。通过获得的用户名和密码,我们可以尝试登录其他主机,并利用其共享功能或服务执行命令。

核心步骤

  1. 使用有效凭证对目标主机进行身份验证。
  2. 利用SMB协议执行远程命令。
  3. 清理痕迹以防被管理员发现。

攻击工具选择

我们使用Impacket工具包中的psexec.py模块,该工具可以通过SMB协议在目标主机上执行命令。

POC代码实现

以下是利用psexec.py实现远程命令执行的代码:

<pre><code class="language-bash"># 使用Impacket实现对目标主机的SMB登录与命令执行 python3 psexec.py &lt;domain&gt;/&lt;username&gt;:&lt;password&gt;@&lt;target-ip&gt;</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的技巧

  1. 修改Impacket工具默认生成的二进制文件,使其更难被杀软检测。
  2. 使用内存加载技术,避免在磁盘上留下攻击痕迹。
  3. 尽量伪装命令,例如调用常见系统进程(如svchost.exe)。

---

四、WMI与PowerShell:隐蔽的远程执行手段

为什么选择WMI?

WMI(Windows Management Instrumentation)允许管理员远程管理设备和监控系统信息。攻击者常利用其强大的远程执行能力,隐蔽地控制目标主机。

POC代码实现

我们可以使用Python中的wmiexec.py工具实现远程命令执行。

<pre><code class="language-bash"># 使用wmiexec.py执行远程命令 python3 wmiexec.py &lt;domain&gt;/&lt;username&gt;:&lt;password&gt;@&lt;target-ip&gt;</code></pre>

示例: <pre><code class="language-bash"># 假设目标IP为192.168.1.102 python3 wmiexec.py user1:P@[email protected] &quot;ipconfig&quot;</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>

黑客示意图

绕过检测的技巧

  1. 禁用脚本日志:攻击者可以尝试通过修改日志配置隐藏PowerShell执行记录。
  2. 使用加密的Payload:通过对脚本加密,防止被静态分析。

---

五、Kerberos黄金票据:横向移动的终极武器

Kerberos是一种经典的身份验证协议。通过窃取域控中的KRBTGT账户哈希,攻击者可以伪造任意用户的认证票据,完成横向移动。

黑客示意图

攻击流程

  1. 窃取KRBTGT哈希值。
  2. 使用Mimikatz生成黄金票据。
  3. 伪装为域内任意用户,登录目标主机。

黄金票据的生成

以下是生成黄金票据的典型Mimikatz命令:

<pre><code class="language-bash"># 使用Mimikatz生成黄金票据 kerberos::golden /user:administrator /domain:example.com /sid:S-1-5-21-1234567890 /krbtgt:&lt;krbtgt_hash&gt; /id:500</code></pre>

生成的票据加载到内存后,攻击者即可无障碍访问域内资源。

---

六、个人经验分享:如何规避常见失误

  1. 重视日志清理
  2. 攻击者的每一步操作都可能被安全设备记录,确保清理Windows事件日志(如Security、PowerShell等)。

  1. 避免过度依赖工具
  2. 尽管工具如Impacket、Mimikatz功能强大,但其行为容易被特征化。建议根据实际需求开发定制化工具。

  1. 流量伪装
  2. 横向移动过程中产生的SMB、WMI流量可疑性较高,建议使用流量加密或协议混淆技术。

黑客示意图

---

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