一旦同意,攻击者即获得授权码,兑换为访问令牌(access token)与长期有效的刷新令牌,从而无需再次触发MFA即可持续访问用户邮箱与文件。...2 攻击技术原理与实施路径2.1 OAuth 2.0 用户同意机制回顾在Microsoft Entra ID中,第三方应用若需访问用户资源(如邮件、日历),必须通过OAuth 2.0授权码流程获取权限。...);用户点击“接受”,微软返回授权码;应用用授权码向令牌端点兑换访问令牌与刷新令牌;应用使用令牌调用Microsoft Graph API。...,并记录事件ID 53003。...())return bool(requested & HIGH_RISK_SCOPES)4.3 应用审计与自动撤销定期导出企业授权应用清单,并自动撤销异常项:Microsoft Graph 查询示例:GET
然而,近期多起安全事件表明,攻击者正通过滥用Microsoft Entra ID(原Azure AD)的OAuth 2.0授权框架,绕过MFA保护,直接获取对Microsoft 365账户的持久化访问权限...OAuth 2.0作为现代身份联合与资源授权的标准协议,在Microsoft Entra ID中被广泛用于第三方应用集成。用户通过一次授权操作,即可授予外部应用对其邮箱、日历、文件等资源的访问权限。...(Access Token)与刷新令牌(Refresh Token);应用使用令牌调用Microsoft Graph API。...注册过程无需特殊权限,任何拥有个人Microsoft账户的用户均可完成。...3.3 令牌获取与持久化访问用户点击“同意”后,Microsoft将授权码发送至redirect_uri。
典型路径如下:钓鱼获取员工凭证(含MFA绕过,如MFA疲劳攻击);登录云控制台(如Azure AD、AWS IAM);枚举高权限账户或服务主体;申请或窃取OAuth令牌/会话Cookie;通过Graph...此过程中,攻击者无需部署恶意软件,全程利用合法API调用,规避传统EDR检测。思科报告显示,73%的勒索事件中,攻击者在获得凭证后4小时内完成数据加密或外传。...伪品牌验证流程嵌套:伪造Microsoft登录页后,跳转至“安全验证”页面,要求用户输入短信验证码,实则完成MFA劫持。此类攻击利用用户对协作工具的信任及多任务处理时的认知负荷,显著提升欺骗成功率。...(Microsoft Graph PowerShell)枚举用户;利用New-MailboxExportRequest导出高管邮箱;部署Cobalt Strike Beacon并通过合法CDN分发勒索载荷...Graph API /users/{id}/revokeSignInSessions;发送Teams通知至用户及IT支持;创建Jira工单要求用户完成安全培训;更新IAM策略,强制启用FIDO2。
其标准流程如下:用户在受限设备上请求访问资源(如OneDrive);设备向授权服务器(如Azure AD)发起请求,获取一个设备代码(device_code)和用户验证码(user_code);用户被引导至...https://microsoft.com/devicelogin,手动输入验证码;同时,设备后台持续轮询服务器,等待用户完成授权;用户在网页端登录并同意授权后,服务器向设备返回Access Token...整个过程无需输入密码,且若用户已处于登录状态(如浏览器记住会话),甚至无需再次输入MFA。而攻击者正是利用了第3-5步的“信任链”。...= token_resp.json()["access_token"]print("✅ 成功获取受害者Token!")...breaktime.sleep(5)拿到Token后,攻击者即可调用Microsoft Graph API,读取邮件、日历、OneDrive文件、Teams消息,甚至发送新邮件冒充受害者——全程无需知道密码
,服务器返回标准OAuth令牌:{"token_type": "Bearer","scope": "https://graph.microsoft.com/.default","access_token...一旦授权完成,攻击者即可通过device_code兑换令牌,获得与用户同等的API访问权限。.../devicelogin 并输入代码:ABC123”;用户信以为真,在微软官方页面输入代码并完成MFA;攻击者轮询令牌端点,成功获取access_token与refresh_token;利用令牌调用Microsoft...Graph API,读取邮件、日历、联系人,甚至创建新应用或修改权限。...["access_token"]}'}mail_resp = requests.get('https://graph.microsoft.com/v1.0/me/messages',headers=headers
授权完成后,攻击者的服务器立即通过 OAuth 2.0 的 /token 端点兑换访问令牌和刷新令牌(Refresh Token),从而获得对受害者邮箱、日历、文件等资源的长期访问权——全程无需知道密码...它允许第三方应用在不获取用户密码的前提下,访问用户在其他服务(如 Google、Microsoft)上的资源。...;用户登录并授权该应用;客户端轮询 /token 端点,一旦用户授权,立即获取 Access Token。..."][:50] + "...")# 此时可调用 Microsoft Graph API 窃取数据breakelif token_resp.json().get("error") == "authorization_pending...":time.sleep(5)else:print("❌ 授权失败:", token_resp.text)break一旦拿到 access_token,攻击者即可调用 Microsoft Graph API
,"scope": "Mail.Read Mail.Send Files.Read.All","expires_in": 3600}至此,攻击者无需知道用户密码,即可通过access_token调用Microsoft...攻击者只需一次授权即可获取最大权限。第三,撤销机制滞后。 用户发现异常后,往往首先更改密码,却不知需手动撤销应用授权。而企业级批量撤销功能通常权限过高,仅限全局管理员使用,响应速度慢。...permissions with scopes);自动化撤销机制:当检测到可疑活动时,自动调用Microsoft Graph API撤销相关应用授权:# 使用Microsoft Graph API撤销用户授权...import requestsdef revoke_consent(user_id, app_id, access_token):url = f"https://graph.microsoft.com/...v1.0/users/{user_id}/oauth2PermissionGrants"headers = {"Authorization": f"Bearer {access_token}"}# 获取该用户的授权记录
2024年以来,Barracuda等安全厂商陆续披露多起高级OAuth钓鱼事件,攻击者不再试图窃取密码,而是诱导用户向恶意注册的应用授予权限,从而直接获取合法令牌。...向令牌端点换取访问令牌与刷新令牌;Client使用访问令牌调用受保护资源(如Microsoft Graph API)。...= {"Authorization": f"Bearer {token}"}# 列出用户邮箱文件夹resp = requests.get("https://graph.microsoft.com/v1.0...'] for f in folders if f['displayName'] == 'Inbox')emails = requests.get(f"https://graph.microsoft.com...可使用Microsoft Graph PowerShell批量设置:# 禁止用户同意应用Set-MgPolicyAuthorizationPolicy -PermissionGrantPolicyId
Salty 2FA并非孤立事件,而是代表了钓鱼攻击从“凭证收集”向“会话接管”演进的技术拐点。攻击者不再满足于获取用户名和密码,而是追求对合法会话的直接控制,以规避后续的身份验证检查。...尤其在Microsoft 365生态中,一旦攻击者获得有效会话Cookie或OAuth 2.0访问令牌,即可直接调用Graph API访问邮件、日历、文件甚至执行管理员操作,而无需再次触发MFA。...具体流程如下:用户访问钓鱼URL;攻击者服务器向Microsoft 365发起GET /login请求,获取原始登录页HTML;攻击者替换HTML中的表单提交地址(action)为自身代理端点,并注入JavaScript...攻击者可在任意设备上重放令牌,只要未过期即可访问资源。Microsoft虽支持设备合规性检查,但默认未强制启用,且对非托管设备(如个人手机)覆盖有限。...在此期间,即使用户登出或修改密码,已颁发的Refresh Token仍可换取新Access Token,除非显式吊销。
你有没有在登录某个小工具或第三方应用时,看到过这样的提示:“此应用想要访问你的Microsoft 365邮箱、日历和文件”?...攻击者不再执着于窃取密码,而是转而“合法”获取访问令牌(Access Token),绕过多因素认证(MFA),实现无痕持久化入侵。...比如,用微软账号登录一个项目管理工具,该工具就能读取你的日历安排会议——这一切看似安全,却暗藏陷阱。...一旦用户被导向伪造的微软登录页并输入凭证,系统会跳转到一个“授权请求”页面——看起来和平时一模一样。只要用户点了“同意”,攻击者就获得了OAuth令牌,从此无需密码、无需验证码,即可长期访问该账户。...定期吊销可疑刷新令牌通过Microsoft Graph API或安全中心,监控异常令牌活动(如非工作时间、非常用地点),并批量撤销高风险会话。
,攻击者可调用Google People API、Gmail API等,读取联系人、邮件、日历,甚至发送钓鱼邮件扩大攻击面。...user_code=ABCD-EFGH&device_code=xyz...一旦用户分享该URL,攻击者即可提取device_code,并在后台轮询Microsoft令牌端点,等待用户在其他设备上完成授权...Microsoft设备码流程令牌获取示例:import timedef poll_for_device_token(device_code):while True:resp = requests.post...Graph API支持查询用户授予的同意记录:GET https://graph.microsoft.com/v1.0/me/oauth2PermissionGrantsAuthorization:...该流程因无需用户在钓鱼页面输入任何信息,传统基于表单提交的检测完全失效。未来,云服务商应考虑在设备码授权时增加二次确认(如短信验证码),或限制非交互式流程的权限范围。此外,会议主办方亦负有安全责任。
研究揭示,此类攻击通过滥用OAuth 2.0设备授权流程,在用户主动授权的掩护下获取长期有效的刷新令牌,从而规避传统基于密码泄露或会话劫持的检测机制。...其优势在于:无需漏洞利用或密码爆破,成功率高;绕过基于短信或推送通知的MFA;获取的refresh_token可用于长期驻留,便于部署Cobalt Strike或Rclone等工具进行数据外泄。...留空(设备授权无需回调)API权限:勾选Microsoft Graph的Delegated权限,如:Mail.ReadWriteCalendars.ReadWriteUser.Read.AllFiles.ReadWrite.All4.2...error_description'))break4.3 令牌滥用示例获取令牌后,攻击者可调用Microsoft Graph API读取邮件:import requestswith open('stolen_token.json...('https://graph.microsoft.com/v1.0/me/messages?
获取地址:激活密钥 - Office中文网 (officech.com) ? 激活步骤 首先获取到有效的office 2016激活密钥。 ?...在打开软件时一般会弹出输入Microsoft Office密钥的框来,如果你之前安装激活过的话,可以点击软件左下角的“账户”→然后往左边望去,一般会有激活产品或者更改许可证的按钮,如下图,点击一下即可。...Excel 使用全新的用户界面,分析视觉效果并将其添加到您的数据中。 使用您最喜欢的快捷方式来执行不同的任务。 利用公式生成器、切片器和分析工具库等功能来节省时间。...Access 使用 access 2016 为您的企业快速创建基于浏览器的数据库应用程序。 Access 2016 自动存储您的SQL 数据并且更加安全。...Outlook 通过集中查看您的联系人、文件、日历和电子邮件,随时了解最新动态。 使用焦点框过滤并专注于手头的重要电子邮件和任务。 同步您的日历以接收提醒并随时了解您的事件和任务。
MFA,攻击者即获得有效会话Cookie,可长期访问邮箱、日历及共享文档。...(2.4)横向移动与持久化获取邮箱访问权后,攻击者常利用“自动转发规则”窃取未来邮件,或通过Graph API读取联系人、会议记录,为下一轮攻击提供情报。...部分样本还部署了基于OAuth应用的持久化后门:POST https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRulesAuthorization...(5.1)系统架构前端:Outlook插件,提供举报按钮与可疑链接预览;中台:基于Microsoft Graph API的行为分析引擎;后台:条件访问策略管理与OAuth授权审计模块。...):rules = graph_client.get(f'/users/{user_id}/mailFolders/inbox/messageRules')for rule in rules['value
,需要根据教程配置应用的api和key,之后访问并登陆作者搭建好的网站(使用Github账号),授权其实用你的应用客户端即可。...Graph为参考,选择“委托的权限”,根据列出的API权限需求表进行选择 “委托的权限”配置(用户登录)(选择Calendars->Calendars.Read) “应用程序权限”配置(非用户登录)...Postman 是一个可用于向 Microsoft Graph API 发出请求的工具:Postman&Microsoft Graph API使用 c.Microsoft Graph 快速入门示例... Microsoft Graph入门: a.选择语言或平台 b.获取应用 ID(客户端 ID) c.生成示例 d.登录,然后查看日历上的事件 PHP示例 注册PHP应用,下载应用示例...maven依赖,随后编写接口测试 主要步骤说明:注册应用、身份验证、API调用 其API调用核心思路为 创建一个authProvider用户凭据(根据实际身份验证的方式获取,不同渠道构建方式不同
尤为值得关注的是,攻击者不再仅满足于窃取静态凭证,而是通过AitM代理实时拦截用户与合法服务之间的完整认证流程,包括MFA令牌,从而获取有效的会话Cookie。...攻击流程如下:用户点击钓鱼邮件中的链接,访问攻击者控制的仿冒登录页(如secure-microsoft-login[.]xyz);该页面实际是一个反向代理,将用户所有请求(包括输入的用户名、密码、MFA...,使其误以为登录成功;攻击者使用窃取的Cookie,直接访问目标用户的邮箱、OneDrive或Azure门户,无需再次认证。...= "your_app_token"USER_ID = "user@contoso.com"def get_user_signins(user_id):url = f"https://graph.microsoft.com...:POST https://graph.microsoft.com/v1.0/users/{user-id}/revokeSignInSessionsAuthorization: Bearer {token
持续访问评估(CAE):启用CAE功能,使服务端能够实时响应风险事件。例如,一旦检测到用户密码更改或高风险登录,立即撤销现有的会话Token,迫使攻击者手中的Cookie失效。...匿名链接创建:检测到创建了无需登录即可访问的链接。...= "https://graph.microsoft.com/v1.0"self.access_token = Noneself.known_partner_domains = {"partner-a.com...", "supplier-b.net", "client-c.org"}def get_access_token(self) -> str:"""获取Microsoft Graph API访问令牌"""...= response.json().get("access_token")return self.access_tokenelse:raise Exception(f"Failed to get token
在此过程中,攻击者不仅捕获用户名与密码,更重要的是截获认证成功后返回的会话Cookie、OAuth 2.0访问令牌及刷新令牌(Refresh Token),从而实现无需凭证重放的持久化账户访问。...当受害者点击钓鱼链接(如login.microsoft-support[.]com)时,代理实时向目标IdP(如login.microsoftonline.com)发起HTTP请求,获取原始登录页面HTML...,即使用户登出仍有效;Access Token:短期有效(通常1小时),但可用于调用Microsoft Graph API。.../.default返回的Access Token可立即用于读取邮件:GET /v1.0/me/messages HTTP/1.1Host: graph.microsoft.comAuthorization..., access_token):url = f"https://graph.microsoft.com/v1.0/users/{user_id}/revokeSignInSessions"headers
文中通过 Python 与 Microsoft Graph Security API 的代码示例,展示如何实现异常登录行为的自动化检测与响应。...以微软 Authenticator 的“推送批准”(Push Approval)为例,用户仅需点击“Approve”即可完成验证。...4.2 检测层:基于行为的异常识别即使攻击者获得凭证,其行为模式通常与合法用户存在差异。可通过 Microsoft Graph Security API 实时监控高风险活动。...datetime, timedelta# 假设已通过 OAuth 2.0 获取 access_tokenheaders = {'Authorization': f'Bearer {access_token...此外,通过 Graph API 监控,我们成功捕获了所有模拟的“不可能旅行”与“异常数据访问”事件,验证了检测机制的有效性。
一旦授权,攻击者即可通过合法API令牌访问用户邮箱、日历等资源,规避传统邮件监控。这两种攻击均可通过非邮件渠道发起,使得基于邮件内容的过滤器形同虚设。...后台服务可配置为:在浏览器通知中心弹出告警;将事件记录到本地存储,供管理员通过Options Page查看;(可选)通过Webhook将事件推送到MSP的SIEM系统(需用户明确授权)。...所有日志仅包含时间戳、被拦截的URL与事件类型,不包含任何用户输入内容。...零配置用户体验:普通用户无需学习新操作,阻断界面清晰明确。开源透明:代码公开于GitHub,MSP可自行审计、定制或贡献规则。低资源开销:检测逻辑简单,内存与CPU占用极低。...与Microsoft Graph API联动:在检测到钓鱼后,自动调用/revokeSignInSessions终结用户所有活动会话。