上個月末,我們的實驗室迎來了一個非常重要的“人”:Robi機(jī)器人(他有一個攝像頭和一個揚聲器?。?。我們有幸組裝了它,然后讓它跳起了舞。與此同時,我們對未知領(lǐng)域的探索也開始了,在通過軟件發(fā)送命令控制機(jī)器人時,我不禁想知道它到底有多安全。
一開始我預(yù)測是某種藍(lán)牙的連接,但后來發(fā)現(xiàn)機(jī)器人有自己的Wifi網(wǎng)絡(luò)板,所以擁有加入現(xiàn)有網(wǎng)絡(luò)的能力,默認(rèn)情況下還自帶一個有暗示性SSID的開放式接入點。開始時我也遇到了一個防御機(jī)制,具體被定義為僅允許與另一臺機(jī)器建立單獨的C&C連接。
經(jīng)過進(jìn)一步檢查C&C移動軟件,我看到了確認(rèn)為網(wǎng)關(guān)/WiFi管理界面的IP地址,在快速掃描之后,確定開放的端口如下:
23:用于即將到來的C&C通信。
24:用于攝像頭實時視頻流。
80:用于web管理界面。
8080:用于CLI(命令行界面)。
所以,主要的范圍就是訪問底層結(jié)構(gòu)(或OS級別)以查看其內(nèi)部核心。幸運的是,我還沒有完成這個目標(biāo):)
接入點分析
我首先分析了嵌入在機(jī)器人主板中的Wifi接入點。它配有一個開放的網(wǎng)絡(luò),默認(rèn)情況下不受WPA/WPA2 PSK的保護(hù)。同時,在連接到Web管理界面即80端口時沒有認(rèn)證機(jī)制的防護(hù)。
這些特點極大地改善了用戶體驗,但同時減少了對機(jī)器人的防護(hù)。在更深層次的檢查中,我發(fā)現(xiàn)它沒有關(guān)于Web管理界面認(rèn)證機(jī)制的任何可配置的設(shè)置。
研究過程中已經(jīng)確認(rèn)的漏洞列表:
1.Web管理界面的XSS持久性漏洞
2.無需身份驗證訪問CLI(或通過控制臺移動機(jī)器人)
3.功能性邏輯繞過
4.反射型XSS(在IE兼容模式下有用)
5.開放重定向
6.用于Dos情況的跨站請求偽造
Web界面中的發(fā)現(xiàn)
我繼續(xù)對這網(wǎng)絡(luò)應(yīng)用深入分析,然后遇到的第一個參數(shù)就是System name。正如所料,這個名字完全可以個性化,那么為什么不從XSS載荷開始做點事呢?
事實上,System name的值似乎沒有被過濾,它被進(jìn)一步存儲在瀏覽器中。在我看來,這個特殊漏洞會威脅到用戶/所有者的安全,因為它給予了攻擊者機(jī)會來掛載釣魚網(wǎng)絡(luò),以實施釣魚攻擊。
此外,只有通過訪問網(wǎng)頁,受害者才能部分/完全意識到攻擊,因為SSID也是有漏洞的,但是這里需要了解一下:不同于System name,注入的有效載荷也會出現(xiàn)在掃描中的接入點列表中,這會觸發(fā)警報。
使用Web界面,我也注意到參數(shù)變量“反射”在網(wǎng)頁中,但是運氣不好,因為Content-Type返回text/plain。但是,它確實意味著其對IE用戶的兼容模式有一定威脅。
在某些時候,網(wǎng)頁通過名為01的GET參數(shù)的值將用戶重定向到一個網(wǎng)站的頁面。我們可以濫用此參數(shù)并將用戶重定向到任意選擇的地址。所以這可以用于將目標(biāo)重定向到釣魚網(wǎng)站。
與CLI(命令行界面)進(jìn)行交互
機(jī)器人的一個非常有趣的端口就是8080,當(dāng)連接時,就會顯示一個非常棒的命令行界面,其具有很長的功能列表。不過也有不好的地方,其中之一就是服務(wù)不提供任何形式的認(rèn)證/授權(quán)。在這些功能中,我們可以注意memshow,memdump,memset和flash memory map這樣的行為(這對于嘗試訪問OS層非常有用,但是我們還在繼續(xù)研究,也請多多關(guān)注)。
定義為servo(伺服)的功能允許我們以給定的速度移動72個伺服電機(jī)中的一個,這個操作實際上繞過了整個系統(tǒng)的功能邏輯。這是為什么呢?因為用戶需要在下載桌面/擴(kuò)展移動應(yīng)用程序之前創(chuàng)建帳戶并登錄才能與機(jī)器人交互。
另外,為了使用servo(伺服)命令,必須給出2個輸入?yún)?shù)。第一個是伺服電機(jī)端口。組裝機(jī)器人并連接轉(zhuǎn)子時,主母板上顯示3個總線電路,每個總線電路包含不同數(shù)量的端口。這些端口被命名為Dxy,其中第一個數(shù)是從0到23的數(shù)字。另一個是任意選擇的轉(zhuǎn)子的旋轉(zhuǎn)功率或旋轉(zhuǎn)角度。
訪問攝像頭
在與機(jī)器人電機(jī)成功互動之后,我把注意力轉(zhuǎn)移到放置在機(jī)器人頭上的嵌入式攝像頭。我沒能成功嘗試并解釋來自端口24的流式輸入,不過還好看到了開發(fā)人員提供的SDK,因為SDK中包含了解釋視頻流的示例?,F(xiàn)在想象一個可能發(fā)生的攻擊情景:未經(jīng)授權(quán)的攻擊者能夠捕獲攝像頭流媒體,并通過公共SDK,CLI或自行開發(fā)的程序成功地利用機(jī)器人。
在我看來,有幾個攻擊向量可以讓攻擊者與機(jī)器人進(jìn)行交互:
機(jī)器人正在運行,默認(rèn)情況下實現(xiàn)嵌入式開放式WiFi
機(jī)器人連接到攻擊者可以訪問的公共網(wǎng)絡(luò)
假設(shè)WiFi設(shè)有密碼,攻擊者就要設(shè)法破解機(jī)器人的嵌入式WiFi密碼。
所以,如果有人(比如隔壁老王)有一個容易出現(xiàn)上述攻擊的機(jī)器人,就可能會導(dǎo)致不必要的隱私泄露。我們都可以想象到這會出什么問題。
拒絕“機(jī)器人”攻擊
現(xiàn)在回到分析系統(tǒng)的Web部分,我想更多地了解機(jī)器人網(wǎng)絡(luò)功能的信息。顯然,從桌面的和移動的界面,用戶都可以掃描接入點,并與機(jī)器人接入同一網(wǎng)絡(luò)中(用戶可以選擇接入機(jī)器人的接入點,也可以將機(jī)器人接入現(xiàn)有網(wǎng)絡(luò))。
當(dāng)用戶錯誤地設(shè)置登錄配置時,問題就出現(xiàn)了。所以從Web管理應(yīng)用中,如果用戶輸入了一個不合適的SSID或密碼,機(jī)器人就會登陸失敗,然后發(fā)出錯誤提示。現(xiàn)在問題是用戶不能連回機(jī)器人來修正錯誤,因為:
用戶連接到機(jī)器人開放的WiFi,所以他可以訪問機(jī)器人的Web應(yīng)用來設(shè)置網(wǎng)絡(luò)登錄信息。
如果配置了網(wǎng)絡(luò)登錄,機(jī)器人將取消使用開放的WiFi,并嘗試使用另一個指定的網(wǎng)絡(luò)。
之后在每次啟動時,他都會嘗試加入網(wǎng)絡(luò),如果加入失敗就會進(jìn)入待機(jī)模式。
因此,如果用戶現(xiàn)在卡在機(jī)器人無法加入網(wǎng)絡(luò)的情況,那么只能硬重置了。這個缺陷也可以被具有網(wǎng)絡(luò)訪問機(jī)器人的攻擊者所濫用,他可以利用跨站請求偽造攻擊,以破壞機(jī)器人的可用性,導(dǎo)致拒絕服務(wù)狀況。
總結(jié)
鑒于機(jī)器人通信在WiFi上進(jìn)行,合理的攻擊情況如下所示:
從WiFi中取消身份驗證客戶端以中斷C&C連接
如果機(jī)器人使用開放網(wǎng)絡(luò),那么可以訪問Web應(yīng)用程序并利用存儲的XSS;
使用CLI控制機(jī)器人
使用攝像頭監(jiān)視機(jī)器人周圍環(huán)境
發(fā)起拒絕服務(wù)攻擊(強(qiáng)制擁有者重置機(jī)器人)
所有這些真的是一個有趣的經(jīng)歷,與機(jī)器人的整個互動很棒。在首次使用時,需要進(jìn)行一些重新校準(zhǔn),但機(jī)器人和軟件可以根據(jù)需要進(jìn)行自定義。
就像其他新技術(shù)領(lǐng)域一樣,它需要改進(jìn),特別是在像Robotics這樣一個比較新的領(lǐng)域,并且在開發(fā)的早期階段。我很高興能夠參與這個過程并提供幫助。我聯(lián)系了提供商,他們同意就此發(fā)表研究博客。