Working with detection rules
출처: 문서
본문
탐지 규칙 다루기
Detection rules 창에는 탐지 생성에 사용되는 모든 보안 규칙이 나열되며, 목록을 필터링하고 각 규칙의 세부 정보를 볼 수 있는 옵션이 제공돼요. 추가 옵션을 사용하면 규칙을 가져오거나, Sigma 규칙을 복제한 다음 수정하는 방식으로 새 규칙을 만들 수도 있어요. 이 섹션에서는 Rules 페이지를 탐색하는 방법을 다루고, 수행할 수 있는 작업에 대한 설명을 제공해요.
{: width="90%" }
규칙 보기 및 필터링하기
Detection rules 페이지를 열면 모든 규칙이 테이블에 나열돼요. 검색 창에 전체 또는 일부 이름을 입력하고 키보드에서 Return/Enter를 눌러 특정 규칙을 검색할 수 있어요. 그러면 목록이 필터링되어 일치하는 결과가 표시돼요.
또는 Rule type, Rule severity, Source 드롭다운 목록을 사용해 알림을 세부적으로 탐색하고 원하는 결과로 필터링할 수 있어요. 각 목록에서 여러 옵션을 선택할 수 있고, 세 가지를 모두 조합해서 결과 범위를 좁힐 수도 있어요.
{: width="40%" }
규칙 세부 정보
규칙 세부 정보를 보려면 목록의 Rule name 열에서 해당 규칙을 선택하세요. 그러면 규칙 세부 정보 창이 열려요.
{: width="50%" }
Visual 보기에서는 규칙 세부 정보가 필드 형태로 정리되어 있고 링크가 활성화되어 있어요. 규칙을 YAML 파일 형식으로 표시하려면 YAML을 선택하세요.
{: width="50%" }
- 규칙 세부 정보는 Sigma 규칙 사양에 따라 YAML 파일 형식으로 구성돼요.
- 규칙을 복사하려면 규칙 오른쪽 위에 있는 복사 아이콘을 선택하세요. 새로운 사용자 지정 규칙을 빠르게 만들려면 규칙을 YAML 편집기에 붙여넣고 저장하기 전에 원하는 수정을 하면 돼요. 자세한 내용은 규칙 사용자 지정하기를 참고하세요.
탐지 규칙 만들기
Detection rules 페이지에서 규칙을 만드는 방법은 여러 가지가 있어요. 이 방법에는 사용자 지정 규칙을 직접 만들기, 규칙 가져오기, 기존 규칙을 복제해서 사용자 지정하기가 포함돼요. 다음 섹션에서 이 방법들을 자세히 설명해요.
사용자 지정 규칙
규칙 생성의 첫 번째 방법은 Visual Editor나 YAML Editor를 사용해 규칙을 완성하는 데 필요한 필드를 직접 채워 넣어 사용자 지정 규칙을 만드는 거예요. 이렇게 하려면 화면 오른쪽 위에서 Create detection rule을 선택하세요. 그러면 Create detection rule 창이 열려요.
규칙을 직접 만들기로 선택했다면, Sigma의 Rule Creation Guide를 참고해서 각 필드의 세부 사항에 대해 더 알아보세요. {: .tip }
Visual Editor
Create detection rule 창이 열리면 기본적으로 Visual Editor가 표시돼요. Visual Editor의 필수 필드는 Sigma 규칙 형식으로 작성된 YAML 파일에 있는 기본 필드와 대응돼요. 다음 단계의 설명에서는 이 대응 관계가 한눈에 명확하지 않을 수 있는 경우에 이를 짚어줘요.
-
Rule overview 섹션에서 규칙 이름, 설명(선택 사항), 규칙 작성자를 입력하세요. Rule name은 YAML 파일로 작성된 Sigma 규칙의 title에 해당해요. 다음 이미지는 필드가 채워진 예시를 보여줘요.
{: width="50%" } -
Details 섹션에서 데이터 소스의 로그 타입, 규칙 레벨, 규칙 상태를 입력하세요. Log type은
logsource필드(정확히는logsource: product필드)에 해당하고, 규칙 레벨과 규칙 상태는 각각level과status에 해당해요. Sigma 규칙의 레벨에는 informational, low, medium, high, critical이 있어요. 다음 이미지는 예시를 보여줘요.
{: width="40%" } -
Detection 섹션에서 탐지 대상이 될 로그 소스에 있는 필드와 그 값을 나타내는 키-값 쌍을 지정하세요. 이 키-값 쌍이 탐지를 정의해요. 키 값은 단일 값으로 표현할 수도 있고 여러 값을 담은 리스트로 표현할 수도 있어요.
간단한 키-값 쌍을 정의하려면 먼저 커서를 Selection_1 레이블에 놓고 키-값 쌍을 설명하는 selection 이름으로 바꾸세요. 다음으로 로그 소스에서 원하는 필드를 Key로 입력하고, Modifier 드롭다운 목록을 사용해 값을 어떻게 처리할지 정의하세요. 사용할 수 있는 수정자는 다음과 같아요:
contains– 값 양쪽에 와일드카드를 추가해서 필드 내 어느 위치에서든 값이 일치하게 해요.all– 리스트인 경우 OR 로직으로 값을 나누는 대신 로직이 AND로 바뀌어 모든 값과 일치하는지 찾아봐요.endswith– 필드 끝에 값이 나타날 때 일치한다는 뜻이에요.startswith– 필드 시작 부분에 값이 나타날 때 일치한다는 뜻이에요.
수정자를 선택한 다음 Value 라디오 버튼을 선택하고, 그 뒤에 있는 텍스트 필드에 키에 해당하는 값을 입력하세요.
Add map을 선택하면 두 번째 키-값 쌍을 매핑할 필드를 추가할 수 있어요. 이 단계의 앞부분 안내에 따라 키-값 쌍을 매핑하세요. 다음 이미지는 두 키-값 쌍에 대한 이 정의가 Create detection rule 창에서 어떻게 표시되는지 보여줘요.
{: width="50%" }이 정의가 YAML 파일에서 구성될 모습과 어떻게 비교되는지 보려면 다음 예시를 참고하세요:
detection: selection: selection_schtasks: Image|endswith: \schtasks.exe CommandLine|contains: '/Create '두 번째 selection을 추가하려면 첫 번째 selection 뒤에 있는 Add selection 바를 사용해 다른 키-값 쌍 매핑을 여세요. 이 selection에서는 값이 리스트로 제공돼요. 첫 번째 selection에서 설명한 것처럼 Selection_2 레이블을 selection 이름으로 바꾸고, 로그에서 가져온 필드 이름을 키로 입력한 다음 Modifier 드롭다운 목록에서 수정자를 선택하세요.
그런 다음 단일 값이 아니라 리스트를 사용해 키-값 쌍을 정의하려면 List 라디오 버튼을 선택하세요. 그러면 Upload file 버튼이 나타나고 리스트를 담을 수 있도록 텍스트 상자가 확장돼요.
기존에 있는 값 목록을 .csv 또는 .txt 형식으로 업로드할 수 있어요. Upload file을 선택하고 안내에 따라 파일 내용을 텍스트 필드로 업로드하세요. 대신 텍스트 필드에 직접 리스트를 작성할 수도 있어요. 다음 이미지는 값 목록을 포함하는 키-값 쌍 매핑이 어떻게 표시되는지 보여줘요.
{: width="50%" }앞의 두 selection이 모두 들어간 정의가 YAML 파일에서 구성될 모습과 어떻게 비교되는지 보려면 다음 예시를 참고하세요:
detection: selection: selection_schtasks: Image|endswith: \schtasks.exe CommandLine|contains: '/Create ' selection_rare: CommandLine|contains: - ' bypass ' - .DownloadString - .DownloadFile - FromBase64String - ' -w hidden ' - ' IEX' - ' -enc ' - ' -decode ' - '/c start /min ' - ' curl ' -
Condition 섹션에서 탐지 정의에 포함된 selection들의 조건을 지정하세요. 이 조건들이 정의된 selection을 탐지 규칙이 어떻게 처리하는지 결정해요. 최소 한 개의 selection이 필요해요. 앞의 예시의 경우, 두 selection인
selection_schtasks와selection_rare중 최소 하나를 Conditions 섹션에 추가해야 한다는 뜻이에요.Select 옆에 있는
+기호를 선택해 첫 번째 selection을 추가하세요.+기호를 다시 선택해 탐지 정의에서 selection을 더 추가하세요. 두 개의 selection이 조건으로 자리 잡으면 그 사이에 Boolean 연산자 AND가 나타나는데, 이는 탐지 규칙 쿼리에서 둘 다 사용된다는 것을 의미해요. 연산자 레이블을 선택하면 연산자 드롭다운 목록이 열리고,AND,OR,NOT옵션 중에서 고를 수 있어요. 다음 이미지는 이 옵션이 어떻게 표시되는지 보여줘요.
{: width="50%" } -
탐지 규칙의 선택적 필드를 지정하세요.
- Tags 섹션에서 태그를 추가해 탐지 규칙을 MITRE ATT&CK 같은 사이버 보안 지식 베이스에 기록된 공격 기법과 연관 지을 수 있어요. 태그를 여러 개 추가하려면 Add tag를 선택하세요.
- References 섹션에서는 규칙 참조용 URL을 추가할 수 있어요. URL을 여러 개 추가하려면 Add URL을 선택하세요.
- False positive cases 섹션은 규칙에서 원치 않는 알림을 유발할 수 있는 오탐(false positive) 조건에 대한 설명을 나열하는 공간을 제공해요. 설명을 여러 개 추가하려면 Add false positive를 선택하세요.
-
규칙이 완성되고 요구 사항을 충족하면 창 오른쪽 아래에서 Create detection rule을 선택해 규칙을 저장하세요. 새 규칙에는 규칙 ID가 자동으로 할당되고 탐지 규칙 목록에 표시돼요.
YAML Editor
Create detection rule 창에는 YAML Editor도 포함되어 있어서 YAML 파일 형식으로 바로 새 규칙을 만들 수 있어요. YAML Editor를 선택한 다음 미리 채워진 필드 타입에 정보를 입력하세요. 규칙의 id는 제공되며 규칙이 저장될 때 할당돼요. 다음 예시는 일반적인 규칙의 기본 요소를 보여줘요:
title: RDP Sensitive Settings Changed
logsource:
product: windows
description: 'Detects changes to RDP terminal service sensitive settings'
detection:
selection:
EventType: SetValue
TargetObject|contains:
- \services\TermService\Parameters\ServiceDll
- \Control\Terminal Server\fSingleSessionPerUser
- \Control\Terminal Server\fDenyTSConnections
- \Policies\Microsoft\Windows NT\Terminal Services\Shadow
- \Control\Terminal Server\WinStations\RDP-Tcp\InitialProgram
condition: selection
level: high
tags:
- attack.defense_evasion
- attack.t1112
references:
- https://blog.menasec.net/2019/02/threat-hunting-rdp-hijacking-via.html
- https://knowledge.insourcess.com/Supporting_Technologies/Wonderware/Tech_Notes/TN_WW213_How_to_shadow_an_established_RDP_Session_on_Windows_10_Pro
- https://twitter.com/SagieSec/status/1469001618863624194?t=HRf0eA0W1YYzkTSHb-Ky1A&s=03
- http://etutorials.org/Microsoft+Products/microsoft+windows+server+2003+terminal+services/Chapter+6+Registry/Registry+Keys+for+Terminal+Services/
falsepositives:
- Unknown
author:
- Samir Bousseaden
- David ANDRE
status: experimental
{% include copy.html %}
YAML Editor를 사용한 규칙 생성에 도움이 필요하면 Sigma의 Rule Creation Guide를 참고하고, 각 필드에 대한 설명을 활용해 규칙을 정의하는 방법을 더 자세히 알아보세요.
규칙 가져오기
Security Analytics는 YAML 형식의 Sigma 규칙 가져오기도 지원해요. Detection rules 창에서 다음 단계에 따라 규칙을 가져오세요.
- 시작하려면 페이지 오른쪽 위에서 Import detection rule을 선택하세요. 그러면 Import rule 페이지가 열려요.
- YAML 형식의 Sigma 규칙을 창으로 끌어다 놓거나, 링크를 선택해 파일을 찾아 열어요. 그러면 Import a rule 창이 열리고 규칙 정의 필드가 Visual Editor와 YAML Editor 양쪽 모두에서 자동으로 채워져요.
- 필드의 정보를 확인하거나 수정하세요.
- 규칙 정보가 정확한지 확인한 다음 창 오른쪽 아래에서 Create detection rule을 선택하세요. 새 규칙이 만들어지고 탐지 규칙 목록에 표시돼요.
규칙 사용자 지정하기
새 탐지 규칙을 만드는 또 다른 방법은 Sigma 규칙을 복제한 다음 수정해서 사용자 지정 규칙을 만드는 거예요. 먼저 Rule name 목록에서 규칙을 검색하거나 필터링해 복제하려는 규칙을 찾으세요. 다음 이미지는 키워드로 필터링된 목록을 보여줘요.
{: width="75%" }
-
시작하려면 Rule name 열에서 규칙을 선택하세요. 규칙 세부 정보가 표시돼요.
{: width="50%" } -
창 오른쪽 위에서 Duplicate 버튼을 선택하세요. 그러면 Duplicate rule 창이 Visual Editor 보기로 열리고 모든 필드에 규칙 세부 정보가 자동으로 채워져요. YAML Editor 보기에서도 세부 정보가 채워져요.
{: width="50%" } -
Visual Editor 보기나 YAML Editor 보기 어느 쪽에서든 필드를 수정해 규칙을 사용자 지정하세요.
-
규칙을 모두 수정한 다음 창 오른쪽 아래에서 Create detection rule을 선택하세요. 그러면 새로운 사용자 지정 규칙이 만들어져요. 이 규칙은 Detection rules 창 메인 페이지의 규칙 목록에 표시돼요.
{: width="70%" }
Sigma 규칙 자체는 수정할 수 없어요. 원본 Sigma 규칙은 항상 시스템에 남아 있고, 수정을 거친 복제본이 사용자 지정 규칙이 되어 규칙 목록에 추가돼요. {: .note }