다음을 통해 공유


ArcSight 검색 규칙을 Microsoft Sentinel로 마이그레이션

이 문서에서는 ArcSight 검색 규칙을 식별, 비교하고 Microsoft Sentinel 분석 규칙으로 마이그레이션하는 방법을 설명합니다.

규칙 식별 및 마이그레이션

Microsoft Sentinel은 기계 학습 분석을 사용하여 충실도가 높고 실행 가능한 인시던트를 생성하며 기존 탐지 중 일부는 Microsoft Sentinel에서 중복될 수 있습니다. 따라서 모든 검색 및 분석 규칙을 무분별하게 마이그레이션하지 마세요. 기존 검색 규칙을 식별할 때 이러한 고려 사항을 검토합니다.

  • 비즈니스 우선 순위와 효율성을 고려하여 규칙 마이그레이션에 타당한 사용 사례를 선택해야 합니다.
  • Microsoft Sentinel 규칙 유형을 이해하는지 확인합니다.
  • 규칙 용어를 이해하는지 확인합니다.
  • 지난 6~12개월 동안 경고를 트리거하지 않은 규칙을 검토하고 아직 관련성이 있는지 확인합니다.
  • 일상적으로 무시하는 낮은 수준의 위협이나 경고를 제거합니다.
  • 기존 기능을 사용하고 Microsoft Sentinel의 기본 제공 분석 규칙이 현재 사용 사례를 해결할 수 있는지 확인합니다. Microsoft Sentinel은 기계 학습 분석을 사용하여 충실도가 높은 실행 가능한 인시던트를 생성하므로 일부 기존 검색이 더 이상 필요하지 않을 수 있습니다.
  • 연결된 데이터 원본을 확인하고 데이터 연결 방법을 검토합니다. 데이터 수집 대화를 다시 논의하여 검색하려는 사용 사례 전반에서 데이터의 깊이와 범위를 확인합니다.
  • SOC Prime Threat Detection Marketplace와 같은 커뮤니티 리소스를 살펴보고 규칙을 사용할 수 있는지 확인합니다.
  • Uncoder.io 같은 온라인 쿼리 변환기가 규칙에 적합한지 여부를 살펴봅니다.
  • 규칙을 사용할 수 없거나 변환할 수 없는 경우 KQL 쿼리를 사용하여 수동으로 만들어야 합니다. 규칙 매핑을 검토하여 새 쿼리를 만듭니다.

검색 규칙 마이그레이션 모범 사례에 관해 자세히 알아봅니다.

분석 규칙을 Microsoft Sentinel로 마이그레이션하려면 다음을 수행합니다.

  1. 마이그레이션하려는 각 규칙에 대한 테스트 시스템이 있는지 확인합니다.

    1. 전체 테스트 시나리오 및 스크립트를 포함하여 마이그레이션된 규칙에 대한 유효성 검사 프로세스를 준비합니다.

    2. 마이그레이션된 규칙을 테스트하는 데 유용한 리소스가 팀에 있는지 확인합니다.

    3. 필요한 데이터 원본이 연결되어 있는지 확인하고 데이터 연결 방법을 검토합니다.

  2. Microsoft Sentinel에서 탐지를 기본 제공 템플릿으로 사용할 수 있는지 확인합니다.

    • 기본 제공 규칙이 충분하면 기본 제공 규칙 템플릿을 사용하여 자신의 작업 영역에 대한 규칙을 만듭니다.

      Microsoft Sentinel에서 구성 > 분석 > 규칙 템플릿 탭으로 이동한 다음, 관련된 각 분석 규칙을 만들고 업데이트합니다.

      자세한 내용은 템플릿에서 예약된 분석 규칙 만들기를 참조하세요.

    • Microsoft Sentinel의 기본 제공 규칙에서 처리되지 않는 탐지가 있는 경우Uncoder.io와 같은 온라인 쿼리 변환기를 사용하여 쿼리를 KQL로 변환합니다.

      트리거 조건 및 규칙 작업을 파악한 다음, KQL 쿼리를 구성하고 검토합니다.

    • 기본 제공 규칙과 온라인 규칙 변환기가 모두 충분하지 않으면 규칙을 수동으로 만들어야 합니다. 이런 경우 다음 단계를 사용하여 규칙 만들기를 시작합니다.

      1. 규칙에서 사용할 데이터 원본을 식별합니다. Microsoft Sentinel에서 데이터 원본과 데이터 테이블 간에 매핑 테이블을 만들어서 쿼리할 테이블을 식별하는 것이 좋습니다.

      2. 규칙에 사용할 데이터의 특성, 필드 또는 엔터티를 식별합니다.

      3. 규칙 조건과 논리를 식별합니다. 이 단계에서는 규칙 템플릿을 KQL 쿼리를 구성하는 방법에 대한 샘플로 사용할 수 있습니다.

        필터, 상관 관계 규칙, 활성 목록, 참조 집합, 관심 목록, 탐지 이상 항목, 집계 등을 고려합니다. 레거시 SIEM에서 제공한 참조를 사용하여 쿼리 구문을 가장 잘 매핑하는 방법을 파악할 수 있습니다.

      4. 트리거 조건 및 규칙 작업을 파악한 다음, KQL 쿼리를 구성하고 검토합니다. 쿼리를 검토할 때 KQL 최적화 지침 리소스를 고려하세요.

  3. 각각의 관련 사용 사례로 규칙을 테스트합니다. 예상한 결과를 제공하지 않으면 KQL을 검토하고 다시 테스트할 수 있습니다.

  4. 만족스러우면 마이그레이션된 규칙을 고려할 수 있습니다. 필요에 따라 규칙 작업에 대한 플레이북을 만듭니다. 자세한 내용은 Microsoft Sentinel의 플레이북을 사용하여 위협 대응 자동화를 참조하세요.

분석 규칙에 대해 자세히 알아봅니다.

규칙 용어 비교

이 표는 ArcSight에 비교하여 Microsoft Sentinel의 규칙 개념을 명확히 하는 데 도움이 됩니다.

ArcSight Microsoft Sentinel
규칙 유형 • 필터 규칙
• 조인 규칙
• 활성 목록 규칙
• 기타 등등
• 예약된 쿼리
• 퓨전
• Microsoft 보안
• ML(기계 학습) 동작 분석
조건 규칙 조건에서 정의 KQL에서 정의
트리거 조건 • 작업에서 정의
• 집계에서 정의(이벤트 집계용)
임계값: 쿼리 결과 수
작업 • 이벤트 필드 설정
• 알림 보내기
• 새 사례 만들기
• 활성 목록에 추가
• 기타 등등
• 경고 또는 인시던트 만들기
• Logic Apps와 통합

규칙 샘플 매핑 및 비교

이러한 샘플을 사용하여 다양한 시나리오에서 규칙을 비교하고 ArcSight에서 Microsoft Sentinel로 매핑합니다.

규칙 설명 샘플 검색 규칙(ArcSight) 샘플 KQL 쿼리 리소스
필터(AND) AND 조건이 있는 샘플 규칙입니다. 이벤트는 모든 조건과 일치해야 합니다. 필터(AND) 예제 필터(AND) 예제 문자열 필터;
문자열 연산자

숫자 필터:
숫자 연산자

날짜/시간 필터:
ago
Datetime
between
now

구문 분석:
parse
extract
parse_json
parse_csv
parse_path
parse_url
필터(OR) OR 조건이 있는 샘플 규칙입니다. 이벤트는 임의 조건과 일치할 수 있습니다. 필터(OR) 예제 필터(OR) 예제 문자열 연산자
in
중첩된 필터 중첩된 필터링 조건이 있는 샘플 규칙입니다. 규칙에는 MatchesFilter 문이 포함되며 필터링 조건도 포함됩니다. 중첩된 필터 예제 중첩된 필터 예제 샘플 KQL 함수
샘플 매개 변수 함수
join
where
활성 목록(조회) InActiveList 문을 사용하는 샘플 조회 규칙입니다. 활성 목록(조회) 예제 활성 목록(조회) 예제 • 관심 목록은 활성 목록 기능과 동일합니다. 관심 목록에 대해 자세히 알아봅니다.
조회를 구현하는 다른 방법
상관 관계(일치) Matching Event 문을 사용하여 기본 이벤트 세트에 대한 조건을 정의하는 샘플 규칙입니다. 상관 관계(일치) 예제 상관 관계(일치) 예제 join 연산자:
join
join(시간 범위 포함)
shuffle
Broadcast
Union

define 문:
let

집계:
make_set
make_list
make_bag
bag_pack
상관 관계(시간 범위) Matching Event 문을 사용하여 기본 이벤트 세트에 대한 조건을 정의하고 Wait time 필터 조건을 사용하는 샘플 규칙입니다. 상관 관계(시간 범위) 예제 상관 관계(시간 범위) 예제 join
Microsoft Sentinel 규칙 및 join 문

필터(AND) 예제: ArcSight

ArcSight의 AND 조건이 포함된 샘플 필터 규칙은 다음과 같습니다.

샘플 필터 규칙을 보여 주는 다이어그램

필터(AND) 예제: KQL

KQL의 AND 조건이 포함된 필터 규칙은 다음과 같습니다.

SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)

이 규칙은 AMA(Azure Monitoring Agent)가 Windows 보안 이벤트를 수집한다고 가정합니다. 따라서 규칙은 Microsoft Sentinel SecurityEvent 테이블을 사용합니다.

다음 모범 사례를 고려하세요.

  • 쿼리를 최적화하기 위해 가능한 경우 대/소문자를 구분하지 않는 연산자 =~를 사용하지 마세요.
  • 값이 대/소문자를 구분하지 않는 경우 ==를 사용합니다.
  • 가장 많은 데이터를 필터링하는 where 문으로 시작하여 필터의 순서를 지정합니다.

필터(OR) 예제: ArcSight

ArcSight의 OR 조건이 포함된 샘플 필터 규칙은 다음과 같습니다.

샘플 필터 규칙(or)을 보여 주는 다이어그램

필터(OR) 예제: KQL

KQL의 OR 조건이 포함된 필터 규칙을 작성하는 몇 가지 방법은 다음과 같습니다.

첫 번째 옵션으로 in 문을 사용합니다.

SecurityEvent
| where SubjectUserName in
 ("Adm1","ServiceAccount1","AutomationServices")

두 번째 옵션으로 or 문을 사용합니다.

SecurityEvent
| where SubjectUserName == "Adm1" or 
SubjectUserName == "ServiceAccount1" or 
SubjectUserName == "AutomationServices"

두 옵션은 모두 성능이 동일하지만 더 쉽게 읽을 수 있는 첫 번째 옵션을 사용하는 것이 좋습니다.

중첩된 필터 예제: ArcSight

ArcSight의 샘플 중첩된 필터 규칙은 다음과 같습니다.

샘플 중첩 필터 규칙을 보여 주는 다이어그램

/All Filters/Soc Filters/Exclude Valid Users 필터에 대한 규칙은 다음과 같습니다.

유효한 사용자 제외 필터를 보여 주는 다이어그램

중첩된 필터 예제: KQL

KQL의 OR 조건이 포함된 필터 규칙을 작성하는 몇 가지 방법은 다음과 같습니다.

첫 번째 옵션으로 where 문과 함께 직접 필터를 사용합니다.

SecurityEvent
| where EventID == 4728 
| where isnotempty(SubjectDomainName) or 
isnotempty(TargetDomainName) 
| where SubjectUserName !~ "AutoMatedService"

두 번째 옵션으로 KQL 함수를 사용합니다.

  1. ExcludeValidUsers 별칭을 사용하여 다음 쿼리를 KQL 함수로 저장합니다.

        SecurityEvent
        | where EventID == 4728
        | where isnotempty(SubjectDomainName)
        | where SubjectUserName =~ "AutoMatedService"
        | project SubjectUserName
    
  2. 다음 쿼리를 사용하여 ExcludeValidUsers 별칭을 필터링합니다.

        SecurityEvent    
        | where EventID == 4728
        | where isnotempty(SubjectDomainName) or 
        isnotempty(TargetDomainName)
        | where SubjectUserName !in (ExcludeValidUsers)
    

세 번째 옵션으로 매개 변수 함수를 사용합니다.

  1. 이름 및 별칭으로 ExcludeValidUsers를 사용하여 매개 변수 함수를 만듭니다.

  2. 함수의 매개 변수를 정의합니다. 예시:

        Tbl: (TimeGenerated:datetime, Computer:string, 
        EventID:string, SubjectDomainName:string, 
        TargetDomainName:string, SubjectUserName:string)
    
  3. parameter 함수에는 다음 쿼리가 포함됩니다.

        Tbl
        | where SubjectUserName !~ "AutoMatedService"
    
  4. 다음 쿼리를 실행하여 매개 변수 함수를 호출합니다.

        let Events = (
        SecurityEvent 
        | where EventID == 4728
        );
        ExcludeValidUsers(Events)
    

네 번째 옵션으로 join 함수를 사용합니다.

let events = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName) 
or isnotempty(TargetDomainName)
);
let ExcludeValidUsers = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
| where SubjectUserName =~ "AutoMatedService"
);
events
| join kind=leftanti ExcludeValidUsers on 
$left.SubjectUserName == $right.SubjectUserName

고려 사항:

  • 단순하기 때문에 where 문(첫 번째 옵션)과 함께 직접 필터를 사용하는 것이 좋습니다. 최적화된 성능을 위해서는 join(네 번째 옵션)을 사용하지 마세요.
  • 쿼리를 최적화하기 위해 가능한 경우 =~!~ 대/소문자를 구분하지 않는 연산자를 사용하지 마세요. 값이 대/소문자를 구분하지 않는 경우 ==!= 연산자를 사용합니다.

활성 목록(조회) 예제: ArcSight

ArcSight의 활성 목록(조회) 규칙은 다음과 같습니다.

샘플 활성 목록 규칙(조회)을 보여 주는 다이어그램

활성 목록(조회) 예제: KQL

이 규칙은 Cyber-Ark 예외 계정 관심 목록이 계정 필드와 함께 Microsoft Sentinel에 있다고 가정합니다.

let Activelist=(
_GetWatchlist('Cyber-Ark Exception Accounts')
| project Account );
CommonSecurityLog
| where DestinationUserName in (Activelist)
| where DeviceVendor == "Cyber-Ark"
| where DeviceAction == "Get File Request"
| where DeviceCustomNumber1 != ""
| project DeviceAction, DestinationUserName, 
TimeGenerated,SourceHostName, 
SourceUserName, DeviceEventClassID

가장 많은 데이터를 필터링하는 where 문으로 시작하여 필터의 순서를 지정합니다.

상관 관계(일치) 예제: ArcSight

Matching Event 문을 사용하여 기본 이벤트 세트에 대한 조건을 정의하는 샘플 ArcSight 규칙은 다음과 같습니다.

샘플 상관 관계 규칙(일치)을 보여 주는 다이어그램

상관 관계(일치) 예제: KQL

let event1 =(
SecurityEvent
| where EventID == 4728
);
let event2 =(
SecurityEvent
| where EventID == 4729
);
event1
| join kind=inner event2 
on $left.TargetUserName==$right.TargetUserName

모범 사례:

  • 쿼리를 최적화하려면 더 작은 테이블이 join 함수의 왼쪽에 있는지 확인합니다.
  • 테이블의 왼쪽이 비교적 작은 경우(최대 10만 개 레코드) 더 나은 성능을 위해 hint.strategy=broadcast를 추가합니다.

상관 관계(시간 범위) 예제: ArcSight

Matching Event 문을 사용하여 기본 이벤트 세트에 대한 조건을 정의하고 Wait time 필터 조건을 사용하는 샘플 ArcSight 규칙은 다음과 같습니다.

샘플 상관 관계 규칙(기간)을 보여 주는 다이어그램

상관 관계(시간 범위) 예제: KQL

let waittime = 10m;
let lookback = 1d;
let event1 = (
SecurityEvent
| where TimeGenerated > ago(waittime+lookback)
| where EventID == 4728
| project event1_time = TimeGenerated, 
event1_ID = EventID, event1_Activity= Activity, 
event1_Host = Computer, TargetUserName, 
event1_UPN=UserPrincipalName, 
AccountUsedToAdd = SubjectUserName 
);
let event2 = (
SecurityEvent
| where TimeGenerated > ago(waittime)
| where EventID == 4729
| project event2_time = TimeGenerated, 
event2_ID = EventID, event2_Activity= Activity, 
event2_Host= Computer, TargetUserName, 
event2_UPN=UserPrincipalName,
 AccountUsedToRemove = SubjectUserName 
);
 event1
| join kind=inner event2 on TargetUserName
| where event2_time - event1_time < lookback
| where tolong(event2_time - event1_time ) >=0
| project delta_time = event2_time - event1_time,
 event1_time, event2_time,
 event1_ID,event2_ID,event1_Activity,
 event2_Activity, TargetUserName, AccountUsedToAdd,
 AccountUsedToRemove,event1_Host,event2_Host, 
 event1_UPN,event2_UPN

집계 예제: ArcSight

10분 내에 3이 일치하는 집계 설정이 있는 샘플 ArcSight 규칙은 다음과 같습니다.

샘플 집계 규칙을 보여 주는 다이어그램

집계 예제: KQL

SecurityEvent
| summarize Count = count() by SubjectUserName, 
SubjectDomainName
| where Count >3

다음 단계

이 문서에서는 ArcSight에서 Microsoft Sentinel로 마이그레이션 규칙을 매핑하는 방법을 알아보았습니다.