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 技术细节,骚操作来了
-
造URL:client_id和scope随你挑,redirect_uri用微软的 https://login.microsoftonline.com/common/oauth2/nativeclient
,不用本地监听器,省心。 -
蹭会话:只要目标机器的浏览器已经登录Entra,点开URL就能直接跳转,连MFA都可能省了。 -
窗口标题偷code:骚气的地方来了,授权码不仅在URL里,还会出现在浏览器窗口标题栏。用Windows API(GetWindowTextA)一遍遍扫窗口,直接把code薅出来。
TokenSmith工具生成授权码URL,便于在已登录环境下快速获取授权码。
-
换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):非域环境的身份突破
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论