UEBA의 위험 분석

다음에서 지원:

이 문서에서는 UEBA 카테고리의 위험 분석에 있는 규칙 집합, 필요한 데이터, 각 규칙 집합에서 생성된 알림을 조정하는 데 사용할 수 있는 구성에 대해 간략하게 설명합니다. 이러한 규칙 집합은 지원되는 로그 소스를 평가하여 위협을 식별하는 데 도움이 됩니다.

규칙 집합 설명

다음 규칙 집합은 UEBA 카테고리의 위험 분석에서 사용할 수 있으며 감지된 패턴 유형에 따라 그룹화됩니다.

인증

  • 기기에 대한 사용자의 신규 로그인: 사용자가 새 기기에 로그인했습니다.
  • 사용자별 인증 이벤트 이상: 단일 사용자 항목에 이전 사용과 비교해서 최근에 이상 인증 이벤트가 발생했습니다.
  • 기기별 인증 실패: 단일 기기 항목에 이전 사용과 비교해서 최근에 실패한 로그인 시도가 많습니다.
  • 사용자별 인증 실패: 단일 사용자 항목에 이전 사용과 비교해서 최근에 실패한 로그인 시도가 많습니다.

네트워크 트래픽 분석

  • 기기별 인바운드 바이트 이상: 이전 사용과 비교해서 최근에 단일 기기 항목에 상당한 양의 데이터가 업로드되었습니다.
  • 기기별 아웃바운드 바이트 이상: 이전 사용과 비교해서 최근에 단일 기기 항목에서 상당한 양의 데이터가 다운로드되었습니다.
  • 기기별 총 바이트 이상: 이전 사용과 비교해서 최근에 기기 항목이 상당한 양의 데이터를 업로드 및 다운로드했습니다.
  • 사용자별 인바운드 바이트 이상: 이전 사용과 비교해서 최근에 단일 사용자 항목이 상당한 양의 데이터를 다운로드했습니다.
  • 사용자별 총 바이트 이상: 이전 사용과 비교해서 최근에 사용자 항목이 상당한 양의 데이터를 업로드 및 다운로드했습니다.
  • 사용자별 무차별 입력 공격 후 로그인 성공: 하나의 IP 주소에서 단일 사용자 항목이 특정 애플리케이션에 대해 인증 시도를 여러 번 실패한 후 성공적으로 로그인했습니다.

피어 그룹 기반 감지

  • 새로 생성된 사용자의 로그인 이상 또는 과다: 최근에 생성된 사용자의 인증 활동에 이상이 있거나 활동이 과다합니다. 여기에는 AD 컨텍스트 데이터의 생성 시간이 사용됩니다.

  • 새로 생성된 사용자의 의심스러운 활동 이상 또는 과다: 최근에 생성된 사용자의 활동에 이상이 있거나 활동이 과다합니다(HTTP 원격 분석, 프로세스 실행, 그룹 수정 등). 여기에는 AD 컨텍스트 데이터의 생성 시간이 사용됩니다.

의심스러운 작업

  • 기기별 계정 생성 과다: 기기 항목에서 새 사용자 계정이 여러 개 생성되었습니다.
  • 사용자별 알림 과다: 사용자 항목에 대해 바이러스 백신 또는 엔드포인트 기기의 보안 알림 수가 이전 패턴에 비해 상당히 많이 보고되었습니다(예: 연결 차단, 멀웨어 감지). security_result.action UDM 필드가 BLOCK으로 설정된 이벤트입니다.

데이터 손실 방지 기반 감지

  • 데이터 무단 반출 기능의 프로세스 이상 또는 과다: 키로거, 스크린샷, 원격 액세스와 같은 데이터 무단 반출 기능과 관련된 프로세스의 활동에 이상이 있거나 활동이 과다합니다. 여기에는 VirusTotal의 파일 메타데이터 보강이 사용됩니다.

UEBA 카테고리의 위험 분석에 필요한 필수 데이터

이 섹션에서는 최적의 성능을 위해 각 규칙 집합 카테고리에 필요한 데이터를 자세히 설명합니다. UEBA 감지는 지원되는 모든 기본 파서와 함께 작동하도록 설계되었지만 다음 특정 데이터 유형을 사용하면 이점을 극대화할 수 있습니다. 지원되는 기본 파서의 전체 목록은 지원되는 로그 유형 및 기본 파서를 참조하세요.

인증

이러한 규칙 집합을 사용하려면 Azure AD 디렉터리 감사 (AZURE_AD_AUDIT) 또는 Windows 이벤트 (WINEVTLOG)에서 로그 데이터를 수집합니다.

WINEVTLOG의 경우 데이터 수집 구성에 다음 Windows Event IDsSecurity 이벤트 로그 Channel에 포함하도록 구성해야 합니다. 이러한 이벤트는 감지 엔진에서 사용하는 Event types (예: USER_LOGIN 또는 PROCESS_LAUNCH)에 직접 매핑됩니다.

Windows 이벤트 ID 요구사항

이벤트 유형 Windows 이벤트 ID
USER_LOGIN 529, 4624, 4625, 4626, 4648, 4672, 4768, 4769, 4770, 4771, 4777, 4820, 4821, 4964
USER_CREATION 4720
NETWORK_CONNECTION 4096, 4097, 4321, 5156, 5632, 5633, 5157
GROUP_MODIFICATION 4728, 4729, 4732, 4733, 4735, 4737, 4745, 4746, 4747, 4750, 4751, 4752, 4755, 4756, 4757, 4760, 4761, 4762, 4764, 4784, 4785, 4786, 4787, 4788, 4791
PROCESS_LAUNCH 4688
PROCESS_OPEN 4663, 4670, 4691, 8002

네트워크 트래픽 분석

이러한 규칙 집합을 사용하려면 네트워크 활동을 캡처하는 로그 데이터를 수집합니다. 예를 들어 FortiGate(FORTINET_FIREWALL), Check Point(CHECKPOINT_FIREWALL), Zscaler(ZSCALER_WEBPROXY), CrowdStrike Falcon(CS_EDR), Carbon Black(CB_EDR)과 같은 기기에서 수집합니다.

피어 그룹 기반 감지

이러한 규칙 집합을 사용하려면 Azure AD 디렉터리 감사(AZURE_AD_AUDIT) 또는 Windows 이벤트(WINEVTLOG)에서 로그 데이터를 수집합니다.

의심스러운 작업

이 그룹의 규칙 집합에는 각각 서로 다른 유형의 데이터가 사용됩니다.

기기 규칙 집합의 계정 생성 과다

이 규칙 집합을 사용하려면 Azure AD 디렉터리 감사(AZURE_AD_AUDIT) 또는 Windows 이벤트(WINEVTLOG)에서 로그 데이터를 수집합니다.

사용자 규칙 집합별 알림 과다

이 규칙 집합을 사용하려면 CrowdStrike Falcon(CS_EDR), Carbon Black(CB_EDR), Azure AD 디렉터리 감사(AZURE_AD_AUDIT)에서 기록된 것과 같은 엔드포인트 활동 또는 감사 데이터를 캡처하는 로그 데이터를 수집합니다.

데이터 손실 방지 기반 감지

이러한 규칙 집합을 사용하려면 CrowdStrike Falcon (CS_EDR), Carbon Black (CB_EDR), SentinelOne EDR (SENTINEL_EDR)에서 기록된 것과 같은 프로세스 및 파일 활동을 캡처하는 로그 데이터를 수집합니다.

필드 종속 항목

이 섹션에서는 Google SecOps UEBA 규칙에서 사용하는 측정항목 및 측정기준 필드를 설명합니다.

측정항목 종속 항목

다음 표에는 각 측정항목에 기여하는 이벤트를 정의하는 측정항목과 해당 UDM 검색어가 나와 있습니다.

측정항목 측정항목에 기여하는 이벤트의 UDM 검색어
AUTH_ATTEMPTS_FAIL metadata.event_type = "USER_LOGIN"
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
AUTH_ATTEMPTS_SUCCESS metadata.event_type = "USER_LOGIN"
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
AUTH_ATTEMPTS_TOTAL metadata.event_type = "USER_LOGIN"
AND security_result.action >= "UNKNOWN_ACTION"
DNS_BYTES_OUTBOUND network.sent_bytes > 0
AND (network.ip_protocol = "UDP" AND target.port = 53)
OR (network.ip_protocol = "TCP" AND (target.port = 53 OR target.port=3000))
DNS_QUERIES_FAIL network.dns.id > 0
AND network.dns.response_code != 0
DNS_QUERIES_SUCCESS network.dns.id > 0
AND network.dns.response_code = 0
DNS_QUERIES_TOTAL network.dns.id > 0
FILE_EXECUTIONS_FAIL metadata.event_type = "PROCESS_LAUNCH"
AND security_result.action != "ALLOW"
FILE_EXECUTIONS_SUCCESS metadata.event_type = "PROCESS_LAUNCH"
AND security_result.action = "ALLOW"
FILE_EXECUTIONS_TOTAL metadata.event_type = "PROCESS_LAUNCH"
HTTP_QUERIES_FAIL network.http.method != ""
AND (network.http.response_code >= 400 OR network.http.response_code = 0)
HTTP_QUERIES_SUCCESS network.http.method != ""
AND network.http.response_code < 400
HTTP_QUERIES_TOTAL network.http.method != ""
NETWORK_BYTES_INBOUND network.received_bytes > 0
AND network.received_bytes < 1000000000000000
NETWORK_BYTES_OUTBOUND network.sent_bytes > 0
AND network.sent_bytes < 1000000000000000
NETWORK_BYTES_TOTAL (network.received_bytes > 0 AND network.received_bytes < 1000000000000000)
OR (network.sent_bytes > 0 AND network.sent_bytes < 1000000000000000)
NETWORK_FLOWS_INBOUND network.received_bytes > 0
AND network.received_bytes < 1000000000000000
NETWORK_FLOWS_OUTBOUND network.sent_bytes > 0
AND network.sent_bytes < 1000000000000000
NETWORK_FLOWS_TOTAL (network.received_bytes > 0 AND network.received_bytes < 1000000000000000)
OR (network.sent_bytes > 0 AND network.sent_bytes < 1000000000000000)
RESOURCE_READ_FAIL (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
RESOURCE_READ_SUCCESS (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
RESOURCE_READ_TOTAL (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
RESOURCE_WRITTEN_FAIL (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
RESOURCE_WRITTEN_SUCCESS (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
RESOURCE_WRITTEN_TOTAL (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")

측정기준 종속 항목

다음 표에는 필터링 또는 그룹화에 사용할 수 있는 측정기준과 해당 UDM 필드 옵션이 나와 있습니다.

측정기준 필드 옵션
기본 기기 principal.asset.asset_id
principal.asset.hostname
principal.asset.ip
principal.asset.mac
principal.asset.product_object_id
대상 기기 target.asset.asset_id
target.asset.hostname
target.asset.ip
target.asset.mac
target.asset.product_object_id
기본 사용자 principal.user.email_addresses
principal.user.employee_id
principal.user.product_object_id
principal.user.userid
principal.user.windows_sid
대상 사용자 target.user.email_addresses
target.user.employee_id
target.user.product_object_id
target.user.userid
target.user.windows_sid
대상 서비스 target.application
타겟 IP target.ip
기본 프로세스 파일 경로 principal.process.file.full_path
기본 프로세스 파일 해시 principal.process.file.sha256
기본 파일 해시 principal.file.sha256
기본 국가 principal.ip_geo_artifact.location.country_or_region
보안 카테고리 security_result.category
기본 네트워크 조직 이름 principal.ip_geo_artifact.network.organization_name
타겟 네트워크 조직 이름 target.ip_geo_artifact.network.organization_name
클라이언트 인증서 해시 network.tls.client.certificate.sha256
DNS 쿼리 유형 network.dns.questions.type
DNS 도메인 network.dns_domain
HTTP 사용자 에이전트 network.http.user_agent
이벤트 유형 metadata.event_type
운영체제 principal.platform

이 카테고리의 규칙 집합으로 반환된 알림 조정

규칙 제외를 사용해서 규칙 또는 규칙 집합으로 생성되는 감지 수를 줄일 수 있습니다. 규칙 제외.

규칙 제외 항목은 규칙 집합 또는 규칙 집합의 특정 규칙에서 이벤트 평가를 제외하는 데 사용되는 기준을 정의합니다. 감지 볼륨을 줄이는 데 도움이 되는 규칙 제외 항목을 하나 이상 만듭니다. 이를 수행하는 방법은 규칙 제외 항목 구성 을 참조하세요.

UEBA 카테고리의 위험 분석 규칙 예

다음 예시에서는 위험 점수가 100보다 큰 항목 호스트 이름에서 감지를 생성하는 규칙을 만드는 방법을 보여줍니다.

rule EntityRiskScore {
  meta:
  events:
    $e1.principal.hostname != ""
    $e1.principal.hostname = $hostname

    $e2.graph.entity.hostname = $hostname
    $e2.graph.risk_score.risk_window_size.seconds = 86400 // 24 hours
    $e2.graph.risk_score.risk_score >= 100

    // Run deduplication across the risk score.
    $rscore = $e2.graph.risk_score.risk_score

  match:
    // Dedup on hostname and risk score across a 4 hour window.
    $hostname, $rscore over 4h

  outcome:
    // Force these risk score based rules to have a risk score of zero to
    // prevent self feedback loops.
    $risk_score = 0

  condition:
    $e1 and $e2
}

이 예시 규칙도 일치 섹션을 사용하여 자체 중복 삭제를 수행합니다. 규칙 감지가 트리거될 수 있지만 호스트 이름과 위험 점수가 4시간 이내에 변경되지 않으면 새 감지가 생성되지 않습니다.

항목 위험 점수 규칙에 사용 가능한 유일한 위험 기간은 24시간 또는 7일 (각각 86,400 또는 604,800초)입니다. 규칙에 위험 기간 크기를 포함하지 않으면 규칙에서 부정확한 결과를 반환합니다.

항목 위험 점수 데이터는 항목 컨텍스트 데이터와 별개로 저장됩니다. 규칙에서 둘 다 사용하려면 다음 예시에 표시된 것처럼 항목 컨텍스트와 항목 위험 점수 각각에 대해 하나씩 2개의 개별 항목 이벤트가 있어야 합니다.

rule EntityContextAndRiskScore {
  meta:
  events:
    $log_in.metadata.event_type = "USER_LOGIN"
    $log_in.principal.hostname = $host

    $context.graph.entity.hostname = $host
    $context.graph.metadata.entity_type = "ASSET"

    $risk_score.graph.entity.hostname = $host
    $risk_score.graph.risk_score.risk_window_size.seconds = 604800

  match:
    $host over 2m

  outcome:
    $entity_risk_score = max($risk_score.graph.risk_score.normalized_risk_score)

  condition:
    $log_in and $context and $risk_score and $entity_risk_score > 100
}

다음 단계

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.