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)