|
受害者的手機在半夜連續(xù)接到了100多條驗證碼,醒來發(fā)現(xiàn)自己支付寶等賬號被盜,損失很重。
發(fā)生了什么呢?僅從這些描述,其實還不足以斷定攻擊者采用了怎樣的方式。有些人猜測這是通過無線監(jiān)聽竊取了驗證碼短信,還有人說睡覺前關機就可以防止被無線監(jiān)聽。
不幸的是,安全問題從來都是比較復雜的。竊取短信不一定只能通過無線監(jiān)聽;而即使真是通過無線監(jiān)聽攻擊的,睡覺前關機也不一定就能防止。
但還是可以說一下,為什么銀行支付寶等機構會選擇使用短信驗證碼這個機制,這個機制為什么不夠安全,以及普通用戶到底有什么能做的。
短信驗證碼到底起什么作用?
普遍意義上來說,信息系統(tǒng)是不太靠得住的。若干年前,網(wǎng)絡安全環(huán)境比較糟糕的時候,絕大部分電腦都被至少一個惡意軟件感染過?,F(xiàn)在情況好一些,惡意軟件感染量比過去少多了,但從服務器側(cè)泄露數(shù)據(jù)的事兒仍然很多。再加上壞人手里還有過去十幾年間陸續(xù)竊取的各種數(shù)據(jù),所以我們在考慮安全問題的時候,只能假設每個人的基本信息:姓名、地址、身份證號、常用密碼等等在壞人手上都有一份。 為了能在靠不住的信息系統(tǒng)里比較靠得住地進行一些重要操作,人們用了很多辦法,其中一個叫“雙因子驗證”(Two-factor verification)。
比如你要用電腦進行網(wǎng)銀轉(zhuǎn)賬。設計網(wǎng)銀安全體系的人就要假設你的賬號密碼早晚會被壞人竊取。在這種情況下怎么防止壞人用你的賬號密碼登錄你的網(wǎng)銀呢?
大家比較熟悉的“U盾”就是一種解決辦法。這個設備是獨立于電腦而存在的。要在電腦上操作網(wǎng)銀,把你賬戶里的錢轉(zhuǎn)給別人,就需要把這個設備連在電腦上。壞人沒有你的“U盾”,所以即使拿到了你的賬戶密碼,也動不了你的錢。在這里,你的密碼是一個驗證因子,U盾是另一個驗證因子。需要密碼+U盾才能驗證身份登錄網(wǎng)銀轉(zhuǎn)賬,這就是雙因子驗證。 雙因子驗證這個思路其實很古老,比計算機技術古老得多。有些銀行金庫的門需要由兩個人分別保管的兩把鑰匙一起操作才能開啟,這就是雙因子驗證。美軍如果要發(fā)射民兵核導彈,不但需要兩個操作員各自用確認鑰匙開一把鎖才能驗證發(fā)射代碼的正確性,還需要兩人把兩把發(fā)射鑰匙插進兩個發(fā)射孔同時轉(zhuǎn)動,兩個孔還設計得距離遙遠以防一個人同時轉(zhuǎn)兩把鑰匙,這就是它的高級版本。
U盾這種解決辦法是相對比較安全的。但網(wǎng)絡安全領域有這么一個“不可能三角“:“安全-方便-廉價“這三者無法同時達成。 U盾方案的成本不高,安全性也不錯,但不夠方便。因為如果要隨時使用網(wǎng)銀,就要隨時攜帶U盾。
于是一些對安全性要求沒有那么高的場合,人們廣泛使用了另一種驗證因子:手機短信驗證碼。手機總是要隨身帶的,所以這種方法比用U盾要方便得多。
手機相對于電腦,是一個獨立設備。短信驗證碼相對于用戶口令,也是獨立的。如果我們假設攻擊者即使掌握了很多用戶個人數(shù)據(jù),能入侵用戶電腦,也仍無法獲取手機短信,那么用手機短信作為一個獨立驗證因子也是可靠的。
但是因為網(wǎng)絡環(huán)境的變化,短信驗證這種方式正在面臨著問題。
短信驗證的漏洞
在非智能手機時代,要入侵手機竊取短信是比較困難的——不是不可能,但比較困難。但隨著智能手機的普及,入侵手機竊取短信已經(jīng)變得比較容易。比如,很多APP都有讀取短信的權限。只要這些APP中的任意一個存在漏洞,或者干脆本身就是惡意的,那你的短信也就危險了。
另外,對于用電腦訪問的業(yè)務來說,短信驗證碼是相對獨立的一個因子。但對在手機上訪問的業(yè)務來說,短信驗證碼就沒那么獨立了。電腦淪陷后,短信可能還是安全的。但手機淪陷后,短信也很可能也會被攻擊者拿到。 而甚至不入侵手機也可以竊取到短信。前幾年,有些運營商推出了“短信保管箱”業(yè)務,用戶可以用電腦在運營商網(wǎng)站上在線讀取短信——也就是說,如果你的電腦被入侵了,短信也就保不住了,不再是一個獨立可信的因子。所以一些網(wǎng)絡犯罪者就開始利用這一點。最終“短信保管箱”業(yè)務被取消了。
現(xiàn)在運營商雖然不在網(wǎng)站上保存短信了,但有些手機有自動把短信備份到云端的功能。如果開啟了這個功能,那么攻擊者只要掌握了你的云端賬號,就可以訪問到短信。這時候,短信也不再是一個獨立可信的因子了。
那么如果手機上不開啟任何會把短信保存到云端的功能,也能保證手機不被入侵,是不是短信就不會被竊取了呢?即使你今天仍在使用諾基亞黑白屏手機,短信還是可能被竊取。因為短信所用的無線信道并不那么可靠。雖然目前國內(nèi)3G/4G已經(jīng)普及,但大部分地區(qū)只是上網(wǎng)走3G/4G,短信還是通過不安全的GSM網(wǎng)絡在發(fā)送,而GSM是非常容易被監(jiān)聽的。 在十幾年前,如果要通過監(jiān)聽無線信號竊取短信,所用設備至少價值幾十萬元。但在今天,數(shù)千元就能買到同樣功能的設備。如果要求不高并且愿意自己動手,花上不到一百元也能做出勉強可用的設備。我 2013年做過一個相關主題的演講,其中談到了這類設備成本下降對安全的威脅。下面這張圖就是當時通過監(jiān)聽無線信號獲取到的一條運營商流量提醒短信: 作者通過監(jiān)聽無線信號獲取的短信 有人說晚上睡覺前把手機關機就能防止通過無線監(jiān)聽竊取短信。這話只對了一半。你們想一下:給別人發(fā)短信的時候,如果對方手機關機了,短信是不是仍然可以發(fā)的出去?所以,睡覺前把手機關機也許可以防止攻擊者到你的附近竊取短信,但無法阻止攻擊者在短信發(fā)送者附近竊取短信。比如攻擊者要竊取A公司給你發(fā)的驗證碼,只需要在A公司發(fā)短信的設備附近監(jiān)聽無線信號即可。而對攻擊者來說,在A公司發(fā)短信的設備附近進行監(jiān)聽顯然是更劃算的做法。因為只要在這一個地方,就能實現(xiàn)竊取所有A公司發(fā)出的驗證碼。
有辦法防備短信驗證碼的漏洞嗎?
靠短信實現(xiàn)雙因子驗證,總還是比完全沒有雙因子要強的。但因為存在上面這些問題,所以在今天,短信驗證碼也許仍然可以作為一個驗證因子,但各公司在設計業(yè)務安全體系的時候,對它的信任度需要調(diào)低一些。至少需要結(jié)合地理位置信息、設備信息、用戶特征等等來綜合判斷。而不能像很多年前一樣,僅憑一個短信驗證碼就確定用戶身份。
用戶也不是毫無辦法,可以嘗試開通VoLTE功能,讓短信也通過3G/4G網(wǎng)絡傳輸,增加通過無線監(jiān)聽竊取短信的難度。具體方法是: 電信用戶發(fā)送“KTVoLTE”到10001, 移動用戶發(fā)送“KTVoLTE”到10086, 聯(lián)通用戶發(fā)送“VBNCDGFBDE”到10010。 但目前不一定所有運營商在所有城市都支持了VoLTE。如果對安全比較重視,建議單獨準備一臺手機,這臺手機禁用WiFi,禁用移動網(wǎng)絡,僅用于打電話發(fā)短信。所有重要的驗證碼都只用這臺手機來接收。至于“睡覺前關機”,也許有那么一點用。但手機畢竟是個聯(lián)絡工具,萬一家人夜里有急事找你呢? |
|
|
來自: 昵稱27492377 > 《安全意外危險》