이 문서에서는 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: 포드의 Kubernetes 네임스페이스 이름Pod_Name: GKE 포드의 이름Container_Name: 영향을 받는 컨테이너의 이름Container_Image_Uri: 배포 중인 컨테이너 이미지의 이름VM_Instance_Name: 포드가 실행된 GKE 노드의 이름
이 컨테이너에서 비슷한 시점에 발생한 다른 발견 사항을 식별합니다. 관련 발견 사항은 권장사항을 따르지 않은 것이 아니라 악의적인 활동이었음을 의미할 수 있습니다.
2단계: 클러스터 및 노드 검토하기
Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name에 나열된 프로젝트를 선택합니다.발견 사항 세부정보의 요약 탭에서 리소스 전체 이름 행에 나열된 클러스터를 선택합니다. 클러스터 및 해당 소유자의 모든 메타데이터를 확인합니다.
노드 탭을 클릭합니다.
VM_Instance_Name에 나열된 노드를 선택합니다.세부정보 탭을 클릭하고
container.googleapis.com/instance_id주석을 확인합니다.
3단계: 포드 검토하기
Google Cloud 콘솔에서 Kubernetes 워크로드 페이지로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name에 나열된 프로젝트를 선택합니다.발견 항목 세부정보의 요약 탭에 있는 리소스 전체 이름 행에 지정된 클러스터를 기준으로 필터링하고 필요한 경우
Pod_Namespace에 나열된 포드 네임스페이스를 기준으로 필터링합니다.Pod_Name에 나열된 포드를 선택합니다. 포드 및 해당 소유자의 모든 메타데이터를 확인합니다.
4단계: 로그 확인하기
Google Cloud 콘솔에서 로그 탐색기로 이동합니다.
필요한 경우 Google Cloud 콘솔 툴바에서
resource.project_display_name에 나열된 프로젝트를 선택합니다.기간 선택을 원하는 기간으로 설정합니다.
로드되는 페이지에서 다음을 수행합니다.
- 다음 필터를 사용하여
Pod_Name의 포드 로그를 찾습니다.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에 나열된 프로젝트를 선택합니다.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_FILELOCAL_FILE을 다운로드한 바이너리를 저장할 로컬 경로로 바꿉니다.다음 명령어를 실행하여 컨테이너 환경에 연결합니다.
kubectl exec \ --namespace=POD_NAMESPACE \ -ti POD_NAME \ -c CONTAINER_NAME \ -- /bin/sh이 명령어를 실행하려면 컨테이너의 셸이
/bin/sh에 설치되어 있어야 합니다.
6단계: 공격 및 대응 방법 조사하기
- 이 발견 항목 유형(명령 및 제어)의 MITRE ATT&CK 프레임워크 항목을 검토합니다.
- 대응 계획을 개발하려면 조사 결과를 MITRE 연구와 결합합니다.
7단계: 대응 구현하기
다음의 응답 계획이 이 발견 사항에 적합할 수 있지만 작업에도 영향을 줄 수 있습니다. 조사에서 수집한 정보를 신중하게 평가하여 발견 항목을 해결할 최선의 방법을 결정해야 합니다.
다음 단계
- Security Command Center에서 위협 발견 사항 작업 방법 알아보기
- 위협 발견 사항 색인 참고
- Google Cloud 콘솔을 통해 발견 사항을 검토하는 방법 알아보기
- 위협 발견 사항을 생성하는 서비스 알아보기