더 복잡한 논리에 중첩된 if 문 사용
다음에서 지원:
Google secops
SIEM
outcome 및 events 섹션 모두에서 if 문을 사용할 수 있습니다. 다른 if 문의 then else 절 내에서 if 문을 사용할 수도 있습니다. 이 기능을 사용하면 쿼리에 더 복잡한 로직을 도입할 수 있습니다.
이 구문은 규칙, 검색, 대시보드에서 지원됩니다.
구문
if(BOOL_CLAUSE, THEN_CLAUSE, ELSE_CLAUSE)
중첩된 if 예
검색 예시: 결과 섹션
이 예시에서는 principal.hostname에 따라 결과 점수를 할당합니다.
$nested_if.principal.hostname != ""
outcome:
$score = max(
if($nested_if.principal.hostname = /win-adfs/,
5,
if($nested_if.principal.hostname = /server/,
3,
if($nested_if.principal.hostname = /win-atomic/,
1,
0))))
검색 예: 이벤트 섹션
이 예시에서는 비어 있지 않은 경우 자리표시자 IP를 target.ip 또는 principal.ip에 할당합니다. IP 값이 누락된 경우 no_valid_ip이 할당됩니다.
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$ip = if($e.target.ip != "",
$e.target.ip,
if($e.principal.ip != "",
$e.principal.ip,
"no_valid_ip"))
match:
$ip
규칙 예: outcome 섹션에 중첩된 if
rule nested_if_outcome_example {
meta:
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$e.principal.ip = $ip
match:
$ip over 5m
outcome:
$score = max(
if($e.principal.hostname = /win-adfs/,
5,
if($e.principal.hostname = /server/,
3,
if($e.principal.hostname = /win-atomic/,
1,
0))))
condition:
$e
}
규칙 예: events 섹션에 중첩된 if
rule nested_if_events_example {
meta:
events:
$e.metadata.event_type = "NETWORK_CONNECTION"
$ip = if($e.target.ip != "",
$e.target.ip,
if($e.principal.ip != "",
$e.principal.ip,
"no_valid_ip"))
match:
$ip over 5m
condition:
$e
}
알려진 제한 사항
if() 문은 YARA-L 2.0의 함수이며 함수 깊이 제한인 20이 적용됩니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.