항목 컨텍스트 그래프 (ECG) 사용
이 문서는 항목 컨텍스트 그래프 (ECG), 데이터 소스, 처리 파이프라인, 규칙 및 검색에서의 애플리케이션을 포괄적으로 개괄합니다. ECG는 탐지 규칙, 검색, 대시보드에서 고급 위협 탐지, 조사, 위협 헌팅에 필수적인 컨텍스트를 제공하는 핵심 엔티티 데이터 모델입니다. ECG 처리 파이프라인은 각 Google SecOps 환경에서 컨텍스트 정보를 병합합니다.
또한 ECG는 유병률 (UDM 데이터에서 특정 항목이 다른 항목에 비해 얼마나 자주 발생하는지), 항목의 first-seen-time 및 last-seen-time, 주요 보강 소스, Google 위협 인텔리전스 (GTI), 세이프 브라우징, WHOIS, VirusTotal 데이터와 같은 침해 지표 (IOC) 소스와 같은 항목의 요약 측정항목을 계산합니다.
ECG는 UDM 이벤트를 사용하여 다음 작업을 실행합니다.
- 내부 엔티티(애셋 및 사용자)와 외부 엔티티 (IOC)에 대한 풍부하고 상관관계가 있으며 포괄적인 뷰를 구축합니다.
- 이러한 항목 간의 관계를 파악합니다.
심전도 데이터 소스
심전도는 다음 소스의 데이터를 결합합니다.
| 컨텍스트 소스 | 소스 | 설명 |
|---|---|---|
| 항목 컨텍스트 | 고객 제공 | Google SecOps는 외부 시스템에서 사용자 및 애셋에 관한 공신력 있는 세부정보와 같은 구조화된 조직 데이터를 직접 수집합니다. 이러한 소스에는 ID 제공업체 (IDP), 구성 관리 데이터베이스 (CMDB) 시스템 (예: ServiceNow CMDB, Duo 사용자 컨텍스트), 취약점 관리 시스템이 포함됩니다. |
| 파생 컨텍스트 | Google SecOps 생성 | Google SecOps는 수집된 활동의 분석을 기반으로 통계 데이터를 생성합니다. 환경 내 다양한 소스 (예: Windows AD, Azure AD, Okta, Google Cloud, IAM)의 이벤트와 엔티티를 보강합니다.
예를 들면 다음과 같습니다.
|
| 전역 컨텍스트 | Google 소스 | 글로벌 소스는 내부 및 외부 위협 인텔리전스와 평판 데이터를 제공합니다.
예를 들면 다음과 같습니다.
|
ECG 데이터 처리 파이프라인
먼저 UDM 별칭 지정 및 보강 파이프라인이 원시 보안 이벤트를 UDM 구조로 수집하고 정규화합니다.
그런 다음 ECG 병합은 여러 출처 (예: ID 공급업체, 구성 관리 데이터베이스 (CMDB), 위협 인텔리전스 피드, 파생된 컨텍스트)의 컨텍스트를 단일 통합 엔티티 프로필로 병합하여 각 엔티티에 대한 풍부하고 신뢰할 수 있는 프로필을 빌드합니다. ECG 병합은 ECG에 새로운 연결, 속성, 관계를 추가하고 파생된 컨텍스트를 생성하고 업데이트합니다.
ECG는 시간 (시간적) 및 시간에 구애받지 않는 (비시간적) 엔티티를 모두 구성합니다. ECG는 지정된 규칙 및 검색 시간 범위 내에서 시간이 지정된 항목을 평가하는 반면, 검색 또는 규칙의 시간 범위를 고려하지 않고 시간이 없는 항목을 평가합니다.
심전도는 이러한 다양한 데이터 소스에서 hostname, MAC address, user ID 또는 email address와 같은 공통 키 식별자를 일치시켜 컨텍스트 레코드를 병합합니다. 이러한 값 중 하나와 일치하는 레코드를 병합하여 항목의 포괄적이고 풍부한 뷰를 빌드합니다.
ECG 별칭 지정은 다음 UDM 필드를 '병합 키'로 사용합니다.
Assetentity.asset.product_object_identity.asset.hostnameentity.asset.asset_identity.asset.mac
Userentity.user.product_object_identity.user.useridentity.user.windows_sidentity.user.email_addressesentity.user.employee_id
Resourceentity.resource.product_object_identity.resource.name
Groupentity.group.product_object_identity.group.email_addressesentity.group.windows_sid
병합 프로세스 중에 위의 필드와 충돌하는 값이 있으면 ECG 파이프라인에서 최신 시작 시간이 있는 값을 선택하여 항목을 업데이트합니다.
심전도에서는 5일의 회고 기간으로 항목 컨텍스트 데이터를 만듭니다. 이 프로세스는 늦게 도착하는 데이터를 처리하고 항목 컨텍스트 데이터에 대한 암시적 TTL(수명)을 만듭니다.
ECG는 컨텍스트 데이터 (애셋, 사용자, 리소스, 그룹)와 침해 지표 (IOC)를 구분합니다.
예: 심전도 병합을 사용한 사용자 데이터 병합
Google SecOps는 Okta, Azure AD, 취약점 스캐너의 세 가지 소스에서 jdoe의 사용자 데이터를 수집합니다. ECG는 일치하는 식별자 (예: jdoe@example.com)를 기반으로 이러한 세 레코드를 병합하여 세 소스의 속성이 모두 포함된 통합 jdoe 사용자 항목을 ECG에 만듭니다.
예: 중복 데이터를 제거하여 공통 항목 만들기
일반적인 결합된 항목을 만들기 위해 심전도에서는 중복 삭제를 통해 중복 데이터를 제거합니다. 정확한 타임스탬프를 일치시키는 대신 시간 간격을 생성하여 이를 수행합니다.
예를 들어 t1 및 t2 타임스탬프가 각각 있는 두 항목 e1 및 e2가 있다고 가정해 보겠습니다. e1와 e2이 그 외에는 동일한 경우 ECG는 다음 필드의 타임스탬프 차이를 무시하여 중복을 삭제합니다.
collected_timestampcreation_timestampinterval
중요한 항목 및 이벤트 컨텍스트 심전도 데이터 소스
Google SecOps에서 엔티티를 만들고 업데이트하려면 몇 가지 특정 데이터 소스가 필요합니다.
중요한 항목 컨텍스트 심전도 데이터 소스
환경의 사용자 및 애셋에 대한 공신력 있는 데이터 소스는 엔티티 데이터 모델을 빌드하는 데 가장 중요한 로그 데이터를 제공합니다. 예를 들면 다음과 같습니다.
| 카테고리 | 중요한 데이터 소스 | 항목 채워짐 |
|---|---|---|
| ID 및 액세스 관리 | Active Directory, Azure AD, Okta, Google Cloud Identity | user,group |
| 애셋 인벤토리 | CMDB, JAMF, Microsoft Intune | asset |
| 위협 인텔리전스 | 맞춤 또는 서드 파티 피드, Google Threat Intelligence (GTI) | ip_address,domain_name,file |
검색 예시
각 카테고리를 지원하는 파서를 나열하려면 다음을 실행하세요.
- 기본 파서가 있는 지원되는 로그 유형으로 이동합니다.
검색창에 카테고리를 입력합니다. 예를 들면 다음과 같습니다.
- 애셋 인벤토리와 관련된 파서의 경우
inventory또는asset를 입력합니다. - ID 및 액세스 관리와 관련된 파서를 보려면
identity를 입력하세요. - 위협 인텔리전스와 관련된 파서의 경우
IOC를 입력합니다.
- 애셋 인벤토리와 관련된 파서의 경우
엔티티 프로파일링을 위한 데이터 소스 및 중요한 UDM 필드
Google SecOps는 공신력 있는 항목 컨텍스트 데이터 소스와 중요한 UDM 필드를 기반으로 항목 프로필을 개선합니다.
| 항목 유형 | 데이터 소스 | 중요한 UDM 필드 (별칭 지정 및 색인 생성용) |
|---|---|---|
| 절차 | 엔드포인트 로그는 강력한 프로세스 별칭에 중요한 안정적인 식별자인 PSPI (`principal.process.product_specific_process_id`)를 제공합니다.
예로는 CrowdStrike EDR (CS_EDR) 및 Windows Sysmon (WINDOWS_SYSMON)이 있습니다. |
source.process.product_specific_process_id |
| 사용자 | 이러한 소스는 사용자 속성 및 ID 정보를 제공합니다. 예를 들어 Duo Entity Context Data (DUO_CONTEXT) 및 Okta (OKTA)가 있습니다. |
source.user.userid, source.user.email_address, source.user.windows_sid, source.user.product_object_id |
| 애셋 또는 엔드포인트 | 이러한 소스는 공신력 있는 저작물 정보를 제공합니다. 예를 들어 ServiceNow CMDB (SERVICENOW_CMDB) 및 Tanium Asset (TANIUM_ASSET)이 있습니다. |
source.ip, source.hostname, source.asset_id, principal.asset.hostname |
| 파일 해시 | 데이터 무결성을 확인하기 위해 데이터 콘텐츠의 고유한 '디지털 지문'을 제공합니다. | source.file.sha256, source.file.sha1, source.file.md5 |
중요 이벤트 컨텍스트 데이터 UDM 필드
Google SecOps에는 몇 가지 중요한 이벤트 컨텍스트 데이터 UDM 필드가 필요합니다.
가장 중요한 UDM 필드는 안정적인 식별자 및 관계 표시기 (
principal.*,target.*,src_*,dst_*필드) 역할을 하는 필드입니다.Entity graph기능 영역에 속하는 주요 UDM 필드 목록을 참고하세요.포괄적인 ECG를 구축하려면 가치 있는 식별자와 관계 데이터에 기여하는 데이터 소스를 우선시하세요. 예를 들면 다음과 같습니다.
항목 유형 중요한 데이터 소스 엔티티 빌드를 위한 중요한 UDM 필드 애셋 (호스트) EDR 및 XDR, DNS 및 DHCP, 방화벽, Google Cloud 콘솔 감사 로그 metadata.event_type,
principal.asset.asset_id,
principal.asset.hostname,
principal.ip사용자 ID 공급업체 (IdP) 로그, HR 피드 (컨텍스트), Cloud ID 로그, 이메일 게이트웨이 principal.user.userid,
principal.user.email_addresses,
target.user.userid,
principal.ip네트워크 방화벽, VPN, DNS, VPC 흐름 로그 principal.ip,
target.ip,
src_ip,
dst_ip,
network.direction파일 및 프로세스 EDR 및 XDR, 애플리케이션 로그 target.file.full_path,
target.process.file.full_path,
target.process.command_line
예
ECG 데이터는 이러한 UDM 필드를 사용하여 규칙, 검색, 대시보드에서 ECG 데이터와 UDM 이벤트 데이터를 결합합니다.
예를 들어 '무차별 대입' 모니터링 규칙의 사용자 컨텍스트 데이터를 결합하여 관련 사용자가 '도메인 관리자' 그룹에 속하고 관련 애셋이 도메인 컨트롤러인 경우에만 알림을 표시할 수 있습니다.
events:
$fail.metadata.event_type = "USER_LOGIN"
$fail.metadata.vendor_name = "Microsoft"
$fail.principal.hostname = $hostname
$fail.target.user.userid = $target_user
$fail.security_result.action = "BLOCK"
$fail.metadata.product_event_type = "4625"
$fail.metadata.event_timestamp.seconds < $success.metadata.event_timestamp.seconds
$success.metadata.event_type = "USER_LOGIN"
$success.metadata.vendor_name = "Microsoft"
$success.target.user.userid = $target_user
$success.principal.hostname = $hostname
$success.security_result.action = "ALLOW"
$success.metadata.product_event_type = "4624"
$user.graph.entity.user.userid = $target_user
$user.graph.metadata.entity_type = "USER"
$user.graph.metadata.source_type = "ENTITY_CONTEXT"
any $user.graph.relations.entity.group.group_display_name = "Domain Admins"
$asset.graph.entity.asset.hostname = $hostname
$asset.graph.metadata.entity_type = "ASSET"
$asset.graph.metadata.source_type = "ENTITY_CONTEXT"
any $asset.graph.relations.entity.group.group_display_name = "Domain Controllers"
match:
$target_user, $hostname over 15m
condition:
#fail > 4 and $success and $user and $asset
파생 컨텍스트 보강
Google SecOps는 모든 네임스페이스의 각 항목에 대해 조직의 이벤트 데이터에서 동적 이벤트 기반 추론 데이터를 생성합니다. 별칭 정보, 내부 보강 프로세스의 데이터, 보안 이벤트 데이터를 사용하여 관계 (예: IP address을 사용하는 asset)를 설정합니다. 이 프로세스는 항목 프로필을 개선하기 위해 유용한 컨텍스트를 추가합니다.
예를 들어 entity.file.sha256를 file (hash) 항목에 추가하고 (principal or target).ip_geo_artifact.location.country_or_region를 network (geolocation) 항목에 추가합니다.
Google SecOps는 수집된 활동의 여러 지표를 분석하여 컨텍스트 정보로 이벤트를 보강합니다. 중요한 보강 기능을 실행하여 유병률 통계와 같은 항목 희소성 측정항목과 first-seen-time, last-seen-time과 같은 시간 측정항목을 생성합니다.
발생률 통계
ECG는 기존 데이터와 수신 데이터를 분석하여 발생률 측정항목을 파생 컨텍스트 필드로 계산하고 저장하는 역할도 담당합니다. 이러한 측정항목은 환경 전반에서 domain, file hash, IP address과 같은 항목의 숫자 '인기도' 값을 나타냅니다. 인기 있는 항목은 일반적으로 악성일 가능성이 낮으므로 이를 통해 드물거나 비정상적인 활동을 파악할 수 있습니다.
Google SecOps는 이러한 통계를 정기적으로 업데이트하고 별도의 항목 컨텍스트에 저장합니다. 감지 엔진은 이러한 값을 사용할 수 있으며 UDM 쿼리 구문을 사용하여 검색할 수 있습니다. 하지만 Console에는 이러한 값이 다른 항목 세부정보와 함께 표시되지 않습니다.
감지 엔진 규칙을 만들 때 다음 필드를 사용할 수 있습니다.
| 항목 유형 | UDM 필드 |
|---|---|
| 도메인 | entity.domain.prevalence.day_count
entity.domain.prevalence.day_max
entity.domain.prevalence.day_max_sub_domains
entity.domain.prevalence.rolling_max
entity.domain.prevalence.rolling_max_sub_domains |
| 파일(해시) | entity.file.prevalence.day_count
entity.file.prevalence.day_max
entity.file.prevalence.rolling_max |
| IP 주소 | entity.artifact.prevalence.day_count
entity.artifact.prevalence.day_max
entity.artifact.prevalence.rolling_max |
Google SecOps는 다음과 같이 day_max 및 rolling_max 값을 다르게 계산합니다.
day_max는 하루 동안 아티팩트의 최대 발생률 점수입니다(하루는 오전 12:00:00~오후 11:59:59(UTC)로 정의됨).rolling_max는 이전 10일 동안의 아티팩트에서 일일 최대 발생률 점수 (예:day_max)입니다.- 시스템은
day_count를 사용하여rolling_max를 계산하며 값은 항상 10입니다.
시스템에서 domain의 값을 계산할 때 day_max과 day_max_sub_domains (및 rolling_max과 rolling_max_sub_domains)의 차이는 다음과 같습니다.
rolling_max및day_max는 지정된 도메인에 액세스하는 일일 순 내부 IP 주소 수를 나타냅니다 (하위 도메인 제외).rolling_max_sub_domains및day_max_sub_domains는 지정된 도메인 (하위 도메인 포함)에 액세스하는 순 내부 IP 주소의 수를 나타냅니다.
Google SecOps는 새로 수집된 항목 데이터를 사용하여 발생률 통계를 계산합니다. Google SecOps는 이전에 수집된 데이터에 대해 소급해서 계산을 수행하지 않습니다. Google SecOps에서 통계를 계산하고 저장하는 데 약 36시간이 걸립니다.
예
ECG는 관련 컨텍스트 데이터를 규칙 또는 검색에 조인하기 위해 이러한 UDM 필드를 요구합니다. ECG 관련 데이터를 모두 UDM 이벤트 데이터에 명시적으로 조인해야 합니다.
예를 들어 심전도의 prevalence 데이터를 사용하여 보안 로그에서 '드문' 도메인에 대한 연결을 확인할 수 있습니다.
$dns.metadata.event_type = "NETWORK_DNS"
$dns.network.dns.questions.name != ""
$dns.network.dns.questions.name = $domain
$prevalence.graph.metadata.entity_type = "DOMAIN_NAME"
$prevalence.graph.metadata.source_type = "DERIVED_CONTEXT"
$prevalence.graph.entity.hostname = $domain
$prevalence.graph.entity.domain.prevalence.day_count = 10
$prevalence.graph.entity.domain.prevalence.rolling_max > 0
$prevalence.graph.entity.domain.prevalence.rolling_max <= 3
match:
$domain over 5m
condition:
$dns and $prevalence
항목의 최초 발견 시간 및 최근 발견 시간
Google SecOps는 수신 데이터를 분석하여 다음 중요 필드로 항목 컨텍스트 레코드를 보강합니다.
first-seen-time: 항목이 환경에 처음 표시된 날짜와 시간입니다.last-seen-time: 가장 최근 관측의 날짜와 시간입니다.
이러한 파생 필드를 사용하면 domain, file hash, asset, user 또는 IP address 항목 전반에서 활동을 상호 연관시킬 수 있습니다.
시스템은 이러한 값을 다음 UDM 필드에 저장합니다.
| 항목 유형 | UDM 필드 |
|---|---|
| 도메인 | entity.domain.first_seen_timeentity.domain.last_seen_time |
| 파일(해시) | entity.file.first_seen_timeentity.file.last_seen_time |
| IP 주소 | entity.artifact.first_seen_timeentity.artifact.last_seen_time |
| 확장 소재 | entity.asset.first_seen_time |
| 사용자 | entity.user.first_seen_time |
최초 발견 시간 및 최근 발견 시간 계산 예외:
asset및user항목의 경우 Google SecOps는last_seen_time필드가 아닌first_seen_time필드만 채웁니다.- Google SecOps에서는 개별 네임스페이스 내의 각 항목에 대한 통계를 계산하지 않습니다.
- Google SecOps는 이러한 통계를 BigQuery의 Google SecOps
events스키마로 내보내지 않습니다. - Google SecOps는
group또는resource과 같은 다른 항목 유형에 대해서는 이러한 값을 계산하지 않습니다.
글로벌 컨텍스트 보강
이러한 소스에는 내부 및 서드 파티 글로벌 소스의 외부 위협 인텔리전스 및 평판 데이터가 포함됩니다.
Google 위협 인텔리전스 데이터 수집
Google SecOps는 Google 위협 인텔리전스 (GTI) 데이터 소스에서 데이터를 수집하고 환경에서 활동을 조사하기 위한 컨텍스트 정보를 제공합니다.
다음 데이터 소스를 쿼리합니다.
- GTI Tor 종료 노드: 알려진 Tor 종료 노드인 IP 주소입니다.
- GTI Benign 바이너리: 원래 운영체제 배포의 일부이거나 공식 운영체제 패치에 의해 업데이트된 파일입니다. 자급자족식 공격에서 흔히 사용되는 활동을 통해 공격자가 악용한 일부 공식 운영체제 바이너리(예: 초기 진입 벡터에 중점을 둔 바이너리)는 이 데이터 소스에서 제외됩니다.
- GTI 원격 액세스 도구: 악의적인 행위자가 자주 사용하는 파일입니다. 이러한 도구는 일반적으로 합법적인 애플리케이션이지만 때때로 손상된 시스템에 원격으로 연결하기 위해 악용되는 경우가 있습니다.
시스템은 이 문맥 데이터를 전역적으로 항목으로 저장합니다. 감지 엔진 규칙을 사용하여 데이터를 쿼리할 수 있습니다. 다음 UDM 필드와 값을 규칙에 포함하여 이러한 전역 항목을 쿼리합니다.
graph.metadata.vendor_name=Google Threat Intelligencegraph.metadata.product_name=GTI Feed
시간 표시 Google Threat Intelligence 데이터 소스와 시간 표시가 없는 Google Threat Intelligence 데이터 소스
Google 위협 인텔리전스 데이터 소스에는 시간 표시가 있는 유형과 시간 표시가 없는 유형이 있습니다.
시간 데이터 소스의 각 항목에는 연결된 기간이 있습니다. Google SecOps에서 1일 차에 감지를 생성하는 경우 향후 어느 날이든 Google SecOps는 RetroHunt 중에 1일 차에 대해 동일한 감지를 생성할 것으로 예상합니다.
시간 표시가 없는 데이터 소스에는 연결된 기간이 없습니다. 최신 데이터 세트만 고려하면 되기 때문입니다. 시스템은 일반적으로 파일 해시와 같이 변경되지 않을 것으로 예상되는 데이터에 시간 표시가 없는 데이터 소스를 사용합니다. Google SecOps에서 1일 차에 감지를 생성하지 않은 경우 새 항목이 시간 제한이 없는 데이터 소스에 추가되었기 때문에 2일 차에 RetroHunt 중에 1일 차에 대한 감지가 생성될 수 있습니다.
Tor 종료 노드 IP 주소에 관한 데이터
Google SecOps는 알려진 Tor 종료 노드인 IP 주소를 수집하고 저장합니다. Tor 종료 노드는 트래픽이 Tor 네트워크를 나가는 지점입니다. Tor 종료 노드 데이터는 시간이 지정됩니다.
Google SecOps는 이 데이터 소스에서 수집된 정보를 다음 UDM 필드에 저장합니다.
| UDM 필드 | 설명 |
|---|---|
<variable_name>.graph.metadata.vendor_name |
Google Threat Intelligence 값을 저장합니다. |
<variable_name>.graph.metadata.product_name |
GTI Feed 값을 저장합니다. |
<variable_name>.graph.metadata.threat.threat_feed_name |
Tor Exit Nodes 값을 저장합니다. |
<variable_name>.graph.entity.artifact.ip |
GTI 데이터 소스에서 수집된 IP 주소를 저장합니다. |
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "GTI Feed"
graph.metadata.threat.threat_feed_name = "Tor Exit Nodes"
양성 운영체제 파일에 관한 데이터
Google SecOps는 GTI Benign 바이너리 데이터 소스에서 파일 해시를 수집하고 저장합니다. Google SecOps는 이 데이터 소스에서 수집된 정보를 다음 UDM 필드에 저장합니다. 양성 바이너리 데이터는 시간이 표시되지 않습니다.
| UDM 필드 | 설명 |
|---|---|
<variable_name>.graph.metadata.vendor_name |
Google Threat Intelligence 값을 저장합니다. |
<variable_name>.graph.metadata.product_name |
GTI Feed 값을 저장합니다. |
<variable_name>.graph.metadata.threat.threat_feed_name |
Benign Binaries 값을 저장합니다. |
<variable_name>.graph.entity.file.sha256 |
파일의 SHA256 해시 값을 저장합니다. |
<variable_name>.graph.entity.file.sha1 |
파일의 SHA-1 해시 값을 저장합니다. |
<variable_name>.graph.entity.file.md5 |
파일의 MD5 해시 값을 저장합니다. |
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "GTI Feed"
graph.metadata.threat.threat_feed_name = "Benign Binaries"
원격 액세스 도구에 관한 데이터
원격 액세스 도구에는 악의적인 행위자가 자주 사용한 VNC 클라이언트와 같은 알려진 원격 액세스 도구의 파일 해시가 포함됩니다. 이러한 도구는 일반적으로 합법적인 애플리케이션이지만 때때로 손상된 시스템에 원격으로 연결하기 위해 악용되는 경우가 있습니다. Google SecOps는 이 데이터 소스에서 수집된 정보를 다음 UDM 필드에 저장합니다. 원격 액세스 도구 데이터는 시간이 표시되지 않습니다.
| UDM 필드 | 설명 |
|---|---|
<variable_name>.graph.metadata.vendor_name |
Google Threat Intelligence 값을 저장합니다. |
<variable_name>.graph.metadata.product_name |
GTI Feed 값을 저장합니다. |
<variable_name>.graph.metadata.threat.threat_feed_name |
Remote Access Tools 값을 저장합니다. |
<variable_name>.graph.entity.file.sha256 |
파일의 SHA256 해시 값을 저장합니다. |
<variable_name>.graph.entity.file.sha1 |
파일의 SHA-1 해시 값을 저장합니다. |
<variable_name>.graph.entity.file.md5 |
파일의 MD5 해시 값을 저장합니다. |
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "GTI Feed"
graph.metadata.threat.threat_feed_name = "Remote Access Tools"
세이프 브라우징 위협 목록에서 정보로 항목 보강
Google SecOps는 파일 해시와 관련된 세이프 브라우징의 데이터를 수집합니다. Google SecOps는 각 파일의 데이터를 항목으로 저장하고 파일에 대한 추가적인 정보를 제공합니다. 이 항목 컨텍스트 데이터를 쿼리하는 감지 엔진 규칙을 만들어 컨텍스트 인식 분석을 빌드할 수 있습니다.
Google SecOps는 다음 정보를 항목 컨텍스트 레코드와 함께 저장합니다.
| UDM 필드 | 설명 |
|---|---|
entity.metadata.product_entity_id |
항목에 대한 고유 식별자입니다. |
entity.metadata.entity_type |
이 값은 FILE이며, 항목이 파일을 설명함을 나타냅니다.
|
entity.metadata.collected_timestamp |
엔티티가 관찰되거나 이벤트가 발생한 날짜와 시간입니다. |
entity.metadata.interval |
이 데이터가 유효한 시작 시간과 종료 시간을 저장합니다. 위협 목록 콘텐츠는 시간이 지나면서 변경되므로 start_time 및 end_time은 항목에 대한 데이터가 유효한 시간 간격을 반영합니다. 예를 들어 start_time과 end_time 사이에 파일 해시가 악의적이거나 의심스러운 것으로 관찰되었습니다. |
entity.metadata.threat.category |
Google SecOps SecurityCategory. 시스템은 이를 다음 값 중 하나 이상으로 설정합니다.
|
entity.metadata.threat.severity |
Google SecOps ProductSeverity입니다.
값이 CRITICAL이면 아티팩트가 악의적인 것으로 보임을 나타냅니다.
값이 지정되지 않으면 아티팩트가 악의적임을 나타내는 충분한 신뢰도가 없습니다.
|
entity.metadata.product_name |
Google Safe Browsing 값을 저장합니다. |
entity.file.sha256 |
파일의 SHA256 해시 값입니다. |
규칙 예시
events:
// find a process launch event, match on hostname
$execution.metadata.event_type = "PROCESS_LAUNCH"
$execution.target.process.file.sha256 != ""
$execution.principal.hostname = $hostname
// join execution event with Safe Browsing graph
$sb.graph.entity.file.sha256 = $execution.target.process.file.sha256
// look for files deemed malicious
$sb.graph.metadata.entity_type = "FILE"
$sb.graph.metadata.threat.severity = "CRITICAL"
$sb.graph.metadata.product_name = "Google Safe Browsing"
match:
$hostname over 5m
condition:
$execution and $sb
WHOIS 데이터로 항목 보강
시스템은 중요한 기능으로 WHOIS 데이터 보강을 매일 실행합니다. WHOIS 데이터는 시간 표시가 있는 데이터와 시간 표시가 없는 데이터로 구성됩니다.
기기 데이터를 수집하는 동안 Google SecOps는 도메인을 WHOIS 데이터와 비교하여 평가합니다. 도메인이 일치하면 Google SecOps에서 관련 WHOIS 데이터를 도메인의 항목 레코드와 함께 저장합니다. entity.metadata.entity_type = DOMAIN_NAME가 있는 각 항목에 대해 Google SecOps는 WHOIS 정보로 항목을 보강합니다.
Google SecOps는 항목 레코드의 다음 필드에 보강된 WHOIS 데이터를 채웁니다.
entity.domain.admin.attribute.labelsentity.domain.audit_update_timeentity.domain.billing.attribute.labelsentity.domain.billing.office_address.country_or_regionentity.domain.contact_emailentity.domain.creation_timeentity.domain.expiration_timeentity.domain.iana_registrar_identity.domain.name_serverentity.domain.private_registrationentity.domain.registrant.company_nameentity.domain.registrant.office_address.stateentity.domain.registrant.office_address.country_or_regionentity.domain.registrant.email_addressesentity.domain.registrant.user_display_nameentity.domain.registrarentity.domain.registry_data_raw_textentity.domain.statusentity.domain.tech.attribute.labelsentity.domain.update_timeentity.domain.whois_record_raw_textentity.domain.whois_serverentity.domain.zone
Google SecOps는 global context WHOIS 레코드의 registrant, creation, expiration time 데이터로 domain 항목 (entity.metadata.entity_type = "DOMAIN_NAME")을 보강합니다.
이러한 필드에 대한 설명은 통합 데이터 모델 필드 목록 문서를 참고하세요.
검색 예시
graph.metadata.source_type ="GLOBAL_CONTEXT"
graph.metadata.product_name = "WHOISXMLAPI Simple Whois"
graph.entity.domain.registry_data_raw_text != b""
권장사항: 전역 컨텍스트가 풍부한 데이터 소스 식별
규칙 성능을 개선하려면 전역 컨텍스트 보강 소스의 데이터를 사용하는 규칙에 필터를 포함하여 특정 보강 유형 또는 소스를 식별하세요.
다음 필터 매개변수는 보강 유형 또는 소스를 식별합니다. entity_type, product_name, vendor_name
예를 들어 WHOIS 데이터를 조인하는 규칙의 events 섹션에 다음 필터 필드를 포함합니다.
$enrichment.graph.metadata.entity_type = "DOMAIN_NAME"
$enrichment.graph.metadata.product_name = "WHOISXMLAPI Simple Whois"
$enrichment.graph.metadata.vendor_name = "WHOIS"
항목 컨텍스트 그래프 제한사항 및 제안사항
문맥적으로 보강된 데이터를 사용할 때는 다음과 같은 ECG 동작을 고려하세요.
- 항목 데이터에 간격을 추가하지 마세요. 대신 ECG에서 간격을 만들 수 있습니다. 별도로 지정하지 않는 한 Google SecOps에서 중복 삭제 중에 간격을 생성하기 때문입니다.
- 간격을 지정하면 Google SecOps에서 동일한 이벤트만 중복 삭제하고 최신 항목을 보관합니다.
- 실시간 규칙 및 RetroHunt가 예상대로 작동하게 하려면 항목을 최소한 하루에 한 번 이상 수집해야 합니다.
- 항목을 매일 수집하지 않고 2일 이상에 한 번만 수집하면 실시간 규칙이 예상대로 작동할 수 있지만 RetroHunt에서 일부 이벤트 컨텍스트가 손실될 수 있습니다.
- 동일한 항목을 하루에 두 번 이상 수집하면 Google SecOps에서 단일 항목으로 중복 삭제합니다.
- 이벤트 데이터가 하루 동안 누락되면 Google SecOps에서 실시간 규칙이 올바르게 작동하도록 전날 데이터를 일시적으로 사용합니다.
일반적인 Google SecOps 서비스 한도에 대한 자세한 내용은 서비스 한도를 참고하세요.
관련 외부 콘텐츠
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.