0x01 内网渗透的幕后探秘
在企业网络环境中,内网渗透横向移动是攻击者获取重要数据和进一步控制网络资源的关键步骤。为了深入了解这部分内容,我们需要从软件和系统架构的角度入手。企业通常使用域网络架构,其中域控制器(DC)、数据库服务器、文件服务器等都处于内网环境。攻击者通常会通过各种手段进入内网,并尝试在多个系统之间移动,以扩大访问权限。
内网横向移动的主要目标是获得域管理员权限,因为它能为攻击者提供几乎不受限制的访问能力。在这种架构中,攻击者可以通过多种技术手段来实现横向移动,包括利用已知漏洞、抓取凭据以及使用网络协议漏洞等。
攻击原理与漏洞成因
内网横向移动的一些常见手法包括利用 SMB(Server Message Block)、RDP(Remote Desktop Protocol)、WMI(Windows Management Instrumentation)等协议。这些协议通常用于系统管理,但在某些情况下,它们可能存在配置不当或漏洞,导致被攻击者利用。
其中,SMB协议因其广泛使用而成为攻击者的主要目标。它允许文件共享、打印机共享和其他网络操作,且在很多Windows环境中默认启用。攻击者通常会利用漏洞(如永恒之蓝)或弱口令来访问 SMB 服务,从而实现横向移动。
实战环境搭建
为了模拟真实的攻击场景,我们需要搭建一个简单的内网环境。其中包括:

- 主机A:一个普通用户工作站,运行Windows 10,安装有一些常见软件。
- 主机B:一个文件服务器,运行Windows Server 2016,启用了SMB服务。
- 域控制器(DC):运行Windows Server 2019,管理域用户和权限。
确保这些系统可以通过内部网络相互通讯,并且设定一些典型错误配置,例如,使用弱口令、未打补丁的SMB服务等。
POC/EXP代码实现

下面是一段Ruby代码,可以用来尝试连接一个SMB服务并进行简单的横向移动:
<pre><code class="language-ruby">require 'smbclient'
配置SMB客户端
client = SMBClient.new( host: '192.168.1.2', # SMB服务器地址 share: 'shared', # 共享目录名称 user: 'guest', # 用户名 password: 'password' # 密码 )
列出共享目录中的文件
client.ls.each do |file| puts "找到文件: #{file.name}" end
尝试下载一个文件
client.get('example.txt', '/local/path/example.txt') puts "文件已下载"
如果下载成功,说明可以通过SMB进行横向移动</code></pre>
这段代码演示了如何使用Ruby与SMB服务交互,尝试列出共享目录文件并下载一个文件。攻击者可以通过类似的方法进入文件服务器并通过文件共享服务进行横向移动。
绕过与免杀技巧
在实际攻击中,绕过检测和免杀是非常重要的步骤。攻击者可以使用以下技巧来规避检测:
- 加壳和混淆:使用工具对攻击载荷进行加壳和代码混淆,使其不容易被杀毒软件识别。
- 内存加载与无文件攻击:将恶意代码直接加载到内存中,避免在磁盘上留下痕迹。
- 流量伪装:在进行网络通信时,使用合法流量伪装恶意活动,例如将恶意流量伪装成HTTP流量。
检测与防御
为了检测和防御内网横向移动攻击,企业可以采取以下措施:

- 启用审计日志:对所有网络活动和系统更改启用审计日志,以便实时监控和分析可疑活动。
- 加强访问控制:限制对敏感资源的访问权限,确保只有经过授权的用户才能访问重要系统。
- 定期更新系统和应用程序:及时安装补丁,修复已知漏洞,降低攻击者利用漏洞进行横向移动的风险。
个人经验分享
在过去的渗透测试中,我发现很多企业在防御内网横向移动方面存在不足。例如,很多网络环境中仍然使用默认配置和弱口令,这为攻击者提供了可乘之机。此外,许多企业在网络分段和访问控制方面做得不够,导致攻击者一旦进入内网就能轻松移动。因此,我建议每个企业都应进行定期安全评估,识别和修复潜在的安全隐患。
内网渗透横向移动是一项复杂而具有挑战性的任务。作为一名渗透测试工程师,我的目标是不断研究新技术和工具,以提高攻击技术和防御能力。通过这些努力,我们可以更好地保护企业网络,抵御潜在的威胁。