Skip to content

Commit 4dff1e1

Browse files
authored
Merge branch 'main' into gis-8825
2 parents 4f8ab8f + 8ea81ff commit 4dff1e1

18 files changed

+358
-47
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from typing import Union
2+
3+
from app.translator.core.const import QUERY_TOKEN_TYPE
4+
from app.translator.core.custom_types.tokens import LogicalOperatorType, OperatorType
5+
from app.translator.core.mapping import SourceMapping
6+
from app.translator.core.models.query_tokens.field_value import FieldValue
7+
from app.translator.core.models.query_tokens.identifier import Identifier
8+
9+
10+
class ExtraConditionMixin:
11+
def generate_extra_conditions(self, source_mapping: SourceMapping) -> list[QUERY_TOKEN_TYPE]:
12+
extra_tokens = []
13+
for field, value in source_mapping.conditions.items():
14+
extra_tokens.extend(
15+
[
16+
FieldValue(source_name=field, operator=Identifier(token_type=OperatorType.EQ), value=value),
17+
Identifier(token_type=LogicalOperatorType.AND),
18+
]
19+
)
20+
return extra_tokens

uncoder-core/app/translator/core/render.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,9 @@ def process_raw_log_field_prefix(self, field: str, source_mapping: SourceMapping
403403
if raw_log_field_type := source_mapping.raw_log_fields.get(field):
404404
return [self.process_raw_log_field(field=field, field_type=raw_log_field_type)]
405405

406+
def generate_extra_conditions(self, source_mapping: SourceMapping) -> list[QUERY_TOKEN_TYPE]: # noqa: ARG002
407+
return []
408+
406409
def generate_raw_log_fields(self, fields: list[Field], source_mapping: SourceMapping) -> str:
407410
if not self.raw_log_field_patterns_map:
408411
return ""
@@ -442,6 +445,9 @@ def _generate_from_tokenized_query_container_by_source_mapping(
442445
source_mapping=source_mapping,
443446
)
444447
prefix += f"\n{defined_raw_log_fields}"
448+
if source_mapping.conditions:
449+
extra_tokens = self.generate_extra_conditions(source_mapping=source_mapping)
450+
query_container.tokens = [*extra_tokens, *query_container.tokens]
445451
query = self.generate_query(tokens=query_container.tokens, source_mapping=source_mapping)
446452
not_supported_functions = query_container.functions.not_supported + rendered_functions.not_supported
447453
return self.finalize_query(
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
platform: ArcSight
2+
source: default
3+
4+
5+
default_log_source: {}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
platform: ArcSight
2+
source: linux_network_connection
3+
4+
5+
default_log_source: {}
6+
7+
8+
field_mapping:
9+
SourceHostname: sourceHostName
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
platform: ArcSight
2+
source: macos_network_connection
3+
4+
5+
default_log_source: {}
6+
7+
8+
field_mapping:
9+
SourceHostname: sourceHostName
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
platform: ArcSight
2+
source: windows_create_remote_thread
3+
4+
5+
default_log_source: {}
6+
7+
8+
field_mapping:
9+
SourceImage: sourceProcessName
10+
TargetImage: destinationProcessName
11+
StartModule: deviceCustomString3
12+
StartAddress: deviceCustomString3
13+
StartFunction: deviceCustomString3
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
platform: ArcSight
2+
source: windows_network_connection
3+
4+
5+
default_log_source: {}
6+
7+
8+
field_mapping:
9+
SourceHostname: sourceHostName
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
platform: ArcSight
2+
source: windows_process_creation
3+
4+
5+
default_log_source: {}
6+
7+
8+
field_mapping:
9+
OriginalFileName: oldFileName
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
platform: ArcSight
2+
source: windows_security
3+
4+
5+
default_log_source: {}
6+
7+
conditions:
8+
deviceVendor: Microsoft
9+
deviceProduct: Microsoft Windows
10+
11+
12+
field_mapping:
13+
EventID: externalId
14+
AccessMask: deviceCustomString1
15+
AccountName: destinationUserName
16+
AuditPolicyChanges: deviceAction
17+
AuthenticationPackageName: deviceCustomString5
18+
EventType: deviceSeverity
19+
FailureReason: deviceCustomString4
20+
IpAddress: sourceAddress
21+
IpPort: sourcePort
22+
LogonProcessName:
23+
- destinationProcessName
24+
- sourceProcessName
25+
LogonType: deviceCustomNumber1
26+
MemberName: destinationUserId
27+
MemberSid: destinationUserName
28+
NewProcessName: destinationProcessName
29+
ObjectClass: deviceCustomString5
30+
ObjectName: fileName
31+
ObjectType: fileType
32+
ObjectValueName: deviceCustomString6
33+
CommandLine: deviceCustomString4
34+
ProcessName: destinationProcessName
35+
Properties: deviceCustomString6
36+
ServiceFileName: filePath
37+
ServiceName: destinationServiceName
38+
ShareName:
39+
- filePath
40+
- deviceCustomString6
41+
Status: eventOutcome
42+
SubjectDomainName: destinationNTDomain
43+
SubjectUserName: destinationUserName
44+
SubjectUserSid: destinationUserName
45+
TargetDomainName: destinationNTDomain
46+
TargetSid: destinationNTDomain
47+
TargetUserName: destinationUserName
48+
TargetUserSid: destinationUserName
49+
TicketEncryptionType: deviceCustomString5
50+
TicketOptions: deviceCustomString1
51+
WorkstationName: sourceHostName
52+
ServiceType: fileType
53+
StartType: deviceCustomString5
54+
ParentProcessName: filePath
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
platform: ArcSight
2+
source: windows_sysmon
3+
4+
5+
default_log_source: {}
6+
7+
conditions:
8+
deviceVendor: Microsoft
9+
deviceProduct: Sysmon
10+
11+
field_mapping:
12+
CommandLine: deviceCustomString1
13+
Image: destinationProcessName
14+
ParentImage: sourceProcessName
15+
EventID: externalId
16+
CallTrace: deviceCustomString3
17+
Company: oldFileType
18+
CurrentDirectory: deviceCustomString3
19+
Description: oldFilePermission
20+
DestinationHostname: destinationHostName
21+
DestinationIp: destinationAddress
22+
DestinationPort: destinationPort
23+
Initiated: deviceCustomString4
24+
IntegrityLevel: deviceCustomString5
25+
ParentCommandLine: deviceCustomString2
26+
Product: destinationServiceName
27+
Protocol: transportProtocol
28+
RuleName: deviceFacility
29+
SourceHostname: sourceHostName
30+
SourceIp: sourceAddress
31+
SourcePort: sourcePort
32+
TargetFilename: fileName
33+
User: sourceUserName
34+
OriginalFileName: oldFileName
35+
Signed: deviceCustomString1
36+
Signature: deviceCustomString2
37+
SignatureStatus: deviceCustomString3
38+
TargetObject: fileName
39+
Details: deviceCustomString1
40+
QueryName:
41+
- requestUrl
42+
- destinationHostName
43+
QueryResults: deviceCustomString1
44+
QueryStatus: deviceCustomNumber1
45+
PipeName: fileName
46+
ImageLoaded: destinationProcessName
47+
SourceImage: sourceProcessName
48+
StartModule: deviceCustomString3
49+
TargetImage: destinationProcessName
50+
EventType: deviceAction

0 commit comments

Comments
 (0)
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