非預期的子殼層

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

總覽

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

回應方式

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

步驟 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」頁面。

    前往記錄檔探索工具

  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 Shell
  2. VirusTotal 上檢查標示為惡意內容的二進位檔 SHA-256 雜湊值,方法是點選「VirusTotal 指標」中的連結。VirusTotal 是 Alphabet 旗下的服務,可提供潛在惡意檔案、網址、網域和 IP 位址的相關資訊。
  3. 如要制定回應計畫,請將調查結果與 MITRE 研究和 VirusTotal 分析結果合併。

步驟 7:實作回應

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

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

後續步驟