此文為翻譯文章
原文鏈接:
原文作者:
Harsh Jaiswal??@rootxharsh(Twitter)
恭喜翻譯作者s小胖不吃飯@先知社區
價值100元的天貓超市享淘卡一張
歡迎更多優質原創、翻譯作者加入
歡迎多多投稿到先知社區
每天一篇優質技術好文
點滴積累促成質的飛躍
今天也要進步一點點呀
眾所周知,物聯網設備是不安全的。我們可以通過一些例子來對此進行解釋。 隨著越來越多的設備需要連接到互聯網,黑客完全有可能通過WiFi入侵烤面包機進而攻擊你的信用卡。
基于此,我開始用
Wemo(WeMo_WW_2.00.11058.PVT-OWRT-Smart)
來對Mr. Coffee Coffee Maker
進行研究分析,因為我們之前為我們的研究實驗室夠買了一個咖啡機并且沒有很多人使用它。 本文是建立在我的同事Douglas McKee(@fulmetalpackets)
和他的Wemo Insight
智能插件漏洞利用的工作的基礎上。 然而在這個產品中我找不到類似的攻擊切入點,所以我探索了一個獨特的途徑,并且找到另一個漏洞進行。 在這篇文章中,我將詳細探討我攻擊的方法和過程。所有
Wemo
設備都有兩種與Wemo App
通信的方式,并通過互聯網遠程或本地直接與Wemo App
進行通信。默認情況下,遠程連接僅在啟用遠程訪問設置時出現。為了允許遠程控制Wemo
設備,Wemo
會定期檢查Belkin
的服務器并及時進行更新。這樣以來,Wemo
就不需要打開網絡上的任何端口。但是,如果我們嘗試在本地控制Wemo
設備,或者禁用遠程訪問設置,Wemo
應用程序將直接連接到Wemo
。本文的研究都是基于關閉遠程訪問設置并進行本地設備通信。為了深入了解咖啡機如何與其移動應用程序通信,我首先使用名為“
SSL Capture
”的應用程序并在我的手機上設置本地網絡捕獲.SSL Capture
允許用戶捕獲來自移動應用程序的流量。在這種情況下,我選擇使用Wemo
應用程序。隨著對流量包的截獲,我瀏覽了Wemo
應用程序并啟動了幾個標準命令來生成網絡流量。我能夠查看咖啡機和Wemo
應用程序之間的通信信息。該應用程序具有其獨特的特征,即用戶能夠設定咖啡機在指定時間進行工作。我制定了幾個時間表并保存了它們。我開始分析手機應用程序和
Mr. Coffee
機器之間的網絡流量。 兩個設備之間的所有傳輸都以明文形式進行,這意味著過程中不使用加密。 我還注意到,咖啡機和移動應用程序通過名為UPNP
的協議進行通信,該協議具有稱為“SOAP ACTION
S”的預設操作。從設備深入挖掘網絡捕獲,我看到了SOAP操作 “SetRules?!边@也是移動應用程序設置的“brew計劃”相關的XML內容。此時,我能夠看到
Wemo
移動應用程序的功能程序代碼。 接下來,我想看看咖啡機是否對這些時間表進行了相關驗證,因此我回到了移動應用程序并將它們全部禁用。 然后,我從網絡捕獲中復制了數據和標題,并使用Linux Curl
命令將數據包發送回咖啡機。 我得到了返回標題狀態“200”(HTTP中的“OK”)。 這表明釀造時間并沒有被驗證。我進一步驗證了移動應用程序并制定了新的工作計劃。此時我可以在不使用
Wemo
移動應用程序的情況下更改咖啡機的工作時間表。為了理解如何將時間表存儲在Wemo咖啡機上,我決定將其拆解并查看內部的電子設備。拆開后我看到有一個Wemo
模塊連接到了一個更大的PCB,并負責控制咖啡機的功能。然后我從咖啡機中提取了Wemo模塊。這看起來與Wemo Insight
設備中的Wemo模塊幾乎完全相同。我根據Doug
的博客開發了Wemo Insight
,以進行序列識別、固件提取和root密碼更改操作。在通過Wemo設備上的串行端口獲得root
訪問權限之后,我開始研究底層Linux操作系統并啟動Wemo應用程序的方式。在查看了常見的Linux文件和目錄時,我注意到“crontab”文件中有一些不常見的東西(在Linux中用于執行和調度命令)。開發人員采用了簡單的路線并使用
Linux crontab
文件來安排任務,而不是編寫自己的brew調度功能。 crontab條目與我通過Wemo
應用程序(coffee-3)發送的工作計劃相同,并以root身份執行。如果我在重放的UPN
P數據包中添加某種命令來執行此操作,我可能會通過網絡以root身份執行我的命令。在轉儲固件后,我決定查看在
crontab
中調用的“rtng_run_rule
”可執行文件。rtng_run_rule
是一個Lua
腳本。由于Lua
是一種腳本語言并使用純文本編寫的,而不是像其他Wemo
可執行文件一樣編譯。我遵循執行流程,直到我發現了應用規則并將參數傳遞給模板以。之后,我發現將命令進行直接注入是沒有用的,而應該考慮修改執行執行的模板。我回到
Wemo
移動應用程序的網絡捕獲并開始再次挖掘相關信息。我發現該應用程序還將模板發送給Wemo
咖啡機。如果我能弄清楚如何修改模板并且能對Wemo進行欺騙,那么我可以進行任意代碼的執行。發送了3個模板,
“do”、“do_if”和“do_unless”
。每個模板都是Lua腳本并用base64編碼?;诖?,我知道注入自己的代碼是無用的。唯一剩下的挑戰就是如何處理包含在模板頂部的MD5哈希。事實證明,這不是一個障礙。我分別創建了
base-64
解碼的Lua
腳本和base64
編碼腳本的MD5
哈希,并查看匹配正在發送的哈希。然而,兩者都不匹配模板中發送的MD5。我開始認為開發人員使用某種HMAC或巧妙的方式來散列模板,這會使上傳惡意模板變得更加困難。然而,我驚訝地發現它只是字符串“begin-base64 644
”前面的base64代碼,并附加了字符串“====
”。最后,我有能力上傳我的任何模板,并讓它繞過了預定規則所需的所有Wemo驗證步驟。
我添加了一個名為“hack”的新模板,并在模板中添加了一個代碼塊來下載和執行shell腳本。
在shell命令中,我指示
Mr. Coffee Coffee Maker
和Wemo
下載一個編譯過的Netcat版本文件,這樣我就可以得到一個反向shell,并且還添加了一個“rc.local”
的條目。這樣做是為了讓咖啡機重新啟動,重啟后我會通過Netcat反向shell持久訪問設備。這個漏洞利用程序的最后一個功能是使用我之前學到的知識來使用我的新“hack”模板執行我的shell腳本來安排工作計劃。 我采用了我之前的時間表并對其進行了修改,使得“hack”代碼在發送后5分鐘內執行。
現在,我坐下來等待咖啡機(在我指定的時間延遲)連接到我的電腦,下載我的shell腳本并運行它。我確認我進行一個反向shell操作,并且完全符合預期。
此漏洞需要網絡訪問咖啡機所在的同一網絡。根據用戶密碼的復雜程度,使用當今的計算能力,WiFi破解可能是一項相對簡單的任務。例如,我們演示了一個快速而又簡單的暴力字典攻擊,以便在
Wemo Insight
智能插件的演示中破解復雜的WPA2
密碼(10個字符的字母數字)。然而,這些使用特殊字符的復雜密碼會成倍增加暴力攻擊的難度。我們于2018年11月16日聯系了Belkin
并向他們披露了這個問題。雖然供應商沒有回復此報告,但我們發現最新的固件更新修補了該問題。盡管沒有溝通的過程,但我們很高興看到我們的研究成果進一步鞏固了家庭自動化設備。此漏洞表明,如果用戶知道要查找的內容,并非所有漏洞都是否復雜或需要花費大量精力才能完成。這個漏洞的存在完全是因為在缺乏輸入和驗證的情況下做出了一些糟糕的編碼決策。即使此目標不包含敏感數據且僅限于本地網絡,但這并不意味著惡意黑客不會針對此類IOT設備進行攻擊。對于任何消費者來說,購買新的物聯網小工具時,要問自己:“這真的需要連接到互聯網嗎?