방어 회피: Base64 ELF 파일 명령줄

이 문서에서는 Security Command Center의 위협 발견 항목 유형에 대해 설명합니다. 위협 발견 항목은 위협 감지기가 클라우드 리소스에서 잠재적인 위협을 감지할 때 생성됩니다. 사용 가능한 위협 발견 항목의 전체 목록은 위협 발견 항목 색인을 참고하세요.

개요

인수로 ELF(실행 파일 및 연결 가능한 형식) 파일이 포함된 프로세스가 실행되었습니다. 인코딩된 ELF 파일 실행이 감지된 경우, 이는 공격자가 바이너리 데이터를 ASCII 전용 명령줄에 전달하기 위해 인코딩을 시도하고 있다는 신호일 수 있습니다. 공격자는 이 기법을 이용해 탐지를 회피하고, ELF 파일에 숨겨진 악성 코드를 실행할 수 있습니다.

대응 방법

이 발견 항목에 대응하려면 다음을 수행하세요.

1단계: 발견 항목 세부정보 검토하기

  1. 발견 항목 검토의 지시에 따라 Defense Evasion: Base64 ELF File Command Line 발견 항목을 엽니다. 발견 항목의 세부정보 패널의 요약 탭이 열립니다.

  2. 요약 탭에서 다음 섹션의 정보를 검토합니다.

    • 특히 다음 필드를 포함하는 감지된 항목:
      • 프로그램 바이너리: 실행된 바이너리의 절대 경로
      • 인수: 바이너리 실행 중에 전달되는 인수입니다.
    • 특히 다음 필드를 포함하는 영향을 받는 리소스:
      • 리소스 전체 이름: 프로젝트 번호, 위치, 클러스터 이름을 포함한 클러스터의 전체 리소스 이름
  3. 발견 항목의 세부정보 보기에서 JSON 탭을 클릭합니다.

  4. 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 노드의 이름
  5. 이 컨테이너에서 비슷한 시점에 발생한 다른 발견 항목을 식별합니다. 관련 발견 항목은 권장사항을 따르지 않은 것이 아니라 악의적인 활동이었음을 의미할 수 있습니다.

2단계: 클러스터 및 노드 검토하기

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 필요한 경우 Google Cloud 콘솔 툴바에서 resource.project_display_name에 나열된 프로젝트를 선택합니다.

  3. 발견 항목 세부정보의 요약 탭에서 리소스 전체 이름 행에 나열된 클러스터를 선택합니다. 클러스터 및 해당 소유자의 모든 메타데이터를 확인합니다.

  4. 노드 탭을 클릭합니다. VM_Instance_Name에 나열된 노드를 선택합니다.

  5. 세부정보 탭을 클릭하고 container.googleapis.com/instance_id 주석을 확인합니다.

3단계: 포드 검토하기

  1. Google Cloud 콘솔에서 Kubernetes 워크로드 페이지로 이동합니다.

    Kubernetes 워크로드로 이동

  2. 필요한 경우 Google Cloud 콘솔 툴바에서 resource.project_display_name에 나열된 프로젝트를 선택합니다.

  3. 필요한 경우 발견 항목 세부정보의 요약 탭에서 리소스 전체 이름 행에 나열된 클러스터와 Pod_Namespace에 나열된 포드 네임스페이스로 필터링합니다.

  4. Pod_Name에 나열된 포드를 선택합니다. 포드 및 해당 소유자의 모든 메타데이터를 확인합니다.

4단계: 로그 확인하기

  1. Google Cloud 콘솔에서 로그 탐색기로 이동합니다.

    로그 탐색기로 이동

  2. 필요한 경우 Google Cloud 콘솔 툴바에서 resource.project_display_name에 나열된 프로젝트를 선택합니다.

  3. 기간 선택을 원하는 기간으로 설정합니다.

  4. 로드되는 페이지에서 다음을 수행합니다.

    1. 다음 필터를 사용하여 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"
    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. Cloud Shell 활성화 를 클릭합니다.

  4. 다음 명령어를 실행하여 클러스터의 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에 나열된 프로젝트 이름
  5. 실행된 바이너리를 검색합니다.

    kubectl cp \
          POD_NAMESPACE/POD_NAME:PROCESS_BINARY_FULLPATH \
          -c CONTAINER_NAME \
          LOCAL_FILE
    

    local_file을 추가된 바이너리를 저장할 로컬 파일 경로로 바꿉니다.

  6. 다음 명령어를 실행하여 컨테이너 환경에 연결합니다.

    kubectl exec \
          --namespace=POD_NAMESPACE \
          -ti POD_NAME \
          -c CONTAINER_NAME \
          -- /bin/sh
    

    이 명령어를 실행하려면 컨테이너의 셸이 /bin/sh에 설치되어 있어야 합니다.

6단계: 공격 및 대응 방법 조사하기

  1. 이 발견 항목 유형(방어 회피: 난독화된 파일 또는 정보)의 MITRE ATT&CK 프레임워크 항목을 검토합니다.
  2. 대응 계획을 개발하려면 조사 결과를 MITRE 연구와 결합합니다.

7단계: 대응 구현하기

다음의 응답 계획이 이 발견 항목에 적합할 수 있지만 작업에도 영향을 줄 수 있습니다. 조사에서 수집한 정보를 신중하게 평가하여 발견 항목을 해결할 최선의 방법을 결정해야 합니다.

  • 침해된 컨테이너가 있는 프로젝트 소유자에게 문의하세요.
  • 침해된 컨테이너를 중지 또는 삭제하고 새 컨테이너로 바꿉니다.

다음 단계