GhostSurf 深度解析:从 NTLM 中继到浏览器会话劫持实战攻防

张开发
2026/4/21 1:05:19 15 分钟阅读

分享文章

GhostSurf 深度解析:从 NTLM 中继到浏览器会话劫持实战攻防
NTLM中继攻击作为红队横向移动的经典手段在SMB、MSSQL等协议上已被广泛应用但在Web浏览器场景下却长期存在致命缺陷。传统Impacket ntlmrelayx工具在访问受NTLM保护的Web应用时会出现并发冲突、认证弹窗、头部丢失等问题导致无法正常浏览页面。本文将深入解析GhostSurf——一款专门针对Web场景优化的NTLM中继工具揭示其如何解决传统工具的技术瓶颈绕过未公开的Windows内核认证行为实现真正意义上的以被中继用户身份浏览企业核心系统。文章还将提供完整的实战流程、高级攻击技巧、蓝队检测与防御方案并探讨NTLM中继攻击的未来发展趋势。一、引言NTLM中继的最后一公里难题NTLM认证协议自Windows NT 3.1时代诞生以来因其向后兼容性和部署简单的特点至今仍在绝大多数企业内网中广泛使用。尽管微软多年来一直推荐使用更安全的Kerberos协议但NTLM的身影依然无处不在——从文件共享、数据库访问到Web应用认证几乎所有Windows生态系统的服务都离不开它。NTLM中继攻击NTLM Relay Attack正是利用了NTLM协议的设计缺陷攻击者将受害者发送的NTLM认证请求转发到目标服务器从而以受害者的身份完成认证获取相应权限。这种攻击不需要破解NTLM哈希也不需要知道用户的明文密码是红队渗透测试中最高效的横向移动手段之一。然而长期以来NTLM中继攻击在Web浏览器场景下一直存在一个难以逾越的最后一公里难题。传统的ntlmrelayx工具虽然能够成功中继NTLM认证并获取HTTP响应但当你尝试将其作为浏览器代理来访问目标Web应用时会遇到各种诡异的问题页面加载一半就卡住、频繁弹出认证窗口、点击链接就跳转到登录页、静态资源无法加载等等。这些问题导致红队人员即使成功中继了高权限用户的NTLM认证也无法像正常用户一样浏览和操作目标Web应用。特别是对于那些仅启用Windows认证的企业核心系统——如密码管理器、服务器管理平台、配置管理系统等——传统的Cookie窃取和重放攻击完全无效因为这些系统根本不使用Cookie来维护会话状态。GhostSurf的出现彻底解决了这个难题。它基于Impacket ntlmrelayx开发针对Web浏览器场景进行了全面的优化和重构不仅解决了传统工具的所有技术缺陷还发现并绕过了一个未被公开记录的Windows HTTP.sys内核认证行为让红队人员能够真正幽灵般地以被中继用户的身份冲浪企业内网。二、深度剖析传统ntlmrelayx在Web场景下的三大致命缺陷要理解GhostSurf的价值首先需要深入分析传统ntlmrelayx在Web浏览器场景下失效的根本原因。这些问题不是简单的bug而是源于ntlmrelayx的设计初衷——它最初是为了中继SMB、MSSQL等单连接协议而设计的从未考虑过现代浏览器的复杂HTTP请求模式。2.1 并发请求冲突NTLM HTTP认证的有状态陷阱NTLM HTTP认证与大多数人熟悉的无状态认证机制如JWT、Session Cookie有着本质的区别它是一种绑定在单个TCP连接上的有状态认证。完整的NTLM HTTP认证流程如下客户端向服务器发送一个未认证的请求服务器返回401 Unauthorized响应包含WWW-Authenticate: NTLM头部客户端建立一个新的TCP连接发送包含NTLM Type 1消息的请求服务器返回401 Unauthorized响应包含NTLM Type 2消息客户端在同一个TCP连接上发送包含NTLM Type 3消息的请求服务器验证通过在同一个TCP连接上返回200 OK响应重要此后这个TCP连接就被标记为已认证所有通过这个连接发送的请求都不需要再进行NTLM认证这种设计意味着NTLM认证状态是与TCP连接一一对应的而不是与用户会话一一对应的。这在单连接协议如SMB中没有问题但在现代浏览器中却会引发灾难性的后果。现代浏览器为了提高页面加载速度会并行打开多个TCP连接通常是6-8个来同时请求页面资源。当浏览器通过ntlmrelayx代理访问目标Web应用时会发生以下情况第一个TCP连接完成NTLM认证成为已认证连接ntlmrelayx使用一个全局的inUse标志来标记这个连接是否正在被使用当第二个TCP连接发送请求时inUse标志为truentlmrelayx直接返回401响应浏览器收到401响应后会尝试重新进行NTLM认证覆盖原来的认证状态多个连接互相竞争和覆盖认证状态导致数据流混乱、页面加载失败这就是为什么你会看到页面加载一半就卡住或者某些资源加载成功而另一些失败的根本原因。ntlmrelayx的单连接设计与现代浏览器的多连接架构存在根本性的冲突。2.2 误导性的基础认证弹窗90%渗透测试员都踩过的坑使用过ntlmrelayx的人几乎都遇到过那个令人困惑的基础认证弹窗。大多数人会以为这是目标Web服务器要求输入用户名和密码于是尝试输入各种凭据最终导致攻击失败。但实际上这个弹窗根本不是目标Web服务器发出的而是ntlmrelayx自己的。ntlmrelayx的设计逻辑是它可以同时中继多个用户的NTLM认证到不同的目标。当浏览器发送一个请求时ntlmrelayx不知道应该使用哪个用户的中继会话来转发这个请求。因此它会向浏览器返回一个401响应要求进行基础认证让用户在用户名和密码框中指定要使用的中继会话。这种设计带来了两个严重的问题格式冲突ntlmrelayx要求用户名格式为domain/user正斜杠而大多数企业Web应用要求的格式是domain\user反斜杠。即使你知道正确的用户名输入错误的格式也会导致认证失败。用户体验极差这个弹窗会在每次打开新标签页或浏览器重启时出现严重影响浏览体验。更糟糕的是大多数渗透测试员根本不知道这个弹窗的真正用途会误以为攻击已经失败。2.3 头部信息丢失现代Web应用的隐形杀手传统ntlmrelayx在转发HTTP请求时会剥离大多数HTTP头部只保留与NTLM认证相关的少数几个头部。这在早期的简单Web应用中可能没有问题但在现代Web应用中却会导致各种难以排查的错误。现代Web应用严重依赖各种HTTP头部来实现功能User-Agent用于浏览器兼容性检测和设备识别Cookie用于维护应用层会话状态Referer用于防止CSRF攻击Accept-Encoding用于内容压缩X-Requested-With用于识别AJAX请求当ntlmrelayx剥离这些头部后目标Web应用可能会出现各种异常行为页面布局错乱、功能按钮失效、AJAX请求失败、CSRF防护触发等等。这些问题往往没有明显的错误提示让渗透测试员难以定位原因。三、GhostSurf的核心技术突破从能用到好用GhostSurf针对传统ntlmrelayx的三大缺陷进行了彻底的重构和优化同时还发现并绕过了一个未被公开记录的Windows内核认证行为实现了从能用到好用的质的飞跃。3.1 智能并发控制用互斥锁解决多连接冲突针对并发请求冲突问题GhostSurf没有采用ntlmrelayx那种简单粗暴的inUse标志而是使用了**互斥锁mutex**机制来实现智能并发控制。其核心原理非常简单所有来自浏览器的请求都被放入一个队列中每个请求在发送前必须先获取互斥锁获取锁后通过唯一的已认证中继套接字发送请求完整读取服务器的响应后释放互斥锁下一个请求获取锁重复上述过程这种设计将浏览器的并行请求转换为串行请求确保在任何时刻都只有一个请求在使用已认证的中继套接字。这样就从根本上解决了多个连接互相覆盖认证状态的问题。令人惊讶的是这种串行化带来的性能开销几乎可以忽略不计。因为NTLM认证本身的开销远大于请求串行化的开销而且现代Web应用的大多数资源都是可以缓存的。在实际测试中即使是加载包含上百个资源的复杂页面用户也几乎感觉不到延迟。3.2 透明会话选择彻底消除基础认证弹窗针对误导性的基础认证弹窗问题GhostSurf实现了透明会话选择机制完全消除了用户手动输入凭据的需要。GhostSurf的会话选择逻辑如下当浏览器第一次连接到GhostSurf代理时GhostSurf会检查当前已捕获的中继会话数量如果只有一个会话GhostSurf会自动选择这个会话并通过一个特殊的Cookie将浏览器与该会话绑定如果有多个会话GhostSurf会返回一个简洁的HTML页面列出所有可用的用户会话用户点击想要使用的用户后GhostSurf会设置相应的绑定Cookie此后所有来自该浏览器的请求都会自动使用绑定的会话这种设计有两个显著的优势零用户操作在单会话场景下用户不需要做任何操作直接在浏览器中输入目标URL即可访问多会话管理在多会话场景下用户可以通过简单的点击在不同用户之间切换非常方便更重要的是这个过程对目标Web应用是完全透明的。目标Web应用永远不会看到GhostSurf的会话选择页面也不会收到任何基础认证请求。3.3 完整头部保留让现代Web应用正常工作针对头部信息丢失问题GhostSurf采用了白名单剥离策略而不是ntlmrelayx的黑名单保留策略。具体来说GhostSurf默认保留所有HTTP头部只剥离与自身会话追踪相关的Cookie即用于绑定浏览器和中继会话的Cookie对于其他所有头部包括User-Agent、Cookie、Referer等都原封不动地转发给目标服务器这种设计确保了目标Web应用能够收到所有它期望的头部信息从而正常工作。在实际测试中GhostSurf能够完美支持绝大多数现代Web应用包括那些依赖复杂AJAX交互和CSRF防护的应用。四、未公开的Windows内核认证行为及绕过在开发GhostSurf的过程中作者遇到了一个非常诡异的问题在访问某些Web应用时前30-50个请求完全正常但突然会出现HTTP 401认证挑战之后所有请求都失败会话完全丢失。这个问题在传统ntlmrelayx中也存在但从未有人深入研究过其根本原因。经过大量的调试和分析作者发现这是一个未被微软公开记录的Windows HTTP.sys内核模式认证行为。4.1 问题现象与根本原因这个问题只出现在启用了**内核模式认证Kernel Mode Authentication**的IIS服务器上。而内核模式认证是IIS 7.0及以上版本的默认配置这意味着绝大多数企业Windows Web服务器都受到影响。在IIS的内核模式认证下NTLM认证逻辑不是在IIS用户模式进程中完成的而是在HTTP.sys内核模式驱动中完成的。这种设计可以显著提高认证性能但也带来了一些意想不到的行为。HTTP.sys内核模式认证的工作机制如下HTTP.sys在内核级别拦截所有传入的请求如果请求的路径需要认证HTTP.sys会自行处理NTLM认证流程认证成功后HTTP.sys会将这个TCP连接标记为已认证此后所有通过这个连接发送的请求都会被自动认为是已认证的直接转发给IIS用户模式进程关键未公开行为如果在这个已认证的连接上发送一个请求访问一个允许匿名访问的资源如CSS、JS、图片等HTTP.sys会立即将这个连接的认证状态重置为匿名下一次在这个连接上发送请求访问需要认证的资源时HTTP.sys会返回401认证挑战要求重新进行NTLM认证这就是为什么会话会突然丢失的根本原因。当浏览器通过已认证的连接请求一个匿名的静态资源时HTTP.sys会悄无声息地重置连接的认证状态。而GhostSurf以及传统ntlmrelayx对此一无所知继续使用这个连接发送请求结果就会收到401响应。4.2 GhostSurf的解决方案探测优先策略针对这个问题GhostSurf设计了一种非常巧妙的探测优先策略能够在不影响用户体验的情况下完美绕过这个内核行为。其工作原理如下在通过已认证的中继套接字发送任何请求之前GhostSurf会先打开一个全新的匿名TCP连接在这个匿名连接上发送同样的请求但不带任何NTLM认证头部根据匿名请求的响应结果来决定如何处理原请求如果返回401说明这个资源需要认证通过已认证的中继套接字转发原请求如果返回200说明这个资源允许匿名访问直接将匿名响应返回给浏览器不使用已认证的连接探测结果会按路径进行缓存每个资源只需要探测一次后续请求直接使用缓存结果这种设计有三个显著的优势完美绕过内核行为永远不会在已认证的连接上发送匿名资源请求因此HTTP.sys永远不会重置认证状态性能开销极小每个资源只探测一次缓存后无任何额外开销完全透明对浏览器和目标Web应用都是完全透明的不需要任何用户干预GhostSurf通过-k命令行参数来启用这个功能。强烈建议在所有针对IIS服务器的攻击中都启用这个参数因为内核模式认证是IIS的默认配置。五、完整实战流程从零开始劫持企业Web会话现在我们将通过一个完整的实战案例演示如何使用GhostSurf从NTLM中继到浏览器会话劫持的全过程。5.1 环境准备首先我们需要准备攻击环境攻击机Kali Linux 2026.1目标运行IIS的Windows Server 2019部署了Passwordstate密码管理器仅启用Windows认证受害者Windows 10企业版域用户具有Passwordstate的管理员权限5.2 安装GhostSurf# 克隆仓库gitclone https://github.com/senderend/ghostsurf.gitcdghostsurf# 创建虚拟环境python3-mvenv venvsourcevenv/bin/activate# 安装依赖pipinstall-rrequirements.txt5.3 配置Responder我们将使用Responder来进行LLMNR/NBT-NS欺骗捕获受害者的NTLM认证请求。首先编辑Responder的配置文件/etc/responder/Responder.conf确保以下设置[Responder Core] SMB Off HTTP Off HTTPS Off DNS On LDAP Off FTP Off POP Off IMAP Off SMTP Off MSSQL Off RDP Off WINRM Off我们关闭了SMB、HTTP和HTTPS服务器因为这些将由GhostSurf来处理。Responder只负责进行名称解析欺骗。启动Respondersudoresponder-Ieth0-d-w5.4 启动GhostSurf现在启动GhostSurf指定目标为Passwordstate服务器并启用内核模式认证绕过./ghostsurf-thttps://passwordstate.example.com-k-r参数说明-t https://passwordstate.example.com指定目标Web应用的URL-k启用内核模式认证绕过针对IIS默认配置-r允许多个被捕获的用户中继到同一目标GhostSurf启动后会在本地监听以下端口80/tcp用于捕获HTTP NTLM认证请求443/tcp用于捕获HTTPS NTLM认证请求1080/tcpSOCKS5代理端口用于浏览器连接5.5 触发NTLM认证现在我们需要诱导受害者向我们的攻击机发送NTLM认证请求。有多种方法可以实现这一点LLMNR/NBT-NS欺骗这是最常用的方法。当受害者尝试访问一个不存在的主机名时会发送LLMNR/NBT-NS广播请求Responder会响应这些请求将主机名解析为攻击机的IP地址从而诱导受害者向攻击机发送NTLM认证请求。钓鱼链接向受害者发送一个钓鱼邮件包含指向攻击机的链接例如\\attackers-ip\share或http://attackers-ip/。当受害者点击链接时会自动向攻击机发送NTLM认证请求。其他方法包括通过已攻陷的主机执行命令、利用文件包含漏洞、利用XSS漏洞等。在本案例中我们使用LLMNR欺骗的方法。当受害者在资源管理器中输入一个不存在的主机名时Responder会捕获到这个请求并将其转发给GhostSurf。GhostSurf会完成NTLM中继过程建立一个到Passwordstate服务器的已认证连接。5.6 配置浏览器并访问目标当GhostSurf捕获到一个中继会话后我们就可以配置浏览器来访问目标了。推荐使用Firefox浏览器因为Chrome会在后台发送大量遥测请求可能会污染中继会话。安装FoxyProxy Standard扩展配置一个新的SOCKS5代理代理类型SOCKS5代理IP127.0.0.1端口1080勾选代理DNS激活这个代理配置在浏览器中输入目标URLhttps://passwordstate.example.com此时你应该能够直接进入Passwordstate的管理界面不需要输入任何用户名和密码。你可以像正常用户一样浏览、搜索、修改甚至导出所有密码。5.7 多会话管理如果GhostSurf捕获到了多个用户的中继会话当你第一次访问目标时会看到一个会话选择页面。页面上会列出所有可用的用户包括用户名、域名和捕获时间。你只需要点击想要使用的用户就会自动跳转到目标应用。你也可以在GhostSurf的交互式shell中输入以下命令来管理会话socks列出所有可用的中继会话socks kill id终止指定的中继会话socks clear清除所有中继会话六、高级实战技巧与攻击链扩展GhostSurf不仅可以单独使用还可以与其他红队工具结合形成强大的攻击链。本节将介绍一些高级实战技巧帮助你在复杂的企业环境中取得更好的攻击效果。6.1 结合SMB中继获取Shell后再进行Web中继这是一种非常高效的攻击链使用ntlmrelayx中继SMB认证获取目标服务器的本地管理员权限在目标服务器上执行命令获取域用户的NTLM哈希或明文密码使用这些凭据通过GhostSurf访问更高权限的Web应用这种攻击链的优势在于它不需要依赖受害者的主动点击而是通过已攻陷的服务器来获取更多的凭据和权限。6.2 绕过MFA的场景很多企业已经为Web应用部署了多因素认证MFA但大多数MFA解决方案只在初始登录时验证后续的NTLM认证不需要MFA。这意味着即使目标Web应用启用了MFA只要你能够中继到一个已经通过MFA验证的用户的NTLM认证你就可以完全绕过MFA保护访问目标应用。这是一个非常重要的发现因为它打破了很多人对MFA的迷信。MFA并不能保护你免受NTLM中继攻击。6.3 针对不同目标的优化配置GhostSurf提供了一些高级参数可以针对不同的目标进行优化-s seconds设置中继会话的超时时间。对于一些会话保持时间较短的应用可以适当减小这个值。-c cookie设置自定义的会话绑定Cookie名称。如果目标应用使用了相同名称的Cookie可以使用这个参数来避免冲突。-u user-agent设置自定义的User-Agent。可以模仿受害者的浏览器User-Agent降低被检测的概率。6.4 跨域中继攻击GhostSurf支持跨域中继攻击。也就是说你可以将来自域A的用户的NTLM认证请求中继到域B的Web应用只要这两个域之间存在信任关系。这在多域森林环境中非常有用可以帮助你从一个低权限域横向移动到高权限域。七、蓝队视角检测与防御GhostSurf攻击作为蓝队了解GhostSurf的攻击原理和特征对于检测和防御这种攻击至关重要。本节将从多个层面介绍如何检测和防御GhostSurf攻击。7.1 根本防御禁用NTLM协议最根本的防御方法是完全禁用NTLM协议强制使用Kerberos协议。微软已经提供了完整的NTLM禁用指南企业应该逐步推进NTLM的禁用工作。当然在实际环境中完全禁用NTLM可能会遇到很多兼容性问题。因此我们还需要采取其他分层防御措施。7.2 启用SMB签名和LDAP签名启用SMB签名和LDAP签名可以有效防止针对这些协议的NTLM中继攻击。虽然这不能直接防止针对HTTP协议的NTLM中继攻击但可以切断很多攻击链的入口。7.3 配置IIS的认证设置针对IIS服务器可以采取以下配置来缓解GhostSurf攻击禁用内核模式认证虽然这会带来一定的性能损失但可以防止HTTP.sys的未公开认证行为。启用扩展保护Extended Protection扩展保护可以防止NTLM中继攻击它通过验证通道绑定令牌来确保认证请求来自原始客户端。限制NTLM认证的使用范围只在必要的应用上启用NTLM认证其他应用使用Kerberos或基于表单的认证。7.4 网络层面的检测在网络层面可以通过以下特征来检测GhostSurf攻击异常的NTLM认证流量单个IP地址在短时间内发送大量的NTLM认证请求。异常的HTTP请求模式来自同一个IP地址的所有HTTP请求都使用同一个TCP连接这与正常浏览器的多连接模式明显不同。可疑的名称解析响应大量的LLMNR/NBT-NS响应来自同一个IP地址。7.5 日志层面的检测在日志层面可以通过以下事件来检测GhostSurf攻击Windows安全日志中的事件ID 4625大量的登录失败事件特别是来自同一个IP地址的。IIS日志中的异常User-AgentGhostSurf默认使用Python的requests库的User-Agent虽然可以修改但很多攻击者不会注意到这一点。异常的会话行为同一个用户账户同时从多个不同的IP地址登录或者在短时间内从不同的地理位置登录。7.6 针对GhostSurf特定行为的检测GhostSurf的探测优先策略会产生一个独特的行为特征对于每个需要认证的资源它会先发送一个不带认证头部的匿名请求然后再发送一个带认证头部的请求。蓝队可以通过检测这种匿名请求认证请求的模式来发现GhostSurf攻击。这种模式在正常的浏览器行为中是不会出现的。八、未来趋势与展望NTLM中继攻击已经存在了二十多年但它仍然是红队最有效的攻击手段之一。随着企业安全意识的提高和防御技术的发展NTLM中继攻击也在不断演变。8.1 微软的NTLM禁用计划微软在2023年宣布了一项计划将在未来的Windows版本中逐步禁用NTLM协议。该计划分为三个阶段第一阶段将NTLM设置为默认禁用但允许管理员手动启用第二阶段完全移除NTLM协议的支持第三阶段移除所有与NTLM相关的API和组件然而这个计划的实施时间表还不明确而且考虑到巨大的兼容性问题NTLM很可能还会在企业环境中存在很多年。8.2 Kerberos中继攻击的兴起随着NTLM的逐步禁用Kerberos中继攻击也称为Kerberoasting的一种变体将会越来越受到红队的关注。Kerberos中继攻击利用了Kerberos协议的一些设计缺陷可以将受害者的Kerberos票据中继到目标服务器从而获取权限。目前已经有一些工具可以实现Kerberos中继攻击如Impacket的krbrelayx。未来我们很可能会看到类似GhostSurf的工具出现专门针对Kerberos中继的Web场景进行优化。8.3 云环境中的NTLM中继攻击随着企业向云环境迁移NTLM中继攻击也开始向云环境延伸。很多云服务如Azure AD、Office 365仍然支持NTLM认证这为红队提供了新的攻击面。未来我们很可能会看到更多针对云环境的NTLM中继攻击技术和工具出现。8.4 GhostSurf的未来发展方向GhostSurf作为一个相对较新的工具还有很大的发展空间。未来可能的发展方向包括支持WebSocket连接目前GhostSurf不支持WebSocket连接这会影响一些使用WebSocket的现代Web应用的功能。支持更多的认证协议除了NTLM还可以支持Kerberos、Negotiate等认证协议。与其他红队工具的深度集成与Cobalt Strike、Metasploit等工具集成实现更自动化的攻击流程。反检测功能增加更多的反检测功能如模拟正常浏览器的请求模式、随机化User-Agent等。九、总结GhostSurf的出现填补了NTLM中继攻击在Web浏览器场景下的空白为红队提供了一种强大的横向移动和权限提升手段。它不仅解决了传统ntlmrelayx的技术缺陷还发现并绕过了未公开的Windows内核认证行为让红队能够真正以被中继用户的身份浏览企业核心系统。对于红队来说掌握GhostSurf的使用方法和技巧可以显著提高渗透测试的效率和成功率。特别是对于那些仅启用Windows认证的企业核心系统GhostSurf往往是唯一有效的攻击手段。对于蓝队来说了解GhostSurf的攻击原理和特征采取分层防御措施可以有效降低被攻击的风险。最根本的防御方法是禁用NTLM协议但在那之前还需要采取其他措施来缓解攻击。网络安全是一场永无止境的猫鼠游戏。随着防御技术的发展攻击技术也在不断演变。GhostSurf只是这个游戏中的一个最新武器但它提醒我们即使是已经存在了二十多年的老协议仍然可能存在未被发现的安全隐患。安全提示本文仅用于网络安全技术交流与科普教育。所有操作均应在获得合法授权的安全评估环境中进行。未经授权的攻击行为是违法的将承担相应的法律责任。附录GhostSurf 完整命令速查表与蓝队检测规则一、GhostSurf 完整命令速查表1.1 基础安装与环境配置命令说明git clone https://github.com/senderend/ghostsurf.git克隆官方仓库cd ghostsurf进入项目目录python3 -m venv venv创建Python虚拟环境source venv/bin/activate激活虚拟环境Linux/macOSvenv\Scripts\activate激活虚拟环境Windowspip install -r requirements.txt安装所有依赖deactivate退出虚拟环境1.2 核心启动命令命令说明./ghostsurf -t https://target.example.com基础启动中继到单个目标Web应用./ghostsurf -t https://target.example.com -k推荐启用内核模式认证绕过IIS默认配置必用./ghostsurf -t https://target.example.com -k -r允许多个用户中继到同一目标./ghostsurf -tf targets.txt从文件读取多个目标URL./ghostsurf -t https://target.example.com -p 8080指定本地SOCKS5代理端口默认1080./ghostsurf -t https://target.example.com --http-port 8080指定HTTP监听端口默认80./ghostsurf -t https://target.example.com --https-port 8443指定HTTPS监听端口默认4431.3 高级配置参数参数说明-s seconds设置中继会话超时时间默认3600秒-c cookie_name自定义会话绑定Cookie名称避免与目标应用冲突-u user_agent自定义User-Agent字符串模拟受害者浏览器--no-ssl-verify禁用目标服务器SSL证书验证--proxy proto://host:port通过上游代理连接到目标--debug启用调试模式输出详细日志-l directory指定日志和战利品输出目录--smb2support启用SMB2协议支持用于跨协议中继-6启用IPv6监听配合mitm6使用1.4 交互式Shell命令GhostSurf启动后会进入交互式shell支持以下命令命令说明socks列出所有已捕获的中继会话socks kill id终止指定ID的中继会话socks clear清除所有中继会话socks info id显示指定会话的详细信息targets列出所有配置的目标targets add url动态添加新的中继目标targets remove id移除指定ID的目标status显示GhostSurf当前运行状态help显示帮助信息clear清空屏幕exit/quit退出GhostSurf1.5 常用实战组合命令# 最常用的生产环境命令./ghostsurf-thttps://passwordstate.corp.local-k-r-uMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36# 多目标中继./ghostsurf-tfweb_targets.txt-k-r# 配合mitm6进行IPv6中继./ghostsurf-6-thttps://sccm.corp.local-k-r# 调试模式输出详细请求日志./ghostsurf-thttps://cyberark.corp.local-k-r--debug二、蓝队检测规则2.1 Suricata 网络检测规则规则1检测GhostSurf默认SOCKS5代理端口通信alert tcp $HOME_NET any - $EXTERNAL_NET 1080 ( msg:GhostSurf Default SOCKS5 Proxy Port Detected; flow:to_server,established; content:|05 01 00|; # SOCKS5版本51种认证方法无认证 depth:3; reference:url,https://github.com/senderend/ghostsurf; classtype:trojan-activity; sid:1000001; rev:1; )规则2检测GhostSurf会话选择页面特征alert http $EXTERNAL_NET any - $HOME_NET $HTTP_PORTS ( msg:GhostSurf Session Selection Page Detected; flow:to_server,established; http.method; content:GET; http.uri; content:/ghostsurf/sessions; http.response_body; content:GhostSurf Session Selector; nocase; reference:url,https://github.com/senderend/ghostsurf; classtype:web-application-attack; sid:1000002; rev:1; )规则3检测GhostSurf探测优先策略最准确alert http $EXTERNAL_NET any - $HOME_NET $HTTP_PORTS ( msg:GhostSurf Probe-First Strategy Detected (Anonymous Authenticated Request Pair); flow:to_server,established; content:Authorization: NTLM; http_header; # 检测1秒内来自同一源IP和源端口的两个相同请求 # 第一个不带Authorization头部第二个带NTLM头部 flowbits:isset,ghostsurf_probe_$(srcip)_$(sport)_$(uri); flowbits:unset,ghostsurf_probe_$(srcip)_$(sport)_$(uri); reference:url,https://github.com/senderend/ghostsurf; classtype:web-application-attack; sid:1000003; rev:1; ) alert http $EXTERNAL_NET any - $HOME_NET $HTTP_PORTS ( msg:GhostSurf Probe Request Detected; flow:to_server,established; content:!Authorization:; http_header; flowbits:set,ghostsurf_probe_$(srcip)_$(sport)_$(uri); flowbits:expire,ghostsurf_probe_$(srcip)_$(sport)_$(uri),1; reference:url,https://github.com/senderend/ghostsurf; classtype:web-application-attack; sid:1000004; rev:1; )规则4检测默认Python requests User-Agentalert http $EXTERNAL_NET any - $HOME_NET $HTTP_PORTS ( msg:GhostSurf Default User-Agent Detected; flow:to_server,established; http.user_agent; content:python-requests/; startswith; reference:url,https://github.com/senderend/ghostsurf; classtype:web-application-attack; sid:1000005; rev:1; )2.2 Sigma 日志检测规则规则1IIS日志中的异常单连接多请求模式title:GhostSurf Single TCP Connection Multiple Requests Detectedid:14701da0-4b0f-4ee6-9c95-2ffb4e73bb9astatus:testdescription:Detects when multiple HTTP requests are sent over a single TCP connection,which is characteristic of GhostSurfs serial request handlingauthor:Blue Teamdate:2026/04/20references:-https://github.com/senderend/ghostsurflogsource:product:windowsservice:iisdetection:selection:cs-method:-GET-POST-PUT-DELETEtimeframe:1mcondition:count() by c-ip,s-port50falsepositives:-HTTP/2 connections (which are multiplexed)-API clients that use connection poolinglevel:mediumtags:-attack.t1550.002-attack.lateral_movement规则2检测异常的NTLM认证失败后立即成功模式title:GhostSurf Probe-Then-Authenticate Pattern Detectedid:24701da0-4b0f-4ee6-9c95-2ffb4e73bb9bstatus:testdescription:Detects a pattern where an anonymous request returns 401,followed immediately by an authenticated request returning 200,which is characteristic of GhostSurfs probe-first strategyauthor:Blue Teamdate:2026/04/20references:-https://github.com/senderend/ghostsurflogsource:product:windowsservice:iisdetection:probe_request:sc-status:401cs-authorization:nullauth_request:sc-status:200cs-authorization|startswith:NTLM timeframe:1scondition:probe_request and auth_request by c-ip,cs-uri-stemfalsepositives:-Normal NTLM authentication flow (but these usually have different timings)level:hightags:-attack.t1550.002-attack.lateral_movement规则3检测Windows安全日志中的异常NTLM认证title:Unusual NTLM Authentication from Single Source IPid:34701da0-4b0f-4ee6-9c95-2ffb4e73bb9cstatus:testdescription:Detects a large number of NTLM authentication events from a single source IP address,which may indicate an NTLM relay attackauthor:Blue Teamdate:2026/04/20references:-https://github.com/senderend/ghostsurflogsource:product:windowsservice:securitydetection:selection:EventID:4624LogonType:3AuthenticationPackageName:NTLMtimeframe:5mcondition:count() by IpAddress20falsepositives:-Load balancers-Proxy servers-API gatewayslevel:mediumtags:-attack.t1550.002-attack.lateral_movement2.3 检测优先级与误报说明规则ID优先级误报率说明1000003极高极低基于GhostSurf独有的探测优先策略最准确24701da0…极高低基于IIS日志中的请求模式误报极少1000002高极低检测会话选择页面只有当攻击者访问时才会触发1000001中中检测默认SOCKS5端口可能与其他工具冲突1000005中高检测默认User-Agent攻击者很容易修改14701da0…中中检测单连接多请求需要排除HTTP/2和API客户端34701da0…低高检测大量NTLM认证需要排除正常的代理和负载均衡器2.4 防御建议补充最高优先级启用IIS扩展保护Extended Protection这是目前唯一能有效阻止所有NTLM中继攻击的配置强制使用Kerberos在所有Web应用上禁用NTLM只允许Kerberos认证禁用内核模式认证虽然会有性能损失但可以防止HTTP.sys的未公开行为网络分段将敏感的Web应用如密码管理器放在独立的网络段中限制访问监控异常流量重点关注来自非工作站网段的NTLM认证流量

更多文章