diff --git a/CHANGELOG.md b/CHANGELOG.md
index b7e427fa4..8e34c8f9b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -42,6 +42,7 @@ Thankyou! -->
### Added
* #### Event Classes
1. Added `OSINT Inventory Info` event class to the Discovery category. #1154
+ 2. Added `Script Activity` event class to the System category. #1159
### Improved
* #### Objects
diff --git a/dictionary.json b/dictionary.json
index 2ced1b5ed..8a6c390f7 100644
--- a/dictionary.json
+++ b/dictionary.json
@@ -3199,6 +3199,11 @@
"description": "The parent process of this process object. It is recommended to only populate this field for the first process object, to prevent deep nesting.",
"type": "process"
},
+ "parent_uid": {
+ "caption": "Parent Unique ID",
+ "description": "The unique identifier of an object's parent object. See specific usage.",
+ "type": "string_t"
+ },
"path": {
"caption": "Path",
"description": "The path that pertains to the event or object. See specific usage.",
@@ -3925,6 +3930,17 @@
}
}
},
+ "script": {
+ "caption": "Script",
+ "description": "The script object.",
+ "type": "script"
+ },
+ "script_content": {
+ "observable": 36,
+ "caption": "Script Content",
+ "description": "The script content, normalized to UTF-8 encoding irrespective of its original encoding.",
+ "type": "string_t"
+ },
"section_a": {
"caption": "JA4 Section A",
"description": "The 'a' section of the JA4 fingerprint.",
diff --git a/events/system/script.json b/events/system/script.json
new file mode 100644
index 000000000..06830137d
--- /dev/null
+++ b/events/system/script.json
@@ -0,0 +1,21 @@
+{
+ "caption": "Script Activity",
+ "description": "Script Activity events report when a process executes a script.",
+ "extends": "system",
+ "name": "script_activity",
+ "uid": 9,
+ "attributes": {
+ "activity_id": {
+ "enum": {
+ "1": {
+ "caption": "Execute"
+ }
+ }
+ },
+ "script": {
+ "description": "The script that was the target of the activity.",
+ "group": "primary",
+ "requirement": "required"
+ }
+ }
+}
diff --git a/extensions/windows/objects/evidences.json b/extensions/windows/objects/evidences.json
index 9b4dff146..e8086b8e8 100644
--- a/extensions/windows/objects/evidences.json
+++ b/extensions/windows/objects/evidences.json
@@ -34,6 +34,7 @@
"url",
"user",
"job",
+ "script",
"reg_key",
"reg_value",
"win_service"
diff --git a/objects/evidences.json b/objects/evidences.json
index 8b41cc88c..95f431f20 100644
--- a/objects/evidences.json
+++ b/objects/evidences.json
@@ -71,6 +71,10 @@
"job": {
"description": "Describes details about the scheduled job that was associated with the activity that triggered the detection.",
"requirement": "recommended"
+ },
+ "script": {
+ "description": "Describes details about the script that was associated with the activity that triggered the detection.",
+ "requirement": "recommended"
}
},
"constraints": {
@@ -90,7 +94,8 @@
"src_endpoint",
"url",
"user",
- "job"
+ "job",
+ "script"
]
}
}
\ No newline at end of file
diff --git a/objects/script.json b/objects/script.json
new file mode 100644
index 000000000..6050053a1
--- /dev/null
+++ b/objects/script.json
@@ -0,0 +1,63 @@
+{
+ "caption": "Script",
+ "description": "The Script object describes a script or command that can be executed by a shell, script engine, or interpreter. Examples include Bash, JavsScript, PowerShell, Python, VBScript, etc. Note that the term script here denotes not only a script contained within a file but also a script or command typed interactively by a user, supplied on the command line, or provided by some other file-less mechanism.",
+ "extends": "object",
+ "name": "script",
+ "attributes": {
+ "file": {
+ "description": "Present if this script is associated with a file. Not present in the case of a file-less script.",
+ "requirement": "optional"
+ },
+ "hashes": {
+ "description": "An array of the script's cryptographic hashes. Note that these hashes are calculated on the script in its original encoding, and not on the normalized UTF-8 encoding found in the script_content
attribute.",
+ "requirement": "recommended"
+ },
+ "parent_uid": {
+ "description": "When a script is a dynamically executed sub-script, and when the underlying script engine supports use of the uid
attribute, this parent_uid
attribute identifies the parent script.",
+ "requirement": "optional"
+ },
+ "script_content": {
+ "requirement": "required"
+ },
+ "type": {
+ "description": "The script type, normalized to the caption of the type_id
value. In the case of 'Other', it is defined by the event source.",
+ "requirement": "optional"
+ },
+ "type_id": {
+ "description": "The normalized script type ID.",
+ "requirement": "required",
+ "enum": {
+ "0": {
+ "caption": "Unknown",
+ "description": "The script type is unknown."
+ },
+ "1": {
+ "caption": "Windows Command Prompt"
+ },
+ "2": {
+ "caption": "PowerShell"
+ },
+ "3": {
+ "caption": "Python"
+ },
+ "4": {
+ "caption": "JavaScript"
+ },
+ "5": {
+ "caption": "VBScript"
+ },
+ "6": {
+ "caption": "Unix Shell"
+ },
+ "99": {
+ "caption": "Other",
+ "description": "The script type is not mapped. See the type
attribute which contains an event source specific value."
+ }
+ }
+ },
+ "uid": {
+ "description": "Some script engines assign a unique ID to each individual execution of a given script, e.g. PowerShell's Script Block ID. This uid
attribute enables a dynamically executed sub-script to refer to its parent.",
+ "requirement": "optional"
+ }
+ }
+}