일치 섹션 구문
YARA-L 2.0에서 match 섹션은 다중 이벤트 상관관계를 위한 메커니즘을 제공합니다. 이 섹션은 특정 시간 경계 내에서 사용자, IP 주소 또는 파일 해시와 같은 공통 속성을 연결하여 이벤트를 단일 감지로 그룹화하는 로직을 정의합니다.
다음과 같은 사용 사례에 match 섹션을 사용합니다.
- 규칙 내에서 두 개 이상의 개별 이벤트를 연결합니다.
- 특정 기간 동안 실패한 로그인 시도 횟수와 같이 검색 및 대시보드에서 데이터를 집계합니다.
상관관계 기준 정의
다음과 같이 지정하여 이 상관관계의 기준을 정의하는 데 사용합니다.
그룹화 필드 (키): 일치를 트리거하려면 이벤트 (
events섹션에 정의됨) 전반에서 동일한 값을 가져야 하는 변수 (예:$user또는$ip).시간 제약조건: 그룹화된 이벤트가 규칙 또는 집계를 충족하기 위해 발생해야 하는 기간 창. 규칙에서 이는 감지 기간을 정의합니다. 검색 및 대시보드에서 이는 집계 또는 상관관계 기간을 정의합니다.
기능 요구사항 비교
다음 표에는 규칙과 검색 및 대시보드의 비교가 자세히 나와 있습니다.
| 기능 | 규칙 요구사항 | 검색 및 대시보드 지원 |
|---|---|---|
| 변수 유형 | events 섹션에 정의된 자리표시자를 사용해야 합니다. |
자리표시자와 직접 UDM 필드를 모두 지원합니다. |
| 기간 | 감지 경계를 정의합니다. | 집계 또는 상관관계 버킷을 정의합니다. |
| 구문 | over <number><m/h/d> (예: 10m, 2h, 1d) |
over <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 값
예: 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 전문가에게 문의하여 답변을 받으세요.