더 이상 사용되지 않는 기능¶
더 이상 사용되지 않는 특수 키워드와 count 집계는 Hayabusa에서 여전히 지원되지만 앞으로는 룰 내부에서 사용되지 않을 예정입니다.
더 이상 사용되지 않는 특수 키워드¶
현재 다음 특수 키워드를 지정할 수 있습니다:
value: 문자열로 매칭합니다(와일드카드와 파이프도 지정할 수 있습니다).min_length: 문자 수가 지정한 숫자 이상일 때 매칭합니다.regexes: 이 필드에 지정한 파일 안의 정규 표현식 중 하나가 매칭되면 매칭됩니다.allowlist: 이 필드에 지정한 파일 안의 정규 표현식 목록에서 매칭이 발견되면 룰을 건너뜁니다.
아래 예시에서, 다음이 모두 참이면 룰이 매칭됩니다:
ServiceName이malicious-service라고 불리거나./rules/config/regex/detectlist_suspicous_services.txt의 정규 표현식을 포함하는 경우.ImagePath가 최소 1000자인 경우.ImagePath가allowlist에서 매칭되지 않는 경우.
detection:
selection:
Channel: System
EventID: 7045
ServiceName:
- value: malicious-service
- regexes: ./rules/config/regex/detectlist_suspicous_services.txt
ImagePath:
min_length: 1000
allowlist: ./rules/config/regex/allowlist_legitimate_services.txt
condition: selection
regexes 및 allowlist 키워드 샘플 파일¶
Hayabusa에는 ./rules/hayabusa/default/alerts/System/7045_CreateOrModiftySystemProcess-WindowsService_MaliciousServiceInstalled.yml 파일에 사용되는 두 개의 내장 정규 표현식 파일이 있었습니다:
./rules/config/regex/detectlist_suspicous_services.txt: 의심스러운 서비스 이름을 탐지합니다./rules/config/regex/allowlist_legitimate_services.txt: 정상적인 서비스를 허용합니다
regexes 및 allowlist에 정의된 파일은 룰 파일 자체를 변경하지 않고도 편집하여 이를 참조하는 모든 룰의 동작을 변경할 수 있습니다.
직접 만든 다른 detectlist 및 allowlist 텍스트 파일을 사용할 수도 있습니다.
더 이상 사용되지 않는 집계 조건 (count 룰)¶
이는 Hayabusa에서 여전히 지원되지만 앞으로 Sigma 상관관계 룰로 대체될 예정입니다.
기본 사항¶
위에서 설명한 condition 키워드는 AND 및 OR 로직을 구현할 뿐만 아니라 이벤트를 카운트하거나 "집계"할 수도 있습니다.
이 기능은 "집계 조건"이라고 하며 조건을 파이프로 연결하여 지정합니다.
아래의 패스워드 스프레이 탐지 예시에서는, 5분의 시간 범위 내에 하나의 소스 IpAddress로부터 5개 이상의 TargetUserName 값이 있는지 판단하기 위해 조건식이 사용됩니다.
detection:
selection:
Channel: Security
EventID: 4648
condition: selection | count(TargetUserName) by IpAddress > 5
timeframe: 5m
집계 조건은 다음 형식으로 정의할 수 있습니다:
count() {operator} {number}: 파이프 앞의 첫 번째 조건과 매칭되는 로그 이벤트에 대해, 매칭된 로그 수가{operator}와{number}로 지정된 조건식을 충족하면 조건이 매칭됩니다.
{operator}는 다음 중 하나가 될 수 있습니다:
==: 값이 지정된 값과 같으면 조건에 매칭되는 것으로 처리됩니다.>=: 값이 지정된 값 이상이면 조건이 충족된 것으로 간주됩니다.>: 값이 지정된 값보다 크면 조건이 충족된 것으로 간주됩니다.<=: 값이 지정된 값 이하이면 조건이 충족된 것으로 간주됩니다.<: 값이 지정된 값보다 작으면 조건이 충족된 것으로 처리됩니다.
{number}는 숫자여야 합니다.
timeframe은 다음과 같이 정의할 수 있습니다:
15s: 15초30m: 30분12h: 12시간7d: 7일3M: 3개월
집계 조건의 네 가지 패턴¶
- count 인수나
by키워드가 없음. 예시:selection | count() > 10selection이 시간 범위 내에 10회를 초과하여 매칭되면 조건이 매칭됩니다. 이는group-by필드를 사용하지 않는 Event Count 상관관계 룰로 대체됩니다. - count 인수는 없지만
by키워드가 있음. 예시:selection | count() by IpAddress > 10동일한
IpAddress에 대해selection이 10회를 초과하여 참이어야 합니다. 이 #2 룰은 #1 룰보다 더 일반적입니다. 그룹화할 여러 필드를 지정할 수도 있습니다. 예:by IpAddress, Computer이는group-by필드를 사용하는 Event Count 상관관계 룰로 대체됩니다. - count 인수는 있지만
by키워드가 없음. 예시:selection | count(TargetUserName) > 10selection이 매칭되고TargetUserName이 시간 범위 내에 10회를 초과하여 다른 경우, 조건이 매칭됩니다. 이는group-by필드를 사용하지 않는 Value Count 상관관계 룰로 대체됩니다. - count 인수와
by키워드가 모두 있음. 예시:selection | count(Users) by IpAddress > 10동일한
IpAddress에 대해, 조건이 매칭되려면 10개를 초과하는 다른TargetUserName이 있어야 합니다. 이 #4 룰은 #3 룰보다 더 일반적입니다. 이는group-by필드를 사용하는 Value Count 상관관계 룰로 대체됩니다.
패턴 1 예시¶
이는 가장 기본적인 패턴입니다: count() {operator} {number}. 아래 룰은 selection이 3회 이상 발생하면 매칭됩니다.
패턴 2 예시¶
count() by {eventkey} {operator} {number}: 파이프 앞의 condition과 매칭되는 로그 이벤트는 동일한 {eventkey}로 그룹화됩니다. 각 그룹화에 대해 매칭된 이벤트 수가 {operator}와 {number}로 지정된 조건을 충족하면 조건이 매칭됩니다.
패턴 3 예시¶
count({eventkey}) {operator} {number}: 조건 파이프 앞의 조건과 매칭되는 로그 이벤트에 {eventkey}의 다른 값이 몇 개 존재하는지 카운트합니다. 그 수가 {operator}와 {number}로 지정된 조건식을 충족하면 조건이 충족된 것으로 간주됩니다.
패턴 4 예시¶
count({eventkey_1}) by {eventkey_2} {operator} {number}: 조건 파이프 앞의 조건과 매칭되는 로그는 동일한 {eventkey_2}로 그룹화되고, 각 그룹에서 {eventkey_1}의 다른 값의 수가 카운트됩니다. 각 그룹화에 대해 카운트된 값이 {operator}와 {number}로 지정된 조건식을 충족하면 조건이 매칭됩니다.
Count 룰 출력¶
count 룰의 세부 출력은 고정되어 있으며 [condition]에 원본 count 조건을 출력한 다음 [result]에 기록된 eventkey를 출력합니다.
아래 예시에서는, 무차별 대입 공격을 받던 TargetUserName 사용자 이름 목록과 그에 이어 소스 IpAddress가 출력됩니다:
[condition] count(TargetUserName) by IpAddress >= 5 in timeframe [result] count:41 TargetUserName:jorchilles/jlake/cspizor/lpesce/bgalbraith/jkulikowski/baker/eskoudis/dpendolino/sarmstrong/lschifano/drook/rbowes/ebooth/melliott/econrad/sanson/dmashburn/bking/mdouglas/cragoso/psmith/bhostetler/zmathis/thessman/kperryman/cmoody/cdavis/cfleener/gsalinas/wstrzelec/jwright/edygert/ssims/jleytevidal/celgee/Administrator/mtoussain/smisenar/tbennett/bgreenwood IpAddress:10.10.2.22 timeframe:5m
알림의 타임스탬프는 탐지된 첫 번째 이벤트의 시간이 됩니다.



