会话令牌窃取攻击的原理与防御策略

本文约需 12 分钟阅读

不需要破解密码也能接管账户,这就是会话令牌窃取。如果攻击者窃取了用户登录后浏览器中保存的认证令牌(Cookie 或 JWT),就可以无需密码和多因素认证 (MFA),直接冒充受害者访问服务。根据 SpyCloud 2024 年报告,信息窃取器恶意软件窃取的会话 Cookie 同比增长 60%,约 220 亿条 Cookie 数据在暗网上交易。Microsoft 威胁情报团队报告称,2024 年确认的企业攻击中有 39% 涉及会话令牌窃取。本文解析会话令牌窃取攻击的技术原理,揭示绕过 MFA 的 Pass-the-Cookie 攻击实态,并为个人和企业提供具体的防御措施。

结论 - 仅靠 MFA 无法防护的时代的认证防御

会话令牌窃取是即使设置了 MFA 也能突破的攻击。防御要点有三个。第一,防止信息窃取器感染(保持操作系统和浏览器更新,避免安装可疑软件)。第二,检测会话异常(监控 IP 地址或设备的突然变化)。第三,定期更新密码,即使令牌被窃取,也能通过会话失效和重新认证将攻击者排除。请在 Passtsuku.com 上定期更新密码,并严格避免在浏览器中保存密码。

什么是会话令牌

基于 Cookie 的会话管理

Web 应用为了弥补 HTTP 的"无状态"特性,会在用户登录后发放会话令牌来识别用户。最常见的方式是基于 Cookie 的会话管理。用户通过密码和 MFA 认证成功后,服务器向浏览器发送包含会话 ID 的 Cookie。之后的请求会自动携带此 Cookie,服务器通过验证会话 ID 来识别用户。换言之,持有此 Cookie 的人就被视为"已认证用户"。攻击者一旦窃取此 Cookie,就能在不经过密码和 MFA 的情况下重现已登录状态。

JWT(JSON Web Token)的工作原理

在现代 Web 应用和 SPA(单页应用)中,JWT 越来越多地用于会话管理。JWT 是包含用户信息和过期时间的自包含令牌,无需在服务器端维护会话状态。JWT 通常存储在 localStorage、sessionStorage 或 HttpOnly Cookie 中。JWT 的问题在于一旦签发,在过期前难以使其失效。使用服务器管理会话的 Cookie 方式,销毁服务器端会话即可立即失效,但 JWT 仅通过签名验证判断有效性,要立即撤销被窃取的令牌需要黑名单机制。

主要攻击手法

信息窃取器的大规模窃取

截至 2025 年最严重的威胁是信息窃取器恶意软件的会话令牌窃取。RedLine、Raccoon、Lumma 等信息窃取器通过盗版软件、恶意广告和钓鱼邮件感染 PC,在数秒内提取浏览器中保存的所有 Cookie、保存的密码和加密货币钱包信息。根据 Group-IB 2024 年报告,一年内超过 1000 万台设备被信息窃取器感染,被盗数据在暗网上以每台设备低至 10 美元的价格出售。关键在于,信息窃取器窃取的是已通过 MFA 认证的 Cookie。无论 MFA 多么强大,一旦认证后的会话 Cookie 被窃取,攻击者就可以直接使用。

关于会话劫持的技术细节,会话劫持防御技术书 (Amazon)也可供参考。

Pass-the-Cookie 攻击 - 使 MFA 失效的手法

Pass-the-Cookie 攻击将窃取的会话 Cookie 导入攻击者的浏览器,原样重现受害者的已登录会话。攻击流程如下:首先通过信息窃取器或钓鱼窃取受害者浏览器的 Cookie 数据库文件。然后攻击者将窃取的 Cookie 导入自己的浏览器(或自动化工具)。当浏览器访问目标服务时,服务器收到有效的会话 Cookie,将攻击者视为已认证用户。这种攻击的危险之处在于完全绕过了认证过程。密码强度和 MFA 类型(TOTP、FIDO2、SMS)都无关紧要。认证已经完成,攻击者只是利用其"结果"。Microsoft 在 2024 年披露了 Midnight Blizzard(前 Nobelium)组织使用此技术非法访问 Microsoft 365 企业账户的案例。

通过 XSS(跨站脚本)窃取

XSS 攻击通过在网页中注入恶意 JavaScript 来窃取会话令牌。如果 Web 应用存在 XSS 漏洞,攻击者可以嵌入 document.cookie 等代码将受害者的 Cookie 发送到外部服务器。防御手段是 HttpOnly 标志。设置了 HttpOnly 属性的 Cookie 无法从 JavaScript 访问,可以防止通过 XSS 窃取。但即使设置了 HttpOnly,存储在 localStoragesessionStorage 中的令牌仍可从 JavaScript 访问,容易受到 XSS 攻击。OWASP 2024 年统计显示,XSS 漏洞仍占所有 Web 应用漏洞的约 18%,是不可忽视的威胁。

技术防御措施

令牌绑定和设备认证

针对会话令牌窃取最有效的技术对策是令牌绑定,即将令牌与设备绑定。Google 在 2024 年在 Chrome 浏览器中实现了设备绑定会话凭证 (DBSC) 的原型。DBSC 将会话 Cookie 绑定到设备的 TPM(可信平台模块)芯片,当 Cookie 在其他设备上使用时将其失效。这意味着即使窃取了 Cookie,也无法在攻击者的设备上使用。Microsoft 也在 Azure AD(现 Entra ID)中通过条件访问提供令牌保护功能,可以阻止从令牌签发设备以外的设备使用令牌。但这些功能在 2025 年仍处于有限部署阶段,并非所有服务都可使用。

会话异常检测

在无法使用令牌绑定的环境中,会话异常检测成为重要的防御层。具体来说,检测会话中 IP 地址的突然变化(如从日本 IP 突然变为海外 IP)、User-Agent 字符串的变化(如从 Chrome 变为 Firefox)、地理上不可能的移动(如在东京后 10 分钟从纽约访问),并强制使会话失效。Google 和 Microsoft 的云服务已经实现了这类异常检测,在检测到可疑会话使用时要求用户重新认证。对于企业,使用 SIEM(安全信息和事件管理)工具分析会话日志并自动检测异常模式是有效的。

个人用户可以采取的措施

不要在浏览器中保存密码

信息窃取器将浏览器中保存的密码作为主要目标。Chrome、Firefox、Edge 将密码存储在加密数据库中,但信息窃取器可以利用操作系统凭证存储来解密。请使用专用的密码管理器(1Password、Bitwarden 等)代替浏览器密码存储。专用密码管理器使用不存储在操作系统凭证存储中的主密码加密数据,能够抵抗信息窃取器的提取。在 Passtsuku.com 上为每个服务生成 16 位以上的唯一密码,并在密码管理器中管理。

定期检查会话并登出

请定期在主要服务的安全设置中检查活跃会话列表。Google 账户可在"您的设备"中查看,Microsoft 账户在"最近活动"中查看,GitHub 在"Sessions"页面查看。如果发现来自不认识的设备或位置的会话,请立即使该会话失效并更改密码。此外,使用共享 PC 或咖啡厅电脑后,务必登出并删除浏览器 Cookie。除自己专用的设备外,绝对不要勾选"保持登录状态"复选框。

始终保持操作系统和浏览器为最新版本

许多信息窃取器利用操作系统或浏览器的已知漏洞进行感染。请启用 Windows Update、macOS 软件更新、Chrome 和 Firefox 的自动更新,并在安全补丁发布后及时应用。特别是 Chrome,在发现零日漏洞后数天内就会发布紧急补丁,因此不要禁用自动更新非常重要。此外,避免安装可疑软件,仅从官方商店和官方网站下载应用程序。盗版软件和破解版是信息窃取器最常见的分发渠道。

现在就能做的事

  1. 在 Google、Microsoft、GitHub 的安全设置中检查活跃会话列表,使可疑会话失效
  2. 删除浏览器中保存的所有密码,将 Passtsuku.com 生成的新密码迁移到密码管理器
  3. 确认操作系统和浏览器为最新版本,并启用自动更新
  4. 删除不需要的浏览器扩展,检查剩余扩展的权限
  5. 在重要服务中禁用"保持登录状态",缩短会话有效期

常见问题

设置了 MFA 就能防止会话令牌窃取吗?
不能,仅靠 MFA 无法防止。会话令牌窃取针对的是 MFA 认证完成后的令牌,因此无论 MFA 类型如何,攻击都能成功。MFA 对密码泄露有效,但对信息窃取器的 Cookie 窃取需要其他对策(不在浏览器中保存密码、保持操作系统最新、避免可疑软件)。
如何确认会话 Cookie 是否被窃取?
直接确认很困难,但有一些征兆:来自不认识的设备或位置的登录记录、自己未进行的操作痕迹(邮件发送、设置更改)、服务发来的"新设备登录"通知等。在 Google 或 Microsoft 的安全设置中检查活跃会话,如有可疑,请登出所有会话并更改密码。
定期删除浏览器 Cookie 就安全了吗?
定期删除 Cookie 可以缩短会话有效期,但不是根本对策。信息窃取器在感染的瞬间就会窃取所有 Cookie,如果删除时机在感染之后就为时已晚。比起删除 Cookie,防止信息窃取器感染本身(更新操作系统、避免可疑软件)和不在浏览器中保存密码更为重要。

相关术语