惡意GIF利用Microsoft Teams漏洞劫持帳戶
發布時間 2020-04-290x00 事件背景
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