聊内网渗透横向移动是绕不开的核心话题。我这些年一直在做授权环境下的安全测试和红队评估十次项目里至少有八次最终能不能触达核心资产关键不在于最初那个漏洞有多刁钻而在于你能不能在拿到一台普通主机之后沿着网络信任关系一步一步移动到真正有价值的目标上。这篇文章把横向移动从基础概念到实际操作经验完整梳理一遍既适合准备入门安全测试的初学者也适合做过一些渗透但还没系统整理过横向移动思路的朋友内容偏向原理、方法论和防御检测视角不展开具体工具的完整操作命令。1. 先搞懂横向移动它到底是内网渗透里的哪一步1.1 横向移动和纵向提权别再把两件事混为一谈很多新人第一次接触内网渗透时最容易把横向移动和提权搞混。横向移动的核心是“同一权限层级从一台主机跳到另一台主机”。举个例子你通过一个Web漏洞拿下了内网里的A主机权限是普通域用户然后你用这枚普通域用户凭据去登录B主机这就是横向移动。关键在于你的权限级别没有变变的只是你所在的位置。纵向提权则是另一个维度在某一台主机内部从低权限用户提升到高权限用户比如从普通用户提到System或管理员。两者常常配合使用先在一台机器上提权到管理员然后借助管理员权限获取更多凭据再横向移动到下一台机器。这个“提权-收集-横移-再收集”的循环才是内网渗透里最常见的节奏。我见过不少项目新人一进内网就想着怎么打域控结果连自己所在主机处于什么网络位置都没搞清楚。先分清横移和提权这两个概念后面才不会越走越乱。横向移动关心的是“面”的扩张提权关心的是“层”的深入两条思路要放在同一张作战图里看。1.2 一条攻击链里横移到底站在哪个位置完整的内网渗透过程可以粗略分成几个阶段入口突破、建立立足点、内网信息收集、横向移动、核心目标访问。入口突破是拿外网打点比如一个Web漏洞或者钓鱼建立立足点是在目标内网里拥有一台可控主机内网信息收集是搞清楚网络里有什么横向移动则是从立足点出发逐步扩大控制范围最后才是访问业务系统、获取数据或者拿下关键基础设施。横向移动在整个链条里充当“中间路段”。入口再漂亮如果只停在第一台主机上那你的成果就局限在一个节点反过来横向移动做得好一枚普通域用户的哈希都可能变成打开几十台主机大门的钥匙。在攻防演练当中很多防守方最头疼的恰恰也是横移阶段因为这一步通常意味着攻击者已经在内部“跑起来了”而且利用的都是合法凭据和正常的系统功能。所以要理解横向移动不能把它当成一个孤立的技巧它是连接“单点突破”和“目标达成”的桥梁。判断一个安全测试人员的成熟度很多时候就看他能不能在这一步保持清晰思路而不是拿到几台主机就到处乱试。1.3 哪些场景会用到这些技巧合规边界先讲清楚横向移动技术主要用在三类场景商业渗透测试、红队攻防演练、安全体系评估。这些场景都有一个共同前提——你事先获得了目标单位的书面授权并且测试范围、测试时间、可以触碰的数据范围都有明确约定。没有授权就做这些事无论技术多炫性质都会完全不同这一点必须先说清楚。即使在授权范围内也要注意操作边界。横向移动会使用到真实凭据、会登录真实服务器、会在目标网络里产生大量连接记录。项目执行时我一般会跟客户先确认清楚哪些网段允许测试、哪些服务器不能碰、发现真实业务问题时的上报流程是什么。这些约定不是形式主义而是保护客户也保护自己。这篇文章后面提到的所有技术点默认都是“在合法授权前提下从安全测试视角去理解攻击原理和防守方法”。原理搞懂了你既可以用来评估网络风险也能用来设计检测规则这才是安全从业者该有的姿态。2. 动手前的信息收集横向移动成败的关键第一步2.1 画网络拓扑几条常规命令就能看出内网大概结构我在项目里经常跟新人说一句话你连地图都没有就别急着出发。横向移动之前的第一件事是尽可能把目标内网的拓扑结构还原出来。最基础的手段就是在一台已控制主机上执行几条Windows系统自带命令。ipconfig /all是第一步。它能看到当前主机自己的IP地址、子网掩码、默认网关、DNS服务器、DHCP服务器信息。如果你所在网段是10.10.x.x而DNS是10.20.x.x说明内网里大概率还有别的网段。多拿几台主机的ipconfig结果对比网络分段情况就能看个大概。arp -a特别实用它显示本机的ARP缓存里面记录着同一二层广播域内最近通信过的IP和MAC地址。拿到ARP缓存后我通常会和自己的已知设备清单做对照新发现的地址就是潜在的横向移动目标。route print可以看到本机路由表判断是否存在到其他网段的路由如果有多条活动路由说明这台主机的网络位置比想象中更重要。还有net view /domain这个命令可以粗略查看当前域环境和工作组环境里的机器列表。注意它在某些加固环境里会被拒绝访问或返回空结果这本身就是一种信息说明网络里可能做了访问控制或主机过滤。2.2 定位本机角色我的主机是什么身份、什么权限画完地图下一步是搞清楚“我在哪、我是谁”。whoami /all是必看的命令它会列出当前用户的完整信息包括用户名、所属组、特权列表。如果当前用户属于“Domain Users”组那你只是普通域用户如果属于“Domain Admins”那基本可以直接触碰域内大部分资源了。systeminfo可以看到系统版本、补丁情况、主机名等。判断机器角色也很重要这台机器是域控、域成员服务器、普通工作站还是工作组设备不同角色的信任边界完全不同。域控是内网的核心节点域成员的信任范围取决于域策略而工作组设备之间的信任关系通常就靠自己维护的本地账号。还有一个容易被忽略的点检查当前主机是否是多网卡主机。ipconfig /all结果里如果出现多个处于活跃状态的网卡那这台主机很可能就是一台跳板机或者堡垒机它天然连接了多个网络分区。这样的主机在横向移动时价值极高但也意味着它会被防守方重点盯防。2.3 判断可达性哪些主机能连通哪些过不去拓扑和角色都清楚了接下来是连通性探测。横向移动的前提是你能和目标主机建立网络会话如果两台主机之间根本不通再牛的技巧也使不上劲。常规探测手段包括ping、tracert、Test-NetConnection这些。ping能确认目标IP是否在线tracert可以看到路径经过哪些节点帮助判断中间是否跨了防火墙或者路由器。netstat -ano可以查看当前主机所有活跃连接这里往往藏着惊喜——你控制的主机可能正与多台内网服务器保持着连接那些IP就是最值得优先探测的目标。我习惯把所有探测结果整理成一个表格IP地址、在线状态、开放端口、操作系统猜测、备注。这个工作看起来枯燥但到后面横移时会节省大量时间。很多人栽在横移环节不是因为技术不到位而是因为信息收集时太随意目标清单都没整理清楚就跑去做认证。2.4 凭据资产盘点本机缓存和已获得的会话里有什么横向移动的核心资产是“凭据”。凭据不只有明文密码还包括域哈希、凭据缓存、服务账号密钥、缓存的Kerberos票据、浏览器保存的登录信息等等。拿到一台主机后的第一件事就是系统性地盘点这台机器上可能存在的凭据。本机信息收集阶段主要看几个地方已登录用户的会话、存储的凭据、计划任务里配置的账号、服务启动账号、本地密码缓存。这些内容在系统里都有对应的命令和工具可以查看具体细节我不展开写法但你需要理解一个逻辑横向移动能不能继续推进往往取决于这一步你能收拢多少可复用的凭据资产。我个人经验是在授权测试中会专门建一个凭据台账记录每一条凭据的来源、作用范围、是否验证可用。这不是为了堆数量而是为了后续移动时能快速匹配“哪台机器用哪条凭据”。很多人横移到一半卡住就是凭据太多没有整理试到后面自己都乱了。3. 核心横向移动技术原理拆解与检测视角3.1 哈希传递Pass-the-Hash为什么不需要知道明文密码也能登录哈希传递是横向移动里最经典的技术之一背后的原理和Windows的NTLM认证机制强相关。NTLM认证过程中客户端并不需要真的把明文密码发给服务器而是使用密码的NT哈希作为身份凭证完成一个挑战响应流程。换句话说只要攻击者拿到了某个用户的NT哈希就可以冒充那个用户去访问服务即使完全不知道明文密码。这也是为什么内网里抓哈希如此重要。很多安全书籍都把它列为横移技术的入门第一课。从检测视角来看哈希传递的特征非常明显认证过程中不需要明文密码并且往往会出现一组从同一台来源主机发起的大量认证请求。防守方如果部署了NTLM认证日志采集就能通过异常的网络登录事件追踪到这类行为。我在实际项目里更关注一个细节哈希传递并不仅限于SMB服务很多支持NTLM认证的服务都可能被这个思路影响。所以单纯封锁某个端口并不能彻底解决问题关键还是减少可被复用的哈希值散落到各台主机上的情况。后面加固清单里我会再提到这一点。3.2 票据传递Pass-the-TicketKerberos体系下的横向移动逻辑在Windows域环境里Kerberos是默认的认证协议。Kerberos的核心是票据机制客户端先向域控申请一张TGT再用TGT申请访问具体服务的ST服务票据。整个过程不传输密码而是用一系列加密票据证明身份。如果拿到了某个用户的TGT或者ST就可以直接将这些票据注入内存冒充该用户访问对应服务这就是票据传递。黄金票据和白银票据是这块最常见的两个概念。黄金票据指的是通过掌握krbtgt账号的哈希伪造任意TGT——由于krbtgt是域控用来签发票据的账户拿到它的哈希就等于可以伪造域内任意用户的身份。白银票据则是对特定服务进行伪造影响范围更小但同样危险。这些技术都需要先拿下域内高权限账号因此不是横移的起点而是横移深入后的强有力手段。检测票据传递比哈希传递更复杂因为票据本身是合法结构日志里看到的是正常的Kerberos服务请求。防守方通常要结合用户行为基线来分析某个用户突然从异常主机发起大量票据请求或者TGT的生命周期明显超出正常范围这些都是值得怀疑的信号。3.3 远程执行通道选型WMI、计划任务、PsExec的原理对比有了凭据还需要一个“在目标机器上执行命令”的通道。内网渗透里最常用的几种远程执行方式包括WMI、计划任务和PsExec类服务管理工具它们调用的其实是Windows自身的管理机制。通道类型实现原理典型端口默认权限要求行为特征WMI远程执行通过Windows Management Instrumentation远程创建进程135、动态端口目标管理员权限进程创建事件命令行可见计划任务远程创建计划任务并触发执行445、RPC管理员权限事件ID 4698、4688PsExec类工具创建Windows远程服务并启动服务执行命令445、139管理员权限服务创建事件ID 7045PSEXESVC服务名从原理上看这三类方式都是“借用系统自身功能”普通安全软件很难直接说它们是恶意行为这也是它们长期被滥用的原因。但从防守方视角它们的差异很明显WMI方式会有大量WMI活动日志计划任务方式会留下任务注册记录PsExec类会在目标系统写服务记录。每种方式都有对应的检测切入点。我实际测试时的选型思路是优先选择“在目标环境里最不显眼”的通道。比如目标网络已经对SMB做了限制那PsExec类就不一定好用如果WMI的日志告警特别敏感那就需要评估计划任务方式。这个选型没有绝对最优完全取决于具体环境。3.4 远程桌面跳跃双跳场景的实现逻辑和限制远程桌面RDP也是横向移动的高频通道很多安全团队内部排查网络问题时也在用。RDP最方便的地方在于直接打开图形化桌面可以方便地操作目标机器上的程序但它在横向移动场景里有一个经典障碍——双跳问题。所谓双跳是指你先通过RDP登录到A主机然后又在A主机上通过RDP连接到B主机。默认情况下RDP登录的凭据会在会话中保留但受CredSSP和NLA等机制限制第二跳往往无法直接复用第一跳的凭据必须重新输入密码或者使用保存的凭据。这也是为什么很多横移场景里RDP更多被当作“最后一公里”的工具使用中间的移动依靠其他无交互通道完成。在授权项目里我会尽量限制RDP的操作频率因为它会在目标主机上产生明显的登录和桌面会话记录对后续排查影响比较大。如果确实需要RDP至少要清楚它会留下哪些日志痕迹并且提前和防守方沟通好测试窗口。4. 实操现场的经验与避坑笔记4.1 杀软和EDR哪些动作最容易触发告警现在的企业内网里纯裸奔的Windows主机已经不多了EDR、杀软、主机入侵检测工具的覆盖率越来越高。横向移动过程中最容易触发告警的动作一般集中在三件事大量失败登录请求、服务创建行为、异常的计划任务注册。这些都是横移技术的共性特征防守方的检测规则也喜欢从这些位置下手。我在测试时比较注意控制节奏。比如拿到一批凭据后不是一次性对几十台机器做尝试而是先挑选2到3台目标验证凭据有效性再逐步扩大范围。这样做一方面能减少日志告警被触发的概率另一方面也能及时发现凭据是否已经被目标侧失效避免浪费时间。另一个容易被忽视的点是执行体本身。很多横移工具会把可执行文件先落地到目标磁盘再运行如果落地路径和文件名比较可疑EDR很容易直接拦截。所以我的习惯是尽量使用目标的系统自带能力少做文件落地这也呼应了前面“通道选型”的思路。4.2 网络隔离VLAN和ACL怎么改变横移路径理想状态下的横移路径是“从入口主机直接跳到目标服务器”但真实内网很少这么顺畅。企业网络里普遍存在VLAN隔离、防火墙策略、终端准入控制很多网段之间默认不通或者只开放了特定端口。这意味着横向移动的路径往往是绕行的你必须接受“多跳几步”的现实。我曾经在一个项目里控制了一台办公网主机但目标核心数据在独立的服务器网段办公网和服务器网段之间只放行了特定业务端口。最后能走通的路线是先横移到一台双网卡跳板机再从跳板机进入服务器网段。整个过程并不是技术多复杂而是信息收集阶段就发现了这条“隐蔽通道”。所以做横移千万不要死盯着“目标机器”要盯着“目标机器所在网段的入口”。理解防火墙和ACL的策略逻辑比记住几十种横移工具更有用。碰到网络隔离环境先画清楚网段之间的通行关系再决定下一步往哪台机器跳。4.3 日志留痕一次横移会在服务器上留下什么横向移动不是无痕操作。相反它会在目标系统产生大量日志只要防守方日志收集齐全还原整个横移路径并不困难。Windows事件日志里最常见的横移痕迹包括登录成功事件、登录失败事件、特权账号使用事件、计划任务创建事件、服务安装事件等。以一次典型的PsExec横移为例目标主机上会留下来自远程IP的网络登录成功记录、一个新的服务创建记录、服务进程启动记录。这三类日志放在时间轴上排列基本就能勾勒出“谁、从哪、通过什么方式、在什么时间”进行了远程操作。如果防守方再配合源主机日志甚至可以追溯到发起横移的第一台机器。我建议做安全测试的朋友养成一个习惯每做一次横移操作就顺手去看一下目标机上对应的事件日志。不是为了清除痕迹而是为了理解你的操作在防守方眼里长什么样。你越清楚日志里有什么就越能评估自己暴露的窗口有多大。4.4 节奏规划授权测试中如何安排探测和移动顺序横向移动最容易犯的错误就是无节奏。拿到一批凭据之后恨不得在最短时间内把所有目标都摸一遍结果往往是告警风暴四起测试还没完成就被防守方掐断。我在项目里会刻意把横移过程分成几个阶段先小范围验证凭据再局部扩大目标清单最后才触碰核心服务器。每个阶段之间留出观察窗口确认没有产生异常告警后再继续。节奏控制的另一个好处是方便记录和复盘。攻防演练结束后客户一定会问你走了哪些路径、碰到了哪些资产、哪些检测规则失效了。如果整个横移过程是一笔糊涂账报告根本没法写。这里也分享一个小习惯每横移到一台新主机我都会第一时间记录这台机器的主机名、IP、当前权限、可用凭据、连接关系。这个动作看起来繁琐但它让整个测试过程变得可追溯也让你在后续操作时有据可查。做安全测试思路清晰比操作多重要得多。5. 从防守方视角看横向移动检测与加固5.1 关键日志事件横移行为在日志里的指纹横移检测最基础的原料就是Windows事件日志。下面这些事件ID是我在做检测规则时最常关注的也是安全团队做攻防复盘时必看的项目。事件ID日志来源含义与横移关联4624安全日志登录成功重点关注网络登录类型3和远程交互登录类型104625安全日志登录失败短时间内大量聚集通常是凭据暴力尝试信号4672安全日志给与调用者特殊权限管理员账号登录时常伴随出现4688安全日志进程创建可结合命令行参数识别远程执行行为4698安全日志创建计划任务远程计划任务横移的直接痕迹7045系统日志安装服务PsExec类横移的典型特征4776安全日志NTLM凭据验证哈希传递行为常体现在这里单看一条日志往往说明不了太多但把多个事件ID按时间关联起来横移路径就清晰了。比如某台普通工作站连续出现4624登录成功随后在域控上出现7045服务安装事件这条时间线本身就值得告警。5.2 检测思路几个值得落地的规则场景有了日志事件接下来就是把它们组合成检测规则。我常用的几个横移检测场景包括同一账号短时间内从多台主机发起登录、高权限账号从非管理主机登录到服务器、异常的计划任务创建或服务安装行为、从文件服务器或普通工作站跳转到域控的异常连接。具体实现上可以基于Windows Event Log做简单的计数关联也可以用SIEM平台做行为基线分析。比如先统计每台主机历史上对外发起网络登录的频次一旦出现某台以前从不主动登录其他主机的机器突然产生了大量登录请求就需要重点关注。这种“基于基线找异常”的思路比死板匹配特征更能发现新型横移手法。从一线经验看检测规则不是越多越好而是要和自身网络环境匹配。先梳理清楚哪些应用会合法产生网络登录、哪些系统会正常创建计划任务把白名单建好再上检测规则告警质量才会有效。5.3 加固清单让横向移动难度提升一个量级横向移动之所以能施展根本原因是“凭据复用范围太广”和“执行通道过于开放”。针对这两点做加固效果立竿见影。下面是一份我在安全评估项目中经常给出的加固建议清单。限制本地管理员权限在各终端的复用引入LAPS之类的机制管理本地管理员密码避免一台机器被控后所有机器都用同一密码。为高权限账号开启Credential Guard减少哈希和票据在内存中被提取的风险。对允许远程执行的通道进行最小化配置关闭非必要主机的WMI远程调用和计划任务远程创建权限。定期清理长期有效的服务账号和过期凭据避免“死账号”成为横移工具。网络层也不能落下。把域控、核心服务器、办公终端划分到不同安全域严格控制网段间访问策略。日志收集必须集中化光有日志没有分析能力出事之后一样看不清攻击者的完整路径。横向移动的核心威胁永远来自“相信内网是安全的”这种假设。内部网络必须像外网一样对待每一个远程执行通道都要有明确的业务理由。我在实际项目里最深的体会是横向移动的“技术含量”其实只占一半另一半来自你对目标网络环境的理解程度。把信息收集做扎实把每一步操作的日志影响想清楚搞清楚防守方会从哪个角度追踪你后面移动起来反而顺很多。这篇文章提到的所有技术点请务必只用于经过授权的测试和攻防演练安全的能力最终还是要用在让系统更稳固这件事上。