TOAD攻击揭秘:利用微软Entra访客功能的企业身份安全威胁与防护

📅 发布时间:2026/10/10 4:03:22
TOAD攻击揭秘:利用微软Entra访客功能的企业身份安全威胁与防护
前几天和一位做安全运营的朋友聊天他提到最近在排查一条来自 Teams 的“访客邀请”记录时发现事情不对劲邀请方是合作多年的供应商域名邀请链接也确实指向微软官方页面甚至连多因素认证MFA弹窗都是真的。等到确认完才发现这根本不是什么供应商而是攻击者提前注册了一个外部租户把自己包装成了“官方访客”。这件事让我想起最近安全社区反复提到的 TOAD 攻击——它利用的正是微软 Entra原 Azure AD的访客功能把钓鱼从“诱导输密码”升级成了“邀请你进入一个看似合法的协作空间”而且在中大型企业里防不胜防。这篇内容就是围绕 TOAD 攻击展开的它到底是什么、攻击链路怎么走、为什么默认配置会让企业暴露在风险里以及我实际帮企业加固时用到的防护和排查方案。1. TOAD 攻击到底是什么1.1 先说清楚这里的 TOAD 不是数据库工具看到 TOAD 这个词很多运维老手第一反应是 Oracle 数据库管理工具 Toad就是那个装个客户端连库调优的老伙计。标题里的 TOAD 跟它没关系安全语境下TOAD 通常被理解为 Tenant Overlay Attack 的缩写中文常译为“租户覆盖攻击”或“租户重叠攻击”也有资料把它解释成利用外部租户身份来渗透目标组织的攻击手法。名字有点绕但思路很直接攻击者并不是黑进你的服务器也不是往你的邮箱发恶意附件而是想办法让自己的身份“挂靠”到你的协作生态里成为被你信任的外部访客。这种攻击之所以近两年开始流行核心原因是企业协作方式变了。Teams、SharePoint、OneDrive 的对外协作越来越频繁“拉一个外部人员进组织”不再是什么稀罕操作而微软 Entra 的外部身份体系External Identities里访客邀请的入口又非常宽松。攻击者不需要拿到你的密码不需要攻破你的边界防火墙只需要让某个内部员工点击一个“官方”邀请链接后面的路就顺了。1.2 与传统钓鱼的核心区别在于“信任链”传统钓鱼的攻击逻辑是伪造一个登录页诱导用户输入账号密码再用拿到的凭证去冒充用户登录。用户只要多点个心眼、看一眼网址不是官方域名大概率就拦下来了。TOAD 的攻击逻辑则完全不同——它利用的是“访客身份”这种本就存在于微软基础设施内的合法机制整个过程中用户会看到真实的微软登录页、真实的多因素认证甚至邀请来源可能就是一个精确匹配你合作伙伴域名的邮件地址。攻击者不是在骗你交出密码而是在骗你“同意他走进你的会议室”。两者的区别用一个生活化的例子就能讲清楚传统钓鱼是有人冒充银行客服在电话里骗你说出银行卡号和密码TOAD 则像是有人带着一张伪造工牌混进银行大堂然后当着你的面走进 VIP 室你还以为他是内部员工。传统钓鱼依赖用户识别“这个链接是假的”TOAD 依赖用户识别“这个人是不是真的该被邀请”难度完全不在一个量级。我把两者的特征整理成了一张对照表对比维度传统钓鱼TOAD 攻击核心目标获取账号凭证建立合法访客身份诱导载体伪造登录页、恶意附件真实的微软协作邀请机制用户看到的域名几乎都是仿冒域名通常指向微软官方域名MFA 验证伪造页面或中间人微软真实 MFA 流程安全设备可见性防火墙、邮件网关可拦截高度依赖身份日志和审计用户识别难度较低看域名和页面极高全程看起来都合法1.3 受害范围为什么感觉在“席卷全球”近半年安全圈里关于 TOAD 的讨论密度明显上升一些大型安全厂商的威胁报告也把 TOAD 列为重点攻击手法。原因不是攻击者开发了什么新武器而是“办公协作习惯”替攻击者铺好了路。远程办公和混合办公普及之后企业之间通过 Teams 和 SharePoint 进行外部协作的频率暴增访客邀请的数量成百上千地滚动安全团队不可能对每一条邀请都逐个人工审核。攻击者就是抓住这个“量太大、没人细看”的窗口把恶意邀请混进了正常流量里。另外还有一个容易被忽略的因素很多企业使用的单点登录、条件访问等安全机制默认是不覆盖“外部访客”的或者只是简单套用一套宽松策略。也就是说哪怕你的内部账号防护做得再到位访客通道也可能开着后门。加上“官方域名MFA弹窗”这套组合天然具备迷惑性传统安全意识培训教用户“别点陌生链接”的思路在 TOAD 面前基本失效。2. 攻击链路拆解一段“官方邀请”是如何被寄生的2.1 前置侦察攻击者先研究你的协作关系TOAD 攻击不是广撒网它更像一次精准投放。攻击者在发起攻击之前通常会花不少时间研究目标企业。他们会通过招聘网站、公司官网、员工 LinkedIn 资料来梳理三个信息目标企业经常合作的供应商是谁、谁负责对外对接、对方的域名和常用邮箱格式是什么。供应商名单尤其有价值因为供应商员工发的协作邀请天然受欢迎接收方不会像对待陌生域名那样警惕。举个例子一家制造企业的采购部经常与某原材料供应商用 Teams 开会攻击者锁定了这层关系之后会模仿这家供应商的名字注册一个极其相似的域比如把供应商域名中的某个字母替换掉或者注册一个同样的域名但放在不同的顶级域下。接下来他们会创建一个自己的外部租户把自己扮演成“供应商员工”然后向目标企业的采购员发出访客邀请。这里的重点是攻击者根本不需要入侵供应商的邮件系统也不需要劫持供应商的账号一切都是在自己的租户里合法完成的。邀请邮件的发件人、签名、正文都可以模仿得惟妙惟肖而接收方看到的是一个“合作伙伴发来的 Teams 协作邀请”完全符合日常办公预期。2.2 伪造邀请的高仿细节为什么看起来就是真的我们假设攻击者已经把邀请邮件发到了目标员工邮箱里。收件人看到的是什么发件域是 contoso-scm.com看起来是合作伙伴“Contoso Supply Chain”的域名邮件内容写着“我们正在准备下季度订单排期请加入我们的 Teams 频道讨论”底部有一个“在 Teams 中打开”的按钮。按钮链接指向哪里不是乱七八糟的短网址而是微软官方域名下的跳转链路通常是 teams.microsoft.com 或者 login.microsoftonline.com。这里就是 TOAD 最阴的地方。传统的钓鱼邮件只要把鼠标悬停在链接上就能看到非官方域名稍微有点安全意识的人就会起疑。但 TOAD 的链接在悬停时显示的确实是微软官方域名因为攻击者走的确实是正规访客邀请流程。用户点击链接后会被引导到微软的登录界面输入自己的企业邮箱和密码接着收到真实的 MFA 推送完全和自己平时登录 Office 365 的体验一模一样。整个流程里用户找不出任何一个“技术造假”的环节。域名是真的、登录页是真的、MFA 是真的唯一假的只有“邀请者的身份”。这恰恰解释了为什么传统邮件网关和终端安全软件很难拦截这类攻击——因为它们检测的是恶意内容而 TOAD 的邮件内容里没有任何恶意代码。2.3 身份验证与访客账户的建立攻击者拿到了什么当目标员工在微软登录页完成身份验证并接受邀请之后会发生两件事。第一目标员工的账号会作为“外部访客”关联到攻击者控制的租户里第二攻击者的账号也作为“外部访客”关联到了目标企业的租户里。后者的实现方式是在邀请交互过程中完成了双向的访客兑换攻击者利用目标员工的验证动作顺理成章地把自己“兑”进了目标组织的访客列表。攻击者的账号在目标企业里会获得什么权限取决于邀请时约定的权限范围。如果攻击者主动发起的是“加入某个 Teams 团队”的邀请而员工接受了那么攻击者就进入了该团队可以看到团队里的频道、文件和聊天记录。如果攻击者使用的是“作为访客访问 SharePoint 站点”的流程他还能看到该站点下共享出去的文档。更麻烦的是一旦进入组织攻击者还可以继续发起更多协作邀请把自己扮演成新的“供应商联系人”邀请更多内部员工加入同一个小型团队然后一点一点把触角伸向其他协作空间。在实际攻击中攻击者往往不会急于盗取大量数据而是先潜伏下来观察内部协作流。他们会研究组织架构、项目命名、合作伙伴名单再决定下一步是发起商业邮件诈骗BEC、窃取机密资料还是把访客身份作为跳板进一步尝试横向移动。这也是为什么很多受害企业是在几个月后做审计时才发现异常——攻击者整个过程都太安静了。3. 为什么默认配置会成为“钓鱼新温床”3.1 微软 Entra 访客功能的设计初衷与默认策略微软 Entra 的外部身份功能在 B2B 协作场景下确实非常强大它让跨企业的协作像拉一个同事进群一样简单。设计初衷是降低协作门槛让企业之间可以快速共享文档、开在线会议。问题在于大量企业部署 Microsoft 365 时采用的是默认配置而默认配置里“谁能邀请访客”的选项相当宽松。在 Entra 管理门户中“外部协作设置”里默认允许“组织中的任何人都可以邀请访客”同时默认允许来宾进行自助注册。这意味着任何一名普通员工都有权限把外部人员拉进组织而这个外部人员只要拿到邀请链接并完成验证就能以访客身份进入组织生态。安全团队如果不主动收紧这个入口就等于把邀请大门的钥匙发给了全员攻击者只要成功诱导任意一人点击就能进门。需要说明的是微软这样设计并非缺陷而是产品哲学层面的取舍优先保证协作效率把安全控制责任交给租户管理员。但现实是很多企业管理员不知道这里有坑甚至从未打开过外部协作设置页面直到出事才发现访客名单早就杂得不像话了。3.2 用户心智的“官方权威”放大了攻击效果TOAD 攻击之所以难防除了配置宽松还有一个更隐蔽的因素人对官方平台的信任。我们日常办公中已经形成了“登录 Office 365 就是安全”的思维惯性突然看到一个来自微软登录页的 MFA 弹窗绝大多数人第一反应是“正常验证赶紧通过”。攻击者正是利用这种习惯把钓鱼包装进了用户每天都会进行的正常操作里。打个比方骗子如果站在路边喊你投资你大概率扭头就走但骗子如果把摊位支在银行大厅里穿着类似银行的制服旁边还放着叫号机很多人就会放松警惕。TOAD 攻击中微软的官方域名和真实登录页就是那个“银行大厅”攻击者只是借了个位置用户却把这份信任转移给了攻击者。安全团队如果不理解这层心理机制很容易把防护重心放在“提高用户警惕性”上反复强调“小心可疑链接”。但 TOAD 的攻击载体看起来一点也不可疑教育效果自然大打折扣。3.3 全球企业为什么集体中招从我这几年接触的案例来看中招的企业有一个共同特征外部协作量大、访客身份管理混乱。制造业、零售业、专业服务行业尤其明显因为这些行业高度依赖供应链协作每天都有新的供应商、客户、合作伙伴被拉进 Teams 或 SharePoint。安全团队即便做了边界防护、终端防护、邮件过滤也挡不住访客通道里的猛兽。更麻烦的是TOAD 攻击留下的痕迹不像传统入侵那么明显。没有恶意软件、没有异常进程、没有横向流量只有一条条看似正常的访客邀请和兑换记录。很多企业的日志留存策略不完善或者根本没有针对外部身份行为做监控导致攻击发生很久之后才被发现。安全报告里说 TOAD 攻击“席卷全球企业”本质上不是攻击手法突然神化而是企业协作生态的变化暴露出了身份治理的短板。4. 企业实战防护从配置到监控的落地清单4.1 第一步收紧访客邀请的入口我在给企业做加固时第一件事永远是改外部协作设置而不是急着上监控工具。因为如果入口不收紧后面做再多检测都是亡羊补牢。具体操作路径在 Entra 管理门户里Identity External Identities External collaboration settings。重点改三个开关第一个是“访客邀请权限”把默认的“组织中的任何人都可以邀请访客”改成“仅管理员和指定安全组中的用户可以邀请”。如果担心运营上不方便可以先保留指定安全组比如允许销售部和采购部的经理级人物邀请但至少把主动权从全员收回到一个可控范围。第二个是“访客自助注册”开关直接关闭。这个开关一旦开着外部用户可以通过自助流程注册进来连邀请环节都不需要风险极大。第三个是“成员可以邀请访客”的开关如果组织规模不大建议直接关闭统一由管理员走流程。配置完成后要做一次存量审计拉出当前所有 Guest 用户清单逐个确认身份来源。很多企业审计时会发现名单里躺着大量“僵尸访客”有些是几年前的离职员工拉进来的有些是改名换姓的供应商联系人甚至还有一些明显不是业务关系的账号。把这些清了攻击面能砍掉一大截。4.2 第二步用条件访问和身份治理卡住后续动作收紧入口只能降低攻击面不能保证百分百防住。只要业务还要对外协作就一定有访客进来所以要靠条件访问策略限制访客进入后的行为。建议针对外部用户单独创建一条条件访问策略要求访客在访问组织资源时必须满足合规设备要求。这里要说明首次兑换邀请时设备合规检查可能不好使因为访客还没有完全建立信任但这条策略对后续访问非常有效——攻击者用个人电脑访问 SharePoint 和 Teams 时如果没有注册到合规设备就会被拦截。另一个建议是给 Guest 用户配更严格的登录风险策略比如要求满足“低风险”才能访问一旦检测到异常 IP 或行为特征就触发阻止。除了条件访问还要管理访客能访问的资源范围。建议设置默认限制访客看不到组织内部人员列表、不能搜索全局通讯录、不能创建团队。这些看似小功能的细节恰恰是攻击者在潜伏期最依赖的信息收集渠道。把信息流掐断攻击者即使进得来也难以继续扩大战果。4.3 第三步检测与响应——日志里留下的痕迹如果前面几步是“防”这一步就是“察”。TOAD 攻击虽然隐蔽但并非无迹可循。关键是盯住 Entra ID 的 Audit Logs 和 Sign-in Logs重点关注两个场景谁发出了访客邀请、访客从哪里兑换了邀请。在 Microsoft Sentinel 或 Log Analytics 里可以创建类似的 KQL 查询来排查可疑邀请AzureADAuditLogs | where TimeGenerated ago(30d) | where OperationName in (Invite external user, Redeem external user invite) | project TimeGenerated, UserId, OperationName, TargetResource | extend InviteInitiator parse_json(InitiatedBy).userPrincipalName | where InviteInitiator !has yourdomain.com or InviteInitiator has admin这只是个示意脚本实际使用时你要把 yourdomain.com 替换成自己的域名并根据业务情况调整过滤条件。排查的重点在于发现“邀请发起者”是否有可疑账号。如果一条访客邀请是由某个长时间未活跃的普通员工账号发出的或者发起的 IP 来自非常规地理位置就需要立刻核实。同样批量出现“同一外部域下的多个访客兑换”也是高危信号极有可能是攻击者对多个目标批量发送了邀请。有条件的团队还可以引入 UEBA用户实体行为分析能力让系统自动标记异常的外部身份行为。比如攻击者以访客身份进入后突然下载了大量 SharePoint 文件或大量浏览组织内部人员信息这些行为可以通过基线比对被识别出来。实测下来UEBA 对 TOAD 的发现效果比传统规则要好不少因为攻击者潜伏期再安静总会留下行为上的异常。4.4 第四步给用户的培训换个思路传统安全意识培训强调“别点可疑链接”但在 TOAD 面前这条教条不灵了。我的建议是培训重点从“识别链接真伪”转向“核实身份来源”。可以设计一段话让员工刻在脑子里任何外部人员要求加入协作先确认这个人的真实性再确认他是否真的有业务关联最后确认你是否有权限发出邀请。三步确认里走两步再点按钮。具体做法上安全团队可以做一次有针对性的“假邀请”演练自己注册一个外部租户生成一个和合作伙伴域名很像的访客邀请发给员工看多少人会真的点进去。演练结束后拉出点击数据就能清晰地知道哪些部门、哪些员工是重点教育对象。这种演练比传统的钓鱼邮件模拟更有价值因为场景就是 TOAD 攻击的真实手法员工的体验完全真实。我在实际项目中还发现一个行之有效的做法针对高频协作角色销售、采购、市场、HR做一份“外部协作申请模板”要求员工在拉访客前先填写申请写明对方公司、对接人、协作期限和用途由部门负责人审批通过后再由 IT 统一发出邀请。这套流程看上去多了一步但把“谁能进”这件事从个人判断变成了组织决策误邀率能下降一个量级。5. 常见问题与踩坑速查5.1 企业最常问的四个问题在帮助不同类型企业落地这些方案时我积累了一些高频问题这里整理成一张速查表常见问题问题本质推荐方案关闭全员邀请后业务部门投诉“协作太慢”安全与效率失衡用安全组方式开放受限邀请权限设定审批流访客数量太多审计拉不清存量治理缺失先做信息收集清理僵尸账号再建立定期复核机制条件访问策略上线后访客偶发登录失败设备合规策略过严对访客设备策略分级区分“高敏项目”和“普通协作”日志量太大安全团队盯不过来检测能力不足优先监控重点事件使用 UEBA 和威胁情报降低噪音5.2 几个容易被忽略的坑第一个坑是“一刀切关闭所有访客邀请”。我见过一个极端案例某企业把外部协作入口彻底关了结果第二天市场部和合作伙伴的联合项目全部停摆IT 电话被打爆。后来他们改用白名单模式先整理一份“常驻合作伙伴名单”把名单里的外部域设为允许其余一律走审批流。这样既保住了业务又收紧了入口比一刀切实用太多。第二个坑是“只看 Exchange 邮件日志不盯 Entra 身份日志”。TOAD 攻击的恶意邮件获取其实只是一半关键在于身份兑换。如果安全团队只围着邮件网关转分析邮件的 SPF/DKIM很容易漏掉真正的攻击面——身份层。邮件日志里看起来就是一封正常邀请但身份日志里可能藏着同一 IP 对多个租户发邀请的规律后者才是检测的关键。第三个坑是“把访客当内部用户一样做合规设备要求”。访客通常用自己的个人设备很多时候可能还是家用电脑如果条件访问策略要求设备合规导致访客登录频繁失败最终业务人员会绕过流程用个人账号或者干脆另建协作群反而制造出新的影子 IT。所以对访客策略要单独建一组配置上要留出合理的容错空间。5.3 给安全团队最后的实战建议如果想把 TOAD 攻击的防护做出实效我建议分三步走第一周先做入口收紧和存量清理把外部协作设置改成白名单模式清掉僵尸访客第二个月把日志监控和 UEBA 跑起来重点盯邀请和兑换行为第三个月再组织一次假的 TOAD 演练检验员工和流程的响应能力。不要试图一步到位每次只改一个层面出了问题也好定位。有个细节还想提醒一下改外部协作设置前一定先了解自己组织里的正常协作模式。那些每天依赖外部协作的部门比如销售和采购如果一下子收紧他们会很痛苦甚至会自己想“偏方”。所以在策略设计阶段就要把业务部门拉进来明确告知改了什么、为什么改、还有哪些替代方案这样落地的时候阻力会小很多。我个人在实际操作中的体会是TOAD 攻击的可怕之处不在于技术有多高深而在于它把“人的身份判断”这个薄弱环节放大到了整个组织层面。安全团队能做的是把入口收窄、把监控做实、把用户培训做得贴近真实场景这样才能在攻击者找上门之前先把自己家的门锁换一遍。防线不可能做到百分之百但每多一道控制攻击者的成本就会高一分大多数攻击者看到成本上升就会换一家更容易的目标下手。