Skip to content

cortex xdr render #194

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Sep 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions uncoder-core/app/translator/core/exceptions/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ def __init__(self, platform_name: str, fields: list[str], mapping: Optional[str]
super().__init__(message)


class UnsupportedMappingsException(BasePlatformException):
def __init__(self, platform_name: str, mappings: list[str]):
message = f"Platform {platform_name} does not support these mappings: {mappings}."
super().__init__(message)


class StrictPlatformFieldException(BasePlatformException):
def __init__(self, platform_name: str, field_name: str):
message = f"Source field `{field_name}` has no mapping for platform {platform_name}."
Expand Down
32 changes: 29 additions & 3 deletions uncoder-core/app/translator/core/mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, Optional, TypeVar, Union

from app.translator.core.exceptions.core import StrictPlatformException
from app.translator.core.exceptions.core import StrictPlatformException, UnsupportedMappingsException
from app.translator.core.models.platform_details import PlatformDetails
from app.translator.mappings.utils.load_from_files import LoaderFileMappings

Expand Down Expand Up @@ -116,7 +116,7 @@ def prepare_mapping(self) -> dict[str, SourceMapping]:
default_mapping = SourceMapping(source_id=DEFAULT_MAPPING_NAME)
for mapping_dict in self._loader.load_platform_mappings(self._platform_dir):
log_source_signature = self.prepare_log_source_signature(mapping=mapping_dict)
if (source_id := mapping_dict.get("source")) == DEFAULT_MAPPING_NAME:
if (source_id := mapping_dict["source"]) == DEFAULT_MAPPING_NAME:
default_mapping.log_source_signature = log_source_signature
if self.skip_load_default_mappings:
continue
Expand Down Expand Up @@ -152,7 +152,7 @@ def prepare_fields_mapping(field_mapping: dict) -> FieldsMapping:
def prepare_log_source_signature(self, mapping: dict) -> LogSourceSignature:
raise NotImplementedError("Abstract method")

def get_suitable_source_mappings(
def get_source_mappings_by_fields_and_log_sources(
self, field_names: list[str], log_sources: dict[str, list[Union[int, str]]]
) -> list[SourceMapping]:
by_log_sources_and_fields = []
Expand All @@ -170,6 +170,17 @@ def get_suitable_source_mappings(

return by_log_sources_and_fields or by_fields or [self._source_mappings[DEFAULT_MAPPING_NAME]]

def get_source_mappings_by_ids(self, source_mapping_ids: list[str]) -> list[SourceMapping]:
source_mappings = []
for source_mapping_id in source_mapping_ids:
if source_mapping := self.get_source_mapping(source_mapping_id):
source_mappings.append(source_mapping)

if not source_mappings:
source_mappings = [self.get_source_mapping(DEFAULT_MAPPING_NAME)]

return source_mappings

def get_source_mapping(self, source_id: str) -> Optional[SourceMapping]:
return self._source_mappings.get(source_id)

Expand Down Expand Up @@ -218,3 +229,18 @@ def prepare_mapping(self) -> dict[str, SourceMapping]:
)

return source_mappings


class BaseStrictLogSourcesPlatformMappings(ABC, BasePlatformMappings):
def get_source_mappings_by_ids(self, source_mapping_ids: list[str]) -> list[SourceMapping]:
source_mappings = []
for source_mapping_id in source_mapping_ids:
if source_mapping_id == DEFAULT_MAPPING_NAME:
continue
if source_mapping := self.get_source_mapping(source_mapping_id):
source_mappings.append(source_mapping)

if not source_mappings:
raise UnsupportedMappingsException(platform_name=self.details.name, mappings=source_mapping_ids)

return source_mappings
4 changes: 3 additions & 1 deletion uncoder-core/app/translator/core/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ def get_source_mappings(
self, field_tokens: list[Field], log_sources: dict[str, list[Union[int, str]]]
) -> list[SourceMapping]:
field_names = [field.source_name for field in field_tokens]
source_mappings = self.mappings.get_suitable_source_mappings(field_names=field_names, log_sources=log_sources)
source_mappings = self.mappings.get_source_mappings_by_fields_and_log_sources(
field_names=field_names, log_sources=log_sources
)
self.tokenizer.set_field_tokens_generic_names_map(field_tokens, source_mappings, self.mappings.default_mapping)
return source_mappings
15 changes: 2 additions & 13 deletions uncoder-core/app/translator/core/render.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
from app.translator.core.exceptions.parser import UnsupportedOperatorException
from app.translator.core.exceptions.render import UnsupportedRenderMethod
from app.translator.core.functions import PlatformFunctions
from app.translator.core.mapping import DEFAULT_MAPPING_NAME, BasePlatformMappings, LogSourceSignature, SourceMapping
from app.translator.core.mapping import BasePlatformMappings, LogSourceSignature, SourceMapping
from app.translator.core.models.functions.base import Function, RenderedFunctions
from app.translator.core.models.platform_details import PlatformDetails
from app.translator.core.models.query_container import MetaInfoContainer, RawQueryContainer, TokenizedQueryContainer
Expand Down Expand Up @@ -384,17 +384,6 @@ def finalize(self, queries_map: dict[str, str]) -> str:

return result

def _get_source_mappings(self, source_mapping_ids: list[str]) -> Optional[list[SourceMapping]]:
source_mappings = []
for source_mapping_id in source_mapping_ids:
if source_mapping := self.mappings.get_source_mapping(source_mapping_id):
source_mappings.append(source_mapping)

if not source_mappings:
source_mappings = [self.mappings.get_source_mapping(DEFAULT_MAPPING_NAME)]

return source_mappings

def generate_from_raw_query_container(self, query_container: RawQueryContainer) -> str:
return self.finalize_query(
prefix="", query=query_container.query, functions="", meta_info=query_container.meta_info
Expand Down Expand Up @@ -464,7 +453,7 @@ def _generate_from_tokenized_query_container_by_source_mapping(
def generate_from_tokenized_query_container(self, query_container: TokenizedQueryContainer) -> str:
queries_map = {}
errors = []
source_mappings = self._get_source_mappings(query_container.meta_info.source_mapping_ids)
source_mappings = self.mappings.get_source_mappings_by_ids(query_container.meta_info.source_mapping_ids)

for source_mapping in source_mappings:
try:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
platform: Palo Alto Cortex XDR
source: default


default_log_source:
datamodel: datamodel
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: linux_file_event

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: linux_process_creation

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: macos_file_event

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: macos_process_creation

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: windows_file_event

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: windows_process_creation

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XDR
source: windows_registry_event

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: apache_httpd


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: apache_tomcat


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: aws_cloudtrail


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: aws_eks


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: azure_aadnoninteractiveusersigninlogs


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: azure_azureactivity


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: azure_azuread


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: azure_m365


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: azure_signinlogs


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: default


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: dns

default_log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: firewall

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
platform: Palo Alto Cortex XSIAM
source: linux_file_event

log_source:
preset: xdr_file

default_log_source:
preset: xdr_file

field_mapping:
TargetFilename: action_file_name
SourceFilename: action_file_previous_file_name
User: actor_effective_username
CommandLine: actor_process_image_command_line
Image: actor_process_image_path
LogonId: actor_process_logon_id
Product: actor_process_signature_product
Company: actor_process_signature_vendor
IntegrityLevel: actor_process_integrity_level
CurrentDirectory: actor_process_cwd
ProcessId: actor_process_os_id
ParentProcessId: causality_actor_process_os_id
ParentCommandLine: causality_actor_process_command_line
ParentImage: causality_actor_process_image_path
ParentUser: causality_actor_effective_username
ParentIntegrityLevel: causality_actor_process_integrity_level
ParentLogonId: causality_actor_process_logon_id
ParentProduct: causality_actor_process_signature_product
ParentCompany: causality_actor_process_signature_vendor
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: linux_network_connection

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
platform: Palo Alto Cortex XSIAM
source: linux_process_creation

log_source:
preset: xdr_process

default_log_source:
preset: xdr_process

field_mapping:
User: action_process_username
CommandLine: action_process_image_command_line
Image: action_process_image_path
LogonId: action_process_logon_id
Product: action_process_signature_product
Company: action_process_signature_vendor
IntegrityLevel: action_process_integrity_level
CurrentDirectory: action_process_cwd
ProcessId: action_process_os_pid
ParentProcessId: actor_process_os_pid
ParentCommandLine: actor_process_image_command_line
ParentImage: actor_process_image_path
ParentUser: actor_effective_username
ParentIntegrityLevel: actor_process_integrity_level
ParentLogonId: actor_process_logon_id
ParentProduct: actor_process_signature_product
ParentCompany: actor_process_signature_vendor
md5: action_process_image_md5
sha256: action_process_image_sha256
EventID: action_evtlog_event_id
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
platform: Palo Alto Cortex XSIAM
source: macos_file_event

log_source:
preset: xdr_file

default_log_source:
preset: xdr_file

field_mapping:
TargetFilename: action_file_name
SourceFilename: action_file_previous_file_name
User: actor_effective_username
CommandLine: actor_process_image_command_line
Image: actor_process_image_path
LogonId: actor_process_logon_id
Product: actor_process_signature_product
Company: actor_process_signature_vendor
IntegrityLevel: actor_process_integrity_level
CurrentDirectory: actor_process_cwd
ProcessId: actor_process_os_id
ParentProcessId: causality_actor_process_os_id
ParentCommandLine: causality_actor_process_command_line
ParentImage: causality_actor_process_image_path
ParentUser: causality_actor_effective_username
ParentIntegrityLevel: causality_actor_process_integrity_level
ParentLogonId: causality_actor_process_logon_id
ParentProduct: causality_actor_process_signature_product
ParentCompany: causality_actor_process_signature_vendor
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: macos_network_connection

log_source:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
platform: Palo Alto Cortex XSIAM
source: macos_process_creation

log_source:
preset: xdr_process

default_log_source:
preset: xdr_process

field_mapping:
User: action_process_username
CommandLine: action_process_image_command_line
Image: action_process_image_path
LogonId: action_process_logon_id
Product: action_process_signature_product
Company: action_process_signature_vendor
IntegrityLevel: action_process_integrity_level
CurrentDirectory: action_process_cwd
ProcessId: action_process_os_pid
ParentProcessId: actor_process_os_pid
ParentCommandLine: actor_process_image_command_line
ParentImage: actor_process_image_path
ParentUser: actor_effective_username
ParentIntegrityLevel: actor_process_integrity_level
ParentLogonId: actor_process_logon_id
ParentProduct: actor_process_signature_product
ParentCompany: actor_process_signature_vendor
md5: action_process_image_md5
sha256: action_process_image_sha256
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: nginx_nginx


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: okta_okta


Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform: Palo Alto XSIAM
platform: Palo Alto Cortex XSIAM
source: proxy

default_log_source:
Expand Down
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy