-
Notifications
You must be signed in to change notification settings - Fork 468
Expand file tree
/
Copy pathDataSource.schema.json
More file actions
451 lines (451 loc) · 17.9 KB
/
Copy pathDataSource.schema.json
File metadata and controls
451 lines (451 loc) · 17.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
{
"$defs": {
"ConvertToLogSource": {
"additionalProperties": false,
"description": "Represents a conversion of a data source to a log source.\n\nThese conversions allow raw events from a given data_source to\nbe converted to a another 'compatible' log source. For instance,\nthis may be used to map:\nSysmon Event ID 1\nto one of\n[Windows Event Log Security 4688, Crowdstrike Process]",
"properties": {
"data_source": {
"description": "The data source to convert to a log source.",
"title": "Data Source",
"type": "string"
},
"mapping": {
"additionalProperties": {
"type": "string"
},
"description": "The KEY represents the name of the field in this datasource. The VALUE represents the name of the filed in the target datasource.",
"title": "Mapping",
"type": "object"
}
},
"required": [
"data_source",
"mapping"
],
"title": "ConvertToLogSource",
"type": "object"
},
"DataModelsAndSubmodels": {
"description": "Non-exhaustive list of datamodels/submodels currently in use for data sources.\n\nTODO: Determine how we want to define all the datamodels for data_sources.\nIs All_Traffic a valid datamodel, or should it be Network_Traffic.All_Traffic?\nWhat about DNS vs Network_Resolution?\nThis will likely come from continued discussion with the DLX team as well.",
"enum": [
"DNS",
"All_Traffic",
"Endpoint.Processes",
"Endpoint.Registry",
"Endpoint.Filesystem",
"Web",
"Change",
"Network_Traffic",
"Network_Traffic.All_Traffic",
"Risk.All_Risk",
"Network_Resolution",
"Authentication"
],
"title": "DataModelsAndSubmodels",
"type": "string"
},
"FieldMapping": {
"additionalProperties": false,
"description": "Represents a field mapping for a data source.\n\nThis object uses some overloaded terminology for legacy purposes\nin the naming of the data_set vs data_model fields.\n\nThe \"mapping\" object, specifically, maps a field in the raw\ndata to a field in the target data_set. For instance,\nthis can be used to convert a fields in a RAW data_source\nto equivalent fields in CIM or OCSF.",
"properties": {
"data_set": {
"anyOf": [
{
"$ref": "#/$defs/DataModelsAndSubmodels"
},
{
"type": "null"
}
],
"default": null,
"description": "The Common Information Model (CIM) datamodel that these fields in the mappings below map to."
},
"data_model": {
"$ref": "#/$defs/FieldMappingDataModel",
"description": "The data mode for this mapping. This is used to determine how the data should be mapped."
},
"mapping": {
"additionalProperties": {
"type": "string"
},
"description": "The KEY represents the name of the field in this datasource. The VALUE represents the name of the filed in the target datasource.",
"title": "Mapping",
"type": "object"
}
},
"required": [
"data_model",
"mapping"
],
"title": "FieldMapping",
"type": "object"
},
"FieldMappingDataModel": {
"description": "The data model for this mapping.\n\nFor legacy reasons, the naming of this field, 'data model' is a bit\noverloaded. 'data models' here are not the same as 'CIM Data Models'.\nWe anticipate that this naming may change as as certain DLX requirements\ncontinue to evolve.",
"enum": [
"cim",
"ocsf",
"custom_cim"
],
"title": "FieldMappingDataModel",
"type": "string"
},
"MITREComponent": {
"description": "Represents a MITRE Component.\n\nMITRE Components are derived exhaustively from the following list:\nhttps://misp-galaxy.org/mitre-data-component/\"\n\nTODO: As indicated by the print statement below, we have some annotations that\ndo not exist in the list above. Should these be removed or re-mapped?\nThis print out should continue to occur at runtime until we have\nresolved this TODO.",
"enum": [
"Configuration Modification",
"Cloud Service Creation",
"Scheduled Job Execution",
"Email Metadata",
"Certificate Metadata",
"System Configuration Changes",
"Cloud Service Usage",
"Cloud Service Discovery",
"Security Policy Modification",
"API Calls",
"Active DNS",
"Active Directory Credential Request",
"Active Directory Object Access",
"Active Directory Object Creation",
"Active Directory Object Deletion",
"Active Directory Object Modification",
"Application Assets",
"Application Log Content",
"Certificate Registration",
"Cloud Service Disable",
"Cloud Service Enumeration",
"Cloud Service Metadata",
"Cloud Service Modification",
"Cloud Storage Access",
"Cloud Storage Creation",
"Cloud Storage Deletion",
"Cloud Storage Enumeration",
"Cloud Storage Metadata",
"Cloud Storage Modification",
"Cluster Metadata",
"Command Execution",
"Container Creation",
"Container Enumeration",
"Container Metadata",
"Container Start",
"Domain Registration",
"Drive Access",
"Drive Creation",
"Drive Modification",
"Driver Load",
"Driver Metadata",
"File Access",
"File Creation",
"File Deletion",
"File Metadata",
"File Modification",
"Firewall Disable",
"Firewall Enumeration",
"Firewall Metadata",
"Firewall Rule Modification",
"Firmware Modification",
"Group Enumeration",
"Group Metadata",
"Group Modification",
"Host Status",
"Image Creation",
"Image Deletion",
"Image Metadata",
"Image Modification",
"Instance Creation",
"Instance Deletion",
"Instance Enumeration",
"Instance Metadata",
"Instance Modification",
"Instance Start",
"Instance Stop",
"Kernel Module Load",
"Logon Session Creation",
"Logon Session Metadata",
"Malware Content",
"Malware Metadata",
"Module Load",
"Named Pipe Metadata",
"Network Communication",
"Network Connection Creation",
"Network Share Access",
"Network Traffic Content",
"Network Traffic Flow",
"OS API Execution",
"Passive DNS",
"Permissions Request",
"Permissions Requests",
"Pod Creation",
"Pod Enumeration",
"Pod Metadata",
"Pod Modification",
"Process Access",
"Process Creation",
"Process Metadata",
"Process Modification",
"Process Termination",
"Protected Configuration",
"Response Content",
"Response Metadata",
"Scheduled Job Creation",
"Scheduled Job Metadata",
"Scheduled Job Modification",
"Script Execution",
"Service Creation",
"Service Metadata",
"Service Modification",
"Snapshot Creation",
"Snapshot Deletion",
"Snapshot Enumeration",
"Snapshot Metadata",
"Snapshot Modification",
"Social Media",
"System Notifications",
"System Settings",
"User Account Authentication",
"User Account Creation",
"User Account Deletion",
"User Account Metadata",
"User Account Modification",
"Volume Creation",
"Volume Deletion",
"Volume Enumeration",
"Volume Metadata",
"Volume Modification",
"WMI Creation",
"Web Credential Creation",
"Web Credential Usage",
"Windows Registry Key Access",
"Windows Registry Key Creation",
"Windows Registry Key Deletion",
"Windows Registry Key Modification"
],
"title": "MITREComponent",
"type": "string"
},
"TA": {
"additionalProperties": false,
"description": "Represents a TA object that is required to process this data source.\n\nThis TA, and its specific version, are what the test environment\nshould use for testing purposes. Content must be tested against\nspecific, known versions of given apps/TAs.\n\nTODO: Is there any additional information that we want to include here?\nOr do we want to enrich it further with even more information? A simple\nAPI endpoint that provides lots of Splunkbase infromation is:\nhttps://cdn.splunkbase.splunk.com/public/report/apps_dump.json\nWhich could be used for quick/immediate validations.\n\nTODO: Do we need to support \"local\" apps in data sources that are\nNOT available/validatable via Splunkbase?",
"properties": {
"name": {
"description": "The name of the TA. In proper Splunkbase Terminology, this is the 'title' of the app.",
"title": "Name",
"type": "string"
},
"url": {
"description": "The URL of the TA. For instance, for the Microsoft Sysmon TA this would be https://splunkbase.splunk.com/app/5709/.",
"format": "uri",
"maxLength": 2083,
"minLength": 1,
"title": "Url",
"type": "string"
},
"version": {
"description": "The version of the TA. While most things on Splunkbase are Semantic Versioned, this is not a strict requirement. Via the API at https://splunkbase.splunk.com/app/5709/, this falls under the releases[0][title] field.",
"title": "Version",
"type": "string"
}
},
"required": [
"name",
"url",
"version"
],
"title": "TA",
"type": "object"
}
},
"additionalProperties": false,
"description": "Represents a DataSource object.\n\nDataSources are highly specific, raw data that can power detections in ESCU.\nThey are far more specific than mapping to a specific Data Model. For example,\nan Endpoint.Processes mapping Data Model mapping does not account for whether\na detection only works on Windows, Linux, macOS, or another platform. But a\nDataSource mapping to 'Windows Sysmon EventID 1' for instance, is VERY specific\nand gives high confidence of the EXACT data a detection should work against.",
"properties": {
"name": {
"description": "Each Security Content Object must have a unique name. Due to issues with how local/default stanzas are merged in the Splunk products, these names MUST NOT change between subsequent releases of content packs.",
"title": "Name",
"type": "string"
},
"id": {
"description": "Each Security Content Object must have a unique identifier. This is particularly important when leveraging many of the Content Versioning features built into Enterprise Security 8+. Unique ids may be generated with a python command such as `uuid.uuid4()` or similar.",
"format": "uuid",
"title": "Id",
"type": "string"
},
"version": {
"description": "The version of this object. This number MUST be incremented in the following circumstances:\n1. Any time the object in this file is modified\n2. Any time that the serialization logic for this object changes, changing what is written in its conf file stanza(s)\n3. Any time that an object this object references, for example via enrichment, causes a change in its associated conf file stanzas(s).\nThis final determination is challenging to make manually, so the `contentctl inspect command` will help identify when this a version increment is required.",
"exclusiveMinimum": 0,
"title": "Version",
"type": "integer"
},
"creation_date": {
"description": "The date that this object was created. This should NEVER be updated.",
"format": "date",
"title": "Creation Date",
"type": "string"
},
"modification_date": {
"description": "The date that this object was last modified. This should be updated whenever the object is modified.",
"format": "date",
"title": "Modification Date",
"type": "string"
},
"author": {
"description": "The author of this object. This is a freeform string that can be used to identify the author of the object. It will eventually be replaced by a more detailed Contributors list.",
"title": "Author",
"type": "string"
},
"description": {
"description": "A description of the Security Content Object. This should be a human-readable description of the object, including its purpose.",
"title": "Description",
"type": "string"
},
"references": {
"description": "A list of references to external resources that are relevant to this object. This can include links to documentation, blog posts, or other resources that provide additional context or information about the object.",
"items": {
"format": "uri",
"maxLength": 2083,
"minLength": 1,
"type": "string"
},
"minItems": 0,
"title": "References",
"type": "array",
"uniqueItems": true
},
"mitre_components": {
"description": "The list of MITRE components that this data is related to.",
"items": {
"$ref": "#/$defs/MITREComponent"
},
"title": "Mitre Components",
"type": "array"
},
"source": {
"description": "The Splunk 'source' field for this data.",
"title": "Source",
"type": "string"
},
"sourcetype": {
"description": "The Splunk 'sourcetype' field for this data.",
"title": "Sourcetype",
"type": "string"
},
"separator": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The separator used to parse the data.",
"title": "Separator"
},
"separator_value": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Separator Value"
},
"configuration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Configuration"
},
"supported_TA": {
"description": "The list of Splunk TA(s) that can parse this data. It is STRONGLY suggested to include at least 1 TA here, however some raw data does not have a supporting TA to parse it. In that case, it is acceptable not to populate this list.",
"items": {
"$ref": "#/$defs/TA"
},
"title": "Supported Ta",
"type": "array"
},
"fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The list of fields in this data. While populating this list is STRONGLY suggested, it is not required.",
"title": "Fields"
},
"output_fields": {
"default": [],
"items": {
"type": "string"
},
"title": "Output Fields",
"type": "array"
},
"field_mappings": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/FieldMapping"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The list of mappings from this type of data to another type of data such as cim or OCSF.",
"title": "Field Mappings"
},
"convert_to_log_source": {
"default": [],
"items": {
"$ref": "#/$defs/ConvertToLogSource"
},
"title": "Convert To Log Source",
"type": "array"
},
"example_log": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "An example log for this data. This is helpful, additional documentation so that users can immedaitely understand what the raw data looks like.",
"title": "Example Log"
}
},
"required": [
"name",
"id",
"version",
"creation_date",
"modification_date",
"author",
"description",
"source",
"sourcetype"
],
"title": "DataSource",
"type": "object"
}