前几天和一位做安全运营的朋友聊天,他提到最近在排查一条来自 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 攻击的可怕之处不在于技术有多高深,而在于它把“人的身份判断”这个薄弱环节放大到了整个组织层面。安全团队能做的是把入口收窄、把监控做实、把用户培训做得贴近真实场景,这样才能在攻击者找上门之前,先把自己家的门锁换一遍。防线不可能做到百分之百,但每多一道控制,攻击者的成本就会高一分,大多数攻击者看到成本上升,就会换一家更容易的目标下手。