ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

内网横向移动:原理、检测与防御加固全解析

内网横向移动:原理、检测与防御加固全解析 做了这么多年内网安全评估横向移动是我每次跟客户汇报时一定会单独拆开讲的部分。很多企业觉得边界防御做得够好了防火墙、入侵检测、杀毒软件全都上了结果攻击者只要想办法拿下一台不起眼的跳板机后续在内网里的移动反而比边界突破容易得多——横向移动说的正是攻击者在一台主机上站稳脚跟之后利用内网已有的信任关系、账号权限和协议机制向其他主机逐台扩展控制范围的过程。这篇内容我会站在安全评估和防御加固的角度把横向移动的原理、常见手法、检测方式和加固思路完整拆开讲一遍适合刚接触内网安全的新手也适合需要系统性梳理防御思路的安全工程师、运维管理员。先把话说在前面所有技术讨论都限定在获得授权的测试环境、企业自查或红队演练场景里不要在任何未经授权的系统上尝试。1. 横向移动到底是怎么回事1.1 什么是横向移动为什么说它是内网安全的“分水岭”很多人对网络攻击的理解停留在“打进来”这个层面觉得攻击者突破了边界、拿到一台服务器的权限就算大功告成。但真实情况完全不是这样。国内企业的内网环境普遍存在两个特点一是资产多、系统杂Windows、Linux、老旧的业务系统混在一起二是为了业务方便管理员往往把大量机器加入同一个域账号权限划分也相对粗放。攻击者突破边界拿到的往往只是一台边缘主机权限不高、价值有限真正的核心数据——数据库、财务系统、源码服务器——都在内网更深处。横向移动就是从这台低价值主机向高价值目标一步步移动的过程。它最能反映一个企业内网的真实安全水位如果攻击者在一台机器上待了好几天却始终拿不到第二台机器的权限说明内网的安全设计是有效的反过来只要拿到一台机器几个小时之内就能摸到域控或者核心数据库那就说明内网的信任模型已经失效了。横向移动这么重要本质原因就在这里——它是攻击者从“点”到“面”的转折点也是防守方最应该投入资源去监测和阻断的关键环节。从技术底层看横向移动能成功几乎都是因为内网“太信任”了。机器之间互相信任账号口令在多个系统里复用管理员习惯用同一个高权限账号做日常维护域内默认允许各种远程调用协议——这些对业务来说很方便对攻击者来说就是高速公路。理解了这一点后面所有技术和防御手段都能顺理成章地串起来。1.2 攻击者在横向移动阶段的目标清单横向移动不是盲目地到处乱试攻击者脑子里有一张很清晰的目标清单。排在第一位的是获取更多凭据——不管是明文密码、密码哈希还是Kerberos票据只要拿到新的凭据就意味着能打开新的机器第二位是提升权限从普通用户提升到本地管理员再想办法搞到域管理员的权限第三位是寻找高价值数据定位文件服务器、数据库、代码仓库的具体位置最后才是把这些数据传出去或者做持久化保证自己随时能回来。这张目标清单决定了横向移动的行为模式频繁的认证尝试、大量远程登录、异常的计划任务、奇怪的WMI调用、文件共享上的大规模文件访问。每一个行为单独看可能都不起眼但组合起来就是攻击者在内网里移动的脚印。防守方要做的事情就是让这些脚印变得非常明显、非常容易被发现同时从架构上尽可能压缩攻击者的移动空间。2. 横向移动的常见技术手法攻击视角拆解2.1 利用Windows远程管理通道从IPC共享到计划任务在Windows域环境里横向移动最经典的技术路径几乎都围绕着系统自带的远程管理机制展开。攻击者拿到一台主机权限后第一件事通常是用账号密码或哈希去尝试连接其他主机的IPC共享也就是命名管道。IPC共享本身没有实际的文件内容它的作用是提供进程间通信的通道但很多远程管理工具都依赖它来建立连接。有了IPC连接之后最常见的就是远程创建服务。Windows系统里有“服务”这种机制管理员可以远程在另一台机器上创建一个服务指向自己想要的程序然后启动它。这个操作本身是Windows的合法管理功能攻击者只是把“自己想要的程序”换成了控制命令、木马或者下载器。这类攻击手法之所以难防是因为它完全走的是系统正常管理路径不会触发任何漏洞利用的特征传统杀毒软件很难判断“创建服务”这个操作到底是管理员干的还是攻击者干的。类似的机制还有远程计划任务。攻击者可以在远程主机上注册一个计划任务指定运行时间、运行程序和运行账号到了时间任务就会自动执行攻击者就拿到了那台主机的控制权。还有WMI也就是Windows管理规范它提供了一整套远程查询和调用接口可以远程执行命令、查进程、查系统信息同样是系统自带的管理能力。我在实际评估中做过统计真正复杂的攻击手法反而少见绝大多数横向移动都集中在这几个系统机制上。原因很简单稳定、隐蔽、不需要额外上传工具。2.2 凭据复用密码哈希传递和票据传递是重灾区如果说远程管理通道是横向移动的“门”那凭据就是开门的“钥匙”。Windows系统里有一个长期存在的设计特点用户在登录时输入的密码会被计算成哈希值系统在验证身份时用的就是这串哈希而不是密码本身。这就引出了一个非常重要的攻击思路——哈希传递。攻击者如果拿到了某个账号的密码哈希不需要破解出明文密码直接拿着这个哈希去访问远程主机就能通过身份验证。尤其糟糕的是很多企业环境里管理员账号在大量机器上都是同样的密码一旦哈希被获取攻击者就能用它打开内网里几乎所有同密码的主机这个场景在真实安全评估里非常普遍。除了哈希传递还有基于Kerberos协议的票据传递。Kerberos是Windows域环境里默认的身份认证协议用户登录后会向域控申请一张票据之后访问各种服务时拿票据验证就行。攻击者可以从内存中提取系统里已有的票据也可以伪造票据——只要知道特定账号的密钥信息。这类攻击在域环境里的杀伤力非常大因为票据代表的是整个域认证体系里的信任而不是单台机器上的口令。凭据在横向移动里的核心地位怎么强调都不过分。攻击者会想尽办法从内存、注册表、配置文件、临时目录、桌面文件里收集账号信息包括明文密码、哈希、Kerberos票据、缓存的域凭据等等。所以后面讲防御的时候凭据保护永远是放在第一位的。2.3 利用“白名单”程序落地和远控横向移动还有一个常见配套动作把工具或恶意程序传到目标主机上并运行起来。这里攻击者会大量利用系统自带或被标记为可信的程序比如PowerShell、MSHTA、Regsvr32、rundll32这些。这些程序本身就是Windows的合法组件杀毒软件通常不会拦截攻击者把它们当作“白名单”来用加载执行恶意代码。举个例子PowerShell是Windows系统里强大的管理脚本工具攻击者可以在远程主机上通过计划任务或者WMI调用PowerShell让它从攻击者的服务器下载恶意脚本并直接执行整个过程不需要在目标主机的磁盘上留下任何文件。这种“无文件”落地方式给防御带来了极大的麻烦——你没法通过查杀文件的方式来发现它只能靠行为监测。这里需要特别强调一个安全边界问题攻击者之所以能利用这些白名单程序是因为它们本身就具备强大的管理能力企业在部署安全产品时不应该一味地封堵这些程序而应该通过日志、行为分析和应用白名单策略来限制它们的异常使用方式。指望“把PowerShell禁掉”来保安全在真实业务环境里几乎行不通。3. 从检测视角看横向移动防守方到底该盯什么3.1 日志是第一步Windows事件日志里的关键线索很多安全人员一听说横向移动就头疼觉得攻击手法这么多怎么盯得过来。其实横向移动的每一步都会在系统里留下日志痕迹关键是你知不知道该看哪些事件ID。这里我把最重要的几类整理出来关注点关键事件ID/日志来源异常信号账号登录成功4624登录类型3为网络登录一个账号短时间内从多台机器登录非常用账号出现在敏感服务器上账号登录失败4625大量不同账号的爆破尝试同一账号尝试登录多台主机特权账号使用4672特殊登录管理员账号在非工作时间或非预期主机上登录创建服务4697 / System日志7045陌生主机远程创建服务服务名称和路径异常创建计划任务4698 / TaskScheduler日志计划任务指向可疑路径触发时间和权限异常WMI活动Microsoft-Windows-WMI-Activity/Operational大量WMI进程创建、远程命名空间连接PowerShell执行Microsoft-Windows-PowerShell/OperationalPowerShell脚本块记录启用编码后的命令执行新进程创建4688 命令行记录常见横向移动工具的特征命令行不常见路径下的进程启动这里我想重点说一个实操技巧光看单条日志基本看不出什么问题因为每个事件单独看都像是正常管理动作。真正有效的做法是围绕“一台上网机横向扩展到多台服务器”的模式做关联分析。比如一个普通运维账号突然在三天内登录了二十台服务器这本身可能正常但如果这个账号平时主要负责的只是某一两个系统那就值得重点关注。安全分析的核心不是单点告警而是把散落在不同主机上的日志串成一个视图。3.2 流量侧监测哪些网络行为是横向移动的“异常形状”日志之外网络流量是检测横向移动的另一只眼睛。横向移动一定会产生主机与主机之间的通信流量而这些流量有明显的形状特征。比如哈希传递攻击往往会产生大量SMB协议请求攻击者在短时间内用同一组凭据去连接多台主机的445端口这个行为在流量里表现为连接到非常多不同IP的SMB会话。再比如远程创建服务的场景攻击者会先和远程主机建立IPC连接然后在远程主机上触发服务控制管理器相关的RPC调用。这些调用的频次、顺序和普通管理操作是有差异的。一些成熟的安全团队会专门在网络出口和核心交换节点做全流量镜像把内网东西向流量记录下来用流量分析平台去做行为建模。东西向流量——也就是内网服务器之间互访的流量——是横向移动检测的主战场一定不能只盯着南北向的边界流量。还有一个容易被忽略的点是时间维度。横向移动的每一步之间往往有较长的思考间隔攻击者需要侦察、尝试、验证整个链条可能持续几个小时甚至好几天。所以流量检测不能只看瞬时特征要做一定时间窗口的序列分析。比如一台服务器在凌晨两点向外发起大量SMB连接同时伴随DNS查询内网主机名这个时序组合就非常可疑了。3.3 建立基线和异常行为分析检测横向移动最忌讳的是没有一个“正常基线”。每一家企业的内网流量模式都不一样有的企业业务系统之间的调用本来就很频繁SMB流量铺天盖地有的企业运维完全是脚本化操作计划任务和WMI调用多到数不清。如果直接套用外部最佳实践去做告警结果一定是告警风暴最后没人看形同虚设。比较务实的路径是先花一两周时间做内网行为基线梳理。搞清楚几个基本问题哪些主机之间本来就经常通信哪些账号是日常运维的核心账号它们正常登录哪些机器业务系统之间有哪些固定的调用关系有了这个基线再去做偏差检测就非常精准了。比如我们发现某个账号平时只在A网段活动突然开始登录B网段的服务器哪怕只是登录成功一次都值得马上确认。这里额外说一个我常用的检测思路——关注“欢迎登录横幅”。很多Windows服务器在远程登录时会显示欢迎语攻击者登录时也一样能看到。虽然这个对检测没有直接帮助但它提醒我们一点横向移动是交互性的账号真正登录成功的那一刻攻防双方就开始了时间的赛跑。防守方要做的不是等攻击者把所有步骤走完而是尽量在第一二次横向跳跃时就触发告警并及时响应。4. 防御加固让横向移动从“轻而易举”变成“寸步难行”4.1 凭据保护是第一步也是最重要的一步横向移动的燃料是凭据所以防御的第一原则就是“让攻击者拿不到凭据”和“让凭据就算被拿到也用不了”。这里面的重点非常明确第一禁止在多个系统里复用同一个密码尤其是管理员密码这一步会让哈希传递的攻击面急剧收缩第二对高权限账号启用专门的保护机制比如把域管理员账号和普通管理员账号明确分开日常运维不使用域管理员级别的凭据登录业务服务器第三在可能的情况下开启Windows Credential Guard这类基于虚拟化的凭据保护功能它能把用于认证的密钥隔离在一个安全环境里即使攻击者拿到系统权限也很难直接提取出可用的凭据。在实际加固中还有一个必须处理的痛点本地管理员密码统一问题。很多企业为了部署方便给所有服务器设置了相同的本地管理员密码这在Windows域环境下可以用组策略配合LAPS——本地管理员密码解决方案来解决它让每台机器的本地管理员密码都不一样并且定期自动更换存放在域控的目录里统一管理。我在不少项目里看到加了LAPS之后攻击者通过哈希传递横向移动的成功率直接下降了一个数量级因为这个手法最依赖的就是“同密码机器多”这个前提。4.2 网络分段与最小权限让内网不再是“大平层”如果说不控制凭据是横向移动的燃料问题那网络架构就是横向移动的“路网问题”。很多企业内网本质上就是一个大平层所有服务器都在同一个网段互相之间完全互通从任何一台机器都可以访问到核心服务器。这种架构下攻击者只要进入内网网络就拥有几乎和运维一样大的移动范围。解决思路是把内网按业务域和信任级别划分成小段段与段之间通过防火墙或访问控制策略限制互访。比如办公网、研发网、生产网、核心数据区必须物理或逻辑隔离跨区访问一定要走审批过的跳板机。这里分享一个我评估时经常用的判断标准一个普通员工或者一台边缘服务器的账号能不能直接访问到域控、财务数据库或备份系统。如果能这个内网就是“大平层”攻击者的横向移动成本无限低。网络分段不是靠口号实现的它要落实成具体的访问控制列表、防火墙规则和路由策略。分段之后的另一项工作是“最小权限”原则每个账号只拥有完成自己工作所需的最小权限每台服务器上只开放业务必需的端口和服务。4.3 端点响应与主动狩猎不能只靠“装杀毒软件”防御横向移动传统意义上“装个杀毒软件”“打个补丁”这种思路已经远远不够了。横向移动利用的是系统管理机制攻击者往往不需要触发任何漏洞所以端点安全的重点要从“查杀恶意文件”转向“监测恶意行为”。具体来说要在所有关键服务器上部署行为检测能力重点监控前面清单里提到的那些日志事件有条件的企业可以上EDR——端点检测与响应平台它能持续采集进程、网络连接、文件变更、注册表变化等数据并自动做关联分析。但工具只是工具真正的差距在人和流程。横向移动的检测需要有人持续跟踪告警、分析日志、确认异常这就是安全运营团队的工作。我在和一些企业交流时发现他们买了很好的安全产品但因为无人值守或者告警规则配置不合理真正关键的攻击行为并没有被有效发现。主动狩猎是指安全团队在没有任何明确告警的情况下定期用攻击者的视角去搜寻内网里的可疑痕迹比如搜索全网的敏感账号登录事件、扫描异常的SMB连接模式。这个思路非常有效尤其是针对那些慢速、低频率的横向移动。4.4 管理好“服务账号”和“机器账号”最容易忽视的角落前面讲的都是人和账号还有一类账号特别容易被忽视——服务账号和机器账号。很多业务系统在运行时要调用远程资源会在服务器上配置固定的服务账号这些账号往往有很高的权限而且密码长期不变。攻击者一旦拿到这类账号横向移动起来非常隐蔽因为它们的行为模式和运维人员完全不同走的是业务调用的固定路径。机器账号则是每台加入域的主机自身用的账号正常情况下机器账号不会被人为使用但攻击者如果在系统里拿到机器账号的哈希也能用来访问域内其他资源。对这类账号的管理思路是定期审查服务账号的权限和使用情况能去掉的权限坚决去掉凡是可以通过托管服务账号或者组托管服务账号来实现自动密码轮换的场景尽量迁移过去对机器账号的活动保持监测正常情况下机器账号不应该发起交互式登录。这里踩过坑的朋友应该都有体会很多横向移动攻击之所以能一路畅通恰恰是因为攻击者拿到的是一个被大家遗忘了三年、但权限一直保留着的老服务账号。5. 实战心得与常见排查问题5.1 我在横向移动评估中踩过的坑这个领域做久了踩过的坑确实不少。第一个坑是低估了内网资产梳理的难度。很多企业连自己内网到底有多少台机器、哪些机器属于哪个部门都说不清楚。没有资产清单横向移动的检测和加固根本无从谈起——你不知道该保护哪台机器也不知道攻击者可能往哪个方向移动。所以做内网安全的第一步永远是资产梳理这一步不能省。第二个坑是对“日志已开启”的盲目信任。Windows日志默认情况下并不会把所有的细节都记录下来尤其是进程命令行和PowerShell详细执行内容需要额外开启对应的策略。我在不止一个项目里发现客户说“我们日志都开着呢”结果一查4624登录日志开了但4688进程创建没开WMI日志没开PowerShell脚本块日志更没开——等真出了问题根本找不到关键线索。开启这些日志本身不难难的是运维团队不知道要开哪些、开完之后日志量会暴涨、需要投入存储和分析的资源。第三个坑是过于追求复杂攻击手法的防御忽略了基础问题。我和同行交流时有个共识现在绝大多数企业遭遇的横向移动攻击用的仍然是哈希传递、计划任务、WMI执行、永恒之蓝漏洞利用这些“老”手法。把基础漏洞补丁打全、把默认密码改掉、把管理员账号分开就能挡住大部分攻击。地基没打好之前花大量资源去做高精尖的检测模型有点本末倒置了。5.2 常见问题速查表问题场景可能原因建议动作内网一台机器被入侵但迟迟看不到横向移动迹象凭据保护做得较好网络分段有效攻击者还在潜伏侦察确认当前主机账号权限和本地凭据存储情况持续监测横向扩散行为安全设备报了大量SMB告警但分不清是业务还是攻击业务系统存在大量共享访问基线不清晰先对业务系统和账号梳理基线做SMB会话来源和频次分析管理员账号被用于大量主机登录但日志权限不足无法关联缺少统一日志平台主机日志留存时间过短建立集中日志系统至少保留90天以上关键日志做账号维度的登录审计域控被攻击者拿到但不知扩展到哪些机器域控权限过大攻击者可重置任意账号密码域控严格限制登录来源对高权限账号使用单独管理方案审计关键账号变更安全运营人力有限告警太多看不过来检测规则太粗放缺少攻击行为序列关联聚焦高价值资产精简告警规则用攻击链模型做阶段的检测不要只盯单点事件5.3 关于“收藏这篇就够了”的大实话标题我引用了“收藏这篇就够了”但说句实在话横向移动这件事不存在看完一篇文章就彻底搞定的情况。它太依赖具体的环境用的是Windows域还是对等网有没有云上资产有没有工控系统运维团队成熟度如何这些都会直接影响技术方案和防御重点。这篇文章真正能帮你的是建立起一套完整的思考框架——横向移动的本质是什么、攻击者通常会走哪些路径、每一步在系统和流量上长什么样、防御应该从哪些层面下手。框架对了方向就不会偏。我个人在实际项目里的体会是横向移动的攻防就像下棋。攻击者每走一步都会在棋盘上留下痕迹防守方要做的不是防住每一步而是构建一套让对手步履维艰的规则同时练就一双能快速看清棋局的眼睛。把凭据管好把网络切开把关键日志留下来把分析能力建起来——这四件事做完你会发现大多数横向移动攻击在第一步或第二步就会被逼停。这比任何一招鲜的技巧都更有价值。
返回列表