Mr.Coffee智能咖啡機漏洞分析
眾所周知,IOT設備的安全性並不高。隨著越來越多的設備聯網,WiFi網路被黑、被劫持的可能性不斷增加。本文介紹研究人員對Wemo品牌的Mr. Coffee智能咖啡機的安全分析的結果。
所有的Wemo設備都有兩種方式與Wemo App進行通信,通過Internet遠程連接和本地直接連接。只有當遠程訪問設置啟用後,遠程連接才可以進行。為了能夠遠程地控制Wemo設備,Wemo會周期性地檢查Belkin伺服器進行查詢是否有更新。這種方式下,Wemo並不會打開網路上的任何埠。但如果用戶需要本地控制Wemo設備或遠程訪問設備被禁用後,Wemo app就可以直接連接到Wemo。本文的研究是基於本地設備通信的,假設遠程訪問設置被禁用。
為了弄清楚咖啡機如何與手機應用進行通信,研究人員首先使用SSL Capture APP來獲取本地網路數據。SSL Capture允許用戶獲取手機應用上的流量。因此,研究人員選擇了Wemo APP。抓包進行後,研究人員分析了Wemo app並初始化了許多標準命令來生成網路流量。這樣,研究人員就可以查看咖啡機和Wemo應用之間的通信了。該app的一個特徵是用戶可以設置讓咖啡機定時煮咖啡。研究人員進行了一些定時設備並保存了。
然後,研究人員開始分析手機應用和咖啡機之間的網路流量。研究人員發現手機APP和咖啡機之間的傳輸都是明文進行的,也就是說沒有使用加密。而且咖啡機和APP是通過UPNP(Universal Plug and Play)協議進行通信的,並預設了SOAP ACTIONS的動作。深入分析網路流量,研究人員發現了SOAP的action 「SetRules」。其中包括研究人員在手機APP上進行定時煮沸(brew schedule)的XML內容。
Mr. Coffee定時煮咖啡
下面介紹Wemo手機APP如何處理定時煮任務。研究人員想確認咖啡機對這些定時任務做不做驗證,因此研究人員進行手機APP關閉了這些定時任務。然後將抓包獲得的數據和header用Linux Curl命令發回給咖啡機。然後研究人員得到return header 200,這在HTTP中表示OK。這表明咖啡機並不對定時任務的來源做任何驗證,然後研究人員在app上進行了確認,就出現了新創建的定時煮任務。
發送定時煮任務到Wemo咖啡機的 Curl命令
Wemo app中出現新建的定時煮任務
這樣,研究人員不用Wemo app也可以修改咖啡機的定時煮任務了。為了理解定時任務是如何保存在Wemo咖啡機中的,研究人員決定進行暴力拆解,查看裡面的電路。拆解後,研究人員看到一個連接到PCB的Wemo模塊,負責控制咖啡機的基本功能。然後研究人員從咖啡機中提取出了位於Wemo Insight設備中的Wemo模塊。研究人員在網上找到了如何利用Wemo Insight漏洞的文章,根據文章的說明進行了序號識別、固件提取、root密碼修改等。然後獲取了Wemo設備的串口的root訪問許可權,然後分析Wemo app如何從底層Linux操作系統進行初始化。研究人員發現了一些常見的Linux文件和目錄,其中就有crontab文件。該文件在Linux系統中是用來執行定時任務的。
開發人員應該是選擇了最簡單和直接的方式,即使用Linux crontab文件來設置定時任務而不是自己開發功能函數。Crontab的記錄與研究人員通過Wemo app發送的一模一樣。有趣的是研究人員在重放的UPNP包中增加了一些命令,發現可以在網路上以root許可權來執行命令。
複製出來固件後,下一步研究人員分析了crontab中調用的rtng_run_rule可執行文件。rtng_run_rule是一個Lua腳本,因為Lua是腳本語言,因此是用明文寫的,而且沒有編譯。研究人員根據執行流分析發現了傳遞參數給要執行的模板的規則。研究人員意識到將命令直接注入規則不行,只有修改執行的模板才可以。
有正確傳遞Wemo確認的語法的模板
然後研究人員繼續分析Wemo app抓包的流量。分析發現該應用也會發送模板給Wemo咖啡機。也就是說如果研究人員可以修改模板,而且使Wemo認為該模板是有效的,就可以執行任意代碼了。
一共發送了3個模板,分別是do、do_if、do_unless。每個模板都是Lua腳本,而且是base64編碼的。模板頂部剩餘的部分就是MD5哈希值。
研究人員創建了一個base-64解碼的lua腳本的MD5哈希和base 64編碼的腳本的MD5哈希值,來查看發送的md5值是否匹配,但是沒有與模板中發送的md5值匹配的。研究人員猜測開發者使用了HMAC或其他聰明的方式來計算模板的哈希值,這樣就很難上傳惡意模板。最終研究人員發現開發者知識在base64代碼前面加入了字元串begin-base64 644 ,後面加入了====。
這樣研究人員就有了上傳任意模板的能力,並可以繞過定時規則的所有Wemo確認步驟。
在shell命令中,研究人員讓Mr. Coffee咖啡機下載一個Netcat的交叉編譯版本,這樣就可以獲得一個逆向shell,並在rc.loacl中加一條記錄。通過Netcat逆向shell,研究人員在咖啡機重啟後同樣獲得設備的訪問許可權。
漏洞利用的最後一步是用執行惡意shell腳本的hack模板來創建一個定時煮咖啡的任務。研究人員將時間設定為發送後5分鐘,但是要將時間值轉換為Unix時間戳epoch時間格式。
時間格式轉換
然後等待連接到電腦的咖啡機下載shell腳本並運行。
該漏洞並不需要咖啡機所在的網路訪問許可權。基於用戶密碼的複雜度,WiFi破解也是很容易的。該漏洞表明並不是所有的漏洞利用都很複雜或需要花費很長時間去尋找漏洞。該漏洞存在的原因只是缺乏輸入處理和驗證,以及編碼決策存在問題。雖然目標中不含隱私信息,而且攻擊僅限於本地網路,但這並不意味著黑客不會攻擊類似的IOT設備,畢竟這種IOT設備的安全防護級別比較低。這種IOT設備也可能會被當做攻擊其他高價值目標的跳板,因此,在購買此類IOT設備時,請三思。本文講的咖啡機就是個例子。


※Cve-2019-6340 Drupal遠程代碼執行漏洞
※關於利用Exchange攻擊域管理員許可權的一些建議
TAG:嘶吼RoarTalk |