@@ -28,9 +28,7 @@ def __init__(self, helper, config):
28
28
MARKING_DEFINITIONS_BY_NAME ["TLP:CLEAR" ],
29
29
)
30
30
31
- def _create_directory (
32
- self , process : harfanglab .Process = None
33
- ) -> opencti .Directory :
31
+ def _create_directory (self , process : harfanglab .Process ) -> opencti .Directory :
34
32
"""
35
33
Create a Directory (STIX2.1 observable, aka SCO) for a given alert's process.
36
34
:param process: Process found in a Harfanglab alert
@@ -43,7 +41,7 @@ def _create_directory(
43
41
)
44
42
return octi_directory
45
43
46
- def _create_domain_name (self , ioc : harfanglab .IocRule = None ) -> opencti .DomainName :
44
+ def _create_domain_name (self , ioc : harfanglab .IocRule ) -> opencti .DomainName :
47
45
"""
48
46
Create a DomainName (STIX2.1 observable, aka SCO) for a given ioc.
49
47
:param ioc: Indicator from Harfanglab
@@ -56,7 +54,7 @@ def _create_domain_name(self, ioc: harfanglab.IocRule = None) -> opencti.DomainN
56
54
)
57
55
return octi_domain_name
58
56
59
- def _create_file (self , process : harfanglab .Process = None ) -> opencti .File :
57
+ def _create_file (self , process : harfanglab .Process ) -> opencti .File :
60
58
"""
61
59
Create a File (STIX2.1 observable, aka SCO) for a given ioc.
62
60
:param process: Process found in a Harfanglab alert
@@ -71,7 +69,7 @@ def _create_file(self, process: harfanglab.Process = None) -> opencti.File:
71
69
)
72
70
return octi_file
73
71
74
- def _create_hostname (self , agent : harfanglab .Agent = None ) -> opencti .Hostname :
72
+ def _create_hostname (self , agent : harfanglab .Agent ) -> opencti .Hostname :
75
73
"""
76
74
Create a Hostname (custom observable, extension of STIX 2.1 observables) for a given alert's agent.
77
75
:param agent: Agent found in a Harfanglab alert
@@ -84,7 +82,7 @@ def _create_hostname(self, agent: harfanglab.Agent = None) -> opencti.Hostname:
84
82
)
85
83
return octi_hostname
86
84
87
- def _create_ipv4 (self , ioc : harfanglab .IocRule = None ) -> opencti .IPv4 :
85
+ def _create_ipv4 (self , ioc : harfanglab .IocRule ) -> opencti .IPv4 :
88
86
"""
89
87
Create an IPv4Address (STIX2.1 observable, aka SCO) for a given ioc.
90
88
:param ioc: Indicator from Harfanglab
@@ -97,7 +95,7 @@ def _create_ipv4(self, ioc: harfanglab.IocRule = None) -> opencti.IPv4:
97
95
)
98
96
return octi_ipv4
99
97
100
- def _create_ipv6 (self , ioc : harfanglab .IocRule = None ) -> opencti .IPv6 :
98
+ def _create_ipv6 (self , ioc : harfanglab .IocRule ) -> opencti .IPv6 :
101
99
"""
102
100
Create an IPv6Address (STIX2.1 observable, aka SCO) for a given ioc.
103
101
:param ioc: Indicator from Harfanglab
@@ -110,7 +108,7 @@ def _create_ipv6(self, ioc: harfanglab.IocRule = None) -> opencti.IPv6:
110
108
)
111
109
return octi_ipv6
112
110
113
- def _create_url (self , ioc : harfanglab .IocRule = None ) -> opencti .Url :
111
+ def _create_url (self , ioc : harfanglab .IocRule ) -> opencti .Url :
114
112
"""
115
113
Create a URL (STIX2.1 observable, aka SCO) for a given ioc.
116
114
:param ioc: Indicator from Harfanglab
@@ -123,9 +121,7 @@ def _create_url(self, ioc: harfanglab.IocRule = None) -> opencti.Url:
123
121
)
124
122
return octi_url
125
123
126
- def _create_user_account (
127
- self , process : harfanglab .Process = None
128
- ) -> opencti .UserAccount :
124
+ def _create_user_account (self , process : harfanglab .Process ) -> opencti .UserAccount :
129
125
"""
130
126
Create a UserAccount (STIX2.1 observable, aka SCO) for a given alert's process.
131
127
:param process: Process found in a Harfanglab alert
@@ -149,7 +145,7 @@ def create_author(self) -> opencti.Author:
149
145
)
150
146
return octi_author
151
147
152
- def create_attack_pattern (self , technique_tag : str = None ) -> opencti .AttackPattern :
148
+ def create_attack_pattern (self , technique_tag : str ) -> opencti .AttackPattern :
153
149
"""
154
150
Create an AttackPattern (STIX 2.1 domain object, aka SDO) for a given technique.
155
151
:param technique_tag: A Yara signature's technique tag
@@ -168,8 +164,8 @@ def create_attack_pattern(self, technique_tag: str = None) -> opencti.AttackPatt
168
164
169
165
def create_case_incident (
170
166
self ,
171
- threat : harfanglab .Threat = None ,
172
- object_refs : list [opencti .BaseModel ] = None ,
167
+ threat : harfanglab .Threat ,
168
+ object_refs : list [opencti .BaseModel ] | None = None ,
173
169
) -> opencti .CaseIncident :
174
170
incident_priority = INCIDENT_PRIORITIES_BY_LEVEL [threat .level ]
175
171
incident_top_agent = threat .top_agents [0 ]
@@ -179,7 +175,9 @@ def create_case_incident(
179
175
description = f"Incident from { self .helper .connect_name } " ,
180
176
severity = threat .level ,
181
177
priority = incident_priority ,
182
- object_refs = [object_ref .id for object_ref in object_refs ],
178
+ object_refs = (
179
+ [object_ref .id for object_ref in object_refs ] if object_refs else []
180
+ ),
183
181
author = self .author ,
184
182
created_at = threat .created_at ,
185
183
object_marking_refs = [self .marking_definition .id ],
@@ -195,10 +193,10 @@ def create_case_incident(
195
193
196
194
def create_incident (
197
195
self ,
198
- alert : harfanglab .Alert = None ,
196
+ alert : harfanglab .Alert ,
199
197
alert_intelligence : (
200
198
harfanglab .IocRule | harfanglab .SigmaRule | harfanglab .YaraSignature
201
- ) = None ,
199
+ ) | None = None ,
202
200
) -> opencti .Incident :
203
201
"""
204
202
Create an Incident (STIX 2.1 domain object, aka SDO) for a given Harfanglab alert and its corresponding ioc.
@@ -240,10 +238,10 @@ def create_incident(
240
238
241
239
def create_indicator (
242
240
self ,
243
- alert : harfanglab .Alert = None ,
241
+ alert : harfanglab .Alert ,
244
242
alert_intelligence : (
245
243
harfanglab .IocRule | harfanglab .SigmaRule | harfanglab .YaraSignature
246
- ) = None ,
244
+ ) | None = None ,
247
245
) -> opencti .Indicator :
248
246
"""
249
247
Create an Indicator (STIX 2.1 domain object, aka SDO) from a Harfanglab alert and its corresponding IOC, Sigma rule or Yara signature.
@@ -290,15 +288,17 @@ def create_indicator(
290
288
291
289
def create_note (
292
290
self ,
293
- threat_note : harfanglab .ThreatNote = None ,
294
- object_refs : list [opencti .BaseModel ] = None ,
291
+ threat_note : harfanglab .ThreatNote ,
292
+ object_refs : list [opencti .BaseModel ] | None = None ,
295
293
) -> opencti .Note :
296
294
case_incident = object_refs [0 ]
297
295
298
296
octi_note = opencti .Note (
299
297
abstract = threat_note .title ,
300
298
content = threat_note .content ,
301
- object_refs = [object_ref .id for object_ref in object_refs ],
299
+ object_refs = (
300
+ [object_ref .id for object_ref in object_refs ] if object_refs else []
301
+ ),
302
302
author = self .author ,
303
303
created_at = threat_note .created_at ,
304
304
updated_at = threat_note .updated_at ,
@@ -309,10 +309,10 @@ def create_note(
309
309
310
310
def create_observables (
311
311
self ,
312
- alert : harfanglab .Alert = None ,
312
+ alert : harfanglab .Alert ,
313
313
alert_intelligence : (
314
314
harfanglab .IocRule | harfanglab .SigmaRule | harfanglab .YaraSignature
315
- ) = None ,
315
+ ) | None = None ,
316
316
):
317
317
"""
318
318
Create STIX 2.1 observables, aka SCO, from a Harfanglab alert and its corresponding IOC, Sigma rule or Yara signature.
@@ -337,8 +337,11 @@ def create_observables(
337
337
observable = self ._create_domain_name (alert_intelligence )
338
338
case "url" :
339
339
observable = self ._create_url (alert_intelligence )
340
- if isinstance (
341
- alert_intelligence , (harfanglab .SigmaRule , harfanglab .YaraSignature )
340
+ if (
341
+ isinstance (
342
+ alert_intelligence , (harfanglab .SigmaRule , harfanglab .YaraSignature )
343
+ )
344
+ and alert .process is not None
342
345
):
343
346
observable = self ._create_file (alert .process )
344
347
@@ -355,8 +358,8 @@ def create_observables(
355
358
356
359
def create_sighting (
357
360
self ,
358
- alert : harfanglab .Alert = None ,
359
- sighted_ref : opencti .BaseModel = None ,
361
+ alert : harfanglab .Alert ,
362
+ sighted_ref : opencti .BaseModel | None = None ,
360
363
) -> opencti .Sighting :
361
364
"""
362
365
Create a Sighting (STIX 2.1 relationship object, aka SRO) for an indicator sighted in a Harfanglab alert.
@@ -383,9 +386,9 @@ def create_sighting(
383
386
384
387
def create_relationship (
385
388
self ,
386
- relationship_type : str = None ,
387
- source : opencti .BaseModel = None ,
388
- target : opencti .BaseModel = None ,
389
+ relationship_type : str ,
390
+ source : opencti .BaseModel ,
391
+ target : opencti .BaseModel ,
389
392
) -> opencti .Relationship :
390
393
"""
391
394
Create a Relationship (STIX 2.1 relationship object, aka SRO).
0 commit comments