本文說明 Security Command Center 中的威脅發現項目類型。威脅偵測工具偵測到雲端資源中可能存在威脅時,就會產生威脅發現項目。如需可用威脅發現項目的完整清單,請參閱「威脅發現項目索引」。
總覽
Command and Control: Piped Encoded Code Execution 會偵測 base64 --decode 指令的輸出內容是否直接透過管道傳送至殼層解譯器,例如 python、perl、php、ruby 或 ssh。
如果系統在預期工作負載以外 (例如 CI/CD 管道) 發現威脅,就表示可能發生惡意活動。攻擊者經常使用這種方法執行經過混淆處理的指令碼或指令。base64 編碼會隱藏實際執行的程式碼,並直接將程式碼傳送至解譯器,讓程式碼立即執行,不必將解碼後的指令碼寫入磁碟,因此更具隱匿性。
如果發現非預期的工作負載發生這種情況,建議一律立即採取行動。良性工作負載主要使用 base64 編碼,透過文字型系統和通訊協定安全地傳輸二進位資料或含有特殊字元的資料,否則資料可能會損毀。不過,任何程式碼執行作業都可能直接影響及進一步危害系統,因此請務必將這項發現視為惡意行為,直到證明並非如此為止。
Container Threat Detection 是這項發現的來源。
回應方式
如要回應這項發現,請按照下列步驟操作:
步驟 1:查看調查結果詳細資料
按照「查看發現項目」一文的說明,開啟
Command and Control: Piped Encoded Code Execution發現項目。系統會開啟發現項目的詳細資料面板,並顯示「摘要」分頁。在「摘要」分頁中,查看下列各節的資訊:
- 偵測到的內容,特別是下列欄位:
- 程式二進位檔:執行的二進位檔絕對路徑。
- 引數:在二進位檔執行期間傳遞的引數。
- 受影響的資源,尤其是下列欄位:
- 資源全名:叢集的完整資源名稱,包括專案編號、位置和叢集名稱。
- 偵測到的內容,特別是下列欄位:
在調查結果的詳細資料檢視畫面中,按一下「JSON」分頁標籤。
請注意 JSON 中的下列欄位。
resource:project_display_name:叢集所在專案的名稱。
finding:processes:binary:path:執行的二進位檔完整路徑。
args:執行二進位檔時提供的引數。
sourceProperties:Pod_Namespace:Pod 的 Kubernetes 命名空間名稱。Pod_Name:GKE Pod 的名稱。Container_Name:受影響的容器名稱。Container_Image_Uri:要部署的容器映像檔名稱。VM_Instance_Name:執行 Pod 的 GKE 節點名稱。
找出這個容器在類似時間發生的其他發現項目。 相關發現可能指出這項活動是惡意活動,而非未遵循最佳做法。
步驟 2:檢查叢集和節點
前往 Google Cloud 控制台的「Kubernetes clusters」(Kubernetes 叢集) 頁面。
在 Google Cloud 控制台工具列中,視需要選取
resource.project_display_name列出的專案。在調查結果詳細資料的「摘要」分頁中,選取「資源完整名稱」列所列的叢集。請記下叢集及其擁有者的任何中繼資料。
按一下「Nodes」(節點) 分頁標籤。選取
VM_Instance_Name中列出的節點。按一下「詳細資料」分頁標籤,並注意
container.googleapis.com/instance_id註解。
步驟 3:查看 Pod
前往 Google Cloud 控制台的「Kubernetes Workloads」(Kubernetes 工作負載) 頁面。
在 Google Cloud 控制台工具列中,視需要選取
resource.project_display_name列出的專案。根據「摘要」分頁中「資源全名」列指定的叢集進行篩選,並視需要根據
Pod_Namespace中列出的 Pod 命名空間進行篩選。選取
Pod_Name中列出的 Pod。請記下 Pod 和擁有者的任何中繼資料。
步驟 4:檢查記錄
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在 Google Cloud 控制台工具列中,視需要選取
resource.project_display_name列出的專案。將「選取時間範圍」設為感興趣的時間範圍。
在隨即載入的頁面中,執行下列操作:
- 使用下列篩選條件,找出
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"
- 使用下列篩選器尋找叢集稽核記錄:
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
- 使用下列篩選器,找出 GKE 節點控制台記錄:
resource.type="gce_instance"resource.labels.instance_id="INSTANCE_ID"
- 使用下列篩選條件,找出
步驟 5:調查執行中的容器
如果容器仍在執行,或許可以直接調查容器環境。
前往 Google Cloud 控制台。
在 Google Cloud 控制台工具列中,視需要選取
resource.project_display_name列出的專案。按一下「Activate Cloud Shell」(啟用 Cloud Shell)
執行下列指令,取得叢集的 GKE 憑證。
區域叢集:
gcloud container clusters get-credentials CLUSTER_NAME \ --zone LOCATION \ --project PROJECT_NAME地區叢集:
gcloud container clusters get-credentials CLUSTER_NAME \ --region LOCATION \ --project PROJECT_NAME
更改下列內容:
CLUSTER_NAME:resource.labels.cluster_name中列出的叢集LOCATION:resource.labels.location中列出的位置PROJECT_NAME:resource.project_display_name中列出的專案名稱
擷取執行的二進位檔:
kubectl cp \ POD_NAMESPACE/POD_NAME:PROCESS_BINARY_FULLPATH \ -c CONTAINER_NAME \ LOCAL_FILE將
LOCAL_FILE替換為儲存下載二進位檔的本機路徑。執行下列指令,連線至容器環境:
kubectl exec \ --namespace=POD_NAMESPACE \ -ti POD_NAME \ -c CONTAINER_NAME \ -- /bin/sh這個指令需要容器在
/bin/sh安裝 Shell。
步驟 6:研究攻擊和應變方法
- 查看這類發現項目的 MITRE ATT&CK 架構項目: 命令與控制。
- 如要制定回應計畫,請將調查結果與 MITRE 研究結合。
步驟 7:實作回應
下列回應計畫可能適用於這項發現,但也可能影響作業。 請仔細評估調查期間收集到的資訊,找出解決問題的最佳方法。
後續步驟
- 瞭解如何在 Security Command Center 中處理威脅調查結果。
- 請參閱威脅發現項目索引。
- 瞭解如何透過 Google Cloud 控制台查看發現項目。
- 瞭解會產生威脅發現項目的服務。