非預期的子殼層

本文說明 Security Command Center 中的威脅發現項目類型。威脅偵測工具在雲端資源中偵測到潛在威脅時,就會產生威脅發現項目。如需可用威脅發現項目的完整清單,請參閱「威脅發現項目索引」。

總覽

Container Threat Detection 觀察到某個程序意外產生子殼層程序。這項事件可能表示攻擊者試圖濫用殼層指令和指令碼。

Container Threat Detection 是這項發現的來源。

回應方式

如要回應這項發現項目,請按照下列步驟操作:

步驟 1:查看調查結果詳細資料

  1. 按照「查看發現項目」一文的說明,開啟 Unexpected Child Shell 發現項目。系統會開啟發現項目的詳細資料面板,並顯示「摘要」分頁。

  2. 在「摘要」分頁中,查看下列各節的資訊:

    • 偵測到的內容,尤其是下列欄位:
      • 父項程序:意外建立子殼層程序的程序。
      • 子項程序:子項殼層程序。
      • 引數:提供給子項殼層程序二進位的引數。
      • 環境變數:子殼層程序二進位檔的環境變數。
      • 容器:容器名稱。
      • 容器 URI:容器的映像檔 URI。
      • Kubernetes Pod:Pod 名稱和命名空間。
    • 受影響的資源,尤其是下列欄位:
      • 資源顯示名稱:受影響資源的名稱。
      • 完整資源名稱:叢集的完整資源名稱。完整資源名稱包含下列資訊:
        • 含有叢集的專案:projects/PROJECT_ID
        • 叢集所在位置:zone/ZONElocations/LOCATION
        • 叢集名稱:projects/CLUSTER_NAME
    • 相關連結,尤其是下列欄位:
      • VirusTotal 指標:連結至 VirusTotal 分析頁面。
  3. 按一下「JSON」分頁標籤,並注意下列欄位:

+processes:包含與發現項目相關的所有程序的陣列。這個陣列包含子殼層程序和父項程序。 +resource: +project_display_name:包含資產的專案名稱。 +sourceProperties: +VM_Instance_Name:執行 Pod 的 GKE 節點名稱。

步驟 2:檢查叢集和節點

  1. 前往 Google Cloud 控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面。

    前往 Kubernetes 叢集

  2. 在 Google Cloud 控制台工具列中,視需要選取resource.project_display_name列出的專案。

  3. 選取 resource.name 中列出的叢集。請記下叢集及其擁有者的任何中繼資料。

  4. 按一下「Nodes」(節點) 分頁標籤。選取 VM_Instance_Name 中列出的節點。

  5. 按一下「詳細資料」分頁標籤,並注意 container.googleapis.com/instance_id 註解。

步驟 3:查看 Pod

  1. 前往 Google Cloud 控制台的「Kubernetes Workloads」(Kubernetes 工作負載) 頁面。

    前往 Kubernetes 工作負載

  2. 在 Google Cloud 控制台工具列中,選取您在發現項目摘要的「資源完整名稱」(resource.name) 中記下的叢集專案 (如有必要)。

  3. 按一下「顯示系統工作負載」

  4. 依據您在調查結果摘要「資源完整名稱」 (resource.name) 中記下的叢集名稱,篩選工作負載清單,並視需要依據您記下的 Pod「命名空間」 (kubernetes.pods.ns) 篩選。

  5. 按一下與您稍早記下的發現項目 JSON 中 VM_Instance_Name 屬性值相符的工作負載名稱,開啟「Pod details」(Pod 詳細資料) 頁面。

  6. 在「Pod 詳細資料」頁面中,記下可能協助您解決威脅的 Pod 相關資訊。

步驟 4:檢查記錄

  1. 前往 Google Cloud 控制台的「Logs Explorer」頁面。

    前往 Logs Explorer

  2. 在 Google Cloud 控制台工具列中,選取resource.project_display_name列出的專案。

  3. 將「選取時間範圍」設為感興趣的時間範圍。

  4. 在隨即載入的頁面中,執行下列操作:

    1. 使用下列篩選條件,找出 Pod_Name 的 Pod 記錄:
      • resource.type="k8s_container"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • resource.labels.namespace_name="Pod_Namespace"
      • resource.labels.pod_name="Pod_Name"
    2. 使用下列篩選器尋找叢集稽核記錄:
      • logName="projects/resource.project_display_name/logs/cloudaudit.googleapis.com%2Factivity"
      • resource.type="k8s_cluster"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • Pod_Name
    3. 使用下列篩選器,找出 GKE 節點控制台記錄:
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

步驟 5:調查執行中的容器

如果容器仍在執行,或許可以直接調查容器環境。

  1. 前往 Google Cloud 控制台。

    開啟 Google Cloud 控制台

  2. 在 Google Cloud 控制台工具列中,選取resource.project_display_name列出的專案。

  3. 按一下「Activate Cloud Shell」(啟用 Cloud Shell)

  4. 執行下列指令,取得叢集的 GKE 憑證。

    如果是可用區叢集,請執行下列指令:

      gcloud container clusters get-credentials cluster_name --zone location --project resource.project_display_name
    

    如果是地區叢集,請執行下列指令:

      gcloud container clusters get-credentials cluster_name --region location --project resource.project_display_name
    
  5. 如要在容器環境中啟動殼層,請執行下列指令:

      kubectl exec --namespace=Pod_Namespace -ti Pod_Name -c Container_Name -- /bin/sh
    

    這個指令需要容器在 /bin/sh 安裝 Shell。

    如要查看容器中執行的所有程序,請在容器殼層中執行下列指令:

      ps axjf
    

    如要使用這項指令,容器必須已安裝 /bin/ps

步驟 6:研究攻擊和應變方法

  1. 查看這類發現項目的 MITRE ATT&CK 框架項目:「指令和指令碼解譯器:Unix 殼層」
  2. VirusTotal 指標中按一下連結,即可在 VirusTotal 上查看標示為惡意內容的二進位檔 SHA-256 雜湊值。VirusTotal 是 Alphabet 旗下的服務,可提供潛在惡意檔案、網址、網域和 IP 位址的相關資訊。
  3. 如要制定回應計畫,請將調查結果與 MITRE 研究和 VirusTotal 分析結果合併。

步驟 7:實作回應

下列應變計畫可能適用於這項發現,但也可能影響作業。 請仔細評估調查期間收集到的資訊,找出解決問題的最佳方式。

  • 與遭入侵的容器所屬專案擁有者聯絡。
  • 停止或刪除遭入侵的容器,並換成新容器

後續步驟