標籤:

從上手到「直播」,一次智能震動棒Hacking之旅

近幾年,物聯網安全事件頻出,不過大家的關注點大多停留在電子設備上,少有人關注過玩具,特別是成人玩具。今天我們破天荒地來聊聊性玩具的安全性。

首先聊聊幾個問題:

1.震動棒應該去連Wi-Fi嗎?

2.如果帶內窺攝像頭呢?

3. 還包含連接到Skype的隱藏功能?

4.可以將視頻自動保存到網路文件共享?

5.還可以用電子郵件發送圖片?

6.如果它的Web界面存在代碼注入,怎麼辦?

看完這6個問題,小盆友們,你們是不是懵逼了,什麼東東會有這麼好玩的功能?

比如這款帶內窺攝像頭的震動棒:SVAKOM Siime Eye。SVAKOM是全球高端知名情趣生活方式的品牌服務商,成立於2012年,主要研發智能情趣用品。

本文將重點關注其內置攝像頭是如何被黑客攻破的。

SVAKOM Siime Eye是如何運行的

Siime Eye需要iPhone或Android應用配合使用,啟動硬體後,手機使用默認密碼(88888888)連接到WiFi(SSID「Siime Eye」),然後你就可以通過應用控制拍照、視頻了。

它的Android應用內部結構是這樣:

如上圖所示,裡邊提到「wingedcamlib」和「skyviper」這兩個名字,看著很像專門為無人機應用編寫的庫文件。

我和SkyViper(可以拍攝高清視頻的無人機)的開發人員聊了聊,對方像我一樣感到驚訝,公司內部代碼怎麼會在一個性玩具的應用上運行呢?他們懷疑開發Sky Viper控制應用早期版本和編寫Siime Eye應用的是同一個人。

這樣想並非沒有根據的,「com.SiimeEye」源代碼包含的一些硬編碼及其IP地址和埠非常能說明問題:

有一個名為「admin」的帳戶,密碼為空

在使用筆記本電腦連接到Siime Eye AP時,我嘗試使用192.168.1.1:80的伺服器,這時伺服器彈出驗證框,提示輸入用戶名和密碼:

這看起來很像平時所見的登錄身份驗證。我輸入用戶名「admin」後,直接進入了AP的Web控制界面。

這裡需要注意,由於登錄憑據在官方應用程序中是硬編碼的,任何準備使用Siime Eye的用戶都不能更改這些憑據。如果有人可以進入無線AP,那他就可以隨時訪問此Web應用程序中的所有內容,此Web應用允許多個並發連接。

通過APP可以看到震動棒內置攝像頭所拍攝的畫面,由於是Wi-Fi AP,黑客可以輕而易舉地找到使用震動棒的用戶。

鑒於傳輸視頻所需的帶寬,大部分震動棒都被配置成Wi-Fi客戶端而不是接入點運行,Siime Eye的這個選擇讓我感覺無法理解。

在正常使用情況下,無線AP名稱很少會被更改。這意味著我們可以查詢wigle.net等Wi-Fi數據網站,查找可能出現「Siime Eye」的位置。以下是我在東京看到的示例圖:

以上這些都是小意思,下面我們來看黑客是怎麼獲得震動棒的Root Shell許可權,以及提權後如何進行持久性控制的。

軟體

Siime Eye震動棒應用之所以會和無人機的一些代碼相似,那是因為對於編寫無人機相機程序的開發人員來說,附加到震動棒上的相機和無人機上的相機是沒有區別的。也就是說只要是這類相機,不管用途是什麼,它們背後的程序代碼都是通用的,因此我可以利用這個通用的程序代碼來做一些我希望做的修改,比如黑客行為:

其中有一些NFS伺服器設置、運動檢測設置等等。正如我們在嵌入式設備Web界面中經常看到的,所有設置請求都由.cgi文件處理。很多要更改設置的請求將發送到/set_params.cgi,而它所做的只是返回表示成功或失敗的JSON數據,如果我發送GET請求,sibling 文件 /get_params.cgi會在響應中發回許多配置數據,其中就包括「skype_pwd」,「smtp_pwd」,「ddns_pwd」等參數。因此,我可以假設Siime Eye有發送電子郵件、更改DNS設置、甚至添加Skype帳戶的功能。

一個.cgi文件的典型響應如下所示:

它似乎有著跨域資源共享(CORS)策略,因為我們可以看到,它返回了帶Access-Control-Allow-Origin信息的header。理論上說,這將讓我或任何可以訪問此Web應用程序的瀏覽器讀取伺服器上的任何響應的內容,不過瀏覽器通常會限制從另一個網站讀取響應的設備,並且是「同源策略」(SOP)的組成部分。這一限制,就意味著惡意網站不能夠隨意讀取我的金融信息,比如銀行餘額。

在理想情況下,SOP也意味著網站無法瀏覽具有我的IP的攝像視頻。但是如果伺服器指定了具有通配符值的「Access-Control-Allow-Origin」標頭,那任何網站的任何人都可以讀取視頻響應,從而使使SOP失效。

所以,我用XMLHttpRequest調用了一段JavaScript,試圖將數據從設備中抽出。然而奇怪的是,瀏覽器不斷提示我違反了SOP。

經過一番調查,我發現了這個問題所在。事實證明,使用XHR的CORS的特性之一是首先發送帶有OPTIONS頭部的飛行前請求,直到Access-Control-Allow-Origin頭返回。但是,Siime Eye可以將OPTIONS解釋為RTSP請求,並獲得標準的RTSP響應:

我不能像上圖那樣對數據進行掃描,因為這樣,瀏覽器會認為我打破了SOP而得不到預期的響應, RTSP協議也似乎在80埠上運行。

然而,所有.cgi文件都允許我在每個請求中指定JSONP回調,這意味著SOP仍然無用。 JSONP可以指定變數名稱,將生成的JSON數據導入腳本,並像其他任何JSON數據一樣使用。

我寫了一小段PoC來從設備中使用JSONP轉儲一些信息,包括可以看到的本地Wi-Fi網路列表和視頻。由於視頻流是受保護的,我必須先得到一個登錄憑證,然後才能查看視頻。但是使用JSONP仍然意味著我可以將它們複製出來,大家可以在Github上看到編寫的代碼。

我從網上搜索到一些.cgi文件名後,發現了Reecam開發者文檔。

我在Siime Eye遇到的每個.cgi文件似乎都記錄在了Reecam網站上,硬體MAC地址指向的是深圳Reecam科技有限公司。據調查,Siime Eye上運行的軟體是由他們開發的。

如果我能找到固件,就可以了解在後台實際發生了什麼。此時,我只有80埠及一個網頁界面。儘管在SVAKOM 的網站上貼了很多開發者信息,但是我還是無法在任何地方找到固件。

然而,通過在網站上記錄的一個參數「telnetd」(我最初測試Web界面時並沒有遇到),我瀏覽了以下鏈接並重新啟動了Siime Eye:

http://192.168.40.17/set_params.cgi?telnetd=1&save=1&reboot=1

當它返回時,telnet可用,這似乎也太容易得到默認憑證了,不過事實證明,不是那麼簡單。

所以,我現在還沒有固件,沒有shell,只有一個Web界面問題,下一步我必須解決它。

硬體

Siime運行了一個Ralink RT5350F WiSoC,裡邊有一顆MIPS處理器。它通常用於諸如Wi-Fi擴展器之類的東西,功能相對強大,還有Winbond W9825G6JH-6 SDRAM和一個Winbond 25Q64FVSIG快閃記憶體晶元,用來保存文件系統。

MIPS處理器有一些方便操作的外露UART介面,我把它與BusPirate連接,嘗試將錯誤波特率設置為57600,並獲得了一個無用的調試信息,不過同時我也碰到了禁止訪問的telnet登錄提示和一個限制超多的uBoot shell。

現在,我決定嘗試轉儲固件,我設法讀取了Winbond 25Q64FVSIG晶元。

大約讀取了30分鐘,我得到了一份固件,然後我binwalk到一個正確的文件系統。

這是一個Linux文件系統,但是既沒有/etc/passwd,也沒有/etc/shadow,只有些許嘗試在NVRAM載入參數的引導腳本的蹤跡。

我將筆記本電腦接在UART上,並再次開始檢查網頁界面。這一次,我注意到來自Web應用程序的小型調試消息被引導到UART硬體流控制。它看起來很像stderr,stdout可能只是被調出來進行調試。

現在我返回到NFS設置頁面,除了將unanitised參數直接發送到UNIX的「mount」 命令之外,還可以怎樣設置網路文件共享?

幾分鐘後,我發現了一個命令注入點,所有stdout和stderr輸出都被發送到我的另一台筆記本電腦上的UART流。

發送「192.168.1.1; ls -al; echo」和「192.168.1.1; cat /etc/passwd; echo」作為NFS設置中的「HOST / IP「參數將會導致安裝錯誤,根文件系統的列表和/etc/passwd的內容。

破解hash加密不需要使用密碼暴力破解,由於Web應用程序以root身份運行,我將自己寫入/etc/passwd作為另一個root用戶,並通過telnet登錄。

甚至不需要破解哈希,我檢查了運行的進程,並在一些自定義系統二進位文件中進行了替換:/bin/reecam和/bin/camera。從前面轉儲的固件中運行/bin/camera上的字元串,使用root許可權即可列印出硬編碼的telnet密碼。

至此,經過以上嘗試過程,我已經完全控制Siime Eye的每個內置功能,輕鬆訪問內置攝像機的視頻。

具體分析過程我還錄製了視頻,感興趣可以點擊這裡查看(YouTube)。

最後

如果用戶不會使用某個功能,那麼請不要暴露出來,因為利用官方這些內置功能進行攻擊真是太簡單了。

在SVAKOM Siime Eye的案例中,我可以編寫針對性的攻擊程序,連上設備並執行未授權操作,比如讓設備連上WiFi作為視頻流直播。只需要在設備附近,極大可能(用戶未修改設備WiFi信息)我可以立馬獲取root許可權和視頻流。

如果各位曾經購買過SVAKOM Siime Eye或者類似產品,請務必修改設備WiFi名和密碼,密碼需要設置得複雜些。

由於運氣不太好,我多次嘗試聯繫SVAKOM均未得到回應,最終決定公開漏洞。

本文參考來自pentestpartners,如若轉載,請註明原文地址: 從上手到「直播」,一次智能震動棒Hacking之旅 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

AirHopper:使用無線電突破獨立網路和手機物理隔離(上)
為保安卓市場「清潔」,谷歌真是操碎了心!
蘋果升級日!iOS、macOS雙雙發布更新,修復了數十個漏洞
SecWiki周刊(第142期)
黑客辭典:什麼是「網路殺傷鏈」?為什麼並非適用於所有的網路攻擊?

TAG:信息安全 |