일치 섹션 구문

다음에서 지원:

YARA-L 2.0에서 match 섹션은 멀티 이벤트 상관관계 메커니즘을 제공합니다. 특정 시간 경계 내에서 사용자, IP 주소, 파일 해시와 같은 공통 속성을 연결하여 이벤트를 단일 감지로 그룹화하는 로직을 정의합니다.

다음 사용 사례에 match 섹션을 사용합니다.

  • 규칙 내에서 두 개 이상의 고유한 이벤트를 연결합니다.
  • 검색 및 대시보드에서 데이터를 집계합니다(예: 특정 기간 동안 실패한 로그인 시도 횟수 계산).

상관관계 기준 정의

다음과 같이 지정하여 이 상관관계의 기준을 정의하는 데 사용합니다.

  • 그룹화 필드 (키): 일치를 트리거하려면 이벤트 (events 섹션에 정의됨) 전반에서 동일한 값을 가져야 하는 변수 (예: $user 또는 $ip)입니다.

  • 시간 제약 조건: 규칙 또는 집계를 충족하기 위해 그룹화된 이벤트가 발생해야 하는 기간 기간입니다. 규칙에서는 감지 기간을 정의하고 검색 및 대시보드에서는 집계 또는 상관관계 기간을 정의합니다.

기능 요구사항 비교

다음 표에서는 규칙과 검색 및 대시보드를 비교하여 설명합니다.

기능 규칙 요구사항 검색 및 대시보드 지원
변수 유형 events 섹션에 정의된 자리표시자를 사용해야 합니다. 자리표시자와 직접 UDM 필드를 모두 지원합니다.
기간 감지 경계를 정의합니다. 집계 또는 상관관계 버킷을 정의합니다.
구문
  • over <number><m/h/d> (예: 10m, 2h, 1d)
  • by <number><m/h/d>
  • over <number><m/h/d> [before|after] $pivot
  • over <number><m/h/d>
  • by <number><m/h/d>
한도 최소: 1m / 최대: 48h 최소: 1m / 최대: 48h

지원되는 기간 유형

YARA-L 2.0은 다양한 윈도잉 동작을 사용하여 시간이 분할되는 방식과 이벤트가 그룹화되는 방식을 결정합니다. 지원되는 다음 기간 중 하나를 사용하여 지정된 시간 단위로 match 섹션의 이벤트 필드와 자리표시자를 그룹화할 수 있습니다.

YARA-L 2.0 지원 기간 유형에 대한 자세한 내용은 YARA-L 2.0 기간 로직을 참조하세요.

시간 경계 이해

match 섹션은 그룹화 키를 기준으로 이벤트를 그룹으로 분할합니다. 지정된 기간은 각 그룹의 시간 경계를 정의합니다.

  • 포함: 기간 내의 이벤트만 해당 일치 항목의 condition 평가에 전달됩니다.
  • 제외: 기간 외의 이벤트는 특정 일치 그룹에서 무시되므로 관련 없는 이벤트가 거짓양성을 트리거하지 않습니다.

match 섹션의 값이 0임

Google SecOps는 match 섹션에 사용된 모든 자리표시자의 0 값 (문자열의 경우 "", 숫자의 경우 0, 불리언의 경우 false, 열거 유형의 경우 위치 0의 값)을 암시적으로 필터링합니다.

예시: 0 값 필터링

다음 예시는 0 값을 필터링하는 쿼리를 보여줍니다.

rule ZeroValuePlaceholderExample {

events:
  // Because $host is used in the match section, the query behaves
  // as if the following predicate was added to the events section:
  // $host != ""
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e
}

그러나 자리표시자가 함수에 할당된 경우 쿼리는 match 섹션에서 사용되는 자리표시자의 0값을 암시적으로 필터링하지 않습니다.

0값의 암시적 필터링을 사용 중지하려면 옵션 섹션에서 allow_zero_values 옵션을 사용하면 됩니다. allow_zero_values 옵션은 규칙에서만 사용할 수 있습니다.

예시: 0 값 허용

다음 예시에서는 match 섹션에 사용된 자리표시자의 0값을 암시적으로 필터링하지 않는 쿼리를 보여줍니다.

rule AllowZeroValuesExample {

events:
  // Because allow_zero_values is set to true, there is no implicit filtering
  // of zero values for $host.
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e

options:
  allow_zero_values = true
}

다음 단계

다음 리소스를 살펴보고 YARA-L 로직을 계속 진행하거나 고급 쿼리 함수를 자세히 알아보세요.

문법 및 로직

참조 및 예시

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