利用虛假瀏覽器更新來入侵MikroTik路由器的活動分析
MikroTik是拉脫維亞一家從事路由器和無線ISP系統開發的企業,在過去幾個月中處理了許多影響其產品作業系統的漏洞。2018年4月,研究人員發現RouterOS的一個關鍵漏洞,然後攻擊就開始了,而新發現的 ofollow,noindex">CVE-2018-14847 漏洞利用使這種情況變得更加嚴重。
另一個問題是雖然廠商提供了安全補丁,但仍有大量的MikroTik路由器沒有進行安全更新,易受到自動化攻擊的威脅。網路犯罪分子正利用POC程式碼來入侵成千上萬的裝置。去年研究人員發現最大的惡意Coinhive活動就是通過被入侵的MikroTik裝置實現的。
在最新的攻擊活動中,攻擊者利用虛假的瀏覽器更新頁面來入侵路由器。當執行惡意更新時,研究人員會解包程式碼到計算機中,計算機可以掃描網路中其他有漏洞的路由器並嘗試利用。
惡意瀏覽器更新
安全研究人員 @VriesHd 首先發現一個嘗試用社會工程技術來入侵有漏洞的路由器的活動。執行受影響的MikroTik路由器的網路提供商會將關於瀏覽器的老版本更新重定向給終端使用者。
根據Censys的資料,一共有11000個被入侵的MikroTik裝置提供該虛假下載頁面:
該瀏覽器根系是從一個FTP伺服器下載的,如下圖所示:
有趣的是IP地址是一個免費、開放的web程式碼列表中。攻擊者常用代理來繞過特定國家的限制,或作為嚴重隱藏原始IP地址的方式:
Payload分析
行為分析
Payload會偽裝成一個名為upd_browser的安裝器。
Line"/>
當應用時,會有一個錯誤彈窗:
但如果抓取網路流量,可以看出有很多不同的IP地址嘗試連線8291埠(8291是通過winbox應用管理MicroTik路由器的預設埠):
Unpack
釋放的payload是一個比較大的可執行檔案(7.25MB)。該小節的header和視覺化如下:
通過檢視section名,可以看出其打包了一個簡單的packer:UPX。重複部分說明提取出的內容太多了。在進行下一步檢查後,研究人員發現其將一個python DLL和其他相關檔案解包到%TEMP%資料夾,然後載入這些檔案。很容易猜測出exe檔案其實是一個python指令碼。
指令碼中的entry point名為upd_browser。反編譯指令碼發現惡意軟體的核心是兩個python指令碼: upd_browser.py 和 ups.py 。
指令碼
模組的主函式非常簡單,如下圖所示:
從中可以看出,錯誤彈窗是硬編碼的。並不是真實的錯誤程式碼,而是作為誘餌。
之後,惡意軟體會用合法服務IP Logger來查詢追蹤器的硬編碼地址來記錄受害者的IP地址。追蹤器的1×1畫素的圖片:
之後,該地址會在定義的時間間隔內定時查詢。
函式中最重要的功能名為 scan ,許多的並行執行緒都應用了該功能。函式 scan 會生成偽隨機的IP地址並嘗試通過8291埠連線。如果連線成功,會嘗試通過56778到56887之間的一個隨機埠連線。如果失敗,就繼續漏洞利用:
函式 poc 是指通過已知的漏洞來感染路由器。開始時嘗試利用路徑遍歷漏洞CVE-2018-14847來獲取憑證:
user.dat檔案的格式為M2,所以指令碼是與內建的語義分析器一起的:
如果成功從user.dat檔案中提取出密碼,就解碼憑證並用來建立後門:一個隨機生成密碼的賬戶。還會為路由器設定一個定時任務。
設定定時任務的指令碼是用硬編碼的模板生成的。其角色是操作路由器的設定,並設定一個載入CoinHive挖礦機的錯誤頁面。錯誤頁面會釋放在 webproxy/error.html 和 flash/webproxy/error.html 。
當用戶嘗試檢視被拒絕訪問的URL時間,該頁面會展示給使用者。但路由器中配置的惡意指令碼是基於HTTP請求錯誤。偽造的錯誤頁面是wile欺騙原始流量,以iframe方式展示請求的頁面。所以當用戶瀏覽大多數web時並不會注意到這一變化。比如:
從中可以看到嵌入的CoinHive挖礦機,使用者機器會被用於惡意挖礦。
緩解措施
MikroTik使用者應及時對路由器打補丁升級。MikroTik 下載頁面 中解釋瞭如何對RouterOS進行升級。很多使用者沒並沒有意識到漏洞的存在以及漏洞非常容易利用。在最新的社會工程方案中,研究人員發現犯罪分子嘗試感染普通使用者,並通過受害者的使用者來掃描網路中有漏洞的路由器。這些技術手段非常高明,因為這種方式需要的時間和資源都很少,而攻擊效率非常高。