尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

域横向渗透实战:从信息收集到权限提升的完整攻击路径解析

域横向渗透实战:从信息收集到权限提升的完整攻击路径解析 1. 项目概述一次真实的域横向渗透实战复盘最近在整理内部安全培训的笔记翻到了之前一次针对某企业内网的渗透测试记录。那次行动的核心目标就是实现“域横向移动”。这几乎是每一个红队或安全评估人员在拿到内网初始立足点后必须面对的核心挑战。所谓“域横向”简单说就是从一个被攻陷的内网节点比如一台普通员工的办公电脑出发利用各种技术和漏洞逐步扩大战果最终控制整个域网络中的关键服务器甚至拿下域控制器Domain Controller, DC。这个过程充满了与防御体系的对抗每一步都需要精密的策略和扎实的技术。今天我就结合那次实战把“小迪安全课堂”里关于域横向的要点掰开揉碎了讲清楚希望能给正在学习内网安全的你提供一份可以直接“抄作业”的实战指南。2. 核心思路与攻击路径设计2.1 为什么域横向如此关键在标准的Windows域环境中所有计算机和用户账户都由域控制器统一管理。一旦拿下域控制器就相当于拿到了整个网络的“皇冠”。但攻击者通常无法直接接触到DC他们往往是从一个边缘节点如通过钓鱼邮件拿下的用户主机开始。从边缘到核心的这段旅程就是横向移动。它的价值在于权限提升、信息收集、持久化控制。你不能满足于只控制一台无关紧要的电脑必须向内网纵深推进寻找存放数据库、源代码、财务数据的核心服务器并建立稳固的后门。2.2 攻击路径的通用模型基于无数次实战我总结了一个四阶段的通用模型这比单纯罗列工具更有用信息收集与侦察这是所有行动的基础。你需要知道自己在哪里当前主机周围有什么网络结构、存活主机、开放端口以及谁是“重要人物”域用户、域管理员、高价值服务器。凭证获取与破解内网安全的核心是身份认证。获取更多的用户名和密码或密码哈希是横向移动的“弹药”。这些凭证可能藏在当前主机的内存、文件系统或注册表中。利用与执行拿到凭证后你需要一种方式利用这些凭证在另一台主机上执行命令。常见的方式包括使用Windows自带的远程管理工具如WMI、PsExec、传递哈希Pass-the-Hash、或利用服务漏洞如MS17-010永恒之蓝。权限提升与持久化在新控制的主机上你获得的可能只是一个普通用户权限。你需要将其提升为本地管理员或系统权限然后植入后门确保即使被发现也能再次回来。注意这个模型是循环迭代的。在每一台新控制的主机上你都要重复信息收集和凭证获取的步骤像滚雪球一样积累优势。3. 实战工具链与关键操作解析光有思路不够得有趁手的兵器。下面我结合实战详解几个核心环节的工具和命令。3.1 第一阶段立足点信息收集假设我们已经通过某种方式在一台域内的Windows 10主机上获得了一个Meterpreter会话一个命令执行通道。第一步不是乱跑而是彻底了解这台“跳板机”。1. 基础系统与网络信息# 查看当前用户和权限 whoami /all # 查看系统信息包括域名 systeminfo # 查看网络配置和邻接信息 ipconfig /all arp -a # 查看路由表判断网络分段 route print这些命令能告诉你当前主机是否在域内、它的IP地址、DNS服务器很可能就是域控制器以及网络的大致结构。2. 域内信息收集这是重中之重。我们主要依靠net命令和PowerShell。# 查询当前域名称 net view /domain # 查询域内所有计算机列表可能需要权限 net view /domain:你的域名 # 查询域内所有用户组 net group /domain # 查询“域管理员”组成员这是我们的终极目标 net group Domain Admins /domain # 查询域控制器 net group Domain Controllers /domain更强大的信息收集可以使用PowerShell脚本如PowerView是PowerSploit框架的一部分。它可以更隐蔽、更详细地枚举域内用户、计算机、组策略、共享等。# 导入PowerView模块后示例命令 Get-NetDomain # 获取域信息 Get-NetComputer -OperatingSystem *Server* # 查找所有服务器操作系统的主机 Find-LocalAdminAccess # 寻找当前用户具有本地管理员权限的主机3. 本地凭证搜寻凭证可能就在眼前。检查内存中的密码使用Mimikatz。这是内网渗透的“瑞士军刀”但杀毒软件盯得很紧。privilege::debug # 提升权限 sekurlsa::logonpasswords # 抓取内存中的明文密码和哈希检查保存的凭据使用cmdkey /list查看Windows凭据管理器里保存的远程登录凭证。查找配置文件中的密码搜索硬盘上的*.config,*.xml,*.txt,*.bat等文件用findstr命令搜索“password”、“pwd”、“连接字符串”等关键词。实操心得信息收集阶段一定要“静默”。大量使用net view可能会在域控日志中产生噪音。优先使用PowerShell并且考虑使用-Delay参数或随机延时来降低扫描速度模拟正常流量。此外不要忽略本地的Hosts文件、最近的文档记录和浏览器历史里面可能包含内部系统地址和访问习惯。3.2 第二阶段横向移动手段详解拿到一些凭证用户名密码或用户名哈希后就可以尝试“移动”了。1. 使用WMI执行命令WMI是Windows内置的强大管理框架非常适合横向移动。# 使用明文密码在远程主机上执行命令 wmic /node:192.168.1.10 /user:域\用户名 /password:密码 process call create cmd.exe /c whoami c:\test.txt # 使用哈希进行传递Pass-the-Hash需要借助Impacket工具包中的wmiexec.py # 在攻击机上执行 python3 wmiexec.py -hashes LM哈希:NT哈希 域/用户名目标IP优势WMI服务默认开启利用的是135端口和后续的动态端口流量相对隐蔽。劣势命令执行结果默认不会直接回显需要自己想办法读取输出文件。2. 使用PsExec方式PsExec是SysInternals工具但也被攻击者广泛利用。它通过ADMIN$共享上传服务二进制文件并创建服务来执行命令。# 使用Impacket中的psexec.py同样支持哈希传递 python3 psexec.py -hashes LM哈希:NT哈希 域/用户名目标IP优势能获得一个交互式的命令行shell非常方便。劣势会在目标系统创建明显的服务默认名称为PSEXESVC并会在磁盘上留下可执行文件容易被EDR终端检测与响应产品检测。3. 计划任务Schtasks通过创建远程计划任务来执行命令或Payload。schtasks /create /s 192.168.1.10 /u 域\用户名 /p 密码 /tn Updater /tr C:\shell.exe /sc hourly /ru SYSTEM schtasks /run /s 192.168.1.10 /tn Updater优势一种标准的系统管理方式混淆性强。劣势需要知道远程主机的确切时间且创建的任务会在任务计划程序库中可见。4. 哈希传递攻击这是域横向中最经典、最高效的手段之一。你不需要破解出明文密码只要拥有用户的NTLM哈希就可以利用该哈希向网络上的其他机器进行身份验证。前提是目标主机开启了SMB或WMI等服务且目标账户在该主机上有登录权限通常是本地管理员组。工具Mimikatz (sekurlsa::pth)、Impacket套件smbexec.py,wmiexec.py,psexec.py等。条件需要关闭目标系统的“受限制的管理员模式”或防御NTLM中继攻击的安全策略如EPA、SMB签名但在很多传统或配置不当的内网中这个条件常常满足。注意事项横向移动时目标选择至关重要。不要盲目攻击所有主机。优先攻击那些由信息收集阶段发现的、当前用户可能有管理权限的主机Find-LocalAdminAccess的结果。操作系统版本较老如Windows 7, Server 2008的主机可能存在未修补的高危漏洞。角色重要的主机如文件服务器、备份服务器、运维跳板机这些主机上往往存有更多凭证或拥有更高权限。4. 利用漏洞进行横向移动当凭证攻击受阻例如所有账户都使用了强密码且没有重用或者想开辟新的路径时就需要利用系统或服务漏洞。4.1 MS17-010永恒之蓝尽管已是“古董级”漏洞但在一些封闭、更新滞后的内网如工控网、某些企事业单位中依然存在。利用该漏洞无需任何凭证即可获取系统权限。利用流程使用nmap脚本或MSF的auxiliary/scanner/smb/smb_ms17_010模块扫描内网寻找存在漏洞的主机。使用MSF的exploit/windows/smb/ms17_010_eternalblue模块直接攻击获取Shell。价值这是一个“从无到有”的突破点尤其当你的跳板机权限很低无法获取有效域凭证时。4.2 其他常见服务漏洞RDP漏洞如CVE-2019-0708BlueKeep远程代码执行危害极大。SMB漏洞除MS17-010外还有CVE-2020-0796SMBGhost等。WinRM漏洞如果服务器开启了WinRM服务可能存在配置缺陷或漏洞可被利用。漏洞利用的总体思路用nmap或Nessus进行内网漏洞扫描识别出存在已知高危漏洞的主机优先攻击。这通常比爆破弱密码更快、更直接。5. 权限提升与持久化安置成功横向移动到一台新主机后你获得的可能只是一个普通用户会话。下一步就是本地提权。5.1 本地信息收集第二轮在新主机上重复信息收集步骤但重点不同系统补丁情况systeminfo寻找缺失的本地提权漏洞补丁。安装的软件wmic product get name,version或检查Program Files目录。老旧版本的第三方软件如数据库、管理工具常常是提权的突破口。服务与进程查看是否有以SYSTEM权限运行但权限配置不当的服务可写路径、脆弱的DLL等。使用accesschk.exeSysInternals工具或PowerUp.ps1脚本来系统性地寻找提权弱点。计划任务查看是否有自定义的计划任务其执行的文件是否当前用户可写。5.2 常用提权方法内核漏洞提权使用windows-exploit-suggester等工具比对系统补丁寻找公开的本地提权EXP如PrintNightmare, CVE-2021-1675/CVE-2021-34527。这是最直接的方法。服务提权服务路径漏洞如果一个服务执行的二进制文件路径包含空格且未用引号引起来Windows会按特定顺序寻找可执行文件。攻击者可以在有写权限的目录下放置一个恶意程序。服务权限配置不当服务本身的访问控制列表允许普通用户修改、重启或重配置服务。使用PowerUp的Get-ModifiableService函数可以快速发现。AlwaysInstallElevated检查注册表项如果两个相关键值均被设为1则任何MSI安装包都将以SYSTEM权限运行。PowerUp的Get-RegistryAlwaysInstallElevated和Write-UserAddMSI可以一键利用。凭证窃取再次在这台可能有更高权限用户登录过的新主机上再次运行Mimikatz可能会抓到域管理员或其他高权限用户的哈希。5.3 持久化后门提权到SYSTEM或管理员后在撤离前必须留下后门。黄金票据如果你已经拿到了域控制器的krbtgt账户的哈希这通常需要已控制域控制器你可以伪造任意用户的TGT票据授予票据直接生成一个域管理员权限的访问凭证。这是最强大的域持久化手段。白银票据针对特定服务如CIFS文件共享伪造服务票据无需与域控制器交互更隐蔽。创建隐藏账户在本地或域中创建一个隐藏的管理员账户如用户名后加$的账户在命令行下不可见但在管理工具中可见。计划任务后门创建定时启动的计划任务执行Payload。服务后门创建一个自启动的恶意系统服务。启动项后门将Payload放入用户或系统的启动目录。重要提醒持久化操作要尽可能隐蔽和多样。不要只依赖一种方法。同时要清楚每种后门的触发条件和可能被检测到的点。例如黄金票据虽然强大但伪造的票据如果有效期设置过长在启用高级审计策略的域中可能被检测出异常。6. 防御视角与对抗策略作为一个攻击方了解防御手段才能更好地规避。从防御者角度看应对域横向移动需要多层布防最小权限原则严格限制域用户对非必要主机的本地管理员权限。普通办公用户绝不应该在服务器上拥有管理员权限。网络分段与防火墙将核心服务器如域控、数据库、财务系统置于独立的网段通过防火墙严格限制访问源仅允许管理跳板机访问阻断来自办公网的135、445、5985等端口的直接连接。强密码与多因素认证强制使用长且复杂的密码并对所有管理员账户启用多因素认证使密码哈希泄露的威力大减。禁用NTLM认证在域环境中尽可能启用并强制使用Kerberos认证禁用或限制古老的NTLM协议从根本上防范哈希传递攻击。启用SMB签名和LDAP签名/绑定这能有效防御基于SMB和LDAP的中间人攻击和哈希中继攻击。及时更新与漏洞管理严格的内网补丁管理流程确保所有主机尤其是服务器及时安装安全更新。对无法打补丁的系统采取虚拟补丁或其他补偿性控制措施。高级威胁检测部署EDR和SIEM系统监控异常行为例如同一账户在短时间内登录大量不同主机。来自非受信区域的WMI、PsExec、计划任务创建事件。使用已知攻击工具如Mimikatz、Impacket的特征行为。Kerberos票据请求异常如黄金票据特征。定期红蓝对抗演练最好的防御就是模拟真实的攻击。定期组织内部红队进行演练检验上述防御措施的有效性并持续改进。7. 典型问题排查与实战避坑指南在实际操作中你会遇到各种各样的问题。这里记录几个最常见的“坑”和解决办法。问题1使用WMI或PsExec连接时提示“拒绝访问”Access Denied。可能原因及排查凭证错误用户名、密码或哈希错误。重新核实尝试用net use \\目标IP\ipc$ /user:域\用户名 密码测试SMB连接。权限不足使用的账户在目标主机上不是管理员组成员。回到信息收集阶段用Find-LocalAdminAccess重新定位目标。防火墙阻挡目标主机的防火墙阻止了135WMI或445SMB端口。尝试其他端口或协议如WinRM5985/5986。UAC远程限制对于Windows Vista及以上系统即使你是远程管理员默认情况下远程连接时获得的令牌是“过滤”的没有完全的管理员权限。需要在本地策略中禁用“用户账户控制以管理员批准模式运行所有管理员”或“用户账户控制用于内置管理员账户的管理员批准模式”不推荐生产环境或者使用runas或计划任务等方式绕过。问题2Mimikatz运行失败提示“ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)”原因这是最典型的权限问题。Mimikatz需要SeDebugPrivilege权限来读取LSASS进程内存。解决确保你以管理员身份运行了Mimikatz。在Meterpreter中先使用getsystem命令提权到SYSTEM。如果是在已获得的管理员CMD中可以尝试先输入privilege::debug如果返回“Privilege ‘20’ OK”则成功如果失败可能系统启用了受保护的进程PPL等更高级的防护。问题3哈希传递Pass-the-Hash攻击失败。排查步骤确认哈希类型确保你使用的是NTLM哈希通常是32位十六进制字符串而不是LM哈希或明文密码的其它表示形式。确认目标服务确保目标主机开启了SMB或WMI服务。用nmap扫描一下445和135端口。确认防御措施检查目标系统是否启用了“受限制的管理员模式”Restricted Admin Mode此模式会阻止哈希传递。命令reg query HKLM\System\CurrentControlSet\Control\Lsa /v RestrictedAdminMode。如果存在且值为1则此路不通。尝试其他工具Impacket的wmiexec.py对哈希传递的支持很稳定可以多尝试几个工具如smbexec.py,psexec.py。问题4内网扫描速度太慢或被发现。优化与隐蔽技巧端口扫描不要用默认的nmap -sS -p 1-65535全端口扫。先扫关键端口如135,139,445,3389,5985定位存活主机和服务。主机发现使用ICMP Ping扫描nmap -sn可能被防火墙过滤。可以尝试使用net view、ARP扫描或基于DNS的枚举。降低速率在扫描命令中添加延时参数如nmap --scan-delay 2s --max-rate 10。分散源IP如果控制有多台跳板机可以将扫描任务分散开。利用正常协议使用LDAP查询来枚举域内计算机这比端口扫描更隐蔽。域横向移动是一场渗透测试中技术含量最高、也最考验耐心的部分。它没有一成不变的公式需要你根据目标网络的具体情况灵活组合信息收集、凭证窃取、漏洞利用和权限提升等多种技术。每一次成功的横向都建立在对前期信息的充分分析和利用之上。记住慢就是快稳扎稳打清理痕迹步步为营才能最终触及那个象征着内网最高权限的域控制器。
返回列表