【資安懶人包】被攻擊還幫駭客買單?防範雲端遭加密貨幣挖礦攻擊

加密貨幣挖礦(也稱為比特幣挖礦)是指用來獲取新的加密貨幣和驗證交易的過程。而加密貨幣挖礦攻擊(以下簡稱挖礦攻擊)會發生在駭客進到企業的環境取得權限後,耗用企業的資源來執行他們的挖礦作業,這所有電費、運算資源等費用由企業買單。

根據 2021 年 11 月 Google Cloud 的 《Threat Horizons報告》指出,挖礦攻擊是攻擊者在入侵企業的 Google Cloud 環境後,最常用來耗用企業運算資源的方式。報告表示,攻擊者通常會在入侵系統後的 22 秒內就將加密貨幣挖礦程式下載到你的環境中,使雲端運算費用快速暴增,產生比你預期要高出許多的帳單,因此業者必須採取具保護、偵測和緩解的措施來保護組織的雲端環境

本文將介紹企業可以採取的防挖礦最佳實務,適合安全架構師和管理者閱讀。可協助保護企業 GCP 資源免受加密貨幣挖礦攻擊,並在攻擊發生時減緩衝擊損害。

找出威脅來源

要確認企業暴露於加密貨幣挖礦攻擊的程度,首先必須找出企業可能面臨的威脅來源媒介。根據上述《Threat Horizons報告》指出,大多數攻擊者最常利用的弱點如下:

  • 使用者帳號密碼強度太弱或者沒有密碼
  • Google Cloud API 的身份驗證機制太弱或沒有身分驗證
  • 第三方軟體中的漏洞
  • 企業 Google Cloud 環境或者在 Google Cloud 上執行的第三方軟體中有組態設定錯誤(Misconfiguration)
  • 憑證外洩,例如將 Service Account 金鑰發布在公開的 GitHub 儲存庫中

此外,建議企業可以訂閱並檢視以下文件,作為威脅來源清單:

在定義好企威脅來源後,您便可以使用本文以下的最佳實務來解決這些問題:

保護帳戶和帳戶憑證

攻擊者可以利用未受保護或管理不善的帳戶來存取你的 Compute Engine 資源。而 Google Cloud 提供不同的選項,讓企業可以配置這些組態來管理及設定帳號群組,如下:

限制對雲端環境的存取

下表說明可用於定義誰能存取企業雲端環境的組織政策(Organizational Policies)

組織政策 說明
網域限制共享 指定 Cloud Identity 或 Google Workspace 的哪些客戶 ID 有效。
在 Cloud IAM 中允許能用工作負載身分辨識聯盟(Workload Identity Federation)配置設定的 AWS 帳戶。 在混合雲或多雲環境中,定義哪些 AWS 帳戶可以使用工作負載身分聯盟。
依據工作負載允許外部身分提供者  在混合雲環境中,定義工作負載可以使用的身分提供者。

設置 MFA 或 2FA

Cloud Identity 能支援各種方法做多重身分認證(MFA),尤其是為特權帳號配置 MFA。更多資訊請參閱「對企業資源實施統一的 MFA」。

為了防止可能導致加密貨幣挖礦攻擊的網絡釣魚攻擊,請使用 Titan 安全金鑰 作爲雙因素身分認證(2FA)。

配置最小權限

最小權限能確保使用者和服務僅具有執行其特定任務所需的存取權限。最小權限能減緩攻擊行動在整個組織中擴散蔓延的能力,因為攻擊者無法輕易提升他們的權限。

企業可使用身分和存取權限管理(IAM)中的精細政策、角色和權限設定等功能來滿足組織管理需求。此外,可使用 role recommender 和 Policy Analyzer 定期分析權限管理設定有無異常。Role recommender 是透過機器學習來分析你的設定,並提供建議以確保角色設置符合最小權限原則,而 Policy Analyzer 可讓你查看哪些帳號有權存取企業的雲端資源。

監控帳戶

如果你的組織是使用群組來指派 IAM 政策,請確實監控群組記錄事件以確保未新增非企業帳戶。此外,應根據 Cloud Identity 或 Google Workspace 網域來限制可以存取企業資源的身分。有關詳細資訊,請參閱按網域限制身分

當員工離開組織或變動角色時,需確保員工離職程序中包含停用帳號和重置權限的流程。有關詳細資訊,請參閱撤銷對 Google Cloud 的存取權限

要稽核使用者和群組情形,請參考Google Workspace的稽核日誌

減少 Compute Engine 和 GKE 資源暴露在網路上

減少在外部網路暴露,表示攻擊者能發現和利用漏洞的機會比較少。以下介紹有助於保護企業 Compute Engine 虛擬機和 Google Kubernetes Engine (GKE) 叢集避免在網際網路暴露的最佳做法。

限制外部流量

  • Google 官方建議不要分配外部 IP 位址給您的虛擬機,可以透過「禁止 VPC 外部 IPv6 使用」的組織政策限制來拒絕分配外部 IP 給所有虛擬機。如要查看哪些虛擬機具有可公開存取的 IP 位址,請參閱 查找 VM 執行個體的 IP 位址。如果您的 IT 架構需要讓虛擬機有外部 IP 位址,請使用「為 VM 執行個體定義許可的外部 IP」組織政策,藉此你便能自行定義允許具外部 IP 的 VM 執行個體名稱清單。 
  • 將 GKE 節點限制為僅使用內部 IP 位址。有關詳細資訊,請參閱創建私有叢集
  • 限制專案中所有資源從網際網路向內流入(入站)的流量和向外流出(出站)的流量。更多資訊請參閱 VPC 防火牆規則階層式防火牆政策
  • 有關限制外部流量的更多資訊,例如配置 Cloud NAT 以允許沒有外部 IP 位址的虛擬機進行向外通訊或使用 proxy load balancer 進行傳入通訊,請參閱此文件

使用服務邊界

使用 VPC Service Controls 為企業 Compute Engine 和 GKE 資源創建服務邊界(Service perimeter)。VPC Service Controls 讓你可以控制從邊界外到你的 Compute Engine 資源的通訊。服務邊界允許邊界內的自由通信、阻擋數據外洩,並阻擋來自邊界外的服務通訊。使用 IP 位址和使用者身分等情境感知存取機制 屬性進一步控制從網際網路對 Google Cloud 服務的存取。

設置零信任安全

使用 BeyondCorp Enterprise 設置零信任安全 。BeyondCorp Enterprise 能提供「威脅和數據保護」以及「存取控制」,如果你的工作負載同時位於本地端和 Google Cloud 中,請設定 Identity-Aware Proxy (IAP)。透過設定 TCP Forwarding ,就能控制誰可以從外部網際網路存取 Google Cloud 資源上的 SSH 和 RDP 等管理服務,且 TCP Forwarding 可防止這些服務公開暴露在網路上。

保護你的 Compute Engine 和 GKE 資源

加密貨幣挖礦需要存取您的 Compute Engine 和 GKE 資源。以下是可以幫助企業保護Compute Engine 和 GKE 資源的最佳做法:

保護你的 VM 映像

透過設定 Shielded VM(受防護的 VM)以強化 VM 映像檔。Shielded VM 主要防止在開機時載入 Kernel 層級的惡意軟體或 Rootkit 等惡意程式,能提供開機安全、監控系統完整性並使用虛擬信任平台模組 (vTPM)

要限制可供部署的映像檔,你可以透過設定 trusted image policies。組織政策「Define trusted image projects」能定義哪些專案可以儲存映像檔和使用 Persistent Disk,確保這些專案項目中只存在受信任和被維護的映像檔。

在 GKE 中,確保你的容器使用 基礎映像檔(Base images),這些映像檔會定期更新安全程式。此外,請考慮使用 distroless 容器映像檔,它只有包含你的應用程式及其運行時所需要的軟體。

保護對 VM 的 SSH 連線

透過設定 OS Login 可管理對 Compute Engine 上虛擬機的 SSH 連線。OS Login 藉由連結管理者的 Linux 用戶帳戶與其 Google 身分來簡化 SSH 連線存取管理。而 OS Login 與 IAM 搭配使用,便可定義管理者擁有的權限。

有關上述詳細資訊,請參閱保護 VM 和容器

限制 Service Account

Service Account 是指工作負載要呼叫 Google API 服務的一種 Google Cloud 帳戶。Google 建議企業在創建資源時,不要讓 Google Cloud 將預設 Service Account 角色分配給資源。有關詳細資訊,請參閱限制 Service Account 的使用

如果你的應用程式在 GCP 之外的環境執行,但仍需要存取 GCP 資源,請不要直接使用 Service Account 金鑰。應導入工作負載身分聯盟來管理外部身分以及相關的權限。若是在 GKE,你可以使用工作負載身分(Workload Identity)。有關詳細資訊,請參閱 Service Account 的替代方案

關於保護 Service Account 的更多最佳實務,請參閱 使用 Service Account 的最佳實踐。 

監控 Service Account 和 Service Account 金鑰的使用情況

設置監控 Service Account,以便能追踪 Service Account 和 Service Account 金鑰在組織中的使用情形。想了解顯著的使用模式,請使用 Service Account insights。例如,你可以使用 Service Account 洞察來追在你項目中權限的使用情況,並找出未使用的 Service Account。要查看你的 Service Account 和金鑰最後一次用於呼叫 Google API 進行身份驗證的時間,請查看 Service Account 和 Service Account 金鑰的最近使用情況

監控及修補 VM/容器

為了發動加密貨幣挖礦攻擊,攻擊者通常會利用錯誤配置和軟體漏洞來存取 Compute Engine 和 GKE 資源。

要深入了解你環境中的漏洞和錯誤配置,請使用 Security Health Analytics 掃描你的資源。尤其如果你有使用 Security Command Center Premium,請查看 Compute Engine instance findings 和 Container findings ,並設置流程以快速解決處理。

透過使用 Container Analysis 能檢查儲存在 Artifact Registry 或 Container Registry  中的容器映像檔是否存在弱點。

請確保你的企業組織可以在更新程式(Patches)釋出可用時立即安裝更新。你可以使用 Compute Engine 的 OS patch management,而 Google 則會自動修補 GKE 中的漏洞。有關詳細資訊,請參閱保持映像和叢集更新

使用 WAF 保護你的應用程序

攻擊者可以透過在你應用程式中找到第 7 層的漏洞來嘗試存取你的網路,為幫助減緩這些攻擊,請配置 Google Cloud Armor,這是一個使用第 7 層過濾和安全政策的 Web 應用防火牆(WAF)。Google Cloud Armor 能為在 Google Cloud、地端或其他雲上的應用程式和服務提供阻斷服務(DoS)攻擊和 WAF 保護。

例如,Google Cloud Armor 支援一條 WAF 規則能幫助解決 Apache Log4j 漏洞(攻擊者可以利用 Log4j 漏洞植入可執行未經授權的加密貨幣挖礦惡意軟體)有關更多資訊,請參閱解決 Apache Log4j 漏洞的 Google Cloud Armor WAF 規則

保護你的供應鏈

持續整合和持續交付 (CI/CD) 提供了一種機制,可讓你快速為客戶提供最新功能。為避免你的業務管道遭受加密貨幣挖礦攻擊,請執行程式碼分析並監控你的管道以免於惡意攻擊。

透過 Binary Authorization 以確保所有映像檔在開發過程中都由受信任的認證機構簽章,然後在部署映像檔時強制執行簽章驗證。

盡可能提早將安全檢查移到 CI/CD 過程中(有時稱為左移)。有關詳細資訊請參閱安全性左移:保護軟體供應鏈。有關在 GKE 設定安全供應鏈的訊息,請參閱 保護 Google Kubernetes Engine 上的軟體供應鏈

管理機密和金鑰

加密貨幣挖礦攻擊的一個關鍵攻擊媒介就是不安全或外洩的 secrets。本節介紹可用於保護你的secrets和加密金鑰的最佳實踐。

定期輪換加密金鑰

確保所有加密金鑰都有定期輪換。如果你是在 Cloud KMS 管理加密金鑰,你可以自動輪換你的加密金鑰。如果你使用由 Google 管理金鑰的 Service Account,金鑰也會自動輪換。

避免下載 secrets

暴露的 secrets 是攻擊者的關鍵攻擊媒介。如果可以,盡量不要下載加密金鑰或其他的 secrets,包括 Service Account 金鑰;如果真的必須下載金鑰,請確保你的組織有適當的金鑰輪換流程。

如果你有使用 GitHub 或其他公開儲存庫,請務必避免洩露憑證。建議導入諸如 secret scanning 之類的工具,它會警告你 GitHub 儲存庫中暴露的 secrets。如要阻止將金鑰傳送到你的 GitHub 儲存庫,請考慮使用 git-secrets 等工具。此外,也可以使用 Secret Manager 和 Hashicorp Vault 等管理解決方案來儲存你的 secrets、定期輪換它們並套用最小權限。

偵測異常活動

要監控異常活動,請配置 Google Cloud 和第三方監控工具並設定告警。例如,可根據 Compute Engine audit logging information 和 GKE audit logs 中的管理員活動設置吿警。

此外,可使用 Security Command Center 中的 Event Threat Detection 來找出根據管理員活動、Google 群組變更和 IAM 權限變更的威脅。為了幫助偵測來自網路的威脅,例如惡意程式,請配置 Cloud IDS

更新你的事件回應計畫

確認你的事件回應計畫和指導手冊能提供規範性指引,以協助組織應變加密貨幣挖礦攻擊。例如,確認你的計畫包括以下內容:

  • 如何向 Cloud Customer Care 提交支援案件並聯繫你的 Google 技術客戶經理 (TAM)。如果沒有支援帳戶,請查看可用的支援計畫並創建一個。
  • 如何區分合法的高效能運算 (HPC)工作負載和加密貨幣挖礦攻擊。例如,你可以標記哪些專案項目啟用了HPC,並設置非預期成本增加的告警提醒。
  • 如何處理被攻擊的 Google Cloud 憑證
  • 如何隔離受感染的系統並從健康的備份中回復。
  • 受到攻擊時,需通知組織中哪些人員來調查和回應攻擊。
  • 你的回顧活動需要記錄哪些訊息。
  • 如何驗證修復行動已有效地消除挖礦活動、且已解決導致攻擊的最原始弱點。
  • 組織如何回應 Cloud Customer Care 發送的吿警。有關詳細資訊請參閱 違反政策的常見問題解答

更多詳細資訊,請參閱 回應攻擊並從攻擊中復原

實施災難恢復計畫

為加密貨幣挖礦攻擊做準備,需完成業務持續營運計畫災難復原計畫,創建事件回應手冊,並進行模擬演練。

如果發生未經授權的加密貨幣挖礦攻擊,請確認你可以找出並解決導致最初侵入的威脅媒介,並確保你可以從已知的良好狀態重建你的環境。你的災難復原計畫中必須載明「良好狀態的定義」,如此一來,攻擊者就無法重複使用相同的漏洞來利用你的資源。

延伸閱讀:

協助開發者輕鬆佈局 Web 3! Google Cloud 推出全代管區塊鏈節點引擎

【GCP教學】什麼是 VPC ? 簡介 VPC 概念、架構與模式設定

訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。