VMware Carbon Black Enterprise EDR

통합 버전: 6.0

제품 사용 사례

  1. 조사 작업 수행 - Google Security Operations의 알림 분석의 일환으로 CB Enterprise EDR에서 데이터를 가져옵니다.
  2. 구성 작업 실행 - Google SecOps에서 CB Enterprise EDR 피드/관심 목록을 구성합니다.

제품 권한

Carbon Black Enterprise EDR (ThreatHunter) API에 액세스하는 데 필요한 개념:

  1. 서비스 호스트 이름
  2. API 키
  3. RBAC
  4. 조직 키

서비스 호스트 이름

Carbon Black Cloud 호스트 이름에는 두 가지가 있습니다.

  • https://defense-<environment>.conferdeploy.net/
  • https://api-<environment>.conferdeploy.net/

또한 다음과 같은 여러 환경이 있습니다 (전체 목록은 아님).

  • prod02
  • prod04
  • prod05

Carbon Black Enterprise EDR (ThreatHunter) API의 경우 다음 호스트 이름이 사용됩니다. https://defense-<environment>.conferdeploy.net/

API 키

Carbon Black Enterprise EDR (ThreatHunter) API 및 서비스는 API 키를 통해 인증됩니다. 사용자는 Carbon Black Cloud 콘솔의 설정 > API 키에서 API 키 설정을 볼 수 있습니다.

API 키는 다음 두 부분으로 구성됩니다.

  • API 보안 키 (이전의 API 키)입니다.
  • API ID (이전의 커넥터 ID)입니다.

인증은 X-Auth-Token HTTP 헤더를 통해 API에 전달됩니다.

  1. 적절한 헤더를 생성하려면 API 보안 비밀 키와 API ID를 슬래시로 연결하세요.
  2. 예를 들어 API 보안 비밀 키가 ABCD이고 API ID가 1234인 경우 해당 X-Auth-Token HTTP 헤더는 X-Auth-Token: ABCD/1234가 됩니다.

모든 API 요청은 API 보안 키와 API ID를 사용하여 인증해야 합니다. 인증되지 않은 요청은 HTTP 401 오류를 반환합니다.

API 보안 비밀 키 및 API ID를 가져오는 방법

  1. Carbon Black Cloud 조직에 로그인합니다.
  2. 설정 > API 키로 이동합니다.
  3. 'API 키 추가'를 클릭합니다.
  4. 이름, 액세스 수준 등을 구성합니다.
  5. API 보안 비밀 키와 API ID 쌍을 가져옵니다.

이를 통해 조직 관리자는 API 키를 정의하고 API 요청을 인증하는 데 필요한 API 보안 키와 API ID에 액세스할 수 있습니다. 또한 관리자는 보안상의 이유로 이 API 키의 사용을 특정 IP 주소 집합으로 제한할 수 있습니다.

API 키 액세스 수준

현재 API 키 페이지에는 API 키에 사용할 수 있는 네 가지 주요 액세스 수준이 있습니다. 액세스 수준마다 API 경로에 대한 액세스 수준이 다릅니다.

  1. 맞춤 키 액세스 수준: 맞춤설정 가능한 승인을 제공합니다.

    • 맞춤 API 키는 역할 기반 액세스 제어(RBAC) 노력의 결과입니다.
    • 고객이 액세스 제어를 적용하고 최소 권한 API 키를 만들 수 있습니다.
    • 맞춤 API 키에 사용자 역할 또는 액세스 수준을 할당할 수 있습니다.
  2. API 키 액세스 수준: 알림 API 및 실시간 응답 API를 제외한 모든 API에 대한 액세스를 제공합니다.

  3. SIEM 키 액세스 수준: 알림 API에 대한 액세스를 제공합니다.

  4. 실시간 응답 키 액세스 수준: 위의 (1)에 더해 실시간 응답 API에 액세스할 수 있는 모든 API에 대한 액세스를 제공합니다.

Carbon Black Enterprise EDR (ThreatHunter) 서비스와 API 액세스 수준의 상관관계 플랫폼 API는 굵게 표시됨

API/서비스 카테고리 허용된 API 키 액세스 수준
PSC /appservices/* 맞춤 (적절한 권한이 있는 경우)
CB-TH /threathunter/* 맞춤 (적절한 권한이 있는) API
CB-LO /livequery/* 맞춤 (적절한 권한이 있는 경우)
CB-D /integrationServices/v3/notification/ SIEM
CB-D /integrationServices/* APILive 응답

조직 키

API 키 외에도 많은 Carbon Black Cloud API 또는 서비스에는 API 요청 경로에 org_key가 필요합니다. 이는 여러 조직을 관리하는 고객을 지원하기 위한 것입니다.

org_key는 Carbon Black Cloud Console의 Settings > API Keys에서 확인할 수 있습니다.

Carbon Black Enterprise EDR (ThreatHunter) Google SecOps 통합을 위한 API 액세스 구성

Carbon Black Enterprise EDR (ThreatHunter) Google SecOps 통합의 API 액세스를 구성하려면 다음 단계를 따라야 합니다.

  1. Carbon Black Cloud 콘솔에 로그인하고 Settings > API Access로 이동합니다.
  2. API 액세스 페이지에서 액세스 수준으로 이동합니다.
  3. 액세스 수준 페이지에서 + 액세스 수준 추가를 클릭합니다.
  4. 열린 창에서 새 액세스 수준의 이름과 설명을 입력하고 아래 스크린샷과 같이 권한을 선택합니다.

    필수 권한 목록

  5. API 액세스 탭으로 돌아갑니다.

  6. '+ API 키 추가'를 클릭하여 새 API 키를 만듭니다.

  7. 열린 탭에서 필수 필드를 작성하고 4단계에서 구성한 액세스 수준을 선택합니다.

    API 키 설정 수정

  8. 저장을 클릭하면 API ID와 API 보안 비밀 키가 표시됩니다. 이 값은 한 번만 표시되므로 저장해 두세요.

  9. API ID와 API Secret 키가 저장되면 Carbon Black Enterprise EDR (ThreatHunter)의 API 액세스가 완료됩니다.

Google SecOps에서 VMware Carbon Black Enterprise EDR (위협 헌터) 통합 구성

Google SecOps에서 통합을 구성하는 방법에 대한 자세한 내용은 통합 구성을 참고하세요.

통합 매개변수

다음 매개변수를 사용하여 통합을 구성합니다.

매개변수 표시 이름 유형 기본값 필수 항목 설명
인스턴스 이름 문자열 해당 사항 없음 No 통합을 구성할 인스턴스의 이름입니다.
설명 문자열 해당 사항 없음 No 인스턴스에 대한 설명입니다.
API 루트 문자열 해당 사항 없음 Vmware Carbon Black Cloud API 루트 URL입니다.
조직 키 문자열 해당 사항 없음 Vmware Carbon Black Cloud 조직 키입니다.
API ID 문자열 해당 사항 없음 Vmware Carbon Black Cloud API ID (맞춤 API 키 ID)입니다.
API 보안 키 문자열 해당 사항 없음 VMware Carbon Black Cloud API 보안 비밀번호 키 (맞춤 API 보안 비밀번호 키)
원격 실행 체크박스 해당 사항 없음 아니요 구성된 통합을 원격으로 실행하려면 필드를 선택합니다. 선택하면 원격 사용자(에이전트)를 선택하는 옵션이 나타납니다.

작업

설명

Google Security Operations Marketplace 탭의 통합 구성 페이지에서 제공된 매개변수를 사용하여 VMware Carbon Black Enterprise EDR에 대한 연결을 테스트합니다.

매개변수

해당 사항 없음

플레이북 사용 사례 예시

이 작업은 Google Security Operations Marketplace 탭의 통합 구성 페이지에서 연결을 테스트하는 데 사용되며 플레이북에 사용되지 않는 직접 조치로 실행될 수 있습니다.

실행

이 작업은 항목에서 실행되지 않거나 필수 입력 매개변수가 없습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False
케이스 월
결과 유형 값/설명 유형
출력 메시지*

작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 성공한 경우: '제공된 연결 매개변수를 사용하여 VMware Carbon Black Enterprise EDR 서버에 성공적으로 연결되었습니다.'를 출력합니다.

작업이 실패하고 플레이북 실행을 중지합니다.

  • 성공하지 못한 경우 'VMware Carbon Black Enterprise EDR 서버에 연결하지 못했습니다. 오류: {0}".format(exception.stacktrace)
일반

설명

제공된 검색 매개변수를 기반으로 CB 센서를 사용하여 호스트의 프로세스 활동에 관한 정보를 검색합니다. 이 작업은 호스트 Google SecOps 엔티티를 허용합니다.

매개변수

매개변수 표시 이름 유형 기본값 필수 항목 설명
쿼리 문자열 해당 사항 없음 아니요 프로세스 검색에서 실행할 쿼리입니다. 예를 들어 process_name:svchost.exe는 프로세스 이름으로 검색하고 process_hash:9520a99e77d6196d0d09833146424113은 프로세스 해시로 검색합니다.
기간 정수 4 아니요 알림을 가져올 기간(단위: 시간)을 지정합니다.
레코드 한도 정수 20 작업에서 반환할 수 있는 레코드 수를 지정합니다.
정렬 기준 문자열 해당 사항 없음 아니요 데이터 정렬을 위한 매개변수를 지정합니다.
정렬 순서 DDL ASC 아니요 정렬 순서입니다.

플레이북 사용 사례 예시

제공된 검색 매개변수를 기반으로 프로세스로 인해 발생한 이벤트를 검색합니다.

사용자는 CB 플랫폼에서 관리하는 특정 호스트와 관련된 알림을 분석하는 동안 호스트를 조사하여 제공된 검색 매개변수를 기반으로 실행되는 프로세스로 인해 발생한 특정 이벤트를 검색하려고 합니다. 사용자는 위협 헌팅 활동을 위해 이 작업을 실행할 수 있습니다. 즉, 문제의 호스트에 의심스러운 프로세스/이벤트가 있는지 사전에 검색할 수 있습니다.

실행

이 작업은 호스트 항목에서 실행됩니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False
JSON 결과
{
"results": [
    {
        "alert_id": [
            "null/WSD2CQMT"
        ],
        "backend_timestamp": "2020-03-04T21:42:45.080Z",
        "device_id": 3078944,
        "device_name": "qaam\\manticorewin864",
        "device_policy_id": 6525,
        "device_timestamp": "2020-03-04T21:39:33.180Z",
        "enriched": true,
        "enriched_event_type": "CREATE_PROCESS",
        "event_description": "The script \"<share><link hash=\"74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9\">C:\\programdata\\wmirepair.bat</link></share>\" invoked the application \"<share><link hash=\"7eadc73f8aa77148ca289d5ce5c2632f3a157d313079583454c0421bb97d5646\">C:\\windows\\syswow64\\regsvr32.exe</link></share>\". ",
        "event_id": "ecc6954f5e6011eaa0de89cc027330db",
        "event_type": "childproc",
        "ingress_time": 1583358118950,
        "legacy": true,
        "org_id": "7DESJ9GN",
        "parent_guid": "7DESJ9GN-002efb20-00001604-00000000-1d5f26cab1067fe",
        "parent_pid": 5636,
        "process_guid": "7DESJ9GN-002efb20-00000d58-00000000-1d5f26d6615c568",
        "process_hash": [
            "629ae017d28848b68485bd2aeede9129",
            "74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9"
        ],
        "process_name": "c:\\programdata\\wmirepair.bat",
        "process_pid": [
            3416
        ],
        "process_username": [
            "NT AUTHORITY\\SYSTEM"
        ]
    },
    ...
]  }
케이스 월
결과 유형 값 / 설명 유형
출력 메시지*

작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 성공한 경우: '다음 항목의 프로세스 정보를 찾았습니다.\n {0}".format( entity.Identifiers list) 출력
  • 제공된 모든 항목에 대해 is_success=False인 경우 '검색 결과가 반환되지 않았습니다.'를 출력합니다.
  • 지정된 검색 매개변수의 결과를 찾을 수 없어 제공된 항목 일부의 is_success=False인 경우: '작업에서 다음 항목의 프로세스 정보를 찾을 수 없습니다.\n {0}'.format(entity.Identifiers list)를 출력합니다.
  • 검색 실행 중 오류 (예: 제한 시간)로 인해 제공된 항목 일부의 is_success=False인 경우 '다음 항목의 검색 실행 중 오류로 인해 결과를 가져올 수 없습니다./n {0}".format(entity.identifiers list)를 출력합니다.

작업이 실패하고 플레이북 실행을 중지합니다.

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우: '작업을 실행하지 못했습니다. 오류: {0}".format(exception.stacktrace)
모두

테이블 이름: {entityIdentifier}의 검색 결과 처리

열:

  • 이벤트 ID (event_id)
  • 이벤트 유형 ('enriched_event_type')
  • 프로세스 이름 (process_name)
  • 프로세스 GUID (process_guid)
  • 프로세스 PID (process_pid)
  • 프로세스 상위 GUID (parent_guid)
  • 프로세스 상위 PID (parent_pid)
  • 파일 해시 처리 (process_hash)
  • 프로세스 실행 사용자 ('process_username')
  • 생성 시간 ('device_timestamp')
  • 이벤트 설명 (event_description)
  • 로컬 IPv4 주소 (event_network_local_ipv4)
  • 네트워크 프로토콜 (event_network_protocol)
  • 원격 IPv4 주소 (event_network_remote_ipv4)
  • 원격 포트 (event_network_remote_port)
항목

프로세스 가이드로 프로세스와 연결된 이벤트 가져오기

설명

VMware Carbon Black Enterprise EDR의 정보를 기반으로 특정 프로세스와 연결된 이벤트를 가져옵니다. 이 작업을 사용하면 '프로세스 검색' 작업보다 특정 프로세스 활동에 관한 자세한 결과를 얻을 수 있습니다. 작업이 작동하려면 Google SecOps에서 처리한 아티팩트가 작업에 전달되어야 하며 프로세스 GUID 유형이어야 합니다.

매개변수

매개변수 표시 이름 유형 기본값 필수 항목 설명
검색 기준 문자열 해당 사항 없음 아니요 요청의 검색 기준을 지정합니다. 현재는 'event_type' 값만 검색 기준으로 허용됩니다(예: netconn). 쉼표로 구분된 문자열로 여러 값이 허용됩니다.
쿼리 검색 해당 사항 없음 프로세스 검색에서 실행할 쿼리입니다. 예를 들어 'netconn_action:ACTION_CONNECTION_CREATE OR netconn_action:ACTION_CONNECTION_ESTABLISHED'입니다.
기간 정수 4 아니요 알림을 가져올 기간(단위: 시간)을 지정합니다.
레코드 한도 정수 20 아니요 작업에서 반환할 수 있는 레코드 수를 지정합니다.
정렬 기준 문자열 해당 사항 없음 아니요 데이터 정렬을 위한 매개변수를 지정합니다.
정렬 순서 DDL ASC 아니요 정렬 순서

플레이북 사용 사례 예시

특정 프로세스 활동을 조사합니다.

CB 플랫폼에서 관리하는 특정 호스트와 관련된 알림을 분석하는 중에 호스트에서 의심스러운 프로세스가 실행되고 있는 것으로 확인되었습니다. Google SecOps 사용자는 CB Enterprise EDR 기능을 사용하여 Google SecOps에서 지정된 프로세스와 연결된 이벤트를 가져오는 작업이 필요합니다.

실행

이 작업은 항목에서 실행되지 않습니다.

작업 결과

스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False
JSON 결과
{
    "results": [
        {
            "backend_timestamp": "2020-04-26T18:38:50.128Z",
            "created_timestamp": "2020-05-19T03:56:53.483Z",
            "event_guid": "ufzid3pPQs-yrRlPBe8-ww",
            "event_hash": "ce6a949bcd3879897c9eac258ec6a091",
            "event_timestamp": "2020-04-26T18:34:16.258Z",
            "event_type": "netconn",
            "legacy": false,
            "netconn_action": "ACTION_CONNECTION_CREATE",
            "netconn_inbound": true,
            "netconn_local_ipv6": "FF020000000000000000000000010003",
            "netconn_local_port": 5355,
            "netconn_protocol": "PROTO_UDP",
            "netconn_remote_ipv6": "FE800000000000000000000000000000",
            "netconn_remote_port": 58994,
            "process_guid": "7DESJ9GN-002efb20-000003ec-00000000-1d5fb6d63ba535c",
            "process_pid": 1004
        },
        ...
    ]
}
케이스 월
결과 유형 값 / 설명 유형
출력 메시지*

작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 성공한 경우: '다음 프로세스 GUID에 대한 이벤트를 찾았습니다.\n {0}'.format( process guid list)를 출력합니다.
  • 제공된 모든 프로세스 GUID에 대해 is_success=False인 경우 '검색 결과가 반환되지 않았습니다.'를 출력합니다.
  • 지정된 프로세스 GUID를 찾을 수 없어 제공된 항목 일부의 is_success=False인 경우 '작업에서 다음 프로세스의 정보를 찾을 수 없습니다.\n {0}'.format(process guids list)를 출력합니다.
  • 검색 실행 중 오류 (예: 제한 시간)로 인해 제공된 항목 일부의 is_success=False인 경우 '다음 프로세스 GUID의 검색을 실행하는 중 오류가 발생하여 결과를 가져올 수 없습니다./n {0}'.format(entity.identifiers list)를 출력합니다.

작업이 실패하고 플레이북 실행을 중지합니다.

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우: '작업을 실행하지 못했습니다. 오류: {0}".format(exception.stacktrace)을 출력합니다.
일반

표 이름: Found events for process {process artifact identifier}(프로세스 {프로세스 아티팩트 식별자}의 이벤트 발견)

열: 반환된 결과를 기반으로 자동으로 생성되어야 합니다.

항목

해시 보강

설명

VMware Carbon Black Enterprise EDR의 정보를 기반으로 Google SecOps 파일 해시 엔티티를 보강합니다.

플레이북 사용 사례 예시

CB Enterprise EDR의 정보로 Google SecOps filehash 항목을 보강합니다.

CB 플랫폼 센서가 있는 호스트와 연결된 멀웨어 감염 가능성 알림을 처리하는 동안 사용자는 조사상의 이유로 해당 알림과 연결된 특정 파일 해시에 관한 CB Enterprise EDR (플랫폼의 일부)의 보강 데이터가 필요합니다. 예를 들어 보강의 일환으로 사용자는 이 파일 해시가 조직에서 처음 감지된 시점과 호스트에 관한 관련 파일 해시 메타데이터를 가져올 수 있습니다.

실행

이 작업은 Sha256 형식의 Filehash 항목에서 실행됩니다.

작업 결과

항목 보강
보강 필드 이름 소스(JSON 키) 로직 - 적용 시기
CB_ENT_EDR.sha256 sha256 항상
CB_ENT_EDR.md5 md5 항상
CB_ENT_EDR.architecture 아키텍처 항상
CB_ENT_EDR.available_file_size available_file_size 항상
CB_ENT_EDR.charset_id charset_id 항상
CB_ENT_EDR.comments 댓글 null이 아닌 경우
CB_ENT_EDR.company_name company_name 항상
CB_ENT_EDR.copyright 저작권 항상
CB_ENT_EDR.file_available file_available 항상
CB_ENT_EDR.file_description file_description 항상
CB_ENT_EDR.file_size file_size 항상
CB_ENT_EDR.file_version file_version 항상
CB_ENT_EDR.internal_name internal_name 항상
CB_ENT_EDR.lang_id lang_id null이 아닌 경우
CB_ENT_EDR.original_filename original_filename 항상
CB_ENT_EDR.os_type os_type 항상
CB_ENT_EDR.private_build private_build null이 아닌 경우
CB_ENT_EDR.product_description product_description null이 아닌 경우
CB_ENT_EDR.product_name product_name 항상
CB_ENT_EDR.product_version product_version 항상
CB_ENT_EDR.special_build special_build null이 아닌 경우
CB_ENT_EDR.trademark trademark null이 아닌 경우
CB_ENT_EDR.found_times num_devices 항상
CB_ENT_EDR.first_seen_device_timestamp first_seen_device_timestamp 항상
CB_ENT_EDR.first_seen_device_id first_seen_device_id 항상
CB_ENT_EDR.first_seen_device_name first_seen_device_name 항상
CB_ENT_EDR.last_seen_device_timestamp last_seen_device_timestamp 항상
CB_ENT_EDR.last_seen_device_id last_seen_device_id 항상
CB_ENT_EDR.last_seen_device_name last_seen_device_name 항상
스크립트 결과
스크립트 결과 이름 값 옵션
is_success True/False is_success:False
JSON 결과
{
    "sha256": "e24dd278cec867486b68418c9066ffa9bd4f394dac3ba94125d58415f677f0f4",
    "architecture": [
        "amd64"
    ],
    "available_file_size": 207800,
    "charset_id": 1200,
    "comments": null,
    "company_name": "Example Organization",
    "copyright": "Copyright  © 2019",
    "file_available": true,
    "file_description": "OpenJDK Platform binary",
    "file_size": 207800,
    "file_version": "8.0.2320.9",
    "internal_name": "java",
    "lang_id": null,
    "md5": "afede6f64ed8878bc0cac57e1831a3bc",
    "original_filename": "java.exe",
    "os_type": "WINDOWS",
    "private_build": null,
    "product_description": null,
    "product_name": "OpenJDK Platform 8",
    "product_version": "8.0.2320.9",
    "special_build": null,
    "trademark": null
}
케이스 월
결과 유형 값 / 설명 유형
출력 메시지*

작업이 실패하거나 플레이북 실행을 중지하지 않습니다.

  • 성공하고 제공된 항목 중 하나 이상이 보강된 경우: '항목({0})을 보강했습니다.'.format([entity.Identifier])를 출력합니다.
  • 제공된 모든 항목을 보강할 수 없는 경우 '보강된 항목이 없습니다'를 출력합니다.
  • VMware Carbon Black Enterprise EDR에서 데이터를 찾아 특정 항목을 보강할 수 없는 경우: '작업이 VMware Carbon Black Enterprise EDR 정보를 찾아 다음 항목을 보강할 수 없습니다. {0}'.format([entity.identifier]) 출력
  • 보강 쿼리 중 하나를 실행하지 못하는 경우(예: 하나의 응답을 가져올 때 오류 500이 발생하지만 다른 응답은 정상임) is_success는 False여야 하지만 작업은 다른 응답에서 가져온 데이터로 보강하고 '항목 데이터를 가져오는 중 오류가 발생하여 다음 항목이 부분적으로 보강되었습니다./n {0}'.format(entityIdentifier list)를 출력해야 합니다.

작업이 실패하고 플레이북 실행을 중지합니다.

  • 잘못된 사용자 인증 정보, 서버 연결 없음 등 치명적인 오류인 경우: "항목 보강 작업을 실행하지 못했습니다. 오류: {0}".format(exception.stacktrace)
일반