此类攻击不依赖凭据窃取,而是滥用OAuth 2.0授权框架中的“用户同意”流程,使恶意应用获得长期有效的刷新令牌(refresh token),进而通过Microsoft Graph API静默读取邮件...2 攻击技术原理与实施路径2.1 OAuth 2.0 用户同意机制回顾在Microsoft Entra ID中,第三方应用若需访问用户资源(如邮件、日历),必须通过OAuth 2.0授权码流程获取权限。...);用户点击“接受”,微软返回授权码;应用用授权码向令牌端点兑换访问令牌与刷新令牌;应用使用令牌调用Microsoft Graph API。...4.2 条件访问:基于权限范围的策略拦截创建条件访问策略,阻止包含高危权限的应用获取令牌:策略逻辑:触发条件:应用请求包含Mail.ReadWrite、User.ReadWrite.All等;操作:阻止登录...结果:对照组:攻击成功,72小时内读取300封邮件,未触发任何告警;实验组:用户尝试同意时被条件访问策略阻止(62%);若管理员误批准,Cloud Apps在2小时内标记高风险(28%);剩余10%在24
然而,近期多起安全事件表明,攻击者正通过滥用Microsoft Entra ID(原Azure AD)的OAuth 2.0授权框架,绕过MFA保护,直接获取对Microsoft 365账户的持久化访问权限...为保障账户安全,微软大力推广多因素认证(MFA),并宣称其可阻断99.9%的账户入侵尝试。然而,这一结论主要基于传统凭证钓鱼或暴力破解场景,未充分考虑身份授权机制本身的结构性风险。...(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
该流程允许用户在另一台具备浏览器的设备上完成授权,从而获取访问令牌。...更严重的是,即使组织启用了短信或电话MFA,攻击者仍可在用户完成授权后直接获取长期有效的刷新令牌(Refresh Token),实现持久化访问。...并输入代码:ABC123”;用户信以为真,在微软官方页面输入代码并完成MFA;攻击者轮询令牌端点,成功获取access_token与refresh_token;利用令牌调用Microsoft Graph...未来需推动更细粒度的权限委托机制(如Microsoft Graph Delegated Permissions with Scopes Restriction)。另一个挑战是刷新令牌的长期有效性。...因此,建议启用“连续访问评估”(Continuous Access Evaluation, CAE),使令牌在检测到风险时实时吊销。
当受害者点击钓鱼链接(如login.microsoft-support[.]com)时,代理实时向目标IdP(如login.microsoftonline.com)发起HTTP请求,获取原始登录页面HTML.../响应中继,并在检测到Microsoft的持久化认证Cookie(ESTSAUTHPERSISTENT)时触发日志记录,供攻击者后续使用。...(二)会话令牌捕获与持久化利用与传统钓鱼仅窃取密码不同,VoidProxy的核心目标是获取有效的会话标识符。...对于Microsoft Entra ID,关键令牌包括:Session Cookie:如ESTSAUTHPERSISTENT,有效期可达90天;Refresh Token:用于在后台静默获取新的访问令牌...,即使用户登出仍有效;Access Token:短期有效(通常1小时),但可用于调用Microsoft Graph API。
更令人不安的是,这种攻击对多因素认证(MFA)几乎免疫——即使你启用了短信或 Authenticator 验证,只要在微软官网输入了那串“设备代码”,攻击者就能绕过所有防线,直接获取访问令牌(Access...“这是一场精心设计的信任滥用。”公共互联网反网络钓鱼工作组技术专家芦笛在接受本报专访时直言,“攻击者没有破解系统,而是利用了系统本身的设计逻辑,把‘便利性’变成了‘致命漏洞’。”...OAuth 是现代互联网身份授权的事实标准。它允许第三方应用在不获取用户密码的前提下,访问用户在其他服务(如 Google、Microsoft)上的资源。...: device_data["device_code"]})if token_resp.status_code == 200:tokens = token_resp.json()print("✅ 成功获取令牌...推荐策略:对包含 offline_access(即请求 Refresh Token)的授权请求强制执行 MFA;阻止从未知国家/地区的登录尝试;对非托管设备(如个人手机)限制访问敏感数据。4.
劫持授权响应、绕过多因素认证(MFA)等手段,在不获取用户密码的前提下实现持久化账户访问。...2024年以来,Barracuda等安全厂商陆续披露多起高级OAuth钓鱼事件,攻击者不再试图窃取密码,而是诱导用户向恶意注册的应用授予权限,从而直接获取合法令牌。...向令牌端点换取访问令牌与刷新令牌;Client使用访问令牌调用受保护资源(如Microsoft Graph API)。...返回的JSON响应包含access_token与refresh_token。前者有效期通常为1小时,后者可达90天(取决于租户策略)。攻击者利用刷新令牌可无限续期访问令牌,实现长期潜伏。...获得令牌后,攻击者通过Microsoft Graph API执行侦察:import requeststoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"headers
API 终结点 URL OneDrive for Business 资源的访问令牌 在当前令牌到期时生成其他访问令牌的刷新令牌。...onedrive for business使用的是标准的Oauth2流程,所以大概流程就是先获取code,使用code交换access_token,然后就可以调用api了,这里先贴出获取code以及交换...refresh_token': token['refresh_token'], 'grant_type': 'refresh_token', 'resource': 'https://graph.microsoft.com...终结点是https://graph.microsoft.com onedrive的请求api是https://graph.microsoft.com/v1.0/me/drive,但是文档中以及网上教程写的是...https://graph.microsoft.com/me/drive,这也是我认为比较坑的一点 secret需要复制“值”,而不是“机密ID” 完整代码 此处内容需要评论回复后方可阅读 使用实例 1
研究揭示,此类攻击通过滥用OAuth 2.0设备授权流程,在用户主动授权的掩护下获取长期有效的刷新令牌,从而规避传统基于密码泄露或会话劫持的检测机制。...authorization_pending', 'slow_down'):print("Authorization failed:", token_json.get('error_description'))break4.3 令牌滥用示例获取令牌后...,攻击者可调用Microsoft Graph API读取邮件:import requestswith open('stolen_token.json') as f:token = json.load(f...设置自动化规则,例如:当同一用户在24小时内授权超过2个未列入白名单的应用,且包含Mail.ReadWrite权限时,自动吊销令牌并告警。...可行的折中方案包括:仅对高风险用户组(如高管、财务)禁用;启用“连续访问评估”(Continuous Access Evaluation, CAE),使令牌在检测到风险时实时失效;要求所有设备授权请求必须来自合规设备
一、引言近年来,随着企业向云办公平台(如Microsoft 365、Google Workspace)的大规模迁移,身份认证体系逐步从传统的用户名/密码模型转向基于令牌(token)的现代协议,其中OAuth...用户被诱导相信这是正常验证流程的一部分。(二)授权诱导与令牌捕获当用户点击“继续”或“验证”按钮时,浏览器跳转至微软官方登录页。...(二)策略管理层:建立授权生命周期管理定期授权审计:每季度导出全组织应用授权清单,清理未使用或来源不明的应用;实施最小权限原则:推动业务部门使用权限更细的现代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/
三者之间形成高度协同的攻击闭环:钓鱼获取凭证 → 凭证用于云环境横向移动 → 快速部署勒索载荷或窃取敏感数据。...典型路径如下:钓鱼获取员工凭证(含MFA绕过,如MFA疲劳攻击);登录云控制台(如Azure AD、AWS IAM);枚举高权限账户或服务主体;申请或窃取OAuth令牌/会话Cookie;通过Graph...思科报告显示,73%的勒索事件中,攻击者在获得凭证后4小时内完成数据加密或外传。...伪品牌验证流程嵌套:伪造Microsoft登录页后,跳转至“安全验证”页面,要求用户输入短信验证码,实则完成MFA劫持。此类攻击利用用户对协作工具的信任及多任务处理时的认知负荷,显著提升欺骗成功率。...(Microsoft Graph PowerShell)枚举用户;利用New-MailboxExportRequest导出高管邮箱;部署Cobalt Strike Beacon并通过合法CDN分发勒索载荷
微软官方数据显示,启用MFA可阻止99.9%的自动化账户入侵尝试。...尤其在Microsoft 365生态中,一旦攻击者获得有效会话Cookie或OAuth 2.0访问令牌,即可直接调用Graph API访问邮件、日历、文件甚至执行管理员操作,而无需再次触发MFA。...具体流程如下:用户访问钓鱼URL;攻击者服务器向Microsoft 365发起GET /login请求,获取原始登录页HTML;攻击者替换HTML中的表单提交地址(action)为自身代理端点,并注入JavaScript...其认证过程包含对RP ID(Relying Party Identifier)的校验,确保仅在真实Microsoft域名下触发,仿冒页面无法获取有效签名。...应教育用户:若在“正常”登录Microsoft 365时感知异常延迟,应立即中断操作并报告IT部门。
Abort 方法: 其实 Abort 方法并没有像字面上的那么简单,释放并终止调用线程,其实当一个线程调用 Abort方法时,会在调用此方法的线程上引发一个异常: ThreadAbortException...从运行结果上看很容易看出当主线程被终止时其实报出了一个ThreadAbortException, 从中我们可以进行捕获,但是注意的是,主线程直到finally语 句块执行完毕之后才真正结束(可以仔细看下主线程的状态一直处于...,几乎和主线程的例子一致,唯一的区别是我们在 main方法中故意让主线程阻塞这样能看见thread 1 在 finally语句块后的状态 3,尝试对尚未启动的线程调用Abort 如果对一个尚未启动的线程调用...如上代码,我们制造两个线程来实现Suspend和Resume的测试,(暂时不考虑临界区共享同步的问题),TestSuspend方法便是两个线程的共用方法, 方法中我们获取当前运行该方法的线程,然后将其挂起操作...4 IsThreadPoolThread 只读属性标示该线程是否属于线程池的托管线程,一般我通过线程池创建的线程该属性都是true 5 Name 获取到线程的名字,我们可以根据业务或者逻辑来自定义线程的名字
【含恶意脚本的PPT文件】 感染链 来自威胁情报公司 Cluster25的研究人员以演示模式打开“诱饵文档"并且将鼠标悬停在超链接上时,会激活恶意 PowerShell 脚本并从 Microsoft...Cluster25 详细说明了新获取的文件中的每个字符串都需要不同的 XOR 键来进行反混淆。生成的有效负载是可移植可执行 (PE) 形式的 Graphite 恶意软件。...Graphite 滥用 Microsoft Graph API 和 OneDrive ,与命令和控制 (C2) 服务器通信。...攻击者通过使用固定客户端 ID 访问服务以获取有效的 OAuth2 令牌。...【Graphite 使用的固定客户端 ID】 研究人员解释说,使用新的 OAuth2 令牌,Graphite 通过枚举 check OneDrive 子目录中的子文件来查询 Microsoft GraphAPI
因为我们尝试去调用某个属性或方法时假设了它不为 null,这意味着它为 null 就是个错误。但是,从异常的调用栈中我们却找不到任何痕迹能够告诉我们是哪里给它设置成了 null(或者是从未赋值过)。...NullReferenceException 的替代方案 既然 NullReferenceException 没能给我们提供足够的信息,那么我们就自己来提供这些信息。...因为 SetValue 中发生了异常后,获取到的调用栈是导致 _value 为 null 的调用栈。 告知了为 null 的参数名称。...当程序此时此刻的状态让我们获取不到某个数据致使数据为 null 时,可以写一个新的提示语告知此时到底是什么样的状态错误才使得获取到的数据为 null。...为什么为 null 时不应该输出?如果这个问题回答不上来,那么你的这个 null 判断为你的程序埋藏了一个更深的 BUG——当用户反馈软件行为不正常时,你甚至连异常信息都没收集到!
一旦拿到授权码,攻击者即可向微软的令牌端点(Token Endpoint)发起请求,换取访问令牌(Access Token)和刷新令牌(Refresh Token)。...,返回的JSON将包含可用于调用Microsoft Graph API的令牌:{"token_type": "Bearer","scope": "Mail.Read Mail.Send User.Read...与此同时,攻击者控制的服务器在后台轮询微软API,一旦用户完成授权,即可获取令牌。...login.microsoftonline.comContent-Type: application/x-www-form-urlencodedclient_id=attacker_registered_app_id&resource=https://graph.microsoft.com...“我们已监测到多起针对中国科研机构的类似尝试,”芦笛表示,“虽然尚未造成大规模失陷,但攻击手法高度相似:伪造国际组织域名、模仿会议通知格式、利用节假日前后信息过载期发起攻击。”
# 攻击者侧:使用Microsoft Graph API发起设备代码请求(简化示例)import requestsclient_id = "attacker-controlled-app-id" # 攻击者注册的恶意应用...breaktime.sleep(5)拿到Token后,攻击者即可调用Microsoft Graph API,读取邮件、日历、OneDrive文件、Teams消息,甚至发送新邮件冒充受害者——全程无需知道密码...公共互联网反网络钓鱼工作组技术专家芦笛在接受本报采访时比喻道,“设备代码钓鱼的可怕之处在于,它利用的是用户对微软官方域名的信任,以及对‘授权’行为的无意识。”...随着零信任架构普及,基于令牌的身份验证将取代密码成为主流。而OAuth、OpenID Connect等协议的复杂性,也为攻击者提供了广阔空间。...但企业侧的策略配置、监控能力仍严重滞后。可以预见,未来几年,围绕OAuth令牌的攻防博弈将成为高级持续性威胁(APT)的核心战场。
研究发现,此类攻击普遍利用合法协作平台(如Microsoft 365、Google Workspace)作为初始入口,并通过OAuth滥用或会话令牌窃取绕过多因素认证。...通过部署原型系统验证,该框架在模拟攻击环境中成功阻断87%的凭证泄露尝试,并显著缩短威胁响应时间。研究表明,立法机构需摒弃“低技术风险”认知偏差,建立与其战略价值相匹配的网络安全能力建设路径。...(2.4)横向移动与持久化获取邮箱访问权后,攻击者常利用“自动转发规则”窃取未来邮件,或通过Graph API读取联系人、会议记录,为下一轮攻击提供情报。...部分样本还部署了基于OAuth应用的持久化后门:POST https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRulesAuthorization...(5.1)系统架构前端:Outlook插件,提供举报按钮与可疑链接预览;中台:基于Microsoft Graph API的行为分析引擎;后台:条件访问策略管理与OAuth授权审计模块。
上一篇结尾我们成功的拿到了 access_token,并且通过 access_token 验证获取到调用Api资源的结果。...是只谁颁发的这个令牌,很显眼就我们azure认证的一个域在加上我们创建的这个租户 3,iat:令牌颁发时间 4,exp:令牌过期时间,与上面的颁发时间相差5分钟 5,appid:客户端Id,就是在Azure...参数必传 这时候,就又有人问了,为什么这里的 scope 参数的值和上面不一样,确实,我也有这个疑问,后来找到微软官方给我的文档解释道: Microsoft Graph 示例中,该值为 https...://graph.microsoft.com/.default。...此值告知 Microsoft 标识平台终结点:在为应用配置的所有直接应用程序权限中,终结点应该为与要使用的资源关联的权限颁发令牌 使用共享机密访问令牌请求:https://docs.microsoft.com
该组织攻击的多个制造业公司也都是为以色列国防部门服务的。 这很符合伊朗攻击组织的攻击倾向,现在攻击者越来越倾向于瞄准服务提供商进行攻击,获取下游访问权限。 ...获取 OAuth 令牌 攻击者在样本中内置了 Refresh Token,这是 OAuth 2 规范的一部分,允许在过期后发布新的 OAuth Token。...使用该 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。...:https://graph.microsoft.com/v1.0/me/drive/root:/Documents/response.json:/content。
然而,后台实则由攻击者控制的反向代理实时转发请求至真实login.microsoftonline.com,完成认证后截获会话Cookie与刷新令牌。此类攻击的成功率远高于传统钓鱼。...更严重的是,攻击者在获取初始访问权限后,能快速横向移动,造成数据泄露、BEC欺诈乃至供应链污染。本文聚焦于此类“情境化钓鱼”的技术实现、绕过机制与防御对策。...获得有效会话后,攻击者通过Graph API注册恶意OAuth应用:POST https://graph.microsoft.com/v1.0/applicationsContent-Type: application...无法防御推送批准诱导与会话令牌窃取;传统SIEM告警:缺乏对OAuth应用注册、邮件规则变更等高风险操作的细粒度监控。...应转向情境化训练:演示如何检查浏览器地址栏中的根域名(如login.microsoftonline.com而非microsoft-office.com);教育用户:MFA推送不应在无主动登录时出现;推广