Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sept 2024 pass at OCSF/DEFEND mappings #1173

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ Thankyou! -->
2. Added `has_mfa` to `user` object. #1155
3. Added `vendor_name` to `cvss` object. #1165
4. Added `file`, `reputation`, `subnet`, and `script` to `osint` object. #1168
5. Added d3fend mappings to the description field of `registry_value`, `account`, `container`, `database`, `fingerprint`, `group`, `http_cookie`, `job`, and `script` #1173

### Deprecated
1. Deprecated `project_uid` in favor of `account.uid`. #1166
Expand Down
2 changes: 1 addition & 1 deletion extensions/windows/objects/registry_value.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "Registry Value",
"description": "The registry value object describes a Windows registry value.",
"description": "The registry value object describes a Windows registry value. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:WindowsRegistryValue/'>d3f:WindowsRegistryValue</a>.",
"extends": "object",
"name": "reg_value",
"observable": 29,
Expand Down
2 changes: 1 addition & 1 deletion objects/account.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "Account",
"description": "The Account object contains details about the account that initiated or performed a specific activity within a system or application. Additionally, the Account object refers to logical Cloud and Software-as-a-Service (SaaS) based containers such as AWS Accounts, Azure Subscriptions, Oracle Cloud Compartments, Google Cloud Projects, and otherwise.",
"description": "The Account object contains details about the account that initiated or performed a specific activity within a system or application. Additionally, the Account object refers to logical Cloud and Software-as-a-Service (SaaS) based containers such as AWS Accounts, Azure Subscriptions, Oracle Cloud Compartments, Google Cloud Projects, and otherwise. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:UserAccount/'>d3f:UserAccount</a> and D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:CloudUserAccount/'>d3f:CloudUserAccount</a>.",
"name": "account",
"extends": "_entity",
"attributes": {
Expand Down
2 changes: 1 addition & 1 deletion objects/container.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"caption": "Container",
"observable": 27,
"name": "container",
"description": "The Container object describes an instance of a specific container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd.",
"description": "The Container object describes an instance of a specific container. A container is a prepackaged, portable system image that runs isolated on an existing system using a container runtime like containerd. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:ContainerProcess/'>d3f:ContainerProcess</a>.",
"extends": "object",
"attributes": {
"name": {
Expand Down
2 changes: 1 addition & 1 deletion objects/database.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "Database",
"description": "The database object is used for databases which are typically datastore services that contain an organized collection of structured and unstructured data or a types of data.",
"description": "The database object is used for databases which are typically datastore services that contain an organized collection of structured and unstructured data or a types of data. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:Database/'>d3f:Database</a>.",
"extends": "_entity",
"name": "database",
"profiles": [
Expand Down
2 changes: 1 addition & 1 deletion objects/fingerprint.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "Fingerprint",
"description": "The Fingerprint object provides detailed information about a digital fingerprint, which is a compact representation of data used to identify a longer piece of information, such as a public key or file content. It contains the algorithm and value of the fingerprint, enabling efficient and reliable identification of the associated data.",
"description": "The Fingerprint object provides detailed information about a digital fingerprint, which is a compact representation of data used to identify a longer piece of information, such as a public key or file content. It contains the algorithm and value of the fingerprint, enabling efficient and reliable identification of the associated data. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:DigitalFingerprint/'>d3f:DigitalFingerprint</a>.",
"extends": "object",
"name": "fingerprint",
"observable": 30,
Expand Down
2 changes: 1 addition & 1 deletion objects/group.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "Group",
"description": "The Group object represents a collection or association of entities, such as users, policies, or devices. It serves as a logical grouping mechanism to organize and manage entities with similar characteristics or permissions within a system or organization.",
"description": "The Group object represents a collection or association of entities, such as users, policies, or devices. It serves as a logical grouping mechanism to organize and manage entities with similar characteristics or permissions within a system or organization. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:AccessControlGroup/'>d3f:AccessControlGroup</a>.",
"name": "group",
"extends": "_entity",
"attributes": {
Expand Down
2 changes: 1 addition & 1 deletion objects/http_cookie.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "HTTP Cookie",
"description": "The HTTP Cookie object, also known as a web cookie or browser cookie, contains details and values pertaining to a small piece of data that a server sends to a user's web browser. This data is then stored by the browser and sent back to the server with subsequent requests, allowing the server to remember and track certain information about the user's browsing session or preferences.",
"description": "The HTTP Cookie object, also known as a web cookie or browser cookie, contains details and values pertaining to a small piece of data that a server sends to a user's web browser. This data is then stored by the browser and sent back to the server with subsequent requests, allowing the server to remember and track certain information about the user's browsing session or preferences. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:SessionCookie/'>d3f:SessionCookie</a>.",
"extends": "object",
"name": "http_cookie",
"attributes": {
Expand Down
2 changes: 1 addition & 1 deletion objects/http_header.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"caption": "HTTP Header",
"description": "TThe HTTP Header object represents the headers sent in an HTTP request or response. HTTP headers are key-value pairs that convey additional information about the HTTP message, including details about the content, caching, authentication, encoding, and other aspects of the communication.",
"description": "The HTTP Header object represents the headers sent in an HTTP request or response. HTTP headers are key-value pairs that convey additional information about the HTTP message, including details about the content, caching, authentication, encoding, and other aspects of the communication.",
"extends": "object",
"name": "http_header",
"attributes": {
Expand Down
2 changes: 1 addition & 1 deletion objects/job.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"caption": "Job",
"name": "job",
"description": "The Job object provides information about a scheduled job or task, including its name, command line, and state. It encompasses attributes that describe the properties and status of the scheduled job.",
"description": "The Job object provides information about a scheduled job or task, including its name, command line, and state. It encompasses attributes that describe the properties and status of the scheduled job. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:ScheduledJob/'>d3f:ScheduledJob</a>.",
"extends": "object",
"attributes": {
"cmd_line": {
Expand Down
2 changes: 1 addition & 1 deletion objects/script.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"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 <em>script</em> 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.",
"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 <em>script</em> 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. Defined by D3FEND <a target='_blank' href='https://d3fend.mitre.org/dao/artifact/d3f:ExecutableScript/'>d3f:ExecutableScript</a>.",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A script can manifest as a file or a string-based commandline argument in the case of powershell.

Curious if OCSF is wanted to make such a distinction.

consider this shadowcat example:

D3FEND CAD Shadowcat example

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify, the file-less script case is more than just a string-based command line:

  • It may be read by an interpreter from stdin.
  • It may be embedded within a container document, e.g. VBA macro in a Word document or Excel sheet.
  • It may be dynamically executed as a sub-script of another script, e.g. a sub-script that results from deobfuscation, a sub-script that is downloaded, etc.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would check with @davemcatcisco who authored the script class and object.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@davemcatcisco would be happy to hear your thoughts. Please see the CAD example above.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you can see, I wrote the above comment two weeks ago but then forgot to submit the review until now. I'm just pointing out that a file-less script execution can happen in a lot of ways beyond a PowerShell command line.

I'm afraid I'm not sure what you mean when you say you're curious if OCSF wants to make a distinction. Can you clarify?

"extends": "object",
"name": "script",
"attributes": {
Expand Down
Loading