엔티티 컨텍스트 그래프 (ECG) 사용

다음에서 지원:

이 문서에서는 엔티티 컨텍스트 그래프 (ECG)의 데이터 소스, 처리 파이프라인, 규칙 및 검색에서의 애플리케이션을 간략하게 설명합니다. ECG는 탐지 규칙, 검색, 대시보드에서 고급 위협 탐지, 조사, 위협 헌팅에 필수적인 컨텍스트를 제공하는 핵심 엔티티 데이터 모델입니다. ECG 처리 파이프라인은 각 Google SecOps 환경의 컨텍스트 정보를 병합합니다.

ECG는 항목의 요약 측정항목도 계산합니다. 여기에는 유병률 (UDM 데이터에서 특정 항목이 다른 항목에 비해 얼마나 자주 발생하는지)과 항목의 first-seen-timelast-seen-time이 포함됩니다. 또한 Google 위협 인텔리전스 (GTI), 세이프 브라우징, WHOIS, VirusTotal 데이터와 같은 주요 보강 소스와 침해 지표 (IOC) 소스를 식별합니다.

ECG는 UDM 이벤트를 사용하여 다음 작업을 실행합니다.

  • 내부 엔티티(애셋 및 사용자)와 외부 엔티티 (IOC)의 풍부하고 상관관계가 있으며 포괄적인 뷰를 구축합니다.
  • 이러한 항목 간의 관계를 파악합니다.

심전도 데이터 소스

ECG 파이프라인은 다음 소스의 데이터를 결합합니다.

컨텍스트 소스 소스 설명
항목 컨텍스트 고객 제공 Google SecOps는 외부 시스템에서 사용자 및 애셋에 관한 공신력 있는 세부정보와 같은 구조화된 조직 데이터를 직접 수집합니다. 이러한 소스에는 ID 제공업체 (IDP), 구성 관리 데이터베이스 (CMDB) 시스템 (예: ServiceNow CMDB, Duo 사용자 컨텍스트), 취약점 관리 시스템이 포함됩니다.
파생 컨텍스트 Google SecOps 생성 Google SecOps는 수집된 활동 분석을 기반으로 통계 데이터를 생성합니다. 환경 내 다양한 소스 (예: Windows AD, Azure AD, Okta, Google Cloud, IAM)의 이벤트와 엔티티를 보강합니다.
예를 들면 다음과 같습니다.
전역 컨텍스트 Google 소스 글로벌 소스는 내부 및 외부 위협 인텔리전스와 평판 데이터를 제공합니다.
예를 들면 다음과 같습니다.

ECG 데이터 처리 파이프라인

심전도 데이터 처리 파이프라인은 각 항목에 대해 풍부하고 신뢰할 수 있는 프로필을 빌드합니다. 이를 위해 여러 출처 (예: ID 제공업체, 구성 관리 데이터베이스 (CMDB), 위협 인텔리전스 피드, 파생된 컨텍스트)의 컨텍스트를 단일 통합 엔티티 프로필로 병합합니다. ECG 병합을 사용하면 다음이 가능합니다.

  • ECG에 새 연결, 속성, 관계 추가
  • 파생 컨텍스트 만들기 및 업데이트

전체 프로세스에는 먼저 UDM 별칭 및 보강을 사용하여 원시 보안 이벤트를 UDM 구조로 정규화한 다음 이 이벤트 데이터를 다양한 컨텍스트 소스와 병합하여 풍부한 항목 프로필을 빌드하는 작업이 포함됩니다.

UDM 별칭 지정 및 ECG 병합

먼저 UDM 별칭 지정 및 보강 파이프라인이 원시 보안 이벤트를 수집하고 UDM 구조로 정규화합니다.

시간이 있는 항목과 시간이 없는 항목

ECG는 시간이 지정된 (시간적) 엔티티와 시간이 없는 (비시간적) 엔티티를 모두 구성합니다. 시간이 지정된 항목은 지정된 규칙 및 검색 시간 범위 내에서 평가됩니다. 시간에 구애받지 않는 항목은 검색 또는 규칙의 기간을 고려하지 않고 평가됩니다.

ECG 병합 키

ECG는 여러 데이터 소스에서 공통 키 식별자를 매칭하여 컨텍스트 레코드를 병합합니다. 이러한 식별자의 예로는 hostname, MAC address, user ID, email address가 있습니다. ECG는 이러한 값 중 하나에서 일치하는 레코드를 병합하여 엔티티의 포괄적이고 풍부한 뷰를 빌드합니다.

ECG 별칭은 다음 UDM 필드를 병합 키로 사용합니다.

  • Asset
    • entity.asset.product_object_id
    • entity.asset.hostname
    • entity.asset.asset_id
    • entity.asset.mac
  • User
    • entity.user.product_object_id
    • entity.user.userid
    • entity.user.windows_sid
    • entity.user.email_addresses
    • entity.user.employee_id
  • Resource
    • entity.resource.product_object_id
    • entity.resource.name
  • Group
    • entity.group.product_object_id
    • entity.group.email_addresses
    • entity.group.windows_sid

특정 항목 유형 병합 (파일, URL, 도메인)

ECG는 merge-keys 외에도 다음 고유 식별자를 사용하여 특정 엔티티 유형 (파일, URL, 도메인)의 컨텍스트를 병합합니다.

  • File

    • entity.file.md5
    • entity.file.sha1
    • entity.file.sha256
    • (제공된 경우 entity.file.product_object_id)
  • URL

    • entity.url.url
    • (제공된 경우 entity.url.product_object_id)
  • Domain

    • entity.domain.domain
    • (제공된 경우 entity.domain.product_object_id)

ECG는 두 레코드에 모두 있는 고유 식별자가 모두 일치하는 경우에만 File, URL 또는 Domain의 항목 컨텍스트 레코드를 다른 레코드와 병합합니다.

예를 들어 ECG에서 병합을 위해 두 개의 File 항목 컨텍스트를 고려하는 경우

  • 두 항목 모두 md5 해시가 있는 경우 ECG에서는 일치해야 합니다.
  • 한쪽에는 md5이 있고 다른 쪽에는 sha256이 있는 경우 심전도에서 해시를 기반으로 병합하지 않습니다.
  • product_object_id이 제공된 경우 비교되는 두 레코드에 모두 있는 심전도는 콘텐츠 기반 식별자 (예: md5, url, domain) 외에도 product_object_id과 일치해야 합니다.

즉, 이러한 유형의 경우 제공된 product_object_id 외에도 병합 프로세스를 위해 entity.file.md5, entity.url.url, entity.domain.domain과 같은 필드가 있어야 하며 일치해야 합니다.

충돌 해결 방법

병합 프로세스 중에 필드에 충돌하는 값이 있는 경우 ECG는 시작 시간이 가장 늦은 값을 선택하여 항목을 업데이트합니다. ECG가 새 값으로 항목 속성을 업데이트하면 이전 값이 유효했던 시간 간격 동안 검색 결과에 이전 값이 유지됩니다. 따라서 속성이 변경된 기간을 포함하는 검색어는 해당 항목에 대해 여러 항목 컨텍스트를 반환할 수 있습니다.

중복 삭제 및 시간 간격

공통 결합 항목을 만들기 위해 심전도에서는 중복 삭제를 통해 중복 데이터를 제거합니다. 중복은 여러 컨텍스트 소스에서 항목의 관련 고유 식별자를 모두 일치시켜 식별합니다. 정확한 타임스탬프를 일치시키는 대신 시간 간격을 생성합니다.

예를 들어 t1t2 타임스탬프가 각각 있는 두 항목 e1e2가 있다고 가정해 보겠습니다. e1e2가 그 외에는 동일한 경우 ECG는 다음 필드의 타임스탬프 차이를 무시하여 중복을 삭제합니다.

  • collected_timestamp
  • creation_timestamp
  • interval

전환 확인 기간

심전도에서는 5일의 회고 기간으로 항목 컨텍스트 데이터를 만듭니다. 이 프로세스는 늦게 도착하는 데이터를 처리하고 항목 컨텍스트 데이터에 대한 암시적 TTL(수명)을 설정하는 데 도움이 됩니다.

ECG는 컨텍스트 데이터 (assets, users, resources, groups)와 침해 지표 (IOC)를 구분합니다.

예: 심전도 병합으로 사용자 데이터 병합

예를 들어 Google SecOps는 Okta, Azure AD, 취약점 스캐너의 세 가지 소스에서 jdoe의 사용자 데이터를 수집합니다. ECG는 일치하는 식별자 (예: jdoe@example.com)를 기반으로 이 세 레코드를 병합합니다. 이렇게 하면 세 소스의 속성이 포함된 하나의 통합 jdoe 사용자 항목이 ECG에 생성됩니다.

중요 항목 및 이벤트 컨텍스트 심전도 데이터 소스

Google SecOps에서 엔티티를 만들고 업데이트하려면 몇 가지 특정 데이터 소스가 필요합니다.

중요한 항목 컨텍스트 심전도 데이터 소스

환경의 사용자 및 애셋에 대한 공신력 있는 데이터 소스는 엔티티 데이터 모델을 빌드하는 데 가장 중요한 로그 데이터를 제공합니다. 예를 들면 다음과 같습니다.

카테고리 중요한 데이터 소스 항목이 채워짐
ID 및 액세스 관리 Active Directory, Azure AD, Okta, Google Cloud Identity user,
group
애셋 인벤토리 CMDB, JAMF, Microsoft Intune asset
위협 인텔리전스 맞춤 또는 서드 파티 피드, Google Threat Intelligence (GTI) ip_address,
domain_name,
file

각 카테고리를 지원하는 파서를 나열하려면 다음 단계를 따르세요.

  1. 기본 파서가 있는 지원되는 로그 유형으로 이동합니다.
  2. 검색창에 카테고리를 입력합니다. 예를 들면 다음과 같습니다.

    • 애셋 인벤토리와 관련된 파서의 경우 inventory 또는 asset를 입력합니다.
    • ID 및 액세스 관리와 관련된 파서를 보려면 identity를 입력하세요.
    • 위협 인텔리전스와 관련된 파서의 경우 IOC를 입력합니다.

엔티티 프로파일링을 위한 데이터 소스 및 중요 UDM 필드

Google SecOps는 공신력 있는 항목 문맥 데이터 소스와 중요한 UDM 필드를 기반으로 항목 프로필을 개선합니다.

항목 유형 데이터 소스 중요한 UDM 필드 (별칭 지정 및 색인 생성용)
절차 엔드포인트 로그는 강력한 프로세스 별칭에 중요한 안정적인 식별자인 PSPI (`principal.process.product_specific_process_id`)를 제공합니다.
예로는 CrowdStrike EDR (CS_EDR) 및 Windows Sysmon (WINDOWS_SYSMON)이 있습니다.
source.process.product_specific_process_id
사용자 이러한 소스는 사용자 속성 및 ID 정보를 제공합니다.
예를 들어 Duo Entity 문맥 데이터 (DUO_CONTEXT) 및 Okta (OKTA)가 있습니다.
source.user.userid,
source.user.email_address,
source.user.windows_sid,
source.user.product_object_id
애셋 또는 엔드포인트 이러한 소스는 공신력 있는 애셋 정보를 제공합니다.
예를 들어 ServiceNow CMDB (SERVICENOW_CMDB) 및 Tanium Asset (TANIUM_ASSET)이 있습니다.
source.ip,
source.hostname,
source.asset_id,
principal.asset.hostname
파일 해시 데이터 무결성을 확인하기 위해 데이터 콘텐츠의 고유한 '디지털 지문'을 제공합니다. source.file.sha256,
source.file.sha1,
source.file.md5

중요 이벤트 컨텍스트 데이터 UDM 필드

Google SecOps에는 몇 가지 중요한 이벤트 문맥 데이터 UDM 필드가 필요합니다.

  • 가장 중요한 UDM 필드는 안정적인 식별자관계 표시기 (principal.*, target.*, src_*, dst_* 필드) 역할을 합니다.

  • Entity graph 기능 영역에 속하는 주요 UDM 필드 목록을 참고하세요.

  • 포괄적인 ECG를 구축하려면 가치 있는 식별자와 관계 데이터에 기여하는 데이터 소스를 우선시하세요. 예를 들면 다음과 같습니다.

    항목 유형 중요한 데이터 소스 엔티티 빌드를 위한 중요한 UDM 필드
    애셋 (호스트) EDR 및 XDR, DNS 및 DHCP, 방화벽, Google Cloud 콘솔 감사 로그 metadata.event_type,
    principal.asset.asset_id,
    principal.asset.hostname,
    principal.ip
    사용자 ID 공급업체 (IdP) 로그, HR 피드 (컨텍스트), Cloud ID 로그, 이메일 게이트웨이 principal.user.userid,
    principal.user.email_addresses,
    target.user.userid,
    principal.ip
    네트워크 방화벽, VPN, DNS, VPC 흐름 로그 principal.ip,
    target.ip,
    src_ip,
    dst_ip,
    network.direction
    파일 및 프로세스 EDR 및 XDR, 애플리케이션 로그 target.file.full_path,
    target.process.file.full_path,
    target.process.command_line

ECG는 이러한 UDM 필드를 사용하여 규칙, 검색, 대시보드에서 항목 컨텍스트 데이터와 UDM 이벤트 데이터를 조인합니다.

예를 들어 '무차별 대입' 모니터링 규칙에서 사용자 문맥 데이터를 결합하여 관련 사용자가 '도메인 관리자' 그룹에 속하고 관련 애셋이 도메인 컨트롤러인 경우에만 알림을 표시할 수 있습니다.

events:
  $fail.metadata.event_type = "USER_LOGIN"
  $fail.metadata.vendor_name = "Microsoft"
  $fail.principal.hostname = $hostname
  $fail.target.user.userid = $target_user
  $fail.security_result.action = "BLOCK"
  $fail.metadata.product_event_type = "4625"
 
  $fail.metadata.event_timestamp.seconds < $success.metadata.event_timestamp.seconds
 
  $success.metadata.event_type = "USER_LOGIN"
  $success.metadata.vendor_name = "Microsoft"
  $success.target.user.userid = $target_user
  $success.principal.hostname = $hostname
  $success.security_result.action = "ALLOW"
  $success.metadata.product_event_type = "4624"
  $user.graph.entity.user.userid = $target_user
  $user.graph.metadata.entity_type = "USER"
  $user.graph.metadata.source_type = "ENTITY_CONTEXT"
  any $user.graph.relations.entity.group.group_display_name = "Domain Admins"

  $asset.graph.entity.asset.hostname = $hostname
  $asset.graph.metadata.entity_type = "ASSET"
  $asset.graph.metadata.source_type = "ENTITY_CONTEXT"
  any $asset.graph.relations.entity.group.group_display_name = "Domain Controllers"
 
match:
  $target_user, $hostname over 15m
condition:
  #fail > 4 and $success and $user and $asset

파생된 컨텍스트 보강

Google SecOps는 조직의 이벤트 데이터에서 모든 네임스페이스에 걸쳐 각 항목에 대한 동적이고 이벤트 기반 추론 데이터를 생성합니다. 별칭 정보, 내부 보강 프로세스의 데이터, 보안 이벤트 데이터를 사용하여 관계 (예: assetIP address와 연결됨)를 설정합니다.

이 프로세스는 유용한 컨텍스트를 추가하여 엔티티 프로필을 개선합니다. 예를 들면 다음과 같습니다.

  • 항목 entity.file.sha256~file (hash)
  • (principal or target).ip_geo_artifact.location.country_or_region~network (geolocation)개 항목

Google SecOps는 수집된 활동의 여러 지표를 분석하여 컨텍스트 정보로 이벤트를 보강합니다. 중요한 보강 기능을 실행하여 예를 들어 발생률 통계와 같은 항목 희소성 측정항목과 first-seen-timelast-seen-time와 같은 시간 측정항목을 생성합니다.

발생률 통계

ECG 파이프라인은 기존 데이터와 수신 데이터를 분석하여 발생률 측정항목을 파생 컨텍스트 필드로 계산하고 저장합니다. 이러한 측정항목은 환경 내에서 domain, file hash, IP address과 같은 항목의 숫자 '인기도' 값을 나타냅니다. 인기 있는 항목은 일반적으로 위험이 적으므로 이를 통해 드물거나 비정상적인 활동을 파악할 수 있습니다.

Google SecOps는 이러한 통계를 정기적으로 업데이트하고 별도의 항목 컨텍스트에 저장합니다. 감지 엔진은 이러한 값을 사용할 수 있으며 UDM 쿼리 구문을 사용하여 검색할 수 있습니다. 하지만 Console에는 이러한 값이 다른 항목 세부정보와 함께 표시되지 않습니다.

감지 엔진 규칙을 만들 때 다음 필드를 사용할 수 있습니다.

항목 유형 UDM 필드
도메인 entity.domain.prevalence.day_count
entity.domain.prevalence.day_max
entity.domain.prevalence.day_max_sub_domains
entity.domain.prevalence.rolling_max
entity.domain.prevalence.rolling_max_sub_domains
파일(해시) entity.file.prevalence.day_count
entity.file.prevalence.day_max
entity.file.prevalence.rolling_max
IP 주소 entity.artifact.prevalence.day_count
entity.artifact.prevalence.day_max
entity.artifact.prevalence.rolling_max

Google SecOps는 다음과 같이 day_maxrolling_max 값을 다르게 계산합니다.

  • day_max는 하루 동안 아티팩트의 최대 발생률 점수를 나타냅니다(하루는 오전 12:00:00~오후 11:59:59(UTC)로 정의됨).
  • rolling_max는 이전 10일 동안의 아티팩트에서 일일 최대 발생률 점수 (예: day_max)를 나타냅니다.
  • day_countrolling_max를 계산하는 데 사용되며 값은 항상 10입니다.

domain에 대해 이러한 값을 계산할 때 day_maxday_max_sub_domains (및 rolling_maxrolling_max_sub_domains)의 차이는 다음과 같습니다.

  • rolling_maxday_max는 지정된 도메인에 액세스하는 일일 순 내부 IP 주소 수를 나타냅니다 (하위 도메인 제외).
  • rolling_max_sub_domainsday_max_sub_domains는 지정된 도메인 (하위 도메인 포함)에 액세스하는 순 내부 IP 주소의 수를 나타냅니다.

Google SecOps는 새로 수집된 항목 데이터를 사용하여 발생률 통계를 계산합니다. Google SecOps는 이전에 수집된 데이터에 대해 소급해서 계산을 수행하지 않습니다. Google SecOps에서 통계를 계산하고 저장하는 데 약 36시간이 걸립니다.

ECG 파이프라인에서는 이러한 UDM 필드를 사용하여 관련 문맥 데이터를 규칙 또는 검색에 조인해야 합니다. ECG 관련 데이터를 모두 UDM 이벤트 데이터에 명시적으로 조인해야 합니다.

예를 들어 심전도의 prevalence 데이터를 사용하여 보안 로그에서 '드문' 도메인과의 연결을 확인할 수 있습니다.

    $dns.metadata.event_type = "NETWORK_DNS"
    $dns.network.dns.questions.name != ""
    $dns.network.dns.questions.name = $domain
    $prevalence.graph.metadata.entity_type = "DOMAIN_NAME"
    $prevalence.graph.metadata.source_type = "DERIVED_CONTEXT"
    $prevalence.graph.entity.hostname = $domain
    $prevalence.graph.entity.domain.prevalence.day_count = 10
    $prevalence.graph.entity.domain.prevalence.rolling_max > 0
    $prevalence.graph.entity.domain.prevalence.rolling_max <= 3

  match:
    $domain over 5m
  condition:
    $dns and $prevalence

항목의 최초 발견 시간 및 최근 발견 시간

Google SecOps는 수신 데이터를 분석하여 다음 중요 필드로 항목 컨텍스트 레코드를 보강합니다.

  • first-seen-time: 항목이 환경에 처음 표시된 날짜와 시간입니다.
  • last-seen-time: 가장 최근 관측의 날짜와 시간입니다.

이러한 파생 필드를 사용하면 domain, file hash, asset, user 또는 IP address 항목 전반에서 활동을 상호 연관시킬 수 있습니다.

이러한 값은 다음 UDM 필드에 저장됩니다.

항목 유형 UDM 필드
도메인 entity.domain.first_seen_time
entity.domain.last_seen_time
파일(해시) entity.file.first_seen_time
entity.file.last_seen_time
IP 주소 entity.artifact.first_seen_time
entity.artifact.last_seen_time
확장 소재 entity.asset.first_seen_time
사용자 entity.user.first_seen_time

최초 발견 시간 및 최근 발견 시간 계산 예외:

  • assetuser 항목의 경우 Google SecOps는 first_seen_time 필드만 채우고 last_seen_time 필드는 채우지 않습니다.
  • Google SecOps에서는 개별 네임스페이스 내의 각 항목에 대한 통계를 계산하지 않습니다.
  • Google SecOps는 이러한 통계를 BigQuery의 Google SecOps events 스키마로 내보내지 않습니다.
  • Google SecOps는 group 또는 resource과 같은 다른 항목 유형에 대해서는 이러한 값을 계산하지 않습니다.

전역 컨텍스트 보강

이러한 소스에는 내부 및 서드 파티 글로벌 소스의 외부 위협 인텔리전스 및 평판 데이터가 포함됩니다.

Google Threat Intelligence 데이터 수집

Google SecOps는 Google 위협 인텔리전스 (GTI) 데이터 소스에서 데이터를 수집하여 환경에서 활동을 조사하기 위한 컨텍스트 정보를 제공합니다.

다음 데이터 소스를 쿼리합니다.

  • GTI Tor 종료 노드: 알려진 Tor 종료 노드인 IP 주소입니다.
  • GTI Benign 바이너리: 원래 운영체제 배포의 일부이거나 공식 운영체제 패치에 의해 업데이트된 파일입니다. 자급자족식 공격에서 흔히 사용되는 활동을 통해 공격자가 악용한 일부 공식 운영체제 바이너리(예: 초기 진입 벡터에 중점을 둔 바이너리)는 이 데이터 소스에서 제외됩니다.
  • GTI 원격 액세스 도구: 악의적인 행위자가 자주 사용하는 파일입니다. 이러한 도구는 일반적으로 합법적인 애플리케이션이지만 때때로 손상된 시스템에 원격으로 연결하기 위해 악용되는 경우가 있습니다.

컨텍스트 데이터는 전역적으로 항목으로 저장됩니다. 감지 엔진 규칙을 사용하여 데이터를 쿼리할 수 있습니다. 다음 UDM 필드와 값을 규칙에 포함하여 이러한 전역 항목을 쿼리합니다.

  • graph.metadata.vendor_name = Google Threat Intelligence
  • graph.metadata.product_name = GTI Feed

시간 표시 Google Threat Intelligence 데이터 소스와 시간 표시가 없는 Google Threat Intelligence 데이터 소스

Google 위협 인텔리전스 데이터 소스에는 시간 표시가 있는 유형과 시간 표시가 없는 유형이 있습니다.

시간이 지정된 데이터 소스의 각 항목에는 연결된 기간이 있습니다. 예를 들어 Google SecOps에서 1일 차에 감지를 생성하는 경우 향후 RetroHunt 중에 1일 차에 대해 동일한 감지를 생성해야 합니다.

시간 표시가 없는 데이터 소스는 최신 데이터 세트만 고려하면 되므로 연결된 기간이 없습니다. 이러한 데이터 소스는 일반적으로 파일 해시와 같이 변경되지 않을 것으로 예상되는 데이터에 사용됩니다. Google SecOps에서 1일 차에 감지를 생성하지 않은 경우 새 항목이 시간 제한이 없는 데이터 소스에 추가되면 2일 차에 RetroHunt 중에 1일 차에 대한 감지가 생성될 수 있습니다.

Tor 종료 노드 IP 주소에 관한 데이터

Google SecOps는 알려진 Tor 종료 노드인 IP 주소를 수집하고 저장합니다. Tor 종료 노드는 트래픽이 Tor 네트워크를 나가는 지점입니다. 이 데이터는 시간이 지정됩니다.

Google SecOps는 이 데이터 소스에서 수집된 정보를 다음 UDM 필드에 저장합니다.

UDM 필드 설명
<variable_name>.graph.metadata.vendor_name Google Threat Intelligence 값을 저장합니다.
<variable_name>.graph.metadata.product_name GTI Feed 값을 저장합니다.
<variable_name>.graph.metadata.threat.threat_feed_name Tor Exit Nodes 값을 저장합니다.
<variable_name>.graph.entity.artifact.ip GTI 데이터 소스에서 수집된 IP 주소를 저장합니다.
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "GTI Feed"
graph.metadata.threat.threat_feed_name = "Tor Exit Nodes"

양성 운영체제 파일에 관한 데이터

Google SecOps는 GTI Benign 바이너리 데이터 소스에서 파일 해시를 수집하고 저장합니다. Google SecOps는 이 데이터 소스에서 수집된 정보를 다음 UDM 필드에 저장합니다. 양성 바이너리 데이터는 시간이 표시되지 않습니다.

UDM 필드 설명
<variable_name>.graph.metadata.vendor_name Google Threat Intelligence 값을 저장합니다.
<variable_name>.graph.metadata.product_name GTI Feed 값을 저장합니다.
<variable_name>.graph.metadata.threat.threat_feed_name Benign Binaries 값을 저장합니다.
<variable_name>.graph.entity.file.sha256 파일의 SHA256 해시 값을 저장합니다.
<variable_name>.graph.entity.file.sha1 파일의 SHA-1 해시 값을 저장합니다.
<variable_name>.graph.entity.file.md5 파일의 MD5 해시 값을 저장합니다.
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "GTI Feed"
graph.metadata.threat.threat_feed_name = "Benign Binaries"

원격 액세스 도구에 관한 데이터

원격 액세스 도구에는 악의적인 행위자가 자주 사용한 VNC 클라이언트와 같은 알려진 원격 액세스 도구의 파일 해시가 포함됩니다. 이러한 도구는 일반적으로 합법적인 애플리케이션이지만 때때로 손상된 시스템에 원격으로 연결하기 위해 악용되는 경우가 있습니다. Google SecOps는 이 데이터 소스에서 수집된 정보를 다음 UDM 필드에 저장합니다. 원격 액세스 도구 데이터는 시간이 표시되지 않습니다.

UDM 필드 설명
<variable_name>.graph.metadata.vendor_name Google Threat Intelligence 값을 저장합니다.
<variable_name>.graph.metadata.product_name GTI Feed 값을 저장합니다.
<variable_name>.graph.metadata.threat.threat_feed_name Remote Access Tools 값을 저장합니다.
<variable_name>.graph.entity.file.sha256 파일의 SHA256 해시 값을 저장합니다.
<variable_name>.graph.entity.file.sha1 파일의 SHA-1 해시 값을 저장합니다.
<variable_name>.graph.entity.file.md5 파일의 MD5 해시 값을 저장합니다.
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "GTI Feed"
graph.metadata.threat.threat_feed_name = "Remote Access Tools"

세이프 브라우징 위협 목록에서 정보로 항목 보강

Google SecOps는 파일 해시와 관련된 세이프 브라우징의 데이터를 수집합니다. Google SecOps는 각 파일의 데이터를 항목으로 저장하고 파일에 대한 추가적인 정보를 제공합니다. 이 항목 컨텍스트 데이터를 쿼리하는 감지 엔진 규칙을 만들어 컨텍스트 인식 분석을 빌드할 수 있습니다.

Google SecOps는 다음 정보를 항목 컨텍스트 레코드와 함께 저장합니다.

UDM 필드 설명
entity.metadata.product_entity_id 항목에 대한 고유 식별자입니다.
entity.metadata.entity_type 이 값은 FILE이며, 항목이 파일을 설명함을 나타냅니다.
entity.metadata.collected_timestamp 엔티티가 관찰되거나 이벤트가 발생한 날짜와 시간입니다.
entity.metadata.interval 이 데이터가 유효한 시작 시간과 종료 시간을 저장합니다. 위협 목록 콘텐츠는 시간이 지나면서 변경되므로 start_timeend_time은 항목에 대한 데이터가 유효한 시간 간격을 반영합니다. 예를 들어 start_timeend_time 사이에 파일 해시가 악의적이거나 의심스러운 것으로 관찰되었습니다.
entity.metadata.threat.category Google SecOps SecurityCategory이 다음 값 중 하나 이상으로 설정됩니다.
  • SOFTWARE_MALICIOUS: 위협이 멀웨어와 관련이 있음을 나타냅니다.
  • SOFTWARE_PUA: 위협이 원치 않는 소프트웨어와 관련이 있음을 나타냅니다.
entity.metadata.threat.severity Google SecOps ProductSeverity입니다. 값이 CRITICAL이면 아티팩트가 악의적인 것으로 보임을 나타냅니다. 값이 지정되지 않으면 아티팩트가 악의적임을 나타내는 충분한 신뢰도가 없습니다.
entity.metadata.product_name Google Safe Browsing 값을 저장합니다.
entity.file.sha256 파일의 SHA256 해시 값입니다.

규칙 예시

events:
    // find a process launch event, match on hostname
    $execution.metadata.event_type = "PROCESS_LAUNCH"
    $execution.target.process.file.sha256 != ""
    $execution.principal.hostname = $hostname

    // join execution event with Safe Browsing graph
    $sb.graph.entity.file.sha256 = $execution.target.process.file.sha256

    // look for files deemed malicious
    $sb.graph.metadata.entity_type = "FILE"
    $sb.graph.metadata.threat.severity = "CRITICAL"
    $sb.graph.metadata.product_name = "Google Safe Browsing"

  match:
    $hostname over 5m

  condition:
    $execution and $sb

WHOIS 데이터로 항목 보강

Google SecOps는 시간이 지정된 데이터와 시간이 지정되지 않은 데이터를 사용하여 중요한 기능인 일일 WHOIS 데이터 보강을 실행합니다.

기기 데이터 수집 중에 Google SecOps는 도메인을 WHOIS 데이터와 비교하여 평가합니다. 도메인이 일치하면 Google SecOps에서 관련 WHOIS 데이터를 도메인의 항목 레코드 내에 저장합니다. entity.metadata.entity_type = DOMAIN_NAME가 있는 각 항목에 대해 Google SecOps는 WHOIS 정보로 레코드를 보강합니다.

Google SecOps는 다음 필드에 보강된 WHOIS 데이터로 항목 레코드를 채웁니다.

  • entity.domain.admin.attribute.labels
  • entity.domain.audit_update_time
  • entity.domain.billing.attribute.labels
  • entity.domain.billing.office_address.country_or_region
  • entity.domain.contact_email
  • entity.domain.creation_time
  • entity.domain.expiration_time
  • entity.domain.iana_registrar_id
  • entity.domain.name_server
  • entity.domain.private_registration
  • entity.domain.registrant.company_name
  • entity.domain.registrant.office_address.state
  • entity.domain.registrant.office_address.country_or_region
  • entity.domain.registrant.email_addresses
  • entity.domain.registrant.user_display_name
  • entity.domain.registrar
  • entity.domain.registry_data_raw_text
  • entity.domain.status
  • entity.domain.tech.attribute.labels
  • entity.domain.update_time
  • entity.domain.whois_record_raw_text
  • entity.domain.whois_server
  • entity.domain.zone

Google SecOps는 global context WHOIS 레코드의 registrant, creation, expiration time 데이터를 사용하여 domain 항목 (entity.metadata.entity_type = "DOMAIN_NAME")을 보강합니다.

이러한 필드에 대한 설명은 통합 데이터 모델 필드 목록 문서를 참고하세요.

검색 예시

graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "WHOISXMLAPI Simple Whois"
graph.entity.domain.registry_data_raw_text != b""

권장사항: 전역 컨텍스트가 풍부한 데이터 소스 식별

규칙 성능을 개선하려면 전역 컨텍스트 보강 소스의 데이터를 사용하는 규칙에 필터를 포함하세요. 이 필터는 특정 보강 유형 또는 소스를 식별해야 합니다.

다음 필터 매개변수는 보강 유형 또는 소스를 식별합니다. entity_type, product_name, vendor_name

예를 들어 WHOIS 데이터를 조인하는 규칙의 events 섹션에 다음 필터 필드를 포함합니다.

$enrichment.graph.metadata.entity_type = "DOMAIN_NAME"
$enrichment.graph.metadata.product_name = "WHOISXMLAPI Simple Whois"
$enrichment.graph.metadata.vendor_name = "WHOIS"

ECG 권장사항

문맥적으로 보강된 데이터를 사용할 때는 다음과 같은 ECG 권장사항을 고려하세요.

  • 항목 데이터에 간격을 추가하지 마세요. 대신 심전도 파이프라인에서 간격을 만들도록 합니다. 별도로 지정하지 않는 한 Google SecOps는 중복 삭제 중에 간격을 생성합니다.
  • 간격을 지정하면 Google SecOps에서 동일한 이벤트만 중복 삭제하고 최신 항목을 보관합니다.
  • 실시간 규칙 및 RetroHunt가 예상대로 작동하게 하려면 항목을 최소한 하루에 한 번 이상 수집해야 합니다.
  • 항목을 매일 수집하지 않고 2일 이상에 한 번만 수집하면 실시간 규칙이 예상대로 작동할 수 있습니다. 하지만 레트로헌트에서는 일부 이벤트 컨텍스트가 손실될 수 있습니다.
  • 동일한 항목을 하루에 두 번 이상 수집하면 Google SecOps에서 단일 항목으로 중복 삭제합니다.
  • 이벤트 데이터가 하루 동안 누락되면 Google SecOps에서 실시간 규칙이 올바르게 작동하도록 전날 데이터를 일시적으로 사용합니다.

일반적인 Google SecOps 서비스 한도에 대한 자세한 내용은 서비스 한도를 참고하세요.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.