非域环境的身份突破

admin 2025年5月14日16:59:38评论3 views字数 2050阅读6分50秒阅读模式

0. TL;DR

当你的Beacon已上线但目标是非域设备无法提取PRT时,直接使用 https://github.com/sudonoodle/BOF-entra-authcode-flow 这个 BOF 一把梭,通过浏览器窗口标题偷取授权码,获取Entra刷新令牌实现身份持久化。

1. 文章背景与动机

最近翻到一篇《Obtaining Microsoft Entra Refresh Tokens via Beacon》,第一眼我还以为又是那种形而上的理论,结果越看越觉得这玩意儿真有点意思,尤其适合我们这种一线摸爬滚打的安全工程师。

背景很简单:现在企业里 BYOD 越来越多,域环境反而没那么常见了。以前红队搞持久化,最爱提PRT(Primary Refresh Token),但遇到非域设备?对不起,没戏。作者也是在实战中被卡住,才琢磨出这套曲线救国的骚操作。说白了,就是:Beacon上线了,PRT拿不到,咱还能不能薅点什么?

2. 技术原理与流程

这部分其实不难,但作者的思路很灵活,值得我们抄作业。

2.1 OAuth授权码流,别被名字吓到

OAuth 2.0授权码流,听着逼格很高,说人话其实就是你点个链接,浏览器跳转一下,后台就能拿到一串code,然后换token。流程如下:

  • 客户端(比如你写的个小工具)造个带client_id、scope、redirect_uri的URL;
  • 用户(其实就是目标)在浏览器点一下,微软那边给你个code;
  • 你拿着code去换access token和refresh token。

2.2 技术细节,骚操作来了

  1. 造URL:client_id和scope随你挑,redirect_uri用微软的https://login.microsoftonline.com/common/oauth2/nativeclient,不用本地监听器,省心。
  2. 蹭会话:只要目标机器的浏览器已经登录Entra,点开URL就能直接跳转,连MFA都可能省了。
  3. 窗口标题偷code:骚气的地方来了,授权码不仅在URL里,还会出现在浏览器窗口标题栏。用Windows API(GetWindowTextA)一遍遍扫窗口,直接把code薅出来。

非域环境的身份突破TokenSmith工具生成授权码URL,便于在已登录环境下快速获取授权码。

  1. 换token:拿到code,标准OAuth接口一走,access/refresh token全到手,后续怎么玩都行。

2.3 适用场景,实战党狂喜

  • 非域环境救星:PRT拿不到?没事,咱还有refresh token。
  • 隐蔽性拉满:全程本地流量,SOC想抓包都没得抓。
  • client_id随心选:Teams、Copilot、Edge随便挑,装得像个正常用户。
  • 自动化友好:配合CS Beacon,撸token不是梦。

3. 攻击链条与亮点

3.1 攻击链条

  • 前提:Beacon上线,用户浏览器已登录Entra(未加域)。
  • 发起OAuth流:造URL,浏览器一开。
  • 窗口标题偷code:API一遍遍扫,code到手。

非域环境的身份突破授权码不仅在URL中,也会显示在窗口标题栏,便于通过API自动提取。

  • 换token:后续怎么玩,看你本事。

3.2 技术亮点,都是细节流(干这个,活不细是不行的)

  • 不靠PRT,照样持久化:以前觉得PRT拿不到就歇菜,现在发现路子多得很。
  • API偷code,优雅又高效:不用本地监听器,直接扫窗口,谁能想到?
  • client_id灵活选,OPSEC友好:装得像个正常人,蓝队都懒得查你。
  • 本地流量,SOC抓瞎:全程本地,流量分析基本没戏。
  • 还能和GraphSpy等工具联动:token到手,怎么玩都行。

3.3 和供应链攻击比一比,都是信任链里的事

看完这篇我第一反应就是:和Coinbase供应链攻击那种套娃操作有异曲同工之妙。一个是薅依赖链,一个是薅身份链,都是钻信任的空子。区别在于,供应链攻击更像广撒网,而token攻击是精准打击。但本质都是:你信任的地方,往往最危险

4. 个人收获与思考

4.1 技术反思,别迷信安全区

  • OAuth授权码流本来是给开发者省事的,结果被红队玩成了后门。
  • 以前觉得PRT拿不到就安全,现在看,refresh token照样能被曲线救国。
  • 蓝队要是只盯着PRT,迟早要吃亏,refresh token的异常获取也得盯着点。

4.2 防御建议,别让攻击者太省事

  • 最小权限:高危client_id能少给就少给,定期查查OAuth授权。
  • 终端监控:本地浏览器窗口、API调用、token请求都要盯着。
  • 供应链+身份安全一起抓:别只盯依赖链,身份链也要防。

4.3 攻防思维,别走寻常路

  • 攻击者总能找到新路子,别以为自己万无一失。
  • 防御方要有假设沦陷思维,链路全流程都得盯。
  • 供应链和身份token,本质都是信任链,安全建设不能偏科。

5. 总结

看完这篇文章,我最大的感受就是:安全攻防永远没有银弹,只有不断变换的套路和细节。别迷信某个点绝对安全,信任链上的每一环都可能被攻破。红队要多学点骚操作,蓝队要多想点假如我被打穿了怎么办。

原文始发于微信公众号(RedTeam):非域环境的身份突破

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月14日16:59:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   非域环境的身份突破https://cn-sec.com/archives/4060761.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息