天天看點

從掃碼登入的原理分析QQ大量被盜事件

6 月 26 号晚上,大量 QQ 被盜的新聞一度沖上微網誌熱搜。很多人反映自己的 QQ 不受控制地發送大量違規圖檔。

6 月 27 号早上,騰訊 QQ 官方下場發了公告。

從掃碼登入的原理分析QQ大量被盜事件

公告總結來說就是“使用者掃了釣魚二維碼,和騰訊無關”。

到底和騰訊有關嗎?我們來分析分析。

掃碼登入

先看 QQ 掃描登入的流程,大緻分為三個階段:

  1. 二維碼展示階段
  2. 掃碼階段
  3. 登入确認階段

先簡單過一下登入流程:

  1. 使用者打開電腦 QQ。
  2. 電腦 QQ 顯示一個二維碼。
  3. 使用者拿起手機掃碼。
  4. 電腦 QQ 顯示“掃碼成功,請用 QQ 手機版确認”。
  5. 手機 QQ 顯示“您正在一台新裝置登入 QQ”,讓使用者選擇請選擇登入還是拒絕。
  6. 使用者選擇登入,電腦 QQ 登入成功,整個流程結束。

根據使用者的行為畫出整個時序圖:

從掃碼登入的原理分析QQ大量被盜事件

這套掃碼登入的流程在業界被廣泛地使用,也足以證明其合理性。

過程一共有四個參與者,分别是:使用者、手機、電腦、騰訊 QQ 伺服器。

黑客無法僞造使用者、手機、和騰訊 QQ 伺服器這三個參與者,但是可以在電腦端上動手腳,這次的盜号事件,正是如此。

到底是怎麼攻擊的呢?我們往下看。

黑客如何盜号

根據我了解到的一些資訊,我大膽猜測一下盜号的過程:

網吧裡面的 WeGame 被黑客注入了,然後黑客用手表 QQ 的登入二維碼僞裝成 WeGame 的登入二維碼,劫持了使用者的授權資訊,黑客利用授權資訊和騰訊伺服器互動,批量發送圖檔。

按照我的推論,還原一下犯罪現場:

首先,黑客入侵一個大的網吧管理服務商,在 WeGame 這個軟體上面注入一層釣魚入口。

然後這個服務商下的網吧下載下傳了這個被注入的 WeGame。

使用者去網吧上網,打開 WeGame 的時候同時也打開了釣魚入口。

從掃碼登入的原理分析QQ大量被盜事件

這個釣魚入口輸入賬号密碼顯示登入錯誤。

于是,使用者隻能掃碼登入,使用者一掃描,看到的卻是登入手表 QQ。

使用者感到疑惑,但是也沒有想太多,點了确定登入。

授權成功,黑客拿到授權資訊。

從掃碼登入的原理分析QQ大量被盜事件

整個過程黑客并沒有直接盜取到你的賬号密碼,隻是通過“釣魚”拿到了你的授權資訊。

而騰訊的伺服器,隻認授權資訊不認人,隻要授權資訊是對的,不管誰去請求,騰訊都會放行。

就這樣,黑客得到了伺服器的信任,讓你的賬号批量發送圖檔。

回答

按照上面的推論,會有幾個問題:

1、為什麼沒有把被盜号的人擠下線。

上面提到了,黑客拿到的是手表 QQ 的授權資訊,手表QQ 和手機 QQ 以及電腦 QQ 都不沖突。

也就是說,即使你手機 QQ 線上,黑客也能發送消息,甚至你一邊撤回,黑客還能一邊繼續發圖檔。

2、類似大量盜号事件是不是第一次?

不是。早在五月份就有類似的案例,但看起來騰訊并沒有重視。

從掃碼登入的原理分析QQ大量被盜事件

3、為什麼 QQ 經常被盜,但是微信沒有這種情況?

QQ 誕生于 1999 年,屬于遠古時代的産物,曆史遺留問題比較多。

微信誕生于 2011 年,跳過了 QQ 踩過的一些坑,權限把控得也更嚴格。

雖然功能上微信沒有 QQ 強大,但安全方面一直做得比 QQ 要好。畢竟安全是微信和支付寶這種帶有金融屬性的軟體的根基,安全做不好是玩不下去的。

4、為什麼沒有掃過任何碼 QQ 也被盜了?為什麼三百年沒用過的 QQ 也被盜了?為什麼有些去世的人的 QQ 也被盜了?

如果真的有這種情況,那我也沒法解釋,隻能讓騰訊來解釋了。

一些其他看法

上面是我根據網上的資訊推測處理的,網絡上還有其他的觀點。

比較主流的是“學習通資訊撞庫”和“js 劫取授權資訊”。

學習通撞庫

這種說法的核心是:學習通洩漏了使用者的資訊,然後有些使用者學習通的密碼和 QQ 密碼設定的是一樣,間接導緻使用者 QQ 密碼洩漏。

我個人覺得這種可能性很低。

為什麼呢?

第一,騰訊和學習通這種體量的 APP 肯定會對使用者密碼脫敏加密處理,并不能直接撞庫攻擊。

第二,就算破解了加密方式,拿到了使用者的密碼,也很難直接登入使用者的 QQ。因為在登入的時候,會觸發新裝置登入驗證,如果拿不到使用者的登入驗證碼,是沒有辦法登入成功的。

JS 取授權資訊

根據酷安大佬@JiuXia2025 的說法,此次大量 QQ 被盜是因為使用者點了某個連結,然後被 js 劫取了浏覽器裡面的 Cookie,黑客從中拿到了能控制 QQ 賬号的 key,進而批量發送圖檔。

從掃碼登入的原理分析QQ大量被盜事件

圖檔來自于why技術

對于大佬的實力,我不懷疑。

對于大佬的觀點,我保持一個懷疑的态度。

第一,我不相信這麼多年過去了,騰訊還沒有對 js 攻擊做防護。

第二,我不認為在 QQ 裡面點開一個連結,QQ 會給浏覽器授權具備“發送消息”的權限。如果沒有“發送消息”的權限,就算浏覽器的授權資訊算被 js 劫取也沒有任何意義。

總結

總結一下我的觀點就是:

一個有錢人家裡錢太多了總是被偷,于是這個有錢人花重金打造了世界上最牛的門,開門需要經過二十四道機關和五次密碼确認,最後還需要驗證指紋和人臉。

即使這樣,這個有錢人的錢還是被偷了。

為什麼還會被偷呢?

記者采訪了這個有錢人。

這個有錢人隻說了一句話:一切責任盡在使用者。

寫在最後

吃瓜歸吃瓜,還是要搞技術的,我預估掃碼登入的流程會成為近期熱門面試題。

為什麼呢?

第一,可以驗證候選人對技術有沒有敏銳的捕捉力。

第二,可以很好地延伸到其他技術點。比如:

  1. Redis 過期時間怎麼設定?項目中有用到過嗎?
  2. Token、Cookie、Session 三者有什麼差別?
  3. 為什麼要輪詢二維碼狀态?用 Http 長連接配接不行嗎?用 Websocket 不行嗎?
  4. 還有哪些常見的攻擊手段?應對措施分别是什麼?
  5. 了解 OAuth2.0 和 JWT 嗎?

你看,這一套組合拳下來是不是行雲流水、一氣呵成?

是以啊,還是得繼續學啊!

畢竟,宇宙的盡頭是卷王,你不學習他稱王。

以上所有推論僅代表個人觀點,屬于個人猜想,素材全部來自于網上。

一切以官方公告為準,不信謠不傳謠。

參考資料

  • ​​https://www.apereo.org/projects/cas​​
  • ​​https://juejin.cn/post/6844904111398191117​​
  • ​​https://mp.weixin.qq.com/s/kSzFnjPgflVdpKESvsfToA​​

繼續閱讀