惡意GIF利用Microsoft Teams漏洞劫持帳戶

發布時間 2020-04-29

0x00 事件背景


CyberArk的研究人員發現Microsoft Teams中存在子域名接管漏洞,該漏洞使攻擊者向用戶發送惡意GIF圖像達到竊取用戶數據并劫持Teams賬戶的目的。

Microsoft Teams 是一款基于聊天的智能團隊協作工具,可以同步進行文檔共享,并為成員提供包括語音、視頻會議在內的即時通訊工具。

由于用戶不必共享GIF,只是看到它就能受到影響,因此該漏洞可以自動傳播,并影響使用Teams桌面或Web瀏覽器版本的每個用戶。



0x01 漏洞分析


該缺陷與Microsoft Teams處理圖像資源身份驗證的方式有關。每次打開Teams客戶端時會創建一個臨時的token或access token。此令牌以JWT的形式由Microsoft授權和身份驗證服務器“login.microsoftonline.com”創建,允許用戶查看個人或會話中分享的圖像。



該應用程序使用兩個令牌進行身份驗證:authtoken和skypetoken。為了研究兩個令牌的關系,我們提取了Teams客戶端的流量,其中獲取消息請求如下:

GET https://amer.ng.msg.teams.microsoft.com/v1/users/ME/conversations/19%3A...%40unq.gbl.spaces/messages?view=msnp24Equivalent|supportsMessageProperties&pageSize=200&startTime=1 HTTP/1.1

Host: amer.ng.msg.teams.microsoft.com

Connection: keep-alive

Pragma: no-cache

Cache-Control: no-cache

x-ms-session-id: 00000000000-0000-0000-0000-00000000000

BehaviorOverride: redirectAs404

x-ms-scenario-id: 00

x-ms-client-cpm: ApplicationLaunch

x-ms-client-env:

x-ms-client-type:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36

ClientInfo:

Accept: json

Sec-Fetch-Dest: empty

x-ms-client-version:

x-ms-user-type: user

Authentication: skypetoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IkVhc3RlckVnZyA6KSIsInR5cCI6IkpXVCJ9.eyJ...

Origin: https://teams.microsoft.com

Sec-Fetch-Site: same-site

Sec-Fetch-Mode: cors

Referer: https://teams.microsoft.com/_

Accept-Encoding: gzip, deflate, br

Accept-Language: en-US,en;q=0.9

從報文中看出,客戶端僅發送了一個身份驗證令牌,該令牌可以在“Authentication”字段中找到,名稱為“skypetoken”。顯然要想發送消息,我們需要獲得一個Skype令牌。Skype令牌從何而來呢?我們進一步研究了流量,找到了Teams客戶創建skypetoken請求的會話:

POST /api/authsvc/v1.0/authz HTTP/1.1

Host: teams.microsoft.com

Connection: close

Content-Length: 0

Pragma: no-cache

Cache-Control: no-cache

x-ms-session-id: 00000000000-0000-0000-0000-00000000000

x-ms-scenario-id: 00

x-ms-user-type: user

x-ms-client-env:

x-ms-client-type:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IktleXMiLCJraWQiOiJLZXlzRXZlcnlXaGVyZSJ9.eyJ...

Accept: application/json, text/plain, */*

X-Client-UI-Language: en-us

Sec-Fetch-Dest: empty

ms-teams-authz-type: TokenRefresh

x-ms-client-version:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36

Origin: https://teams.microsoft.com

Sec-Fetch-Site: same-origin

Sec-Fetch-Mode: cors

Referer: https://teams.microsoft.com/_

Accept-Encoding: gzip, deflate

Accept-Language: en-US,en;q=0.9

Cookie: {redacted}

從報文可以看出,authtoken生成了skype token。有了這兩個令牌,我們就可以通過調用Teams API接口,實現發送消息、閱讀消息、創建組、添加新用戶或從中刪除用戶組、更改組的權限等功能。

authtoken cookie設置是發送給teams.microsoft.team或其他子域名,研究人員發現了兩個存在劫持攻擊漏洞的子域名:

1. aadsync-test.teams.microsoft.com

2. data-dev.teams.microsoft.com

如果攻擊者可以讓用戶訪問劫持的子域名,則受害者的瀏覽器會將cookie發送到攻擊者的服務器,在收到authtoken之后,攻擊者可以創建一個skype token,竊取受害者的Teams帳戶數據。



有了上述被黑的子域名后,攻擊者就可以通過向受害者或群聊的所有成員發送惡意鏈接(即GIF圖像)來利用此漏洞。將圖像的“src”屬性設置為被黑的子域名,并發送給受害者。當接收者打開消息后,瀏覽器就會發送authtoken cookies到被黑的子域名,然后嘗試加載該圖像。之后攻擊者利用authtoken cookies創建一個skype token,并最終獲取受害者的所有數據。



0x02 漏洞驗證


1. 研究人員還做了一個漏洞利用的PoC視頻,如下所示:

https://fast.wistia.com/embed/medias/f4b25lcyzm

2. 此外,研究人員還編寫了一個腳本,該腳本可抓取受害者的對話并進行線程處理,并將其保存到本地文件中,如圖所示:



0x03 結論


由于該漏洞可以自動傳播,類似于蠕蟲病毒,從而導致破壞目標組織中的所有帳戶。最終,攻擊者可以訪問您組織的Teams帳戶中的所有數據,收集機密信息、會議和日歷信息、競爭性數據、密碼、私人信息、商業計劃等。這個問題很關鍵,由于Microsoft Teams和Zoom等視頻會議解決方案是在COVID-19流行期間,企業、學校甚至政府組織選擇的主要通信渠道,這些應用程序中的數據量巨大,并且通常包括用戶名、密碼和機密業務信息,這使它們成為攻擊者的主要目標。微軟于3月20日刪除了兩個子域的錯誤配置的DNS記錄,并在4月20號發布了補丁更新,緩解未來類似的安全風險。


0x04 參考鏈接


https://www.cyberark.com/threat-research-blog/beware-of-the-gif-account-takeover-vulnerability-in-microsoft-teams/

https://securityaffairs.co/wordpress/102344/hacking/hacking-microsoft-teams-accounts.html