參考文章:https://www.checkmarx.com/blog/lenovo-watch-watching-you/
撰文及整理:叡揚資訊 資安服務處
我們都知道智慧裝置(如智慧手錶)需要蒐集一些資訊。對於使用者,我們希望僅有必要的資訊被分享及儲存,而其中關於個資的部份都被安全且可靠地處理。但不幸地,我們在這份研究中找到一些弱點存在智慧手錶中。這與使用者相關並且令人困擾。文章中將列舉描述這些弱點,並且分享如何在攻擊情景中利用弱點。
攻擊情境:有能力追蹤手錶擁有者的位址,不僅是其他國家的未知伺服器,有心人士也能透過竊聽網路取得資料。
竊聽/中間人攻擊:Mobile APP和伺服器之間的通訊傳遞未加密,任何人可以竊聽通訊。
攻擊情境:惡意使用者可以在與受害者在相同網路下獲取使用者認證、劫持帳號及追蹤使用者。
攻擊情境:任何知道使用者帳號的人可以修改使用者密碼,並且因此劫持遠端帳號。
攻擊情境:惡意使用者只要利用不夠嚴謹的驗證機制的情況下容易配對受害者的裝置如手錶,藉以取得控制權。
攻擊情境:惡意使用者可以傳送特定指令到裝置及偽造假來電到受害者的裝置。
攻擊情境:惡意使用者可以傳送特定指令到手錶設置鬧鐘。這功能允許增加多個每分鐘啟動的鬧鐘。
接下來我們下載了官方提供的手錶APP(下載量超過五萬次)。然後開始從APP監測流量。查看傳給遠端伺服器是什麼樣的權限需求。
通常每個APP都可能因為功能需要要求一些特別的權限,但從這次的研究中注意到了有些奇怪的請求,如即使尚未註冊帳號也去回傳使用者的個資,取得精確的使用者定位資訊。
註冊帳號,這觸發了我們的敏感神經。舉例來說,任何發送請求都沒有看到HTTPS。實際上,任何人都可以在這個時間點利用中間人攻擊,甚至看到使用者正在做什麼。接著,查看實際有什麼未加密資訊從APP傳送到伺服器。非常容易地看到每個事物-這裡有一些範例:
基本上惡意使用者可以在APP監測任何行動,很清楚地所有資料請求都是公開的。
如果資料都沒有私密性那攻擊者還能做些什麼呢?
接下來我們來實驗一下,建立兩組帳號(帳號A與帳號B)去觀察是否能劫持帳號。
一般而言藍牙是如何連線的呢?當第一次啟動Android應用程式,會嘗試找尋手錶配對。需要按下手錶按鈕「或」移動手臂。如果受害者已經在步行,這算是自然移動嗎?嘗試結果是可行的,行走中就會配對裝置。但有「更好」的方法。再次配對裝置,僅需鎖定手機後再解鎖,它繞過配對了...詳細可觀看:https://www.youtube.com/watch?v=5Q0Pi3O4r2k
現在我們來試試使用Ubertooth來竊聽藍牙的通訊,當撥出電話時捕捉到一些有趣的東西:
因此寫了一個Python腳本去觸發來電是...「NSA!」,細節可查閱:https://www.youtube.com/watch?v=1hzuSj4086s
你可以胡亂的在手錶上設定鬧鐘,並且為常規鬧鐘。舉例來說,設定在特定時間震動及通知配戴者,直到受害者移除它,受害者必須進入APP停用鬧鐘。攻擊者甚至可以進一步輸入大量的鬧鐘,建立某種鬧鐘的DoS。
基於上述的研究,向廠商提出了一些建議。分享使用者實際位置似乎不是智慧手錶的必要功能,這也違反隱私及個資保護。裝置、APP及伺服器之間的通訊應採用加密通訊,修正API權限以消除惡意使用者傳送命令、欺騙及設定鬧鐘的能力。
智慧裝置追蹤大量關於使用者的資訊,其中一部分能讓生活更便利。藉由測試智慧裝置安全性,能幫助開發商學習這些軟體中的弱點導致使用者的問題,它必須建置更好、更安全的軟體及裝置來預防。