此类攻击不依赖凭据窃取,而是滥用OAuth 2.0授权框架中的“用户同意”流程,使恶意应用获得长期有效的刷新令牌(refresh token),进而通过Microsoft Graph API静默读取邮件...);用户点击“接受”,微软返回授权码;应用用授权码向令牌端点兑换访问令牌与刷新令牌;应用使用令牌调用Microsoft Graph API。...('https://graph.microsoft.com/v1.0/me/messages?.../v1.0/me/mailFolders/inbox/messageRules',json=rule_payload,headers=headers)此类操作完全通过合法API完成,日志中仅显示“应用ID...结果:对照组:攻击成功,72小时内读取300封邮件,未触发任何告警;实验组:用户尝试同意时被条件访问策略阻止(62%);若管理员误批准,Cloud Apps在2小时内标记高风险(28%);剩余10%在24
使用该 OAuth Token 就可以向 Microsoft Graph API 请求(https://graph.microsoft.com/v1.0/me/drive/root:/Documents...请求结构为:https://graph.microsoft.com/v1.0/me/drive/root:/Uploaded/???:/content。...通过 OneDrive 下载文件,请求结构为https://graph.microsoft.com/v1.0/me/drive/root:/Downloaded/???:/content。...Execute 未响应任何指令时,将进入该分支。响应中可以包含要执行的命令数组或先前下载文件的文件路径。攻击者也可以使用单命令与文件路径的组合。...:https://graph.microsoft.com/v1.0/me/drive/root:/Documents/response.json:/content。
= "https://graph.microsoft.com/v1.0"; public static final String NOTEBOOK_ID_FILTER_PREFIX = "/me/onenote...Graph API. */ private List getNoteBookContent(String accessToken, String notebookId) {...Graph API. */ private List getSectionContent(String accessToken, String sectionId) { /...Graph * API. */ private String getPageContent(String accessToken, String pageId) { URI uri =.../v1.0/me/onenote/pages/pageId/content获取html结果,再通过jsoup解析title、text,最后通过\n拼接返回buildMetadata方法根据不同的resourceType
一、引言近年来,随着企业向云办公平台(如Microsoft 365、Google Workspace)的大规模迁移,身份认证体系逐步从传统的用户名/密码模型转向基于令牌(token)的现代协议,其中OAuth...Graph API读取邮件、发送钓鱼邮件、下载OneDrive文件等。...(二)策略管理层:建立授权生命周期管理定期授权审计:每季度导出全组织应用授权清单,清理未使用或来源不明的应用;实施最小权限原则:推动业务部门使用权限更细的现代API(如Microsoft Graph的delegated...permissions with scopes);自动化撤销机制:当检测到可疑活动时,自动调用Microsoft Graph API撤销相关应用授权:# 使用Microsoft Graph API撤销用户授权...grant['clientId'] == app_id:delete_url = f"https://graph.microsoft.com/v1.0/oauth2PermissionGrants/{grant
摘要近年来,随着基于OAuth 2.0协议的身份联合与授权机制在企业级应用中的广泛部署,攻击者逐步将目标从传统凭证窃取转向对授权流程本身的滥用。...向令牌端点换取访问令牌与刷新令牌;Client使用访问令牌调用受保护资源(如Microsoft Graph API)。...获得令牌后,攻击者通过Microsoft Graph API执行侦察:import requeststoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"headers...= {"Authorization": f"Bearer {token}"}# 列出用户邮箱文件夹resp = requests.get("https://graph.microsoft.com/v1.0...(token):headers = {"Authorization": f"Bearer {token}"}apps = []url = "https://graph.microsoft.com/v1.0
伪品牌验证流程嵌套:伪造Microsoft登录页后,跳转至“安全验证”页面,要求用户输入短信验证码,实则完成MFA劫持。此类攻击利用用户对协作工具的信任及多任务处理时的认知负荷,显著提升欺骗成功率。...(Microsoft Graph PowerShell)枚举用户;利用New-MailboxExportRequest导出高管邮箱;部署Cobalt Strike Beacon并通过合法CDN分发勒索载荷...例如,某用户通常在工作日9–18点从上海登录,若凌晨3点从莫斯科发起/me/drive/root/children请求,应触发高风险告警。...4.3 响应层:自动化遏制SOAR集成凭证泄露监测:将暗网监控、Stealer Logs爬虫结果接入SOAR平台,一旦匹配企业域名邮箱,自动触发:强制密码重置;使所有活跃会话失效;锁定账户并通知SOC。...Graph API /users/{id}/revokeSignInSessions;发送Teams通知至用户及IT支持;创建Jira工单要求用户完成安全培训;更新IAM策略,强制启用FIDO2。
通过Microsoft Graph API定期拉取用户授权的应用列表,比对白名单。若发现未经批准的第三方应用请求Mail.Read、Mail.Send等权限,自动撤销授权并告警。...例如,某教师账户在凌晨3点从境外IP登录并批量转发邮件,系统可自动冻结会话并触发二次验证。4.4 第四层:交互式安全反馈与演练平台建立轻量级用户举报通道。...}'}url = "https://graph.microsoft.com/v1.0/me/oauth2PermissionGrants"resp = requests.get(url, headers...= f"https://graph.microsoft.com/v1.0/applications(appId='{app_id}')"app_resp = requests.get(app_url,...6 讨论本框架的有效性依赖于几个前提:一是教育机构具备基础的日志采集与API集成能力;二是管理层愿意投入资源维护白名单与风险规则库;三是用户接受一定程度的交互干预(如二次验证)。
Graph API遍历收件箱:import requestsACCESS_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs..." # 从AiTM获取headers...以下为通过Microsoft Graph API创建条件访问策略的示例:policy = {"displayName": "Block risky logins to SharePoint","state...': 'application/json'},json=policy)4.2 部署云访问安全代理(CASB)监控共享行为CASB可集成Microsoft 365审计日志,检测异常共享模式,例如:单账户在...通过构建会话图谱(Session Graph),将文件访问、登录、API调用等事件关联,可有效识别异常跳转链。例如,若某会话在访问1drv.ms后5秒内出现在非微软域名的登录页,则极可能为钓鱼。...应对之道,在于将安全控制从网络边界延伸至身份与会话层面。
(2.4)横向移动与持久化获取邮箱访问权后,攻击者常利用“自动转发规则”窃取未来邮件,或通过Graph API读取联系人、会议记录,为下一轮攻击提供情报。...部分样本还部署了基于OAuth应用的持久化后门:POST https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRulesAuthorization...(5.1)系统架构前端:Outlook插件,提供举报按钮与可疑链接预览;中台:基于Microsoft Graph API的行为分析引擎;后台:条件访问策略管理与OAuth授权审计模块。...(5.2)关键功能代码示例自动检测并阻断恶意邮件转发规则:from microsoft_graph import GraphClientdef detect_malicious_forwarding(user_id...87%;平均威胁响应时间从4.2小时降至18分钟;用户对安全干预的接受度达89%,认为“不影响日常工作流”。
,即使用户登出仍有效;Access Token:短期有效(通常1小时),但可用于调用Microsoft Graph API。.../.default返回的Access Token可立即用于读取邮件:GET /v1.0/me/messages HTTP/1.1Host: graph.microsoft.comAuthorization...上述缺陷使得即便组织部署了“强MFA”,在面对AiTM攻击时仍形同虚设。四、纵深防御体系构建为有效抵御VoidProxy类攻击,需从身份验证、会话管理与终端安全三个层面重构防御策略。...Microsoft Graph提供/revokeSignInSessions API,可编程终止可疑会话:import requestsdef revoke_suspicious_sessions(user_id..., access_token):url = f"https://graph.microsoft.com/v1.0/users/{user_id}/revokeSignInSessions"headers
如https://microsoft.com/devicelogin),输入user_code;授权服务器验证用户身份(通常包括MFA)后,将授权授予客户端;客户端通过轮询使用device_code换取访问令牌...,成功获取access_token与refresh_token;利用令牌调用Microsoft Graph API,读取邮件、日历、联系人,甚至创建新应用或修改权限。...假设攻击者已注册一个Azure AD应用,client_id为“a1b2c3d4-5678-90ef-ghij-klmnopqrstuv”,并申请了以下API权限:Microsoft Graph: Mail.ReadWrite...随后,攻击者可使用该令牌调用Graph API:# Example: Read user's mailboxheaders = {'Authorization': f'Bearer {token_json...["access_token"]}'}mail_resp = requests.get('https://graph.microsoft.com/v1.0/me/messages',headers=headers
设置邮件转发规则:通过Exchange Web Services (EWS) API创建隐藏的邮件转发规则,将含“Board Meeting”、“M&A”、“Q4 Forecast”等关键词的邮件自动转发至外部邮箱...搜索并下载敏感文档:利用Graph API遍历OneDrive与SharePoint中的文件夹,下载包含“NDA”、“Term Sheet”、“Due Diligence”等关键词的文档。...以下Python脚本利用Microsoft Graph API实现授权审计:import requestsdef audit_oauth_apps(user_token):headers = {"Authorization...": f"Bearer {user_token}"}url = "https://graph.microsoft.com/v1.0/me/oauth2PermissionGrants"response...//graph.microsoft.com/v1.0/applications/{app_id}",headers=headers).json()display_name = app_info.get(
更关键的是,SharePoint支持动态生成临时共享链接,且可通过Microsoft Graph API进行程序化管理。...(如普通员工创建大量登录页面)以下Python脚本示例展示如何通过Microsoft Graph API审计可疑共享项:import requestsimport jsondef detect_suspicious_sharing...(token):headers = {'Authorization': f'Bearer {token}'}url = "https://graph.microsoft.com/v1.0/sites/root...in drives:items_url = f"https://graph.microsoft.com/v1.0/drives/{drive['id']}/root/children"items =...未来工作将聚焦于利用AI模型对SharePoint页面内容进行语义级风险评分,以及推动行业标准要求SaaS平台对用户上传的可执行内容实施更严格的沙箱隔离。
开发流程 向 Azure Active Directory (AAD) 注册的客户端 ID 和密钥(客户端密码) 从 OAuth 2 授权代码流收到的授权代码 OneDrive for Business...API 终结点 URL OneDrive for Business 资源的访问令牌 在当前令牌到期时生成其他访问令牌的刷新令牌。...refresh_token': token['refresh_token'], 'grant_type': 'refresh_token', 'resource': 'https://graph.microsoft.com...r.status_code not in [200, 201, 202]: print("上传出错") break 遇到的几个坑 终结点是https://graph.microsoft.com...onedrive的请求api是https://graph.microsoft.com/v1.0/me/drive,但是文档中以及网上教程写的是https://graph.microsoft.com/me
以下Python脚本模拟检测异常会话(基于Microsoft Graph API):import requestsfrom datetime import datetime, timedeltaGRAPH_API_TOKEN.../v1.0/auditLogs/signIns?...$filter=userPrincipalName eq '{user_id}'&$top=10"headers = {"Authorization": f"Bearer {GRAPH_API_TOKEN...:POST https://graph.microsoft.com/v1.0/users/{user-id}/revokeSignInSessionsAuthorization: Bearer {token...未来工作将聚焦于基于UEBA(用户与实体行为分析)的实时会话风险评分,以及FIDO2在混合办公环境中的大规模部署挑战。安全防御不应止步于入口,而需贯穿整个身份生命周期。
该代理并非独立产品,而是深度嵌入Microsoft Defender for Office 365的工作流中,支持对用户通过“报告钓鱼”按钮提交的邮件进行实时分析。...本文聚焦该分拣代理的技术实现与运营价值,避免泛泛讨论“AI改变安全”,而是从机制、验证、集成三个维度构建闭环论证,确保技术细节准确、对策可落地。...上下文关联:查询Microsoft Graph,确认发件人是否为已知联系人、近期是否有类似通信。...Copilot学习循环:# 示例:通过Microsoft Graph API提交反馈import requestsdef submit_feedback(message_id, is_phish, comment...):url = f"https://graph.microsoft.com/v1.0/security/messages/{message_id}/feedback"headers = {"Authorization
Graph API 窃取数据breakelif token_resp.json().get("error") == "authorization_pending":time.sleep(5)else:...print("❌ 授权失败:", token_resp.text)break一旦拿到 access_token,攻击者即可调用 Microsoft Graph API 执行任意操作:# 示例:读取受害者最近.../v1.0/me/messages?...原因很简单:MFA 验证的是“用户身份”,而非“授权对象”。当用户在微软官网完成 MFA 验证后,系统认为“这是本人操作”,于是放心地将权限授予请求的应用。...芦笛总结道,“企业必须从‘被动防御’转向‘主动狩猎’。”五、行业反思:便利与安全的天平该如何摆?设备代码钓鱼的流行,暴露出一个深层矛盾:现代身份协议在追求用户体验的同时,是否牺牲了安全可见性?
研究基于实际捕获的恶意应用注册信息、授权日志与API调用轨迹,系统还原了从社会工程诱骗、OAuth同意页面伪造到数据外传的完整攻击链。...(Access Token)与刷新令牌(Refresh Token);应用使用令牌调用Microsoft Graph API。...3.3 令牌获取与持久化访问用户点击“同意”后,Microsoft将授权码发送至redirect_uri。...3.4 数据窃取与横向移动获得令牌后,攻击者可调用Microsoft Graph API执行以下操作:# 读取最新100封邮件Invoke-RestMethod -Uri "https://graph.microsoft.com...尤其当用户将“微软登录页面”等同于“安全操作”时,社会工程成功率极高。此外,微软的默认安全策略偏向可用性。
5.5 长期运行API故障 对于长期运行的 API,很可能出现第一次请求成功,且后续每次去获取结果时 API 也处于正常运行(每次都回传 200)中,但其底层操作已经失败了的情况。...例如,用户集合可能包含多个地址的用户资源: GET https://api.contoso.com/v1.0/people/123/addresses { "value": [ { "street...例如: GET https://api.contoso.com/v1.0/people?$orderBy=name 将返回按name进行升序排序的所有人员。...GET https://api.contoso.com/v1.0/people?$orderBy=name desc 将返回按name进行降序排序的所有人。...Pagination 返回集合的RESTful API可能返回部分集。 这些服务的消费者清楚将获得部分结果集,并能正确地翻页以检索整个结果集。 RESTful API可能支持两种形式的分页。
如https://microsoft.com/devicelogin),输入user_code;授权服务器验证用户身份(通常包括MFA)后,将授权授予客户端;客户端通过轮询使用device_code换取访问令牌...error_description'))break4.3 令牌滥用示例获取令牌后,攻击者可调用Microsoft Graph API读取邮件:import requestswith open('stolen_token.json...('https://graph.microsoft.com/v1.0/me/messages?...设置自动化规则,例如:当同一用户在24小时内授权超过2个未列入白名单的应用,且包含Mail.ReadWrite权限时,自动吊销令牌并告警。...可行的折中方案包括:仅对高风险用户组(如高管、财务)禁用;启用“连续访问评估”(Continuous Access Evaluation, CAE),使令牌在检测到风险时实时失效;要求所有设备授权请求必须来自合规设备