2016 左右,曾經有個叫做 Mirai 的殭屍網路。這個殭屍網路,在尖峰時,曾經有超過六十萬個裝置在這個網路上。
這個網路主要是由 IoT 裝置組成的。 蠻多裝置都是在不自覺的狀況下被感染,然後就被加入這個網路。這個網路因為實在太龐大了,所以曾經在 某次 DDoS 攻擊時,創下 600 Gbps 的流量紀錄。舉例來說,大概就是:每一秒有三張藍光碟(25 Gib)的資料,塞到某個衰鬼的主機上。 當時很多人都受害,例如 OVH(一間主機商),Dyn(一間 DDNS 商)、Krebs On Security(某個寫安全議題老兄的部落格)都被打了,打到起不來。
Understanding the Mirai Botnet
以上 Paper 是 19 人組成的一群勇者,一起對 Mirai 網路進行研究的結果。
Mirai 一開始只有大約六萬台裝置,但是在一天後,瞬間變成二十到三十萬臺裝置了。Mirai 主要是打 IoT 與各種嵌入式裝置。這些裝置不應該這麼脆弱,但這主要是因為市場上大家都趕時間、要 cost down,省了驗證和安全測試的步驟,所以大家的安全性才變得非常糟糕,正好幫 Mirai 大忙。
Mirai 不只會打有名的目標,還會打 CDN、遊戲伺服器、電信公司等等。Mirai 這類型的殭屍網路,在未來,搞不好還可以拿來挖礦(若機子夠力的話?),賺點小錢。
前面提到,Mirai 大概是在 2016 左右年中開始出現的。差不多在九月左右,作者把原始碼給公開了,也有人拿這份原始碼去做修改、做出別的殭屍網路。
作者群發現,Mirai 一開始是先瘋狂的窮舉網路上的 IPv4 設備,然後敲看看他們的 SSH 或 Telnet 阜口有沒有開。如果有開,就暴力解,解到成功為止。姐成功之後,就把帳密和 IP 位置回報給控制伺服器。
另外,Mirai 還有一支程式,專門負責登進去這些被回報的設備,然後回報他們的環境參數。最後,依據前面的資訊,上傳專門為那個環境所打造的程式,來攻佔那台機器。成功之後,先把自己的安裝擋案砍掉(才不會被發現),然後在幫自己更名。不過,因為把自己的安裝檔砍了,也沒有做 persistance 的動作,所以重開機就沒了。
感染成功之後,會強行佔用 TCP/22 和 TCP/23 阜口(把使用這兩個阜的程序先砍了),然後一邊用它們來收控制伺服器的指令,一邊尋找新的受害者。
Mirai 其實證明了:就算是很糞的攻擊方式,還是可以造成有效的攻擊。Mirai 其實只是用了一部很小的字典來做暴力猜密碼,而且這字典的大小還很小(大概六十幾筆)。
這篇特別講 IoT 設備,是因為,在一般桌面或是手機上的狀況,作業系統等等都是由特定少數公司把持。但是,在 IoT 設備的狀況下,很多廠商都可以推出自己的系統,然後因為會被以類似嵌入式系統的方式來看待,所以就不一定那麼著重安全性的問題。
Mirai 雖然使用一本很糞的字典來做攻擊,不過實際上也破了不少設備。比較直接的防禦方式,就是先把各設備預設的帳密都改掉,不然就是出廠時把這些帳密都給隨機化(例如 Netgear 就是這樣做)。不過,這樣還代表著,服務層的漏洞還是存在,例如之前提到的 Struts2,如果嵌入式設備使用 Struts2 來當 HTTP 伺服器,然後又不更新,就會跟 Equifax 一樣 GG 啦。
從比較底層的軟體方便來看,如果各家都把 ASLR、權限檢查等功能實作起來,比較深入的攻擊也會變得更難。如果能實作「安全的自動更新」,即是有做公鑰驗證等等的更新模式,也會使修補變得更加安全。
若各家廠商願意對裝置做長期支持(類似 Ubuntu 的 LTS)模式,為裝置提供數年以上的安全性修補,這樣也會有助於減少 IoT 裝置帶來的風險。