From ba9674bd1fc0871f6a77366ad85c39cace5dc391 Mon Sep 17 00:00:00 2001 From: Sebastien Quioc Date: Thu, 19 Sep 2024 17:45:11 +0200 Subject: [PATCH 1/5] fix(Automate): move back automation documentation to the _shared_content directory This directory is used by script to generate new documentation. In order to keep the organization for the integrations part of the documentation, we add inclusions in the documentation that describe the automation modules. --- .../automate/library/atlassian-jira.md | 69 ++ _shared_content/automate/library/aws.md | 168 ++++ .../automate/library/binaryedge-s-api.md | 503 ++++++++++ _shared_content/automate/library/bitsight.md | 32 + .../broadcom-cloud-secure-web-gateway.md | 31 + .../automate/library/cato-networks.md | 30 + _shared_content/automate/library/censys.md | 78 ++ .../library/certificate-transparency.md | 37 + .../automate/library/check-point.md | 35 + .../automate/library/crowdstrike-falcon.md | 99 ++ .../automate/library/crowdstrike.md | 38 + .../automate/library/cybereason.md | 49 + _shared_content/automate/library/darktrace.md | 34 + .../automate/library/detection-rules.md | 33 + .../automate/library/digital-shadows.md | 38 + _shared_content/automate/library/duo.md | 33 + _shared_content/automate/library/extrahop.md | 33 + _shared_content/automate/library/fileutils.md | 61 ++ .../automate/library/fortigate-firewalls.md | 55 ++ .../automate/library/fortigate-fw.md | 98 ++ _shared_content/automate/library/git.md | 61 ++ _shared_content/automate/library/github.md | 34 + _shared_content/automate/library/glimps.md | 113 +++ _shared_content/automate/library/google.md | 76 ++ .../automate/library/harfanglab.md | 136 +++ _shared_content/automate/library/http.md | 66 ++ .../automate/library/iknowwhatyoudownload.md | 78 ++ _shared_content/automate/library/imperva.md | 41 + _shared_content/automate/library/intra_id.md | 156 +++ _shared_content/automate/library/ipinfo.md | 38 + _shared_content/automate/library/iptoasn.md | 34 + .../library/jumpcloud-directory-insights.md | 33 + _shared_content/automate/library/lacework.md | 35 + _shared_content/automate/library/mandrill.md | 38 + .../automate/library/mattermost.md | 44 + .../library/microsoft-active-directory.md | 54 ++ .../automate/library/microsoft-azure.md | 67 ++ .../automate/library/microsoft-entra-id.md | 156 +++ .../automate/library/microsoft-office365.md | 52 + .../library/microsoft-remote-server.md | 98 ++ .../library/microsoft-windows-server.md | 53 ++ _shared_content/automate/library/mimecast.md | 32 + _shared_content/automate/library/misp.md | 75 ++ _shared_content/automate/library/mwdb.md | 58 ++ _shared_content/automate/library/netskope.md | 48 + _shared_content/automate/library/nybble.md | 40 + _shared_content/automate/library/okta.md | 35 + _shared_content/automate/library/onyphe.md | 379 ++++++++ _shared_content/automate/library/openai.md | 38 + _shared_content/automate/library/osint.md | 33 + _shared_content/automate/library/pagerduty.md | 31 + .../automate/library/panda-security.md | 415 ++++++++ .../automate/library/proofpoint.md | 50 + .../automate/library/public-suffix.md | 24 + _shared_content/automate/library/riskiq.md | 352 +++++++ _shared_content/automate/library/rss.md | 37 + .../automate/library/salesforce.md | 35 + _shared_content/automate/library/sekoia-io.md | 884 +++++++++++++++++ .../automate/library/sentinelone.md | 149 +++ .../library/sentinelonedeepvisibility.md | 34 + .../automate/library/servicenow.md | 37 + _shared_content/automate/library/shodan.md | 147 +++ ...skyhigh-security-secure-web-gateway-swg.md | 33 + .../automate/library/skyhigh-security.md | 35 + _shared_content/automate/library/sophos.md | 49 + _shared_content/automate/library/stix.md | 358 +++++++ _shared_content/automate/library/tehtris.md | 34 + _shared_content/automate/library/the-hive.md | 59 ++ .../automate/library/thinkst-canary.md | 33 + _shared_content/automate/library/tranco.md | 36 + _shared_content/automate/library/trellix.md | 33 + .../automate/library/trend-micro.md | 32 + _shared_content/automate/library/triage.md | 58 ++ _shared_content/automate/library/ubika.md | 32 + _shared_content/automate/library/utils.md | 108 +++ .../automate/library/vade-cloud.md | 33 + .../automate/library/vade-secure.md | 40 + .../automate/library/virustotal.md | 221 +++++ _shared_content/automate/library/whois.md | 35 + .../automate/library/withsecure.md | 113 +++ _shared_content/automate/library/zscaler.md | 52 + .../action_library/applicative/mandrill.md | 39 +- .../action_library/applicative/mattermost.md | 45 +- .../applicative/microsoft-office365.md | 53 +- .../applicative/microsoft-remote-server.md | 99 +- .../applicative/microsoft-windows-server.md | 54 +- .../action_library/applicative/pagerduty.md | 32 +- .../action_library/applicative/proofpoint.md | 51 +- .../action_library/applicative/salesforce.md | 36 +- .../action_library/cloud_providers/aws.md | 169 +--- .../action_library/cloud_providers/google.md | 77 +- .../cloud_providers/microsoft-azure.md | 68 +- .../collaboration_tools/atlassian-jira.md | 70 +- .../action_library/collaboration_tools/git.md | 62 +- .../collaboration_tools/github.md | 35 +- .../collaboration_tools/servicenow.md | 38 +- .../collaboration_tools/the-hive.md | 60 +- .../action_library/email/mimecast.md | 33 +- .../action_library/email/vade-secure.md | 41 +- .../endpoint/crowdstrike-falcon.md | 100 +- .../action_library/endpoint/crowdstrike.md | 39 +- .../action_library/endpoint/cybereason.md | 50 +- .../action_library/endpoint/harfanglab.md | 137 +-- .../action_library/endpoint/panda-security.md | 416 +------- .../action_library/endpoint/sentinelone.md | 150 +-- .../endpoint/sentinelonedeepvisibility.md | 35 +- .../action_library/endpoint/sophos.md | 50 +- .../action_library/endpoint/tehtris.md | 35 +- .../action_library/endpoint/trellix.md | 34 +- .../action_library/endpoint/trend-micro.md | 33 +- .../action_library/endpoint/withsecure.md | 114 +-- .../action_library/generic/fileutils.md | 62 +- .../action_library/generic/http.md | 67 +- .../action_library/generic/openai.md | 39 +- .../integration/action_library/generic/rss.md | 38 +- .../action_library/generic/sekoia-io.md | 885 +----------------- .../action_library/generic/utils.md | 109 +-- docs/integration/action_library/iam/duo.md | 34 +- .../action_library/iam/intra_id.md | 157 +--- .../iam/jumpcloud-directory-insights.md | 34 +- .../iam/microsoft-active-directory.md | 55 +- .../action_library/iam/microsoft-entra-id.md | 157 +--- docs/integration/action_library/iam/okta.md | 36 +- .../broadcom-cloud-secure-web-gateway.md | 32 +- .../action_library/network/cato-networks.md | 31 +- .../action_library/network/check-point.md | 36 +- .../action_library/network/darktrace.md | 35 +- .../action_library/network/extrahop.md | 34 +- .../network/fortigate-firewalls.md | 56 +- .../action_library/network/fortigate-fw.md | 99 +- .../action_library/network/imperva.md | 42 +- .../action_library/network/lacework.md | 36 +- .../action_library/network/netskope.md | 49 +- ...skyhigh-security-secure-web-gateway-swg.md | 34 +- .../network/skyhigh-security.md | 36 +- .../action_library/network/ubika.md | 33 +- .../action_library/network/vade-cloud.md | 34 +- .../action_library/network/zscaler.md | 53 +- .../threat_intelligence/binaryedge-s-api.md | 504 +--------- .../threat_intelligence/bitsight.md | 33 +- .../threat_intelligence/censys.md | 79 +- .../certificate-transparency.md | 38 +- .../threat_intelligence/detection-rules.md | 34 +- .../threat_intelligence/digital-shadows.md | 39 +- .../threat_intelligence/glimps.md | 114 +-- .../iknowwhatyoudownload.md | 79 +- .../threat_intelligence/ipinfo.md | 39 +- .../threat_intelligence/iptoasn.md | 35 +- .../threat_intelligence/misp.md | 76 +- .../threat_intelligence/mwdb.md | 59 +- .../threat_intelligence/nybble.md | 41 +- .../threat_intelligence/onyphe.md | 380 +------- .../threat_intelligence/osint.md | 34 +- .../threat_intelligence/public-suffix.md | 25 +- .../threat_intelligence/riskiq.md | 353 +------ .../threat_intelligence/shodan.md | 148 +-- .../threat_intelligence/stix.md | 359 +------ .../threat_intelligence/thinkst-canary.md | 34 +- .../threat_intelligence/tranco.md | 37 +- .../threat_intelligence/triage.md | 59 +- .../threat_intelligence/virustotal.md | 222 +---- .../threat_intelligence/whois.md | 36 +- 162 files changed, 7425 insertions(+), 7344 deletions(-) create mode 100644 _shared_content/automate/library/atlassian-jira.md create mode 100644 _shared_content/automate/library/aws.md create mode 100644 _shared_content/automate/library/binaryedge-s-api.md create mode 100644 _shared_content/automate/library/bitsight.md create mode 100644 _shared_content/automate/library/broadcom-cloud-secure-web-gateway.md create mode 100644 _shared_content/automate/library/cato-networks.md create mode 100644 _shared_content/automate/library/censys.md create mode 100644 _shared_content/automate/library/certificate-transparency.md create mode 100644 _shared_content/automate/library/check-point.md create mode 100644 _shared_content/automate/library/crowdstrike-falcon.md create mode 100644 _shared_content/automate/library/crowdstrike.md create mode 100644 _shared_content/automate/library/cybereason.md create mode 100644 _shared_content/automate/library/darktrace.md create mode 100644 _shared_content/automate/library/detection-rules.md create mode 100644 _shared_content/automate/library/digital-shadows.md create mode 100644 _shared_content/automate/library/duo.md create mode 100644 _shared_content/automate/library/extrahop.md create mode 100644 _shared_content/automate/library/fileutils.md create mode 100644 _shared_content/automate/library/fortigate-firewalls.md create mode 100644 _shared_content/automate/library/fortigate-fw.md create mode 100644 _shared_content/automate/library/git.md create mode 100644 _shared_content/automate/library/github.md create mode 100644 _shared_content/automate/library/glimps.md create mode 100644 _shared_content/automate/library/google.md create mode 100644 _shared_content/automate/library/harfanglab.md create mode 100644 _shared_content/automate/library/http.md create mode 100644 _shared_content/automate/library/iknowwhatyoudownload.md create mode 100644 _shared_content/automate/library/imperva.md create mode 100644 _shared_content/automate/library/intra_id.md create mode 100644 _shared_content/automate/library/ipinfo.md create mode 100644 _shared_content/automate/library/iptoasn.md create mode 100644 _shared_content/automate/library/jumpcloud-directory-insights.md create mode 100644 _shared_content/automate/library/lacework.md create mode 100644 _shared_content/automate/library/mandrill.md create mode 100644 _shared_content/automate/library/mattermost.md create mode 100644 _shared_content/automate/library/microsoft-active-directory.md create mode 100644 _shared_content/automate/library/microsoft-azure.md create mode 100644 _shared_content/automate/library/microsoft-entra-id.md create mode 100644 _shared_content/automate/library/microsoft-office365.md create mode 100644 _shared_content/automate/library/microsoft-remote-server.md create mode 100644 _shared_content/automate/library/microsoft-windows-server.md create mode 100644 _shared_content/automate/library/mimecast.md create mode 100644 _shared_content/automate/library/misp.md create mode 100644 _shared_content/automate/library/mwdb.md create mode 100644 _shared_content/automate/library/netskope.md create mode 100644 _shared_content/automate/library/nybble.md create mode 100644 _shared_content/automate/library/okta.md create mode 100644 _shared_content/automate/library/onyphe.md create mode 100644 _shared_content/automate/library/openai.md create mode 100644 _shared_content/automate/library/osint.md create mode 100644 _shared_content/automate/library/pagerduty.md create mode 100644 _shared_content/automate/library/panda-security.md create mode 100644 _shared_content/automate/library/proofpoint.md create mode 100644 _shared_content/automate/library/public-suffix.md create mode 100644 _shared_content/automate/library/riskiq.md create mode 100644 _shared_content/automate/library/rss.md create mode 100644 _shared_content/automate/library/salesforce.md create mode 100644 _shared_content/automate/library/sekoia-io.md create mode 100644 _shared_content/automate/library/sentinelone.md create mode 100644 _shared_content/automate/library/sentinelonedeepvisibility.md create mode 100644 _shared_content/automate/library/servicenow.md create mode 100644 _shared_content/automate/library/shodan.md create mode 100644 _shared_content/automate/library/skyhigh-security-secure-web-gateway-swg.md create mode 100644 _shared_content/automate/library/skyhigh-security.md create mode 100644 _shared_content/automate/library/sophos.md create mode 100644 _shared_content/automate/library/stix.md create mode 100644 _shared_content/automate/library/tehtris.md create mode 100644 _shared_content/automate/library/the-hive.md create mode 100644 _shared_content/automate/library/thinkst-canary.md create mode 100644 _shared_content/automate/library/tranco.md create mode 100644 _shared_content/automate/library/trellix.md create mode 100644 _shared_content/automate/library/trend-micro.md create mode 100644 _shared_content/automate/library/triage.md create mode 100644 _shared_content/automate/library/ubika.md create mode 100644 _shared_content/automate/library/utils.md create mode 100644 _shared_content/automate/library/vade-cloud.md create mode 100644 _shared_content/automate/library/vade-secure.md create mode 100644 _shared_content/automate/library/virustotal.md create mode 100644 _shared_content/automate/library/whois.md create mode 100644 _shared_content/automate/library/withsecure.md create mode 100644 _shared_content/automate/library/zscaler.md diff --git a/_shared_content/automate/library/atlassian-jira.md b/_shared_content/automate/library/atlassian-jira.md new file mode 100644 index 0000000000..0b395503c2 --- /dev/null +++ b/_shared_content/automate/library/atlassian-jira.md @@ -0,0 +1,69 @@ +# Atlassian JIRA + +![Atlassian JIRA](/assets/playbooks/library/atlassian-jira.png){ align=right width=150 } + +Integrates with JIRA + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | Your organization JIRA domain (e.g. 'sandbox.atlassian.net') | +| `email` | `string` | Email of the user | +| `api_key` | `string` | API Key to use to connect to JIRA API endpoints | + +## Actions + +### Change Status of an Issue + +Change status of an issue in JIRA + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `issue_key` | `string` | Issue key (e.g. PROJ-1) | +| `status_name` | `string` | Exact name of the status (e.g. 'To Do') | + +### Comment Issue + +Add comment to an issue in JIRA + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `issue_key` | `string` | Issue key (e.g. PROJ-1) | +| `comment` | `string` | Text of a comment | + +### Create Issue + +Create issue in JIRA + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `project_key` | `string` | Project key (e.g. 'PRJ') | +| `summary` | `string` | Summary of an issue (e.g. 'Fix a bug') | +| `issue_type` | `string` | Issue type (e.g. 'Task') | +| `description` | `object` | Description text in ADF (Atlassian Document Format) | +| `due_date` | `string` | Due date (e.g. '2023-10-31')' | +| `labels` | `string` | Comma-separated labels (e.g. 'devops,support') | +| `assignee` | `string` | Exact display name of an assignee (e.g. John Doe) | +| `reporter` | `string` | Exact display name of a reporter (e.g. Jane Doe) | +| `priority` | `string` | Issue priority (e.g. Highest) | +| `parent_key` | `string` | Key of a parent issue (e.g. PRJ-1) | +| `custom_fields` | `object` | JSON with custom fields (e.g. {"Some Field": "2"}) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `issue_key` | `string` | Key of the created issue | + + +## Extra + +Module **`Atlassian JIRA` v1.1** \ No newline at end of file diff --git a/_shared_content/automate/library/aws.md b/_shared_content/automate/library/aws.md new file mode 100644 index 0000000000..ca1c34add1 --- /dev/null +++ b/_shared_content/automate/library/aws.md @@ -0,0 +1,168 @@ +# AWS + +![AWS](/assets/playbooks/library/aws.svg){ align=right width=150 } + +[AWS](https://aws.amazon.com/) is a one of the main cloud provider, supported by Amazon. It offers services for storage (S3, Glacier, EBS, ...), for networking (Snowball, CloudFront, ...), for computing (EC2, ECS, EKS, ...) and others. +This module provides triggers to collect events from AWS + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `aws_access_key` | `string` | The identifier of the access key | +| `aws_secret_access_key` | `string` | The secret associated to the access key | +| `aws_region_name` | `string` | The area hosting the AWS resources | + +## Triggers + +### Fetch CloudTrail logs (deprecated) + +Get the last records from CloudTrail (deprecated in flavor of Fetch new CloudTrail records on S3) + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `bucket_name` | `string` | The bucket that contains CloudTrail logs | +| `prefix` | `string` | Limits the response to keys that begin with the specified prefix | +| `chunk_size` | `integer` | The size of chunks for the batch processing | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `records` | `array` | A list of CloudTrail log records | +| `records_path` | `string` | The filename containing the records | + + +### Fetch Flowlog records (deprecated) + +Get the last records from FlowLog (deprecated in flavor of Fetch new logs on S3) + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `bucket_name` | `string` | The bucket that contains Flowlog records | +| `prefix` | `string` | Limits the response to keys that begin with the specified prefix | +| `chunk_size` | `integer` | The size of chunks for the batch processing | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `records` | `array` | A list of Flowlog records | +| `records_path` | `string` | The filename containing the records | + + +### [BETA] Fetch new CloudFront logs on S3 + +Get all CloudFront records from S3 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | +| `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new Flowlogs on S3 + +Get line-oriented Flowlog records from new S3 objects based on notifications + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | +| `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | +| `ignore_comments` | `boolean` | Flag to ignore commented lines (starting with the character `#`; default: false) | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new FlowLogs Parquet records on S3 + +Get FlowLogs records from new S3 Parquet objects based on notifications + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new logs on S3 + +Get line-oriented records from new S3 objects based on notifications + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | +| `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | +| `ignore_comments` | `boolean` | Flag to ignore commented lines (starting with the character `#`; default: false) | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new CloudTrail records on S3 + +Get Cloudtrail records from new S3 objects based on notifications + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new messages from the SQS + +Get messages from SQS + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`AWS` v1.29.6** \ No newline at end of file diff --git a/_shared_content/automate/library/binaryedge-s-api.md b/_shared_content/automate/library/binaryedge-s-api.md new file mode 100644 index 0000000000..3bcd84277e --- /dev/null +++ b/_shared_content/automate/library/binaryedge-s-api.md @@ -0,0 +1,503 @@ +# BinaryEdge's API + +![BinaryEdge's API](/assets/playbooks/library/binaryedge-s-api.png){ align=right width=150 } + +[BinaryEdge](https://www.binaryedge.io/) is Cybersecurity/Data Science company that focuses its effort on acquiring, analyzing and classifying internet wide data. We have developed a platform - [40fy](https://app.binaryedge.io/) that allows us and our customers to gather several data points from exposed servers online. + + The API provides access to that scanning platform, for your own usage, along with access to our curated databases so that you can do querying and analytics on our worldwide (constantly updated) collected data. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | Binary Edge's API key | +| `base_url` | `string` | Binary Edge's base URL (ex. https://api.binaryedge.io/v2/) | + +## Actions + +### List CVEs + +Get list of CVEs that migh affect a specific IP. + + **Note**: Available for paid subscriptions only. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `events` | `object` | | + +### Search dataleaks by email + +Allows you to search across multiple data breaches to see if any of your email addresses has been compromised. If you are affected, we recommend you change your password on the respective services. + + Verify how many dataleaks affected an specific email address. + + **Note:** Available for paid subscriptions only. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `email` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total` | `integer` | | +| `events` | `array` | | +| `query` | `string` | | + +### Get dataleaks trackers + +Get all available information about the dataleaks our platform keeps track. + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sktorrent` | `object` | | +| `samsclub` | `object` | | +| `yandex` | `object` | | + +### Search dataleaks by organization + +Verify how many emails are affected by dataleaks for a specific domain. We don't provide the list of affected emails. + + **Note:** Available for paid subscriptions only. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total` | `integer` | | +| `groups` | `array` | | +| `query` | `string` | | + +### List DNS targets by domain + +Return list of known DNS results for the target domain. Possible types of records currently available: + + -A, AAAA, NS, MX + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `total` | `integer` | | +| `events` | `array` | | + +### List domains by IP + +Return records that have the specified IP address in their A or AAAA records. + + **Nota**: Available for paid subscriptions only. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `total` | `integer` | | +| `events` | `array` | | + +### Search domains + +List of Domains/DNS data based on a Query. Can be used with specific parameters and/or full-text search. Possible types of records currently available: + + -A, AAAA, NS, MX, CNAME, TXT + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `total` | `integer` | | +| `events` | `array` | | + +### List subdomains + +Return list of subdomains known from the target domains. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `total` | `integer` | | +| `events` | `array` | | + +### List screenshots + +Details about Remote Desktops found on an Host. List of screenshots and details extracted from them for the specified host, including OCR and whether faces were found or not, with data up to 2 months. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `pagesize` | `integer` | | +| `query` | `string` | | +| `total` | `integer` | | +| `page` | `integer` | | +| `events` | `array` | | + +### Search screenshots + +Remote Desktops based on a Query. List of screenshots and details extracted from them for the given query, including OCR and whether faces were found or not. Can be used with specific parameters and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `pagesize` | `integer` | | +| `query` | `string` | | +| `total` | `integer` | | +| `page` | `integer` | | +| `events` | `array` | | + +### List tags for screenshots + +Get the list of possible tags for the images. +### Get details + +Details about an Host. List of recent events for the specified host, including details of exposed ports and services. + + **Note**: Querying CIDRs is available for paid subscriptions only. When using CIDR, the number of credits that will be spent correspond to the number of targets that returned results. Example: a request for a /24 (256 targets) in which only 200 targets have results, will decrement 200 credits. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total` | `integer` | | +| `query` | `string` | | +| `events` | `array` | | + +### Get History + +Details about an Host, with data up to 6 months. + + List of events for the specified host, with events for each time that: + - A port was detected open + - A service was found running + - Other modules were successfully executed + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total` | `integer` | | +| `query` | `string` | | +| `events` | `array` | | + +### Get Score + +IP Risk Score. Scoring is based on all information found on our databases regarding an IP and refers to the level of exposure of a target, i.e, the higher the score, the greater the risk of exposure. + + More details about scoring can be found on [here](https://github.com/binaryedge/ratemyip-openframework/blob/master/ip-score.md). + + **Note**: Available for paid subscriptions only. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `normalized_ip_score` | `float` | | +| `normalized_ip_score_detailed` | `object` | | +| `ip_score_detailed` | `object` | | +| `results_detailed` | `object` | | +| `ip_address` | `string` | | + +### Search events + +Events based on a Query. List of recent events for the given query, including details of exposed ports and services. Can be used with [specific parameters](https://docs.binaryedge.io/image-search/) and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `only_ips` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `total` | `integer` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `events` | `array` | | + +### Get statistics + +Statistics of recent events for the given query. Can be used with specific parameters and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `type` | `string` | | +| `order` | `string` | | + +### Get sensors + +Details about an Scanner. List of recent events form the specified host, including details of scanned ports, payloads and tags. + + **Note**: Querying CIDRs is available for paid subscriptions only. When using CIDR, the number of credits that will be spent correspond to the number of targets that returned results. Example: a request for a /24 (256 targets) in which only 200 targets have results, will decrement 200 credits. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `total` | `integer` | | +| `targets_found` | `integer` | | +| `events` | `array` | | + +### Search sensors + +Events based on a Query. List of recent events for the given query, including details of scanned ports, payloads and tags. Can be used with specific parameters and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `days` | `integer` | | +| `page` | `integer` | | +| `only_ips` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `total` | `integer` | | +| `events` | `array` | | + +### Get sensors statistics + +Statistics of recent events for the given query. Can be used with specific parameters and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `type` | `string` | | +| `days` | `integer` | | +| `order` | `string` | | + +### List IPs from tag + +Get a list of IPs that have been associated with a specific TAG. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `tag` | `string` | | +| `days` | `integer` | | + +### Get torrent history + +Details about torrents transferred by an Host, with data up to 6 months. + + List of torrent events for the specified host, with events for each time that a new transfer was detected on the DHT. See [Torrent Data](https://docs.binaryedge.io/torrent/) for more details. + + **Note:** Available for paid subscriptions only. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `total` | `integer` | | +| `events` | `array` | | + +### Get torrent activity + +Details about torrents transferred by an Host. List of recent torrent events for the specified host, including details of the peer and torrent. See [Torrent Data](https://docs.binaryedge.io/torrent/) for more details. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `total` | `integer` | | +| `events` | `array` | | + +### Search torrent activities + +Events based on a Query. List of recent events for the given query, including details of the peer and torrent. Can be used with specific parameters and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `page` | `integer` | | +| `pagesize` | `integer` | | +| `total` | `integer` | | +| `events` | `array` | | + +### Get torrent statistics + +Statistics of events for the given query. Can be used with specific parameters and/or full-text search. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | | +| `type` | `string` | | +| `days` | `integer` | | +| `order` | `string` | | + +### Get user subscription + +Return details about your current subscription package. + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `subscription` | `object` | | +| `end_date` | `string` | | +| `requests_left` | `integer` | | +| `requests_plan` | `integer` | | + + +## Extra + +Module **`BinaryEdge's API` v1.20** \ No newline at end of file diff --git a/_shared_content/automate/library/bitsight.md b/_shared_content/automate/library/bitsight.md new file mode 100644 index 0000000000..2c4253d116 --- /dev/null +++ b/_shared_content/automate/library/bitsight.md @@ -0,0 +1,32 @@ +# Bitsight + +![Bitsight](/assets/playbooks/library/bitsight.png){ align=right width=150 } + +Bitsight connector for audit logs + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `company_uuids` | `array` | The list of company uuids | +| `api_token` | `string` | The API Token to authenticate calls to the Bitsight API | + +## Triggers + +### [BETA] Fetch new findings from Bitsight + +Get findings from a Bitsight + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `batch_limit` | `integer` | Maximum number of events to send in a single batch | + + +## Extra + +Module **`Bitsight` v1.0.0** \ No newline at end of file diff --git a/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md b/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md new file mode 100644 index 0000000000..3b070a0d26 --- /dev/null +++ b/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md @@ -0,0 +1,31 @@ +# Broadcom Cloud Secure Web Gateway + +![Broadcom Cloud Secure Web Gateway](/assets/playbooks/library/broadcom-cloud-secure-web-gateway.png){ align=right width=150 } + +Broadcom Cloud Secure Web Gateway is a cloud-native security solution providing advanced threat protection, content filtering, and data loss prevention, ensuring secure internet access and compliance for organizations with flexible deployment options and comprehensive web security features. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `username` | `string` | Username to do authentication on remote server | +| `password` | `string` | Password to do authentication on remote server | + +## Triggers + +### [BETA] Get Broadcom Cloud SWG events + +Trigger playbook to get Broadcom Cloud SWG events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | + + +## Extra + +Module **`Broadcom Cloud Secure Web Gateway` v1.0.0** \ No newline at end of file diff --git a/_shared_content/automate/library/cato-networks.md b/_shared_content/automate/library/cato-networks.md new file mode 100644 index 0000000000..6d07ba6f50 --- /dev/null +++ b/_shared_content/automate/library/cato-networks.md @@ -0,0 +1,30 @@ +# Cato Networks + +![Cato Networks](/assets/playbooks/library/cato-networks.png){ align=right width=150 } + +Cato Networks is a software company providing solutions to protect cloud applications. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | Api key to interact with Cato API | +| `account_id` | `string` | Account Id (4 digits) to work with Cato API | + +## Triggers + +### Collect Cato SASE events + +Trigger playbook to get Cato SASE information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Cato Networks` v1.3** \ No newline at end of file diff --git a/_shared_content/automate/library/censys.md b/_shared_content/automate/library/censys.md new file mode 100644 index 0000000000..f27bb8f882 --- /dev/null +++ b/_shared_content/automate/library/censys.md @@ -0,0 +1,78 @@ +# Censys + +![Censys](/assets/playbooks/library/censys.png){ align=right width=150 } + +[Censys](https://censys.io/) is Cybersecurity company discovering and inventoring assets exposed on Internet. The Censys API provides programmatic access to the same data accessible through the web interface + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_user_id` | `string` | Censys API user ID | +| `api_user_secret` | `string` | Censys API user secret | + +## Actions + +### Get Report + +Generate a Censys report from results + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Query to execute | +| `index` | `string` | Name of the index to use | +| `field` | `string` | The field you are running a breakdown on in dot notation, e.g. location.country_code. | +| `buckets` | `integer` | The maximum number of values to be returned in the report. Maximum: 500. Default: 50 | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `result_path` | `string` | Path of result file | + +### Search + +Search items from Censys API + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Query to execute | +| `last_run` | `string` | Date of the last run | +| `index` | `string` | Name of the index to search | +| `fields` | `array` | Fields to return | +| `max_requests` | `integer` | Maximum number of requests to send to the API. Useful to avoid spending too much credits on the same query. 0 is no limit. Defaults to 1 | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `result_path` | `string` | Path of results file | + +### View Item + +Return the item as a structured data + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `index` | `string` | Name of the index to use | +| `item` | `string` | Item to retrieve | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `result_path` | `string` | Path of result file | + + +## Extra + +Module **`Censys` v1.22** \ No newline at end of file diff --git a/_shared_content/automate/library/certificate-transparency.md b/_shared_content/automate/library/certificate-transparency.md new file mode 100644 index 0000000000..ae8350550d --- /dev/null +++ b/_shared_content/automate/library/certificate-transparency.md @@ -0,0 +1,37 @@ +# Certificate Transparency + +![Certificate Transparency](/assets/playbooks/library/certificate-transparency.png){ align=right width=150 } + +[Certificate transparency](https://certificate.transparency.dev/) is a security standard to monitor and audit certificates. This module rely on [certstream](https://certstream.calidog.io/) to get updates from the Certificate Transparency Log network. + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Certificate update + +Trigger playbook run on certificate of interest update + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `keywords` | `array` | The keywords you're looking for. Please consider splitting composite words into two keywords when max_distance > 0. | +| `max_distance` | `integer` | The maximum Levenshtein distance acceptable. It is the number of modification you have to do to go from a word to another. E.g. sekoia -> sequoia => 2 | +| `ignoring` | `array` | Ignoring words list for faster processing. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | The domain that matched | +| `matched_keyword` | `string` | The keyword that matched | +| `certstream_object` | `object` | The certstream object the domain comes from | + + +## Extra + +Module **`Certificate Transparency` v1.24** \ No newline at end of file diff --git a/_shared_content/automate/library/check-point.md b/_shared_content/automate/library/check-point.md new file mode 100644 index 0000000000..911747c664 --- /dev/null +++ b/_shared_content/automate/library/check-point.md @@ -0,0 +1,35 @@ +# Check Point + +![Check Point](/assets/playbooks/library/check-point.png){ align=right width=150 } + +Check Point Harmony is the industry’s first unified security solution for users devices and access. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | Client Id to interact with Checkpoint API | +| `secret_key` | `string` | Secret key to work with Checkpoint API | +| `authentication_url` | `string` | Authentication url to authenticate Checkpoint API | +| `base_url` | `string` | Base url to interact with Checkpoint API | + +## Triggers + +### [BETA] Collect Checkpoint Harmony Mobile events + +Trigger playbook to get Checkpoint Harmony Mobile events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ratelimit_per_minute` | `integer` | Maximum number of requests per minute | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `frequency` | `integer` | Batch frequency in seconds | + + +## Extra + +Module **`Check Point` v1.1.7** \ No newline at end of file diff --git a/_shared_content/automate/library/crowdstrike-falcon.md b/_shared_content/automate/library/crowdstrike-falcon.md new file mode 100644 index 0000000000..d791a8c582 --- /dev/null +++ b/_shared_content/automate/library/crowdstrike-falcon.md @@ -0,0 +1,99 @@ +# CrowdStrike Falcon + +![CrowdStrike Falcon](/assets/playbooks/library/crowdstrike-falcon.png){ align=right width=150 } + +Integrates with CrowdStrike Falcon EDR + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | Client Identifier | +| `client_secret` | `string` | Client Secret | +| `base_url` | `string` | Base URL of the API | + +## Triggers + +### Fetch CrowdStrike Falcon Events + +Get latest events from CrowdStrike Falcon + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_key` | `string` | Intake key to use when sending events | +| `tg_base_url` | `string` | The base_url for the ThreatGraphAPI | +| `tg_username` | `['string', 'null']` | The username for the ThreatGraphAPI | +| `tg_password` | `['string', 'null']` | The password for the ThreatGraphAPI | + +## Actions + +### Block IOC + +Block the provided IOC + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `value` | `string` | The value of the IOC to block | +| `type` | `string` | Type of the IOC to block: md5, sha256 | + +### Deisolate hosts + +Deisolate the provided hosts by their agent IDs + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `array` | The list of identifiers of agents to deisolate | + +### Isolate hosts + +Isolate the provided hosts by their agent IDs + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `array` | The list of identifiers of agents to isolate | + +### Monitor IOC + +Enable detection for the provided IOC + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `value` | `string` | The value of the IOC to monitor | +| `type` | `string` | Type of the IOC to monitor: md5, sha256, domain, ipv4, ipv6 | + +### Push IOCs for prevention + +Block the provided IOCs: md5 / sha256 file hashes + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | +| `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | + +### Push IOCs for detection + +Enable detections on the provided IOCs: md5 / sha256 file hashes, IPv4/v6 address, domains + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | +| `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | + + +## Extra + +Module **`CrowdStrike Falcon` v1.16.1** \ No newline at end of file diff --git a/_shared_content/automate/library/crowdstrike.md b/_shared_content/automate/library/crowdstrike.md new file mode 100644 index 0000000000..06f02ba9df --- /dev/null +++ b/_shared_content/automate/library/crowdstrike.md @@ -0,0 +1,38 @@ +# CrowdStrike + +![CrowdStrike](/assets/playbooks/library/crowdstrike.png){ align=right width=150 } + +[CrowdStrike] CrowdStrike provides cloud workload and endpoint security, threat intelligence, and cyberattack response services and products. + This module provides triggers to collect events from CrowdStrike + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `aws_access_key_id` | `string` | The identifier of the access key | +| `aws_secret_access_key` | `string` | The secret associated to the access key | +| `aws_region` | `string` | The area hosting the AWS resources | + +## Triggers + +### Fetch new events from CrowdStrike Data replication + +Forward Crowdstrike Falcon Data Replication events to Sekoia.io + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `chunk_size` | `integer` | The size of max number of messages for the batch processing (default: 20000) | +| `frequency` | `integer` | Batch frequency in seconds. Should be greater than 0 and lower then 20 (default: 10) | +| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: true) | +| `is_fifo` | `boolean` | Flag to determine if the queue is a FIFO queue (default: false) | +| `queue_name` | `string` | The name of the SQS queue that received messages with files information | +| `queue_url` | `string` | The URL of the SQS queue that received messages with files information | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`CrowdStrike` v1.8.2** \ No newline at end of file diff --git a/_shared_content/automate/library/cybereason.md b/_shared_content/automate/library/cybereason.md new file mode 100644 index 0000000000..1c4c3282b0 --- /dev/null +++ b/_shared_content/automate/library/cybereason.md @@ -0,0 +1,49 @@ +# Cybereason + +![Cybereason](/assets/playbooks/library/cybereason.png){ align=right width=150 } + +[CyberReason](https://www.cybereason.com/) is a Cybersecurity company providing products to detect and prevents attacks targeting endpoints + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | API base URL | +| `username` | `string` | The username to use to authenticate against the API | +| `password` | `string` | The password to use to authenticate against the API | + +## Triggers + +### [LEGACY] Fetch new events from Cybereason + +Get last events from the Cybereason platform up to version 23.1.152 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `group_ids` | `array` | The sensors' group ids from which events must be retrieved | + + +### Fetch new events from Cybereason [23.1.152+] + +Get last events from the Cybereason platform from versions 23.1.152 and higher + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `group_ids` | `array` | The sensors' group ids from which events must be retrieved | + + +## Extra + +Module **`Cybereason` v1.9.7** \ No newline at end of file diff --git a/_shared_content/automate/library/darktrace.md b/_shared_content/automate/library/darktrace.md new file mode 100644 index 0000000000..9f88102bdb --- /dev/null +++ b/_shared_content/automate/library/darktrace.md @@ -0,0 +1,34 @@ +# Darktrace + +![Darktrace](/assets/playbooks/library/darktrace.png){ align=right width=150 } + +Darktrace monitors and protects all people and digital assets across your entire ecosystem. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_url` | `string` | The url of the Darktrace appliance | +| `public_key` | `string` | The public key to the Darktrace API | +| `private_key` | `string` | The private key to the Darktrace API | + +## Triggers + +### [BETA] Fetch new logs from Darktrace + +Get the newest logs from Darktrace Threat Visualizer + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `verify_certificate` | `boolean` | Is the server certificate verified | +| `ratelimit_per_minute` | `integer` | The number of requests allowed to the API in one minute | + + +## Extra + +Module **`Darktrace` v1.5.1** \ No newline at end of file diff --git a/_shared_content/automate/library/detection-rules.md b/_shared_content/automate/library/detection-rules.md new file mode 100644 index 0000000000..a41c91a5db --- /dev/null +++ b/_shared_content/automate/library/detection-rules.md @@ -0,0 +1,33 @@ +# Detection Rules + +![Detection Rules](/assets/playbooks/library/detection-rules.svg){ align=right width=150 } + +This module exposes a trigger to detect new snort rules on a repository + +## Configuration + +This module accepts no configuration. + +## Triggers + +### New Snort Rules + +Trigger playbooks when new snort rules are detected of a repository + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `archives` | `array` | Snort rules archives | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + + +## Extra + +Module **`Detection Rules` v1.22** \ No newline at end of file diff --git a/_shared_content/automate/library/digital-shadows.md b/_shared_content/automate/library/digital-shadows.md new file mode 100644 index 0000000000..37b1bb44ed --- /dev/null +++ b/_shared_content/automate/library/digital-shadows.md @@ -0,0 +1,38 @@ +# Digital Shadows + +![Digital Shadows](/assets/playbooks/library/digital-shadows.png){ align=right width=150 } + +Digital Shadows Module + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_url` | `string` | URL of the SearchLight instance | +| `searchlight_account_id` | `string` | SearchLight Account ID | +| `basicauth_key` | `string` | HTTP Basic authentication key | +| `basicauth_secret` | `string` | HTTP Basic authentication secret | + +## Triggers + +### Get SearchLight Alerts + +Get last created SearchLight alerts and incidents + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alerts` | `array` | SearchLight Alerts | + + +## Extra + +Module **`Digital Shadows` v1.16** \ No newline at end of file diff --git a/_shared_content/automate/library/duo.md b/_shared_content/automate/library/duo.md new file mode 100644 index 0000000000..4644a405c5 --- /dev/null +++ b/_shared_content/automate/library/duo.md @@ -0,0 +1,33 @@ +# Duo + +![Duo](/assets/playbooks/library/duo.png){ align=right width=150 } + +Duo is a Cisco company offering solutions for strong authentication with multi-factor authentication (MFA), single sign-on (SSO), remote access or device trusting. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hostname` | `string` | Duo Admin API hostname | +| `integration_key` | `string` | Duo Admin API integration key | +| `secret_key` | `string` | Duo Admin API secret key | + +## Triggers + +### Fetch new logs from Duo + +Get last logs from the Duo platform + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Duo` v1.3.1** \ No newline at end of file diff --git a/_shared_content/automate/library/extrahop.md b/_shared_content/automate/library/extrahop.md new file mode 100644 index 0000000000..a19783f412 --- /dev/null +++ b/_shared_content/automate/library/extrahop.md @@ -0,0 +1,33 @@ +# ExtraHop + +![ExtraHop](/assets/playbooks/library/extrahop.png){ align=right width=150 } + +ExtraHop is a leading provider of network detection and response (NDR) solutions. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | API base URL | +| `client_id` | `string` | Client ID | +| `client_secret` | `string` | Client Secret | + +## Triggers + +### [BETA] Fetch new alerts from ExtraHop Reveal(x) 360 + +Get last logs from the ExtraHop Reveal(x) 360 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`ExtraHop` v0.1.0** \ No newline at end of file diff --git a/_shared_content/automate/library/fileutils.md b/_shared_content/automate/library/fileutils.md new file mode 100644 index 0000000000..c205604c80 --- /dev/null +++ b/_shared_content/automate/library/fileutils.md @@ -0,0 +1,61 @@ +# fileutils + +![fileutils](/assets/playbooks/library/fileutils.svg){ align=right width=150 } + +This module exposes action to manipulate files. It extracts data from XML or JSON files. + +## Configuration + +This module accepts no configuration. + +## Actions + +### Read JSON File + +Read the json file and return its content evaluated against specified jsonpath + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the JSON file to read. | +| `file` | `object` | The JSON content to read. | +| `jsonpath` | `string` | JSON path to evaluate against read file content | +| `return_list` | `boolean` | Always return a list of results. Default to false. | +| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `output` | `object` | Content read from file | +| `output_path` | `object` | Path to the file with the content | + +### Read XML File + +Read the XML file and return its content evaluated against specified xpath + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the XML or HTML file to read. | +| `file` | `object` | The XML content to read. | +| `xpath` | `string` | XML path to evaluate against read file content | +| `source_type` | `string` | Source type of the input, it can be XML or HTML | +| `return_list` | `boolean` | Always return a list of results. Default to false. | +| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `output` | `object` | Content read from file | +| `output_path` | `object` | Path to the file with the content | + + +## Extra + +Module **`fileutils` v1.26** \ No newline at end of file diff --git a/_shared_content/automate/library/fortigate-firewalls.md b/_shared_content/automate/library/fortigate-firewalls.md new file mode 100644 index 0000000000..db94f5117c --- /dev/null +++ b/_shared_content/automate/library/fortigate-firewalls.md @@ -0,0 +1,55 @@ +# Fortigate Firewalls + +![Fortigate Firewalls](/assets/playbooks/library/fortigate-firewalls.svg){ align=right width=150 } + +Fortigate is a firewall appliance from [Fortinet](http://www.fortinet.com/) with anti-spam and anti-virus features. Initially distributed as a physical, rack-mounted product, Fortigate can now be installed as a virtual appliance that could run on virtualization platforms such as VMware vSphere + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `firewalls` | `array` | | + +## Actions + +### Post Fortigate Address Group + +Add a new Address Group to a Fortigate Firewall + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | The name of the Address Group. | +| `member` | `array` | The Object LIST to be added in the Address Group (can be an IP address, a FQDN or event a Group), for example Address1 | + +### Post Fortigate FQDN Address + +Add a new FQDN object to a Fortigate Firewall + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | The name of the Address. | +| `fqdn` | `string` | The FQDN to be blocked (for ex: 'example.domain.com'). | +| `associated-interface` | `string` | The associated interface of the firewall leave blank for 'Any' (default: Any). | +| `comment` | `string` | A commentary to be displayed in the Fortigate GUI (default none). | + +### Post Fortigate IP Address + +Add a new IP Address object to a Fortigate Firewall + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | The name of the Address. | +| `ip` | `string` | The IPv4 linked with the Address to be blocked, (for ex: '1.1.1.1'). | +| `associated-interface` | `string` | The associated interface of the firewall leave blank for 'Any' (default: Any). | +| `comment` | `string` | A commentary to be displayed in the Fortigate GUI (default none). | + + +## Extra + +Module **`Fortigate Firewalls` v1.24** \ No newline at end of file diff --git a/_shared_content/automate/library/fortigate-fw.md b/_shared_content/automate/library/fortigate-fw.md new file mode 100644 index 0000000000..4dab81cfd7 --- /dev/null +++ b/_shared_content/automate/library/fortigate-fw.md @@ -0,0 +1,98 @@ +# fortigate_fw + + + +Fortigate is a firewall appliance from [Fortinet](http://www.fortinet.com/) with anti-spam and anti-virus features. Initially distributed as a physical, rack-mounted product, Fortigate can now be installed as a virtual appliance that could run on virtualization platforms such as VMware vSphere + +## Configuration + + + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| firewalls | array | | + + + + + + + + +## Actions + +### Post Fortigate Address Group + +Add a new Address Group to a Fortigate Firewall + + + +#### Arguments + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| name | string | The name of the Address Group. | +| member | array | The Object LIST to be added in the Address Group (can be an IP address, a FQDN or event a Group), for example Address1 | + + + + + + + + + +### Post Fortigate FQDN Address + +Add a new FQDN object to a Fortigate Firewall + + + +#### Arguments + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| name | string | The name of the Address. | +| fqdn | string | The FQDN to be blocked (for ex: 'example.domain.com'). | +| associated-interface | string | The associated interface of the firewall leave blank for 'Any' (default: Any). | +| comment | string | A commentary to be displayed in the Fortigate GUI (default none). | + + + + + + + + + +### Post Fortigate IP Address + +Add a new IP Address object to a Fortigate Firewall + + + +#### Arguments + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| name | string | The name of the Address. | +| ip | string | The IPv4 linked with the Address to be blocked, (for ex: '1.1.1.1'). | +| associated-interface | string | The associated interface of the firewall leave blank for 'Any' (default: Any). | +| comment | string | A commentary to be displayed in the Fortigate GUI (default none). | + + + + + + + + + + + + + + +## Extra + +Module **fortigate_fw v.1.15** \ No newline at end of file diff --git a/_shared_content/automate/library/git.md b/_shared_content/automate/library/git.md new file mode 100644 index 0000000000..65e816b27f --- /dev/null +++ b/_shared_content/automate/library/git.md @@ -0,0 +1,61 @@ +# Git + +![Git](/assets/playbooks/library/git.svg){ align=right width=150 } + +[Git](https://git-scm.com/) is a free and open source distributed version control system designed to handle projects with speed and efficiency. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `repository_url` | `string` | Git Repository URL | + +## Triggers + +### File Changes + +Trigger playbook run on file changes inside Git Repository + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sleep_time` | `integer` | Time in seconds the trigger sleeps between the checks of file changes | +| `chunk_size` | `integer` | Break results by groups of at most files (only one group by default) | +| `send_initial_state` | `boolean` | Create events for the initial state of the repository | +| `filter` | `string` | Apply an fnmatch filter to the tracked files | +| `include_repository` | `boolean` | Include the full repository everytime | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `changes` | `array` | File Changes | +| `old_commit` | `string` | hexsha of the previous commit | +| `new_commit` | `string` | hexsha of the last commit | +| `repository_path` | `string` | path of the repository directory | + + +### New Commit + +Trigger playbook run on every Git commit + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sleep_time` | `integer` | Time in seconds the trigger sleeps between the checks of new commits | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `commit` | `object` | Git Commit | +| `repository_path` | `string` | path of the repository directory | + + +## Extra + +Module **`Git` v1.10** \ No newline at end of file diff --git a/_shared_content/automate/library/github.md b/_shared_content/automate/library/github.md new file mode 100644 index 0000000000..6bec7a7cb8 --- /dev/null +++ b/_shared_content/automate/library/github.md @@ -0,0 +1,34 @@ +# Github + +![Github](/assets/playbooks/library/github.png){ align=right width=150 } + +Github connector for audit logs + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `org_name` | `string` | The name of your Github organization | +| `apikey` | `string` | The APIkey to authenticate call to the Github API | +| `pem_file` | `string` | Pem file to interact with Github API | +| `app_id` | `integer` | Github app id to interact with Github API | + +## Triggers + +### Fetch new audit logs from Github + +Get last audit logs from a Github organization + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `ratelimit_per_minute` | `integer` | The number of requests allowed to the API in one minute for the token | + + +## Extra + +Module **`Github` v1.5.0** \ No newline at end of file diff --git a/_shared_content/automate/library/glimps.md b/_shared_content/automate/library/glimps.md new file mode 100644 index 0000000000..473b2c4113 --- /dev/null +++ b/_shared_content/automate/library/glimps.md @@ -0,0 +1,113 @@ +# GLIMPS + +![GLIMPS](/assets/playbooks/library/glimps.png){ align=right width=150 } + +[Glimps](https://www.glimps.fr/) offers a DeepLearning solution to detect, analyze and classify malwares. It enables faster responses during incidents with a detailed understanding of the threat + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Glimps base URL (ex. https://gmalware.ggp.glimps.re) | +| `api_key` | `string` | APIKEY for the Glimps's API | + +## Actions + +### Get the results of an analysis + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | Unique analysis identifier | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `done` | `boolean` | is the analysis finished | +| `duration` | `integer` | duration of the analysis in milliseconds | +| `error` | `string` | error message if Status is false | +| `errors` | `object` | error message by services | +| `file_count` | `integer` | amount of file in the submission (input + extracted) | +| `filenames` | `array` | list of analysed filename | +| `files` | `array` | array of submission files (input file and extracted sub-files) | +| `filetype` | `string` | | +| `is_malware` | `boolean` | analysis result, is a malware or not | +| `malwares` | `array` | list of malware names found in analysis | +| `md5` | `string` | string hex encoded input file MD5 | +| `score` | `integer` | highest score given by probes | +| `sha1` | `string` | string hex encoded input file SHA1 | +| `sha256` | `string` | string hex encoded input file SHA256 | +| `sid` | `string` | analysis UUID handled by GLIMPS malware finder - expert
could be used to construct expert link like:
https://gmalware.useddomain.glimps.re/expert/en/analysis/results/advanced/${SID} | +| `size` | `integer` | input file size (in bytes) | +| `ssdeep` | `string` | string input file SSDeep | +| `status` | `boolean` | true => no error to report,
false => an error occurred | +| `timestamp` | `integer` | timestamp of the start of analysis in milliseconds | +| `token` | `string` | token that can be used to view analysis result in expert view | +| `uuid` | `string` | Unique analysis identifier | + +### Search previous analysis + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sha256` | `string` | string hex encoded input file SHA256 | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `done` | `boolean` | is the analysis finished | +| `duration` | `integer` | duration of the analysis in milliseconds | +| `error` | `string` | error message if Status is false | +| `errors` | `object` | error message by services | +| `file_count` | `integer` | amount of file in the submission (input + extracted) | +| `filenames` | `array` | list of analysed filename | +| `files` | `array` | array of submission files (input file and extracted sub-files) | +| `filetype` | `string` | | +| `is_malware` | `boolean` | analysis result, is a malware or not | +| `malwares` | `array` | list of malware names found in analysis | +| `md5` | `string` | string hex encoded input file MD5 | +| `score` | `integer` | highest score given by probes | +| `sha1` | `string` | string hex encoded input file SHA1 | +| `sha256` | `string` | string hex encoded input file SHA256 | +| `sid` | `string` | analysis UUID handled by GLIMPS malware finder - expert
could be used to construct expert link like:
https://gmalware.useddomain.glimps.re/expert/en/analysis/results/advanced/${SID}
| +| `size` | `integer` | input file size (in bytes) | +| `ssdeep` | `string` | string input file SSDeep | +| `status` | `boolean` | true => no error to report,
false => an error occurred
| +| `timestamp` | `integer` | timestamp of the start of analysis in milliseconds | +| `token` | `string` | token that can be used to view analysis result in expert view | +| `uuid` | `string` | Unique analysis identifier
| + +### Analyse a file + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bypass-cache` | `boolean` | ask the API to bypass cache and always submit the file to the orchestrator (optional) | +| `file` | `string` | The file to scan | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `error` | `string` | string describing error | +| `status` | `boolean` | false => an error occurred | +| `uuid` | `string` | Unique analysis identifier | + + +## Extra + +Module **`GLIMPS` v1.10** \ No newline at end of file diff --git a/_shared_content/automate/library/google.md b/_shared_content/automate/library/google.md new file mode 100644 index 0000000000..398acacc72 --- /dev/null +++ b/_shared_content/automate/library/google.md @@ -0,0 +1,76 @@ +# Google + +![Google](/assets/playbooks/library/google.svg){ align=right width=150 } + +Google module + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `credentials` | `object` | Credentials to use. You can find them in the credentials file | + +## Triggers + +### [BETA] Get user activities + +Get user activities using google reports + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `application_name` | `string` | The application from which the activities should be fetched | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `admin_mail` | `string` | Email of your google admin | + + +### Connect to the specified project subscription + +Connect to the Google Cloud Pub/Sub topic and return events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_key` | `string` | Intake key to use when sending events | +| `frequency` | `integer` | Batch frequency in seconds | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `project_id` | `string` | Project ID | +| `subject_id` | `string` | Subscription ID | +| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `messages_path` | `string` | Path to the file holding the results | + +## Actions + +### Run a query against a BigQuery table + +Execute the given query and return the results + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Query to run | +| `parameters` | `array` | Parameters to use inside the query | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `items_path` | `string` | Path to the file holding the results | + + +## Extra + +Module **`Google` v1.14.9** \ No newline at end of file diff --git a/_shared_content/automate/library/harfanglab.md b/_shared_content/automate/library/harfanglab.md new file mode 100644 index 0000000000..968fdee17e --- /dev/null +++ b/_shared_content/automate/library/harfanglab.md @@ -0,0 +1,136 @@ +# HarfangLab + +![HarfangLab](/assets/playbooks/library/harfanglab.png){ align=right width=150 } + +HarfangLab is an Endpoint detection and response (EDR) solution certified by ANSSI since 2020 + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `url` | `string` | URL of the HarfangLab instance | +| `api_token` | `string` | Authentication token for the API | + +## Actions + +### Deisolate an agent + +Deisolate an agent + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | The identifier of the agent to deisolate | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `requested` | `array` | The list of identifiers of non-deisolated endpoints | +| `unrequested` | `array` | The list of identifiers of deisolated endpoints | + +### Isolate an agent + +Isolate an agent + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | The identifier of the agent to isolate | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `requested` | `array` | The list of identifiers of isolated endpoints | +| `unrequested` | `array` | The list of identifiers of non-isolated endpoints | + +### Deisolate a group + +Deisolate a group of endpoints + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | The identifier of the group to deisolate | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `requested` | `array` | The list of identifiers of non-deisolated endpoints | +| `unrequested` | `array` | The list of identifiers of deisolated endpoints | + +### Isolate a group + +Isolate a group of endpoints + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | The identifier of the group to isolate | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `requested` | `array` | The list of identifiers of isolated endpoints | +| `unrequested` | `array` | The list of identifiers of non-isolated endpoints | + +### List named pipes + +Get the list of named pipe on the systems + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target_agents` | `string` | Targeted agents identifier | +| `target_groups` | `string` | Targeted groups identifier | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `str` | Identifier of the job | +| `action` | `str` | Name of job action | +| `creationtime` | `string` | Creation date of the job | +| `parameters` | `object` | Parameters of the job | + +### List processes + +Get the list of processes on the systems + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target_agents` | `string` | Targeted agents identifier | +| `target_groups` | `string` | Targeted groups identifier | +| `get_connections_list` | `boolean` | Get list of connections (listening and connected sockets) | +| `get_handles_list` | `boolean` | Get list of open handles | +| `get_signatures_list` | `boolean` | Get signature info of processes and DLLs | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `str` | Identifier of the job | +| `action` | `str` | Name of job action | +| `creationtime` | `string` | Creation date of the job | +| `parameters` | `object` | Parameters of the job | + + +## Extra + +Module **`HarfangLab` v1.19** \ No newline at end of file diff --git a/_shared_content/automate/library/http.md b/_shared_content/automate/library/http.md new file mode 100644 index 0000000000..2574e38ec0 --- /dev/null +++ b/_shared_content/automate/library/http.md @@ -0,0 +1,66 @@ +# HTTP + +![HTTP](/assets/playbooks/library/http.svg){ align=right width=150 } + +This module exposes actions to request HTTP resources + +## Configuration + +This module accepts no configuration. + +## Actions + +### Download File + +Donwload the given file and save it + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `url` | `string` | Url of the file to download | +| `headers` | `object` | Headers to use when sending the requests. i.e. {"authorization": "Bearer foo"} | +| `verify_ssl` | `boolean` | Wether the SSL certificate must be verified. Default to true. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path on disk | + +### Request URL + +Requests a resource at a specified URL and returns the response as Raw or JSON + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `url` | `string` | Target URL of the HTTP request | +| `headers` | `object` | Headers to use when sending the requests. i.e. {"authorization": "Bearer foo"} | +| `method` | `string` | Method of the HTTP request | +| `data` | `string` | The body to attach to the request | +| `json` | `object` | The JSON to attach as body of the request | +| `params` | `string` | Query string parameters to append to the URL | +| `fail_on_http_error` | `boolean` | Fail when the HTTP query returns in error. Default to true. | +| `verify_ssl` | `boolean` | Wether the SSL certificate must be verified. Default to true. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `reason` | `string` | Textual reason of responded HTTP Status, e.g. 'Not Found' or 'OK'. | +| `status_code` | `integer` | Integer code of responded HTTP Status | +| `url` | `string` | Final URL of the triggered resource | +| `headers` | `object` | Headers used by the server in the response | +| `encoding` | `string` | Encoding of the response | +| `elapsed` | `number` | The amount of seconds elapsed between sending the request and the arrival of the response | +| `text` | `string` | Content of the response in unicode | +| `json` | `object` | JSON-encoded value of the response | + + +## Extra + +Module **`HTTP` v1.118** \ No newline at end of file diff --git a/_shared_content/automate/library/iknowwhatyoudownload.md b/_shared_content/automate/library/iknowwhatyoudownload.md new file mode 100644 index 0000000000..919e9840ba --- /dev/null +++ b/_shared_content/automate/library/iknowwhatyoudownload.md @@ -0,0 +1,78 @@ +# IKnowWhatYouDownload + +![IKnowWhatYouDownload](/assets/playbooks/library/iknowwhatyoudownload.png){ align=right width=150 } + +[iknowwhatyoudownload](https://iknowwhatyoudownload.com) collects torrent files and peers from torrent sites and DHT network. It allows associating IP addresses to downloaded and shared data + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `host` | `string` | IknowWhatYouDownload host for API queries | +| `key` | `string` | APIKEY for the IKnowWhatYouDownload Service | + +## Actions + +### Check IP existence + +Fast check if IP exists or not in the IKnowWhatYouDownload database + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The IP address to query | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | ip address | +| `exists` | `boolean` | does IKnowWhatYouDownload have history for this ip or not | +| `date` | `string` | last seen date in UTC, optional | + +### Get IP History + +Fetches the historical data of downloaded and shared content using the BitTorrent protocol of an IP + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The IP address to query | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | ip address | +| `isp` | `string` | Interner Service Provider if known | +| `hasPorno` | `boolean` | if any content has category XXX | +| `hasChildPorno` | `boolean` | if any content has category 'ChildPorno' | +| `geoData` | `object` | geo data for ip if known | +| `contents` | `array` | list of found contents | + +### List IPs from CIDR + +Fetch the list IP that can be found in a CIDR notation + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `cidr` | `string` | The CIDR address to query | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `CIDR` | `string` | the requested CIDR address | +| `peers` | `array` | array of peers | + + +## Extra + +Module **`IKnowWhatYouDownload` v1.21** \ No newline at end of file diff --git a/_shared_content/automate/library/imperva.md b/_shared_content/automate/library/imperva.md new file mode 100644 index 0000000000..2ddcc05ee1 --- /dev/null +++ b/_shared_content/automate/library/imperva.md @@ -0,0 +1,41 @@ +# Imperva + +![Imperva](/assets/playbooks/library/imperva.png){ align=right width=150 } + +Imperva Module + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Imperva API base URL | +| `api_id` | `string` | Imperva API ID | +| `api_key` | `string` | Imperva API key | +| `keys` | `object` | Encryption keys | + +## Triggers + +### Imperva WAF logs + +Fetch Imperva WAF logs + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds, default 2s | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_key` | `string` | Intake key to use when sending events | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `logs` | `array` | A list of logs. | +| `logs_path` | `string` | The filename containing the logs | + + +## Extra + +Module **`Imperva` v1.16** \ No newline at end of file diff --git a/_shared_content/automate/library/intra_id.md b/_shared_content/automate/library/intra_id.md new file mode 100644 index 0000000000..af9d40b21a --- /dev/null +++ b/_shared_content/automate/library/intra_id.md @@ -0,0 +1,156 @@ +# Microsoft Entra ID (Azure AD) + +![Microsoft Entra ID (Azure AD) ](/assets/playbooks/library/entra-id.svg){ align=right width=150 } + +[Microsoft Entra ID (Azure AD)](https://azure.microsoft.com/en-us/services/active-directory/#overview) is an enterprise identity service that provides single sign-on, multifactor authentication, and conditional access to guard against 99.9 percent of cybersecurity attacks. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `tenant_id` | `string` | ID of the Microsoft Entra ID (Azure AD) tenant | +| `client_id` | `string` | Client ID. An application needs to be created in the Azure Portal and assigned relevent permissions. Its Client ID should then be used in this configuration. | +| `client_secret` | `string` | Client Secret associated with the registered application. Admin Consent has to be granted to the application for it to work. | +| `username` | `string` | The username of the delegated account used for some administrative tasks (eg: reset password) | +| `password` | `string` | The password of the delegated account used for some administrative tasks (eg: reset password) | + +## Actions + +### Delete app + +Delete an app in Microsoft Entra ID (Azure AD) . Requires the Application.ReadWrite.OwnedBy or Application.ReadWrite.All. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | Object ID of the app. | + +### Disable User + +Disable an Microsoft Entra ID (Azure AD) user. Requires the User.ReadWrite.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + +### Enable User + +Enable an Microsoft Entra ID (Azure AD) user. Requires the User.ReadWrite.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + +### Get SignIns + +Get the last sign ins of an Microsoft Entra ID (Azure AD) user. Requires the AuditLog.Read.All and Directory.Read.All permissions. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `signIns` | `array` | | + +### Get User + +Get information about an Microsoft Entra ID (Azure AD) user. Requires the User.Read.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | +| `accountEnabled` | `boolean` | | +| `assignedLicenses` | `array` | | +| `city` | `string` | | +| `companyName` | `string` | | +| `country` | `string` | | +| `createdDateTime` | `string` | | +| `creationType` | `string` | | +| `deletedDateTime` | `string` | | +| `department` | `string` | | +| `displayName` | `string` | | +| `identities` | `array` | | +| `jobTitle` | `string` | | +| `lastPasswordChangeDateTime` | `string` | | +| `mail` | `string` | | +| `mobilePhone` | `string` | | +| `userPrincipalName` | `string` | | + +### Get User Authentication Methods + +Get information about an user's authentication methods (such as their MFA status). Requires the UserAuthenticationMethod.Read.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | +| `userPrincipalName` | `string` | | +| `userDisplayName` | `string` | | +| `isSsprRegistered` | `boolean` | | +| `isSsprEnabled` | `boolean` | | +| `isSsprCapable` | `boolean` | | +| `isMfaRegistered` | `boolean` | | +| `isMfaCapable` | `boolean` | | +| `isPasswordlessCapable` | `boolean` | | +| `methodsRegistered` | `array` | | +| `defaultMfaMethod` | `string` | | + +### Reset User Password + +Reset a user's password. You will need UserAuthenticationMethod.ReadWrite.All deleguated permission. And to disable the MFA authentication in your Microsoft Entra ID (Azure AD) + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | +| `userNewPassword` | `string` | New password, required to reset the old one of course. | + +### Revoke Sign in + +Invalidates all the refresh tokens issued to applications for a user. Requires the User.ReadWrite.All or Directory.ReadWrite.All permissions. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the app. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + + +## Extra + +Module **`Microsoft Entra ID (Azure AD) ` v2.5.4** \ No newline at end of file diff --git a/_shared_content/automate/library/ipinfo.md b/_shared_content/automate/library/ipinfo.md new file mode 100644 index 0000000000..7be685dc71 --- /dev/null +++ b/_shared_content/automate/library/ipinfo.md @@ -0,0 +1,38 @@ +# IPInfo + +![IPInfo](/assets/playbooks/library/ipinfo.png){ align=right width=150 } + +[IPINFO.IO](https://ipinfo.io//) is a database that gives access to daily updates for IP to country and IP to ASN + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_token` | `string` | ipinfo.io token | + +## Triggers + +### Fetch ipinfo.io database + +Upload the ipinfo.io database regularly in json format + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | +| `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path of the generated observables | +| `chunk_offset` | `integer` | Offset of the chunk in the full database | +| `chunk_size` | `integer` | Size of the chunk | + + +## Extra + +Module **`IPInfo` v1.0** \ No newline at end of file diff --git a/_shared_content/automate/library/iptoasn.md b/_shared_content/automate/library/iptoasn.md new file mode 100644 index 0000000000..507b5f9d88 --- /dev/null +++ b/_shared_content/automate/library/iptoasn.md @@ -0,0 +1,34 @@ +# IPtoASN + +[IPtoASN](https://iptoasn.com/) is a free, downloadable and frequently updated ASN database. It allow associating IP addresses to ASN + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch Database + +Download the IPtoASN database recurrently + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | +| `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | Database file path | +| `chunk_offset` | `integer` | Offset of the chunk in the full database | +| `chunk_size` | `integer` | Size of the chunk | + + +## Extra + +Module **`IPtoASN` v1.28** \ No newline at end of file diff --git a/_shared_content/automate/library/jumpcloud-directory-insights.md b/_shared_content/automate/library/jumpcloud-directory-insights.md new file mode 100644 index 0000000000..e9468781cd --- /dev/null +++ b/_shared_content/automate/library/jumpcloud-directory-insights.md @@ -0,0 +1,33 @@ +# Jumpcloud Directory Insights + +![Jumpcloud Directory Insights](/assets/playbooks/library/jumpcloud-directory-insights.png){ align=right width=150 } + +Directory Insights allows you to read event logs, view activity in your directory, and monitor user authentications to the console, RADIUS, LDAP, and SSO apps. Directory Insights analyzes the audit trails that lead to critical events so you know the what, where, when, how, and who of your directory activities. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Jumpcloud Directory Insights API Base URL | +| `apikey` | `string` | The API key to authenticate calls to the Jumpcloud Directory Insights API | + +## Triggers + +### [BETA] Jumpcloud Directory Insights Connector + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_server` | `string` | | +| `intake_key` | `string` | | +| `chunk_size` | `integer` | | +| `frequency` | `integer` | | +| `service` | `string` | Comma separated list of Jumpcloud services logs to collect | + + +## Extra + +Module **`Jumpcloud Directory Insights` v1.6.1** \ No newline at end of file diff --git a/_shared_content/automate/library/lacework.md b/_shared_content/automate/library/lacework.md new file mode 100644 index 0000000000..26d276f475 --- /dev/null +++ b/_shared_content/automate/library/lacework.md @@ -0,0 +1,35 @@ +# Lacework + +![Lacework](/assets/playbooks/library/lacework.png){ align=right width=150 } + +[Lacework](https://www.lacework.com/) is a cybersecurity company specializing in cloud security and compliance, offering automated threat detection and response solutions for modern cloud environments. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `key_id` | `string` | The KeyId of your API Key | +| `secret` | `string` | The secret of your API Key | +| `account` | `string` | The account of your API Key (e.g: `YourLaceworkTenant.lacework.net`) | + +## Triggers + +### [BETA] Fetch new logs from Lacework + +Get last system logs from the Lacework platform + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `filter` | `string` | [Filter Expression](https://docs.lacework.net/console/filter-alerts) that filters the results | +| `ratelimit_per_hour` | `integer` | The number of requests allowed to the API in one hour for the token | + + +## Extra + +Module **`Lacework` v0.1.5** \ No newline at end of file diff --git a/_shared_content/automate/library/mandrill.md b/_shared_content/automate/library/mandrill.md new file mode 100644 index 0000000000..4806107add --- /dev/null +++ b/_shared_content/automate/library/mandrill.md @@ -0,0 +1,38 @@ +# Mandrill + +![Mandrill](/assets/playbooks/library/mandrill.svg){ align=right width=150 } + +Mandrill is a transactional email platform from Mailchimp. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `apikey` | `string` | APIKEY for Mandrill | + +## Actions + +### Send Message + +Send a new transactional message through Mandrill + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `message` | `object` | The information on the message to send | +| `async` | `boolean` | Enable a background sending mode that is optimized for bulk sending. In async mode, messages/send will immediately return a status of 'queued' for every recipient. To handle rejections when sending in async mode, set up a webhook for the 'reject' event. Defaults to false for messages with no more than 10 recipients; messages with more than 10 recipients are always sent asynchronously, regardless of the value of async. | +| `ip_pool` | `string` | The name of the dedicated ip pool that should be used to send the message. If you do not have any dedicated IPs, this parameter has no effect. If you specify a pool that does not exist, your default pool will be used instead. | +| `send_at` | `string` | When this message should be sent as a UTC timestamp in YYYY-MM-DD HH:MM:SS format. If you specify a time in the past, the message will be sent immediately. An additional fee applies for scheduled email, and this feature is only available to accounts with a positive balance. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `report` | `array` | An array of structs for each recipient containing the key 'email' with the email address, and details of the message status for that recipient | + + +## Extra + +Module **`Mandrill` v2.7** \ No newline at end of file diff --git a/_shared_content/automate/library/mattermost.md b/_shared_content/automate/library/mattermost.md new file mode 100644 index 0000000000..53d678736b --- /dev/null +++ b/_shared_content/automate/library/mattermost.md @@ -0,0 +1,44 @@ +# Mattermost + +![Mattermost](/assets/playbooks/library/mattermost.svg){ align=right width=150 } + +[Mattermost](https://mattermost.com/) is a secure, open and flexible collaboration platform + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hook_url` | `string` | URL of the mattermost incoming webhook | + +## Actions + +### Post Sekoia.io Alert + +Post alert to Mattermost + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert_uuid` | `string` | The Unique identifier of the alert | +| `channel` | `string` | The channel the message posts in. Use the channel’s name and not the display name, e.g. use town-square, not Town Square. | +| `api_key` | `string` | The Sekoia.io API-Key to read the alert content. | +| `base_url` | `string` | Base URL of Sekoia.io api (e.g. https://api.sekoia.io/). | +| `pretext` | `string` | An optional line of text that will be shown above the alert | + +### Post Message + +Post message to Mattermost + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `message` | `string` | The message to post | +| `channel` | `string` | The channel the message posts in. Use the channel’s name and not the display name, e.g. use town-square, not Town Square. | +| `username` | `string` | Overrides the username the message posts as. | + + +## Extra + +Module **`Mattermost` v1.18** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-active-directory.md b/_shared_content/automate/library/microsoft-active-directory.md new file mode 100644 index 0000000000..a8f1941d4e --- /dev/null +++ b/_shared_content/automate/library/microsoft-active-directory.md @@ -0,0 +1,54 @@ +# Microsoft Active Directory + +![Microsoft Active Directory](/assets/playbooks/library/microsoft-active-directory.png){ align=right width=150 } + +Microsoft Active Directory (Microsoft AD), is a directory service developed by Microsoft for Windows domain networks. It is a centralized system that stores information about networked resources and makes these resources easily accessible to users and administrators. Active Directory provides services for authentication and authorization, organizing and managing resources, such as users, computers, and devices, in a networked environment. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `servername` | `string` | IP or name of your host | +| `admin_username` | `string` | The username of the account that have necessary permisions to change passwords (e.g admin@example.com ) | +| `admin_password` | `string` | The dedicated password of the account | + +## Actions + +### Disable User + +Disable a Microsoft Active Directory user. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `username` | `string` | Target user | +| `basedn` | `string` | The starting point an LDAP server uses when searching for users authentication within your Directory. (e.g DC=example-domain,DC=com) | + +### Enable User + +Enable a Microsoft Active Directory user. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `username` | `string` | Target user | +| `basedn` | `string` | he starting point an LDAP server uses when searching for users authentication within your Directory. (e.g DC=example-domain,DC=com) | + +### Reset User Password + +Reset a user's password. You will need a strong password for that otherwise enable the password policy + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `username` | `string` | Target user | +| `basedn` | `string` | The starting point an LDAP server uses when searching for users authentication within your Directory. (e.g DC=example-domain,DC=com) | +| `new_password` | `string` | New password, required to reset the old one of course. | + + +## Extra + +Module **`Microsoft Active Directory` v1.0.0** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-azure.md b/_shared_content/automate/library/microsoft-azure.md new file mode 100644 index 0000000000..8f0c811751 --- /dev/null +++ b/_shared_content/automate/library/microsoft-azure.md @@ -0,0 +1,67 @@ +# Microsoft Azure + +![Microsoft Azure](/assets/playbooks/library/microsoft-azure.png){ align=right width=150 } + +Microsoft Azure is a cloud computing service operated by Microsoft + +## Configuration + +This module accepts no configuration. + +## Triggers + +### [BETA] Collect Azure Blob Storage events + +Trigger playbook to get Azure Blob Storage events information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `container_name` | `string` | Container name to interact with Azure Blob Storage | +| `account_name` | `string` | Account name of the Azure Blob Storage | +| `account_key` | `string` | Account key of the Azure Blob Storage | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `frequency` | `integer` | Batch frequency in seconds | + + +### Consume Eventhub messages + +Consume messages from Microsoft Azure Eventhub + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hub_connection_string` | `string` | The connection string to connect the eventhub on Microsoft Azure eventHub | +| `storage_connection_string` | `string` | The connection string to connect the Microsoft Azure Storage blob | +| `storage_container_name` | `string` | The name of the container to use | +| `hub_name` | `string` | The name of the hub | +| `hub_consumer_group` | `string` | The consumergroup to supplied to the hub | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | + + +### [BETA] Fetch new Azure Network Watcher events from Blob Storage + +Trigger playbook to get Azure Network Watcher events information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `container_name` | `string` | Container name to interact with Azure Network Watcher | +| `account_name` | `string` | Account name of the Azure Network Watcher | +| `account_key` | `string` | Account key of the Azure Network Watcher | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `frequency` | `integer` | Batch frequency in seconds | + + +## Extra + +Module **`Microsoft Azure` v2.4.8** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-entra-id.md b/_shared_content/automate/library/microsoft-entra-id.md new file mode 100644 index 0000000000..e00764d0c8 --- /dev/null +++ b/_shared_content/automate/library/microsoft-entra-id.md @@ -0,0 +1,156 @@ +# Microsoft Entra ID + +![Microsoft Entra ID](/assets/playbooks/library/microsoft-entra-id.svg){ align=right width=150 } + +[Microsoft Entra ID (formely Azure Active Directory)](https://azure.microsoft.com/en-us/services/active-directory/#overview) is an enterprise identity service that provides single sign-on, multifactor authentication, and conditional access to guard against 99.9 percent of cybersecurity attacks. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `tenant_id` | `string` | ID of the Microsoft Entra ID tenant | +| `client_id` | `string` | Client ID. An application needs to be created in the Azure Portal and assigned relevent permissions. Its Client ID should then be used in this configuration. | +| `client_secret` | `string` | Client Secret associated with the registered application. Admin Consent has to be granted to the application for it to work. | +| `username` | `string` | The username of the delegated account used for some administrative tasks (eg: reset password) | +| `password` | `string` | The password of the delegated account used for some administrative tasks (eg: reset password) | + +## Actions + +### Delete app + +Delete an app in azure AD. Requires the Application.ReadWrite.OwnedBy or Application.ReadWrite.All. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | Object ID of the app. | + +### Disable User + +Disable an Azure Active Directory user. Requires the User.ReadWrite.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + +### Enable User + +Enable an Azure Active Directory user. Requires the User.ReadWrite.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + +### Get SignIns + +Get the last sign ins of an Azure AD user. Requires the AuditLog.Read.All and Directory.Read.All permissions. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `signIns` | `array` | | + +### Get User + +Get information about an Azure Active Directory user. Requires the User.Read.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | +| `accountEnabled` | `boolean` | | +| `assignedLicenses` | `array` | | +| `city` | `string` | | +| `companyName` | `string` | | +| `country` | `string` | | +| `createdDateTime` | `string` | | +| `creationType` | `string` | | +| `deletedDateTime` | `string` | | +| `department` | `string` | | +| `displayName` | `string` | | +| `identities` | `array` | | +| `jobTitle` | `string` | | +| `lastPasswordChangeDateTime` | `string` | | +| `mail` | `string` | | +| `mobilePhone` | `string` | | +| `userPrincipalName` | `string` | | + +### Get User Authentication Methods + +Get information about an user's authentication methods (such as their MFA status). Requires the UserAuthenticationMethod.Read.All permission. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | +| `userPrincipalName` | `string` | | +| `userDisplayName` | `string` | | +| `isSsprRegistered` | `boolean` | | +| `isSsprEnabled` | `boolean` | | +| `isSsprCapable` | `boolean` | | +| `isMfaRegistered` | `boolean` | | +| `isMfaCapable` | `boolean` | | +| `isPasswordlessCapable` | `boolean` | | +| `methodsRegistered` | `array` | | +| `defaultMfaMethod` | `string` | | + +### Reset User Password + +Reset a user's password. You will need UserAuthenticationMethod.ReadWrite.All deleguated permission. And to disable the MFA authentication in your azure AD + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | +| `userNewPassword` | `string` | New password, required to reset the old one of course. | + +### Revoke Sign in + +Invalidates all the refresh tokens issued to applications for a user. Requires the User.ReadWrite.All or Directory.ReadWrite.All permissions. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | ID of the app. | +| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | + + +## Extra + +Module **`Microsoft Entra ID` v2.7** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-office365.md b/_shared_content/automate/library/microsoft-office365.md new file mode 100644 index 0000000000..4698c7e37d --- /dev/null +++ b/_shared_content/automate/library/microsoft-office365.md @@ -0,0 +1,52 @@ +# Microsoft Office365 + +![Microsoft Office365](/assets/playbooks/library/microsoft-office365.png){ align=right width=150 } + +Microsoft Office 365 is an online service, providing the Microsoft Office Products. + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch events from MessageTrace API (deprecated) + +Fetch events for MessageTrace API + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 5 minutes ago) | +| `start_time` | `integer` | The number of hours from which events should be queried. | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `account_name` | `string` | The account name to use | +| `account_password` | `string` | The password associated with the account | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch events from MessageTrace API (OAuth) + +Fetch events for MessageTrace API (OAuth) + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `tenant_id` | `string` | The ID of the corresponding Tenant | +| `client_id` | `string` | The account name to use | +| `client_secret` | `string` | The password associated with the account | +| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 5 minutes ago) | +| `start_time` | `integer` | The number of hours from which events should be queried. | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Microsoft Office365` v2.11** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-remote-server.md b/_shared_content/automate/library/microsoft-remote-server.md new file mode 100644 index 0000000000..7f9a6c4351 --- /dev/null +++ b/_shared_content/automate/library/microsoft-remote-server.md @@ -0,0 +1,98 @@ +# Microsoft Remote Server + +## Prerequisites + +### Remote server configuration + +To enable this module, please make sure you have properly configured WinRM on remote server. You can find more information about WinRM configuration [here](https://docs.microsoft.com/en-us/windows/win32/winrm/installation-and-configuration-for-windows-remote-management). + +If you are using Azure VM please check this [documentation](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/winrm). + +### How to setup and configure WinRM + +Before doing any setup please make sure that you are able to access remote server with Administrator privileges ( requires to setup WinRM ) +and your server is available to accept remote connections on `5985` and `5986` ports. + +If you are using Azure VM you can do this in `Network settings` tab on your machine. Below is an example of security rules for WinRM. + + ![Azure VM WinRM](/assets/instructions/winrm/security-rules.png){ align=center } + +* Open a PowerShell console as Administrator on remote server +* Execute command `Enable-PSRemoting -force` + + ![Enable-PSRemoting](/assets/instructions/winrm/1-psremoting.png){ align=center } + +* Execute command `winrm quickconfig` + + ![Quick Config](/assets/instructions/winrm/2-winrm-quick-config.png){ align=center } + +* Below commands will create new rules for allowing outside traffic to remote server on port `5985` fir WinRM HTTP and `5986` for WinRM HTTPS + + ```powershell + netsh advfirewall firewall add rule name=”WinRM-HTTP” dir=in localport=5985 protocol=TCP action=allow + netsh advfirewall firewall add rule name=”WinRM-HTTPS” dir=in localport=5986 protocol=TCP action=allow + ``` + + ![Netsh](/assets/instructions/winrm/3-netsh.png){ align=center } + +* Create certificate for WinRM HTTPS and add HTTPS Listener with the certificate thumbprint. + + ```powershell + $cert = New-SelfSignedCertificate -DnsName “” -CertStoreLocation cert:\ + winrm create winrm/config/Listener?Address=*+Transport=HTTPS “@{Hostname=`”`”;CertificateThumbprint=`”$($cert.ThumbPrint)`”}” + ``` + + ![New-SelfSignedCertificate](/assets/instructions/winrm/4-new-self-signed-certificate.png){ align=center } + +* Validate Listeners with `winrm e winrm/config/listener`. + + ![Validate listeners](/assets/instructions/winrm/5-validate-listeners.png){ align=center } + +* Enable CredSSP on server with `Enable-WSManCredSSP -Role Server`. + + ![WSManCredSSP](/assets/instructions/winrm/6-wsmancredssp.png){ align=center } + +## Configuration + +| Name | Type | Description | +|------------|----------|------------------------------------------------| +| `username` | `string` | Username to do authentication on remote server | +| `password` | `string` | Password to do authentication on remote server | + +## Actions + +### Change user password + +Change existed user password on remote server + +**Arguments** + +| Name | Type | Description | +|------------------|----------|------------------------------------------| +| `user_to_update` | `string` | Username you want to change password for | +| `new_password` | `string` | New password value | +| `server` | `string` | Remote server dns name or IP address | + +### Disable users + +Disable users on remote server + +**Arguments** + +| Name | Type | Description | +|----------|----------|----------------------------------------| +| `users` | `array` | Array of usernames you want to disable | +| `sids` | `string` | SID`s of users you want to disable. | +| `server` | `string` | Remote server dns name or IP address | + +### Enable users + +Enable users on remote server + +**Arguments** + +| Name | Type | Description | +|----------|----------|----------------------------------------| +| `users` | `array` | Array of usernames you want to disable | +| `sids` | `string` | SID`s of users you want to disable. | +| `server` | `string` | Remote server dns name or IP address | diff --git a/_shared_content/automate/library/microsoft-windows-server.md b/_shared_content/automate/library/microsoft-windows-server.md new file mode 100644 index 0000000000..16053b808f --- /dev/null +++ b/_shared_content/automate/library/microsoft-windows-server.md @@ -0,0 +1,53 @@ +# Microsoft Windows Server + +![Microsoft Windows Server](/assets/playbooks/library/microsoft-windows-server.png){ align=right width=150 } + +Microsoft Windows Server is an operating system designed for server-based computing, offering robust server management, data storage, and networking capabilities for businesses and enterprises, facilitating diverse workloads and IT operations. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `server` | `string` | Remote server dns name or IP address | +| `username` | `string` | Username to do authentication on remote server | +| `password` | `string` | Password to do authentication on remote server | + +## Actions + +### Change User Password + +Changes specified user password on remote server + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `user_to_update` | `string` | Username you want to change password for | +| `new_password` | `string` | New password for user | + +### Disable Users + +Disable specified users on remote server + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `users` | `array` | List of user names to disable. `sids` or `users` must be specified | +| `sids` | `array` | List of SID`s to disable. `sids` or `users` must be specified | + +### Enable Users + +Enable specified users on remote server + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `users` | `array` | List of user names to enable. `sids` or `users` must be specified | +| `sids` | `array` | List of SID`s to enable. `sids` or `users` must be specified | + + +## Extra + +Module **`Microsoft Windows Server` v1.0.3** \ No newline at end of file diff --git a/_shared_content/automate/library/mimecast.md b/_shared_content/automate/library/mimecast.md new file mode 100644 index 0000000000..3d8317412b --- /dev/null +++ b/_shared_content/automate/library/mimecast.md @@ -0,0 +1,32 @@ +# Mimecast + +![Mimecast](/assets/playbooks/library/mimecast.png){ align=right width=150 } + +Mimecast offers cloud-based email security, archiving, and continuity solutions to protect against cyber threats and ensure compliance. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | Client ID | +| `client_secret` | `string` | Client Secret | + +## Triggers + +### [BETA] Fetch new email events from Mimecast + +Mimecast - Email Security + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Mimecast` v0.1.1** \ No newline at end of file diff --git a/_shared_content/automate/library/misp.md b/_shared_content/automate/library/misp.md new file mode 100644 index 0000000000..c60e3caf72 --- /dev/null +++ b/_shared_content/automate/library/misp.md @@ -0,0 +1,75 @@ +# MISP + +![MISP](/assets/playbooks/library/misp.png){ align=right width=150 } + +[MISP](https://www.misp-project.org/) is a opensource platform to gather, store, share and correlate threat intelligence like cyber security indicators + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `misp_url` | `string` | MISP server url | +| `misp_api_key` | `string` | MISP API key | + +## Triggers + +### New Event + +Trigger a playbook on a new MISP event + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sleep_time` | `integer` | Time in seconds the worker sleeps between the checks of new events | +| `attributes_filter` | `integer` | Time in seconds after which attributes are no longer considered new (0 for no filter) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event` | `object` | MISP event | + +## Actions + +### MISP to STIX + +Convert MISP event to STIX 2 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event` | `object` | MISP event to convert to STIX | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Converted STIX Bundle | + +### Publish Event + +Publish an event on a MISP server + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event` | `object` | MISP event | +| `event_path` | `string` | MISP event (from file) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event` | `object` | Published MISP event | +| `event_path` | `string` | Published MISP event (to file) | + + +## Extra + +Module **`MISP` v2.5** \ No newline at end of file diff --git a/_shared_content/automate/library/mwdb.md b/_shared_content/automate/library/mwdb.md new file mode 100644 index 0000000000..df20ec44dc --- /dev/null +++ b/_shared_content/automate/library/mwdb.md @@ -0,0 +1,58 @@ +# MWDB + +![MWDB](/assets/playbooks/library/mwdb.svg){ align=right width=150 } + +[MWDB](https://mwdb.cert.pl/) is a malware repository for automated malware collection and analysis systems hosted by CERT.pl + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | API key | + +## Triggers + +### Get new configs + +Get Malware configs from MWDB + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | Configuration ID | +| `config_type` | `string` | Configuration Type (static or dynamic) | +| `upload_time` | `string` | Configuration Upload Time (in ISO format) | +| `type` | `string` | Configuration Type | +| `family` | `string` | Malware Family | +| `tags` | `array` | Tags associated with this configuration | +| `children` | `array` | Configuration Children Objects | +| `parents` | `array` | Configuration Parent Objects | +| `cfg` | `object` | Configuration Content | +| `files` | `array` | Malware samples associated with this configuration | + +## Actions + +### Config To Observables + +Convert a MWDB config to a bundle of observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `config_path` | `string` | File path to the JSON config to read. | +| `config` | `object` | The JSON content of the config. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `observables` | `array` | Bundle with the list of observables | +| `observables_path` | `string` | Path of the file holding the bundle with the observables | + + +## Extra + +Module **`MWDB` v1.38** \ No newline at end of file diff --git a/_shared_content/automate/library/netskope.md b/_shared_content/automate/library/netskope.md new file mode 100644 index 0000000000..e9958caa75 --- /dev/null +++ b/_shared_content/automate/library/netskope.md @@ -0,0 +1,48 @@ +# Netskope + +![Netskope](/assets/playbooks/library/netskope.png){ align=right width=150 } + +[Netskope](https://www.netskope.com/) is a cybersecurity company, providing solutions to protect data in cloud apps and network security applying zero trust principles. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | API base URL | + +## Triggers + +### Fetch new transaction events from Netskope + +Connect to the Google Cloud Pub/Sub Lite topic and return Netskope events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `credentials` | `object` | Credentials to use. You can find them in the credentials file | +| `intake_key` | `string` | Intake key to use when sending events | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `cloud_region` | `string` | Cloud Region | +| `zone_id` | `string` | Zone ID | +| `subscription_id` | `string` | Subscription ID | +| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | + + +### Fetch new events from Netskope + +Get last events from the Netskope platform through the API v2 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_token` | `string` | The API token | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `consumer_group` | `string` | A unique name to track event consumption (default empty for auto-generated one) | + + +## Extra + +Module **`Netskope` v1.9.3** \ No newline at end of file diff --git a/_shared_content/automate/library/nybble.md b/_shared_content/automate/library/nybble.md new file mode 100644 index 0000000000..3255fba0b7 --- /dev/null +++ b/_shared_content/automate/library/nybble.md @@ -0,0 +1,40 @@ +# Nybble + +![Nybble](/assets/playbooks/library/nybble.png){ align=right width=150 } + +[Nybble Hub](https://nybble-security.io) is the worldwide first blue team community which handles your alerts at a glance. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `nhub_url` | `string` | Nybble Hub Connector Base URL | +| `nhub_username` | `string` | Nybble Hub Connector username | +| `nhub_key` | `string` | Nybble Hub Connector Key to authenticate the requests | + +## Actions + +### Create Alert + +Create an Alert into Nybble Hub + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert_data` | `object` | Received alert, from Sekoia 'Get Alert' action | +| `rule` | `object` | Alert Rule from Rule Catalog, from Sekoia 'Get Rule' action | +| `events` | `array` | Related Events, from Sekoia 'Get The Alert Events' action | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `status` | `boolean` | | +| `details` | `string` | | + + +## Extra + +Module **`Nybble` v1.0.2** \ No newline at end of file diff --git a/_shared_content/automate/library/okta.md b/_shared_content/automate/library/okta.md new file mode 100644 index 0000000000..66bc3e564b --- /dev/null +++ b/_shared_content/automate/library/okta.md @@ -0,0 +1,35 @@ +# Okta + +![Okta](/assets/playbooks/library/okta.png){ align=right width=150 } + +[Okta](https://www.okta.com/) is an entreprise-grade, identity management service compatible with cloud apps as well as many on-premises applications + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | The url to your Okta tenant | +| `apikey` | `string` | The APIkey to authenticate call to the API | + +## Triggers + +### Fetch new audit logs from OKTA + +Get last system logs from the OKTA platform + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `filter` | `string` | [Filter Expression](https://developer.okta.com/docs/reference/api/system-log/#expression-filter) that filters the results | +| `q` | `string` | Filters the log events results by one or more exact [keywords](https://developer.okta.com/docs/reference/api/system-log/#keyword-filter) | +| `ratelimit_per_minute` | `integer` | The number of requests allowed to the API in one minute for the token | + + +## Extra + +Module **`Okta` v2.4.1** \ No newline at end of file diff --git a/_shared_content/automate/library/onyphe.md b/_shared_content/automate/library/onyphe.md new file mode 100644 index 0000000000..4dc17f891b --- /dev/null +++ b/_shared_content/automate/library/onyphe.md @@ -0,0 +1,379 @@ +# Onyphe + +![Onyphe](/assets/playbooks/library/onyphe.png){ align=right width=150 } + +[Onyphe](https://www.onyphe.io/) is a Cyber Defense Search Engine for open-source and cyber threat intelligence data collected by crawling various sources available on the Internet or by listening to Internet background noise + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `apikey` | `string` | APIKEY for Onyphe | + +## Actions + +### Get Domain Name CTLs + +Get domain name X509 certificate information from Certificate Transparency Logs (CTLs) with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | The domain to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Get IP Datascan + +Get datascan information on IP with Onyphe: "Application responses to [Onyphe's] application requests" + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan. Exactly one of 'ip' or 'string' must be specified | +| `string` | `string` | The string to scan. Exactly one of 'ip' or 'string' must be specified | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Lookup Forward DNS + +Get forward DNS lookup information on IP with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Geolocalize IP + +Geo-localize ip with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | + +### Get IP Inetnum + +Get inetnum information on IP with Onyphe: "IP (v4 and v6) networks description as given by RIRs (Regional Internet Registries), except for the United States which does not disclose that information publicly." + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Lookup IP + +Get information on IP with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Lookup MD5 + +Get Onyphe datascans with the given md5 in the datamd5 field + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `md5` | `string` | The md5 to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Get Onion Scan + +Get information on the given onion domain with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `onion` | `string` | The onion domain to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Get Pastries + +Get pastries information collected by Onyphe on pastebin.com + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Lookup Reverse DNS + +Get reverse DNS lookup information on IP with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Get IP Sniffer + +Get sniffer information on IP with Onyphe: "[Onyphe has] a number of distributed honeypots on the Internet. [They] are listening to Internet background noise and performing passive operating system identification" + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Get IP Syn Scan + +Get synscan information on IP with Onyphe: "Open TCP ports found on the Internet. Each open port is also enriched with detected operating system" + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + +### Get IP Threat List + +Get threatlist information on IP with Onyphe + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | +| `budget` | `integer` | Maximum number of pages to retrieve | +| `first_page` | `integer` | Start retrieving data from this page | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | Number of elements in results | +| `error` | `integer` | Error code, 0 for no error | +| `message` | `string` | Error message, only if error is not 0 | +| `myip` | `string` | IP from which the request is made | +| `results` | `array` | array of data | +| `status` | `string` | Status of the request: ok/nok | +| `took` | `string` | Time to serve the request | +| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | +| `max_page` | `integer` | Maximal number of pages | +| `page` | `integer` | Last page requested | + + +## Extra + +Module **`Onyphe` v1.20** \ No newline at end of file diff --git a/_shared_content/automate/library/openai.md b/_shared_content/automate/library/openai.md new file mode 100644 index 0000000000..39638ab939 --- /dev/null +++ b/_shared_content/automate/library/openai.md @@ -0,0 +1,38 @@ +# OpenAI + +![OpenAI](/assets/playbooks/library/openai.png){ align=right width=150 } + +The OpenAI API can be applied to virtually any task that involves understanding or generating natural language, code, or images. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | API Key to use to connect to OpenAI API endpoints | + +## Actions + +### Ask GPT + +Use an OpenAI GPT model to provide an answer to any prompt + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `prompt` | `string` | | +| `temperature` | `number` | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | +| `model` | `string` | ID of the model to use. See the model endpoint compatibility table (https://platform.openai.com/docs/models/model-endpoint-compatibility) for details on which models work with the Chat API. | +| `max_tokens` | `integer` | The maximum number of tokens to generate in the chat completion. Default is no limit | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response` | `string` | | + + +## Extra + +Module **`OpenAI` v1.3** \ No newline at end of file diff --git a/_shared_content/automate/library/osint.md b/_shared_content/automate/library/osint.md new file mode 100644 index 0000000000..4cc94bbcf1 --- /dev/null +++ b/_shared_content/automate/library/osint.md @@ -0,0 +1,33 @@ +# OSINT + +![OSINT](/assets/playbooks/library/osint.svg){ align=right width=150 } + +This module exposes actions to process OSINT data + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch OSINT + +Fetch objects from a osint collection source + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `collection_sources` | `array` | OSINT Sources | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle_path` | `string` | Filepath of the bundle of STIX objects fetched from the collection | + + +## Extra + +Module **`OSINT` v1.43** \ No newline at end of file diff --git a/_shared_content/automate/library/pagerduty.md b/_shared_content/automate/library/pagerduty.md new file mode 100644 index 0000000000..c891470e1f --- /dev/null +++ b/_shared_content/automate/library/pagerduty.md @@ -0,0 +1,31 @@ +# PagerDuty + +![PagerDuty](/assets/playbooks/library/pagerduty.svg){ align=right width=150 } + +[PagerDuty](https://www.pagerduty.com/) is an incident response platform for IT departments it allows triggering alerts and managing incidents. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `integration_key` | `string` | The integration key (a.k.a routing key) of your PagerDuty Service | +| `integration_url` | `string` | URL of the PagerDuty endpoint | + +## Actions + +### Trigger Alert + +Trigger alert to PagerDuty + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert_uuid` | `string` | The Unique identifier of the alert | +| `api_key` | `string` | The Sekoia.io API-Key to read the alert content. | +| `base_url` | `string` | Base URL of Sekoia.io api (e.g. https://api.sekoia.io/). | + + +## Extra + +Module **`PagerDuty` v1.18** \ No newline at end of file diff --git a/_shared_content/automate/library/panda-security.md b/_shared_content/automate/library/panda-security.md new file mode 100644 index 0000000000..85a43a3ebe --- /dev/null +++ b/_shared_content/automate/library/panda-security.md @@ -0,0 +1,415 @@ +# Panda Security + +![Panda Security](/assets/playbooks/library/panda-security.png){ align=right width=150 } + +[PandaSecurity](https://www.pandasecurity.com/), a [WatchGuard](https://www.watchguard.com/) company, is a cybsersecurity vendor, delivering products designed to protect endpoints against outside threats. + +This module provides actions and triggers to interact with the [Watchguard Panda Aether platform](https://www.watchguard.com/wgrd-products/panda-endpoint-security) to act on AD360 and EPP devices + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | WatchGuard Cloud base URL (ex. https://api.usa.cloud.watchguard.com) | +| `account_id` | `string` | Your WatchGuard Cloud account ID | +| `api_key` | `string` | The API key associated to your Watchguard Cloud account | +| `access_id` | `string` | The identifier of the access credential used to authorize the requests | +| `access_secret` | `string` | The secret of the access credential used to authorize the requests | +| `audience` | `string` | The identifier of the managed account for service provider | + +## Triggers + +### Fetch Security Events + +Fetch the last security events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds (default 12h) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `events` | `array` | A list of security events | + +## Actions + +### Get Security Events + +Retrieves a list of security events of the specified type for the specified device for a specific time period. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `type` | `integer` | Type of security event. Specify one of these values:
- 1 — Malware
- 2 — PUPs (Potentially Unwanted Programs)
- 3 — Blocked Programs
- 4 — Exploits
- 5 — Blocked by Advanced Security
- 6 — Virus
- 7 — Spyware
- 8 — Hacking Tools and PUPs detected by Antivirus
- 9 — Phishing
- 10 — Suspicious
- 11 — Dangerous Actions
- 12 — Tracking Cookies
- 13 — Malware URLs
- 14 — Other security event by Antivirus
- 15 — Intrusion Attempts
- 16 — Blocked Connections
- 17 — Blocked Devices
- 18 — Indicators of Attack
Example: 13 | +| `period` | `integer` | Period of time to retrieve security events for. Specify one of these values:
- 1 - Previous 24 hours
- 7 - Previous 7 days | +| `hostname` | `string` | Host name (base-64 encoded) of the device you want to retrieve security events for. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `accessed_data` | `boolean` | Indicates if data has been accessed. | +| `action` | `integer` | Indicates the action performed. For Indicators Of Attack:
- 0: Undefined
- 1: Informed
- 2: Attack Blocked.
For other detections:
- 0: Allowed
- 1: Moved Quarantine
- 2: Blocked
- 3: Killed
- 4: Ignored
- 5: Cleaned
- 6: Deleted
- 7: Restored
- 8: Allowed By Whitelist
- 9: Write Blocked
- 10: User Pending
- 11: Uninstalled
- 13: After Process Blocked
- 14: Immediately Blocked
- 15: Allowed By User
- 16: Detected Restart Pending
- 17: Allowed By Administrator
- 18: AllowedSonGwInstaller
- 21: Suspend Process
- 1009: Informed
- 1010: Unquarantine
- 1011: Rename
- 1012: Block URL
| +| `alias` | `string` | Alias name for device control detections. | +| `count` | `integer` | Number of occurrences in indicators of attack detections. | +| `custom_group_folder_id` | `string` | Identifier of the custom group folder assigned. | +| `custom_group_folder_info` | `string` | Hierarchical structure for the assigned group and its subgroups, in JSON format. | +| `date` | `string` | Date and time of detection. | +| `description` | `string` | Name of device description in antivirus detections. | +| `detected_by` | `` | Protection or technology in antivirus detections.
- 1: On Demand Scan
- 2: File Resident
- 3: Mail Resident
- 4: Firewall
- 5: Device Control
- 6: Exchange Mailbox
- 7: Exchange Transport
- 8: Exchange Antispam
- 9: Web Protection
- 10: Exchange Content
- 11: Minerva
- 12: Web Access Control
- 13: Anti-theft
- 14: Anti-tampering
- 15: Personal Information Tracking
- 16: Isolation
- 17: Data Search Control
- 18: Patch Management
- 19: Personal Information Inventory
- 20: Application Control
- 21: Encryption USB
- 22: Authorized Software
| +| `detection_technology` | `string` | Name of detection technology in exploit detections. | +| `device_id` | `string` | Identifier of the device. | +| `device_type` | `` | Device type in antivirus and firewall detections.
- 0: Undefined
- 1: Workstation
- 2: Laptop
- 3: Server
- 4: Mobile
| +| `direction` | `` | Direction of firewall blocked connections.
- 1: Incoming
- 2: Outgoing
- 3: Incoming and Outgoing
- 4: Internal
| +| `discard_motive` | `` | Reason for discarding the knowledge sample.
- 0: Unknown
- 1: Other Reason
- 2: File Max Size
| +| `domain` | `string` | Domain of device in antivirus detections. | +| `dwell_time` | `integer` | Dwell time in seconds. | +| `endpoint_event_date` | `string` | Endpoint event date in indicators of attack detections. | +| `event_id` | `integer` | Identifier of the event. | +| `event_type` | `` | Indicates the event type.
- 0: Malware
- 1: Exploit
- 2: Pups
- 3: Blocked item
- 6: Lock Plus Advanced Security
- 7: Lock Plus Application Control
- 8: Application Control
| +| `excluded` | `boolean` | Indicates if the element has been excluded in antivirus detection. | +| `exploit_technique` | `string` | Exploit technique. | +| `file_info_discard` | `string` | Hash to identify the file in antivirus detections. | +| `filed_date` | `string` | Filed date in indicators of attack detections. | +| `hash` | `string` | Hash of element. | +| `host_name` | `string` | Name of the host. | +| `id` | `string` | Identifier in antivirus detections. | +| `instance_id` | `string` | Identifier of instance for device control detections. | +| `ip_address` | `string` | IP address of the device in antivirus and firewall detections. | +| `is_excluded` | `boolean` | Indicates if data has been excluded. | +| `item_name` | `string` | Name of threat. | +| `like_lihood_of_being_malicious` | `` | Indicates the likelihood of being malicious.
- 0: Low
- 1: Medium
- 2: High
- 3: Very High
| +| `local_endpoint` | `` | Firewall blocked connections for a local endpoint, in JSON format: Mac Address, IP Address, Port, and IP Type.
- 0: Unknown
- 1: IpV4
- 2: IpV6
| +| `lock_plus_rule_id` | `` | LockPlus Rule ID.
- 1: Obfuscated Params Powershell
- 2: User Executed Powershell
- 4: Unknown Scripts
- 5: Locally Built Programs
- 6: Documents With Macros
- 7: Windows Boot Registry
- 101: Forbidden Md5
- 102: Forbidden Program Name
| +| `made_external_connections` | `boolean` | Indicates if malware made external connections. | +| `malware_category` | `` | Malware category in antivirus detections.
- 1: Virus
- 2: Spyware
- 3: HackingPpnd
- 4: Phishing
- 5: Suspicious
- 6: Blocked Operations
- 7: Tracking Cookies
- 8: Malware URL
- 9: Others
| +| `malware_name` | `string` | Malware name in antivirus detections. | +| `malware_type` | `` | Malware type in antivirus detections.
- 21: Nereus Heuritic
- 22: Beta trace Heuritic
- 23: Smart Clean Heuritic
- 24: Cloud Heuritic
- 25: 1N
- 26: Behavioral
- 31: Confirmed Goodware
- 32: Not Confirmed Goodware
- 33: Unwanted Goodware
- 34: Ranked
- 35: Digital Signature
- 101: Virus
- 102: Worm
- 103: Trojan
- 104: TrojanPwdeal
- 105: Dialer
- 106: Joke
- 107: Security Risk
- 108: Spyware
- 109: Adware
- 110: WormFakefrom
- 111: Tracking Cookie
- 112: Pup
- 113: Hacking Tool
- 114: Vulnerability
- 115: Max Size
- 116: ZipOfDeath
- 117: PackerOfDeath
- 118: Hoax
- 119: Phis Fraud
- 120: Rootkit
- 121: Backdoor
- 122: Virus Constructor
- 123: Malicious URL
- 201: Advertising
- 202: Toolbar
- 203: NetTool
- 204: Advert Popup
- 219: Illegal
- 223: Internet Tools
- 227: Offensive
- 236: Society Education
- 241: Content Filter
| +| `network_activity_type` | `` | Network activity type in firewall detections.
- 1: IcmpAttack
- 2: UdpPortScan
- 3: HeaderLengths
- 4: UdpFlood
- 5: TcpFlagsCheck
- 6: SmartWins
- 7: IpExplicitPath
- 8: LandAttack
- 9: SmartDns
- 10: IcmpFilterEchoRequest
- 11: OsDetection
- 12: SmartDhcp
- 13: SynFlood
- 14: SmartArp
- 15: TcpPortScan
| +| `number_of_occurrences` | `integer` | Number of occurrences in antivirus detections. | +| `path` | `string` | Name of threat path. | +| `platform_id` | `` | Platform of affected device.
- 0: Undefined
- 1: Windows
- 2: Linux
- 3: Mac
- 4: Android
- 5: IOS
| +| `protection_mode` | `` | Indicates the protection mode.
- 0: Undefined
- 1: Audit
- 2: Hardening
- 3: Lock
| +| `protocol` | `` | Protocol of firewall blocked connections.
- 1: Tcp
- 2: Udp
- 3: TcpUdp
- 4: Icmp
- 5: IP
- 6: All
| +| `reclassified_to_type` | `` | Indicates the type to which it has been reclassified.
- 0: Blocked
- 1: Malware
- 3: Pup
- 6: Goodware
- 11: Removed From List
| +| `remote_endpoint` | `` | Firewall blocked connections for a remote endpoint, in JSON format: Mac Address, IP Address, Port, and IP Type.
- 0: Unknown
- 1: IpV4
- 2: IpV6
| +| `risk` | `boolean` | Indicates if it is a risk exploit. | +| `rule_configuration_id` | `string` | Identifier of rule configuration in firewall blocked connections. | +| `rule_id` | `string` | Identifier of rule in firewall blocked connections and in indicators of attack detections. | +| `rule_mitre` | `string` | Array with JSON pairs of the attack tactic and technique in indicators of attack detections. | +| `rule_name` | `string` | Rule name for firewall blocked connections and for indicators of attack detections. | +| `rule_obsolete` | `boolean` | Indicates if rule is obsolete in firewall blocked connections. | +| `rule_risk` | `` | Indicates the rule risk for indicators of attack detections.
- 0: Undefined
- 1: Critical
- 2: High
- 3: Medium
- 4: Low
- 1000: Unknown
| +| `security_event_date` | `string` | Security event date and time for antivirus, firewall, and device control detections. | +| `since_until_filed` | `string` | Time since the filed date in indicators of attack detections. | +| `site_id` | `string` | Identifier of the site. | +| `site_name` | `string` | Site name in antivirus and firewall detections. | +| `source_ip` | `string` | Name of source IP. | +| `source_machine_name` | `string` | Name of source device name. | +| `source_user` | `string` | Source username. | +| `status` | `` | Indicates the status in indicators of attack detections.
- 0: Undefined
- 1: Pending
- 2: Filed
| +| `type` | `` | Type of device for device control detections.
- 0: Undefined
- 1: Removable Storage
- 2: Image Capture
- 3: Optical Storage
- 4: Bluetooth
- 5: Modem
- 6: Mobile
| +| `user_name` | `string` | Username. | +| `was_run` | `boolean` | Indicates if the item has been executed. | + +### Isolate Devices + +Isolates the specified devices. When you isolate a device, communication to and from the device is denied. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `device_ids` | `array` | List of IDs of devices to isolate.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | +| `exclusion_programs` | `array` | List of programs to exclude from isolation and allow to communicate normally. | +| `customized_message` | `str` | Text to show in an alert message on the isolated devices | +| `hide_customized_alert` | `boolean` | Indicates whether to hide the customized alert message on isolated devices. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `processed_device_ids` | `array` | List of IDs of the isolated devices | + +### Link Devices to Managed Configurations + +Links devices to a specified configuration. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `config_id` | `str` | Identifier of the managed configuration to associate with the devices.
Example: 2836d89d-1e98-4377-92b7-0a76ac2a7699 | +| `type` | `integer` | Type of configuration. Currently, only option 2 is supported.
- 2 — Workstations and servers.
Example: 2 | +| `device_ids` | `array` | List of IDs of devices to link to the specified managed configuration..
Example: cb509c17-7b88-461a-ba3b-3d43e29e6cd4,2c13685e-7d1f-4726-9ad3-5c8fa7718bab | + +### Retrieve Devices + +Retrieves a list of devices, and additional information, such as the device IP address and operating system. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | +| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | +| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | +| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | +| `$config` | `boolean` | Indicates whether the security configuration name and ID are returned. The default value is true.
Example: true | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | +| `data` | `array` | Array of device data | + +### Retrieve Managed Configurations + +Retrieves a list of the specified type of managed configurations associated with your WatchGuard Cloud account. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `type` | `integer` | Type of configuration to return. Specify one of these values:
- 1 — Deployment settings
- 2 — Workstations and servers
- 3 — Android
Example: 2 | +| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | +| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | +| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | +| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | +| `data` | `array` | List of managed configurations. | + +### Retrieve unmanaged devices + +Retrieves a list of unmanaged devices discovered on the network. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | +| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | +| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | +| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | +| `data` | `array` | Array of device data | + +### Count Security Events + +Retrieves counts of detected security events for the specified types. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `type` | `integer` | Types of security event counters to retrieve. This parameter is a mask. Add the values of the security event counter types you want to retrieve.
For example, if you want to retrieve only programs blocked, specify 8. If you want to retrieve both PUPs and programs blocked, specify 10 because 8 (programs blocked) + 2 (PUPs) = 10.
- 1 - Malware
- 2 PUPs (Potentially Unwanted Programs)
- 4 - Exploits
- 8 - Programs Blocked
- 16 - Threats detected by AV
- 255 - All counters
Example: 10 | +| `filter` | `str` | Filters the security event counters by date
Specify the type of security event:
- 33001 — Antivirus
- 32001 — Other types
Specify the length of the time period in the format [x, y] where x is the number of units and y is the unit of time:
- 1 — Years
- 2 - Months
- 3 - Days
- 4 - Hours
For example, this retrieves threats detected by AV for the last 7 days: filter=33001%20AmongTheLast%20[7,3].
This retrieves security event counters for the other types for the last 3 months: filter=32001%20AmongTheLast%20[3,2].
If you do not specify a filter, the API returns all of the security events for the last 30 days.
Example: 33001%20AmongTheLast%20[7,3] | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `exploit_counters` | `object` | | +| `malware_counters` | `object` | | +| `program_blocked_counters` | `object` | | +| `pups_counters` | `object` | | +| `threats_by_av_counters` | `object` | | + +### Get DataControl module status + +Retrieves a count of files and devices that Data Control identified with each type of Personally Identifiable Information (PII). + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `properties` | `` | | +| `type` | `` | | + +### Retrieve Device Protection Status + +Retrieves a list of devices with their protection status and other device information. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | +| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | +| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | +| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | +| `data` | `array` | Array of device data | + +### Retrieve Full Encryption Module Status + +Retrieves Full Encryption statistics. + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total_supported_devices` | `integer` | Total number of devices that support Full Encryption. | +| `with_decrypting_drives` | `integer` | Number of devices with at least one disk currently in the decryption process. | +| `with_encrypted_by_user_drives` | `integer` | Number of devices where a user encrypted some or all of the disks. | +| `with_encrypted_drives` | `integer` | Number of devices with Full Encryption on all disks. | +| `with_encrypted_partially_by_user_drives` | `integer` | Number of devices where a user encrypted some or all of the disks. Full Encryption encrypts or decrypts the remainder. | +| `with_encrypted_partially_drives` | `integer` | Number of devices with at least one disk with Full Encryption complete. | +| `with_encrypting_drives` | `integer` | Number of devices with at least one disk currently in the encryption process. | +| `with_non_encrypted_drives` | `integer` | Number of devices with no disks encrypted by the user or Full Encryption. | +| `with_unknown_encryption_status` | `integer` | Number of devices with disks encrypted with an authentication method that Full Encryption does not support. | + +### Retrieve Patch Management Module Status + +Retrieves Patch Management statistics. + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `non_security_other_patches` | `integer` | Number of other currently available patches that are not related to security. | +| `security_critical` | `integer` | Number of currently available critical security patches. | +| `security_important` | `integer` | Number of currently available security patches classified as important. | +| `security_low` | `integer` | Number of currently available security patches classified as low importance. | +| `security_moderate` | `integer` | Number of currently available security patches classified as moderate importance. | +| `security_not_classified` | `integer` | Number of security patches that do not have a severity classification. | +| `service_pack` | `integer` | Number of currently available service packs. | +| `total_supported_devices` | `integer` | Total number of devices that support Patch Management. | + +### Retrieve Security overview + +Retrieves counters for security overview. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `period` | `integer` | Period of time to retrieve security event counters for. Specify one of these values:
- 1 - Previous 24 hours
- 7 - Previous 7 days
- 30 - Previous 30 days
Example: 7 | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `exploits` | `` | | +| `indicators_of_attack_counters` | `` | | +| `malware` | `` | | +| `programs_blocked` | `` | | +| `pups` | `` | | +| `threats_by_av_counters` | `` | | +| `total_devices` | `integer` | Total number of devices. | +| `total_unmanaged_devices` | `integer` | Total number of unmanaged devices. | + +### Scan devices + +Starts a task to scan the specified devices immediately. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `device_ids` | `array` | List of IDs of devices to scan.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | +| `task_name` | `str` | Name of the scan task.
Example: Routine scan | +| `task_description` | `str` | Description of the scan task.
Example: Windows 8 machines only | +| `scan_scope` | `integer` | Scope of the scan task. Specify one of these values:
- 0 - Whole computer
- 1 - Critical areas
- 2 - Specified items
Example: 0 | +| `specified_items_to_scan` | `str` | List of specific locations or items to scan. All folders and files in the specified locations are scanned.
Works only when scan_scope is 2.
Example: "C:\Downloads", "C:\Documents" | +| `detect_hacking_tools` | `boolean` | Indicates whether to detect hacking tools. This detects potentially unwanted programs, as well as programs used by hackers.
Example: false | +| `detect_suspicious_files` | `boolean` | Indicates whether to detect suspicious files. In scheduled scans, the tool scans computer software but does not run it. Some types of threats have a lower chance of detection. Set this option to true to scan with heuristic algorithms and improve detection rates.
Example: true | +| `scan_compressed_files` | `boolean` | Indicates whether to scan compressed files. This decompresses compressed files and scans their contents.
Example: true | +| `apply_exclusions_on_scan` | `boolean` | Indicates whether to exclude items from the scan, such as specific files, files with a specific extension, or a specific directory.
Example: false | +| `extensions_to_exclude` | `str` | List of file extensions to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "exe","pdf" | +| `files_to_exclude` | `str` | List of file names (with their extensions) to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "Chrome.exe", "Explorer.exe" | +| `folders_to_exclude` | `str` | List of folders to exclude from the scan. You must include the full path.
Works only when apply_exclusions_on_scan is true.
Example: "D:/shared_drive/documents" | +| `execution_window_expiration` | `str` | Time period in which the scan must run before it times out. The default is 7 days.
Example: 8.07:06:05 specifies 8 days, 7 hours, 6 minutes, and 5 seconds | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `no_executed_by_not_found_device_ids` | `array` | | +| `task_id` | `string` | ID of the completed scan task. | + +### Send action + +Initiates an action on the specified devices. For example, send an action to reboot a device. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `device_ids` | `array` | List of IDs of devices to reboot.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | +| `action_type` | `integer` | Type of action to initiate on the device. Specify one of these values:
- 1 - Reboot | +| `count_down_type` | `integer` | Amount of time to count down to the action. Specify one of these values:
- 1 - Immediate
- 2 - Fifteen minutes
- 3 - Thirty minutes
- 4 - One hour
- 5 - Two hours
- 6 - Four hours
- 7 - Eight hours | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `processed_device_ids` | `array` | List of IDs of the rebooted devices | + +### Stop devices isolation + +Stops isolation on the specified devices. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `device_ids` | `array` | List of IDs of devices to remove from isolation.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `processed_device_ids` | `array` | List of IDs of the devices removed from isolation | + +### Uninstall protection from devices + +Uninstalls protection from the specified devices. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `device_ids` | `array` | List of IDs of devices to remove the protection.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | + + +## Extra + +Module **`Panda Security` v1.19** \ No newline at end of file diff --git a/_shared_content/automate/library/proofpoint.md b/_shared_content/automate/library/proofpoint.md new file mode 100644 index 0000000000..168887d638 --- /dev/null +++ b/_shared_content/automate/library/proofpoint.md @@ -0,0 +1,50 @@ +# Proofpoint + +![Proofpoint](/assets/playbooks/library/proofpoint.png){ align=right width=150 } + +Proofpoint Module + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Get Proofpoint PoD events + +Forward Proofpoint PoD Events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_host` | `string` | API Url of the ProofPoint PoD | +| `api_key` | `string` | The APIKey that authenticate the request | +| `cluster_id` | `string` | The cluster ID | +| `type` | `string` | The type of messages to collect | +| `since_time` | `['string', 'null']` | The starting time (up to 30 days ago) to collect log data, as ISO8601 format | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | + + +### Get Proofpoint TAP events + +Forward Proofpoint TAP Events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_host` | `string` | API Url of the ProofPoint TAP | +| `client_principal` | `string` | The authentication principal | +| `client_secret` | `string` | The authentication secret | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | + + +## Extra + +Module **`Proofpoint` v1.12** \ No newline at end of file diff --git a/_shared_content/automate/library/public-suffix.md b/_shared_content/automate/library/public-suffix.md new file mode 100644 index 0000000000..8dfc6908ba --- /dev/null +++ b/_shared_content/automate/library/public-suffix.md @@ -0,0 +1,24 @@ +# Public Suffix + +The [Public Suffix List](https://publicsuffix.org/) is an initiative of [Mozilla](https://www.mozilla.org/) to list of all known public suffixes + +## Configuration + +This module accepts no configuration. + +## Actions + +### Get Private Domains + +Get the list of private domains + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domains_path` | `string` | Domain file path on disk | + + +## Extra + +Module **`Public Suffix` v1.18** \ No newline at end of file diff --git a/_shared_content/automate/library/riskiq.md b/_shared_content/automate/library/riskiq.md new file mode 100644 index 0000000000..c3e4c67145 --- /dev/null +++ b/_shared_content/automate/library/riskiq.md @@ -0,0 +1,352 @@ +# RiskIQ + +![RiskIQ](/assets/playbooks/library/riskiq.png){ align=right width=150 } + +[RiskIQ](https://www.riskiq.com/) is a cyber security company providing software as a service to detect phishing, fraud, malware, and other online security threats. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | RiskIQ base url | +| `api_key` | `string` | API key | +| `api_secret` | `string` | API secret | + +## Actions + +### SSL Hosts + +Get hosts by certificate + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `certSha1` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `content` | `array` | | +| `first` | `boolean` | | +| `last` | `boolean` | | +| `number` | `integer` | | +| `numberOfElements` | `integer` | | +| `size` | `integer` | | +| `sort` | `string` | | +| `totalElements` | `integer` | | +| `totalPages` | `integer` | | + +### Hex Passive DNS + +Retrieve results by searching for specified hexadecimal bytes within PDNS record data field. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `type` | `string` | | +| `max` | `string` | | +| `lastSeenAfter` | `string` | | +| `firstSeenBefore` | `string` | | +| `hex` | `string` | Hexadecimal encoding of data field bytes | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `recordCount` | `integer` | | +| `records` | `array` | | + +### IP Passive DNS + +Retrieve results by searching for specified IP address within PDNS record data field + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | | +| `max` | `string` | | +| `lastSeenAfter` | `string` | | +| `firstSeenBefore` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `recordCount` | `integer` | | +| `records` | `array` | | + +### Name Passive DNS + +Retrieve results by searching for specified resource name within PDNS record data field. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | | +| `type` | `string` | DNS resource record type | +| `max` | `string` | | +| `lastSeenAfter` | `string` | | +| `firstSeenBefore` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `recordCount` | `integer` | | +| `records` | `array` | | + +### SSL Certificates by Host + +Get SSL certificates by host name + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `host` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `content` | `array` | | + +### SSL Certificates by Name + +Get SSL certificates by name + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `content` | `array` | | +| `first` | `boolean` | | +| `last` | `boolean` | | +| `number` | `integer` | | +| `numberOfElements` | `integer` | | +| `size` | `integer` | | +| `sort` | `string` | | +| `totalElements` | `integer` | | +| `totalPages` | `integer` | | + +### SSL Certificates by Serial Number + +None + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `serial` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `content` | `array` | | +| `first` | `boolean` | | +| `last` | `boolean` | | +| `number` | `integer` | | +| `numberOfElements` | `integer` | | +| `size` | `integer` | | +| `sort` | `string` | | +| `totalElements` | `integer` | | +| `totalPages` | `integer` | | + +### SSL Certificats by SHA-1 + +Get SSL certificate by SHA1 hash + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sha1` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `count` | `integer` | | +| `firstSeen` | `string` | | +| `id` | `string` | | +| `issuer` | `array` | | +| `issuerAlternativeNames` | `array` | | +| `issuerID` | `string` | | +| `lastSeen` | `string` | | +| `notAfter` | `string` | | +| `notBefore` | `string` | | +| `publicKeyAlgorithm` | `string` | | +| `serialNumber` | `string` | | +| `sha1` | `string` | | +| `signatureAlgorithm` | `string` | | +| `signatureAlgorithmOid` | `string` | | +| `subject` | `array` | | +| `subjectAlternativeNames` | `array` | | +| `subjectID` | `string` | | +| `version` | `integer` | | + +### Reverse Whois (address) + +Get WHOIS records associated with an address + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `address` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + +### Whois + +Get the current WHOIS for a domain + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | +| `Authorization` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + +### Reverse Whois (email) + +Get WHOIS records associated with an email address + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `email` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + +### Reverse Whois (name) + +Get WHOIS records associated with a name + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + +### Reverse Whois (nameserver) + +Get WHOIS records associated with a name server + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `nameserver` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + +### Reverse Whois (organization) + +Get WHOIS records associated with an organization + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `org` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + +### Reverse Whois (phone) + +Get WHOIS records associated with a phone number + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `phone` | `string` | | +| `exact` | `string` | | +| `maxResults` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `results` | `integer` | | +| `domains` | `array` | | + + +## Extra + +Module **`RiskIQ` v1.22** \ No newline at end of file diff --git a/_shared_content/automate/library/rss.md b/_shared_content/automate/library/rss.md new file mode 100644 index 0000000000..a0df50c4d7 --- /dev/null +++ b/_shared_content/automate/library/rss.md @@ -0,0 +1,37 @@ +# RSS + +![RSS](/assets/playbooks/library/rss.svg){ align=right width=150 } + +RSS is a internet standard for web syndication. It usually used by websites to publish frequently updated information. + +This module exposes triggers to subscribe to RSS feeds. + +## Configuration + +This module accepts no configuration. + +## Triggers + +### New Post + +Trigger playbook when new posts are published + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `feeds` | `array` | RSS Feeds configuration | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `source` | `object` | Information about the RSS Feed's source | +| `item` | `object` | RSS Item content | +| `event_path` | `string` | Path to the file containing the RSS event | + + +## Extra + +Module **`RSS` v1.25** \ No newline at end of file diff --git a/_shared_content/automate/library/salesforce.md b/_shared_content/automate/library/salesforce.md new file mode 100644 index 0000000000..5d5119462c --- /dev/null +++ b/_shared_content/automate/library/salesforce.md @@ -0,0 +1,35 @@ +# Salesforce + +![Salesforce](/assets/playbooks/library/salesforce.png){ align=right width=150 } + +Salesforce provides users comprehensive tools to manage customer data, automate processes, analyze data and insights, and create personalized customer experiences. Salesforce also offers a variety of solutions for customer service, marketing automation, commerce, app development, and more + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `org_type` | `string` | Organization type. Might be one of the following: 'production', 'sandbox', 'trial', 'developer'. Default is 'production' | +| `client_id` | `string` | Client id to interact with salesforce API | +| `client_secret` | `string` | Client secret to interact with salesforce API | +| `rate_limit` | `string` | Rate limit for requests to salesforce. Value should have next format {max_rate}/{time_period}. For example: 3/60. Sekoia will use default rate limits if value is empty or invalid. More information you can find in docs: https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm | +| `base_url` | `string` | Url of salesforce instance. Consists of https://.salesforce.com | + +## Triggers + +### [BETA] Collect Salesforce events + +Trigger playbook to get Salesforce information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `frequency` | `integer` | Batch frequency in seconds | + + +## Extra + +Module **`Salesforce` v1.5.2** \ No newline at end of file diff --git a/_shared_content/automate/library/sekoia-io.md b/_shared_content/automate/library/sekoia-io.md new file mode 100644 index 0000000000..9fd6136ce9 --- /dev/null +++ b/_shared_content/automate/library/sekoia-io.md @@ -0,0 +1,884 @@ +# Sekoia.io + +![Sekoia.io](/assets/playbooks/library/sekoia-io.svg){ align=right width=150 } + +Sekoia.io + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | Sekoia.io API key | +| `base_url` | `string` | Sekoia.io base URL (ex. https://api.sekoia.io) | + +## Triggers + +### Alert Comment Created + +A comment was added to an existing Alert + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `rule_filter` | `string` | Create a run only for alerts matching a rule name | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the alert on disk. | +| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | +| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | +| `short_id` | `string` | Unique short identifier of the Alert. | +| `status` | `object` | Status of the Alert (object containing status description and name). | +| `created_at` | `integer` | Creation date of the Alert (timestamp). | +| `urgency` | `integer` | Current urgency of the Alert. | +| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | +| `alert_type` | `object` | Category of the Alert | +| `rule` | `object` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | + + +### Alert Created + +A new Alert was created in the Operation Center + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `rule_filter` | `string` | Create a run only for alerts matching a rule name | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the alert on disk. | +| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | +| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | +| `short_id` | `string` | Unique short identifier of the Alert. | +| `status` | `object` | Status of the Alert (object containing status description and name). | +| `created_at` | `integer` | Creation date of the Alert (timestamp). | +| `urgency` | `integer` | Current urgency of the Alert. | +| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | +| `alert_type` | `object` | Category of the Alert | +| `rule` | `object` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | + + +### Alert Status Changed + +The status of an existing alert was changed + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `rule_filter` | `string` | Create a run only for alerts matching a rule name | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the alert on disk. | +| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | +| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | +| `short_id` | `string` | Unique short identifier of the Alert. | +| `status` | `object` | Status of the Alert (object containing status description and name). | +| `created_at` | `integer` | Creation date of the Alert (timestamp). | +| `urgency` | `integer` | Current urgency of the Alert. | +| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | +| `alert_type` | `object` | Category of the Alert | +| `rule` | `object` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | + + +### Alert Updated + +An existing alert was updated + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `rule_filter` | `string` | Create a run only for alerts matching a rule name | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the alert on disk. | +| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | +| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | +| `short_id` | `string` | Unique short identifier of the Alert. | +| `status` | `object` | Status of the Alert (object containing status description and name). | +| `created_at` | `integer` | Creation date of the Alert (timestamp). | +| `urgency` | `integer` | Current urgency of the Alert. | +| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | +| `alert_type` | `object` | Category of the Alert | +| `rule` | `object` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | + + +### Manual Trigger + +Webhook Trigger to receive specific Sekoia.io Alerts + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | + + +### Feed Consumption + +Get all non-revoked objects from Sekoia.io Intelligence feed + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `feed_id` | `string` | ID of the Sekoia.io feed to get data from | +| `batch_size_limit` | `integer` | Size of the batch of elements to get from the Sekoia.io feed in one time | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | + + +### Feed IOC Consumption + +Get all valid IOCs from Sekoia.io Intelligence feed + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `feed_id` | `string` | ID of the Sekoia.io feed to get data from | +| `batch_size_limit` | `integer` | Size of the batch of elements to get from the Sekoia.io feed in one time | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | + + +### Any Alert Update + +Create an event for each alert creation or modification + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `rule_filter` | `string` | Create a run only for alerts matching a rule name | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the alert on disk. | +| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | +| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | +| `short_id` | `string` | Unique short identifier of the Alert. | +| `status` | `object` | Status of the Alert (object containing status description and name). | +| `created_at` | `integer` | Creation date of the Alert (timestamp). | +| `urgency` | `integer` | Current urgency of the Alert. | +| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | +| `alert_type` | `object` | Category of the Alert | +| `rule` | `object` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | + +## Actions + +### Activate Countermeasure + +Mark as active a countermeasure + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `cm_uuid` | `string` | | +| `comment` | `object` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `action_steps` | `array` | | +| `activated_by_type` | `string` | Type of the profile that activated the countermeasure | +| `comments` | `array` | | +| `activated_at` | `string` | Date the countermeasure was activated | +| `relevance` | `integer` | Relevance of the countermeasure | +| `denied_by_type` | `string` | Type of the profile that denied the countermeasure | +| `status` | `string` | (deprecated) Status of the countermeasure | +| `created_by` | `string` | UUID of profile that created the countermeasure | +| `model_uuid` | `string` | UUID of the model from which this countermeasure has been created | +| `activated_by` | `string` | UUID of profile that activated the countermeasure | +| `description` | `string` | Description of the countermeasure | +| `name` | `string` | Name of the countermeasure | +| `uuid` | `string` | UUID of the countermeasure | +| `duration` | `string` | Estimated duration to apply the countermeasures | +| `alert_uuid` | `string` | UUID of the alert related to the countermeasure | +| `denied_at` | `string` | Date the countermeasure was denied | +| `created_by_type` | `string` | Type of the profile that created the countermeasure | +| `course_of_action` | `object` | (deprecated) STIX2 object course of action | +| `dynamic_relevance` | `integer` | Dynamic relevance of the countermeasure | +| `denied_by` | `string` | UUID of profile that denied the countermeasure | +| `assignee` | `string` | UUID of the profile assigned to the progress of the countermeasure | +| `created_at` | `string` | Date the countermeasure was created | + +### Add IOC to IOC Collection + +Add indicators to an IOC Collection + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `indicators` | `array` | List of indicators to add to an IOC collection | +| `indicators_path` | `string` | Path of the indicators file to add to an IOC collection | +| `ioc_collection_id` | `string` | Identifier of the IOC collection | +| `indicator_type` | `string` | Type of IOC | +| `valid_for` | `integer` | Validity period for the created indicators (in days) | + +### Add attribute to Asset + +Add an attribute to an asset + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `name` | `string` | | +| `value` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `value` | `string` | | +| `uuid` | `string` | | +| `name` | `string` | | + +### Add key to Asset + +Adds a key to an asset + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `name` | `string` | | +| `value` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `value` | `string` | | +| `uuid` | `string` | | +| `name` | `string` | | + +### Attach Alerts to Case + +Attach one or more alerts to a specific case + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `case_uuid` | `string` | | +| `alerts` | `array` | The list of identifiers of alerts to add | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `status` | `string` | | + +### Create Tracker Notification + +Create a notification for a specific tracker + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `data` | `object` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `data` | `object` | | + +### Create Asset + +Create a new asset + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `asset_type` | `object` | | +| `name` | `string` | | +| `criticity` | `integer` | | +| `description` | `string` | | +| `attributes` | `array` | | +| `keys` | `array` | | +| `owners` | `array` | | +| `community_uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `keys` | `array` | | +| `attributes` | `array` | | +| `uuid` | `string` | | +| `name` | `string` | | +| `created_at` | `string` | | +| `criticity` | `object` | | +| `asset_type` | `object` | | +| `updated_at` | `string` | | +| `description` | `string` | | +| `owners` | `array` | | +| `community_uuid` | `string` | | +| `category` | `object` | | + +### Delete an asset + +Delete the requested asset + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the asset | + +### Deny Countermeasure + +Mark as denied a countermeasure + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `cm_uuid` | `string` | | +| `comment` | `object` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `action_steps` | `array` | | +| `activated_by_type` | `string` | Type of the profile that activated the countermeasure | +| `comments` | `array` | | +| `activated_at` | `string` | Date the countermeasure was activated | +| `relevance` | `integer` | Relevance of the countermeasure | +| `denied_by_type` | `string` | Type of the profile that denied the countermeasure | +| `status` | `string` | (deprecated) Status of the countermeasure | +| `created_by` | `string` | UUID of profile that created the countermeasure | +| `model_uuid` | `string` | UUID of the model from which this countermeasure has been created | +| `activated_by` | `string` | UUID of profile that activated the countermeasure | +| `description` | `string` | Description of the countermeasure | +| `name` | `string` | Name of the countermeasure | +| `uuid` | `string` | UUID of the countermeasure | +| `duration` | `string` | Estimated duration to apply the countermeasures | +| `alert_uuid` | `string` | UUID of the alert related to the countermeasure | +| `denied_at` | `string` | Date the countermeasure was denied | +| `created_by_type` | `string` | Type of the profile that created the countermeasure | +| `course_of_action` | `object` | (deprecated) STIX2 object course of action | +| `dynamic_relevance` | `integer` | Dynamic relevance of the countermeasure | +| `denied_by` | `string` | UUID of profile that denied the countermeasure | +| `assignee` | `string` | UUID of the profile assigned to the progress of the countermeasure | +| `created_at` | `string` | Date the countermeasure was created | + +### Get aggregation query + +Make an aggregation query + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `aggregation_type` | `string` | The aggregation type. Can be `avg`, `cardinality`, `max`, `min`, `sum` or `count`. | +| `aggregation_field` | `string` | The field on which apply the aggregation. Should be null only for `count` aggregation. | +| `query_term` | `string` | | +| `earliest_time` | `string` | | +| `latest_time` | `string` | | +| `minutes_per_bucket` | `integer` | | +| `filters` | `array` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `aggregations` | `array` | | +| `anomaly_detection_candidate_score_y_acf1` | `number` | | +| `anomaly_detection_candidate_score_y_acf5` | `number` | | +| `anomaly_detection_candidate_score_seas_acf1` | `number` | | +| `anomaly_detection_candidate` | `boolean` | | + +### Get Alert + +Retrieve the definition of an alert + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `stix` | `boolean` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `urgency` | `object` | | +| `history` | `array` | | +| `is_incident` | `boolean` | | +| `assets` | `array` | | +| `countermeasures` | `array` | | +| `updated_at` | `integer` | | +| `comments` | `array` | | +| `ttps` | `array` | | +| `number_of_unseen_comments` | `integer` | | +| `status` | `object` | | +| `created_by` | `string` | | +| `updated_by` | `string` | | +| `source` | `string` | | +| `community_uuid` | `string` | | +| `number_of_total_comments` | `integer` | | +| `uuid` | `string` | | +| `rule` | `object` | | +| `adversaries` | `array` | | +| `short_id` | `string` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | +| `event_uuids` | `array` | | +| `kill_chain_short_id` | `string` | | +| `similar` | `integer` | | +| `alert_type` | `object` | | +| `details` | `string` | | +| `stix` | `object` | | +| `created_by_type` | `string` | | +| `entity` | `object` | | +| `created_at` | `integer` | | +| `updated_by_type` | `string` | | +| `title` | `string` | | +| `target` | `string` | | + +### Get context + +Get reports from a specific term + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sort` | `string` | | +| `term` | `string` | | + +### Get Event Field Common Values + +Get the most common values of fields observed under a specific query + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Event search query | +| `earliest_time` | `string` | The earliest time of the time range of the search | +| `latest_time` | `string` | The latest time of the time range of the search | +| `fields` | `string` | Fields to compute the most common values (use a coma between fields) | +| `limit` | `number` | Maximum number of events to retrieve | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `fields` | `array` | | + +### Get Events + +Query events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Event search query | +| `earliest_time` | `string` | The earliest time of the time range of the search | +| `latest_time` | `string` | The latest time of the time range of the search | +| `limit` | `number` | Maximum number of events to retrieve | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `events` | `array` | | + +### Create Content Proposal + +Create Content Proposal + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle to upload | +| `bundle_path` | `string` | Path of the STIX Bundle to upload | +| `auto_merge` | `boolean` | Whether or not the uploaded bundle can automatically be merged to the consolidated database | +| `enrich` | `boolean` | Whether or not the uploaded bundle should be enriched | +| `name` | `string` | Name to use for the new content proposal | +| `assigned_to` | `string` | Avatar assigned to the content proposal | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_name` | `string` | | +| `content_proposal_id` | `string` | | + +### Upload Observables + +Upload observables to inthreat + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `observables` | `array` | List of observables or bundle to upload to inThreat | +| `observables_path` | `string` | Path of the observables file to upload inThreat | + +### Search Alerts + +find alerts that match your filters + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `match[community_uuid]` | `string` | | +| `match[entity_name]` | `string` | | +| `match[entity_uuid]` | `string` | | +| `match[status_uuid]` | `string` | | +| `match[status_name]` | `string` | | +| `match[type_category]` | `string` | | +| `match[type_value]` | `string` | | +| `match[source]` | `string` | | +| `match[target]` | `string` | | +| `match[node]` | `string` | | +| `match[stix_object]` | `string` | | +| `match[rule_uuid]` | `string` | | +| `match[rule_name]` | `string` | | +| `match[short_id]` | `string` | | +| `match[uuid]` | `string` | | +| `match[title]` | `string` | | +| `date[created_at]` | `string` | | +| `date[updated_at]` | `string` | | +| `range[urgency]` | `string` | | +| `range[similar]` | `string` | | +| `visible` | `boolean` | | +| `limit` | `integer` | | +| `offset` | `integer` | | +| `stix` | `boolean` | | +| `sort` | `string` | | +| `direction` | `string` | | +| `with_count` | `boolean` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `total` | `integer` | | +| `has_more` | `boolean` | | +| `items` | `array` | | + +### List Assets + +Return a list of assets according to the filters + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `limit` | `integer` | The number of assets to return | +| `offset` | `integer` | The position of the first asset to return | +| `match[uuid]` | `string` | Filter assets according to their identifier | +| `match[name]` | `string` | Filter assets according to their name | +| `match[category_name]` | `string` | Filter assets according to their category | +| `match[category_uuid]` | `string` | Filter assets according to their category | +| `match[type_name]` | `string` | Filter assets according to their type | +| `match[type_uuid]` | `string` | Filter assets according to their type | +| `range[criticality]` | `string` | Filter assets according to their criticality | +| `date[created_at]` | `string` | Filter assets according to their creation date | +| `date[updated_at]` | `string` | Filter assets according to their modification date | +| `sort` | `string` | The field to use to sort the list | +| `direction` | `string` | The direction to sort the list | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `items` | `array` | | +| `total` | `integer` | | + +### Edit Alert + +Edit the details of an alert + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `alert_type_category` | `string` | Category of the alert type | +| `alert_type_value` | `string` | Name of the alert type, required if `alert_type_category` is present | +| `details` | `string` | Description of the alert | +| `urgency` | `integer` | The urgency of the alert | +| `kill_chain_short_id` | `string` | The ID of the kill chain step this alert denotes | +| `title` | `string` | Title of the alert | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `urgency` | `object` | | +| `is_incident` | `boolean` | | +| `assets` | `array` | | +| `updated_at` | `integer` | | +| `ttps` | `array` | | +| `number_of_unseen_comments` | `integer` | | +| `status` | `object` | | +| `created_by` | `string` | | +| `updated_by` | `string` | | +| `source` | `string` | | +| `community_uuid` | `string` | | +| `number_of_total_comments` | `integer` | | +| `uuid` | `string` | | +| `rule` | `object` | | +| `adversaries` | `array` | | +| `short_id` | `string` | | +| `first_seen_at` | `string` | | +| `last_seen_at` | `string` | | +| `event_uuids` | `array` | | +| `kill_chain_short_id` | `string` | | +| `similar` | `integer` | | +| `alert_type` | `object` | | +| `details` | `string` | | +| `stix` | `object` | | +| `created_by_type` | `string` | | +| `entity` | `object` | | +| `created_at` | `integer` | | +| `updated_by_type` | `string` | | +| `title` | `string` | | +| `target` | `string` | | + +### Comment Alert + +Attach a new comment on an Alert + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `content` | `string` | Content of the comment | +| `author` | `string` | Author of the comment | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `created_by` | `string` | The identifier of the creator of the comment | +| `content` | `string` | Content of the comment | +| `author` | `string` | Author of the comment | +| `unseen` | `boolean` | | +| `date` | `integer` | | +| `created_by_type` | `string` | The type of the creator of the comment | +| `uuid` | `string` | Identifier of the comment | + +### Create Content Proposal from PDF + +Creates a content proposal with the content extracted from the specified PDF + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `name` | `string` | | +| `file` | `string` | | +| `source_ref` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `data` | `object` | | + +### Create Content Proposal from URL + +Creates a content proposal with the content extracted from the specified URL + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `url` | `string` | | +| `source_ref` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `data` | `object` | | + +### Predict Alert State + +Predict the state of an alert + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert` | `object` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `worth_human_attention` | `boolean` | | + +### Push Events to Intake + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_key` | `string` | Intake Key | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `event` | `object` | Event to push on Intake | +| `event_path` | `string` | File path to the event to push on Intake | +| `events` | `array` | Events to push on Intake | +| `events_path` | `string` | File path to the events to push on Intake | +| `keep_file_after_push` | `boolean` | If set and if the events are supplied through a file, this option keeps the file after the events were sent to the intake | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event_ids` | `array` | | + +### Get CTI Report + +Retrieve the details of a report + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `data` | `string` | | + +### Get Asset + +Return an asset according its identifier + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the asset | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `keys` | `array` | The keys of the asset | +| `attributes` | `array` | The attributes of the asset | +| `uuid` | `string` | | +| `name` | `string` | | +| `created_at` | `string` | | +| `criticity` | `object` | The criticality associated with the asset | +| `asset_type` | `object` | | +| `updated_at` | `string` | | +| `description` | `string` | | +| `owners` | `array` | | +| `community_uuid` | `string` | | +| `category` | `object` | | + +### Update Alert Status + +Triggers an action on an alert to update its status + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `action_uuid` | `string` | UUID of the action to trigger | +| `comment` | `string` | a comment to describe why the alert status has changed | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `actions` | `array` | | + + +## Extra + +Module **`Sekoia.io` v2.58.2** \ No newline at end of file diff --git a/_shared_content/automate/library/sentinelone.md b/_shared_content/automate/library/sentinelone.md new file mode 100644 index 0000000000..8b82628193 --- /dev/null +++ b/_shared_content/automate/library/sentinelone.md @@ -0,0 +1,149 @@ +# SentinelOne + +![SentinelOne](/assets/playbooks/library/sentinelone.png){ align=right width=150 } + +This module interacts with the SentinelOne + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hostname` | `string` | The domain-name to the SentinelOne instance | +| `api_token` | `string` | The API token to authenticate to SentinelOne | + +## Triggers + +### Consume events from SentinelOne DeepVisibility + +Consume events from SentinelOne DeepVisibility’s Kafka brokers + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `bootstrap_servers` | `string` | Kafka bootstrap servers (e.g. 'dv-exporter-kafka-eu-central-1-prod.sentinelone.net:9093') | +| `username` | `string` | Kafka username | +| `password` | `string` | Kafka password | +| `group_id` | `string` | Kafka consumer group | +| `topic` | `string` | Kafka topic | + +## Actions + +### Deisolate an endpoint + +Connect the endpoint back to the network + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ids` | `array` | The list of Agent IDs to filter by | +| `account_ids` | `array` | The list of Account IDs to filter by | +| `group_ids` | `array` | The list of network group to filter by | +| `site_ids` | `array` | The list of Site IDs to filter by | +| `query` | `string` | Free-text search term to use | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `affected` | `integer` | The number of deisolated endpoints | + +### Get malwares from threat + +Fetch the malwares associated to a threat + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `threat_id` | `string` | The identifier of threat | +| `timeout` | `integer` | The maximum time, in seconds, the malwares should be retrieved (default: 300s) | +| `filters` | `object` | Filters to select the agents from which the malware will be transferred | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `status` | `string` | The status of the run | +| `status_reason` | `string` | The reason of the status | +| `files` | `object` | The list of retrieved files | + +### Isolate an endpoint + +Disconnect the endpoint from the network + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ids` | `array` | The list of Agent IDs to filter by | +| `account_ids` | `array` | The list of Account IDs to filter by | +| `group_ids` | `array` | The list of network group to filter by | +| `site_ids` | `array` | The list of Site IDs to filter by | +| `query` | `string` | Free-text search term to use | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `affected` | `integer` | The number of isolated endpoints | + +### Query events in Deep Visibility + +Create a query in Deep Visibility and get the events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `group_ids` | `array` | The list of network group to filter by | +| `site_ids` | `array` | The list of Site IDs to filter by | +| `query` | `string` | Free-text search term to use | +| `from_date` | `string` | Get events created after this timestamp | +| `to_date` | `string` | Get events created before or at this timestamp | +| `timeout` | `integer` | The maximum time, in seconds, the query should be processed in (default 300s) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `status` | `string` | The status of the query | +| `status_reason` | `string` | The reason of the status | +| `events` | `array` | The events got from the query | + +### Execute a remote script + +Execute a remote script and get the results + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `script_id` | `string` | The identifier of the script to identify | +| `output_destination` | `string` | The destination of the result | +| `task_description` | `string` | A short description of the task | +| `timeout` | `integer` | The maximum time, in seconds, the execution should be processed in (default: 300s) | +| `settings` | `object` | The settings to forward the remote script | +| `filters` | `object` | Filters to select the agents that will run the remote script | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `status` | `string` | The status of the run | +| `status_reason` | `string` | The reason of the status | +| `result_file` | `object` | The url to download the result (for cloud destination) | + + +## Extra + +Module **`SentinelOne` v1.12** \ No newline at end of file diff --git a/_shared_content/automate/library/sentinelonedeepvisibility.md b/_shared_content/automate/library/sentinelonedeepvisibility.md new file mode 100644 index 0000000000..823e50e0c7 --- /dev/null +++ b/_shared_content/automate/library/sentinelonedeepvisibility.md @@ -0,0 +1,34 @@ +# SentinelOneDeepVisibility + +![SentinelOneDeepVisibility](/assets/playbooks/library/sentinelonedeepvisibility.png){ align=right width=150 } + +This module interacts with the SentinelOne DeepVisibility using AWS S3 + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `aws_access_key` | `string` | The identifier of the access key | +| `aws_secret_access_key` | `string` | The secret associated to the access key | +| `aws_region_name` | `string` | The area hosting the AWS resources | + +## Triggers + +### Consume SentinelOne DeepVisibility events from AWS S3 + +Consume SentinelOne DeepVisibility events from S3 objects based on notifications + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`SentinelOneDeepVisibility` v1.0.2** \ No newline at end of file diff --git a/_shared_content/automate/library/servicenow.md b/_shared_content/automate/library/servicenow.md new file mode 100644 index 0000000000..2b381d5f09 --- /dev/null +++ b/_shared_content/automate/library/servicenow.md @@ -0,0 +1,37 @@ +# ServiceNow + +![ServiceNow](/assets/playbooks/library/servicenow.png){ align=right width=150 } + +[ServiceNow](https://www.servicenow.com/) is an IT company allowing creating workflow to empower employees productivity and to improve customers experience + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | ServiceNox base url | +| `username` | `string` | Username | +| `password` | `string` | Password | + +## Actions + +### Get Table + +Retrieve Service Now table + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `table_name` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `result` | `array` | | + + +## Extra + +Module **`ServiceNow` v1.22** \ No newline at end of file diff --git a/_shared_content/automate/library/shodan.md b/_shared_content/automate/library/shodan.md new file mode 100644 index 0000000000..1a1e1e60fb --- /dev/null +++ b/_shared_content/automate/library/shodan.md @@ -0,0 +1,147 @@ +# Shodan + +![Shodan](/assets/playbooks/library/shodan.png){ align=right width=150 } + +[Shodan](https://www.shodan.io/) is a Cybersecurity company keeping track of devices exposed to the Internet. It collect information on devices, running software and related CVEs. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | The user API key | +| `base_url` | `string` | Shodan base url, like https://api.shodan.io/. | + +## Actions + +### Get DNS domain + +Get all the subdomains and other DNS entries for the given domain. Uses 1 query credit per lookup. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | Domain name to lookup; example "cnn.com". | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | | +| `tags` | `array` | | +| `data` | `array` | | + +### Lookup IPs + +Look up the IP address for the provided list of hostnames. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hostnames` | `array` | List of hostnames; example "google.com". | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `type` | `` | | + +### Lookup DNS + +Look up the hostnames that have been defined for the given list of IP addresses. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ips` | `array` | List of IP addresses; example "74.125.227.230" | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `type` | `` | | + +### Get Host + +Returns all services that have been found for the given host IP. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | Host IP address | +| `history` | `boolean` | True if all historical banners should be returned (default: False) | +| `minify` | `boolean` | True to only return the list of ports and the general host information, no banners. (default: False) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `region_code` | `string` | | +| `ip` | `string` | | +| `area_code` | `string` | | +| `country_name` | `string` | | +| `hostnames` | `array` | | +| `postal_code` | `string` | | +| `dma_code` | `string` | | +| `country_code` | `string` | | +| `data` | `array` | | +| `city` | `string` | | +| `longitude` | `float` | | +| `country_code3` | `string` | | +| `latitude` | `float` | | +| `os` | `string` | | +| `ports` | `array` | | + +### Count Hosts + +This method behaves identical to "/shodan/host/search" with the only difference that this method does not return any host results, it only returns the total number of results that matched the query and any facet information that was requested. As a result this method does not consume query credits. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Shodan search query. The provided string is used to search the database of banners in Shodan, with the additional option to provide filters inside the search query using a "filter:value" format. For example, the following search query would find Apache webservers located in Germany: "apache country:DE". | +| `facets` | `string` | A comma-separated list of properties to get summary information on. Property names can also be in the format of "property:count", where "count" is the number of facets that will be returned for a property (i.e. "country:100" to get the top 100 countries for a search query). | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `matches` | `array` | | +| `facets` | `object` | | +| `total` | `integer` | | + +### Search Host + +Search Shodan using the same query syntax as the website and use facets to get summary information for different properties. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | Shodan search query. The provided string is used to search the database of banners in Shodan, with the additional option to provide filters inside the search query using a "filter:value" format. For example, the following search query would find Apache webservers located in Germany: "apache country:DE". | +| `facets` | `string` | A comma-separated list of properties to get summary information on. Property names can also be in the format of "property:count", where "count" is the number of facets that will be returned for a property (i.e. "country:100" to get the top 100 countries for a search query). | +| `max_pages` | `integer` | Set the maximum number of pages retrieved. | +| `minify` | `boolean` | True or False; whether or not to truncate some of the larger fields (default: True) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `matches` | `array` | | +| `facets` | `object` | | +| `total` | `integer` | | + + +## Extra + +Module **`Shodan` v1.22** \ No newline at end of file diff --git a/_shared_content/automate/library/skyhigh-security-secure-web-gateway-swg.md b/_shared_content/automate/library/skyhigh-security-secure-web-gateway-swg.md new file mode 100644 index 0000000000..a12dbb34b0 --- /dev/null +++ b/_shared_content/automate/library/skyhigh-security-secure-web-gateway-swg.md @@ -0,0 +1,33 @@ +# Skyhigh Security Secure Web Gateway (SWG) + +![Skyhigh Security Secure Web Gateway (SWG)](/assets/playbooks/library/skyhigh-security-secure-web-gateway-swg.png){ align=right width=150 } + +Skyhigh Security Secure Web Gateway (SWG) + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch events from Skyhigh Security Secure Web Gateway (SWG) API + +Fetch events from Skyhigh Security Secure Web Gateway (SWG) API + +#### Arguments + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `customer_id` | `integer` | Customer ID (e.g. 1234567890) | +| `account_name` | `string` | Username | +| `account_password` | `string` | Password associated with the account | +| `frequency` | `integer` | Batch frequency in seconds | +| `api_domain_name` | `string` | Domain name to use (Europe :eu.msg.mcafeesaas.com, North America: us.msg.mcafeesaas.com) | +| `intake_server` | `string` | Address of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | + + +## Extra + +Module **`Skyhigh Security Secure Web Gateway (SWG)` v1.0.6** \ No newline at end of file diff --git a/_shared_content/automate/library/skyhigh-security.md b/_shared_content/automate/library/skyhigh-security.md new file mode 100644 index 0000000000..62f4a4ff93 --- /dev/null +++ b/_shared_content/automate/library/skyhigh-security.md @@ -0,0 +1,35 @@ +# Skyhigh Security + +![Skyhigh Security](/assets/playbooks/library/skyhigh-security.png){ align=right width=150 } + +Skyhigh Security + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch events from Skyhigh Security Secure Web Gateway (SWG) API + +Fetch events from Skyhigh Security Secure Web Gateway (SWG) API + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `customer_id` | `integer` | Customer ID (e.g. 1234567890) | +| `account_name` | `string` | Username | +| `account_password` | `string` | Password associated with the account | +| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 5 minutes ago) | +| `start_time` | `integer` | The number of hours from which events should be queried. | +| `frequency` | `integer` | Batch frequency in seconds | +| `api_domain_name` | `string` | Domain name to use (Europe :eu.msg.mcafeesaas.com, North America: us.msg.mcafeesaas.com) | +| `intake_server` | `string` | Address of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | + + +## Extra + +Module **`Skyhigh Security` v1.10** \ No newline at end of file diff --git a/_shared_content/automate/library/sophos.md b/_shared_content/automate/library/sophos.md new file mode 100644 index 0000000000..2f63a7e2ea --- /dev/null +++ b/_shared_content/automate/library/sophos.md @@ -0,0 +1,49 @@ +# Sophos + +![Sophos](/assets/playbooks/library/sophos.png){ align=right width=150 } + +Sophos Module + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `oauth2_authorization_url` | `string` | OAuth2 authorization URL | +| `api_host` | `string` | API Url of the Sophos Central API (e.g. 'https://api-{dataRegion}.central.sophos.com') | +| `client_id` | `string` | OAuth2 client identifier | +| `client_secret` | `string` | OAuth2 client secret | + +## Triggers + +### Get Sophos events + +Forward Sophos Events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `exclude_types` | `array` | A list of type to exclude from the pulling | + + +### Query IoC from data lake [BETA] + +Query last IoCs from the Sophos Data lake + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Sophos` v1.11.7** \ No newline at end of file diff --git a/_shared_content/automate/library/stix.md b/_shared_content/automate/library/stix.md new file mode 100644 index 0000000000..8a54760afa --- /dev/null +++ b/_shared_content/automate/library/stix.md @@ -0,0 +1,358 @@ +# STIX + +![STIX](/assets/playbooks/library/stix.png){ align=right width=150 } + +[STIX](https://oasis-open.github.io/cti-documentation/) is a cybersecurity serialization format used to represent cyber threat intelligence, directed by the [OASIS Cyber Threat Intelligence Technical Committee](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cti). It peered with TAXII, a protocol used to exchange cyber threat intelligence (CTI) over HTTPS + +## Configuration + +This module accepts no configuration. + +## Triggers + +### fetch_taxii2_collection + +Fetch objects from a TAXII 2 Server + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sleep_time` | `integer` | Time in seconds the worker sleeps between the checks of new events | +| `collection_url` | `string` | URL of the TAXII Collection | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Bundle of STIX objects fetched from the collection | + +## Actions + +### Add Source + +Add a Source to a STIX Bundle + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `source` | `object` | STIX Identity Source | +| `source_path` | `string` | STIX Identity Source (from file) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Resulting STIX Bundle | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + +### Add Tags + +Add Tags to Observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `tags` | `array` | Tags to add to all observables | +| `valid_for` | `integer` | Period of validity for created tags (in days) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Resulting STIX Bundle | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + +### Create Relationships + +Create STIX Relationships + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `relationship_type` | `string` | STIX Relationship Type | +| `source` | `string` | STIX ID or JSON Path expression for the relationships' sources | +| `target` | `string` | STIX ID or JSON Path expression for the relationships' targets | +| `tlp` | `string` | TLP to use for relationships (as english or STIX ID) | +| `confidence` | `integer` | Admiralty Credibility score for created relationship (from 1 - Confirmed by other sources, to 6 - Truth cannot be judged) | +| `description` | `string` | Description of generated STIX relationships | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Resulting STIX Bundle | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + +### Cryptolaemus To STIX + +Parse Cryptolaemus content + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `content` | `string` | Content to parse | +| `content_path` | `string` | Path to the content file | +| `malware_id` | `string` | Id of the Emotet Malware | +| `campaign_ids` | `object` | Ids of the campaigns. The key must be the campaign name and the value its id. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle_path` | `string` | Path of the bundle file containing the parsed content. | + +### CVE to STIX + +Convert CVE JSON to STIX 2.1 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `cve_list` | `array` | CVE Objects to convert to STIX | +| `cve_list_paths` | `array` | CVE Objects to convert to STIX, from file paths | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle_path` | `object` | Path of converted STIX Bundle | + +### Filter bundle + +Filter objects inside a bundle + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `condition` | `object` | Condition to match | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Bundle with matching objects | +| `bundle_path` | `string` | Bundle with matching objects (in a file) | +| `excluded_bundle` | `object` | Bundle with excluded objects | +| `excluded_bundle_path` | `string` | Bundle with excluded objects (in a file) | + +### Json objects to Observables + +Convert a list of json objects into a list of observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `items` | `array` | Items to convert to observables | +| `items_path` | `string` | Path of the file holding the list of items to convert | +| `type` | `string` | type of observables | +| `value_path` | `string` | Name or JSON path of the attribute holding the value | +| `tags` | `array` | List of tags to add to the observables | +| `source` | `object` | STIX Identity Source | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `observables` | `object` | Bundle with the list of observables | +| `observables_path` | `string` | Path of the file holding the bundle with the observables | + +### VirusTotal LiveHunt to Observables + +Convert a livehunt notification into a list of observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `notification` | `object` | LiveHunt notification to convert to observables | +| `notification_path` | `string` | Path of the file holding the LiveHunt notification to convert | +| `notification_to_history` | `boolean` | Whether or not the notification should be added to the observable's history. Default to false | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `observables` | `object` | Bundle with the list of observables | +| `observables_path` | `string` | Path of the file holding the bundle with the observables | + +### MISP to STIX + +Convert MISP event to STIX 2.1 + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event` | `object` | MISP event to convert to STIX | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Converted STIX Bundle | + +### Observables to Contextualized Indicators + +Generate Contextualized Indicators from Observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `rules` | `array` | Rules to use on observables to contextualize data | +| `indicator_types` | `array` | STIX Indicator Types | +| `exclude` | `array` | Fields to exclude from pattern | +| `kill_chain_phases` | `array` | Indicator Kill Chain Phases | +| `tlp` | `string` | TLP to use for indicators (as english or STIX ID) | +| `valid_for` | `integer` | Period of validity for created indicator (in days) | +| `confidence` | `integer` | Admiralty Credibility score for created indicator (from 1 - Confirmed by other sources, to 6 - Truth cannot be judged) | +| `port_path` | `string` | JSON Path to extract the port in the observable. | +| `network_traffic_direction` | `string` | Direction of the network traffic. Either 'src' or 'dst' | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Resulting STIX Bundle | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + +### Observables to Indicators + +Generate Indicators from Observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `indicator_types` | `array` | STIX Indicator Types | +| `exclude` | `array` | Fields to exclude from pattern | +| `kill_chain_phases` | `array` | Indicator Kill Chain Phases | +| `tlp` | `string` | TLP to use for indicators (as english or STIX ID) | +| `valid_for` | `integer` | Period of validity for created indicator (in days) | +| `confidence` | `integer` | Admiralty Credibility score for created indicator (from 1 - Confirmed by other sources, to 6 - Truth cannot be judged) | +| `port_path` | `string` | JSON Path to extract the port in the observable. | +| `network_traffic_direction` | `string` | Direction of the network traffic. Either 'src' or 'dst' | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Resulting STIX Bundle | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + +### Remove Orphan Objects + +Remove objects without any relationship from a STIX bundle. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | Resulting STIX Bundle | +| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | + +### Split bundle + +Split a STIX Bundle in smaller ones + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `number_of_items` | `number` | Approximate number of items to include in each bundle | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle_paths` | `array` | Resulting STIX Bundles | + +### STIX to MISP + +Convert STIX bundle to MISP event + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `bundle` | `object` | STIX Bundle | +| `bundle_path` | `string` | STIX Bundle (from file) | +| `organization` | `object` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `event` | `object` | Resulting MISP event | +| `event_path` | `string` | Resulting MISP event (to file) | + +### Strings to Observables + +Convert a list of strings into a list of observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `items` | `array` | Items to convert to observables | +| `items_path` | `string` | Path of the file holding the list of items to convert | +| `type` | `string` | type of observables | +| `tags` | `array` | List of tags to add to the observables | +| `source` | `object` | STIX Identity Source | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `observables` | `object` | Bundle with the list of observables | +| `observables_path` | `string` | Path of the file holding the bundle with the observables | + + +## Extra + +Module **`STIX` v1.72** \ No newline at end of file diff --git a/_shared_content/automate/library/tehtris.md b/_shared_content/automate/library/tehtris.md new file mode 100644 index 0000000000..aa60381983 --- /dev/null +++ b/_shared_content/automate/library/tehtris.md @@ -0,0 +1,34 @@ +# TEHTRIS + +![TEHTRIS](/assets/playbooks/library/tehtris.png){ align=right width=150 } + +[TEHTRIS](https://tehtris.com) is a cybersecurity company offering products designed to protect endpoints against knwon and unknown threats + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `apikey` | `string` | The APIkey to authenticate call to the API | +| `tenant_id` | `string` | The identifier of your tenant (most of the time, your tenant id is a trigram in the url of your TETHRIS instance; eg: https://{tenant_id}.tehtris.net) | +| `alternative_url` | `string` | The alternative url to contact the TEHTRIS instance | + +## Triggers + +### Fetch new events from TEHTRIS + +Get last events from the TEHTRIS XDR platform + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `filter_id` | `['integer', 'string']` | The Filter ID used to retrieve events | + + +## Extra + +Module **`TEHTRIS` v1.13.1** \ No newline at end of file diff --git a/_shared_content/automate/library/the-hive.md b/_shared_content/automate/library/the-hive.md new file mode 100644 index 0000000000..a06da181e2 --- /dev/null +++ b/_shared_content/automate/library/the-hive.md @@ -0,0 +1,59 @@ +# The Hive + +![The Hive](/assets/playbooks/library/the-hive.png){ align=right width=150 } + +[TheHive](https://thehive-project.org/) is a scalable, open source and free Security Incident Response Platform + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Your TheHive instance URL | +| `apikey` | `string` | An API key | +| `organisation` | `string` | The user organisation | + +## Actions + +### Create an alert in The Hive + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert` | `object` | A Sekoia.io alert | +| `events` | `array` | The alert events used to create TheHive alert artifacts | +| `artifact_tlp` | `integer` | Case's TLP: 0, 1, 2, 3 for WHITE, GREEN, AMBER, RED. Default: 1 | +| `artifact_sighted` | `boolean` | Observable's sighted flag, True to mark the observable as sighted. Default: True | +| `artifact_ignore_similarity` | `boolean` | Observable's similarity ignore flag. `True` to ignore the observable during similarity computing. Default: True | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | +| `createdBy` | `string` | | +| `createdAt` | `string` | | +| `updatedAt` | `string` | | +| `type` | `string` | | +| `source` | `string` | | +| `sourceRef` | `string` | | +| `externalLink` | `string` | | +| `title` | `string` | | +| `description` | `string` | | +| `severity` | `integer` | | +| `date` | `integer` | | +| `tags` | `array` | | +| `tlp` | `integer` | | +| `pap` | `integer` | | +| `status` | `string` | | +| `follow` | `boolean` | | +| `customFields` | `object` | | +| `artifacts` | `array` | | + + +## Extra + +Module **`The Hive` v1.14** \ No newline at end of file diff --git a/_shared_content/automate/library/thinkst-canary.md b/_shared_content/automate/library/thinkst-canary.md new file mode 100644 index 0000000000..ad107e0798 --- /dev/null +++ b/_shared_content/automate/library/thinkst-canary.md @@ -0,0 +1,33 @@ +# Thinkst Canary + +![Thinkst Canary](/assets/playbooks/library/thinkst-canary.png){ align=right width=150 } + +Thinkst Canary specializes in innovative cybersecurity solutions, particularly using honeypot technology to detect and alert on threats within networks. They provide early warnings of breaches with minimal false positives. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Base URL | +| `auth_token` | `string` | Auth token | + +## Triggers + +### [BETA] Fetch Thinkst Canary Events + +Get latest events from Thinkst Canary + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_server` | `string` | | +| `intake_key` | `string` | | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `frequency` | `integer` | Batch frequency in seconds | +| `acknowledge` | `boolean` | Whether to acknowledge received events | + + +## Extra + +Module **`Thinkst Canary` v1.0.0** \ No newline at end of file diff --git a/_shared_content/automate/library/tranco.md b/_shared_content/automate/library/tranco.md new file mode 100644 index 0000000000..93966eb757 --- /dev/null +++ b/_shared_content/automate/library/tranco.md @@ -0,0 +1,36 @@ +# Tranco + +![Tranco](/assets/playbooks/library/tranco.svg){ align=right width=150 } + +[Tranco](https://tranco-list.eu/) is an top sites ranking list hardened against manipulation. + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch List + +Fetches Tranco list + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | +| `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | Tranco list file path | +| `chunk_offset` | `integer` | Offset of the chunk in the full list | +| `chunk_size` | `integer` | Size of the chunk | + + +## Extra + +Module **`Tranco` v1.22** \ No newline at end of file diff --git a/_shared_content/automate/library/trellix.md b/_shared_content/automate/library/trellix.md new file mode 100644 index 0000000000..df9a665309 --- /dev/null +++ b/_shared_content/automate/library/trellix.md @@ -0,0 +1,33 @@ +# Trellix + +Trellix has been involved in the detection and prevention of major cybersecurity attacks. It provides hardware, software, and services to investigate cybersecurity attacks, protect against malicious software, and analyze IT security risks + +## Configuration + +This module accepts no configuration. + +## Triggers + +### [ALPHA] Get Trellix ePo events + +Trigger playbook to get Trellix events information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | Client id to interact with Trellix API | +| `client_secret` | `string` | Client secret to interact with Trellix API | +| `api_key` | `string` | Api key to interact with Trellix API | +| `delay` | `integer` | Delay between running the connector | +| `base_url` | `string` | Base url of the Trellix API | +| `auth_url` | `string` | Url of the authentication server | +| `ratelimit_per_minute` | `integer` | Maximum number of requests per minute | +| `records_per_request` | `integer` | Number of records to fetch per 1 request | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Trellix` v1.2** \ No newline at end of file diff --git a/_shared_content/automate/library/trend-micro.md b/_shared_content/automate/library/trend-micro.md new file mode 100644 index 0000000000..93c0ca9e3d --- /dev/null +++ b/_shared_content/automate/library/trend-micro.md @@ -0,0 +1,32 @@ +# Trend Micro + +![Trend Micro](/assets/playbooks/library/trend-micro.png){ align=right width=150 } + + + +## Configuration + +This module accepts no configuration. + +## Triggers + +### [BETA] Fetch new logs + +Get last logs from the Trend Micro Email Security platform + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `service_url` | `string` | API service URL | +| `username` | `string` | Trend Micro username | +| `api_key` | `string` | Trend Micro api_key | +| `frequency` | `integer` | Batch frequency in seconds | +| `batch_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Trend Micro` v1.2.0** \ No newline at end of file diff --git a/_shared_content/automate/library/triage.md b/_shared_content/automate/library/triage.md new file mode 100644 index 0000000000..5650fec424 --- /dev/null +++ b/_shared_content/automate/library/triage.md @@ -0,0 +1,58 @@ +# Triage + +![Triage](/assets/playbooks/library/triage.svg){ align=right width=150 } + +[Triage](https://tria.ge/) is a malware analysis sandbox as a service, brought by [Hatching](https://hatching.io/) + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | API key | +| `api_url` | `string` | API endpoint (url) | + +## Triggers + +### Triage config + +Get Triage configs + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Frequency at which the script collects IOCs | +| `malware_list` | `array` | List of malware family | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | Triage raw results file path | + +## Actions + +### Triage to observables + +Triage raw results to observables + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `triage_raw_results` | `array` | List of objects that contain Triage raw results | +| `triage_raw_results_path` | `string` | Path of objects that contain Triage raw results | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `observables` | `array` | Bundle with the list of observables | +| `observables_path` | `string` | Path of the file holding the bundle with the observables | + + +## Extra + +Module **`Triage` v1.33** \ No newline at end of file diff --git a/_shared_content/automate/library/ubika.md b/_shared_content/automate/library/ubika.md new file mode 100644 index 0000000000..d47dc9e840 --- /dev/null +++ b/_shared_content/automate/library/ubika.md @@ -0,0 +1,32 @@ +# Ubika + +![Ubika](/assets/playbooks/library/ubika.png){ align=right width=150 } + +Ubika is a cybersecurity company offering products to protect web applications and APIs + +## Configuration + +This module accepts no configuration. + +## Triggers + +### [BETA] Fetch new alerts from Ubika Cloud Protector + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `provider` | `string` | Id of cirrus provider | +| `tenant` | `string` | Id of cirrus tenant | +| `token` | `string` | API token | + + +## Extra + +Module **`Ubika` v0.1.1** \ No newline at end of file diff --git a/_shared_content/automate/library/utils.md b/_shared_content/automate/library/utils.md new file mode 100644 index 0000000000..1fc6406d74 --- /dev/null +++ b/_shared_content/automate/library/utils.md @@ -0,0 +1,108 @@ +# Utils + +![Utils](/assets/playbooks/library/utils.svg){ align=right width=150 } + +This module exposes utility actions + +## Configuration + +This module accepts no configuration. + +## Actions + +### Read JSON File + +Read the json file and return its content evaluated against specified jsonpath + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the JSON file to read. | +| `file` | `object` | The JSON content to read. | +| `jsonpath` | `string` | JSON path to evaluate against read file content | +| `return_list` | `boolean` | Always return a list of results. Default to false. | +| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `output` | `object` | Content read from file | +| `output_path` | `object` | Path to the file with the content | + +### Read XML File + +Read the XML file and return its content evaluated against specified xpath + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file_path` | `string` | File path to the XML or HTML file to read. | +| `file` | `object` | The XML content to read. | +| `xpath` | `string` | XML path to evaluate against read file content | +| `source_type` | `string` | Source type of the input, it can be XML or HTML | +| `return_list` | `boolean` | Always return a list of results. Default to false. | +| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `output` | `object` | Content read from file | +| `output_path` | `object` | Path to the file with the content | + +### Password Generator + +Generate a password securely based on specified parameters + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `password_length` | `integer` | Password length | +| `number_of_digits` | `integer` | Number of digits in the password | +| `number_of_special_characters` | `integer` | Number of special characters in the password | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `password` | `string` | | + +### Get the current time + +Get the current time according to the timezone + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `selectedTimezone` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `epoch` | `integer` | The current datetime represented as an epoch | +| `iso8601` | `string` | The current datetime represented as an iso8601-formatted string | + +### Wait + +Wait + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `duration` | `integer` | Time to wait, in seconds | + + +## Extra + +Module **`Utils` v1.3.1** \ No newline at end of file diff --git a/_shared_content/automate/library/vade-cloud.md b/_shared_content/automate/library/vade-cloud.md new file mode 100644 index 0000000000..718399c8ff --- /dev/null +++ b/_shared_content/automate/library/vade-cloud.md @@ -0,0 +1,33 @@ +# Vade Cloud + +![Vade Cloud](/assets/playbooks/library/vade-cloud.png){ align=right width=150 } + + + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hostname` | `string` | Vade Cloud API hostname | +| `login` | `string` | Vade Cloud Email | +| `password` | `string` | Vade Cloud password | + +## Triggers + +### [BETA] Fetch new logs from Vade Cloud + +Get last logs from the Vade Cloud platform + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Vade Cloud` v1.4.0** \ No newline at end of file diff --git a/_shared_content/automate/library/vade-secure.md b/_shared_content/automate/library/vade-secure.md new file mode 100644 index 0000000000..33d59e275a --- /dev/null +++ b/_shared_content/automate/library/vade-secure.md @@ -0,0 +1,40 @@ +# Vade Secure + +![Vade Secure](/assets/playbooks/library/vade-secure.png){ align=right width=150 } + +Vade Secure Module + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `oauth2_authorization_url` | `string` | OAuth2 authorization URL | +| `api_host` | `string` | API Url of the VadeSecure platform (e.g. 'https://m365.eu.vadesecure.com') | +| `client_id` | `string` | OAuth2 client identifier | +| `client_secret` | `string` | OAuth2 client secret | + +## Triggers + +### Get M365 Email Events + +Get last M365 Email Events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `tenant_id` | `string` | Identifier of your 365 Tenant | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `emails_path` | `string` | The filename containing the events (emails or remediations) | + + +## Extra + +Module **`Vade Secure` v1.44** \ No newline at end of file diff --git a/_shared_content/automate/library/virustotal.md b/_shared_content/automate/library/virustotal.md new file mode 100644 index 0000000000..1599dd12fe --- /dev/null +++ b/_shared_content/automate/library/virustotal.md @@ -0,0 +1,221 @@ +# VirusTotal + +![VirusTotal](/assets/playbooks/library/virustotal.svg){ align=right width=150 } + +[VirusTotal](https://www.virustotal.com) is a cybersecurity company specialized in malware analysis. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `apikey` | `string` | APIKEY for VirusTotal | + +## Triggers + +### livehunt_notification_files + +Get LiveHunt notifications from the files endpoint + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sleep_time` | `integer` | frequency of the lookups (in seconds) | +| `skip_history` | `boolean` | only process new notifications | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `notification_path` | `string` | Filepath of the notification | +| `ruleset_name` | `string` | Name of the Ruleset | +| `rule_name` | `string` | Name of the Rule | +| `notification_id` | `string` | ID of the notification | +| `notification_date` | `integer` | Timestamp of the notification | +| `md5` | `string` | MD5 hash of the file that matched the Yara rule | +| `sha1` | `string` | SHA-1 hash of the file that matched the Yara rule | +| `sha256` | `string` | SHA-256 hash of the file that matched the Yara rule | +| `name` | `string` | Meaningful name of the file that matched the Yara rule | + +## Actions + +### Get Comments + +Get comments from Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `resource` | `string` | The hash or url to get comments from | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | +| `resource` | `string` | Resource Identifier | +| `comments` | `array` | List of comments | + +### Post Comment + +Post comment to Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `comment` | `string` | The comment to post | +| `resource` | `string` | The hash or url to comment | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | + +### Scan Domain + +Scan domain with Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `domain` | `string` | The domain to scan | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | +| `undetected_referrer_samples` | `array` | List of undetected samples referring to this domain | +| `undetected_downloaded_samples` | `array` | List of undetected samples downloaded from this domain | +| `undetected_urls` | `array` | List of undetected URLs on this domain | +| `detected_referrer_samples` | `array` | List of detected samples referring to this domain | +| `detected_downloaded_samples` | `array` | List of detected samples downloaded from this domain | +| `detected_urls` | `array` | List of detected URLs on this domain | +| `resolutions` | `array` | List of IP addresses this domain resolved to | +| `subdomains` | `array` | List of subdomains | +| `domain_siblings` | `array` | List of domain siblings | +| `categories` | `array` | List of categories | + +### Scan File + +Scan file with Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `file` | `string` | The file to scan | +| `detect_treshold` | `integer` | The number of positives from VirusTotal that will be used as a treshold of detection | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | +| `resource` | `string` | Resource Identifier | +| `scan_id` | `string` | Scan Identifier | +| `scan_date` | `string` | Date of last scan | +| `md5` | `string` | MD5 hash of the sample | +| `sha1` | `string` | SHA-1 hash of the sample | +| `sha256` | `string` | SHA-256 hash of the sample | +| `permalink` | `string` | Permalink to the scan report | +| `positives` | `integer` | Number of antivirus detecting this sample as malicious | +| `total` | `integer` | Number of antivirus that scanned the sample | +| `scans` | `object` | Scan results (one scan result per key) | + +### Scan Hash + +Scan hash with Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hash` | `string` | The hash to check | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | +| `resource` | `string` | Resource Identifier | +| `scan_id` | `string` | Scan Identifier | +| `scan_date` | `string` | Date of last scan | +| `md5` | `string` | MD5 hash of the sample | +| `sha1` | `string` | SHA-1 hash of the sample | +| `sha256` | `string` | SHA-256 hash of the sample | +| `permalink` | `string` | Permalink to the scan report | +| `positives` | `integer` | Number of antivirus detecting this sample as malicious | +| `total` | `integer` | Number of antivirus that scanned the sample | +| `scans` | `object` | Scan results (one scan result per key) | + +### Scan IP + +Scan ip with Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `ip` | `string` | The ip to scan | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | +| `country` | `string` | Country hosting this IP address | +| `asn` | `string` | Autonomous System number hosting this IP address | +| `undetected_downloaded_samples` | `array` | List of undetected samples downloaded from this IP address | +| `undetected_urls` | `array` | List of undetected URLs on this IP address | +| `detected_downloaded_samples` | `array` | List of detected samples downloaded from this IP address | +| `detected_urls` | `array` | List of detected URLs on this IP address | +| `resolutions` | `array` | List of domain names that resolved to this IP address | + +### Scan URL + +Scan url with Virus Total + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `url` | `string` | The url to scan | +| `detect_treshold` | `integer` | The number of positives from VirusTotal that will be used as a treshold of detection | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `response_code` | `integer` | Response Code | +| `verbose_msg` | `string` | Textual description of the response code | +| `scan_id` | `string` | Scan Identifier | +| `scan_date` | `string` | Date of last scan | +| `url` | `string` | Scanned URL | +| `permalink` | `string` | Permalink to the scan report | +| `positives` | `integer` | Number of antivirus detecting this sample as malicious | +| `total` | `integer` | Number of antivirus that scanned the sample | +| `scans` | `object` | Scan results (one scan result per key) | + + +## Extra + +Module **`VirusTotal` v1.25** \ No newline at end of file diff --git a/_shared_content/automate/library/whois.md b/_shared_content/automate/library/whois.md new file mode 100644 index 0000000000..adefdafc01 --- /dev/null +++ b/_shared_content/automate/library/whois.md @@ -0,0 +1,35 @@ +# Whois + +![Whois](/assets/playbooks/library/whois.svg){ align=right width=150 } + +Provides data enrichment for domains and IP addresses. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `proxy` | `boolean` | Use system proxy settings | + +## Actions + +### Whois + +Provides data enrichment for Domains, URLs, and IP addresses. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `query` | `string` | URL, IP, or domain to be enriched | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `Domain` | `object` | | + + +## Extra + +Module **`Whois` v1.21** \ No newline at end of file diff --git a/_shared_content/automate/library/withsecure.md b/_shared_content/automate/library/withsecure.md new file mode 100644 index 0000000000..0fea14f772 --- /dev/null +++ b/_shared_content/automate/library/withsecure.md @@ -0,0 +1,113 @@ +# WithSecure + +![WithSecure](/assets/playbooks/library/withsecure.png){ align=right width=150 } + +Interact with WithSecure Elements + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | Client identifier | +| `secret` | `string` | API secret to authenticate | + +## Triggers + +### Fetch security events + +Get last security events + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + +## Actions + +### Add comment on Incident + +Add comment on Incident. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | Incident identifier to comment. | +| `comment` | `string` | Comment. | + +### Isolate Device From Network + +Isolate a device from network connections. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | Device identifier of the computer to isolate. | +| `message` | `string` | Optional message that is displayed on isolated device. | + +### List Detections For Incident + +List Detections For Incident. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | Incident identifier to list detections. | + +### List devices + +Retrieves devices details. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `organization_id` | `string` | UUID of an organization. If organizationId is missing, default organization of authenticated client is used. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `devices` | `array` | | + +### Release Device From Network Isolation + +Release a device from network isolation. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | Device identifier of the computer to release. | + +### Scan Device For Malware + +Scan Device For Malware. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | Device identifier to scan for malware. | + +### Update status on Incident + +Update status on Incident. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target` | `string` | Incident identifier to comment. | +| `status` | `string` | Status. | +| `resolution` | `string` | Resolution. | + + +## Extra + +Module **`WithSecure` v2.14.0** \ No newline at end of file diff --git a/_shared_content/automate/library/zscaler.md b/_shared_content/automate/library/zscaler.md new file mode 100644 index 0000000000..f379ff2e84 --- /dev/null +++ b/_shared_content/automate/library/zscaler.md @@ -0,0 +1,52 @@ +# Zscaler + +![Zscaler](/assets/playbooks/library/zscaler.png){ align=right width=150 } + +Integrates with Zscaler + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Zscaler Base Url (ex: zscalerone.net, zscaler.net, zscloud.net) | +| `username` | `string` | Email ID of the API admin | +| `password` | `string` | Password for the API admin | +| `api_key` | `string` | API key | + +## Actions + +### Zscaler Block IoC + +Block the provided IOCs: IP / domain + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `IoC` | `string` | The value of the IoC to block | + +### Zscaler Push IOCs for detection + +Block the provided IOCs: IP / domain / Url + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | +| `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | + +### Zscaler UnBlock IoC + +UnBlock the provided IOCs: IP / domain + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `IoC` | `string` | The value of the IoC to unblock | + + +## Extra + +Module **`Zscaler` v0.1.3** \ No newline at end of file diff --git a/docs/integration/action_library/applicative/mandrill.md b/docs/integration/action_library/applicative/mandrill.md index 4806107add..6ecc02f933 100644 --- a/docs/integration/action_library/applicative/mandrill.md +++ b/docs/integration/action_library/applicative/mandrill.md @@ -1,38 +1 @@ -# Mandrill - -![Mandrill](/assets/playbooks/library/mandrill.svg){ align=right width=150 } - -Mandrill is a transactional email platform from Mailchimp. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `apikey` | `string` | APIKEY for Mandrill | - -## Actions - -### Send Message - -Send a new transactional message through Mandrill - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `message` | `object` | The information on the message to send | -| `async` | `boolean` | Enable a background sending mode that is optimized for bulk sending. In async mode, messages/send will immediately return a status of 'queued' for every recipient. To handle rejections when sending in async mode, set up a webhook for the 'reject' event. Defaults to false for messages with no more than 10 recipients; messages with more than 10 recipients are always sent asynchronously, regardless of the value of async. | -| `ip_pool` | `string` | The name of the dedicated ip pool that should be used to send the message. If you do not have any dedicated IPs, this parameter has no effect. If you specify a pool that does not exist, your default pool will be used instead. | -| `send_at` | `string` | When this message should be sent as a UTC timestamp in YYYY-MM-DD HH:MM:SS format. If you specify a time in the past, the message will be sent immediately. An additional fee applies for scheduled email, and this feature is only available to accounts with a positive balance. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `report` | `array` | An array of structs for each recipient containing the key 'email' with the email address, and details of the message status for that recipient | - - -## Extra - -Module **`Mandrill` v2.7** \ No newline at end of file +{!_shared_content/automate/library/mandrill.md!} diff --git a/docs/integration/action_library/applicative/mattermost.md b/docs/integration/action_library/applicative/mattermost.md index 53d678736b..b3c2e30945 100644 --- a/docs/integration/action_library/applicative/mattermost.md +++ b/docs/integration/action_library/applicative/mattermost.md @@ -1,44 +1 @@ -# Mattermost - -![Mattermost](/assets/playbooks/library/mattermost.svg){ align=right width=150 } - -[Mattermost](https://mattermost.com/) is a secure, open and flexible collaboration platform - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hook_url` | `string` | URL of the mattermost incoming webhook | - -## Actions - -### Post Sekoia.io Alert - -Post alert to Mattermost - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alert_uuid` | `string` | The Unique identifier of the alert | -| `channel` | `string` | The channel the message posts in. Use the channel’s name and not the display name, e.g. use town-square, not Town Square. | -| `api_key` | `string` | The Sekoia.io API-Key to read the alert content. | -| `base_url` | `string` | Base URL of Sekoia.io api (e.g. https://api.sekoia.io/). | -| `pretext` | `string` | An optional line of text that will be shown above the alert | - -### Post Message - -Post message to Mattermost - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `message` | `string` | The message to post | -| `channel` | `string` | The channel the message posts in. Use the channel’s name and not the display name, e.g. use town-square, not Town Square. | -| `username` | `string` | Overrides the username the message posts as. | - - -## Extra - -Module **`Mattermost` v1.18** \ No newline at end of file +{!_shared_content/automate/library/mattermost.md!} diff --git a/docs/integration/action_library/applicative/microsoft-office365.md b/docs/integration/action_library/applicative/microsoft-office365.md index 4698c7e37d..a31f2a43fb 100644 --- a/docs/integration/action_library/applicative/microsoft-office365.md +++ b/docs/integration/action_library/applicative/microsoft-office365.md @@ -1,52 +1 @@ -# Microsoft Office365 - -![Microsoft Office365](/assets/playbooks/library/microsoft-office365.png){ align=right width=150 } - -Microsoft Office 365 is an online service, providing the Microsoft Office Products. - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Fetch events from MessageTrace API (deprecated) - -Fetch events for MessageTrace API - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 5 minutes ago) | -| `start_time` | `integer` | The number of hours from which events should be queried. | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `account_name` | `string` | The account name to use | -| `account_password` | `string` | The password associated with the account | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -### Fetch events from MessageTrace API (OAuth) - -Fetch events for MessageTrace API (OAuth) - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `tenant_id` | `string` | The ID of the corresponding Tenant | -| `client_id` | `string` | The account name to use | -| `client_secret` | `string` | The password associated with the account | -| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 5 minutes ago) | -| `start_time` | `integer` | The number of hours from which events should be queried. | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Microsoft Office365` v2.11** \ No newline at end of file +{!_shared_content/automate/library/microsoft-office365.md!} diff --git a/docs/integration/action_library/applicative/microsoft-remote-server.md b/docs/integration/action_library/applicative/microsoft-remote-server.md index 7f9a6c4351..457aa96d7a 100644 --- a/docs/integration/action_library/applicative/microsoft-remote-server.md +++ b/docs/integration/action_library/applicative/microsoft-remote-server.md @@ -1,98 +1 @@ -# Microsoft Remote Server - -## Prerequisites - -### Remote server configuration - -To enable this module, please make sure you have properly configured WinRM on remote server. You can find more information about WinRM configuration [here](https://docs.microsoft.com/en-us/windows/win32/winrm/installation-and-configuration-for-windows-remote-management). - -If you are using Azure VM please check this [documentation](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/winrm). - -### How to setup and configure WinRM - -Before doing any setup please make sure that you are able to access remote server with Administrator privileges ( requires to setup WinRM ) -and your server is available to accept remote connections on `5985` and `5986` ports. - -If you are using Azure VM you can do this in `Network settings` tab on your machine. Below is an example of security rules for WinRM. - - ![Azure VM WinRM](/assets/instructions/winrm/security-rules.png){ align=center } - -* Open a PowerShell console as Administrator on remote server -* Execute command `Enable-PSRemoting -force` - - ![Enable-PSRemoting](/assets/instructions/winrm/1-psremoting.png){ align=center } - -* Execute command `winrm quickconfig` - - ![Quick Config](/assets/instructions/winrm/2-winrm-quick-config.png){ align=center } - -* Below commands will create new rules for allowing outside traffic to remote server on port `5985` fir WinRM HTTP and `5986` for WinRM HTTPS - - ```powershell - netsh advfirewall firewall add rule name=”WinRM-HTTP” dir=in localport=5985 protocol=TCP action=allow - netsh advfirewall firewall add rule name=”WinRM-HTTPS” dir=in localport=5986 protocol=TCP action=allow - ``` - - ![Netsh](/assets/instructions/winrm/3-netsh.png){ align=center } - -* Create certificate for WinRM HTTPS and add HTTPS Listener with the certificate thumbprint. - - ```powershell - $cert = New-SelfSignedCertificate -DnsName “” -CertStoreLocation cert:\ - winrm create winrm/config/Listener?Address=*+Transport=HTTPS “@{Hostname=`”`”;CertificateThumbprint=`”$($cert.ThumbPrint)`”}” - ``` - - ![New-SelfSignedCertificate](/assets/instructions/winrm/4-new-self-signed-certificate.png){ align=center } - -* Validate Listeners with `winrm e winrm/config/listener`. - - ![Validate listeners](/assets/instructions/winrm/5-validate-listeners.png){ align=center } - -* Enable CredSSP on server with `Enable-WSManCredSSP -Role Server`. - - ![WSManCredSSP](/assets/instructions/winrm/6-wsmancredssp.png){ align=center } - -## Configuration - -| Name | Type | Description | -|------------|----------|------------------------------------------------| -| `username` | `string` | Username to do authentication on remote server | -| `password` | `string` | Password to do authentication on remote server | - -## Actions - -### Change user password - -Change existed user password on remote server - -**Arguments** - -| Name | Type | Description | -|------------------|----------|------------------------------------------| -| `user_to_update` | `string` | Username you want to change password for | -| `new_password` | `string` | New password value | -| `server` | `string` | Remote server dns name or IP address | - -### Disable users - -Disable users on remote server - -**Arguments** - -| Name | Type | Description | -|----------|----------|----------------------------------------| -| `users` | `array` | Array of usernames you want to disable | -| `sids` | `string` | SID`s of users you want to disable. | -| `server` | `string` | Remote server dns name or IP address | - -### Enable users - -Enable users on remote server - -**Arguments** - -| Name | Type | Description | -|----------|----------|----------------------------------------| -| `users` | `array` | Array of usernames you want to disable | -| `sids` | `string` | SID`s of users you want to disable. | -| `server` | `string` | Remote server dns name or IP address | +{!_shared_content/automate/library/microsoft-remote-server.md!} diff --git a/docs/integration/action_library/applicative/microsoft-windows-server.md b/docs/integration/action_library/applicative/microsoft-windows-server.md index 16053b808f..b54f0598ed 100644 --- a/docs/integration/action_library/applicative/microsoft-windows-server.md +++ b/docs/integration/action_library/applicative/microsoft-windows-server.md @@ -1,53 +1 @@ -# Microsoft Windows Server - -![Microsoft Windows Server](/assets/playbooks/library/microsoft-windows-server.png){ align=right width=150 } - -Microsoft Windows Server is an operating system designed for server-based computing, offering robust server management, data storage, and networking capabilities for businesses and enterprises, facilitating diverse workloads and IT operations. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `server` | `string` | Remote server dns name or IP address | -| `username` | `string` | Username to do authentication on remote server | -| `password` | `string` | Password to do authentication on remote server | - -## Actions - -### Change User Password - -Changes specified user password on remote server - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `user_to_update` | `string` | Username you want to change password for | -| `new_password` | `string` | New password for user | - -### Disable Users - -Disable specified users on remote server - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `users` | `array` | List of user names to disable. `sids` or `users` must be specified | -| `sids` | `array` | List of SID`s to disable. `sids` or `users` must be specified | - -### Enable Users - -Enable specified users on remote server - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `users` | `array` | List of user names to enable. `sids` or `users` must be specified | -| `sids` | `array` | List of SID`s to enable. `sids` or `users` must be specified | - - -## Extra - -Module **`Microsoft Windows Server` v1.0.3** \ No newline at end of file +{!_shared_content/automate/library/microsoft-windows-server.md!} diff --git a/docs/integration/action_library/applicative/pagerduty.md b/docs/integration/action_library/applicative/pagerduty.md index c891470e1f..51429d407a 100644 --- a/docs/integration/action_library/applicative/pagerduty.md +++ b/docs/integration/action_library/applicative/pagerduty.md @@ -1,31 +1 @@ -# PagerDuty - -![PagerDuty](/assets/playbooks/library/pagerduty.svg){ align=right width=150 } - -[PagerDuty](https://www.pagerduty.com/) is an incident response platform for IT departments it allows triggering alerts and managing incidents. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `integration_key` | `string` | The integration key (a.k.a routing key) of your PagerDuty Service | -| `integration_url` | `string` | URL of the PagerDuty endpoint | - -## Actions - -### Trigger Alert - -Trigger alert to PagerDuty - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alert_uuid` | `string` | The Unique identifier of the alert | -| `api_key` | `string` | The Sekoia.io API-Key to read the alert content. | -| `base_url` | `string` | Base URL of Sekoia.io api (e.g. https://api.sekoia.io/). | - - -## Extra - -Module **`PagerDuty` v1.18** \ No newline at end of file +{!_shared_content/automate/library/pagerduty.md!} diff --git a/docs/integration/action_library/applicative/proofpoint.md b/docs/integration/action_library/applicative/proofpoint.md index 168887d638..979f519b55 100644 --- a/docs/integration/action_library/applicative/proofpoint.md +++ b/docs/integration/action_library/applicative/proofpoint.md @@ -1,50 +1 @@ -# Proofpoint - -![Proofpoint](/assets/playbooks/library/proofpoint.png){ align=right width=150 } - -Proofpoint Module - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Get Proofpoint PoD events - -Forward Proofpoint PoD Events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_host` | `string` | API Url of the ProofPoint PoD | -| `api_key` | `string` | The APIKey that authenticate the request | -| `cluster_id` | `string` | The cluster ID | -| `type` | `string` | The type of messages to collect | -| `since_time` | `['string', 'null']` | The starting time (up to 30 days ago) to collect log data, as ISO8601 format | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | - - -### Get Proofpoint TAP events - -Forward Proofpoint TAP Events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_host` | `string` | API Url of the ProofPoint TAP | -| `client_principal` | `string` | The authentication principal | -| `client_secret` | `string` | The authentication secret | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | - - -## Extra - -Module **`Proofpoint` v1.12** \ No newline at end of file +{!_shared_content/automate/library/proofpoint.md!} diff --git a/docs/integration/action_library/applicative/salesforce.md b/docs/integration/action_library/applicative/salesforce.md index 5d5119462c..ede2cc9c9a 100644 --- a/docs/integration/action_library/applicative/salesforce.md +++ b/docs/integration/action_library/applicative/salesforce.md @@ -1,35 +1 @@ -# Salesforce - -![Salesforce](/assets/playbooks/library/salesforce.png){ align=right width=150 } - -Salesforce provides users comprehensive tools to manage customer data, automate processes, analyze data and insights, and create personalized customer experiences. Salesforce also offers a variety of solutions for customer service, marketing automation, commerce, app development, and more - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `org_type` | `string` | Organization type. Might be one of the following: 'production', 'sandbox', 'trial', 'developer'. Default is 'production' | -| `client_id` | `string` | Client id to interact with salesforce API | -| `client_secret` | `string` | Client secret to interact with salesforce API | -| `rate_limit` | `string` | Rate limit for requests to salesforce. Value should have next format {max_rate}/{time_period}. For example: 3/60. Sekoia will use default rate limits if value is empty or invalid. More information you can find in docs: https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm | -| `base_url` | `string` | Url of salesforce instance. Consists of https://.salesforce.com | - -## Triggers - -### [BETA] Collect Salesforce events - -Trigger playbook to get Salesforce information - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `frequency` | `integer` | Batch frequency in seconds | - - -## Extra - -Module **`Salesforce` v1.5.2** \ No newline at end of file +{!_shared_content/automate/library/salesforce.md!} diff --git a/docs/integration/action_library/cloud_providers/aws.md b/docs/integration/action_library/cloud_providers/aws.md index ca1c34add1..1e1442fcb2 100644 --- a/docs/integration/action_library/cloud_providers/aws.md +++ b/docs/integration/action_library/cloud_providers/aws.md @@ -1,168 +1 @@ -# AWS - -![AWS](/assets/playbooks/library/aws.svg){ align=right width=150 } - -[AWS](https://aws.amazon.com/) is a one of the main cloud provider, supported by Amazon. It offers services for storage (S3, Glacier, EBS, ...), for networking (Snowball, CloudFront, ...), for computing (EC2, ECS, EKS, ...) and others. -This module provides triggers to collect events from AWS - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `aws_access_key` | `string` | The identifier of the access key | -| `aws_secret_access_key` | `string` | The secret associated to the access key | -| `aws_region_name` | `string` | The area hosting the AWS resources | - -## Triggers - -### Fetch CloudTrail logs (deprecated) - -Get the last records from CloudTrail (deprecated in flavor of Fetch new CloudTrail records on S3) - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `bucket_name` | `string` | The bucket that contains CloudTrail logs | -| `prefix` | `string` | Limits the response to keys that begin with the specified prefix | -| `chunk_size` | `integer` | The size of chunks for the batch processing | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `records` | `array` | A list of CloudTrail log records | -| `records_path` | `string` | The filename containing the records | - - -### Fetch Flowlog records (deprecated) - -Get the last records from FlowLog (deprecated in flavor of Fetch new logs on S3) - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `bucket_name` | `string` | The bucket that contains Flowlog records | -| `prefix` | `string` | Limits the response to keys that begin with the specified prefix | -| `chunk_size` | `integer` | The size of chunks for the batch processing | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `records` | `array` | A list of Flowlog records | -| `records_path` | `string` | The filename containing the records | - - -### [BETA] Fetch new CloudFront logs on S3 - -Get all CloudFront records from S3 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | -| `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -### Fetch new Flowlogs on S3 - -Get line-oriented Flowlog records from new S3 objects based on notifications - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | -| `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | -| `ignore_comments` | `boolean` | Flag to ignore commented lines (starting with the character `#`; default: false) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -### Fetch new FlowLogs Parquet records on S3 - -Get FlowLogs records from new S3 Parquet objects based on notifications - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -### Fetch new logs on S3 - -Get line-oriented records from new S3 objects based on notifications - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | -| `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | -| `ignore_comments` | `boolean` | Flag to ignore commented lines (starting with the character `#`; default: false) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -### Fetch new CloudTrail records on S3 - -Get Cloudtrail records from new S3 objects based on notifications - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -### Fetch new messages from the SQS - -Get messages from SQS - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`AWS` v1.29.6** \ No newline at end of file +{!_shared_content/automate/library/aws.md!} diff --git a/docs/integration/action_library/cloud_providers/google.md b/docs/integration/action_library/cloud_providers/google.md index 398acacc72..6eeb63b1e5 100644 --- a/docs/integration/action_library/cloud_providers/google.md +++ b/docs/integration/action_library/cloud_providers/google.md @@ -1,76 +1 @@ -# Google - -![Google](/assets/playbooks/library/google.svg){ align=right width=150 } - -Google module - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `credentials` | `object` | Credentials to use. You can find them in the credentials file | - -## Triggers - -### [BETA] Get user activities - -Get user activities using google reports - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `application_name` | `string` | The application from which the activities should be fetched | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `admin_mail` | `string` | Email of your google admin | - - -### Connect to the specified project subscription - -Connect to the Google Cloud Pub/Sub topic and return events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_key` | `string` | Intake key to use when sending events | -| `frequency` | `integer` | Batch frequency in seconds | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `project_id` | `string` | Project ID | -| `subject_id` | `string` | Subscription ID | -| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `messages_path` | `string` | Path to the file holding the results | - -## Actions - -### Run a query against a BigQuery table - -Execute the given query and return the results - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Query to run | -| `parameters` | `array` | Parameters to use inside the query | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `items_path` | `string` | Path to the file holding the results | - - -## Extra - -Module **`Google` v1.14.9** \ No newline at end of file +{!_shared_content/automate/library/google.md!} diff --git a/docs/integration/action_library/cloud_providers/microsoft-azure.md b/docs/integration/action_library/cloud_providers/microsoft-azure.md index 8f0c811751..de0ef1e727 100644 --- a/docs/integration/action_library/cloud_providers/microsoft-azure.md +++ b/docs/integration/action_library/cloud_providers/microsoft-azure.md @@ -1,67 +1 @@ -# Microsoft Azure - -![Microsoft Azure](/assets/playbooks/library/microsoft-azure.png){ align=right width=150 } - -Microsoft Azure is a cloud computing service operated by Microsoft - -## Configuration - -This module accepts no configuration. - -## Triggers - -### [BETA] Collect Azure Blob Storage events - -Trigger playbook to get Azure Blob Storage events information - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `container_name` | `string` | Container name to interact with Azure Blob Storage | -| `account_name` | `string` | Account name of the Azure Blob Storage | -| `account_key` | `string` | Account key of the Azure Blob Storage | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `frequency` | `integer` | Batch frequency in seconds | - - -### Consume Eventhub messages - -Consume messages from Microsoft Azure Eventhub - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hub_connection_string` | `string` | The connection string to connect the eventhub on Microsoft Azure eventHub | -| `storage_connection_string` | `string` | The connection string to connect the Microsoft Azure Storage blob | -| `storage_container_name` | `string` | The name of the container to use | -| `hub_name` | `string` | The name of the hub | -| `hub_consumer_group` | `string` | The consumergroup to supplied to the hub | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | - - -### [BETA] Fetch new Azure Network Watcher events from Blob Storage - -Trigger playbook to get Azure Network Watcher events information - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `container_name` | `string` | Container name to interact with Azure Network Watcher | -| `account_name` | `string` | Account name of the Azure Network Watcher | -| `account_key` | `string` | Account key of the Azure Network Watcher | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `frequency` | `integer` | Batch frequency in seconds | - - -## Extra - -Module **`Microsoft Azure` v2.4.8** \ No newline at end of file +{!_shared_content/automate/library/microsoft-azure.md!} diff --git a/docs/integration/action_library/collaboration_tools/atlassian-jira.md b/docs/integration/action_library/collaboration_tools/atlassian-jira.md index 0b395503c2..94d1b92f29 100644 --- a/docs/integration/action_library/collaboration_tools/atlassian-jira.md +++ b/docs/integration/action_library/collaboration_tools/atlassian-jira.md @@ -1,69 +1 @@ -# Atlassian JIRA - -![Atlassian JIRA](/assets/playbooks/library/atlassian-jira.png){ align=right width=150 } - -Integrates with JIRA - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | Your organization JIRA domain (e.g. 'sandbox.atlassian.net') | -| `email` | `string` | Email of the user | -| `api_key` | `string` | API Key to use to connect to JIRA API endpoints | - -## Actions - -### Change Status of an Issue - -Change status of an issue in JIRA - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `issue_key` | `string` | Issue key (e.g. PROJ-1) | -| `status_name` | `string` | Exact name of the status (e.g. 'To Do') | - -### Comment Issue - -Add comment to an issue in JIRA - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `issue_key` | `string` | Issue key (e.g. PROJ-1) | -| `comment` | `string` | Text of a comment | - -### Create Issue - -Create issue in JIRA - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `project_key` | `string` | Project key (e.g. 'PRJ') | -| `summary` | `string` | Summary of an issue (e.g. 'Fix a bug') | -| `issue_type` | `string` | Issue type (e.g. 'Task') | -| `description` | `object` | Description text in ADF (Atlassian Document Format) | -| `due_date` | `string` | Due date (e.g. '2023-10-31')' | -| `labels` | `string` | Comma-separated labels (e.g. 'devops,support') | -| `assignee` | `string` | Exact display name of an assignee (e.g. John Doe) | -| `reporter` | `string` | Exact display name of a reporter (e.g. Jane Doe) | -| `priority` | `string` | Issue priority (e.g. Highest) | -| `parent_key` | `string` | Key of a parent issue (e.g. PRJ-1) | -| `custom_fields` | `object` | JSON with custom fields (e.g. {"Some Field": "2"}) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `issue_key` | `string` | Key of the created issue | - - -## Extra - -Module **`Atlassian JIRA` v1.1** \ No newline at end of file +{!_shared_content/automate/library/atlassian-jira.md!} diff --git a/docs/integration/action_library/collaboration_tools/git.md b/docs/integration/action_library/collaboration_tools/git.md index 65e816b27f..cddf7a5828 100644 --- a/docs/integration/action_library/collaboration_tools/git.md +++ b/docs/integration/action_library/collaboration_tools/git.md @@ -1,61 +1 @@ -# Git - -![Git](/assets/playbooks/library/git.svg){ align=right width=150 } - -[Git](https://git-scm.com/) is a free and open source distributed version control system designed to handle projects with speed and efficiency. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `repository_url` | `string` | Git Repository URL | - -## Triggers - -### File Changes - -Trigger playbook run on file changes inside Git Repository - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sleep_time` | `integer` | Time in seconds the trigger sleeps between the checks of file changes | -| `chunk_size` | `integer` | Break results by groups of at most files (only one group by default) | -| `send_initial_state` | `boolean` | Create events for the initial state of the repository | -| `filter` | `string` | Apply an fnmatch filter to the tracked files | -| `include_repository` | `boolean` | Include the full repository everytime | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `changes` | `array` | File Changes | -| `old_commit` | `string` | hexsha of the previous commit | -| `new_commit` | `string` | hexsha of the last commit | -| `repository_path` | `string` | path of the repository directory | - - -### New Commit - -Trigger playbook run on every Git commit - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sleep_time` | `integer` | Time in seconds the trigger sleeps between the checks of new commits | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `commit` | `object` | Git Commit | -| `repository_path` | `string` | path of the repository directory | - - -## Extra - -Module **`Git` v1.10** \ No newline at end of file +{!_shared_content/automate/library/git.md!} diff --git a/docs/integration/action_library/collaboration_tools/github.md b/docs/integration/action_library/collaboration_tools/github.md index 6bec7a7cb8..60aefa49db 100644 --- a/docs/integration/action_library/collaboration_tools/github.md +++ b/docs/integration/action_library/collaboration_tools/github.md @@ -1,34 +1 @@ -# Github - -![Github](/assets/playbooks/library/github.png){ align=right width=150 } - -Github connector for audit logs - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `org_name` | `string` | The name of your Github organization | -| `apikey` | `string` | The APIkey to authenticate call to the Github API | -| `pem_file` | `string` | Pem file to interact with Github API | -| `app_id` | `integer` | Github app id to interact with Github API | - -## Triggers - -### Fetch new audit logs from Github - -Get last audit logs from a Github organization - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `ratelimit_per_minute` | `integer` | The number of requests allowed to the API in one minute for the token | - - -## Extra - -Module **`Github` v1.5.0** \ No newline at end of file +{!_shared_content/automate/library/github.md!} diff --git a/docs/integration/action_library/collaboration_tools/servicenow.md b/docs/integration/action_library/collaboration_tools/servicenow.md index 2b381d5f09..55b821405f 100644 --- a/docs/integration/action_library/collaboration_tools/servicenow.md +++ b/docs/integration/action_library/collaboration_tools/servicenow.md @@ -1,37 +1 @@ -# ServiceNow - -![ServiceNow](/assets/playbooks/library/servicenow.png){ align=right width=150 } - -[ServiceNow](https://www.servicenow.com/) is an IT company allowing creating workflow to empower employees productivity and to improve customers experience - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | ServiceNox base url | -| `username` | `string` | Username | -| `password` | `string` | Password | - -## Actions - -### Get Table - -Retrieve Service Now table - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `table_name` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `result` | `array` | | - - -## Extra - -Module **`ServiceNow` v1.22** \ No newline at end of file +{!_shared_content/automate/library/servicenow.md!} diff --git a/docs/integration/action_library/collaboration_tools/the-hive.md b/docs/integration/action_library/collaboration_tools/the-hive.md index a06da181e2..1730c6740b 100644 --- a/docs/integration/action_library/collaboration_tools/the-hive.md +++ b/docs/integration/action_library/collaboration_tools/the-hive.md @@ -1,59 +1 @@ -# The Hive - -![The Hive](/assets/playbooks/library/the-hive.png){ align=right width=150 } - -[TheHive](https://thehive-project.org/) is a scalable, open source and free Security Incident Response Platform - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | Your TheHive instance URL | -| `apikey` | `string` | An API key | -| `organisation` | `string` | The user organisation | - -## Actions - -### Create an alert in The Hive - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alert` | `object` | A Sekoia.io alert | -| `events` | `array` | The alert events used to create TheHive alert artifacts | -| `artifact_tlp` | `integer` | Case's TLP: 0, 1, 2, 3 for WHITE, GREEN, AMBER, RED. Default: 1 | -| `artifact_sighted` | `boolean` | Observable's sighted flag, True to mark the observable as sighted. Default: True | -| `artifact_ignore_similarity` | `boolean` | Observable's similarity ignore flag. `True` to ignore the observable during similarity computing. Default: True | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | | -| `createdBy` | `string` | | -| `createdAt` | `string` | | -| `updatedAt` | `string` | | -| `type` | `string` | | -| `source` | `string` | | -| `sourceRef` | `string` | | -| `externalLink` | `string` | | -| `title` | `string` | | -| `description` | `string` | | -| `severity` | `integer` | | -| `date` | `integer` | | -| `tags` | `array` | | -| `tlp` | `integer` | | -| `pap` | `integer` | | -| `status` | `string` | | -| `follow` | `boolean` | | -| `customFields` | `object` | | -| `artifacts` | `array` | | - - -## Extra - -Module **`The Hive` v1.14** \ No newline at end of file +{!_shared_content/automate/library/the-hive.md!} diff --git a/docs/integration/action_library/email/mimecast.md b/docs/integration/action_library/email/mimecast.md index 3d8317412b..0e5aadaceb 100644 --- a/docs/integration/action_library/email/mimecast.md +++ b/docs/integration/action_library/email/mimecast.md @@ -1,32 +1 @@ -# Mimecast - -![Mimecast](/assets/playbooks/library/mimecast.png){ align=right width=150 } - -Mimecast offers cloud-based email security, archiving, and continuity solutions to protect against cyber threats and ensure compliance. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `client_id` | `string` | Client ID | -| `client_secret` | `string` | Client Secret | - -## Triggers - -### [BETA] Fetch new email events from Mimecast - -Mimecast - Email Security - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Mimecast` v0.1.1** \ No newline at end of file +{!_shared_content/automate/library/mimecast.md!} diff --git a/docs/integration/action_library/email/vade-secure.md b/docs/integration/action_library/email/vade-secure.md index 33d59e275a..b25ae8c49e 100644 --- a/docs/integration/action_library/email/vade-secure.md +++ b/docs/integration/action_library/email/vade-secure.md @@ -1,40 +1 @@ -# Vade Secure - -![Vade Secure](/assets/playbooks/library/vade-secure.png){ align=right width=150 } - -Vade Secure Module - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `oauth2_authorization_url` | `string` | OAuth2 authorization URL | -| `api_host` | `string` | API Url of the VadeSecure platform (e.g. 'https://m365.eu.vadesecure.com') | -| `client_id` | `string` | OAuth2 client identifier | -| `client_secret` | `string` | OAuth2 client secret | - -## Triggers - -### Get M365 Email Events - -Get last M365 Email Events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `tenant_id` | `string` | Identifier of your 365 Tenant | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `emails_path` | `string` | The filename containing the events (emails or remediations) | - - -## Extra - -Module **`Vade Secure` v1.44** \ No newline at end of file +{!_shared_content/automate/library/vade-secure.md!} diff --git a/docs/integration/action_library/endpoint/crowdstrike-falcon.md b/docs/integration/action_library/endpoint/crowdstrike-falcon.md index d791a8c582..83388c93ba 100644 --- a/docs/integration/action_library/endpoint/crowdstrike-falcon.md +++ b/docs/integration/action_library/endpoint/crowdstrike-falcon.md @@ -1,99 +1 @@ -# CrowdStrike Falcon - -![CrowdStrike Falcon](/assets/playbooks/library/crowdstrike-falcon.png){ align=right width=150 } - -Integrates with CrowdStrike Falcon EDR - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `client_id` | `string` | Client Identifier | -| `client_secret` | `string` | Client Secret | -| `base_url` | `string` | Base URL of the API | - -## Triggers - -### Fetch CrowdStrike Falcon Events - -Get latest events from CrowdStrike Falcon - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_key` | `string` | Intake key to use when sending events | -| `tg_base_url` | `string` | The base_url for the ThreatGraphAPI | -| `tg_username` | `['string', 'null']` | The username for the ThreatGraphAPI | -| `tg_password` | `['string', 'null']` | The password for the ThreatGraphAPI | - -## Actions - -### Block IOC - -Block the provided IOC - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `value` | `string` | The value of the IOC to block | -| `type` | `string` | Type of the IOC to block: md5, sha256 | - -### Deisolate hosts - -Deisolate the provided hosts by their agent IDs - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `array` | The list of identifiers of agents to deisolate | - -### Isolate hosts - -Isolate the provided hosts by their agent IDs - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `array` | The list of identifiers of agents to isolate | - -### Monitor IOC - -Enable detection for the provided IOC - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `value` | `string` | The value of the IOC to monitor | -| `type` | `string` | Type of the IOC to monitor: md5, sha256, domain, ipv4, ipv6 | - -### Push IOCs for prevention - -Block the provided IOCs: md5 / sha256 file hashes - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | -| `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | - -### Push IOCs for detection - -Enable detections on the provided IOCs: md5 / sha256 file hashes, IPv4/v6 address, domains - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | -| `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | - - -## Extra - -Module **`CrowdStrike Falcon` v1.16.1** \ No newline at end of file +{!_shared_content/automate/library/crowdstrike-falcon.md!} diff --git a/docs/integration/action_library/endpoint/crowdstrike.md b/docs/integration/action_library/endpoint/crowdstrike.md index 06f02ba9df..1dda1ab3f9 100644 --- a/docs/integration/action_library/endpoint/crowdstrike.md +++ b/docs/integration/action_library/endpoint/crowdstrike.md @@ -1,38 +1 @@ -# CrowdStrike - -![CrowdStrike](/assets/playbooks/library/crowdstrike.png){ align=right width=150 } - -[CrowdStrike] CrowdStrike provides cloud workload and endpoint security, threat intelligence, and cyberattack response services and products. - This module provides triggers to collect events from CrowdStrike - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `aws_access_key_id` | `string` | The identifier of the access key | -| `aws_secret_access_key` | `string` | The secret associated to the access key | -| `aws_region` | `string` | The area hosting the AWS resources | - -## Triggers - -### Fetch new events from CrowdStrike Data replication - -Forward Crowdstrike Falcon Data Replication events to Sekoia.io - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `chunk_size` | `integer` | The size of max number of messages for the batch processing (default: 20000) | -| `frequency` | `integer` | Batch frequency in seconds. Should be greater than 0 and lower then 20 (default: 10) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: true) | -| `is_fifo` | `boolean` | Flag to determine if the queue is a FIFO queue (default: false) | -| `queue_name` | `string` | The name of the SQS queue that received messages with files information | -| `queue_url` | `string` | The URL of the SQS queue that received messages with files information | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`CrowdStrike` v1.8.2** \ No newline at end of file +{!_shared_content/automate/library/crowdstrike.md!} diff --git a/docs/integration/action_library/endpoint/cybereason.md b/docs/integration/action_library/endpoint/cybereason.md index 1c4c3282b0..7c5219763f 100644 --- a/docs/integration/action_library/endpoint/cybereason.md +++ b/docs/integration/action_library/endpoint/cybereason.md @@ -1,49 +1 @@ -# Cybereason - -![Cybereason](/assets/playbooks/library/cybereason.png){ align=right width=150 } - -[CyberReason](https://www.cybereason.com/) is a Cybersecurity company providing products to detect and prevents attacks targeting endpoints - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | API base URL | -| `username` | `string` | The username to use to authenticate against the API | -| `password` | `string` | The password to use to authenticate against the API | - -## Triggers - -### [LEGACY] Fetch new events from Cybereason - -Get last events from the Cybereason platform up to version 23.1.152 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `group_ids` | `array` | The sensors' group ids from which events must be retrieved | - - -### Fetch new events from Cybereason [23.1.152+] - -Get last events from the Cybereason platform from versions 23.1.152 and higher - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `group_ids` | `array` | The sensors' group ids from which events must be retrieved | - - -## Extra - -Module **`Cybereason` v1.9.7** \ No newline at end of file +{!_shared_content/automate/library/cybereason.md!} diff --git a/docs/integration/action_library/endpoint/harfanglab.md b/docs/integration/action_library/endpoint/harfanglab.md index 968fdee17e..9572003bf3 100644 --- a/docs/integration/action_library/endpoint/harfanglab.md +++ b/docs/integration/action_library/endpoint/harfanglab.md @@ -1,136 +1 @@ -# HarfangLab - -![HarfangLab](/assets/playbooks/library/harfanglab.png){ align=right width=150 } - -HarfangLab is an Endpoint detection and response (EDR) solution certified by ANSSI since 2020 - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `url` | `string` | URL of the HarfangLab instance | -| `api_token` | `string` | Authentication token for the API | - -## Actions - -### Deisolate an agent - -Deisolate an agent - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | The identifier of the agent to deisolate | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `requested` | `array` | The list of identifiers of non-deisolated endpoints | -| `unrequested` | `array` | The list of identifiers of deisolated endpoints | - -### Isolate an agent - -Isolate an agent - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | The identifier of the agent to isolate | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `requested` | `array` | The list of identifiers of isolated endpoints | -| `unrequested` | `array` | The list of identifiers of non-isolated endpoints | - -### Deisolate a group - -Deisolate a group of endpoints - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | The identifier of the group to deisolate | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `requested` | `array` | The list of identifiers of non-deisolated endpoints | -| `unrequested` | `array` | The list of identifiers of deisolated endpoints | - -### Isolate a group - -Isolate a group of endpoints - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | The identifier of the group to isolate | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `requested` | `array` | The list of identifiers of isolated endpoints | -| `unrequested` | `array` | The list of identifiers of non-isolated endpoints | - -### List named pipes - -Get the list of named pipe on the systems - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target_agents` | `string` | Targeted agents identifier | -| `target_groups` | `string` | Targeted groups identifier | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `str` | Identifier of the job | -| `action` | `str` | Name of job action | -| `creationtime` | `string` | Creation date of the job | -| `parameters` | `object` | Parameters of the job | - -### List processes - -Get the list of processes on the systems - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target_agents` | `string` | Targeted agents identifier | -| `target_groups` | `string` | Targeted groups identifier | -| `get_connections_list` | `boolean` | Get list of connections (listening and connected sockets) | -| `get_handles_list` | `boolean` | Get list of open handles | -| `get_signatures_list` | `boolean` | Get signature info of processes and DLLs | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `str` | Identifier of the job | -| `action` | `str` | Name of job action | -| `creationtime` | `string` | Creation date of the job | -| `parameters` | `object` | Parameters of the job | - - -## Extra - -Module **`HarfangLab` v1.19** \ No newline at end of file +{!_shared_content/automate/library/harfanglab.md!} diff --git a/docs/integration/action_library/endpoint/panda-security.md b/docs/integration/action_library/endpoint/panda-security.md index 85a43a3ebe..add25bb51a 100644 --- a/docs/integration/action_library/endpoint/panda-security.md +++ b/docs/integration/action_library/endpoint/panda-security.md @@ -1,415 +1 @@ -# Panda Security - -![Panda Security](/assets/playbooks/library/panda-security.png){ align=right width=150 } - -[PandaSecurity](https://www.pandasecurity.com/), a [WatchGuard](https://www.watchguard.com/) company, is a cybsersecurity vendor, delivering products designed to protect endpoints against outside threats. - -This module provides actions and triggers to interact with the [Watchguard Panda Aether platform](https://www.watchguard.com/wgrd-products/panda-endpoint-security) to act on AD360 and EPP devices - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | WatchGuard Cloud base URL (ex. https://api.usa.cloud.watchguard.com) | -| `account_id` | `string` | Your WatchGuard Cloud account ID | -| `api_key` | `string` | The API key associated to your Watchguard Cloud account | -| `access_id` | `string` | The identifier of the access credential used to authorize the requests | -| `access_secret` | `string` | The secret of the access credential used to authorize the requests | -| `audience` | `string` | The identifier of the managed account for service provider | - -## Triggers - -### Fetch Security Events - -Fetch the last security events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds (default 12h) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `events` | `array` | A list of security events | - -## Actions - -### Get Security Events - -Retrieves a list of security events of the specified type for the specified device for a specific time period. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `integer` | Type of security event. Specify one of these values:
- 1 — Malware
- 2 — PUPs (Potentially Unwanted Programs)
- 3 — Blocked Programs
- 4 — Exploits
- 5 — Blocked by Advanced Security
- 6 — Virus
- 7 — Spyware
- 8 — Hacking Tools and PUPs detected by Antivirus
- 9 — Phishing
- 10 — Suspicious
- 11 — Dangerous Actions
- 12 — Tracking Cookies
- 13 — Malware URLs
- 14 — Other security event by Antivirus
- 15 — Intrusion Attempts
- 16 — Blocked Connections
- 17 — Blocked Devices
- 18 — Indicators of Attack
Example: 13 | -| `period` | `integer` | Period of time to retrieve security events for. Specify one of these values:
- 1 - Previous 24 hours
- 7 - Previous 7 days | -| `hostname` | `string` | Host name (base-64 encoded) of the device you want to retrieve security events for. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `accessed_data` | `boolean` | Indicates if data has been accessed. | -| `action` | `integer` | Indicates the action performed. For Indicators Of Attack:
- 0: Undefined
- 1: Informed
- 2: Attack Blocked.
For other detections:
- 0: Allowed
- 1: Moved Quarantine
- 2: Blocked
- 3: Killed
- 4: Ignored
- 5: Cleaned
- 6: Deleted
- 7: Restored
- 8: Allowed By Whitelist
- 9: Write Blocked
- 10: User Pending
- 11: Uninstalled
- 13: After Process Blocked
- 14: Immediately Blocked
- 15: Allowed By User
- 16: Detected Restart Pending
- 17: Allowed By Administrator
- 18: AllowedSonGwInstaller
- 21: Suspend Process
- 1009: Informed
- 1010: Unquarantine
- 1011: Rename
- 1012: Block URL
| -| `alias` | `string` | Alias name for device control detections. | -| `count` | `integer` | Number of occurrences in indicators of attack detections. | -| `custom_group_folder_id` | `string` | Identifier of the custom group folder assigned. | -| `custom_group_folder_info` | `string` | Hierarchical structure for the assigned group and its subgroups, in JSON format. | -| `date` | `string` | Date and time of detection. | -| `description` | `string` | Name of device description in antivirus detections. | -| `detected_by` | `` | Protection or technology in antivirus detections.
- 1: On Demand Scan
- 2: File Resident
- 3: Mail Resident
- 4: Firewall
- 5: Device Control
- 6: Exchange Mailbox
- 7: Exchange Transport
- 8: Exchange Antispam
- 9: Web Protection
- 10: Exchange Content
- 11: Minerva
- 12: Web Access Control
- 13: Anti-theft
- 14: Anti-tampering
- 15: Personal Information Tracking
- 16: Isolation
- 17: Data Search Control
- 18: Patch Management
- 19: Personal Information Inventory
- 20: Application Control
- 21: Encryption USB
- 22: Authorized Software
| -| `detection_technology` | `string` | Name of detection technology in exploit detections. | -| `device_id` | `string` | Identifier of the device. | -| `device_type` | `` | Device type in antivirus and firewall detections.
- 0: Undefined
- 1: Workstation
- 2: Laptop
- 3: Server
- 4: Mobile
| -| `direction` | `` | Direction of firewall blocked connections.
- 1: Incoming
- 2: Outgoing
- 3: Incoming and Outgoing
- 4: Internal
| -| `discard_motive` | `` | Reason for discarding the knowledge sample.
- 0: Unknown
- 1: Other Reason
- 2: File Max Size
| -| `domain` | `string` | Domain of device in antivirus detections. | -| `dwell_time` | `integer` | Dwell time in seconds. | -| `endpoint_event_date` | `string` | Endpoint event date in indicators of attack detections. | -| `event_id` | `integer` | Identifier of the event. | -| `event_type` | `` | Indicates the event type.
- 0: Malware
- 1: Exploit
- 2: Pups
- 3: Blocked item
- 6: Lock Plus Advanced Security
- 7: Lock Plus Application Control
- 8: Application Control
| -| `excluded` | `boolean` | Indicates if the element has been excluded in antivirus detection. | -| `exploit_technique` | `string` | Exploit technique. | -| `file_info_discard` | `string` | Hash to identify the file in antivirus detections. | -| `filed_date` | `string` | Filed date in indicators of attack detections. | -| `hash` | `string` | Hash of element. | -| `host_name` | `string` | Name of the host. | -| `id` | `string` | Identifier in antivirus detections. | -| `instance_id` | `string` | Identifier of instance for device control detections. | -| `ip_address` | `string` | IP address of the device in antivirus and firewall detections. | -| `is_excluded` | `boolean` | Indicates if data has been excluded. | -| `item_name` | `string` | Name of threat. | -| `like_lihood_of_being_malicious` | `` | Indicates the likelihood of being malicious.
- 0: Low
- 1: Medium
- 2: High
- 3: Very High
| -| `local_endpoint` | `` | Firewall blocked connections for a local endpoint, in JSON format: Mac Address, IP Address, Port, and IP Type.
- 0: Unknown
- 1: IpV4
- 2: IpV6
| -| `lock_plus_rule_id` | `` | LockPlus Rule ID.
- 1: Obfuscated Params Powershell
- 2: User Executed Powershell
- 4: Unknown Scripts
- 5: Locally Built Programs
- 6: Documents With Macros
- 7: Windows Boot Registry
- 101: Forbidden Md5
- 102: Forbidden Program Name
| -| `made_external_connections` | `boolean` | Indicates if malware made external connections. | -| `malware_category` | `` | Malware category in antivirus detections.
- 1: Virus
- 2: Spyware
- 3: HackingPpnd
- 4: Phishing
- 5: Suspicious
- 6: Blocked Operations
- 7: Tracking Cookies
- 8: Malware URL
- 9: Others
| -| `malware_name` | `string` | Malware name in antivirus detections. | -| `malware_type` | `` | Malware type in antivirus detections.
- 21: Nereus Heuritic
- 22: Beta trace Heuritic
- 23: Smart Clean Heuritic
- 24: Cloud Heuritic
- 25: 1N
- 26: Behavioral
- 31: Confirmed Goodware
- 32: Not Confirmed Goodware
- 33: Unwanted Goodware
- 34: Ranked
- 35: Digital Signature
- 101: Virus
- 102: Worm
- 103: Trojan
- 104: TrojanPwdeal
- 105: Dialer
- 106: Joke
- 107: Security Risk
- 108: Spyware
- 109: Adware
- 110: WormFakefrom
- 111: Tracking Cookie
- 112: Pup
- 113: Hacking Tool
- 114: Vulnerability
- 115: Max Size
- 116: ZipOfDeath
- 117: PackerOfDeath
- 118: Hoax
- 119: Phis Fraud
- 120: Rootkit
- 121: Backdoor
- 122: Virus Constructor
- 123: Malicious URL
- 201: Advertising
- 202: Toolbar
- 203: NetTool
- 204: Advert Popup
- 219: Illegal
- 223: Internet Tools
- 227: Offensive
- 236: Society Education
- 241: Content Filter
| -| `network_activity_type` | `` | Network activity type in firewall detections.
- 1: IcmpAttack
- 2: UdpPortScan
- 3: HeaderLengths
- 4: UdpFlood
- 5: TcpFlagsCheck
- 6: SmartWins
- 7: IpExplicitPath
- 8: LandAttack
- 9: SmartDns
- 10: IcmpFilterEchoRequest
- 11: OsDetection
- 12: SmartDhcp
- 13: SynFlood
- 14: SmartArp
- 15: TcpPortScan
| -| `number_of_occurrences` | `integer` | Number of occurrences in antivirus detections. | -| `path` | `string` | Name of threat path. | -| `platform_id` | `` | Platform of affected device.
- 0: Undefined
- 1: Windows
- 2: Linux
- 3: Mac
- 4: Android
- 5: IOS
| -| `protection_mode` | `` | Indicates the protection mode.
- 0: Undefined
- 1: Audit
- 2: Hardening
- 3: Lock
| -| `protocol` | `` | Protocol of firewall blocked connections.
- 1: Tcp
- 2: Udp
- 3: TcpUdp
- 4: Icmp
- 5: IP
- 6: All
| -| `reclassified_to_type` | `` | Indicates the type to which it has been reclassified.
- 0: Blocked
- 1: Malware
- 3: Pup
- 6: Goodware
- 11: Removed From List
| -| `remote_endpoint` | `` | Firewall blocked connections for a remote endpoint, in JSON format: Mac Address, IP Address, Port, and IP Type.
- 0: Unknown
- 1: IpV4
- 2: IpV6
| -| `risk` | `boolean` | Indicates if it is a risk exploit. | -| `rule_configuration_id` | `string` | Identifier of rule configuration in firewall blocked connections. | -| `rule_id` | `string` | Identifier of rule in firewall blocked connections and in indicators of attack detections. | -| `rule_mitre` | `string` | Array with JSON pairs of the attack tactic and technique in indicators of attack detections. | -| `rule_name` | `string` | Rule name for firewall blocked connections and for indicators of attack detections. | -| `rule_obsolete` | `boolean` | Indicates if rule is obsolete in firewall blocked connections. | -| `rule_risk` | `` | Indicates the rule risk for indicators of attack detections.
- 0: Undefined
- 1: Critical
- 2: High
- 3: Medium
- 4: Low
- 1000: Unknown
| -| `security_event_date` | `string` | Security event date and time for antivirus, firewall, and device control detections. | -| `since_until_filed` | `string` | Time since the filed date in indicators of attack detections. | -| `site_id` | `string` | Identifier of the site. | -| `site_name` | `string` | Site name in antivirus and firewall detections. | -| `source_ip` | `string` | Name of source IP. | -| `source_machine_name` | `string` | Name of source device name. | -| `source_user` | `string` | Source username. | -| `status` | `` | Indicates the status in indicators of attack detections.
- 0: Undefined
- 1: Pending
- 2: Filed
| -| `type` | `` | Type of device for device control detections.
- 0: Undefined
- 1: Removable Storage
- 2: Image Capture
- 3: Optical Storage
- 4: Bluetooth
- 5: Modem
- 6: Mobile
| -| `user_name` | `string` | Username. | -| `was_run` | `boolean` | Indicates if the item has been executed. | - -### Isolate Devices - -Isolates the specified devices. When you isolate a device, communication to and from the device is denied. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `device_ids` | `array` | List of IDs of devices to isolate.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | -| `exclusion_programs` | `array` | List of programs to exclude from isolation and allow to communicate normally. | -| `customized_message` | `str` | Text to show in an alert message on the isolated devices | -| `hide_customized_alert` | `boolean` | Indicates whether to hide the customized alert message on isolated devices. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `processed_device_ids` | `array` | List of IDs of the isolated devices | - -### Link Devices to Managed Configurations - -Links devices to a specified configuration. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `config_id` | `str` | Identifier of the managed configuration to associate with the devices.
Example: 2836d89d-1e98-4377-92b7-0a76ac2a7699 | -| `type` | `integer` | Type of configuration. Currently, only option 2 is supported.
- 2 — Workstations and servers.
Example: 2 | -| `device_ids` | `array` | List of IDs of devices to link to the specified managed configuration..
Example: cb509c17-7b88-461a-ba3b-3d43e29e6cd4,2c13685e-7d1f-4726-9ad3-5c8fa7718bab | - -### Retrieve Devices - -Retrieves a list of devices, and additional information, such as the device IP address and operating system. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | -| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | -| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | -| `$config` | `boolean` | Indicates whether the security configuration name and ID are returned. The default value is true.
Example: true | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | -| `data` | `array` | Array of device data | - -### Retrieve Managed Configurations - -Retrieves a list of the specified type of managed configurations associated with your WatchGuard Cloud account. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `integer` | Type of configuration to return. Specify one of these values:
- 1 — Deployment settings
- 2 — Workstations and servers
- 3 — Android
Example: 2 | -| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | -| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | -| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | -| `data` | `array` | List of managed configurations. | - -### Retrieve unmanaged devices - -Retrieves a list of unmanaged devices discovered on the network. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | -| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | -| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | -| `data` | `array` | Array of device data | - -### Count Security Events - -Retrieves counts of detected security events for the specified types. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `integer` | Types of security event counters to retrieve. This parameter is a mask. Add the values of the security event counter types you want to retrieve.
For example, if you want to retrieve only programs blocked, specify 8. If you want to retrieve both PUPs and programs blocked, specify 10 because 8 (programs blocked) + 2 (PUPs) = 10.
- 1 - Malware
- 2 PUPs (Potentially Unwanted Programs)
- 4 - Exploits
- 8 - Programs Blocked
- 16 - Threats detected by AV
- 255 - All counters
Example: 10 | -| `filter` | `str` | Filters the security event counters by date
Specify the type of security event:
- 33001 — Antivirus
- 32001 — Other types
Specify the length of the time period in the format [x, y] where x is the number of units and y is the unit of time:
- 1 — Years
- 2 - Months
- 3 - Days
- 4 - Hours
For example, this retrieves threats detected by AV for the last 7 days: filter=33001%20AmongTheLast%20[7,3].
This retrieves security event counters for the other types for the last 3 months: filter=32001%20AmongTheLast%20[3,2].
If you do not specify a filter, the API returns all of the security events for the last 30 days.
Example: 33001%20AmongTheLast%20[7,3] | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `exploit_counters` | `object` | | -| `malware_counters` | `object` | | -| `program_blocked_counters` | `object` | | -| `pups_counters` | `object` | | -| `threats_by_av_counters` | `object` | | - -### Get DataControl module status - -Retrieves a count of files and devices that Data Control identified with each type of Personally Identifiable Information (PII). - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `properties` | `` | | -| `type` | `` | | - -### Retrieve Device Protection Status - -Retrieves a list of devices with their protection status and other device information. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | -| `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | -| `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total_items` | `integer` | Total number of devices.
If the count request parameter is true, total_items displays the total number of devices. If count is false, then total_items displays null.
Example: 42 | -| `data` | `array` | Array of device data | - -### Retrieve Full Encryption Module Status - -Retrieves Full Encryption statistics. - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total_supported_devices` | `integer` | Total number of devices that support Full Encryption. | -| `with_decrypting_drives` | `integer` | Number of devices with at least one disk currently in the decryption process. | -| `with_encrypted_by_user_drives` | `integer` | Number of devices where a user encrypted some or all of the disks. | -| `with_encrypted_drives` | `integer` | Number of devices with Full Encryption on all disks. | -| `with_encrypted_partially_by_user_drives` | `integer` | Number of devices where a user encrypted some or all of the disks. Full Encryption encrypts or decrypts the remainder. | -| `with_encrypted_partially_drives` | `integer` | Number of devices with at least one disk with Full Encryption complete. | -| `with_encrypting_drives` | `integer` | Number of devices with at least one disk currently in the encryption process. | -| `with_non_encrypted_drives` | `integer` | Number of devices with no disks encrypted by the user or Full Encryption. | -| `with_unknown_encryption_status` | `integer` | Number of devices with disks encrypted with an authentication method that Full Encryption does not support. | - -### Retrieve Patch Management Module Status - -Retrieves Patch Management statistics. - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `non_security_other_patches` | `integer` | Number of other currently available patches that are not related to security. | -| `security_critical` | `integer` | Number of currently available critical security patches. | -| `security_important` | `integer` | Number of currently available security patches classified as important. | -| `security_low` | `integer` | Number of currently available security patches classified as low importance. | -| `security_moderate` | `integer` | Number of currently available security patches classified as moderate importance. | -| `security_not_classified` | `integer` | Number of security patches that do not have a severity classification. | -| `service_pack` | `integer` | Number of currently available service packs. | -| `total_supported_devices` | `integer` | Total number of devices that support Patch Management. | - -### Retrieve Security overview - -Retrieves counters for security overview. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `period` | `integer` | Period of time to retrieve security event counters for. Specify one of these values:
- 1 - Previous 24 hours
- 7 - Previous 7 days
- 30 - Previous 30 days
Example: 7 | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `exploits` | `` | | -| `indicators_of_attack_counters` | `` | | -| `malware` | `` | | -| `programs_blocked` | `` | | -| `pups` | `` | | -| `threats_by_av_counters` | `` | | -| `total_devices` | `integer` | Total number of devices. | -| `total_unmanaged_devices` | `integer` | Total number of unmanaged devices. | - -### Scan devices - -Starts a task to scan the specified devices immediately. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `device_ids` | `array` | List of IDs of devices to scan.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | -| `task_name` | `str` | Name of the scan task.
Example: Routine scan | -| `task_description` | `str` | Description of the scan task.
Example: Windows 8 machines only | -| `scan_scope` | `integer` | Scope of the scan task. Specify one of these values:
- 0 - Whole computer
- 1 - Critical areas
- 2 - Specified items
Example: 0 | -| `specified_items_to_scan` | `str` | List of specific locations or items to scan. All folders and files in the specified locations are scanned.
Works only when scan_scope is 2.
Example: "C:\Downloads", "C:\Documents" | -| `detect_hacking_tools` | `boolean` | Indicates whether to detect hacking tools. This detects potentially unwanted programs, as well as programs used by hackers.
Example: false | -| `detect_suspicious_files` | `boolean` | Indicates whether to detect suspicious files. In scheduled scans, the tool scans computer software but does not run it. Some types of threats have a lower chance of detection. Set this option to true to scan with heuristic algorithms and improve detection rates.
Example: true | -| `scan_compressed_files` | `boolean` | Indicates whether to scan compressed files. This decompresses compressed files and scans their contents.
Example: true | -| `apply_exclusions_on_scan` | `boolean` | Indicates whether to exclude items from the scan, such as specific files, files with a specific extension, or a specific directory.
Example: false | -| `extensions_to_exclude` | `str` | List of file extensions to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "exe","pdf" | -| `files_to_exclude` | `str` | List of file names (with their extensions) to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "Chrome.exe", "Explorer.exe" | -| `folders_to_exclude` | `str` | List of folders to exclude from the scan. You must include the full path.
Works only when apply_exclusions_on_scan is true.
Example: "D:/shared_drive/documents" | -| `execution_window_expiration` | `str` | Time period in which the scan must run before it times out. The default is 7 days.
Example: 8.07:06:05 specifies 8 days, 7 hours, 6 minutes, and 5 seconds | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `no_executed_by_not_found_device_ids` | `array` | | -| `task_id` | `string` | ID of the completed scan task. | - -### Send action - -Initiates an action on the specified devices. For example, send an action to reboot a device. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `device_ids` | `array` | List of IDs of devices to reboot.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | -| `action_type` | `integer` | Type of action to initiate on the device. Specify one of these values:
- 1 - Reboot | -| `count_down_type` | `integer` | Amount of time to count down to the action. Specify one of these values:
- 1 - Immediate
- 2 - Fifteen minutes
- 3 - Thirty minutes
- 4 - One hour
- 5 - Two hours
- 6 - Four hours
- 7 - Eight hours | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `processed_device_ids` | `array` | List of IDs of the rebooted devices | - -### Stop devices isolation - -Stops isolation on the specified devices. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `device_ids` | `array` | List of IDs of devices to remove from isolation.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `processed_device_ids` | `array` | List of IDs of the devices removed from isolation | - -### Uninstall protection from devices - -Uninstalls protection from the specified devices. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `device_ids` | `array` | List of IDs of devices to remove the protection.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | - - -## Extra - -Module **`Panda Security` v1.19** \ No newline at end of file +{!_shared_content/automate/library/panda-security.md!} diff --git a/docs/integration/action_library/endpoint/sentinelone.md b/docs/integration/action_library/endpoint/sentinelone.md index 8b82628193..9d0f8febd0 100644 --- a/docs/integration/action_library/endpoint/sentinelone.md +++ b/docs/integration/action_library/endpoint/sentinelone.md @@ -1,149 +1 @@ -# SentinelOne - -![SentinelOne](/assets/playbooks/library/sentinelone.png){ align=right width=150 } - -This module interacts with the SentinelOne - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hostname` | `string` | The domain-name to the SentinelOne instance | -| `api_token` | `string` | The API token to authenticate to SentinelOne | - -## Triggers - -### Consume events from SentinelOne DeepVisibility - -Consume events from SentinelOne DeepVisibility’s Kafka brokers - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `bootstrap_servers` | `string` | Kafka bootstrap servers (e.g. 'dv-exporter-kafka-eu-central-1-prod.sentinelone.net:9093') | -| `username` | `string` | Kafka username | -| `password` | `string` | Kafka password | -| `group_id` | `string` | Kafka consumer group | -| `topic` | `string` | Kafka topic | - -## Actions - -### Deisolate an endpoint - -Connect the endpoint back to the network - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ids` | `array` | The list of Agent IDs to filter by | -| `account_ids` | `array` | The list of Account IDs to filter by | -| `group_ids` | `array` | The list of network group to filter by | -| `site_ids` | `array` | The list of Site IDs to filter by | -| `query` | `string` | Free-text search term to use | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `affected` | `integer` | The number of deisolated endpoints | - -### Get malwares from threat - -Fetch the malwares associated to a threat - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `threat_id` | `string` | The identifier of threat | -| `timeout` | `integer` | The maximum time, in seconds, the malwares should be retrieved (default: 300s) | -| `filters` | `object` | Filters to select the agents from which the malware will be transferred | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `status` | `string` | The status of the run | -| `status_reason` | `string` | The reason of the status | -| `files` | `object` | The list of retrieved files | - -### Isolate an endpoint - -Disconnect the endpoint from the network - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ids` | `array` | The list of Agent IDs to filter by | -| `account_ids` | `array` | The list of Account IDs to filter by | -| `group_ids` | `array` | The list of network group to filter by | -| `site_ids` | `array` | The list of Site IDs to filter by | -| `query` | `string` | Free-text search term to use | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `affected` | `integer` | The number of isolated endpoints | - -### Query events in Deep Visibility - -Create a query in Deep Visibility and get the events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `group_ids` | `array` | The list of network group to filter by | -| `site_ids` | `array` | The list of Site IDs to filter by | -| `query` | `string` | Free-text search term to use | -| `from_date` | `string` | Get events created after this timestamp | -| `to_date` | `string` | Get events created before or at this timestamp | -| `timeout` | `integer` | The maximum time, in seconds, the query should be processed in (default 300s) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `status` | `string` | The status of the query | -| `status_reason` | `string` | The reason of the status | -| `events` | `array` | The events got from the query | - -### Execute a remote script - -Execute a remote script and get the results - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `script_id` | `string` | The identifier of the script to identify | -| `output_destination` | `string` | The destination of the result | -| `task_description` | `string` | A short description of the task | -| `timeout` | `integer` | The maximum time, in seconds, the execution should be processed in (default: 300s) | -| `settings` | `object` | The settings to forward the remote script | -| `filters` | `object` | Filters to select the agents that will run the remote script | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `status` | `string` | The status of the run | -| `status_reason` | `string` | The reason of the status | -| `result_file` | `object` | The url to download the result (for cloud destination) | - - -## Extra - -Module **`SentinelOne` v1.12** \ No newline at end of file +{!_shared_content/automate/library/sentinelone.md!} diff --git a/docs/integration/action_library/endpoint/sentinelonedeepvisibility.md b/docs/integration/action_library/endpoint/sentinelonedeepvisibility.md index 823e50e0c7..63bd6c89f0 100644 --- a/docs/integration/action_library/endpoint/sentinelonedeepvisibility.md +++ b/docs/integration/action_library/endpoint/sentinelonedeepvisibility.md @@ -1,34 +1 @@ -# SentinelOneDeepVisibility - -![SentinelOneDeepVisibility](/assets/playbooks/library/sentinelonedeepvisibility.png){ align=right width=150 } - -This module interacts with the SentinelOne DeepVisibility using AWS S3 - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `aws_access_key` | `string` | The identifier of the access key | -| `aws_secret_access_key` | `string` | The secret associated to the access key | -| `aws_region_name` | `string` | The area hosting the AWS resources | - -## Triggers - -### Consume SentinelOne DeepVisibility events from AWS S3 - -Consume SentinelOne DeepVisibility events from S3 objects based on notifications - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`SentinelOneDeepVisibility` v1.0.2** \ No newline at end of file +{!_shared_content/automate/library/sentinelonedeepvisibility.md!} diff --git a/docs/integration/action_library/endpoint/sophos.md b/docs/integration/action_library/endpoint/sophos.md index 2f63a7e2ea..585fbfbd88 100644 --- a/docs/integration/action_library/endpoint/sophos.md +++ b/docs/integration/action_library/endpoint/sophos.md @@ -1,49 +1 @@ -# Sophos - -![Sophos](/assets/playbooks/library/sophos.png){ align=right width=150 } - -Sophos Module - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `oauth2_authorization_url` | `string` | OAuth2 authorization URL | -| `api_host` | `string` | API Url of the Sophos Central API (e.g. 'https://api-{dataRegion}.central.sophos.com') | -| `client_id` | `string` | OAuth2 client identifier | -| `client_secret` | `string` | OAuth2 client secret | - -## Triggers - -### Get Sophos events - -Forward Sophos Events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `exclude_types` | `array` | A list of type to exclude from the pulling | - - -### Query IoC from data lake [BETA] - -Query last IoCs from the Sophos Data lake - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Sophos` v1.11.7** \ No newline at end of file +{!_shared_content/automate/library/sophos.md!} diff --git a/docs/integration/action_library/endpoint/tehtris.md b/docs/integration/action_library/endpoint/tehtris.md index aa60381983..10aba94a0e 100644 --- a/docs/integration/action_library/endpoint/tehtris.md +++ b/docs/integration/action_library/endpoint/tehtris.md @@ -1,34 +1 @@ -# TEHTRIS - -![TEHTRIS](/assets/playbooks/library/tehtris.png){ align=right width=150 } - -[TEHTRIS](https://tehtris.com) is a cybersecurity company offering products designed to protect endpoints against knwon and unknown threats - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `apikey` | `string` | The APIkey to authenticate call to the API | -| `tenant_id` | `string` | The identifier of your tenant (most of the time, your tenant id is a trigram in the url of your TETHRIS instance; eg: https://{tenant_id}.tehtris.net) | -| `alternative_url` | `string` | The alternative url to contact the TEHTRIS instance | - -## Triggers - -### Fetch new events from TEHTRIS - -Get last events from the TEHTRIS XDR platform - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `filter_id` | `['integer', 'string']` | The Filter ID used to retrieve events | - - -## Extra - -Module **`TEHTRIS` v1.13.1** \ No newline at end of file +{!_shared_content/automate/library/tehtris.md!} diff --git a/docs/integration/action_library/endpoint/trellix.md b/docs/integration/action_library/endpoint/trellix.md index df9a665309..d81cea9ffe 100644 --- a/docs/integration/action_library/endpoint/trellix.md +++ b/docs/integration/action_library/endpoint/trellix.md @@ -1,33 +1 @@ -# Trellix - -Trellix has been involved in the detection and prevention of major cybersecurity attacks. It provides hardware, software, and services to investigate cybersecurity attacks, protect against malicious software, and analyze IT security risks - -## Configuration - -This module accepts no configuration. - -## Triggers - -### [ALPHA] Get Trellix ePo events - -Trigger playbook to get Trellix events information - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `client_id` | `string` | Client id to interact with Trellix API | -| `client_secret` | `string` | Client secret to interact with Trellix API | -| `api_key` | `string` | Api key to interact with Trellix API | -| `delay` | `integer` | Delay between running the connector | -| `base_url` | `string` | Base url of the Trellix API | -| `auth_url` | `string` | Url of the authentication server | -| `ratelimit_per_minute` | `integer` | Maximum number of requests per minute | -| `records_per_request` | `integer` | Number of records to fetch per 1 request | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Trellix` v1.2** \ No newline at end of file +{!_shared_content/automate/library/trellix.md!} diff --git a/docs/integration/action_library/endpoint/trend-micro.md b/docs/integration/action_library/endpoint/trend-micro.md index 93c0ca9e3d..2887875221 100644 --- a/docs/integration/action_library/endpoint/trend-micro.md +++ b/docs/integration/action_library/endpoint/trend-micro.md @@ -1,32 +1 @@ -# Trend Micro - -![Trend Micro](/assets/playbooks/library/trend-micro.png){ align=right width=150 } - - - -## Configuration - -This module accepts no configuration. - -## Triggers - -### [BETA] Fetch new logs - -Get last logs from the Trend Micro Email Security platform - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `service_url` | `string` | API service URL | -| `username` | `string` | Trend Micro username | -| `api_key` | `string` | Trend Micro api_key | -| `frequency` | `integer` | Batch frequency in seconds | -| `batch_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Trend Micro` v1.2.0** \ No newline at end of file +{!_shared_content/automate/library/trend-micro.md!} diff --git a/docs/integration/action_library/endpoint/withsecure.md b/docs/integration/action_library/endpoint/withsecure.md index 0fea14f772..d92e1e4758 100644 --- a/docs/integration/action_library/endpoint/withsecure.md +++ b/docs/integration/action_library/endpoint/withsecure.md @@ -1,113 +1 @@ -# WithSecure - -![WithSecure](/assets/playbooks/library/withsecure.png){ align=right width=150 } - -Interact with WithSecure Elements - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `client_id` | `string` | Client identifier | -| `secret` | `string` | API secret to authenticate | - -## Triggers - -### Fetch security events - -Get last security events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - -## Actions - -### Add comment on Incident - -Add comment on Incident. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | Incident identifier to comment. | -| `comment` | `string` | Comment. | - -### Isolate Device From Network - -Isolate a device from network connections. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | Device identifier of the computer to isolate. | -| `message` | `string` | Optional message that is displayed on isolated device. | - -### List Detections For Incident - -List Detections For Incident. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | Incident identifier to list detections. | - -### List devices - -Retrieves devices details. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `organization_id` | `string` | UUID of an organization. If organizationId is missing, default organization of authenticated client is used. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `devices` | `array` | | - -### Release Device From Network Isolation - -Release a device from network isolation. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | Device identifier of the computer to release. | - -### Scan Device For Malware - -Scan Device For Malware. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | Device identifier to scan for malware. | - -### Update status on Incident - -Update status on Incident. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | Incident identifier to comment. | -| `status` | `string` | Status. | -| `resolution` | `string` | Resolution. | - - -## Extra - -Module **`WithSecure` v2.14.0** \ No newline at end of file +{!_shared_content/automate/library/withsecure.md!} diff --git a/docs/integration/action_library/generic/fileutils.md b/docs/integration/action_library/generic/fileutils.md index c205604c80..eb983ca54d 100644 --- a/docs/integration/action_library/generic/fileutils.md +++ b/docs/integration/action_library/generic/fileutils.md @@ -1,61 +1 @@ -# fileutils - -![fileutils](/assets/playbooks/library/fileutils.svg){ align=right width=150 } - -This module exposes action to manipulate files. It extracts data from XML or JSON files. - -## Configuration - -This module accepts no configuration. - -## Actions - -### Read JSON File - -Read the json file and return its content evaluated against specified jsonpath - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the JSON file to read. | -| `file` | `object` | The JSON content to read. | -| `jsonpath` | `string` | JSON path to evaluate against read file content | -| `return_list` | `boolean` | Always return a list of results. Default to false. | -| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `output` | `object` | Content read from file | -| `output_path` | `object` | Path to the file with the content | - -### Read XML File - -Read the XML file and return its content evaluated against specified xpath - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the XML or HTML file to read. | -| `file` | `object` | The XML content to read. | -| `xpath` | `string` | XML path to evaluate against read file content | -| `source_type` | `string` | Source type of the input, it can be XML or HTML | -| `return_list` | `boolean` | Always return a list of results. Default to false. | -| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `output` | `object` | Content read from file | -| `output_path` | `object` | Path to the file with the content | - - -## Extra - -Module **`fileutils` v1.26** \ No newline at end of file +{!_shared_content/automate/library/fileutils.md!} diff --git a/docs/integration/action_library/generic/http.md b/docs/integration/action_library/generic/http.md index 2574e38ec0..fca88286bc 100644 --- a/docs/integration/action_library/generic/http.md +++ b/docs/integration/action_library/generic/http.md @@ -1,66 +1 @@ -# HTTP - -![HTTP](/assets/playbooks/library/http.svg){ align=right width=150 } - -This module exposes actions to request HTTP resources - -## Configuration - -This module accepts no configuration. - -## Actions - -### Download File - -Donwload the given file and save it - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `url` | `string` | Url of the file to download | -| `headers` | `object` | Headers to use when sending the requests. i.e. {"authorization": "Bearer foo"} | -| `verify_ssl` | `boolean` | Wether the SSL certificate must be verified. Default to true. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path on disk | - -### Request URL - -Requests a resource at a specified URL and returns the response as Raw or JSON - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `url` | `string` | Target URL of the HTTP request | -| `headers` | `object` | Headers to use when sending the requests. i.e. {"authorization": "Bearer foo"} | -| `method` | `string` | Method of the HTTP request | -| `data` | `string` | The body to attach to the request | -| `json` | `object` | The JSON to attach as body of the request | -| `params` | `string` | Query string parameters to append to the URL | -| `fail_on_http_error` | `boolean` | Fail when the HTTP query returns in error. Default to true. | -| `verify_ssl` | `boolean` | Wether the SSL certificate must be verified. Default to true. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `reason` | `string` | Textual reason of responded HTTP Status, e.g. 'Not Found' or 'OK'. | -| `status_code` | `integer` | Integer code of responded HTTP Status | -| `url` | `string` | Final URL of the triggered resource | -| `headers` | `object` | Headers used by the server in the response | -| `encoding` | `string` | Encoding of the response | -| `elapsed` | `number` | The amount of seconds elapsed between sending the request and the arrival of the response | -| `text` | `string` | Content of the response in unicode | -| `json` | `object` | JSON-encoded value of the response | - - -## Extra - -Module **`HTTP` v1.118** \ No newline at end of file +{!_shared_content/automate/library/http.md!} diff --git a/docs/integration/action_library/generic/openai.md b/docs/integration/action_library/generic/openai.md index 39638ab939..cd4cddfd28 100644 --- a/docs/integration/action_library/generic/openai.md +++ b/docs/integration/action_library/generic/openai.md @@ -1,38 +1 @@ -# OpenAI - -![OpenAI](/assets/playbooks/library/openai.png){ align=right width=150 } - -The OpenAI API can be applied to virtually any task that involves understanding or generating natural language, code, or images. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | API Key to use to connect to OpenAI API endpoints | - -## Actions - -### Ask GPT - -Use an OpenAI GPT model to provide an answer to any prompt - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `prompt` | `string` | | -| `temperature` | `number` | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | -| `model` | `string` | ID of the model to use. See the model endpoint compatibility table (https://platform.openai.com/docs/models/model-endpoint-compatibility) for details on which models work with the Chat API. | -| `max_tokens` | `integer` | The maximum number of tokens to generate in the chat completion. Default is no limit | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response` | `string` | | - - -## Extra - -Module **`OpenAI` v1.3** \ No newline at end of file +{!_shared_content/automate/library/openai.md!} diff --git a/docs/integration/action_library/generic/rss.md b/docs/integration/action_library/generic/rss.md index a0df50c4d7..64becc5a03 100644 --- a/docs/integration/action_library/generic/rss.md +++ b/docs/integration/action_library/generic/rss.md @@ -1,37 +1 @@ -# RSS - -![RSS](/assets/playbooks/library/rss.svg){ align=right width=150 } - -RSS is a internet standard for web syndication. It usually used by websites to publish frequently updated information. - -This module exposes triggers to subscribe to RSS feeds. - -## Configuration - -This module accepts no configuration. - -## Triggers - -### New Post - -Trigger playbook when new posts are published - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `feeds` | `array` | RSS Feeds configuration | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `source` | `object` | Information about the RSS Feed's source | -| `item` | `object` | RSS Item content | -| `event_path` | `string` | Path to the file containing the RSS event | - - -## Extra - -Module **`RSS` v1.25** \ No newline at end of file +{!_shared_content/automate/library/rss.md!} diff --git a/docs/integration/action_library/generic/sekoia-io.md b/docs/integration/action_library/generic/sekoia-io.md index 9fd6136ce9..05a54dae95 100644 --- a/docs/integration/action_library/generic/sekoia-io.md +++ b/docs/integration/action_library/generic/sekoia-io.md @@ -1,884 +1 @@ -# Sekoia.io - -![Sekoia.io](/assets/playbooks/library/sekoia-io.svg){ align=right width=150 } - -Sekoia.io - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | Sekoia.io API key | -| `base_url` | `string` | Sekoia.io base URL (ex. https://api.sekoia.io) | - -## Triggers - -### Alert Comment Created - -A comment was added to an existing Alert - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `rule_filter` | `string` | Create a run only for alerts matching a rule name | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the alert on disk. | -| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | -| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | -| `short_id` | `string` | Unique short identifier of the Alert. | -| `status` | `object` | Status of the Alert (object containing status description and name). | -| `created_at` | `integer` | Creation date of the Alert (timestamp). | -| `urgency` | `integer` | Current urgency of the Alert. | -| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | -| `alert_type` | `object` | Category of the Alert | -| `rule` | `object` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | - - -### Alert Created - -A new Alert was created in the Operation Center - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `rule_filter` | `string` | Create a run only for alerts matching a rule name | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the alert on disk. | -| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | -| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | -| `short_id` | `string` | Unique short identifier of the Alert. | -| `status` | `object` | Status of the Alert (object containing status description and name). | -| `created_at` | `integer` | Creation date of the Alert (timestamp). | -| `urgency` | `integer` | Current urgency of the Alert. | -| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | -| `alert_type` | `object` | Category of the Alert | -| `rule` | `object` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | - - -### Alert Status Changed - -The status of an existing alert was changed - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `rule_filter` | `string` | Create a run only for alerts matching a rule name | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the alert on disk. | -| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | -| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | -| `short_id` | `string` | Unique short identifier of the Alert. | -| `status` | `object` | Status of the Alert (object containing status description and name). | -| `created_at` | `integer` | Creation date of the Alert (timestamp). | -| `urgency` | `integer` | Current urgency of the Alert. | -| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | -| `alert_type` | `object` | Category of the Alert | -| `rule` | `object` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | - - -### Alert Updated - -An existing alert was updated - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `rule_filter` | `string` | Create a run only for alerts matching a rule name | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the alert on disk. | -| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | -| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | -| `short_id` | `string` | Unique short identifier of the Alert. | -| `status` | `object` | Status of the Alert (object containing status description and name). | -| `created_at` | `integer` | Creation date of the Alert (timestamp). | -| `urgency` | `integer` | Current urgency of the Alert. | -| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | -| `alert_type` | `object` | Category of the Alert | -| `rule` | `object` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | - - -### Manual Trigger - -Webhook Trigger to receive specific Sekoia.io Alerts - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | - - -### Feed Consumption - -Get all non-revoked objects from Sekoia.io Intelligence feed - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `feed_id` | `string` | ID of the Sekoia.io feed to get data from | -| `batch_size_limit` | `integer` | Size of the batch of elements to get from the Sekoia.io feed in one time | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | - - -### Feed IOC Consumption - -Get all valid IOCs from Sekoia.io Intelligence feed - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `feed_id` | `string` | ID of the Sekoia.io feed to get data from | -| `batch_size_limit` | `integer` | Size of the batch of elements to get from the Sekoia.io feed in one time | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | - - -### Any Alert Update - -Create an event for each alert creation or modification - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `rule_filter` | `string` | Create a run only for alerts matching a rule name | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the alert on disk. | -| `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | -| `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | -| `short_id` | `string` | Unique short identifier of the Alert. | -| `status` | `object` | Status of the Alert (object containing status description and name). | -| `created_at` | `integer` | Creation date of the Alert (timestamp). | -| `urgency` | `integer` | Current urgency of the Alert. | -| `entity` | `object` | Description of the entity involved with this Alert (object containing entity UUID and name). | -| `alert_type` | `object` | Category of the Alert | -| `rule` | `object` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | - -## Actions - -### Activate Countermeasure - -Mark as active a countermeasure - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `cm_uuid` | `string` | | -| `comment` | `object` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `action_steps` | `array` | | -| `activated_by_type` | `string` | Type of the profile that activated the countermeasure | -| `comments` | `array` | | -| `activated_at` | `string` | Date the countermeasure was activated | -| `relevance` | `integer` | Relevance of the countermeasure | -| `denied_by_type` | `string` | Type of the profile that denied the countermeasure | -| `status` | `string` | (deprecated) Status of the countermeasure | -| `created_by` | `string` | UUID of profile that created the countermeasure | -| `model_uuid` | `string` | UUID of the model from which this countermeasure has been created | -| `activated_by` | `string` | UUID of profile that activated the countermeasure | -| `description` | `string` | Description of the countermeasure | -| `name` | `string` | Name of the countermeasure | -| `uuid` | `string` | UUID of the countermeasure | -| `duration` | `string` | Estimated duration to apply the countermeasures | -| `alert_uuid` | `string` | UUID of the alert related to the countermeasure | -| `denied_at` | `string` | Date the countermeasure was denied | -| `created_by_type` | `string` | Type of the profile that created the countermeasure | -| `course_of_action` | `object` | (deprecated) STIX2 object course of action | -| `dynamic_relevance` | `integer` | Dynamic relevance of the countermeasure | -| `denied_by` | `string` | UUID of profile that denied the countermeasure | -| `assignee` | `string` | UUID of the profile assigned to the progress of the countermeasure | -| `created_at` | `string` | Date the countermeasure was created | - -### Add IOC to IOC Collection - -Add indicators to an IOC Collection - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `indicators` | `array` | List of indicators to add to an IOC collection | -| `indicators_path` | `string` | Path of the indicators file to add to an IOC collection | -| `ioc_collection_id` | `string` | Identifier of the IOC collection | -| `indicator_type` | `string` | Type of IOC | -| `valid_for` | `integer` | Validity period for the created indicators (in days) | - -### Add attribute to Asset - -Add an attribute to an asset - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | -| `name` | `string` | | -| `value` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `value` | `string` | | -| `uuid` | `string` | | -| `name` | `string` | | - -### Add key to Asset - -Adds a key to an asset - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | -| `name` | `string` | | -| `value` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `value` | `string` | | -| `uuid` | `string` | | -| `name` | `string` | | - -### Attach Alerts to Case - -Attach one or more alerts to a specific case - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `case_uuid` | `string` | | -| `alerts` | `array` | The list of identifiers of alerts to add | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `status` | `string` | | - -### Create Tracker Notification - -Create a notification for a specific tracker - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `data` | `object` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `data` | `object` | | - -### Create Asset - -Create a new asset - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `asset_type` | `object` | | -| `name` | `string` | | -| `criticity` | `integer` | | -| `description` | `string` | | -| `attributes` | `array` | | -| `keys` | `array` | | -| `owners` | `array` | | -| `community_uuid` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `keys` | `array` | | -| `attributes` | `array` | | -| `uuid` | `string` | | -| `name` | `string` | | -| `created_at` | `string` | | -| `criticity` | `object` | | -| `asset_type` | `object` | | -| `updated_at` | `string` | | -| `description` | `string` | | -| `owners` | `array` | | -| `community_uuid` | `string` | | -| `category` | `object` | | - -### Delete an asset - -Delete the requested asset - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | The identifier of the asset | - -### Deny Countermeasure - -Mark as denied a countermeasure - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `cm_uuid` | `string` | | -| `comment` | `object` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `action_steps` | `array` | | -| `activated_by_type` | `string` | Type of the profile that activated the countermeasure | -| `comments` | `array` | | -| `activated_at` | `string` | Date the countermeasure was activated | -| `relevance` | `integer` | Relevance of the countermeasure | -| `denied_by_type` | `string` | Type of the profile that denied the countermeasure | -| `status` | `string` | (deprecated) Status of the countermeasure | -| `created_by` | `string` | UUID of profile that created the countermeasure | -| `model_uuid` | `string` | UUID of the model from which this countermeasure has been created | -| `activated_by` | `string` | UUID of profile that activated the countermeasure | -| `description` | `string` | Description of the countermeasure | -| `name` | `string` | Name of the countermeasure | -| `uuid` | `string` | UUID of the countermeasure | -| `duration` | `string` | Estimated duration to apply the countermeasures | -| `alert_uuid` | `string` | UUID of the alert related to the countermeasure | -| `denied_at` | `string` | Date the countermeasure was denied | -| `created_by_type` | `string` | Type of the profile that created the countermeasure | -| `course_of_action` | `object` | (deprecated) STIX2 object course of action | -| `dynamic_relevance` | `integer` | Dynamic relevance of the countermeasure | -| `denied_by` | `string` | UUID of profile that denied the countermeasure | -| `assignee` | `string` | UUID of the profile assigned to the progress of the countermeasure | -| `created_at` | `string` | Date the countermeasure was created | - -### Get aggregation query - -Make an aggregation query - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `aggregation_type` | `string` | The aggregation type. Can be `avg`, `cardinality`, `max`, `min`, `sum` or `count`. | -| `aggregation_field` | `string` | The field on which apply the aggregation. Should be null only for `count` aggregation. | -| `query_term` | `string` | | -| `earliest_time` | `string` | | -| `latest_time` | `string` | | -| `minutes_per_bucket` | `integer` | | -| `filters` | `array` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `aggregations` | `array` | | -| `anomaly_detection_candidate_score_y_acf1` | `number` | | -| `anomaly_detection_candidate_score_y_acf5` | `number` | | -| `anomaly_detection_candidate_score_seas_acf1` | `number` | | -| `anomaly_detection_candidate` | `boolean` | | - -### Get Alert - -Retrieve the definition of an alert - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | -| `stix` | `boolean` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `urgency` | `object` | | -| `history` | `array` | | -| `is_incident` | `boolean` | | -| `assets` | `array` | | -| `countermeasures` | `array` | | -| `updated_at` | `integer` | | -| `comments` | `array` | | -| `ttps` | `array` | | -| `number_of_unseen_comments` | `integer` | | -| `status` | `object` | | -| `created_by` | `string` | | -| `updated_by` | `string` | | -| `source` | `string` | | -| `community_uuid` | `string` | | -| `number_of_total_comments` | `integer` | | -| `uuid` | `string` | | -| `rule` | `object` | | -| `adversaries` | `array` | | -| `short_id` | `string` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | -| `event_uuids` | `array` | | -| `kill_chain_short_id` | `string` | | -| `similar` | `integer` | | -| `alert_type` | `object` | | -| `details` | `string` | | -| `stix` | `object` | | -| `created_by_type` | `string` | | -| `entity` | `object` | | -| `created_at` | `integer` | | -| `updated_by_type` | `string` | | -| `title` | `string` | | -| `target` | `string` | | - -### Get context - -Get reports from a specific term - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sort` | `string` | | -| `term` | `string` | | - -### Get Event Field Common Values - -Get the most common values of fields observed under a specific query - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Event search query | -| `earliest_time` | `string` | The earliest time of the time range of the search | -| `latest_time` | `string` | The latest time of the time range of the search | -| `fields` | `string` | Fields to compute the most common values (use a coma between fields) | -| `limit` | `number` | Maximum number of events to retrieve | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `fields` | `array` | | - -### Get Events - -Query events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Event search query | -| `earliest_time` | `string` | The earliest time of the time range of the search | -| `latest_time` | `string` | The latest time of the time range of the search | -| `limit` | `number` | Maximum number of events to retrieve | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `events` | `array` | | - -### Create Content Proposal - -Create Content Proposal - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle to upload | -| `bundle_path` | `string` | Path of the STIX Bundle to upload | -| `auto_merge` | `boolean` | Whether or not the uploaded bundle can automatically be merged to the consolidated database | -| `enrich` | `boolean` | Whether or not the uploaded bundle should be enriched | -| `name` | `string` | Name to use for the new content proposal | -| `assigned_to` | `string` | Avatar assigned to the content proposal | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_name` | `string` | | -| `content_proposal_id` | `string` | | - -### Upload Observables - -Upload observables to inthreat - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `observables` | `array` | List of observables or bundle to upload to inThreat | -| `observables_path` | `string` | Path of the observables file to upload inThreat | - -### Search Alerts - -find alerts that match your filters - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `match[community_uuid]` | `string` | | -| `match[entity_name]` | `string` | | -| `match[entity_uuid]` | `string` | | -| `match[status_uuid]` | `string` | | -| `match[status_name]` | `string` | | -| `match[type_category]` | `string` | | -| `match[type_value]` | `string` | | -| `match[source]` | `string` | | -| `match[target]` | `string` | | -| `match[node]` | `string` | | -| `match[stix_object]` | `string` | | -| `match[rule_uuid]` | `string` | | -| `match[rule_name]` | `string` | | -| `match[short_id]` | `string` | | -| `match[uuid]` | `string` | | -| `match[title]` | `string` | | -| `date[created_at]` | `string` | | -| `date[updated_at]` | `string` | | -| `range[urgency]` | `string` | | -| `range[similar]` | `string` | | -| `visible` | `boolean` | | -| `limit` | `integer` | | -| `offset` | `integer` | | -| `stix` | `boolean` | | -| `sort` | `string` | | -| `direction` | `string` | | -| `with_count` | `boolean` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total` | `integer` | | -| `has_more` | `boolean` | | -| `items` | `array` | | - -### List Assets - -Return a list of assets according to the filters - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `limit` | `integer` | The number of assets to return | -| `offset` | `integer` | The position of the first asset to return | -| `match[uuid]` | `string` | Filter assets according to their identifier | -| `match[name]` | `string` | Filter assets according to their name | -| `match[category_name]` | `string` | Filter assets according to their category | -| `match[category_uuid]` | `string` | Filter assets according to their category | -| `match[type_name]` | `string` | Filter assets according to their type | -| `match[type_uuid]` | `string` | Filter assets according to their type | -| `range[criticality]` | `string` | Filter assets according to their criticality | -| `date[created_at]` | `string` | Filter assets according to their creation date | -| `date[updated_at]` | `string` | Filter assets according to their modification date | -| `sort` | `string` | The field to use to sort the list | -| `direction` | `string` | The direction to sort the list | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `items` | `array` | | -| `total` | `integer` | | - -### Edit Alert - -Edit the details of an alert - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | -| `alert_type_category` | `string` | Category of the alert type | -| `alert_type_value` | `string` | Name of the alert type, required if `alert_type_category` is present | -| `details` | `string` | Description of the alert | -| `urgency` | `integer` | The urgency of the alert | -| `kill_chain_short_id` | `string` | The ID of the kill chain step this alert denotes | -| `title` | `string` | Title of the alert | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `urgency` | `object` | | -| `is_incident` | `boolean` | | -| `assets` | `array` | | -| `updated_at` | `integer` | | -| `ttps` | `array` | | -| `number_of_unseen_comments` | `integer` | | -| `status` | `object` | | -| `created_by` | `string` | | -| `updated_by` | `string` | | -| `source` | `string` | | -| `community_uuid` | `string` | | -| `number_of_total_comments` | `integer` | | -| `uuid` | `string` | | -| `rule` | `object` | | -| `adversaries` | `array` | | -| `short_id` | `string` | | -| `first_seen_at` | `string` | | -| `last_seen_at` | `string` | | -| `event_uuids` | `array` | | -| `kill_chain_short_id` | `string` | | -| `similar` | `integer` | | -| `alert_type` | `object` | | -| `details` | `string` | | -| `stix` | `object` | | -| `created_by_type` | `string` | | -| `entity` | `object` | | -| `created_at` | `integer` | | -| `updated_by_type` | `string` | | -| `title` | `string` | | -| `target` | `string` | | - -### Comment Alert - -Attach a new comment on an Alert - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | -| `content` | `string` | Content of the comment | -| `author` | `string` | Author of the comment | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `created_by` | `string` | The identifier of the creator of the comment | -| `content` | `string` | Content of the comment | -| `author` | `string` | Author of the comment | -| `unseen` | `boolean` | | -| `date` | `integer` | | -| `created_by_type` | `string` | The type of the creator of the comment | -| `uuid` | `string` | Identifier of the comment | - -### Create Content Proposal from PDF - -Creates a content proposal with the content extracted from the specified PDF - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | | -| `file` | `string` | | -| `source_ref` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `data` | `object` | | - -### Create Content Proposal from URL - -Creates a content proposal with the content extracted from the specified URL - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `url` | `string` | | -| `source_ref` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `data` | `object` | | - -### Predict Alert State - -Predict the state of an alert - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alert` | `object` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `worth_human_attention` | `boolean` | | - -### Push Events to Intake - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_key` | `string` | Intake Key | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `event` | `object` | Event to push on Intake | -| `event_path` | `string` | File path to the event to push on Intake | -| `events` | `array` | Events to push on Intake | -| `events_path` | `string` | File path to the events to push on Intake | -| `keep_file_after_push` | `boolean` | If set and if the events are supplied through a file, this option keeps the file after the events were sent to the intake | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event_ids` | `array` | | - -### Get CTI Report - -Retrieve the details of a report - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `data` | `string` | | - -### Get Asset - -Return an asset according its identifier - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | The identifier of the asset | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `keys` | `array` | The keys of the asset | -| `attributes` | `array` | The attributes of the asset | -| `uuid` | `string` | | -| `name` | `string` | | -| `created_at` | `string` | | -| `criticity` | `object` | The criticality associated with the asset | -| `asset_type` | `object` | | -| `updated_at` | `string` | | -| `description` | `string` | | -| `owners` | `array` | | -| `community_uuid` | `string` | | -| `category` | `object` | | - -### Update Alert Status - -Triggers an action on an alert to update its status - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | | -| `action_uuid` | `string` | UUID of the action to trigger | -| `comment` | `string` | a comment to describe why the alert status has changed | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `actions` | `array` | | - - -## Extra - -Module **`Sekoia.io` v2.58.2** \ No newline at end of file +{!_shared_content/automate/library/sekoia-io.md!} diff --git a/docs/integration/action_library/generic/utils.md b/docs/integration/action_library/generic/utils.md index 1fc6406d74..aba687e228 100644 --- a/docs/integration/action_library/generic/utils.md +++ b/docs/integration/action_library/generic/utils.md @@ -1,108 +1 @@ -# Utils - -![Utils](/assets/playbooks/library/utils.svg){ align=right width=150 } - -This module exposes utility actions - -## Configuration - -This module accepts no configuration. - -## Actions - -### Read JSON File - -Read the json file and return its content evaluated against specified jsonpath - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the JSON file to read. | -| `file` | `object` | The JSON content to read. | -| `jsonpath` | `string` | JSON path to evaluate against read file content | -| `return_list` | `boolean` | Always return a list of results. Default to false. | -| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `output` | `object` | Content read from file | -| `output_path` | `object` | Path to the file with the content | - -### Read XML File - -Read the XML file and return its content evaluated against specified xpath - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path to the XML or HTML file to read. | -| `file` | `object` | The XML content to read. | -| `xpath` | `string` | XML path to evaluate against read file content | -| `source_type` | `string` | Source type of the input, it can be XML or HTML | -| `return_list` | `boolean` | Always return a list of results. Default to false. | -| `to_file` | `boolean` | Whether the event should be saved in a file or sent directly | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `output` | `object` | Content read from file | -| `output_path` | `object` | Path to the file with the content | - -### Password Generator - -Generate a password securely based on specified parameters - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `password_length` | `integer` | Password length | -| `number_of_digits` | `integer` | Number of digits in the password | -| `number_of_special_characters` | `integer` | Number of special characters in the password | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `password` | `string` | | - -### Get the current time - -Get the current time according to the timezone - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `selectedTimezone` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `epoch` | `integer` | The current datetime represented as an epoch | -| `iso8601` | `string` | The current datetime represented as an iso8601-formatted string | - -### Wait - -Wait - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `duration` | `integer` | Time to wait, in seconds | - - -## Extra - -Module **`Utils` v1.3.1** \ No newline at end of file +{!_shared_content/automate/library/utils.md!} diff --git a/docs/integration/action_library/iam/duo.md b/docs/integration/action_library/iam/duo.md index 4644a405c5..0118b2d4b2 100644 --- a/docs/integration/action_library/iam/duo.md +++ b/docs/integration/action_library/iam/duo.md @@ -1,33 +1 @@ -# Duo - -![Duo](/assets/playbooks/library/duo.png){ align=right width=150 } - -Duo is a Cisco company offering solutions for strong authentication with multi-factor authentication (MFA), single sign-on (SSO), remote access or device trusting. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hostname` | `string` | Duo Admin API hostname | -| `integration_key` | `string` | Duo Admin API integration key | -| `secret_key` | `string` | Duo Admin API secret key | - -## Triggers - -### Fetch new logs from Duo - -Get last logs from the Duo platform - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Duo` v1.3.1** \ No newline at end of file +{!_shared_content/automate/library/duo.md!} diff --git a/docs/integration/action_library/iam/intra_id.md b/docs/integration/action_library/iam/intra_id.md index af9d40b21a..3e40b39e58 100644 --- a/docs/integration/action_library/iam/intra_id.md +++ b/docs/integration/action_library/iam/intra_id.md @@ -1,156 +1 @@ -# Microsoft Entra ID (Azure AD) - -![Microsoft Entra ID (Azure AD) ](/assets/playbooks/library/entra-id.svg){ align=right width=150 } - -[Microsoft Entra ID (Azure AD)](https://azure.microsoft.com/en-us/services/active-directory/#overview) is an enterprise identity service that provides single sign-on, multifactor authentication, and conditional access to guard against 99.9 percent of cybersecurity attacks. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `tenant_id` | `string` | ID of the Microsoft Entra ID (Azure AD) tenant | -| `client_id` | `string` | Client ID. An application needs to be created in the Azure Portal and assigned relevent permissions. Its Client ID should then be used in this configuration. | -| `client_secret` | `string` | Client Secret associated with the registered application. Admin Consent has to be granted to the application for it to work. | -| `username` | `string` | The username of the delegated account used for some administrative tasks (eg: reset password) | -| `password` | `string` | The password of the delegated account used for some administrative tasks (eg: reset password) | - -## Actions - -### Delete app - -Delete an app in Microsoft Entra ID (Azure AD) . Requires the Application.ReadWrite.OwnedBy or Application.ReadWrite.All. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | Object ID of the app. | - -### Disable User - -Disable an Microsoft Entra ID (Azure AD) user. Requires the User.ReadWrite.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - -### Enable User - -Enable an Microsoft Entra ID (Azure AD) user. Requires the User.ReadWrite.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - -### Get SignIns - -Get the last sign ins of an Microsoft Entra ID (Azure AD) user. Requires the AuditLog.Read.All and Directory.Read.All permissions. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `signIns` | `array` | | - -### Get User - -Get information about an Microsoft Entra ID (Azure AD) user. Requires the User.Read.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | | -| `accountEnabled` | `boolean` | | -| `assignedLicenses` | `array` | | -| `city` | `string` | | -| `companyName` | `string` | | -| `country` | `string` | | -| `createdDateTime` | `string` | | -| `creationType` | `string` | | -| `deletedDateTime` | `string` | | -| `department` | `string` | | -| `displayName` | `string` | | -| `identities` | `array` | | -| `jobTitle` | `string` | | -| `lastPasswordChangeDateTime` | `string` | | -| `mail` | `string` | | -| `mobilePhone` | `string` | | -| `userPrincipalName` | `string` | | - -### Get User Authentication Methods - -Get information about an user's authentication methods (such as their MFA status). Requires the UserAuthenticationMethod.Read.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | | -| `userPrincipalName` | `string` | | -| `userDisplayName` | `string` | | -| `isSsprRegistered` | `boolean` | | -| `isSsprEnabled` | `boolean` | | -| `isSsprCapable` | `boolean` | | -| `isMfaRegistered` | `boolean` | | -| `isMfaCapable` | `boolean` | | -| `isPasswordlessCapable` | `boolean` | | -| `methodsRegistered` | `array` | | -| `defaultMfaMethod` | `string` | | - -### Reset User Password - -Reset a user's password. You will need UserAuthenticationMethod.ReadWrite.All deleguated permission. And to disable the MFA authentication in your Microsoft Entra ID (Azure AD) - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | -| `userNewPassword` | `string` | New password, required to reset the old one of course. | - -### Revoke Sign in - -Invalidates all the refresh tokens issued to applications for a user. Requires the User.ReadWrite.All or Directory.ReadWrite.All permissions. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the app. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - - -## Extra - -Module **`Microsoft Entra ID (Azure AD) ` v2.5.4** \ No newline at end of file +{!_shared_content/automate/library/intra_id.md!} diff --git a/docs/integration/action_library/iam/jumpcloud-directory-insights.md b/docs/integration/action_library/iam/jumpcloud-directory-insights.md index e9468781cd..7a08b125d6 100644 --- a/docs/integration/action_library/iam/jumpcloud-directory-insights.md +++ b/docs/integration/action_library/iam/jumpcloud-directory-insights.md @@ -1,33 +1 @@ -# Jumpcloud Directory Insights - -![Jumpcloud Directory Insights](/assets/playbooks/library/jumpcloud-directory-insights.png){ align=right width=150 } - -Directory Insights allows you to read event logs, view activity in your directory, and monitor user authentications to the console, RADIUS, LDAP, and SSO apps. Directory Insights analyzes the audit trails that lead to critical events so you know the what, where, when, how, and who of your directory activities. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | Jumpcloud Directory Insights API Base URL | -| `apikey` | `string` | The API key to authenticate calls to the Jumpcloud Directory Insights API | - -## Triggers - -### [BETA] Jumpcloud Directory Insights Connector - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_server` | `string` | | -| `intake_key` | `string` | | -| `chunk_size` | `integer` | | -| `frequency` | `integer` | | -| `service` | `string` | Comma separated list of Jumpcloud services logs to collect | - - -## Extra - -Module **`Jumpcloud Directory Insights` v1.6.1** \ No newline at end of file +{!_shared_content/automate/library/jumpcloud-directory-insights.md!} diff --git a/docs/integration/action_library/iam/microsoft-active-directory.md b/docs/integration/action_library/iam/microsoft-active-directory.md index a8f1941d4e..258dc0b239 100644 --- a/docs/integration/action_library/iam/microsoft-active-directory.md +++ b/docs/integration/action_library/iam/microsoft-active-directory.md @@ -1,54 +1 @@ -# Microsoft Active Directory - -![Microsoft Active Directory](/assets/playbooks/library/microsoft-active-directory.png){ align=right width=150 } - -Microsoft Active Directory (Microsoft AD), is a directory service developed by Microsoft for Windows domain networks. It is a centralized system that stores information about networked resources and makes these resources easily accessible to users and administrators. Active Directory provides services for authentication and authorization, organizing and managing resources, such as users, computers, and devices, in a networked environment. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `servername` | `string` | IP or name of your host | -| `admin_username` | `string` | The username of the account that have necessary permisions to change passwords (e.g admin@example.com ) | -| `admin_password` | `string` | The dedicated password of the account | - -## Actions - -### Disable User - -Disable a Microsoft Active Directory user. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `username` | `string` | Target user | -| `basedn` | `string` | The starting point an LDAP server uses when searching for users authentication within your Directory. (e.g DC=example-domain,DC=com) | - -### Enable User - -Enable a Microsoft Active Directory user. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `username` | `string` | Target user | -| `basedn` | `string` | he starting point an LDAP server uses when searching for users authentication within your Directory. (e.g DC=example-domain,DC=com) | - -### Reset User Password - -Reset a user's password. You will need a strong password for that otherwise enable the password policy - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `username` | `string` | Target user | -| `basedn` | `string` | The starting point an LDAP server uses when searching for users authentication within your Directory. (e.g DC=example-domain,DC=com) | -| `new_password` | `string` | New password, required to reset the old one of course. | - - -## Extra - -Module **`Microsoft Active Directory` v1.0.0** \ No newline at end of file +{!_shared_content/automate/library/microsoft-active-directory.md!} diff --git a/docs/integration/action_library/iam/microsoft-entra-id.md b/docs/integration/action_library/iam/microsoft-entra-id.md index e00764d0c8..21fffd31bb 100644 --- a/docs/integration/action_library/iam/microsoft-entra-id.md +++ b/docs/integration/action_library/iam/microsoft-entra-id.md @@ -1,156 +1 @@ -# Microsoft Entra ID - -![Microsoft Entra ID](/assets/playbooks/library/microsoft-entra-id.svg){ align=right width=150 } - -[Microsoft Entra ID (formely Azure Active Directory)](https://azure.microsoft.com/en-us/services/active-directory/#overview) is an enterprise identity service that provides single sign-on, multifactor authentication, and conditional access to guard against 99.9 percent of cybersecurity attacks. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `tenant_id` | `string` | ID of the Microsoft Entra ID tenant | -| `client_id` | `string` | Client ID. An application needs to be created in the Azure Portal and assigned relevent permissions. Its Client ID should then be used in this configuration. | -| `client_secret` | `string` | Client Secret associated with the registered application. Admin Consent has to be granted to the application for it to work. | -| `username` | `string` | The username of the delegated account used for some administrative tasks (eg: reset password) | -| `password` | `string` | The password of the delegated account used for some administrative tasks (eg: reset password) | - -## Actions - -### Delete app - -Delete an app in azure AD. Requires the Application.ReadWrite.OwnedBy or Application.ReadWrite.All. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | Object ID of the app. | - -### Disable User - -Disable an Azure Active Directory user. Requires the User.ReadWrite.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - -### Enable User - -Enable an Azure Active Directory user. Requires the User.ReadWrite.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - -### Get SignIns - -Get the last sign ins of an Azure AD user. Requires the AuditLog.Read.All and Directory.Read.All permissions. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `signIns` | `array` | | - -### Get User - -Get information about an Azure Active Directory user. Requires the User.Read.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | | -| `accountEnabled` | `boolean` | | -| `assignedLicenses` | `array` | | -| `city` | `string` | | -| `companyName` | `string` | | -| `country` | `string` | | -| `createdDateTime` | `string` | | -| `creationType` | `string` | | -| `deletedDateTime` | `string` | | -| `department` | `string` | | -| `displayName` | `string` | | -| `identities` | `array` | | -| `jobTitle` | `string` | | -| `lastPasswordChangeDateTime` | `string` | | -| `mail` | `string` | | -| `mobilePhone` | `string` | | -| `userPrincipalName` | `string` | | - -### Get User Authentication Methods - -Get information about an user's authentication methods (such as their MFA status). Requires the UserAuthenticationMethod.Read.All permission. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | | -| `userPrincipalName` | `string` | | -| `userDisplayName` | `string` | | -| `isSsprRegistered` | `boolean` | | -| `isSsprEnabled` | `boolean` | | -| `isSsprCapable` | `boolean` | | -| `isMfaRegistered` | `boolean` | | -| `isMfaCapable` | `boolean` | | -| `isPasswordlessCapable` | `boolean` | | -| `methodsRegistered` | `array` | | -| `defaultMfaMethod` | `string` | | - -### Reset User Password - -Reset a user's password. You will need UserAuthenticationMethod.ReadWrite.All deleguated permission. And to disable the MFA authentication in your azure AD - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | -| `userNewPassword` | `string` | New password, required to reset the old one of course. | - -### Revoke Sign in - -Invalidates all the refresh tokens issued to applications for a user. Requires the User.ReadWrite.All or Directory.ReadWrite.All permissions. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | ID of the app. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | - - -## Extra - -Module **`Microsoft Entra ID` v2.7** \ No newline at end of file +{!_shared_content/automate/library/microsoft-entra-id.md!} diff --git a/docs/integration/action_library/iam/okta.md b/docs/integration/action_library/iam/okta.md index 66bc3e564b..9bba4f0ae9 100644 --- a/docs/integration/action_library/iam/okta.md +++ b/docs/integration/action_library/iam/okta.md @@ -1,35 +1 @@ -# Okta - -![Okta](/assets/playbooks/library/okta.png){ align=right width=150 } - -[Okta](https://www.okta.com/) is an entreprise-grade, identity management service compatible with cloud apps as well as many on-premises applications - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | The url to your Okta tenant | -| `apikey` | `string` | The APIkey to authenticate call to the API | - -## Triggers - -### Fetch new audit logs from OKTA - -Get last system logs from the OKTA platform - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `filter` | `string` | [Filter Expression](https://developer.okta.com/docs/reference/api/system-log/#expression-filter) that filters the results | -| `q` | `string` | Filters the log events results by one or more exact [keywords](https://developer.okta.com/docs/reference/api/system-log/#keyword-filter) | -| `ratelimit_per_minute` | `integer` | The number of requests allowed to the API in one minute for the token | - - -## Extra - -Module **`Okta` v2.4.1** \ No newline at end of file +{!_shared_content/automate/library/okta.md!} diff --git a/docs/integration/action_library/network/broadcom-cloud-secure-web-gateway.md b/docs/integration/action_library/network/broadcom-cloud-secure-web-gateway.md index 3b070a0d26..1b3fafdbc5 100644 --- a/docs/integration/action_library/network/broadcom-cloud-secure-web-gateway.md +++ b/docs/integration/action_library/network/broadcom-cloud-secure-web-gateway.md @@ -1,31 +1 @@ -# Broadcom Cloud Secure Web Gateway - -![Broadcom Cloud Secure Web Gateway](/assets/playbooks/library/broadcom-cloud-secure-web-gateway.png){ align=right width=150 } - -Broadcom Cloud Secure Web Gateway is a cloud-native security solution providing advanced threat protection, content filtering, and data loss prevention, ensuring secure internet access and compliance for organizations with flexible deployment options and comprehensive web security features. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `username` | `string` | Username to do authentication on remote server | -| `password` | `string` | Password to do authentication on remote server | - -## Triggers - -### [BETA] Get Broadcom Cloud SWG events - -Trigger playbook to get Broadcom Cloud SWG events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | - - -## Extra - -Module **`Broadcom Cloud Secure Web Gateway` v1.0.0** \ No newline at end of file +{!_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md!} diff --git a/docs/integration/action_library/network/cato-networks.md b/docs/integration/action_library/network/cato-networks.md index 6d07ba6f50..f541376450 100644 --- a/docs/integration/action_library/network/cato-networks.md +++ b/docs/integration/action_library/network/cato-networks.md @@ -1,30 +1 @@ -# Cato Networks - -![Cato Networks](/assets/playbooks/library/cato-networks.png){ align=right width=150 } - -Cato Networks is a software company providing solutions to protect cloud applications. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | Api key to interact with Cato API | -| `account_id` | `string` | Account Id (4 digits) to work with Cato API | - -## Triggers - -### Collect Cato SASE events - -Trigger playbook to get Cato SASE information - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Cato Networks` v1.3** \ No newline at end of file +{!_shared_content/automate/library/cato-networks.md!} diff --git a/docs/integration/action_library/network/check-point.md b/docs/integration/action_library/network/check-point.md index 911747c664..1c16939817 100644 --- a/docs/integration/action_library/network/check-point.md +++ b/docs/integration/action_library/network/check-point.md @@ -1,35 +1 @@ -# Check Point - -![Check Point](/assets/playbooks/library/check-point.png){ align=right width=150 } - -Check Point Harmony is the industry’s first unified security solution for users devices and access. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `client_id` | `string` | Client Id to interact with Checkpoint API | -| `secret_key` | `string` | Secret key to work with Checkpoint API | -| `authentication_url` | `string` | Authentication url to authenticate Checkpoint API | -| `base_url` | `string` | Base url to interact with Checkpoint API | - -## Triggers - -### [BETA] Collect Checkpoint Harmony Mobile events - -Trigger playbook to get Checkpoint Harmony Mobile events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ratelimit_per_minute` | `integer` | Maximum number of requests per minute | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `frequency` | `integer` | Batch frequency in seconds | - - -## Extra - -Module **`Check Point` v1.1.7** \ No newline at end of file +{!_shared_content/automate/library/check-point.md!} diff --git a/docs/integration/action_library/network/darktrace.md b/docs/integration/action_library/network/darktrace.md index 9f88102bdb..a8cd8b9af2 100644 --- a/docs/integration/action_library/network/darktrace.md +++ b/docs/integration/action_library/network/darktrace.md @@ -1,34 +1 @@ -# Darktrace - -![Darktrace](/assets/playbooks/library/darktrace.png){ align=right width=150 } - -Darktrace monitors and protects all people and digital assets across your entire ecosystem. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_url` | `string` | The url of the Darktrace appliance | -| `public_key` | `string` | The public key to the Darktrace API | -| `private_key` | `string` | The private key to the Darktrace API | - -## Triggers - -### [BETA] Fetch new logs from Darktrace - -Get the newest logs from Darktrace Threat Visualizer - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `verify_certificate` | `boolean` | Is the server certificate verified | -| `ratelimit_per_minute` | `integer` | The number of requests allowed to the API in one minute | - - -## Extra - -Module **`Darktrace` v1.5.1** \ No newline at end of file +{!_shared_content/automate/library/darktrace.md!} diff --git a/docs/integration/action_library/network/extrahop.md b/docs/integration/action_library/network/extrahop.md index a19783f412..02929d09fb 100644 --- a/docs/integration/action_library/network/extrahop.md +++ b/docs/integration/action_library/network/extrahop.md @@ -1,33 +1 @@ -# ExtraHop - -![ExtraHop](/assets/playbooks/library/extrahop.png){ align=right width=150 } - -ExtraHop is a leading provider of network detection and response (NDR) solutions. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | API base URL | -| `client_id` | `string` | Client ID | -| `client_secret` | `string` | Client Secret | - -## Triggers - -### [BETA] Fetch new alerts from ExtraHop Reveal(x) 360 - -Get last logs from the ExtraHop Reveal(x) 360 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`ExtraHop` v0.1.0** \ No newline at end of file +{!_shared_content/automate/library/extrahop.md!} diff --git a/docs/integration/action_library/network/fortigate-firewalls.md b/docs/integration/action_library/network/fortigate-firewalls.md index db94f5117c..49fc2e4df8 100644 --- a/docs/integration/action_library/network/fortigate-firewalls.md +++ b/docs/integration/action_library/network/fortigate-firewalls.md @@ -1,55 +1 @@ -# Fortigate Firewalls - -![Fortigate Firewalls](/assets/playbooks/library/fortigate-firewalls.svg){ align=right width=150 } - -Fortigate is a firewall appliance from [Fortinet](http://www.fortinet.com/) with anti-spam and anti-virus features. Initially distributed as a physical, rack-mounted product, Fortigate can now be installed as a virtual appliance that could run on virtualization platforms such as VMware vSphere - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `firewalls` | `array` | | - -## Actions - -### Post Fortigate Address Group - -Add a new Address Group to a Fortigate Firewall - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | The name of the Address Group. | -| `member` | `array` | The Object LIST to be added in the Address Group (can be an IP address, a FQDN or event a Group), for example Address1 | - -### Post Fortigate FQDN Address - -Add a new FQDN object to a Fortigate Firewall - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | The name of the Address. | -| `fqdn` | `string` | The FQDN to be blocked (for ex: 'example.domain.com'). | -| `associated-interface` | `string` | The associated interface of the firewall leave blank for 'Any' (default: Any). | -| `comment` | `string` | A commentary to be displayed in the Fortigate GUI (default none). | - -### Post Fortigate IP Address - -Add a new IP Address object to a Fortigate Firewall - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | The name of the Address. | -| `ip` | `string` | The IPv4 linked with the Address to be blocked, (for ex: '1.1.1.1'). | -| `associated-interface` | `string` | The associated interface of the firewall leave blank for 'Any' (default: Any). | -| `comment` | `string` | A commentary to be displayed in the Fortigate GUI (default none). | - - -## Extra - -Module **`Fortigate Firewalls` v1.24** \ No newline at end of file +{!_shared_content/automate/library/fortigate-firewalls.md!} diff --git a/docs/integration/action_library/network/fortigate-fw.md b/docs/integration/action_library/network/fortigate-fw.md index 4dab81cfd7..578aca247e 100644 --- a/docs/integration/action_library/network/fortigate-fw.md +++ b/docs/integration/action_library/network/fortigate-fw.md @@ -1,98 +1 @@ -# fortigate_fw - - - -Fortigate is a firewall appliance from [Fortinet](http://www.fortinet.com/) with anti-spam and anti-virus features. Initially distributed as a physical, rack-mounted product, Fortigate can now be installed as a virtual appliance that could run on virtualization platforms such as VMware vSphere - -## Configuration - - - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| firewalls | array | | - - - - - - - - -## Actions - -### Post Fortigate Address Group - -Add a new Address Group to a Fortigate Firewall - - - -#### Arguments - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| name | string | The name of the Address Group. | -| member | array | The Object LIST to be added in the Address Group (can be an IP address, a FQDN or event a Group), for example Address1 | - - - - - - - - - -### Post Fortigate FQDN Address - -Add a new FQDN object to a Fortigate Firewall - - - -#### Arguments - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| name | string | The name of the Address. | -| fqdn | string | The FQDN to be blocked (for ex: 'example.domain.com'). | -| associated-interface | string | The associated interface of the firewall leave blank for 'Any' (default: Any). | -| comment | string | A commentary to be displayed in the Fortigate GUI (default none). | - - - - - - - - - -### Post Fortigate IP Address - -Add a new IP Address object to a Fortigate Firewall - - - -#### Arguments - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| name | string | The name of the Address. | -| ip | string | The IPv4 linked with the Address to be blocked, (for ex: '1.1.1.1'). | -| associated-interface | string | The associated interface of the firewall leave blank for 'Any' (default: Any). | -| comment | string | A commentary to be displayed in the Fortigate GUI (default none). | - - - - - - - - - - - - - - -## Extra - -Module **fortigate_fw v.1.15** \ No newline at end of file +{!_shared_content/automate/library/fortigate-fw.md!} diff --git a/docs/integration/action_library/network/imperva.md b/docs/integration/action_library/network/imperva.md index 2ddcc05ee1..9675cdae6e 100644 --- a/docs/integration/action_library/network/imperva.md +++ b/docs/integration/action_library/network/imperva.md @@ -1,41 +1 @@ -# Imperva - -![Imperva](/assets/playbooks/library/imperva.png){ align=right width=150 } - -Imperva Module - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | Imperva API base URL | -| `api_id` | `string` | Imperva API ID | -| `api_key` | `string` | Imperva API key | -| `keys` | `object` | Encryption keys | - -## Triggers - -### Imperva WAF logs - -Fetch Imperva WAF logs - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds, default 2s | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_key` | `string` | Intake key to use when sending events | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `logs` | `array` | A list of logs. | -| `logs_path` | `string` | The filename containing the logs | - - -## Extra - -Module **`Imperva` v1.16** \ No newline at end of file +{!_shared_content/automate/library/imperva.md!} diff --git a/docs/integration/action_library/network/lacework.md b/docs/integration/action_library/network/lacework.md index 26d276f475..b31799c86b 100644 --- a/docs/integration/action_library/network/lacework.md +++ b/docs/integration/action_library/network/lacework.md @@ -1,35 +1 @@ -# Lacework - -![Lacework](/assets/playbooks/library/lacework.png){ align=right width=150 } - -[Lacework](https://www.lacework.com/) is a cybersecurity company specializing in cloud security and compliance, offering automated threat detection and response solutions for modern cloud environments. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `key_id` | `string` | The KeyId of your API Key | -| `secret` | `string` | The secret of your API Key | -| `account` | `string` | The account of your API Key (e.g: `YourLaceworkTenant.lacework.net`) | - -## Triggers - -### [BETA] Fetch new logs from Lacework - -Get last system logs from the Lacework platform - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `filter` | `string` | [Filter Expression](https://docs.lacework.net/console/filter-alerts) that filters the results | -| `ratelimit_per_hour` | `integer` | The number of requests allowed to the API in one hour for the token | - - -## Extra - -Module **`Lacework` v0.1.5** \ No newline at end of file +{!_shared_content/automate/library/lacework.md!} diff --git a/docs/integration/action_library/network/netskope.md b/docs/integration/action_library/network/netskope.md index e9958caa75..63abf9723b 100644 --- a/docs/integration/action_library/network/netskope.md +++ b/docs/integration/action_library/network/netskope.md @@ -1,48 +1 @@ -# Netskope - -![Netskope](/assets/playbooks/library/netskope.png){ align=right width=150 } - -[Netskope](https://www.netskope.com/) is a cybersecurity company, providing solutions to protect data in cloud apps and network security applying zero trust principles. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | API base URL | - -## Triggers - -### Fetch new transaction events from Netskope - -Connect to the Google Cloud Pub/Sub Lite topic and return Netskope events - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `credentials` | `object` | Credentials to use. You can find them in the credentials file | -| `intake_key` | `string` | Intake key to use when sending events | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `cloud_region` | `string` | Cloud Region | -| `zone_id` | `string` | Zone ID | -| `subscription_id` | `string` | Subscription ID | -| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | - - -### Fetch new events from Netskope - -Get last events from the Netskope platform through the API v2 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_token` | `string` | The API token | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `consumer_group` | `string` | A unique name to track event consumption (default empty for auto-generated one) | - - -## Extra - -Module **`Netskope` v1.9.3** \ No newline at end of file +{!_shared_content/automate/library/netskope.md!} diff --git a/docs/integration/action_library/network/skyhigh-security-secure-web-gateway-swg.md b/docs/integration/action_library/network/skyhigh-security-secure-web-gateway-swg.md index a12dbb34b0..02c85fdf23 100644 --- a/docs/integration/action_library/network/skyhigh-security-secure-web-gateway-swg.md +++ b/docs/integration/action_library/network/skyhigh-security-secure-web-gateway-swg.md @@ -1,33 +1 @@ -# Skyhigh Security Secure Web Gateway (SWG) - -![Skyhigh Security Secure Web Gateway (SWG)](/assets/playbooks/library/skyhigh-security-secure-web-gateway-swg.png){ align=right width=150 } - -Skyhigh Security Secure Web Gateway (SWG) - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Fetch events from Skyhigh Security Secure Web Gateway (SWG) API - -Fetch events from Skyhigh Security Secure Web Gateway (SWG) API - -#### Arguments - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `customer_id` | `integer` | Customer ID (e.g. 1234567890) | -| `account_name` | `string` | Username | -| `account_password` | `string` | Password associated with the account | -| `frequency` | `integer` | Batch frequency in seconds | -| `api_domain_name` | `string` | Domain name to use (Europe :eu.msg.mcafeesaas.com, North America: us.msg.mcafeesaas.com) | -| `intake_server` | `string` | Address of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | - - -## Extra - -Module **`Skyhigh Security Secure Web Gateway (SWG)` v1.0.6** \ No newline at end of file +{!_shared_content/automate/library/skyhigh-security-secure-web-gateway-swg.md!} diff --git a/docs/integration/action_library/network/skyhigh-security.md b/docs/integration/action_library/network/skyhigh-security.md index 62f4a4ff93..837752be55 100644 --- a/docs/integration/action_library/network/skyhigh-security.md +++ b/docs/integration/action_library/network/skyhigh-security.md @@ -1,35 +1 @@ -# Skyhigh Security - -![Skyhigh Security](/assets/playbooks/library/skyhigh-security.png){ align=right width=150 } - -Skyhigh Security - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Fetch events from Skyhigh Security Secure Web Gateway (SWG) API - -Fetch events from Skyhigh Security Secure Web Gateway (SWG) API - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `customer_id` | `integer` | Customer ID (e.g. 1234567890) | -| `account_name` | `string` | Username | -| `account_password` | `string` | Password associated with the account | -| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 5 minutes ago) | -| `start_time` | `integer` | The number of hours from which events should be queried. | -| `frequency` | `integer` | Batch frequency in seconds | -| `api_domain_name` | `string` | Domain name to use (Europe :eu.msg.mcafeesaas.com, North America: us.msg.mcafeesaas.com) | -| `intake_server` | `string` | Address of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `chunk_size` | `integer` | The size of chunks for the batch processing (max is 1000) | - - -## Extra - -Module **`Skyhigh Security` v1.10** \ No newline at end of file +{!_shared_content/automate/library/skyhigh-security.md!} diff --git a/docs/integration/action_library/network/ubika.md b/docs/integration/action_library/network/ubika.md index d47dc9e840..dc5c52b17f 100644 --- a/docs/integration/action_library/network/ubika.md +++ b/docs/integration/action_library/network/ubika.md @@ -1,32 +1 @@ -# Ubika - -![Ubika](/assets/playbooks/library/ubika.png){ align=right width=150 } - -Ubika is a cybersecurity company offering products to protect web applications and APIs - -## Configuration - -This module accepts no configuration. - -## Triggers - -### [BETA] Fetch new alerts from Ubika Cloud Protector - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `provider` | `string` | Id of cirrus provider | -| `tenant` | `string` | Id of cirrus tenant | -| `token` | `string` | API token | - - -## Extra - -Module **`Ubika` v0.1.1** \ No newline at end of file +{!_shared_content/automate/library/ubika.md!} diff --git a/docs/integration/action_library/network/vade-cloud.md b/docs/integration/action_library/network/vade-cloud.md index 718399c8ff..4a920a9a1a 100644 --- a/docs/integration/action_library/network/vade-cloud.md +++ b/docs/integration/action_library/network/vade-cloud.md @@ -1,33 +1 @@ -# Vade Cloud - -![Vade Cloud](/assets/playbooks/library/vade-cloud.png){ align=right width=150 } - - - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hostname` | `string` | Vade Cloud API hostname | -| `login` | `string` | Vade Cloud Email | -| `password` | `string` | Vade Cloud password | - -## Triggers - -### [BETA] Fetch new logs from Vade Cloud - -Get last logs from the Vade Cloud platform - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `chunk_size` | `integer` | The size of chunks for the batch processing | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | - - -## Extra - -Module **`Vade Cloud` v1.4.0** \ No newline at end of file +{!_shared_content/automate/library/vade-cloud.md!} diff --git a/docs/integration/action_library/network/zscaler.md b/docs/integration/action_library/network/zscaler.md index f379ff2e84..206f81bf18 100644 --- a/docs/integration/action_library/network/zscaler.md +++ b/docs/integration/action_library/network/zscaler.md @@ -1,52 +1 @@ -# Zscaler - -![Zscaler](/assets/playbooks/library/zscaler.png){ align=right width=150 } - -Integrates with Zscaler - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | Zscaler Base Url (ex: zscalerone.net, zscaler.net, zscloud.net) | -| `username` | `string` | Email ID of the API admin | -| `password` | `string` | Password for the API admin | -| `api_key` | `string` | API key | - -## Actions - -### Zscaler Block IoC - -Block the provided IOCs: IP / domain - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `IoC` | `string` | The value of the IoC to block | - -### Zscaler Push IOCs for detection - -Block the provided IOCs: IP / domain / Url - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | -| `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | - -### Zscaler UnBlock IoC - -UnBlock the provided IOCs: IP / domain - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `IoC` | `string` | The value of the IoC to unblock | - - -## Extra - -Module **`Zscaler` v0.1.3** \ No newline at end of file +{!_shared_content/automate/library/zscaler.md!} diff --git a/docs/integration/action_library/threat_intelligence/binaryedge-s-api.md b/docs/integration/action_library/threat_intelligence/binaryedge-s-api.md index 3bcd84277e..6f377e0960 100644 --- a/docs/integration/action_library/threat_intelligence/binaryedge-s-api.md +++ b/docs/integration/action_library/threat_intelligence/binaryedge-s-api.md @@ -1,503 +1 @@ -# BinaryEdge's API - -![BinaryEdge's API](/assets/playbooks/library/binaryedge-s-api.png){ align=right width=150 } - -[BinaryEdge](https://www.binaryedge.io/) is Cybersecurity/Data Science company that focuses its effort on acquiring, analyzing and classifying internet wide data. We have developed a platform - [40fy](https://app.binaryedge.io/) that allows us and our customers to gather several data points from exposed servers online. - - The API provides access to that scanning platform, for your own usage, along with access to our curated databases so that you can do querying and analytics on our worldwide (constantly updated) collected data. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | Binary Edge's API key | -| `base_url` | `string` | Binary Edge's base URL (ex. https://api.binaryedge.io/v2/) | - -## Actions - -### List CVEs - -Get list of CVEs that migh affect a specific IP. - - **Note**: Available for paid subscriptions only. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `events` | `object` | | - -### Search dataleaks by email - -Allows you to search across multiple data breaches to see if any of your email addresses has been compromised. If you are affected, we recommend you change your password on the respective services. - - Verify how many dataleaks affected an specific email address. - - **Note:** Available for paid subscriptions only. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `email` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total` | `integer` | | -| `events` | `array` | | -| `query` | `string` | | - -### Get dataleaks trackers - -Get all available information about the dataleaks our platform keeps track. - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sktorrent` | `object` | | -| `samsclub` | `object` | | -| `yandex` | `object` | | - -### Search dataleaks by organization - -Verify how many emails are affected by dataleaks for a specific domain. We don't provide the list of affected emails. - - **Note:** Available for paid subscriptions only. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total` | `integer` | | -| `groups` | `array` | | -| `query` | `string` | | - -### List DNS targets by domain - -Return list of known DNS results for the target domain. Possible types of records currently available: - - -A, AAAA, NS, MX - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `total` | `integer` | | -| `events` | `array` | | - -### List domains by IP - -Return records that have the specified IP address in their A or AAAA records. - - **Nota**: Available for paid subscriptions only. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `total` | `integer` | | -| `events` | `array` | | - -### Search domains - -List of Domains/DNS data based on a Query. Can be used with specific parameters and/or full-text search. Possible types of records currently available: - - -A, AAAA, NS, MX, CNAME, TXT - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `total` | `integer` | | -| `events` | `array` | | - -### List subdomains - -Return list of subdomains known from the target domains. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `total` | `integer` | | -| `events` | `array` | | - -### List screenshots - -Details about Remote Desktops found on an Host. List of screenshots and details extracted from them for the specified host, including OCR and whether faces were found or not, with data up to 2 months. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `pagesize` | `integer` | | -| `query` | `string` | | -| `total` | `integer` | | -| `page` | `integer` | | -| `events` | `array` | | - -### Search screenshots - -Remote Desktops based on a Query. List of screenshots and details extracted from them for the given query, including OCR and whether faces were found or not. Can be used with specific parameters and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `pagesize` | `integer` | | -| `query` | `string` | | -| `total` | `integer` | | -| `page` | `integer` | | -| `events` | `array` | | - -### List tags for screenshots - -Get the list of possible tags for the images. -### Get details - -Details about an Host. List of recent events for the specified host, including details of exposed ports and services. - - **Note**: Querying CIDRs is available for paid subscriptions only. When using CIDR, the number of credits that will be spent correspond to the number of targets that returned results. Example: a request for a /24 (256 targets) in which only 200 targets have results, will decrement 200 credits. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total` | `integer` | | -| `query` | `string` | | -| `events` | `array` | | - -### Get History - -Details about an Host, with data up to 6 months. - - List of events for the specified host, with events for each time that: - - A port was detected open - - A service was found running - - Other modules were successfully executed - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `total` | `integer` | | -| `query` | `string` | | -| `events` | `array` | | - -### Get Score - -IP Risk Score. Scoring is based on all information found on our databases regarding an IP and refers to the level of exposure of a target, i.e, the higher the score, the greater the risk of exposure. - - More details about scoring can be found on [here](https://github.com/binaryedge/ratemyip-openframework/blob/master/ip-score.md). - - **Note**: Available for paid subscriptions only. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `normalized_ip_score` | `float` | | -| `normalized_ip_score_detailed` | `object` | | -| `ip_score_detailed` | `object` | | -| `results_detailed` | `object` | | -| `ip_address` | `string` | | - -### Search events - -Events based on a Query. List of recent events for the given query, including details of exposed ports and services. Can be used with [specific parameters](https://docs.binaryedge.io/image-search/) and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `only_ips` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `total` | `integer` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `events` | `array` | | - -### Get statistics - -Statistics of recent events for the given query. Can be used with specific parameters and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `type` | `string` | | -| `order` | `string` | | - -### Get sensors - -Details about an Scanner. List of recent events form the specified host, including details of scanned ports, payloads and tags. - - **Note**: Querying CIDRs is available for paid subscriptions only. When using CIDR, the number of credits that will be spent correspond to the number of targets that returned results. Example: a request for a /24 (256 targets) in which only 200 targets have results, will decrement 200 credits. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `total` | `integer` | | -| `targets_found` | `integer` | | -| `events` | `array` | | - -### Search sensors - -Events based on a Query. List of recent events for the given query, including details of scanned ports, payloads and tags. Can be used with specific parameters and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `days` | `integer` | | -| `page` | `integer` | | -| `only_ips` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `total` | `integer` | | -| `events` | `array` | | - -### Get sensors statistics - -Statistics of recent events for the given query. Can be used with specific parameters and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `type` | `string` | | -| `days` | `integer` | | -| `order` | `string` | | - -### List IPs from tag - -Get a list of IPs that have been associated with a specific TAG. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `tag` | `string` | | -| `days` | `integer` | | - -### Get torrent history - -Details about torrents transferred by an Host, with data up to 6 months. - - List of torrent events for the specified host, with events for each time that a new transfer was detected on the DHT. See [Torrent Data](https://docs.binaryedge.io/torrent/) for more details. - - **Note:** Available for paid subscriptions only. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `total` | `integer` | | -| `events` | `array` | | - -### Get torrent activity - -Details about torrents transferred by an Host. List of recent torrent events for the specified host, including details of the peer and torrent. See [Torrent Data](https://docs.binaryedge.io/torrent/) for more details. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `target` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `total` | `integer` | | -| `events` | `array` | | - -### Search torrent activities - -Events based on a Query. List of recent events for the given query, including details of the peer and torrent. Can be used with specific parameters and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `page` | `integer` | | -| `pagesize` | `integer` | | -| `total` | `integer` | | -| `events` | `array` | | - -### Get torrent statistics - -Statistics of events for the given query. Can be used with specific parameters and/or full-text search. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | | -| `type` | `string` | | -| `days` | `integer` | | -| `order` | `string` | | - -### Get user subscription - -Return details about your current subscription package. - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `subscription` | `object` | | -| `end_date` | `string` | | -| `requests_left` | `integer` | | -| `requests_plan` | `integer` | | - - -## Extra - -Module **`BinaryEdge's API` v1.20** \ No newline at end of file +{!_shared_content/automate/library/binaryedge-s-api.md!} diff --git a/docs/integration/action_library/threat_intelligence/bitsight.md b/docs/integration/action_library/threat_intelligence/bitsight.md index 2c4253d116..5b8206352a 100644 --- a/docs/integration/action_library/threat_intelligence/bitsight.md +++ b/docs/integration/action_library/threat_intelligence/bitsight.md @@ -1,32 +1 @@ -# Bitsight - -![Bitsight](/assets/playbooks/library/bitsight.png){ align=right width=150 } - -Bitsight connector for audit logs - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `company_uuids` | `array` | The list of company uuids | -| `api_token` | `string` | The API Token to authenticate calls to the Bitsight API | - -## Triggers - -### [BETA] Fetch new findings from Bitsight - -Get findings from a Bitsight - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | -| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | -| `intake_key` | `string` | Intake key to use when sending events | -| `batch_limit` | `integer` | Maximum number of events to send in a single batch | - - -## Extra - -Module **`Bitsight` v1.0.0** \ No newline at end of file +{!_shared_content/automate/library/bitsight.md!} diff --git a/docs/integration/action_library/threat_intelligence/censys.md b/docs/integration/action_library/threat_intelligence/censys.md index f27bb8f882..371607288d 100644 --- a/docs/integration/action_library/threat_intelligence/censys.md +++ b/docs/integration/action_library/threat_intelligence/censys.md @@ -1,78 +1 @@ -# Censys - -![Censys](/assets/playbooks/library/censys.png){ align=right width=150 } - -[Censys](https://censys.io/) is Cybersecurity company discovering and inventoring assets exposed on Internet. The Censys API provides programmatic access to the same data accessible through the web interface - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_user_id` | `string` | Censys API user ID | -| `api_user_secret` | `string` | Censys API user secret | - -## Actions - -### Get Report - -Generate a Censys report from results - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Query to execute | -| `index` | `string` | Name of the index to use | -| `field` | `string` | The field you are running a breakdown on in dot notation, e.g. location.country_code. | -| `buckets` | `integer` | The maximum number of values to be returned in the report. Maximum: 500. Default: 50 | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `result_path` | `string` | Path of result file | - -### Search - -Search items from Censys API - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Query to execute | -| `last_run` | `string` | Date of the last run | -| `index` | `string` | Name of the index to search | -| `fields` | `array` | Fields to return | -| `max_requests` | `integer` | Maximum number of requests to send to the API. Useful to avoid spending too much credits on the same query. 0 is no limit. Defaults to 1 | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `result_path` | `string` | Path of results file | - -### View Item - -Return the item as a structured data - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `index` | `string` | Name of the index to use | -| `item` | `string` | Item to retrieve | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `result_path` | `string` | Path of result file | - - -## Extra - -Module **`Censys` v1.22** \ No newline at end of file +{!_shared_content/automate/library/censys.md!} diff --git a/docs/integration/action_library/threat_intelligence/certificate-transparency.md b/docs/integration/action_library/threat_intelligence/certificate-transparency.md index ae8350550d..ef6590777e 100644 --- a/docs/integration/action_library/threat_intelligence/certificate-transparency.md +++ b/docs/integration/action_library/threat_intelligence/certificate-transparency.md @@ -1,37 +1 @@ -# Certificate Transparency - -![Certificate Transparency](/assets/playbooks/library/certificate-transparency.png){ align=right width=150 } - -[Certificate transparency](https://certificate.transparency.dev/) is a security standard to monitor and audit certificates. This module rely on [certstream](https://certstream.calidog.io/) to get updates from the Certificate Transparency Log network. - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Certificate update - -Trigger playbook run on certificate of interest update - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `keywords` | `array` | The keywords you're looking for. Please consider splitting composite words into two keywords when max_distance > 0. | -| `max_distance` | `integer` | The maximum Levenshtein distance acceptable. It is the number of modification you have to do to go from a word to another. E.g. sekoia -> sequoia => 2 | -| `ignoring` | `array` | Ignoring words list for faster processing. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | The domain that matched | -| `matched_keyword` | `string` | The keyword that matched | -| `certstream_object` | `object` | The certstream object the domain comes from | - - -## Extra - -Module **`Certificate Transparency` v1.24** \ No newline at end of file +{!_shared_content/automate/library/certificate-transparency.md!} diff --git a/docs/integration/action_library/threat_intelligence/detection-rules.md b/docs/integration/action_library/threat_intelligence/detection-rules.md index a41c91a5db..b2077fa808 100644 --- a/docs/integration/action_library/threat_intelligence/detection-rules.md +++ b/docs/integration/action_library/threat_intelligence/detection-rules.md @@ -1,33 +1 @@ -# Detection Rules - -![Detection Rules](/assets/playbooks/library/detection-rules.svg){ align=right width=150 } - -This module exposes a trigger to detect new snort rules on a repository - -## Configuration - -This module accepts no configuration. - -## Triggers - -### New Snort Rules - -Trigger playbooks when new snort rules are detected of a repository - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `archives` | `array` | Snort rules archives | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - - -## Extra - -Module **`Detection Rules` v1.22** \ No newline at end of file +{!_shared_content/automate/library/detection-rules.md!} diff --git a/docs/integration/action_library/threat_intelligence/digital-shadows.md b/docs/integration/action_library/threat_intelligence/digital-shadows.md index 37b1bb44ed..f100a8d90a 100644 --- a/docs/integration/action_library/threat_intelligence/digital-shadows.md +++ b/docs/integration/action_library/threat_intelligence/digital-shadows.md @@ -1,38 +1 @@ -# Digital Shadows - -![Digital Shadows](/assets/playbooks/library/digital-shadows.png){ align=right width=150 } - -Digital Shadows Module - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_url` | `string` | URL of the SearchLight instance | -| `searchlight_account_id` | `string` | SearchLight Account ID | -| `basicauth_key` | `string` | HTTP Basic authentication key | -| `basicauth_secret` | `string` | HTTP Basic authentication secret | - -## Triggers - -### Get SearchLight Alerts - -Get last created SearchLight alerts and incidents - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Batch frequency in seconds | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alerts` | `array` | SearchLight Alerts | - - -## Extra - -Module **`Digital Shadows` v1.16** \ No newline at end of file +{!_shared_content/automate/library/digital-shadows.md!} diff --git a/docs/integration/action_library/threat_intelligence/glimps.md b/docs/integration/action_library/threat_intelligence/glimps.md index 473b2c4113..49bfa978c8 100644 --- a/docs/integration/action_library/threat_intelligence/glimps.md +++ b/docs/integration/action_library/threat_intelligence/glimps.md @@ -1,113 +1 @@ -# GLIMPS - -![GLIMPS](/assets/playbooks/library/glimps.png){ align=right width=150 } - -[Glimps](https://www.glimps.fr/) offers a DeepLearning solution to detect, analyze and classify malwares. It enables faster responses during incidents with a detailed understanding of the threat - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | Glimps base URL (ex. https://gmalware.ggp.glimps.re) | -| `api_key` | `string` | APIKEY for the Glimps's API | - -## Actions - -### Get the results of an analysis - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `uuid` | `string` | Unique analysis identifier | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `done` | `boolean` | is the analysis finished | -| `duration` | `integer` | duration of the analysis in milliseconds | -| `error` | `string` | error message if Status is false | -| `errors` | `object` | error message by services | -| `file_count` | `integer` | amount of file in the submission (input + extracted) | -| `filenames` | `array` | list of analysed filename | -| `files` | `array` | array of submission files (input file and extracted sub-files) | -| `filetype` | `string` | | -| `is_malware` | `boolean` | analysis result, is a malware or not | -| `malwares` | `array` | list of malware names found in analysis | -| `md5` | `string` | string hex encoded input file MD5 | -| `score` | `integer` | highest score given by probes | -| `sha1` | `string` | string hex encoded input file SHA1 | -| `sha256` | `string` | string hex encoded input file SHA256 | -| `sid` | `string` | analysis UUID handled by GLIMPS malware finder - expert
could be used to construct expert link like:
https://gmalware.useddomain.glimps.re/expert/en/analysis/results/advanced/${SID} | -| `size` | `integer` | input file size (in bytes) | -| `ssdeep` | `string` | string input file SSDeep | -| `status` | `boolean` | true => no error to report,
false => an error occurred | -| `timestamp` | `integer` | timestamp of the start of analysis in milliseconds | -| `token` | `string` | token that can be used to view analysis result in expert view | -| `uuid` | `string` | Unique analysis identifier | - -### Search previous analysis - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sha256` | `string` | string hex encoded input file SHA256 | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `done` | `boolean` | is the analysis finished | -| `duration` | `integer` | duration of the analysis in milliseconds | -| `error` | `string` | error message if Status is false | -| `errors` | `object` | error message by services | -| `file_count` | `integer` | amount of file in the submission (input + extracted) | -| `filenames` | `array` | list of analysed filename | -| `files` | `array` | array of submission files (input file and extracted sub-files) | -| `filetype` | `string` | | -| `is_malware` | `boolean` | analysis result, is a malware or not | -| `malwares` | `array` | list of malware names found in analysis | -| `md5` | `string` | string hex encoded input file MD5 | -| `score` | `integer` | highest score given by probes | -| `sha1` | `string` | string hex encoded input file SHA1 | -| `sha256` | `string` | string hex encoded input file SHA256 | -| `sid` | `string` | analysis UUID handled by GLIMPS malware finder - expert
could be used to construct expert link like:
https://gmalware.useddomain.glimps.re/expert/en/analysis/results/advanced/${SID}
| -| `size` | `integer` | input file size (in bytes) | -| `ssdeep` | `string` | string input file SSDeep | -| `status` | `boolean` | true => no error to report,
false => an error occurred
| -| `timestamp` | `integer` | timestamp of the start of analysis in milliseconds | -| `token` | `string` | token that can be used to view analysis result in expert view | -| `uuid` | `string` | Unique analysis identifier
| - -### Analyse a file - - - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bypass-cache` | `boolean` | ask the API to bypass cache and always submit the file to the orchestrator (optional) | -| `file` | `string` | The file to scan | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `error` | `string` | string describing error | -| `status` | `boolean` | false => an error occurred | -| `uuid` | `string` | Unique analysis identifier | - - -## Extra - -Module **`GLIMPS` v1.10** \ No newline at end of file +{!_shared_content/automate/library/glimps.md!} diff --git a/docs/integration/action_library/threat_intelligence/iknowwhatyoudownload.md b/docs/integration/action_library/threat_intelligence/iknowwhatyoudownload.md index 919e9840ba..5f530745c8 100644 --- a/docs/integration/action_library/threat_intelligence/iknowwhatyoudownload.md +++ b/docs/integration/action_library/threat_intelligence/iknowwhatyoudownload.md @@ -1,78 +1 @@ -# IKnowWhatYouDownload - -![IKnowWhatYouDownload](/assets/playbooks/library/iknowwhatyoudownload.png){ align=right width=150 } - -[iknowwhatyoudownload](https://iknowwhatyoudownload.com) collects torrent files and peers from torrent sites and DHT network. It allows associating IP addresses to downloaded and shared data - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `host` | `string` | IknowWhatYouDownload host for API queries | -| `key` | `string` | APIKEY for the IKnowWhatYouDownload Service | - -## Actions - -### Check IP existence - -Fast check if IP exists or not in the IKnowWhatYouDownload database - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The IP address to query | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | ip address | -| `exists` | `boolean` | does IKnowWhatYouDownload have history for this ip or not | -| `date` | `string` | last seen date in UTC, optional | - -### Get IP History - -Fetches the historical data of downloaded and shared content using the BitTorrent protocol of an IP - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The IP address to query | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | ip address | -| `isp` | `string` | Interner Service Provider if known | -| `hasPorno` | `boolean` | if any content has category XXX | -| `hasChildPorno` | `boolean` | if any content has category 'ChildPorno' | -| `geoData` | `object` | geo data for ip if known | -| `contents` | `array` | list of found contents | - -### List IPs from CIDR - -Fetch the list IP that can be found in a CIDR notation - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `cidr` | `string` | The CIDR address to query | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `CIDR` | `string` | the requested CIDR address | -| `peers` | `array` | array of peers | - - -## Extra - -Module **`IKnowWhatYouDownload` v1.21** \ No newline at end of file +{!_shared_content/automate/library/iknowwhatyoudownload.md!} diff --git a/docs/integration/action_library/threat_intelligence/ipinfo.md b/docs/integration/action_library/threat_intelligence/ipinfo.md index 7be685dc71..66cd58fdf2 100644 --- a/docs/integration/action_library/threat_intelligence/ipinfo.md +++ b/docs/integration/action_library/threat_intelligence/ipinfo.md @@ -1,38 +1 @@ -# IPInfo - -![IPInfo](/assets/playbooks/library/ipinfo.png){ align=right width=150 } - -[IPINFO.IO](https://ipinfo.io//) is a database that gives access to daily updates for IP to country and IP to ASN - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_token` | `string` | ipinfo.io token | - -## Triggers - -### Fetch ipinfo.io database - -Upload the ipinfo.io database regularly in json format - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | -| `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | File path of the generated observables | -| `chunk_offset` | `integer` | Offset of the chunk in the full database | -| `chunk_size` | `integer` | Size of the chunk | - - -## Extra - -Module **`IPInfo` v1.0** \ No newline at end of file +{!_shared_content/automate/library/ipinfo.md!} diff --git a/docs/integration/action_library/threat_intelligence/iptoasn.md b/docs/integration/action_library/threat_intelligence/iptoasn.md index 507b5f9d88..e9ad5630b0 100644 --- a/docs/integration/action_library/threat_intelligence/iptoasn.md +++ b/docs/integration/action_library/threat_intelligence/iptoasn.md @@ -1,34 +1 @@ -# IPtoASN - -[IPtoASN](https://iptoasn.com/) is a free, downloadable and frequently updated ASN database. It allow associating IP addresses to ASN - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Fetch Database - -Download the IPtoASN database recurrently - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | -| `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | Database file path | -| `chunk_offset` | `integer` | Offset of the chunk in the full database | -| `chunk_size` | `integer` | Size of the chunk | - - -## Extra - -Module **`IPtoASN` v1.28** \ No newline at end of file +{!_shared_content/automate/library/iptoasn.md!} diff --git a/docs/integration/action_library/threat_intelligence/misp.md b/docs/integration/action_library/threat_intelligence/misp.md index c60e3caf72..e3cb276c0e 100644 --- a/docs/integration/action_library/threat_intelligence/misp.md +++ b/docs/integration/action_library/threat_intelligence/misp.md @@ -1,75 +1 @@ -# MISP - -![MISP](/assets/playbooks/library/misp.png){ align=right width=150 } - -[MISP](https://www.misp-project.org/) is a opensource platform to gather, store, share and correlate threat intelligence like cyber security indicators - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `misp_url` | `string` | MISP server url | -| `misp_api_key` | `string` | MISP API key | - -## Triggers - -### New Event - -Trigger a playbook on a new MISP event - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sleep_time` | `integer` | Time in seconds the worker sleeps between the checks of new events | -| `attributes_filter` | `integer` | Time in seconds after which attributes are no longer considered new (0 for no filter) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event` | `object` | MISP event | - -## Actions - -### MISP to STIX - -Convert MISP event to STIX 2 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event` | `object` | MISP event to convert to STIX | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Converted STIX Bundle | - -### Publish Event - -Publish an event on a MISP server - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event` | `object` | MISP event | -| `event_path` | `string` | MISP event (from file) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event` | `object` | Published MISP event | -| `event_path` | `string` | Published MISP event (to file) | - - -## Extra - -Module **`MISP` v2.5** \ No newline at end of file +{!_shared_content/automate/library/misp.md!} diff --git a/docs/integration/action_library/threat_intelligence/mwdb.md b/docs/integration/action_library/threat_intelligence/mwdb.md index df20ec44dc..be81f92249 100644 --- a/docs/integration/action_library/threat_intelligence/mwdb.md +++ b/docs/integration/action_library/threat_intelligence/mwdb.md @@ -1,58 +1 @@ -# MWDB - -![MWDB](/assets/playbooks/library/mwdb.svg){ align=right width=150 } - -[MWDB](https://mwdb.cert.pl/) is a malware repository for automated malware collection and analysis systems hosted by CERT.pl - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | API key | - -## Triggers - -### Get new configs - -Get Malware configs from MWDB - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `id` | `string` | Configuration ID | -| `config_type` | `string` | Configuration Type (static or dynamic) | -| `upload_time` | `string` | Configuration Upload Time (in ISO format) | -| `type` | `string` | Configuration Type | -| `family` | `string` | Malware Family | -| `tags` | `array` | Tags associated with this configuration | -| `children` | `array` | Configuration Children Objects | -| `parents` | `array` | Configuration Parent Objects | -| `cfg` | `object` | Configuration Content | -| `files` | `array` | Malware samples associated with this configuration | - -## Actions - -### Config To Observables - -Convert a MWDB config to a bundle of observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `config_path` | `string` | File path to the JSON config to read. | -| `config` | `object` | The JSON content of the config. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `observables` | `array` | Bundle with the list of observables | -| `observables_path` | `string` | Path of the file holding the bundle with the observables | - - -## Extra - -Module **`MWDB` v1.38** \ No newline at end of file +{!_shared_content/automate/library/mwdb.md!} diff --git a/docs/integration/action_library/threat_intelligence/nybble.md b/docs/integration/action_library/threat_intelligence/nybble.md index 3255fba0b7..4ee12597f6 100644 --- a/docs/integration/action_library/threat_intelligence/nybble.md +++ b/docs/integration/action_library/threat_intelligence/nybble.md @@ -1,40 +1 @@ -# Nybble - -![Nybble](/assets/playbooks/library/nybble.png){ align=right width=150 } - -[Nybble Hub](https://nybble-security.io) is the worldwide first blue team community which handles your alerts at a glance. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `nhub_url` | `string` | Nybble Hub Connector Base URL | -| `nhub_username` | `string` | Nybble Hub Connector username | -| `nhub_key` | `string` | Nybble Hub Connector Key to authenticate the requests | - -## Actions - -### Create Alert - -Create an Alert into Nybble Hub - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `alert_data` | `object` | Received alert, from Sekoia 'Get Alert' action | -| `rule` | `object` | Alert Rule from Rule Catalog, from Sekoia 'Get Rule' action | -| `events` | `array` | Related Events, from Sekoia 'Get The Alert Events' action | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `status` | `boolean` | | -| `details` | `string` | | - - -## Extra - -Module **`Nybble` v1.0.2** \ No newline at end of file +{!_shared_content/automate/library/nybble.md!} diff --git a/docs/integration/action_library/threat_intelligence/onyphe.md b/docs/integration/action_library/threat_intelligence/onyphe.md index 4dc17f891b..5c3c3458cb 100644 --- a/docs/integration/action_library/threat_intelligence/onyphe.md +++ b/docs/integration/action_library/threat_intelligence/onyphe.md @@ -1,379 +1 @@ -# Onyphe - -![Onyphe](/assets/playbooks/library/onyphe.png){ align=right width=150 } - -[Onyphe](https://www.onyphe.io/) is a Cyber Defense Search Engine for open-source and cyber threat intelligence data collected by crawling various sources available on the Internet or by listening to Internet background noise - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `apikey` | `string` | APIKEY for Onyphe | - -## Actions - -### Get Domain Name CTLs - -Get domain name X509 certificate information from Certificate Transparency Logs (CTLs) with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | The domain to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Get IP Datascan - -Get datascan information on IP with Onyphe: "Application responses to [Onyphe's] application requests" - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan. Exactly one of 'ip' or 'string' must be specified | -| `string` | `string` | The string to scan. Exactly one of 'ip' or 'string' must be specified | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Lookup Forward DNS - -Get forward DNS lookup information on IP with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Geolocalize IP - -Geo-localize ip with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | - -### Get IP Inetnum - -Get inetnum information on IP with Onyphe: "IP (v4 and v6) networks description as given by RIRs (Regional Internet Registries), except for the United States which does not disclose that information publicly." - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Lookup IP - -Get information on IP with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Lookup MD5 - -Get Onyphe datascans with the given md5 in the datamd5 field - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `md5` | `string` | The md5 to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Get Onion Scan - -Get information on the given onion domain with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `onion` | `string` | The onion domain to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Get Pastries - -Get pastries information collected by Onyphe on pastebin.com - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Lookup Reverse DNS - -Get reverse DNS lookup information on IP with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Get IP Sniffer - -Get sniffer information on IP with Onyphe: "[Onyphe has] a number of distributed honeypots on the Internet. [They] are listening to Internet background noise and performing passive operating system identification" - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Get IP Syn Scan - -Get synscan information on IP with Onyphe: "Open TCP ports found on the Internet. Each open port is also enriched with detected operating system" - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - -### Get IP Threat List - -Get threatlist information on IP with Onyphe - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | -| `budget` | `integer` | Maximum number of pages to retrieve | -| `first_page` | `integer` | Start retrieving data from this page | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | Number of elements in results | -| `error` | `integer` | Error code, 0 for no error | -| `message` | `string` | Error message, only if error is not 0 | -| `myip` | `string` | IP from which the request is made | -| `results` | `array` | array of data | -| `status` | `string` | Status of the request: ok/nok | -| `took` | `string` | Time to serve the request | -| `total` | `integer` | Total number of pieces of information, only up to 10000 are returned in results | -| `max_page` | `integer` | Maximal number of pages | -| `page` | `integer` | Last page requested | - - -## Extra - -Module **`Onyphe` v1.20** \ No newline at end of file +{!_shared_content/automate/library/onyphe.md!} diff --git a/docs/integration/action_library/threat_intelligence/osint.md b/docs/integration/action_library/threat_intelligence/osint.md index 4cc94bbcf1..c68820934c 100644 --- a/docs/integration/action_library/threat_intelligence/osint.md +++ b/docs/integration/action_library/threat_intelligence/osint.md @@ -1,33 +1 @@ -# OSINT - -![OSINT](/assets/playbooks/library/osint.svg){ align=right width=150 } - -This module exposes actions to process OSINT data - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Fetch OSINT - -Fetch objects from a osint collection source - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `collection_sources` | `array` | OSINT Sources | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle_path` | `string` | Filepath of the bundle of STIX objects fetched from the collection | - - -## Extra - -Module **`OSINT` v1.43** \ No newline at end of file +{!_shared_content/automate/library/osint.md!} diff --git a/docs/integration/action_library/threat_intelligence/public-suffix.md b/docs/integration/action_library/threat_intelligence/public-suffix.md index 8dfc6908ba..39715e6155 100644 --- a/docs/integration/action_library/threat_intelligence/public-suffix.md +++ b/docs/integration/action_library/threat_intelligence/public-suffix.md @@ -1,24 +1 @@ -# Public Suffix - -The [Public Suffix List](https://publicsuffix.org/) is an initiative of [Mozilla](https://www.mozilla.org/) to list of all known public suffixes - -## Configuration - -This module accepts no configuration. - -## Actions - -### Get Private Domains - -Get the list of private domains - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domains_path` | `string` | Domain file path on disk | - - -## Extra - -Module **`Public Suffix` v1.18** \ No newline at end of file +{!_shared_content/automate/library/public-suffix.md!} diff --git a/docs/integration/action_library/threat_intelligence/riskiq.md b/docs/integration/action_library/threat_intelligence/riskiq.md index c3e4c67145..402b2483fa 100644 --- a/docs/integration/action_library/threat_intelligence/riskiq.md +++ b/docs/integration/action_library/threat_intelligence/riskiq.md @@ -1,352 +1 @@ -# RiskIQ - -![RiskIQ](/assets/playbooks/library/riskiq.png){ align=right width=150 } - -[RiskIQ](https://www.riskiq.com/) is a cyber security company providing software as a service to detect phishing, fraud, malware, and other online security threats. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | RiskIQ base url | -| `api_key` | `string` | API key | -| `api_secret` | `string` | API secret | - -## Actions - -### SSL Hosts - -Get hosts by certificate - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `certSha1` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `content` | `array` | | -| `first` | `boolean` | | -| `last` | `boolean` | | -| `number` | `integer` | | -| `numberOfElements` | `integer` | | -| `size` | `integer` | | -| `sort` | `string` | | -| `totalElements` | `integer` | | -| `totalPages` | `integer` | | - -### Hex Passive DNS - -Retrieve results by searching for specified hexadecimal bytes within PDNS record data field. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `string` | | -| `max` | `string` | | -| `lastSeenAfter` | `string` | | -| `firstSeenBefore` | `string` | | -| `hex` | `string` | Hexadecimal encoding of data field bytes | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `recordCount` | `integer` | | -| `records` | `array` | | - -### IP Passive DNS - -Retrieve results by searching for specified IP address within PDNS record data field - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | | -| `max` | `string` | | -| `lastSeenAfter` | `string` | | -| `firstSeenBefore` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `recordCount` | `integer` | | -| `records` | `array` | | - -### Name Passive DNS - -Retrieve results by searching for specified resource name within PDNS record data field. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | | -| `type` | `string` | DNS resource record type | -| `max` | `string` | | -| `lastSeenAfter` | `string` | | -| `firstSeenBefore` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `recordCount` | `integer` | | -| `records` | `array` | | - -### SSL Certificates by Host - -Get SSL certificates by host name - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `host` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `content` | `array` | | - -### SSL Certificates by Name - -Get SSL certificates by name - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `content` | `array` | | -| `first` | `boolean` | | -| `last` | `boolean` | | -| `number` | `integer` | | -| `numberOfElements` | `integer` | | -| `size` | `integer` | | -| `sort` | `string` | | -| `totalElements` | `integer` | | -| `totalPages` | `integer` | | - -### SSL Certificates by Serial Number - -None - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `serial` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `content` | `array` | | -| `first` | `boolean` | | -| `last` | `boolean` | | -| `number` | `integer` | | -| `numberOfElements` | `integer` | | -| `size` | `integer` | | -| `sort` | `string` | | -| `totalElements` | `integer` | | -| `totalPages` | `integer` | | - -### SSL Certificats by SHA-1 - -Get SSL certificate by SHA1 hash - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sha1` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `count` | `integer` | | -| `firstSeen` | `string` | | -| `id` | `string` | | -| `issuer` | `array` | | -| `issuerAlternativeNames` | `array` | | -| `issuerID` | `string` | | -| `lastSeen` | `string` | | -| `notAfter` | `string` | | -| `notBefore` | `string` | | -| `publicKeyAlgorithm` | `string` | | -| `serialNumber` | `string` | | -| `sha1` | `string` | | -| `signatureAlgorithm` | `string` | | -| `signatureAlgorithmOid` | `string` | | -| `subject` | `array` | | -| `subjectAlternativeNames` | `array` | | -| `subjectID` | `string` | | -| `version` | `integer` | | - -### Reverse Whois (address) - -Get WHOIS records associated with an address - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `address` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - -### Whois - -Get the current WHOIS for a domain - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | -| `Authorization` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - -### Reverse Whois (email) - -Get WHOIS records associated with an email address - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `email` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - -### Reverse Whois (name) - -Get WHOIS records associated with a name - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `name` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - -### Reverse Whois (nameserver) - -Get WHOIS records associated with a name server - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `nameserver` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - -### Reverse Whois (organization) - -Get WHOIS records associated with an organization - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `org` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - -### Reverse Whois (phone) - -Get WHOIS records associated with a phone number - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `phone` | `string` | | -| `exact` | `string` | | -| `maxResults` | `string` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `results` | `integer` | | -| `domains` | `array` | | - - -## Extra - -Module **`RiskIQ` v1.22** \ No newline at end of file +{!_shared_content/automate/library/riskiq.md!} diff --git a/docs/integration/action_library/threat_intelligence/shodan.md b/docs/integration/action_library/threat_intelligence/shodan.md index 1a1e1e60fb..0584310541 100644 --- a/docs/integration/action_library/threat_intelligence/shodan.md +++ b/docs/integration/action_library/threat_intelligence/shodan.md @@ -1,147 +1 @@ -# Shodan - -![Shodan](/assets/playbooks/library/shodan.png){ align=right width=150 } - -[Shodan](https://www.shodan.io/) is a Cybersecurity company keeping track of devices exposed to the Internet. It collect information on devices, running software and related CVEs. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | The user API key | -| `base_url` | `string` | Shodan base url, like https://api.shodan.io/. | - -## Actions - -### Get DNS domain - -Get all the subdomains and other DNS entries for the given domain. Uses 1 query credit per lookup. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | Domain name to lookup; example "cnn.com". | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | | -| `tags` | `array` | | -| `data` | `array` | | - -### Lookup IPs - -Look up the IP address for the provided list of hostnames. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hostnames` | `array` | List of hostnames; example "google.com". | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `` | | - -### Lookup DNS - -Look up the hostnames that have been defined for the given list of IP addresses. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ips` | `array` | List of IP addresses; example "74.125.227.230" | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `` | | - -### Get Host - -Returns all services that have been found for the given host IP. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | Host IP address | -| `history` | `boolean` | True if all historical banners should be returned (default: False) | -| `minify` | `boolean` | True to only return the list of ports and the general host information, no banners. (default: False) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `region_code` | `string` | | -| `ip` | `string` | | -| `area_code` | `string` | | -| `country_name` | `string` | | -| `hostnames` | `array` | | -| `postal_code` | `string` | | -| `dma_code` | `string` | | -| `country_code` | `string` | | -| `data` | `array` | | -| `city` | `string` | | -| `longitude` | `float` | | -| `country_code3` | `string` | | -| `latitude` | `float` | | -| `os` | `string` | | -| `ports` | `array` | | - -### Count Hosts - -This method behaves identical to "/shodan/host/search" with the only difference that this method does not return any host results, it only returns the total number of results that matched the query and any facet information that was requested. As a result this method does not consume query credits. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Shodan search query. The provided string is used to search the database of banners in Shodan, with the additional option to provide filters inside the search query using a "filter:value" format. For example, the following search query would find Apache webservers located in Germany: "apache country:DE". | -| `facets` | `string` | A comma-separated list of properties to get summary information on. Property names can also be in the format of "property:count", where "count" is the number of facets that will be returned for a property (i.e. "country:100" to get the top 100 countries for a search query). | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `matches` | `array` | | -| `facets` | `object` | | -| `total` | `integer` | | - -### Search Host - -Search Shodan using the same query syntax as the website and use facets to get summary information for different properties. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | Shodan search query. The provided string is used to search the database of banners in Shodan, with the additional option to provide filters inside the search query using a "filter:value" format. For example, the following search query would find Apache webservers located in Germany: "apache country:DE". | -| `facets` | `string` | A comma-separated list of properties to get summary information on. Property names can also be in the format of "property:count", where "count" is the number of facets that will be returned for a property (i.e. "country:100" to get the top 100 countries for a search query). | -| `max_pages` | `integer` | Set the maximum number of pages retrieved. | -| `minify` | `boolean` | True or False; whether or not to truncate some of the larger fields (default: True) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `matches` | `array` | | -| `facets` | `object` | | -| `total` | `integer` | | - - -## Extra - -Module **`Shodan` v1.22** \ No newline at end of file +{!_shared_content/automate/library/shodan.md!} diff --git a/docs/integration/action_library/threat_intelligence/stix.md b/docs/integration/action_library/threat_intelligence/stix.md index 8a54760afa..fb7400ddaf 100644 --- a/docs/integration/action_library/threat_intelligence/stix.md +++ b/docs/integration/action_library/threat_intelligence/stix.md @@ -1,358 +1 @@ -# STIX - -![STIX](/assets/playbooks/library/stix.png){ align=right width=150 } - -[STIX](https://oasis-open.github.io/cti-documentation/) is a cybersecurity serialization format used to represent cyber threat intelligence, directed by the [OASIS Cyber Threat Intelligence Technical Committee](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cti). It peered with TAXII, a protocol used to exchange cyber threat intelligence (CTI) over HTTPS - -## Configuration - -This module accepts no configuration. - -## Triggers - -### fetch_taxii2_collection - -Fetch objects from a TAXII 2 Server - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sleep_time` | `integer` | Time in seconds the worker sleeps between the checks of new events | -| `collection_url` | `string` | URL of the TAXII Collection | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Bundle of STIX objects fetched from the collection | - -## Actions - -### Add Source - -Add a Source to a STIX Bundle - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `source` | `object` | STIX Identity Source | -| `source_path` | `string` | STIX Identity Source (from file) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Resulting STIX Bundle | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - -### Add Tags - -Add Tags to Observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `tags` | `array` | Tags to add to all observables | -| `valid_for` | `integer` | Period of validity for created tags (in days) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Resulting STIX Bundle | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - -### Create Relationships - -Create STIX Relationships - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `relationship_type` | `string` | STIX Relationship Type | -| `source` | `string` | STIX ID or JSON Path expression for the relationships' sources | -| `target` | `string` | STIX ID or JSON Path expression for the relationships' targets | -| `tlp` | `string` | TLP to use for relationships (as english or STIX ID) | -| `confidence` | `integer` | Admiralty Credibility score for created relationship (from 1 - Confirmed by other sources, to 6 - Truth cannot be judged) | -| `description` | `string` | Description of generated STIX relationships | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Resulting STIX Bundle | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - -### Cryptolaemus To STIX - -Parse Cryptolaemus content - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `content` | `string` | Content to parse | -| `content_path` | `string` | Path to the content file | -| `malware_id` | `string` | Id of the Emotet Malware | -| `campaign_ids` | `object` | Ids of the campaigns. The key must be the campaign name and the value its id. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle_path` | `string` | Path of the bundle file containing the parsed content. | - -### CVE to STIX - -Convert CVE JSON to STIX 2.1 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `cve_list` | `array` | CVE Objects to convert to STIX | -| `cve_list_paths` | `array` | CVE Objects to convert to STIX, from file paths | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle_path` | `object` | Path of converted STIX Bundle | - -### Filter bundle - -Filter objects inside a bundle - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `condition` | `object` | Condition to match | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Bundle with matching objects | -| `bundle_path` | `string` | Bundle with matching objects (in a file) | -| `excluded_bundle` | `object` | Bundle with excluded objects | -| `excluded_bundle_path` | `string` | Bundle with excluded objects (in a file) | - -### Json objects to Observables - -Convert a list of json objects into a list of observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `items` | `array` | Items to convert to observables | -| `items_path` | `string` | Path of the file holding the list of items to convert | -| `type` | `string` | type of observables | -| `value_path` | `string` | Name or JSON path of the attribute holding the value | -| `tags` | `array` | List of tags to add to the observables | -| `source` | `object` | STIX Identity Source | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `observables` | `object` | Bundle with the list of observables | -| `observables_path` | `string` | Path of the file holding the bundle with the observables | - -### VirusTotal LiveHunt to Observables - -Convert a livehunt notification into a list of observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `notification` | `object` | LiveHunt notification to convert to observables | -| `notification_path` | `string` | Path of the file holding the LiveHunt notification to convert | -| `notification_to_history` | `boolean` | Whether or not the notification should be added to the observable's history. Default to false | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `observables` | `object` | Bundle with the list of observables | -| `observables_path` | `string` | Path of the file holding the bundle with the observables | - -### MISP to STIX - -Convert MISP event to STIX 2.1 - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event` | `object` | MISP event to convert to STIX | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Converted STIX Bundle | - -### Observables to Contextualized Indicators - -Generate Contextualized Indicators from Observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `rules` | `array` | Rules to use on observables to contextualize data | -| `indicator_types` | `array` | STIX Indicator Types | -| `exclude` | `array` | Fields to exclude from pattern | -| `kill_chain_phases` | `array` | Indicator Kill Chain Phases | -| `tlp` | `string` | TLP to use for indicators (as english or STIX ID) | -| `valid_for` | `integer` | Period of validity for created indicator (in days) | -| `confidence` | `integer` | Admiralty Credibility score for created indicator (from 1 - Confirmed by other sources, to 6 - Truth cannot be judged) | -| `port_path` | `string` | JSON Path to extract the port in the observable. | -| `network_traffic_direction` | `string` | Direction of the network traffic. Either 'src' or 'dst' | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Resulting STIX Bundle | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - -### Observables to Indicators - -Generate Indicators from Observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `indicator_types` | `array` | STIX Indicator Types | -| `exclude` | `array` | Fields to exclude from pattern | -| `kill_chain_phases` | `array` | Indicator Kill Chain Phases | -| `tlp` | `string` | TLP to use for indicators (as english or STIX ID) | -| `valid_for` | `integer` | Period of validity for created indicator (in days) | -| `confidence` | `integer` | Admiralty Credibility score for created indicator (from 1 - Confirmed by other sources, to 6 - Truth cannot be judged) | -| `port_path` | `string` | JSON Path to extract the port in the observable. | -| `network_traffic_direction` | `string` | Direction of the network traffic. Either 'src' or 'dst' | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Resulting STIX Bundle | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - -### Remove Orphan Objects - -Remove objects without any relationship from a STIX bundle. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | Resulting STIX Bundle | -| `bundle_path` | `string` | Resulting STIX Bundle (in a file) | - -### Split bundle - -Split a STIX Bundle in smaller ones - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `number_of_items` | `number` | Approximate number of items to include in each bundle | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle_paths` | `array` | Resulting STIX Bundles | - -### STIX to MISP - -Convert STIX bundle to MISP event - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `bundle` | `object` | STIX Bundle | -| `bundle_path` | `string` | STIX Bundle (from file) | -| `organization` | `object` | | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `event` | `object` | Resulting MISP event | -| `event_path` | `string` | Resulting MISP event (to file) | - -### Strings to Observables - -Convert a list of strings into a list of observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `items` | `array` | Items to convert to observables | -| `items_path` | `string` | Path of the file holding the list of items to convert | -| `type` | `string` | type of observables | -| `tags` | `array` | List of tags to add to the observables | -| `source` | `object` | STIX Identity Source | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `observables` | `object` | Bundle with the list of observables | -| `observables_path` | `string` | Path of the file holding the bundle with the observables | - - -## Extra - -Module **`STIX` v1.72** \ No newline at end of file +{!_shared_content/automate/library/stix.md!} diff --git a/docs/integration/action_library/threat_intelligence/thinkst-canary.md b/docs/integration/action_library/threat_intelligence/thinkst-canary.md index ad107e0798..aa30919475 100644 --- a/docs/integration/action_library/threat_intelligence/thinkst-canary.md +++ b/docs/integration/action_library/threat_intelligence/thinkst-canary.md @@ -1,33 +1 @@ -# Thinkst Canary - -![Thinkst Canary](/assets/playbooks/library/thinkst-canary.png){ align=right width=150 } - -Thinkst Canary specializes in innovative cybersecurity solutions, particularly using honeypot technology to detect and alert on threats within networks. They provide early warnings of breaches with minimal false positives. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `base_url` | `string` | Base URL | -| `auth_token` | `string` | Auth token | - -## Triggers - -### [BETA] Fetch Thinkst Canary Events - -Get latest events from Thinkst Canary - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `intake_server` | `string` | | -| `intake_key` | `string` | | -| `chunk_size` | `integer` | The max size of chunks for the batch processing | -| `frequency` | `integer` | Batch frequency in seconds | -| `acknowledge` | `boolean` | Whether to acknowledge received events | - - -## Extra - -Module **`Thinkst Canary` v1.0.0** \ No newline at end of file +{!_shared_content/automate/library/thinkst-canary.md!} diff --git a/docs/integration/action_library/threat_intelligence/tranco.md b/docs/integration/action_library/threat_intelligence/tranco.md index 93966eb757..75d8455b4c 100644 --- a/docs/integration/action_library/threat_intelligence/tranco.md +++ b/docs/integration/action_library/threat_intelligence/tranco.md @@ -1,36 +1 @@ -# Tranco - -![Tranco](/assets/playbooks/library/tranco.svg){ align=right width=150 } - -[Tranco](https://tranco-list.eu/) is an top sites ranking list hardened against manipulation. - -## Configuration - -This module accepts no configuration. - -## Triggers - -### Fetch List - -Fetches Tranco list - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | -| `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | Tranco list file path | -| `chunk_offset` | `integer` | Offset of the chunk in the full list | -| `chunk_size` | `integer` | Size of the chunk | - - -## Extra - -Module **`Tranco` v1.22** \ No newline at end of file +{!_shared_content/automate/library/tranco.md!} diff --git a/docs/integration/action_library/threat_intelligence/triage.md b/docs/integration/action_library/threat_intelligence/triage.md index 5650fec424..923c4bf7ec 100644 --- a/docs/integration/action_library/threat_intelligence/triage.md +++ b/docs/integration/action_library/threat_intelligence/triage.md @@ -1,58 +1 @@ -# Triage - -![Triage](/assets/playbooks/library/triage.svg){ align=right width=150 } - -[Triage](https://tria.ge/) is a malware analysis sandbox as a service, brought by [Hatching](https://hatching.io/) - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | API key | -| `api_url` | `string` | API endpoint (url) | - -## Triggers - -### Triage config - -Get Triage configs - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `frequency` | `integer` | Frequency at which the script collects IOCs | -| `malware_list` | `array` | List of malware family | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file_path` | `string` | Triage raw results file path | - -## Actions - -### Triage to observables - -Triage raw results to observables - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `triage_raw_results` | `array` | List of objects that contain Triage raw results | -| `triage_raw_results_path` | `string` | Path of objects that contain Triage raw results | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `observables` | `array` | Bundle with the list of observables | -| `observables_path` | `string` | Path of the file holding the bundle with the observables | - - -## Extra - -Module **`Triage` v1.33** \ No newline at end of file +{!_shared_content/automate/library/triage.md!} diff --git a/docs/integration/action_library/threat_intelligence/virustotal.md b/docs/integration/action_library/threat_intelligence/virustotal.md index 1599dd12fe..5982fc9733 100644 --- a/docs/integration/action_library/threat_intelligence/virustotal.md +++ b/docs/integration/action_library/threat_intelligence/virustotal.md @@ -1,221 +1 @@ -# VirusTotal - -![VirusTotal](/assets/playbooks/library/virustotal.svg){ align=right width=150 } - -[VirusTotal](https://www.virustotal.com) is a cybersecurity company specialized in malware analysis. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `apikey` | `string` | APIKEY for VirusTotal | - -## Triggers - -### livehunt_notification_files - -Get LiveHunt notifications from the files endpoint - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `sleep_time` | `integer` | frequency of the lookups (in seconds) | -| `skip_history` | `boolean` | only process new notifications | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `notification_path` | `string` | Filepath of the notification | -| `ruleset_name` | `string` | Name of the Ruleset | -| `rule_name` | `string` | Name of the Rule | -| `notification_id` | `string` | ID of the notification | -| `notification_date` | `integer` | Timestamp of the notification | -| `md5` | `string` | MD5 hash of the file that matched the Yara rule | -| `sha1` | `string` | SHA-1 hash of the file that matched the Yara rule | -| `sha256` | `string` | SHA-256 hash of the file that matched the Yara rule | -| `name` | `string` | Meaningful name of the file that matched the Yara rule | - -## Actions - -### Get Comments - -Get comments from Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `resource` | `string` | The hash or url to get comments from | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | -| `resource` | `string` | Resource Identifier | -| `comments` | `array` | List of comments | - -### Post Comment - -Post comment to Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `comment` | `string` | The comment to post | -| `resource` | `string` | The hash or url to comment | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | - -### Scan Domain - -Scan domain with Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `domain` | `string` | The domain to scan | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | -| `undetected_referrer_samples` | `array` | List of undetected samples referring to this domain | -| `undetected_downloaded_samples` | `array` | List of undetected samples downloaded from this domain | -| `undetected_urls` | `array` | List of undetected URLs on this domain | -| `detected_referrer_samples` | `array` | List of detected samples referring to this domain | -| `detected_downloaded_samples` | `array` | List of detected samples downloaded from this domain | -| `detected_urls` | `array` | List of detected URLs on this domain | -| `resolutions` | `array` | List of IP addresses this domain resolved to | -| `subdomains` | `array` | List of subdomains | -| `domain_siblings` | `array` | List of domain siblings | -| `categories` | `array` | List of categories | - -### Scan File - -Scan file with Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `file` | `string` | The file to scan | -| `detect_treshold` | `integer` | The number of positives from VirusTotal that will be used as a treshold of detection | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | -| `resource` | `string` | Resource Identifier | -| `scan_id` | `string` | Scan Identifier | -| `scan_date` | `string` | Date of last scan | -| `md5` | `string` | MD5 hash of the sample | -| `sha1` | `string` | SHA-1 hash of the sample | -| `sha256` | `string` | SHA-256 hash of the sample | -| `permalink` | `string` | Permalink to the scan report | -| `positives` | `integer` | Number of antivirus detecting this sample as malicious | -| `total` | `integer` | Number of antivirus that scanned the sample | -| `scans` | `object` | Scan results (one scan result per key) | - -### Scan Hash - -Scan hash with Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `hash` | `string` | The hash to check | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | -| `resource` | `string` | Resource Identifier | -| `scan_id` | `string` | Scan Identifier | -| `scan_date` | `string` | Date of last scan | -| `md5` | `string` | MD5 hash of the sample | -| `sha1` | `string` | SHA-1 hash of the sample | -| `sha256` | `string` | SHA-256 hash of the sample | -| `permalink` | `string` | Permalink to the scan report | -| `positives` | `integer` | Number of antivirus detecting this sample as malicious | -| `total` | `integer` | Number of antivirus that scanned the sample | -| `scans` | `object` | Scan results (one scan result per key) | - -### Scan IP - -Scan ip with Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `ip` | `string` | The ip to scan | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | -| `country` | `string` | Country hosting this IP address | -| `asn` | `string` | Autonomous System number hosting this IP address | -| `undetected_downloaded_samples` | `array` | List of undetected samples downloaded from this IP address | -| `undetected_urls` | `array` | List of undetected URLs on this IP address | -| `detected_downloaded_samples` | `array` | List of detected samples downloaded from this IP address | -| `detected_urls` | `array` | List of detected URLs on this IP address | -| `resolutions` | `array` | List of domain names that resolved to this IP address | - -### Scan URL - -Scan url with Virus Total - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `url` | `string` | The url to scan | -| `detect_treshold` | `integer` | The number of positives from VirusTotal that will be used as a treshold of detection | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `response_code` | `integer` | Response Code | -| `verbose_msg` | `string` | Textual description of the response code | -| `scan_id` | `string` | Scan Identifier | -| `scan_date` | `string` | Date of last scan | -| `url` | `string` | Scanned URL | -| `permalink` | `string` | Permalink to the scan report | -| `positives` | `integer` | Number of antivirus detecting this sample as malicious | -| `total` | `integer` | Number of antivirus that scanned the sample | -| `scans` | `object` | Scan results (one scan result per key) | - - -## Extra - -Module **`VirusTotal` v1.25** \ No newline at end of file +{!_shared_content/automate/library/virustotal.md!} diff --git a/docs/integration/action_library/threat_intelligence/whois.md b/docs/integration/action_library/threat_intelligence/whois.md index adefdafc01..71ead5d7fc 100644 --- a/docs/integration/action_library/threat_intelligence/whois.md +++ b/docs/integration/action_library/threat_intelligence/whois.md @@ -1,35 +1 @@ -# Whois - -![Whois](/assets/playbooks/library/whois.svg){ align=right width=150 } - -Provides data enrichment for domains and IP addresses. - -## Configuration - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `proxy` | `boolean` | Use system proxy settings | - -## Actions - -### Whois - -Provides data enrichment for Domains, URLs, and IP addresses. - -**Arguments** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `query` | `string` | URL, IP, or domain to be enriched | - - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `Domain` | `object` | | - - -## Extra - -Module **`Whois` v1.21** \ No newline at end of file +{!_shared_content/automate/library/whois.md!} From 2ae0b597c41fc029e735cf1a898494a43ce60f4d Mon Sep 17 00:00:00 2001 From: Sebastien Quioc Date: Thu, 19 Sep 2024 17:45:30 +0200 Subject: [PATCH 2/5] fix(Automation): fix path to Azure AD documentation --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 347a8c9079..8fb77c8b96 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -536,7 +536,7 @@ nav: - Jumpcloud Directory Insights: integration/action_library/iam/jumpcloud-directory-insights.md - Microsoft Active Directory: integration/action_library/iam/microsoft-active-directory.md - Microsoft Entra ID: integration/action_library/iam/microsoft-entra-id.md - - Microsoft Entra ID (Azure AD): integration/action_library/iam/intra-id.md + - Microsoft Entra ID (Azure AD): integration/action_library/iam/intra_id.md - Okta: integration/action_library/iam/okta.md - Network: - Broadcom Cloud Secure Web Gateway: integration/action_library/network/broadcom-cloud-secure-web-gateway.md From f0bdc4e2e7983c40c7fd34213fe58f3a44b55968 Mon Sep 17 00:00:00 2001 From: Sebastien Quioc Date: Fri, 20 Sep 2024 09:55:40 +0200 Subject: [PATCH 3/5] fix(Docs): update autogenerated documentation add the missed autogenerated documentation from the last deployment --- .../automate/library/atlassian-jira.md | 2 +- _shared_content/automate/library/aws.md | 25 +- .../automate/library/binaryedge-s-api.md | 4 +- _shared_content/automate/library/bitsight.md | 2 +- .../broadcom-cloud-secure-web-gateway.md | 2 +- .../automate/library/cato-networks.md | 4 +- _shared_content/automate/library/censys.md | 2 +- .../library/certificate-transparency.md | 2 +- .../automate/library/check-point.md | 4 +- .../automate/library/crowdstrike-falcon.md | 11 +- .../automate/library/crowdstrike.md | 3 +- .../automate/library/cybereason.md | 2 +- _shared_content/automate/library/darktrace.md | 6 +- .../automate/library/detection-rules.md | 2 +- .../automate/library/digital-shadows.md | 2 +- _shared_content/automate/library/duo.md | 2 +- _shared_content/automate/library/extrahop.md | 4 +- _shared_content/automate/library/fastly.md | 51 +++ .../automate/library/fortigate-firewalls.md | 2 +- _shared_content/automate/library/git.md | 2 +- _shared_content/automate/library/github.md | 2 +- _shared_content/automate/library/glimps.md | 2 +- _shared_content/automate/library/google.md | 23 +- .../automate/library/harfanglab.md | 28 +- _shared_content/automate/library/http.md | 2 +- .../automate/library/iknowwhatyoudownload.md | 2 +- _shared_content/automate/library/imperva.md | 2 +- _shared_content/automate/library/ipinfo.md | 3 +- _shared_content/automate/library/iptoasn.md | 4 +- .../library/jumpcloud-directory-insights.md | 4 +- _shared_content/automate/library/lacework.md | 4 +- _shared_content/automate/library/mandrill.md | 2 +- .../automate/library/mattermost.md | 2 +- .../library/microsoft-active-directory.md | 2 +- .../automate/library/microsoft-azure.md | 23 +- .../automate/library/microsoft-entra-id.md | 2 +- .../automate/library/microsoft-office365.md | 16 +- .../library/microsoft-windows-server.md | 6 +- _shared_content/automate/library/mimecast.md | 2 +- _shared_content/automate/library/misp.md | 2 +- _shared_content/automate/library/mwdb.md | 2 +- _shared_content/automate/library/netskope.md | 2 +- _shared_content/automate/library/okta.md | 2 +- _shared_content/automate/library/onyphe.md | 2 +- _shared_content/automate/library/openai.md | 2 +- _shared_content/automate/library/osint.md | 2 +- _shared_content/automate/library/pagerduty.md | 2 +- .../library/palo-alto-cortex-xdr-edr.md | 33 ++ .../automate/library/panda-security.md | 49 +- .../automate/library/proofpoint.md | 2 +- .../automate/library/public-suffix.md | 4 +- _shared_content/automate/library/retarus.md | 14 + _shared_content/automate/library/riskiq.md | 2 +- _shared_content/automate/library/rss.md | 2 +- .../automate/library/salesforce.md | 5 +- _shared_content/automate/library/sekoia-io.md | 433 +++++++++++++++++- .../automate/library/sentinelone.md | 85 +++- .../library/sentinelonedeepvisibility.md | 2 +- .../automate/library/servicenow.md | 2 +- _shared_content/automate/library/shodan.md | 20 +- .../automate/library/skyhigh-security.md | 2 +- _shared_content/automate/library/sophos.md | 2 +- _shared_content/automate/library/tehtris.md | 2 +- .../automate/library/the-hive-v5.md | 58 +++ _shared_content/automate/library/the-hive.md | 2 +- _shared_content/automate/library/tranco.md | 2 +- _shared_content/automate/library/trellix.md | 41 +- .../automate/library/trend-micro.md | 4 +- _shared_content/automate/library/triage.md | 3 +- _shared_content/automate/library/ubika.md | 19 +- _shared_content/automate/library/utils.md | 2 +- .../automate/library/vade-cloud.md | 4 +- .../automate/library/vade-secure.md | 4 +- .../automate/library/virustotal.md | 2 +- _shared_content/automate/library/whois.md | 2 +- .../automate/library/withsecure.md | 50 +- _shared_content/automate/library/zscaler.md | 2 +- .../playbooks/library/binaryedge-s-api.png | Bin 23957 -> 24000 bytes .../playbooks/library/cato-networks.png | Bin 0 -> 6872 bytes .../playbooks/library/crowdstrike-falcon.png | Bin 11843 -> 11118 bytes docs/assets/playbooks/library/crowdstrike.png | Bin 9154 -> 9041 bytes docs/assets/playbooks/library/cybereason.png | Bin 27685 -> 28428 bytes docs/assets/playbooks/library/darktrace.png | Bin 8673 -> 9231 bytes docs/assets/playbooks/library/fastly.png | Bin 0 -> 24620 bytes docs/assets/playbooks/library/harfanglab.png | Bin 18157 -> 2793 bytes .../library/iknowwhatyoudownload.png | Bin 120052 -> 46656 bytes docs/assets/playbooks/library/imperva.png | Bin 5511 -> 5499 bytes docs/assets/playbooks/library/iptoasn.png | Bin 0 -> 143 bytes .../playbooks/library/microsoft-entra-id.svg | 12 + .../library/microsoft-windows-server.png | Bin 0 -> 1676 bytes docs/assets/playbooks/library/misp.png | Bin 10949 -> 4444 bytes docs/assets/playbooks/library/onyphe.png | Bin 42862 -> 48306 bytes docs/assets/playbooks/library/openai.png | Bin 8085 -> 17229 bytes .../library/palo-alto-cortex-xdr-edr.png | Bin 0 -> 8033 bytes .../playbooks/library/public-suffix.png | Bin 0 -> 143 bytes docs/assets/playbooks/library/retarus.png | Bin 0 -> 5111 bytes docs/assets/playbooks/library/riskiq.png | Bin 33206 -> 42668 bytes docs/assets/playbooks/library/sentinelone.png | Bin 19895 -> 1828 bytes .../library/sentinelonedeepvisibility.png | Bin 1129 -> 1828 bytes docs/assets/playbooks/library/shodan.png | Bin 23761 -> 7002 bytes .../playbooks/library/skyhigh-security.png | Bin 68022 -> 49975 bytes docs/assets/playbooks/library/the-hive-v5.png | Bin 0 -> 9288 bytes docs/assets/playbooks/library/the-hive.png | Bin 8510 -> 9288 bytes docs/assets/playbooks/library/trellix.png | Bin 0 -> 11579 bytes docs/assets/playbooks/library/trend-micro.png | Bin 0 -> 10452 bytes docs/assets/playbooks/library/ubika.png | Bin 265179 -> 22970 bytes docs/assets/playbooks/library/zscaler.png | Bin 6318 -> 10068 bytes mkdocs.yml | 4 + 108 files changed, 988 insertions(+), 163 deletions(-) create mode 100644 _shared_content/automate/library/fastly.md create mode 100644 _shared_content/automate/library/palo-alto-cortex-xdr-edr.md create mode 100644 _shared_content/automate/library/retarus.md create mode 100644 _shared_content/automate/library/the-hive-v5.md create mode 100644 docs/assets/playbooks/library/cato-networks.png create mode 100644 docs/assets/playbooks/library/fastly.png create mode 100644 docs/assets/playbooks/library/iptoasn.png create mode 100644 docs/assets/playbooks/library/microsoft-entra-id.svg create mode 100644 docs/assets/playbooks/library/microsoft-windows-server.png create mode 100644 docs/assets/playbooks/library/palo-alto-cortex-xdr-edr.png create mode 100644 docs/assets/playbooks/library/public-suffix.png create mode 100644 docs/assets/playbooks/library/retarus.png create mode 100644 docs/assets/playbooks/library/the-hive-v5.png create mode 100644 docs/assets/playbooks/library/trellix.png create mode 100644 docs/assets/playbooks/library/trend-micro.png diff --git a/_shared_content/automate/library/atlassian-jira.md b/_shared_content/automate/library/atlassian-jira.md index 0b395503c2..dfe545342f 100644 --- a/_shared_content/automate/library/atlassian-jira.md +++ b/_shared_content/automate/library/atlassian-jira.md @@ -66,4 +66,4 @@ Create issue in JIRA ## Extra -Module **`Atlassian JIRA` v1.1** \ No newline at end of file +Module **`Atlassian JIRA` v1.2.0** \ No newline at end of file diff --git a/_shared_content/automate/library/aws.md b/_shared_content/automate/library/aws.md index ca1c34add1..876ce7c0ca 100644 --- a/_shared_content/automate/library/aws.md +++ b/_shared_content/automate/library/aws.md @@ -59,7 +59,7 @@ Get the last records from FlowLog (deprecated in flavor of Fetch new logs on S3) | `records_path` | `string` | The filename containing the records | -### [BETA] Fetch new CloudFront logs on S3 +### Fetch new CloudFront logs on S3 Get all CloudFront records from S3 @@ -72,7 +72,6 @@ Get all CloudFront records from S3 | `chunk_size` | `integer` | The size of chunks for the batch processing | | `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | | `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -91,7 +90,6 @@ Get line-oriented Flowlog records from new S3 objects based on notifications | `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | | `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | | `ignore_comments` | `boolean` | Flag to ignore commented lines (starting with the character `#`; default: false) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -106,7 +104,6 @@ Get FlowLogs records from new S3 Parquet objects based on notifications | --------- | ------- | --------------------------- | | `frequency` | `integer` | Batch frequency in seconds | | `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | | `chunk_size` | `integer` | The size of chunks for the batch processing | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -126,7 +123,21 @@ Get line-oriented records from new S3 objects based on notifications | `separator` | `string` | The separator used between each records (default: the linefeed character '\n') | | `skip_first` | `integer` | The number of records to skip at the begining of each S3 object (default: 0) | | `ignore_comments` | `boolean` | Flag to ignore commented lines (starting with the character `#`; default: false) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new OCSF records on S3 + +Get OSCF records from new S3 Parquet objects based on notifications + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | +| `chunk_size` | `integer` | The size of chunks for the batch processing | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -141,7 +152,6 @@ Get Cloudtrail records from new S3 objects based on notifications | --------- | ------- | --------------------------- | | `frequency` | `integer` | Batch frequency in seconds | | `queue_name` | `string` | The name of the SQS queue that received the notifications of the creation of S3 objects | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | | `chunk_size` | `integer` | The size of chunks for the batch processing | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -157,7 +167,6 @@ Get messages from SQS | --------- | ------- | --------------------------- | | `frequency` | `integer` | Batch frequency in seconds | | `queue_name` | `string` | The name of the SQS queue | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: false) | | `chunk_size` | `integer` | The size of chunks for the batch processing | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -165,4 +174,4 @@ Get messages from SQS ## Extra -Module **`AWS` v1.29.6** \ No newline at end of file +Module **`AWS` v1.31.5** \ No newline at end of file diff --git a/_shared_content/automate/library/binaryedge-s-api.md b/_shared_content/automate/library/binaryedge-s-api.md index 3bcd84277e..cfc20347ca 100644 --- a/_shared_content/automate/library/binaryedge-s-api.md +++ b/_shared_content/automate/library/binaryedge-s-api.md @@ -296,7 +296,7 @@ IP Risk Score. Scoring is based on all information found on our databases regard | Name | Type | Description | | --------- | ------- | --------------------------- | -| `normalized_ip_score` | `float` | | +| `normalized_ip_score` | `number` | | | `normalized_ip_score_detailed` | `object` | | | `ip_score_detailed` | `object` | | | `results_detailed` | `object` | | @@ -500,4 +500,4 @@ Return details about your current subscription package. ## Extra -Module **`BinaryEdge's API` v1.20** \ No newline at end of file +Module **`BinaryEdge's API` v1.23.0** \ No newline at end of file diff --git a/_shared_content/automate/library/bitsight.md b/_shared_content/automate/library/bitsight.md index 2c4253d116..c2690e2875 100644 --- a/_shared_content/automate/library/bitsight.md +++ b/_shared_content/automate/library/bitsight.md @@ -29,4 +29,4 @@ Get findings from a Bitsight ## Extra -Module **`Bitsight` v1.0.0** \ No newline at end of file +Module **`Bitsight` v1.0.2** \ No newline at end of file diff --git a/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md b/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md index 3b070a0d26..d01cec720d 100644 --- a/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md +++ b/_shared_content/automate/library/broadcom-cloud-secure-web-gateway.md @@ -28,4 +28,4 @@ Trigger playbook to get Broadcom Cloud SWG events ## Extra -Module **`Broadcom Cloud Secure Web Gateway` v1.0.0** \ No newline at end of file +Module **`Broadcom Cloud Secure Web Gateway` v1.1.0** \ No newline at end of file diff --git a/_shared_content/automate/library/cato-networks.md b/_shared_content/automate/library/cato-networks.md index 6d07ba6f50..b2dca30909 100644 --- a/_shared_content/automate/library/cato-networks.md +++ b/_shared_content/automate/library/cato-networks.md @@ -9,7 +9,7 @@ Cato Networks is a software company providing solutions to protect cloud applica | Name | Type | Description | | --------- | ------- | --------------------------- | | `api_key` | `string` | Api key to interact with Cato API | -| `account_id` | `string` | Account Id (4 digits) to work with Cato API | +| `account_id` | `string` | Account Id (4 or 5 digits) to work with Cato API | ## Triggers @@ -27,4 +27,4 @@ Trigger playbook to get Cato SASE information ## Extra -Module **`Cato Networks` v1.3** \ No newline at end of file +Module **`Cato Networks` v1.5.1** \ No newline at end of file diff --git a/_shared_content/automate/library/censys.md b/_shared_content/automate/library/censys.md index f27bb8f882..3fef245fb8 100644 --- a/_shared_content/automate/library/censys.md +++ b/_shared_content/automate/library/censys.md @@ -75,4 +75,4 @@ Return the item as a structured data ## Extra -Module **`Censys` v1.22** \ No newline at end of file +Module **`Censys` v1.25.0** \ No newline at end of file diff --git a/_shared_content/automate/library/certificate-transparency.md b/_shared_content/automate/library/certificate-transparency.md index ae8350550d..b75803a7a0 100644 --- a/_shared_content/automate/library/certificate-transparency.md +++ b/_shared_content/automate/library/certificate-transparency.md @@ -34,4 +34,4 @@ Trigger playbook run on certificate of interest update ## Extra -Module **`Certificate Transparency` v1.24** \ No newline at end of file +Module **`Certificate Transparency` v1.27.0** \ No newline at end of file diff --git a/_shared_content/automate/library/check-point.md b/_shared_content/automate/library/check-point.md index 911747c664..8b3f79aafd 100644 --- a/_shared_content/automate/library/check-point.md +++ b/_shared_content/automate/library/check-point.md @@ -15,7 +15,7 @@ Check Point Harmony is the industry’s first unified security solution for user ## Triggers -### [BETA] Collect Checkpoint Harmony Mobile events +### Collect Checkpoint Harmony Mobile events Trigger playbook to get Checkpoint Harmony Mobile events @@ -32,4 +32,4 @@ Trigger playbook to get Checkpoint Harmony Mobile events ## Extra -Module **`Check Point` v1.1.7** \ No newline at end of file +Module **`Check Point` v1.3.1** \ No newline at end of file diff --git a/_shared_content/automate/library/crowdstrike-falcon.md b/_shared_content/automate/library/crowdstrike-falcon.md index d791a8c582..9913209bb1 100644 --- a/_shared_content/automate/library/crowdstrike-falcon.md +++ b/_shared_content/automate/library/crowdstrike-falcon.md @@ -42,23 +42,23 @@ Block the provided IOC ### Deisolate hosts -Deisolate the provided hosts by their agent IDs +Lifts containment on the host and returns its network communications to normal. **Arguments** | Name | Type | Description | | --------- | ------- | --------------------------- | -| `id` | `array` | The list of identifiers of agents to deisolate | +| `ids` | `array` | List of host agent IDs to apply action to. | ### Isolate hosts -Isolate the provided hosts by their agent IDs +Contains the host and stops any network communications to locations other than the CrowdStrike cloud and IPs specified in your containment policy. **Arguments** | Name | Type | Description | | --------- | ------- | --------------------------- | -| `id` | `array` | The list of identifiers of agents to isolate | +| `ids` | `array` | List of host agent IDs to apply action to. | ### Monitor IOC @@ -92,8 +92,9 @@ Enable detections on the provided IOCs: md5 / sha256 file hashes, IPv4/v6 addres | --------- | ------- | --------------------------- | | `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | | `sekoia_base_url` | `string` | [Optional] Sekoia base url, used to generate direct links to IOCs | +| `valid_for` | `integer` | If set, the playbook will remove IOCs that are older than valid_for days based on the Last modified date in CrowdStrike | ## Extra -Module **`CrowdStrike Falcon` v1.16.1** \ No newline at end of file +Module **`CrowdStrike Falcon` v1.20.0** \ No newline at end of file diff --git a/_shared_content/automate/library/crowdstrike.md b/_shared_content/automate/library/crowdstrike.md index 06f02ba9df..c49f802355 100644 --- a/_shared_content/automate/library/crowdstrike.md +++ b/_shared_content/automate/library/crowdstrike.md @@ -25,7 +25,6 @@ Forward Crowdstrike Falcon Data Replication events to Sekoia.io | --------- | ------- | --------------------------- | | `chunk_size` | `integer` | The size of max number of messages for the batch processing (default: 20000) | | `frequency` | `integer` | Batch frequency in seconds. Should be greater than 0 and lower then 20 (default: 10) | -| `delete_consumed_messages` | `boolean` | Flag to delete consuming messages (default: true) | | `is_fifo` | `boolean` | Flag to determine if the queue is a FIFO queue (default: false) | | `queue_name` | `string` | The name of the SQS queue that received messages with files information | | `queue_url` | `string` | The URL of the SQS queue that received messages with files information | @@ -35,4 +34,4 @@ Forward Crowdstrike Falcon Data Replication events to Sekoia.io ## Extra -Module **`CrowdStrike` v1.8.2** \ No newline at end of file +Module **`CrowdStrike` v1.10.1** \ No newline at end of file diff --git a/_shared_content/automate/library/cybereason.md b/_shared_content/automate/library/cybereason.md index 1c4c3282b0..9caae5bb86 100644 --- a/_shared_content/automate/library/cybereason.md +++ b/_shared_content/automate/library/cybereason.md @@ -46,4 +46,4 @@ Get last events from the Cybereason platform from versions 23.1.152 and higher ## Extra -Module **`Cybereason` v1.9.7** \ No newline at end of file +Module **`Cybereason` v1.13.2** \ No newline at end of file diff --git a/_shared_content/automate/library/darktrace.md b/_shared_content/automate/library/darktrace.md index 9f88102bdb..70368b8593 100644 --- a/_shared_content/automate/library/darktrace.md +++ b/_shared_content/automate/library/darktrace.md @@ -8,13 +8,13 @@ Darktrace monitors and protects all people and digital assets across your entire | Name | Type | Description | | --------- | ------- | --------------------------- | -| `api_url` | `string` | The url of the Darktrace appliance | +| `api_url` | `string` | The url of the Darktrace appliance. (e.g. https://example.darktrace.com or https://192.168.0.1) | | `public_key` | `string` | The public key to the Darktrace API | | `private_key` | `string` | The private key to the Darktrace API | ## Triggers -### [BETA] Fetch new logs from Darktrace +### Fetch new logs from Darktrace Get the newest logs from Darktrace Threat Visualizer @@ -31,4 +31,4 @@ Get the newest logs from Darktrace Threat Visualizer ## Extra -Module **`Darktrace` v1.5.1** \ No newline at end of file +Module **`Darktrace` v1.7.1** \ No newline at end of file diff --git a/_shared_content/automate/library/detection-rules.md b/_shared_content/automate/library/detection-rules.md index a41c91a5db..a43b1284f5 100644 --- a/_shared_content/automate/library/detection-rules.md +++ b/_shared_content/automate/library/detection-rules.md @@ -30,4 +30,4 @@ Trigger playbooks when new snort rules are detected of a repository ## Extra -Module **`Detection Rules` v1.22** \ No newline at end of file +Module **`Detection Rules` v1.25.0** \ No newline at end of file diff --git a/_shared_content/automate/library/digital-shadows.md b/_shared_content/automate/library/digital-shadows.md index 37b1bb44ed..9dc55862d3 100644 --- a/_shared_content/automate/library/digital-shadows.md +++ b/_shared_content/automate/library/digital-shadows.md @@ -35,4 +35,4 @@ Get last created SearchLight alerts and incidents ## Extra -Module **`Digital Shadows` v1.16** \ No newline at end of file +Module **`Digital Shadows` v1.19.0** \ No newline at end of file diff --git a/_shared_content/automate/library/duo.md b/_shared_content/automate/library/duo.md index 4644a405c5..05ab09c882 100644 --- a/_shared_content/automate/library/duo.md +++ b/_shared_content/automate/library/duo.md @@ -30,4 +30,4 @@ Get last logs from the Duo platform ## Extra -Module **`Duo` v1.3.1** \ No newline at end of file +Module **`Duo` v1.8.0** \ No newline at end of file diff --git a/_shared_content/automate/library/extrahop.md b/_shared_content/automate/library/extrahop.md index a19783f412..f9ca46a1ae 100644 --- a/_shared_content/automate/library/extrahop.md +++ b/_shared_content/automate/library/extrahop.md @@ -14,7 +14,7 @@ ExtraHop is a leading provider of network detection and response (NDR) solutions ## Triggers -### [BETA] Fetch new alerts from ExtraHop Reveal(x) 360 +### Fetch new alerts from ExtraHop Reveal(x) 360 Get last logs from the ExtraHop Reveal(x) 360 @@ -30,4 +30,4 @@ Get last logs from the ExtraHop Reveal(x) 360 ## Extra -Module **`ExtraHop` v0.1.0** \ No newline at end of file +Module **`ExtraHop` v1.1.1** \ No newline at end of file diff --git a/_shared_content/automate/library/fastly.md b/_shared_content/automate/library/fastly.md new file mode 100644 index 0000000000..803c878e6a --- /dev/null +++ b/_shared_content/automate/library/fastly.md @@ -0,0 +1,51 @@ +# Fastly + +![Fastly](/assets/playbooks/library/fastly.png){ align=right width=150 } + +Fastly is a content delivery network (CDN) and edge cloud platform. + +## Configuration + +This module accepts no configuration. + +## Triggers + +### Fetch new alerts from Fastly WAF [BETA] + +Get last alerts from Fastly WAF + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `email` | `string` | User's email | +| `token` | `string` | API token | +| `corp` | `string` | Corporation name | +| `site` | `string` | Site name | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +### Fetch new audit logs from Fastly WAF + +Get last events from Fastly WAF Audit logs + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `email` | `string` | User's email | +| `token` | `string` | API token | +| `corp` | `string` | Corporation name | +| `site` | `string` | Site name | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Fastly` v1.0.2** \ No newline at end of file diff --git a/_shared_content/automate/library/fortigate-firewalls.md b/_shared_content/automate/library/fortigate-firewalls.md index db94f5117c..d438117828 100644 --- a/_shared_content/automate/library/fortigate-firewalls.md +++ b/_shared_content/automate/library/fortigate-firewalls.md @@ -52,4 +52,4 @@ Add a new IP Address object to a Fortigate Firewall ## Extra -Module **`Fortigate Firewalls` v1.24** \ No newline at end of file +Module **`Fortigate Firewalls` v1.29.0** \ No newline at end of file diff --git a/_shared_content/automate/library/git.md b/_shared_content/automate/library/git.md index 65e816b27f..40bd954dc8 100644 --- a/_shared_content/automate/library/git.md +++ b/_shared_content/automate/library/git.md @@ -58,4 +58,4 @@ Trigger playbook run on every Git commit ## Extra -Module **`Git` v1.10** \ No newline at end of file +Module **`Git` v1.13.0** \ No newline at end of file diff --git a/_shared_content/automate/library/github.md b/_shared_content/automate/library/github.md index 6bec7a7cb8..0d0c2a484b 100644 --- a/_shared_content/automate/library/github.md +++ b/_shared_content/automate/library/github.md @@ -31,4 +31,4 @@ Get last audit logs from a Github organization ## Extra -Module **`Github` v1.5.0** \ No newline at end of file +Module **`Github` v1.10.2** \ No newline at end of file diff --git a/_shared_content/automate/library/glimps.md b/_shared_content/automate/library/glimps.md index 473b2c4113..ca30ca48f7 100644 --- a/_shared_content/automate/library/glimps.md +++ b/_shared_content/automate/library/glimps.md @@ -110,4 +110,4 @@ ## Extra -Module **`GLIMPS` v1.10** \ No newline at end of file +Module **`GLIMPS` v1.13.0** \ No newline at end of file diff --git a/_shared_content/automate/library/google.md b/_shared_content/automate/library/google.md index 398acacc72..e5b5cef2fb 100644 --- a/_shared_content/automate/library/google.md +++ b/_shared_content/automate/library/google.md @@ -12,7 +12,7 @@ Google module ## Triggers -### [BETA] Get user activities +### Get user activities Get user activities using google reports @@ -22,6 +22,25 @@ Get user activities using google reports | --------- | ------- | --------------------------- | | `frequency` | `integer` | Batch frequency in seconds | | `application_name` | `string` | The application from which the activities should be fetched | +| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 0 minutes ago) | +| `start_time` | `integer` | The number of hours from which events should be queried. | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `admin_mail` | `string` | Email of your google admin | + + +### Get login user activities + +Get Login user activities using google reports api + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `timedelta` | `integer` | The temporal shift, in the past, in minutes, the connector applies when fetching the events (default to 150 minutes ago) | +| `start_time` | `integer` | The number of hours from which events should be queried. | | `chunk_size` | `integer` | The max size of chunks for the batch processing | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | @@ -73,4 +92,4 @@ Execute the given query and return the results ## Extra -Module **`Google` v1.14.9** \ No newline at end of file +Module **`Google` v1.20.9** \ No newline at end of file diff --git a/_shared_content/automate/library/harfanglab.md b/_shared_content/automate/library/harfanglab.md index 968fdee17e..739d88c05e 100644 --- a/_shared_content/automate/library/harfanglab.md +++ b/_shared_content/automate/library/harfanglab.md @@ -85,6 +85,24 @@ Isolate a group of endpoints | `requested` | `array` | The list of identifiers of isolated endpoints | | `unrequested` | `array` | The list of identifiers of non-isolated endpoints | +### Hostname by IP + +Get the hostname of a machine by its IP address + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `target_ip` | `string` | Targeted IP address | +| `get_only_last_seen` | `boolean` | Get the last seen hostname only | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `hostnames` | `array` | Hostnames | + ### List named pipes Get the list of named pipe on the systems @@ -101,8 +119,8 @@ Get the list of named pipe on the systems | Name | Type | Description | | --------- | ------- | --------------------------- | -| `id` | `str` | Identifier of the job | -| `action` | `str` | Name of job action | +| `id` | `string` | Identifier of the job | +| `action` | `string` | Name of job action | | `creationtime` | `string` | Creation date of the job | | `parameters` | `object` | Parameters of the job | @@ -125,12 +143,12 @@ Get the list of processes on the systems | Name | Type | Description | | --------- | ------- | --------------------------- | -| `id` | `str` | Identifier of the job | -| `action` | `str` | Name of job action | +| `id` | `string` | Identifier of the job | +| `action` | `string` | Name of job action | | `creationtime` | `string` | Creation date of the job | | `parameters` | `object` | Parameters of the job | ## Extra -Module **`HarfangLab` v1.19** \ No newline at end of file +Module **`HarfangLab` v1.23.1** \ No newline at end of file diff --git a/_shared_content/automate/library/http.md b/_shared_content/automate/library/http.md index 2574e38ec0..f59349acaf 100644 --- a/_shared_content/automate/library/http.md +++ b/_shared_content/automate/library/http.md @@ -63,4 +63,4 @@ Requests a resource at a specified URL and returns the response as Raw or JSON ## Extra -Module **`HTTP` v1.118** \ No newline at end of file +Module **`HTTP` v1.119.1** \ No newline at end of file diff --git a/_shared_content/automate/library/iknowwhatyoudownload.md b/_shared_content/automate/library/iknowwhatyoudownload.md index 919e9840ba..670453c16b 100644 --- a/_shared_content/automate/library/iknowwhatyoudownload.md +++ b/_shared_content/automate/library/iknowwhatyoudownload.md @@ -75,4 +75,4 @@ Fetch the list IP that can be found in a CIDR notation ## Extra -Module **`IKnowWhatYouDownload` v1.21** \ No newline at end of file +Module **`IKnowWhatYouDownload` v1.24.0** \ No newline at end of file diff --git a/_shared_content/automate/library/imperva.md b/_shared_content/automate/library/imperva.md index 2ddcc05ee1..35d82ea95d 100644 --- a/_shared_content/automate/library/imperva.md +++ b/_shared_content/automate/library/imperva.md @@ -38,4 +38,4 @@ Fetch Imperva WAF logs ## Extra -Module **`Imperva` v1.16** \ No newline at end of file +Module **`Imperva` v1.20.0** \ No newline at end of file diff --git a/_shared_content/automate/library/ipinfo.md b/_shared_content/automate/library/ipinfo.md index 7be685dc71..7cec3ab2e2 100644 --- a/_shared_content/automate/library/ipinfo.md +++ b/_shared_content/automate/library/ipinfo.md @@ -22,6 +22,7 @@ Upload the ipinfo.io database regularly in json format | --------- | ------- | --------------------------- | | `interval` | `integer` | Interval in hours to wait between each trigger call. Defaults to 24. | | `chunk_size` | `integer` | Number of items to include in each chunk. Defaults to 10 000. | +| `tags_valid_for` | `integer` | Duration in hours a tag remains valid. Defaults to 72 hours. | **Outputs** @@ -35,4 +36,4 @@ Upload the ipinfo.io database regularly in json format ## Extra -Module **`IPInfo` v1.0** \ No newline at end of file +Module **`IPInfo` v1.2.0** \ No newline at end of file diff --git a/_shared_content/automate/library/iptoasn.md b/_shared_content/automate/library/iptoasn.md index 507b5f9d88..d8f39bf970 100644 --- a/_shared_content/automate/library/iptoasn.md +++ b/_shared_content/automate/library/iptoasn.md @@ -1,5 +1,7 @@ # IPtoASN +![IPtoASN](/assets/playbooks/library/iptoasn.png){ align=right width=150 } + [IPtoASN](https://iptoasn.com/) is a free, downloadable and frequently updated ASN database. It allow associating IP addresses to ASN ## Configuration @@ -31,4 +33,4 @@ Download the IPtoASN database recurrently ## Extra -Module **`IPtoASN` v1.28** \ No newline at end of file +Module **`IPtoASN` v1.31.0** \ No newline at end of file diff --git a/_shared_content/automate/library/jumpcloud-directory-insights.md b/_shared_content/automate/library/jumpcloud-directory-insights.md index e9468781cd..3958877df0 100644 --- a/_shared_content/automate/library/jumpcloud-directory-insights.md +++ b/_shared_content/automate/library/jumpcloud-directory-insights.md @@ -13,7 +13,7 @@ Directory Insights allows you to read event logs, view activity in your director ## Triggers -### [BETA] Jumpcloud Directory Insights Connector +### Jumpcloud Directory Insights Connector @@ -30,4 +30,4 @@ Directory Insights allows you to read event logs, view activity in your director ## Extra -Module **`Jumpcloud Directory Insights` v1.6.1** \ No newline at end of file +Module **`Jumpcloud Directory Insights` v1.8.1** \ No newline at end of file diff --git a/_shared_content/automate/library/lacework.md b/_shared_content/automate/library/lacework.md index 26d276f475..9a38809f19 100644 --- a/_shared_content/automate/library/lacework.md +++ b/_shared_content/automate/library/lacework.md @@ -14,7 +14,7 @@ ## Triggers -### [BETA] Fetch new logs from Lacework +### Fetch new logs from Lacework Get last system logs from the Lacework platform @@ -32,4 +32,4 @@ Get last system logs from the Lacework platform ## Extra -Module **`Lacework` v0.1.5** \ No newline at end of file +Module **`Lacework` v1.2.3** \ No newline at end of file diff --git a/_shared_content/automate/library/mandrill.md b/_shared_content/automate/library/mandrill.md index 4806107add..e59c1a1711 100644 --- a/_shared_content/automate/library/mandrill.md +++ b/_shared_content/automate/library/mandrill.md @@ -35,4 +35,4 @@ Send a new transactional message through Mandrill ## Extra -Module **`Mandrill` v2.7** \ No newline at end of file +Module **`Mandrill` v2.10.0** \ No newline at end of file diff --git a/_shared_content/automate/library/mattermost.md b/_shared_content/automate/library/mattermost.md index 53d678736b..544461cdc9 100644 --- a/_shared_content/automate/library/mattermost.md +++ b/_shared_content/automate/library/mattermost.md @@ -41,4 +41,4 @@ Post message to Mattermost ## Extra -Module **`Mattermost` v1.18** \ No newline at end of file +Module **`Mattermost` v1.21.0** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-active-directory.md b/_shared_content/automate/library/microsoft-active-directory.md index a8f1941d4e..9bc40e8332 100644 --- a/_shared_content/automate/library/microsoft-active-directory.md +++ b/_shared_content/automate/library/microsoft-active-directory.md @@ -51,4 +51,4 @@ Reset a user's password. You will need a strong password for that otherwise enab ## Extra -Module **`Microsoft Active Directory` v1.0.0** \ No newline at end of file +Module **`Microsoft Active Directory` v1.3.0** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-azure.md b/_shared_content/automate/library/microsoft-azure.md index 8f0c811751..54df3e82f6 100644 --- a/_shared_content/automate/library/microsoft-azure.md +++ b/_shared_content/automate/library/microsoft-azure.md @@ -10,7 +10,7 @@ This module accepts no configuration. ## Triggers -### [BETA] Collect Azure Blob Storage events +### Collect Azure Blob Storage events Trigger playbook to get Azure Blob Storage events information @@ -45,7 +45,24 @@ Consume messages from Microsoft Azure Eventhub | `chunk_size` | `integer` | The max size of chunks for the batch processing | -### [BETA] Fetch new Azure Network Watcher events from Blob Storage +### [BETA] Collect Azure Key Vault events + +Trigger playbook to get Azure Key Vault events information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `container_name` | `string` | Container name to interact with Azure Blob Storage | +| `account_name` | `string` | Account name of the Azure Blob Storage | +| `account_key` | `string` | Account key of the Azure Blob Storage | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `frequency` | `integer` | Batch frequency in seconds | + + +### Fetch new Azure Network Watcher events from Blob Storage Trigger playbook to get Azure Network Watcher events information @@ -64,4 +81,4 @@ Trigger playbook to get Azure Network Watcher events information ## Extra -Module **`Microsoft Azure` v2.4.8** \ No newline at end of file +Module **`Microsoft Azure` v2.5.3** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-entra-id.md b/_shared_content/automate/library/microsoft-entra-id.md index e00764d0c8..b602180e03 100644 --- a/_shared_content/automate/library/microsoft-entra-id.md +++ b/_shared_content/automate/library/microsoft-entra-id.md @@ -153,4 +153,4 @@ Invalidates all the refresh tokens issued to applications for a user. Requires t ## Extra -Module **`Microsoft Entra ID` v2.7** \ No newline at end of file +Module **`Microsoft Entra ID` v2.8.0** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-office365.md b/_shared_content/automate/library/microsoft-office365.md index 4698c7e37d..93eb8a35af 100644 --- a/_shared_content/automate/library/microsoft-office365.md +++ b/_shared_content/automate/library/microsoft-office365.md @@ -10,6 +10,20 @@ This module accepts no configuration. ## Triggers +### Office 365 management API + +Office 365 management API + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | | +| `client_secret` | `string` | | +| `tenant_id` | `string` | | +| `intake_key` | `string` | Intake key to use when sending events | + + ### Fetch events from MessageTrace API (deprecated) Fetch events for MessageTrace API @@ -49,4 +63,4 @@ Fetch events for MessageTrace API (OAuth) ## Extra -Module **`Microsoft Office365` v2.11** \ No newline at end of file +Module **`Microsoft Office365` v2.17.10** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-windows-server.md b/_shared_content/automate/library/microsoft-windows-server.md index 16053b808f..5ae1252a58 100644 --- a/_shared_content/automate/library/microsoft-windows-server.md +++ b/_shared_content/automate/library/microsoft-windows-server.md @@ -8,7 +8,6 @@ Microsoft Windows Server is an operating system designed for server-based comput | Name | Type | Description | | --------- | ------- | --------------------------- | -| `server` | `string` | Remote server dns name or IP address | | `username` | `string` | Username to do authentication on remote server | | `password` | `string` | Password to do authentication on remote server | @@ -24,6 +23,7 @@ Changes specified user password on remote server | --------- | ------- | --------------------------- | | `user_to_update` | `string` | Username you want to change password for | | `new_password` | `string` | New password for user | +| `server` | `string` | Remote server dns name or IP address | ### Disable Users @@ -35,6 +35,7 @@ Disable specified users on remote server | --------- | ------- | --------------------------- | | `users` | `array` | List of user names to disable. `sids` or `users` must be specified | | `sids` | `array` | List of SID`s to disable. `sids` or `users` must be specified | +| `server` | `string` | Remote server dns name or IP address | ### Enable Users @@ -46,8 +47,9 @@ Enable specified users on remote server | --------- | ------- | --------------------------- | | `users` | `array` | List of user names to enable. `sids` or `users` must be specified | | `sids` | `array` | List of SID`s to enable. `sids` or `users` must be specified | +| `server` | `string` | Remote server dns name or IP address | ## Extra -Module **`Microsoft Windows Server` v1.0.3** \ No newline at end of file +Module **`Microsoft Windows Server` v1.1.0** \ No newline at end of file diff --git a/_shared_content/automate/library/mimecast.md b/_shared_content/automate/library/mimecast.md index 3d8317412b..be4518b0be 100644 --- a/_shared_content/automate/library/mimecast.md +++ b/_shared_content/automate/library/mimecast.md @@ -29,4 +29,4 @@ Mimecast - Email Security ## Extra -Module **`Mimecast` v0.1.1** \ No newline at end of file +Module **`Mimecast` v1.0.1** \ No newline at end of file diff --git a/_shared_content/automate/library/misp.md b/_shared_content/automate/library/misp.md index c60e3caf72..10302f4cf6 100644 --- a/_shared_content/automate/library/misp.md +++ b/_shared_content/automate/library/misp.md @@ -72,4 +72,4 @@ Publish an event on a MISP server ## Extra -Module **`MISP` v2.5** \ No newline at end of file +Module **`MISP` v2.8.0** \ No newline at end of file diff --git a/_shared_content/automate/library/mwdb.md b/_shared_content/automate/library/mwdb.md index df20ec44dc..54b2a3e10e 100644 --- a/_shared_content/automate/library/mwdb.md +++ b/_shared_content/automate/library/mwdb.md @@ -55,4 +55,4 @@ Convert a MWDB config to a bundle of observables ## Extra -Module **`MWDB` v1.38** \ No newline at end of file +Module **`MWDB` v1.41.0** \ No newline at end of file diff --git a/_shared_content/automate/library/netskope.md b/_shared_content/automate/library/netskope.md index e9958caa75..bee18efaf6 100644 --- a/_shared_content/automate/library/netskope.md +++ b/_shared_content/automate/library/netskope.md @@ -45,4 +45,4 @@ Get last events from the Netskope platform through the API v2 ## Extra -Module **`Netskope` v1.9.3** \ No newline at end of file +Module **`Netskope` v1.10.5** \ No newline at end of file diff --git a/_shared_content/automate/library/okta.md b/_shared_content/automate/library/okta.md index 66bc3e564b..c129099860 100644 --- a/_shared_content/automate/library/okta.md +++ b/_shared_content/automate/library/okta.md @@ -32,4 +32,4 @@ Get last system logs from the OKTA platform ## Extra -Module **`Okta` v2.4.1** \ No newline at end of file +Module **`Okta` v2.8.0** \ No newline at end of file diff --git a/_shared_content/automate/library/onyphe.md b/_shared_content/automate/library/onyphe.md index 4dc17f891b..18c7e2a854 100644 --- a/_shared_content/automate/library/onyphe.md +++ b/_shared_content/automate/library/onyphe.md @@ -376,4 +376,4 @@ Get threatlist information on IP with Onyphe ## Extra -Module **`Onyphe` v1.20** \ No newline at end of file +Module **`Onyphe` v1.23.0** \ No newline at end of file diff --git a/_shared_content/automate/library/openai.md b/_shared_content/automate/library/openai.md index 39638ab939..137178fcab 100644 --- a/_shared_content/automate/library/openai.md +++ b/_shared_content/automate/library/openai.md @@ -35,4 +35,4 @@ Use an OpenAI GPT model to provide an answer to any prompt ## Extra -Module **`OpenAI` v1.3** \ No newline at end of file +Module **`OpenAI` v1.6.0** \ No newline at end of file diff --git a/_shared_content/automate/library/osint.md b/_shared_content/automate/library/osint.md index 4cc94bbcf1..edd7df782b 100644 --- a/_shared_content/automate/library/osint.md +++ b/_shared_content/automate/library/osint.md @@ -30,4 +30,4 @@ Fetch objects from a osint collection source ## Extra -Module **`OSINT` v1.43** \ No newline at end of file +Module **`OSINT` v1.46.0** \ No newline at end of file diff --git a/_shared_content/automate/library/pagerduty.md b/_shared_content/automate/library/pagerduty.md index c891470e1f..7207f4cf04 100644 --- a/_shared_content/automate/library/pagerduty.md +++ b/_shared_content/automate/library/pagerduty.md @@ -28,4 +28,4 @@ Trigger alert to PagerDuty ## Extra -Module **`PagerDuty` v1.18** \ No newline at end of file +Module **`PagerDuty` v1.21.0** \ No newline at end of file diff --git a/_shared_content/automate/library/palo-alto-cortex-xdr-edr.md b/_shared_content/automate/library/palo-alto-cortex-xdr-edr.md new file mode 100644 index 0000000000..e0bce22175 --- /dev/null +++ b/_shared_content/automate/library/palo-alto-cortex-xdr-edr.md @@ -0,0 +1,33 @@ +# Palo Alto Cortex XDR (EDR) + +![Palo Alto Cortex XDR (EDR)](/assets/playbooks/library/palo-alto-cortex-xdr-edr.png){ align=right width=150 } + +Cortex XDR is the detection and response app that natively integrates network, endpoint and cloud data to stop sophisticated attacks. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `api_key` | `string` | The API Key is your unique identifier used as the authorization header | +| `api_key_id` | `string` | The API Key ID is your unique token used to authenticate the API Key | +| `fqdn` | `string` | The FQDN is a unique host and domain name associated with each tenant | + +## Triggers + +### Fetch Alerts from Cortex [BETA] + +Fetch last Alerts from Cortex API + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + + +## Extra + +Module **`Palo Alto Cortex XDR (EDR)` v1.1.2** \ No newline at end of file diff --git a/_shared_content/automate/library/panda-security.md b/_shared_content/automate/library/panda-security.md index 85a43a3ebe..7c3414184e 100644 --- a/_shared_content/automate/library/panda-security.md +++ b/_shared_content/automate/library/panda-security.md @@ -129,7 +129,7 @@ Isolates the specified devices. When you isolate a device, communication to and | --------- | ------- | --------------------------- | | `device_ids` | `array` | List of IDs of devices to isolate.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | | `exclusion_programs` | `array` | List of programs to exclude from isolation and allow to communicate normally. | -| `customized_message` | `str` | Text to show in an alert message on the isolated devices | +| `customized_message` | `string` | Text to show in an alert message on the isolated devices | | `hide_customized_alert` | `boolean` | Indicates whether to hide the customized alert message on isolated devices. | @@ -147,7 +147,7 @@ Links devices to a specified configuration. | Name | Type | Description | | --------- | ------- | --------------------------- | -| `config_id` | `str` | Identifier of the managed configuration to associate with the devices.
Example: 2836d89d-1e98-4377-92b7-0a76ac2a7699 | +| `config_id` | `string` | Identifier of the managed configuration to associate with the devices.
Example: 2836d89d-1e98-4377-92b7-0a76ac2a7699 | | `type` | `integer` | Type of configuration. Currently, only option 2 is supported.
- 2 — Workstations and servers.
Example: 2 | | `device_ids` | `array` | List of IDs of devices to link to the specified managed configuration..
Example: cb509c17-7b88-461a-ba3b-3d43e29e6cd4,2c13685e-7d1f-4726-9ad3-5c8fa7718bab | @@ -161,9 +161,9 @@ Retrieves a list of devices, and additional information, such as the device IP a | --------- | ------- | --------------------------- | | `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | | `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$search` | `string` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | | `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | +| `$orderby` | `string` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | | `$config` | `boolean` | Indicates whether the security configuration name and ID are returned. The default value is true.
Example: true | @@ -185,9 +185,9 @@ Retrieves a list of the specified type of managed configurations associated with | `type` | `integer` | Type of configuration to return. Specify one of these values:
- 1 — Deployment settings
- 2 — Workstations and servers
- 3 — Android
Example: 2 | | `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | | `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$search` | `string` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | | `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | +| `$orderby` | `string` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | **Outputs** @@ -207,9 +207,9 @@ Retrieves a list of unmanaged devices discovered on the network. | --------- | ------- | --------------------------- | | `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | | `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$search` | `string` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | | `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | +| `$orderby` | `string` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | **Outputs** @@ -228,7 +228,7 @@ Retrieves counts of detected security events for the specified types. | Name | Type | Description | | --------- | ------- | --------------------------- | | `type` | `integer` | Types of security event counters to retrieve. This parameter is a mask. Add the values of the security event counter types you want to retrieve.
For example, if you want to retrieve only programs blocked, specify 8. If you want to retrieve both PUPs and programs blocked, specify 10 because 8 (programs blocked) + 2 (PUPs) = 10.
- 1 - Malware
- 2 PUPs (Potentially Unwanted Programs)
- 4 - Exploits
- 8 - Programs Blocked
- 16 - Threats detected by AV
- 255 - All counters
Example: 10 | -| `filter` | `str` | Filters the security event counters by date
Specify the type of security event:
- 33001 — Antivirus
- 32001 — Other types
Specify the length of the time period in the format [x, y] where x is the number of units and y is the unit of time:
- 1 — Years
- 2 - Months
- 3 - Days
- 4 - Hours
For example, this retrieves threats detected by AV for the last 7 days: filter=33001%20AmongTheLast%20[7,3].
This retrieves security event counters for the other types for the last 3 months: filter=32001%20AmongTheLast%20[3,2].
If you do not specify a filter, the API returns all of the security events for the last 30 days.
Example: 33001%20AmongTheLast%20[7,3] | +| `filter` | `string` | Filters the security event counters by date
Specify the type of security event:
- 33001 — Antivirus
- 32001 — Other types
Specify the length of the time period in the format [x, y] where x is the number of units and y is the unit of time:
- 1 — Years
- 2 - Months
- 3 - Days
- 4 - Hours
For example, this retrieves threats detected by AV for the last 7 days: filter=33001%20AmongTheLast%20[7,3].
This retrieves security event counters for the other types for the last 3 months: filter=32001%20AmongTheLast%20[3,2].
If you do not specify a filter, the API returns all of the security events for the last 30 days.
Example: 33001%20AmongTheLast%20[7,3] | **Outputs** @@ -241,17 +241,6 @@ Retrieves counts of detected security events for the specified types. | `pups_counters` | `object` | | | `threats_by_av_counters` | `object` | | -### Get DataControl module status - -Retrieves a count of files and devices that Data Control identified with each type of Personally Identifiable Information (PII). - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `properties` | `` | | -| `type` | `` | | - ### Retrieve Device Protection Status Retrieves a list of devices with their protection status and other device information. @@ -262,9 +251,9 @@ Retrieves a list of devices with their protection status and other device inform | --------- | ------- | --------------------------- | | `$top` | `integer` | Specifies the number of objects to retrieve.
Example: 5 | | `$skip` | `integer` | Bypasses the specified number of objects in the results returned.
For example, if you specify 10, the results start at object 11.
Example: 5 | -| `$search` | `str` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | +| `$search` | `string` | Returns only objects that include the specified text string. For example, "name" returns objects that include "hostname" and "username".
The supported search fields depend on the endpoint:
- Devices: Host name, description, IP address, logged on user
- DeviceProtectionStatus: Host name
- ManagedConfigurations: Name, description
Example: name | | `$count` | `boolean` | Indicates whether to return a counter that shows the total number of objects in the total_items response parameter.
Example: true | -| `$orderby` | `str` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | +| `$orderby` | `string` | Specifies how to order results. You can order by any parameter in the response and sort results in ascending or descending order.
Specify a parameter name with any underscores removed, followed by a + (plus sign) and either asc (ascending) or desc (descending).
For example, to order results by the host_name parameter in descending order, specify hostname+desc. If you do not specify a field to order by, the API will use the order in the database.
Example: hostname+desc | **Outputs** @@ -342,18 +331,18 @@ Starts a task to scan the specified devices immediately. | Name | Type | Description | | --------- | ------- | --------------------------- | | `device_ids` | `array` | List of IDs of devices to scan.
Example: "cb509c17-7b88-461a-ba3b-3d43e29e6cd4","2c13685e-7d1f-4726-9ad3-5c8fa7718bab" | -| `task_name` | `str` | Name of the scan task.
Example: Routine scan | -| `task_description` | `str` | Description of the scan task.
Example: Windows 8 machines only | +| `task_name` | `string` | Name of the scan task.
Example: Routine scan | +| `task_description` | `string` | Description of the scan task.
Example: Windows 8 machines only | | `scan_scope` | `integer` | Scope of the scan task. Specify one of these values:
- 0 - Whole computer
- 1 - Critical areas
- 2 - Specified items
Example: 0 | -| `specified_items_to_scan` | `str` | List of specific locations or items to scan. All folders and files in the specified locations are scanned.
Works only when scan_scope is 2.
Example: "C:\Downloads", "C:\Documents" | +| `specified_items_to_scan` | `string` | List of specific locations or items to scan. All folders and files in the specified locations are scanned.
Works only when scan_scope is 2.
Example: "C:\Downloads", "C:\Documents" | | `detect_hacking_tools` | `boolean` | Indicates whether to detect hacking tools. This detects potentially unwanted programs, as well as programs used by hackers.
Example: false | | `detect_suspicious_files` | `boolean` | Indicates whether to detect suspicious files. In scheduled scans, the tool scans computer software but does not run it. Some types of threats have a lower chance of detection. Set this option to true to scan with heuristic algorithms and improve detection rates.
Example: true | | `scan_compressed_files` | `boolean` | Indicates whether to scan compressed files. This decompresses compressed files and scans their contents.
Example: true | | `apply_exclusions_on_scan` | `boolean` | Indicates whether to exclude items from the scan, such as specific files, files with a specific extension, or a specific directory.
Example: false | -| `extensions_to_exclude` | `str` | List of file extensions to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "exe","pdf" | -| `files_to_exclude` | `str` | List of file names (with their extensions) to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "Chrome.exe", "Explorer.exe" | -| `folders_to_exclude` | `str` | List of folders to exclude from the scan. You must include the full path.
Works only when apply_exclusions_on_scan is true.
Example: "D:/shared_drive/documents" | -| `execution_window_expiration` | `str` | Time period in which the scan must run before it times out. The default is 7 days.
Example: 8.07:06:05 specifies 8 days, 7 hours, 6 minutes, and 5 seconds | +| `extensions_to_exclude` | `string` | List of file extensions to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "exe","pdf" | +| `files_to_exclude` | `string` | List of file names (with their extensions) to exclude from the scan.
Works only when apply_exclusions_on_scan is true.
Example: "Chrome.exe", "Explorer.exe" | +| `folders_to_exclude` | `string` | List of folders to exclude from the scan. You must include the full path.
Works only when apply_exclusions_on_scan is true.
Example: "D:/shared_drive/documents" | +| `execution_window_expiration` | `string` | Time period in which the scan must run before it times out. The default is 7 days.
Example: 8.07:06:05 specifies 8 days, 7 hours, 6 minutes, and 5 seconds | **Outputs** @@ -412,4 +401,4 @@ Uninstalls protection from the specified devices. ## Extra -Module **`Panda Security` v1.19** \ No newline at end of file +Module **`Panda Security` v1.23.0** \ No newline at end of file diff --git a/_shared_content/automate/library/proofpoint.md b/_shared_content/automate/library/proofpoint.md index 168887d638..9466cabccd 100644 --- a/_shared_content/automate/library/proofpoint.md +++ b/_shared_content/automate/library/proofpoint.md @@ -47,4 +47,4 @@ Forward Proofpoint TAP Events ## Extra -Module **`Proofpoint` v1.12** \ No newline at end of file +Module **`Proofpoint` v1.16.0** \ No newline at end of file diff --git a/_shared_content/automate/library/public-suffix.md b/_shared_content/automate/library/public-suffix.md index 8dfc6908ba..51fce68bfc 100644 --- a/_shared_content/automate/library/public-suffix.md +++ b/_shared_content/automate/library/public-suffix.md @@ -1,5 +1,7 @@ # Public Suffix +![Public Suffix](/assets/playbooks/library/public-suffix.png){ align=right width=150 } + The [Public Suffix List](https://publicsuffix.org/) is an initiative of [Mozilla](https://www.mozilla.org/) to list of all known public suffixes ## Configuration @@ -21,4 +23,4 @@ Get the list of private domains ## Extra -Module **`Public Suffix` v1.18** \ No newline at end of file +Module **`Public Suffix` v1.21.0** \ No newline at end of file diff --git a/_shared_content/automate/library/retarus.md b/_shared_content/automate/library/retarus.md new file mode 100644 index 0000000000..9fb047ae4e --- /dev/null +++ b/_shared_content/automate/library/retarus.md @@ -0,0 +1,14 @@ +# Retarus + +![Retarus](/assets/playbooks/library/retarus.png){ align=right width=150 } + +Retarus connector + +## Configuration + +This module accepts no configuration. + + +## Extra + +Module **`Retarus` v1.1.2** \ No newline at end of file diff --git a/_shared_content/automate/library/riskiq.md b/_shared_content/automate/library/riskiq.md index c3e4c67145..70a02bf72e 100644 --- a/_shared_content/automate/library/riskiq.md +++ b/_shared_content/automate/library/riskiq.md @@ -349,4 +349,4 @@ Get WHOIS records associated with a phone number ## Extra -Module **`RiskIQ` v1.22** \ No newline at end of file +Module **`RiskIQ` v1.25.1** \ No newline at end of file diff --git a/_shared_content/automate/library/rss.md b/_shared_content/automate/library/rss.md index a0df50c4d7..49ccd169a2 100644 --- a/_shared_content/automate/library/rss.md +++ b/_shared_content/automate/library/rss.md @@ -34,4 +34,4 @@ Trigger playbook when new posts are published ## Extra -Module **`RSS` v1.25** \ No newline at end of file +Module **`RSS` v1.28.0** \ No newline at end of file diff --git a/_shared_content/automate/library/salesforce.md b/_shared_content/automate/library/salesforce.md index 5d5119462c..4f09d55b2f 100644 --- a/_shared_content/automate/library/salesforce.md +++ b/_shared_content/automate/library/salesforce.md @@ -16,7 +16,7 @@ Salesforce provides users comprehensive tools to manage customer data, automate ## Triggers -### [BETA] Collect Salesforce events +### Collect Salesforce events Trigger playbook to get Salesforce information @@ -28,8 +28,9 @@ Trigger playbook to get Salesforce information | `intake_key` | `string` | Intake key to use when sending events | | `chunk_size` | `integer` | The max size of chunks for the batch processing | | `frequency` | `integer` | Batch frequency in seconds | +| `fetch_daily_logs` | `boolean` | Fetch daily logs. By default, it will fetch Hourly logs | ## Extra -Module **`Salesforce` v1.5.2** \ No newline at end of file +Module **`Salesforce` v1.6.1** \ No newline at end of file diff --git a/_shared_content/automate/library/sekoia-io.md b/_shared_content/automate/library/sekoia-io.md index 9fd6136ce9..1d7375fe19 100644 --- a/_shared_content/automate/library/sekoia-io.md +++ b/_shared_content/automate/library/sekoia-io.md @@ -6,10 +6,7 @@ Sekoia.io ## Configuration -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `api_key` | `string` | Sekoia.io API key | -| `base_url` | `string` | Sekoia.io base URL (ex. https://api.sekoia.io) | +This module accepts no configuration. ## Triggers @@ -150,6 +147,7 @@ Get all non-revoked objects from Sekoia.io Intelligence feed | --------- | ------- | --------------------------- | | `feed_id` | `string` | ID of the Sekoia.io feed to get data from | | `batch_size_limit` | `integer` | Size of the batch of elements to get from the Sekoia.io feed in one time | +| `modified_after` | `string` | Date from which IOCs should be retrieved. It must be a valid RFC-3339 date-time string (i.e. 2024-04-12T23:20:50.52Z) | **Outputs** @@ -169,6 +167,7 @@ Get all valid IOCs from Sekoia.io Intelligence feed | --------- | ------- | --------------------------- | | `feed_id` | `string` | ID of the Sekoia.io feed to get data from | | `batch_size_limit` | `integer` | Size of the batch of elements to get from the Sekoia.io feed in one time | +| `modified_after` | `string` | Date from which IOCs should be retrieved. It must be a valid RFC-3339 date-time string (i.e. 2024-04-12T23:20:50.52Z) | **Outputs** @@ -338,6 +337,82 @@ Create a notification for a specific tracker | --------- | ------- | --------------------------- | | `data` | `object` | | +### Create rule + +Create a new rule + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `community_uuid` | `string` | | +| `name` | `string` | | +| `type` | `string` | | +| `description` | `string` | | +| `payload` | `string` | | +| `severity` | `integer` | | +| `effort` | `integer` | | +| `alert_type_uuid` | `string` | | +| `tags` | `array` | | +| `related_object_refs` | `array` | | +| `datasources` | `array` | | +| `event_fields` | `array` | | +| `enabled` | `boolean` | | +| `parameters` | `array` | | +| `all_entities` | `boolean` | | +| `entities` | `array` | | +| `all_assets` | `boolean` | | +| `assets` | `array` | | +| `goal` | `string` | | +| `false_positives` | `string` | | +| `similarity_strategy` | `array` | | +| `available_for_subcommunities` | `boolean` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the rule | +| `enabled` | `boolean` | Is the rule enabled ? | +| `community_uuid` | `string` | The community uuid if the rule is attached to one | +| `parameters` | `array` | The parameters of the rule | +| `all_entities` | `boolean` | Should the rule be applied on all entities ? | +| `entities` | `array` | The list of entities the rule should be applied on | +| `all_assets` | `boolean` | Should the rule be applied on all assets ? | +| `assets` | `array` | The list of assets identifiers the rule should be applied on | +| `last_compilation_success` | `boolean` | Did the last compilation succeed ? | +| `last_compilation_message` | `string` | The message of the last compilation | +| `last_compilation_at` | `string` | The last compilation date of the rule | +| `name` | `string` | The name of the rule | +| `type` | `` | The type of the rule | +| `private` | `boolean` | Is the rule available only for the community ? | +| `is_private` | `boolean` | Is the rule available only for the community ? | +| `description` | `string` | The descrition of the rule | +| `payload` | `string` | The payload of the rule | +| `severity` | `integer` | The severity of the rule | +| `effort` | `integer` | The effort of the rule | +| `alert_type` | `object` | The alert type associated to the rule | +| `alert_category` | `object` | The alert category associated to the rule | +| `tags` | `array` | The list of tags associated to the rule | +| `source` | `string` | The source of the rule | +| `verified` | `boolean` | Is the rule verified ? | +| `related_object_refs` | `array` | The list of reference of objects related to the rule | +| `datasources` | `array` | The list of datasources of the rule | +| `event_fields` | `array` | The list of fields to show when displaying a matched event | +| `similarity_strategy` | `array` | Similarity Strategy used by this rule | +| `created_at` | `string` | The creation date of the rule | +| `created_by` | `string` | The profile who created the rule | +| `created_by_type` | `string` | The profile type who created the rule can be 'avatar', 'application', 'apikey' | +| `updated_at` | `string` | The modification date of the rule | +| `updated_by` | `string` | The profile who updated the rule | +| `updated_by_type` | `string` | The profile type who updated the rule can be 'rule', 'application', 'apikey' | +| `goal` | `string` | A high-level description explaining the contribution of the rule | +| `false_positives` | `string` | A possible legitimate usage which can raise a false alert | +| `references` | `string` | Details on what led to write this rule | +| `available_for_subcommunities` | `boolean` | Is the rule available for subcommunities (if applicable) ? | +| `instance_uuid` | `string` | The identifier of the instance of the rule | + ### Create Asset Create a new asset @@ -373,6 +448,17 @@ Create a new asset | `community_uuid` | `string` | | | `category` | `object` | | +### Delete rule + +Delete a rule + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `community_uuid` | `string` | | + ### Delete an asset Delete the requested asset @@ -422,6 +508,118 @@ Mark as denied a countermeasure | `assignee` | `string` | UUID of the profile assigned to the progress of the countermeasure | | `created_at` | `string` | Date the countermeasure was created | +### Disable rule + +Disable a rule + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `community_uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the rule | +| `enabled` | `boolean` | Is the rule enabled ? | +| `community_uuid` | `string` | The community uuid if the rule is attached to one | +| `parameters` | `array` | The parameters of the rule | +| `all_entities` | `boolean` | Should the rule be applied on all entities ? | +| `entities` | `array` | The list of entities the rule should be applied on | +| `all_assets` | `boolean` | Should the rule be applied on all assets ? | +| `assets` | `array` | The list of assets identifiers the rule should be applied on | +| `last_compilation_success` | `boolean` | Did the last compilation succeed ? | +| `last_compilation_message` | `string` | The message of the last compilation | +| `last_compilation_at` | `string` | The last compilation date of the rule | +| `name` | `string` | The name of the rule | +| `type` | `` | The type of the rule | +| `private` | `boolean` | Is the rule available only for the community ? | +| `is_private` | `boolean` | Is the rule available only for the community ? | +| `description` | `string` | The descrition of the rule | +| `payload` | `string` | The payload of the rule | +| `severity` | `integer` | The severity of the rule | +| `effort` | `integer` | The effort of the rule | +| `alert_type` | `object` | The alert type associated to the rule | +| `alert_category` | `object` | The alert category associated to the rule | +| `tags` | `array` | The list of tags associated to the rule | +| `source` | `string` | The source of the rule | +| `verified` | `boolean` | Is the rule verified ? | +| `related_object_refs` | `array` | The list of reference of objects related to the rule | +| `datasources` | `array` | The list of datasources of the rule | +| `event_fields` | `array` | The list of fields to show when displaying a matched event | +| `similarity_strategy` | `array` | Similarity Strategy used by this rule | +| `created_at` | `string` | The creation date of the rule | +| `created_by` | `string` | The profile who created the rule | +| `created_by_type` | `string` | The profile type who created the rule can be 'avatar', 'application', 'apikey' | +| `updated_at` | `string` | The modification date of the rule | +| `updated_by` | `string` | The profile who updated the rule | +| `updated_by_type` | `string` | The profile type who updated the rule can be 'rule', 'application', 'apikey' | +| `goal` | `string` | A high-level description explaining the contribution of the rule | +| `false_positives` | `string` | A possible legitimate usage which can raise a false alert | +| `references` | `string` | Details on what led to write this rule | +| `available_for_subcommunities` | `boolean` | Is the rule available for subcommunities (if applicable) ? | +| `instance_uuid` | `string` | The identifier of the instance of the rule | + +### Enable rule + +Enable a rule + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `community_uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the rule | +| `enabled` | `boolean` | Is the rule enabled ? | +| `community_uuid` | `string` | The community uuid if the rule is attached to one | +| `parameters` | `array` | The parameters of the rule | +| `all_entities` | `boolean` | Should the rule be applied on all entities ? | +| `entities` | `array` | The list of entities the rule should be applied on | +| `all_assets` | `boolean` | Should the rule be applied on all assets ? | +| `assets` | `array` | The list of assets identifiers the rule should be applied on | +| `last_compilation_success` | `boolean` | Did the last compilation succeed ? | +| `last_compilation_message` | `string` | The message of the last compilation | +| `last_compilation_at` | `string` | The last compilation date of the rule | +| `name` | `string` | The name of the rule | +| `type` | `` | The type of the rule | +| `private` | `boolean` | Is the rule available only for the community ? | +| `is_private` | `boolean` | Is the rule available only for the community ? | +| `description` | `string` | The descrition of the rule | +| `payload` | `string` | The payload of the rule | +| `severity` | `integer` | The severity of the rule | +| `effort` | `integer` | The effort of the rule | +| `alert_type` | `object` | The alert type associated to the rule | +| `alert_category` | `object` | The alert category associated to the rule | +| `tags` | `array` | The list of tags associated to the rule | +| `source` | `string` | The source of the rule | +| `verified` | `boolean` | Is the rule verified ? | +| `related_object_refs` | `array` | The list of reference of objects related to the rule | +| `datasources` | `array` | The list of datasources of the rule | +| `event_fields` | `array` | The list of fields to show when displaying a matched event | +| `similarity_strategy` | `array` | Similarity Strategy used by this rule | +| `created_at` | `string` | The creation date of the rule | +| `created_by` | `string` | The profile who created the rule | +| `created_by_type` | `string` | The profile type who created the rule can be 'avatar', 'application', 'apikey' | +| `updated_at` | `string` | The modification date of the rule | +| `updated_by` | `string` | The profile who updated the rule | +| `updated_by_type` | `string` | The profile type who updated the rule can be 'rule', 'application', 'apikey' | +| `goal` | `string` | A high-level description explaining the contribution of the rule | +| `false_positives` | `string` | A possible legitimate usage which can raise a false alert | +| `references` | `string` | Details on what led to write this rule | +| `available_for_subcommunities` | `boolean` | Is the rule available for subcommunities (if applicable) ? | +| `instance_uuid` | `string` | The identifier of the instance of the rule | + ### Get aggregation query Make an aggregation query @@ -499,6 +697,37 @@ Retrieve the definition of an alert | `title` | `string` | | | `target` | `string` | | +### Get Community + +Retrieve a community + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The UUID of the community | +| `name` | `string` | The name of the community | +| `description` | `string` | The description of the community | +| `homepage_url` | `string` | URL of the community's homepage | +| `created_at` | `string` | The date and time the community was created | +| `created_by` | `string` | The user who created the community | +| `created_by_type` | `string` | The type of user who created the community | +| `updated_at` | `string` | The date and time the community was last updated | +| `is_parent` | `boolean` | Whether the community is a multi-tenant community | +| `parent_community_uuid` | `string` | The UUID of the parent community (if any) | +| `subcommunities` | `array` | List of UUIDs of communities that are managed by this multi-tenant community | +| `is_mfa_enforced` | `boolean` | Whether the community has enforced multi-factor authentication | +| `session_timeout` | `number` | The session timeout in minutes for the community (if any) | +| `disable_inactive_avatars` | `boolean` | Whether the community automatically disables inactive avatars (after 90 days) | +| `disabled` | `boolean` | Whether the community is disabled | + ### Get context Get reports from a specific term @@ -510,6 +739,37 @@ Get reports from a specific term | `sort` | `string` | | | `term` | `string` | | + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `items` | `array` | | +| `has_more` | `boolean` | | + +### Get Entity + +Retrieve an entity + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The UUID of the entity | +| `name` | `string` | The name of the entity | +| `entity_id` | `string` | The chosen ID of the entity | +| `community_uuid` | `string` | The UUID of the community the entity belongs to | +| `description` | `string` | The description of the entity | +| `alerts_generation` | `string` | Whether alerts generated for this entity require analyst approval | +| `number_of_intakes` | `number` | The number of configured intakes for this entity | + ### Get Event Field Common Values Get the most common values of fields observed under a specific query @@ -551,6 +811,92 @@ Query events | --------- | ------- | --------------------------- | | `events` | `array` | | +### Get Intake + +Retrieve an intake + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The UUID of the intake | +| `name` | `string` | The name of the intake | +| `community_uuid` | `string` | The UUID of the community the intake belongs to | +| `format_uuid` | `string` | The UUID of the format of the intake | +| `intake_key` | `string` | The key to use to send events to the intake | +| `created_at` | `string` | The date and time the intake was created | +| `created_by` | `string` | The user who created the intake | +| `created_by_type` | `string` | The type of user who created the intake | +| `updated_at` | `string` | The date and time the intake was last updated | +| `updated_by` | `string` | The user who last updated the intake | +| `updated_by_type` | `string` | The type of user who last updated the intake | +| `is_custom_format` | `boolean` | Whether the format is custom (not maintained by Sekoia) | +| `connector_configuration_uuid` | `string` | The UUID of the connector configuration, for pulling intakes | +| `status` | `string` | A string representation of the status of the intake (mainly for pulling intakes) | +| `entity` | `` | | + +### Get rule + +Get a rule + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the rule | +| `enabled` | `boolean` | Is the rule enabled ? | +| `community_uuid` | `string` | The community uuid if the rule is attached to one | +| `parameters` | `array` | The parameters of the rule | +| `all_entities` | `boolean` | Should the rule be applied on all entities ? | +| `entities` | `array` | The list of entities the rule should be applied on | +| `all_assets` | `boolean` | Should the rule be applied on all assets ? | +| `assets` | `array` | The list of assets identifiers the rule should be applied on | +| `last_compilation_success` | `boolean` | Did the last compilation succeed ? | +| `last_compilation_message` | `string` | The message of the last compilation | +| `last_compilation_at` | `string` | The last compilation date of the rule | +| `name` | `string` | The name of the rule | +| `type` | `` | The type of the rule | +| `private` | `boolean` | Is the rule available only for the community ? | +| `is_private` | `boolean` | Is the rule available only for the community ? | +| `description` | `string` | The descrition of the rule | +| `payload` | `string` | The payload of the rule | +| `severity` | `integer` | The severity of the rule | +| `effort` | `integer` | The effort of the rule | +| `alert_type` | `object` | The alert type associated to the rule | +| `alert_category` | `object` | The alert category associated to the rule | +| `tags` | `array` | The list of tags associated to the rule | +| `source` | `string` | The source of the rule | +| `verified` | `boolean` | Is the rule verified ? | +| `related_object_refs` | `array` | The list of reference of objects related to the rule | +| `datasources` | `array` | The list of datasources of the rule | +| `event_fields` | `array` | The list of fields to show when displaying a matched event | +| `similarity_strategy` | `array` | Similarity Strategy used by this rule | +| `created_at` | `string` | The creation date of the rule | +| `created_by` | `string` | The profile who created the rule | +| `created_by_type` | `string` | The profile type who created the rule can be 'avatar', 'application', 'apikey' | +| `updated_at` | `string` | The modification date of the rule | +| `updated_by` | `string` | The profile who updated the rule | +| `updated_by_type` | `string` | The profile type who updated the rule can be 'rule', 'application', 'apikey' | +| `goal` | `string` | A high-level description explaining the contribution of the rule | +| `false_positives` | `string` | A possible legitimate usage which can raise a false alert | +| `references` | `string` | Details on what led to write this rule | +| `available_for_subcommunities` | `boolean` | Is the rule available for subcommunities (if applicable) ? | +| `instance_uuid` | `string` | The identifier of the instance of the rule | + ### Create Content Proposal Create Content Proposal @@ -878,7 +1224,84 @@ Triggers an action on an alert to update its status | --------- | ------- | --------------------------- | | `actions` | `array` | | +### Update rule + +Update a rule + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | | +| `community_uuid` | `string` | | +| `name` | `string` | | +| `type` | `string` | | +| `description` | `string` | | +| `payload` | `string` | | +| `severity` | `integer` | | +| `effort` | `integer` | | +| `alert_type_uuid` | `string` | | +| `tags` | `array` | | +| `related_object_refs` | `array` | | +| `datasources` | `array` | | +| `event_fields` | `array` | | +| `enabled` | `boolean` | | +| `parameters` | `array` | | +| `all_entities` | `boolean` | | +| `entities` | `array` | | +| `all_assets` | `boolean` | | +| `assets` | `array` | | +| `goal` | `string` | | +| `false_positives` | `string` | | +| `similarity_strategy` | `array` | | +| `available_for_subcommunities` | `boolean` | | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuid` | `string` | The identifier of the rule | +| `enabled` | `boolean` | Is the rule enabled ? | +| `community_uuid` | `string` | The community uuid if the rule is attached to one | +| `parameters` | `array` | The parameters of the rule | +| `all_entities` | `boolean` | Should the rule be applied on all entities ? | +| `entities` | `array` | The list of entities the rule should be applied on | +| `all_assets` | `boolean` | Should the rule be applied on all assets ? | +| `assets` | `array` | The list of assets identifiers the rule should be applied on | +| `last_compilation_success` | `boolean` | Did the last compilation succeed ? | +| `last_compilation_message` | `string` | The message of the last compilation | +| `last_compilation_at` | `string` | The last compilation date of the rule | +| `name` | `string` | The name of the rule | +| `type` | `` | The type of the rule | +| `private` | `boolean` | Is the rule available only for the community ? | +| `is_private` | `boolean` | Is the rule available only for the community ? | +| `description` | `string` | The descrition of the rule | +| `payload` | `string` | The payload of the rule | +| `severity` | `integer` | The severity of the rule | +| `effort` | `integer` | The effort of the rule | +| `alert_type` | `object` | The alert type associated to the rule | +| `alert_category` | `object` | The alert category associated to the rule | +| `tags` | `array` | The list of tags associated to the rule | +| `source` | `string` | The source of the rule | +| `verified` | `boolean` | Is the rule verified ? | +| `related_object_refs` | `array` | The list of reference of objects related to the rule | +| `datasources` | `array` | The list of datasources of the rule | +| `event_fields` | `array` | The list of fields to show when displaying a matched event | +| `similarity_strategy` | `array` | Similarity Strategy used by this rule | +| `created_at` | `string` | The creation date of the rule | +| `created_by` | `string` | The profile who created the rule | +| `created_by_type` | `string` | The profile type who created the rule can be 'avatar', 'application', 'apikey' | +| `updated_at` | `string` | The modification date of the rule | +| `updated_by` | `string` | The profile who updated the rule | +| `updated_by_type` | `string` | The profile type who updated the rule can be 'rule', 'application', 'apikey' | +| `goal` | `string` | A high-level description explaining the contribution of the rule | +| `false_positives` | `string` | A possible legitimate usage which can raise a false alert | +| `references` | `string` | Details on what led to write this rule | +| `available_for_subcommunities` | `boolean` | Is the rule available for subcommunities (if applicable) ? | +| `instance_uuid` | `string` | The identifier of the instance of the rule | + ## Extra -Module **`Sekoia.io` v2.58.2** \ No newline at end of file +Module **`Sekoia.io` v2.64.1** \ No newline at end of file diff --git a/_shared_content/automate/library/sentinelone.md b/_shared_content/automate/library/sentinelone.md index 8b82628193..ea8e351a14 100644 --- a/_shared_content/automate/library/sentinelone.md +++ b/_shared_content/automate/library/sentinelone.md @@ -13,7 +13,7 @@ This module interacts with the SentinelOne ## Triggers -### Consume events from SentinelOne DeepVisibility +### [DEPRECATED] Consume events from SentinelOne DeepVisibility Consume events from SentinelOne DeepVisibility’s Kafka brokers @@ -30,8 +30,51 @@ Consume events from SentinelOne DeepVisibility’s Kafka brokers | `group_id` | `string` | Kafka consumer group | | `topic` | `string` | Kafka topic | + +### Collect SentinelOne alerts + +Collect activities and threats from SentinelOne + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | + ## Actions +### Create IOCs + +Push IOCs in the Threat Intelligence API of SentinelOne + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `sekoia_base_url` | `string` | Sekoia base URL | +| `stix_objects_path` | `string` | Filepath of the STIX objects fetched from the collection | +| `filters` | `object` | Filter where to add iocs | + +### Create Threat Note + +Create a threat note in SentinelOne + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `text` | `string` | Text to add to the note | +| `filters` | `object` | Filters to select the threats to which a note will be added | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `affected` | `integer` | The number of threats to which the note was added | + ### Deisolate an endpoint Connect the endpoint back to the network @@ -74,6 +117,26 @@ Fetch the malwares associated to a threat | `status_reason` | `string` | The reason of the status | | `files` | `object` | The list of retrieved files | +### Init a scan + +Run a Full Disk Scan on Agents that match the filter + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `uuids` | `array` | The list of Agent uuids to filter by | +| `account_ids` | `array` | The list of Account IDs to filter by | +| `group_ids` | `array` | The list of network group to filter by | +| `site_ids` | `array` | The list of Site IDs to filter by | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `affected` | `integer` | The number of scanned agents | + ### Isolate an endpoint Disconnect the endpoint from the network @@ -143,7 +206,25 @@ Execute a remote script and get the results | `status_reason` | `string` | The reason of the status | | `result_file` | `object` | The url to download the result (for cloud destination) | +### Update Threat Incident + +Update a threat incident in SentinelOne + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `status` | `string` | Status applied to the incident | +| `filters` | `object` | Filters to select the threats to update | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `affected` | `integer` | The number of threats incidents updated | + ## Extra -Module **`SentinelOne` v1.12** \ No newline at end of file +Module **`SentinelOne` v1.18.3** \ No newline at end of file diff --git a/_shared_content/automate/library/sentinelonedeepvisibility.md b/_shared_content/automate/library/sentinelonedeepvisibility.md index 823e50e0c7..3fa913834e 100644 --- a/_shared_content/automate/library/sentinelonedeepvisibility.md +++ b/_shared_content/automate/library/sentinelonedeepvisibility.md @@ -31,4 +31,4 @@ Consume SentinelOne DeepVisibility events from S3 objects based on notifications ## Extra -Module **`SentinelOneDeepVisibility` v1.0.2** \ No newline at end of file +Module **`SentinelOneDeepVisibility` v1.1.0** \ No newline at end of file diff --git a/_shared_content/automate/library/servicenow.md b/_shared_content/automate/library/servicenow.md index 2b381d5f09..beb016241e 100644 --- a/_shared_content/automate/library/servicenow.md +++ b/_shared_content/automate/library/servicenow.md @@ -34,4 +34,4 @@ Retrieve Service Now table ## Extra -Module **`ServiceNow` v1.22** \ No newline at end of file +Module **`ServiceNow` v1.25.0** \ No newline at end of file diff --git a/_shared_content/automate/library/shodan.md b/_shared_content/automate/library/shodan.md index 1a1e1e60fb..64d8650a71 100644 --- a/_shared_content/automate/library/shodan.md +++ b/_shared_content/automate/library/shodan.md @@ -42,13 +42,6 @@ Look up the IP address for the provided list of hostnames. | --------- | ------- | --------------------------- | | `hostnames` | `array` | List of hostnames; example "google.com". | - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `` | | - ### Lookup DNS Look up the hostnames that have been defined for the given list of IP addresses. @@ -59,13 +52,6 @@ Look up the hostnames that have been defined for the given list of IP addresses. | --------- | ------- | --------------------------- | | `ips` | `array` | List of IP addresses; example "74.125.227.230" | - -**Outputs** - -| Name | Type | Description | -| --------- | ------- | --------------------------- | -| `type` | `` | | - ### Get Host Returns all services that have been found for the given host IP. @@ -93,9 +79,9 @@ Returns all services that have been found for the given host IP. | `country_code` | `string` | | | `data` | `array` | | | `city` | `string` | | -| `longitude` | `float` | | +| `longitude` | `number` | | | `country_code3` | `string` | | -| `latitude` | `float` | | +| `latitude` | `number` | | | `os` | `string` | | | `ports` | `array` | | @@ -144,4 +130,4 @@ Search Shodan using the same query syntax as the website and use facets to get s ## Extra -Module **`Shodan` v1.22** \ No newline at end of file +Module **`Shodan` v1.25.0** \ No newline at end of file diff --git a/_shared_content/automate/library/skyhigh-security.md b/_shared_content/automate/library/skyhigh-security.md index 62f4a4ff93..c9f183559e 100644 --- a/_shared_content/automate/library/skyhigh-security.md +++ b/_shared_content/automate/library/skyhigh-security.md @@ -32,4 +32,4 @@ Fetch events from Skyhigh Security Secure Web Gateway (SWG) API ## Extra -Module **`Skyhigh Security` v1.10** \ No newline at end of file +Module **`Skyhigh Security` v1.15.0** \ No newline at end of file diff --git a/_shared_content/automate/library/sophos.md b/_shared_content/automate/library/sophos.md index 2f63a7e2ea..0e13aa8aa3 100644 --- a/_shared_content/automate/library/sophos.md +++ b/_shared_content/automate/library/sophos.md @@ -46,4 +46,4 @@ Query last IoCs from the Sophos Data lake ## Extra -Module **`Sophos` v1.11.7** \ No newline at end of file +Module **`Sophos` v1.16.5** \ No newline at end of file diff --git a/_shared_content/automate/library/tehtris.md b/_shared_content/automate/library/tehtris.md index aa60381983..e86a2943ac 100644 --- a/_shared_content/automate/library/tehtris.md +++ b/_shared_content/automate/library/tehtris.md @@ -31,4 +31,4 @@ Get last events from the TEHTRIS XDR platform ## Extra -Module **`TEHTRIS` v1.13.1** \ No newline at end of file +Module **`TEHTRIS` v1.15.1** \ No newline at end of file diff --git a/_shared_content/automate/library/the-hive-v5.md b/_shared_content/automate/library/the-hive-v5.md new file mode 100644 index 0000000000..681a5aeff9 --- /dev/null +++ b/_shared_content/automate/library/the-hive-v5.md @@ -0,0 +1,58 @@ +# The Hive V5 + +![The Hive V5](/assets/playbooks/library/the-hive-v5.png){ align=right width=150 } + +[TheHive](https://thehive-project.org/) is a scalable, open source and free Security Incident Response Platform + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | Your TheHive instance URL | +| `apikey` | `string` | An API key | +| `organisation` | `string` | The user organisation | + +## Actions + +### Create an alert in The Hive v5 + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `alert` | `object` | A Sekoia.io alert | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `_id` | `string` | | +| `_type` | `string` | | +| `_createdBy` | `string` | | +| `_createdAt` | `integer` | | +| `type` | `string` | | +| `source` | `string` | | +| `sourceRef` | `string` | | +| `title` | `string` | | +| `description` | `string` | | +| `severity` | `integer` | | +| `date` | `integer` | | +| `tags` | `array` | | +| `tlp` | `integer` | | +| `pap` | `integer` | | +| `status` | `string` | | +| `follow` | `boolean` | | +| `customFields` | `object` | | +| `observableCount` | `integer` | | +| `stage` | `string` | | +| `extraData` | `object` | | +| `newDate` | `integer` | | +| `timeToDetect` | `integer` | | + + +## Extra + +Module **`The Hive V5` v1.0.0** \ No newline at end of file diff --git a/_shared_content/automate/library/the-hive.md b/_shared_content/automate/library/the-hive.md index a06da181e2..c491fa23bb 100644 --- a/_shared_content/automate/library/the-hive.md +++ b/_shared_content/automate/library/the-hive.md @@ -56,4 +56,4 @@ ## Extra -Module **`The Hive` v1.14** \ No newline at end of file +Module **`The Hive` v1.23.0** \ No newline at end of file diff --git a/_shared_content/automate/library/tranco.md b/_shared_content/automate/library/tranco.md index 93966eb757..a853e932ad 100644 --- a/_shared_content/automate/library/tranco.md +++ b/_shared_content/automate/library/tranco.md @@ -33,4 +33,4 @@ Fetches Tranco list ## Extra -Module **`Tranco` v1.22** \ No newline at end of file +Module **`Tranco` v1.25.0** \ No newline at end of file diff --git a/_shared_content/automate/library/trellix.md b/_shared_content/automate/library/trellix.md index df9a665309..4d78bafc68 100644 --- a/_shared_content/automate/library/trellix.md +++ b/_shared_content/automate/library/trellix.md @@ -1,14 +1,23 @@ # Trellix +![Trellix](/assets/playbooks/library/trellix.png){ align=right width=150 } + Trellix has been involved in the detection and prevention of major cybersecurity attacks. It provides hardware, software, and services to investigate cybersecurity attacks, protect against malicious software, and analyze IT security risks ## Configuration -This module accepts no configuration. +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `client_id` | `string` | Client id to interact with Trellix API | +| `client_secret` | `string` | Client secret to interact with Trellix API | +| `api_key` | `string` | Api key to interact with Trellix API | +| `delay` | `integer` | Delay between running the connector | +| `base_url` | `string` | Base url of the Trellix API | +| `auth_url` | `string` | Url of the authentication server | ## Triggers -### [ALPHA] Get Trellix ePo events +### [ALPHA] Get Trellix EDR events Trigger playbook to get Trellix events information @@ -16,18 +25,32 @@ Trigger playbook to get Trellix events information | Name | Type | Description | | --------- | ------- | --------------------------- | -| `client_id` | `string` | Client id to interact with Trellix API | -| `client_secret` | `string` | Client secret to interact with Trellix API | -| `api_key` | `string` | Api key to interact with Trellix API | -| `delay` | `integer` | Delay between running the connector | -| `base_url` | `string` | Base url of the Trellix API | -| `auth_url` | `string` | Url of the authentication server | +| `frequency` | `integer` | Interval, in seconds, between two fetches of events | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | | `ratelimit_per_minute` | `integer` | Maximum number of requests per minute | +| `ratelimit_per_day` | `integer` | Maximum number of requests per day | | `records_per_request` | `integer` | Number of records to fetch per 1 request | + + +### [ALPHA] Get Trellix ePO events + +Trigger playbook to get Trellix events information + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Interval, in seconds, between two fetches of events | | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `ratelimit_per_minute` | `integer` | Maximum number of requests per minute | +| `ratelimit_per_day` | `integer` | Maximum number of requests per day | +| `records_per_request` | `integer` | Number of records to fetch per 1 request | ## Extra -Module **`Trellix` v1.2** \ No newline at end of file +Module **`Trellix` v1.10.0** \ No newline at end of file diff --git a/_shared_content/automate/library/trend-micro.md b/_shared_content/automate/library/trend-micro.md index 93c0ca9e3d..f9b45372b2 100644 --- a/_shared_content/automate/library/trend-micro.md +++ b/_shared_content/automate/library/trend-micro.md @@ -10,7 +10,7 @@ This module accepts no configuration. ## Triggers -### [BETA] Fetch new logs +### Fetch new logs Get last logs from the Trend Micro Email Security platform @@ -29,4 +29,4 @@ Get last logs from the Trend Micro Email Security platform ## Extra -Module **`Trend Micro` v1.2.0** \ No newline at end of file +Module **`Trend Micro` v1.4.0** \ No newline at end of file diff --git a/_shared_content/automate/library/triage.md b/_shared_content/automate/library/triage.md index 5650fec424..dde0d89b88 100644 --- a/_shared_content/automate/library/triage.md +++ b/_shared_content/automate/library/triage.md @@ -23,6 +23,7 @@ Get Triage configs | --------- | ------- | --------------------------- | | `frequency` | `integer` | Frequency at which the script collects IOCs | | `malware_list` | `array` | List of malware family | +| `exclude_signed` | `boolean` | Do not retrieve report with signed binary | **Outputs** @@ -55,4 +56,4 @@ Triage raw results to observables ## Extra -Module **`Triage` v1.33** \ No newline at end of file +Module **`Triage` v1.37.0** \ No newline at end of file diff --git a/_shared_content/automate/library/ubika.md b/_shared_content/automate/library/ubika.md index d47dc9e840..e691b56506 100644 --- a/_shared_content/automate/library/ubika.md +++ b/_shared_content/automate/library/ubika.md @@ -12,7 +12,24 @@ This module accepts no configuration. ### [BETA] Fetch new alerts from Ubika Cloud Protector +Ubika Cloud Protector - Alerts +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `chunk_size` | `integer` | The size of chunks for the batch processing | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `provider` | `string` | Id of cirrus provider | +| `tenant` | `string` | Id of cirrus tenant | +| `token` | `string` | API token | + + +### [BETA] Fetch new traffic events from Ubika Cloud Protector + +Ubika Cloud Protector - Traffic **Arguments** @@ -29,4 +46,4 @@ This module accepts no configuration. ## Extra -Module **`Ubika` v0.1.1** \ No newline at end of file +Module **`Ubika` v1.0.1** \ No newline at end of file diff --git a/_shared_content/automate/library/utils.md b/_shared_content/automate/library/utils.md index 1fc6406d74..924501b0d3 100644 --- a/_shared_content/automate/library/utils.md +++ b/_shared_content/automate/library/utils.md @@ -105,4 +105,4 @@ Wait ## Extra -Module **`Utils` v1.3.1** \ No newline at end of file +Module **`Utils` v1.4.0** \ No newline at end of file diff --git a/_shared_content/automate/library/vade-cloud.md b/_shared_content/automate/library/vade-cloud.md index 718399c8ff..58c4ead205 100644 --- a/_shared_content/automate/library/vade-cloud.md +++ b/_shared_content/automate/library/vade-cloud.md @@ -14,7 +14,7 @@ ## Triggers -### [BETA] Fetch new logs from Vade Cloud +### Fetch new logs from Vade Cloud Get last logs from the Vade Cloud platform @@ -30,4 +30,4 @@ Get last logs from the Vade Cloud platform ## Extra -Module **`Vade Cloud` v1.4.0** \ No newline at end of file +Module **`Vade Cloud` v1.5.0** \ No newline at end of file diff --git a/_shared_content/automate/library/vade-secure.md b/_shared_content/automate/library/vade-secure.md index 33d59e275a..3d0f35c4d1 100644 --- a/_shared_content/automate/library/vade-secure.md +++ b/_shared_content/automate/library/vade-secure.md @@ -26,6 +26,8 @@ Get last M365 Email Events | `frequency` | `integer` | Batch frequency in seconds | | `tenant_id` | `string` | Identifier of your 365 Tenant | | `chunk_size` | `integer` | The max size of chunks for the batch processing | +| `pagination_limit` | `integer` | Limit of records to fetch from the API per request | +| `rate_limit` | `integer` | Limit of requests per second to VadeSecure API | **Outputs** @@ -37,4 +39,4 @@ Get last M365 Email Events ## Extra -Module **`Vade Secure` v1.44** \ No newline at end of file +Module **`Vade Secure` v1.51.0** \ No newline at end of file diff --git a/_shared_content/automate/library/virustotal.md b/_shared_content/automate/library/virustotal.md index 1599dd12fe..8089bc0040 100644 --- a/_shared_content/automate/library/virustotal.md +++ b/_shared_content/automate/library/virustotal.md @@ -218,4 +218,4 @@ Scan url with Virus Total ## Extra -Module **`VirusTotal` v1.25** \ No newline at end of file +Module **`VirusTotal` v1.28.0** \ No newline at end of file diff --git a/_shared_content/automate/library/whois.md b/_shared_content/automate/library/whois.md index adefdafc01..c2444de34b 100644 --- a/_shared_content/automate/library/whois.md +++ b/_shared_content/automate/library/whois.md @@ -32,4 +32,4 @@ Provides data enrichment for Domains, URLs, and IP addresses. ## Extra -Module **`Whois` v1.21** \ No newline at end of file +Module **`Whois` v1.24.0** \ No newline at end of file diff --git a/_shared_content/automate/library/withsecure.md b/_shared_content/automate/library/withsecure.md index 0fea14f772..352c1c4906 100644 --- a/_shared_content/automate/library/withsecure.md +++ b/_shared_content/automate/library/withsecure.md @@ -37,6 +37,13 @@ Add comment on Incident. | `target` | `string` | Incident identifier to comment. | | `comment` | `string` | Comment. | + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `items` | `array` | | + ### Isolate Device From Network Isolate a device from network connections. @@ -48,6 +55,14 @@ Isolate a device from network connections. | `target` | `string` | Device identifier of the computer to isolate. | | `message` | `string` | Optional message that is displayed on isolated device. | + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `multistatus` | `array` | | +| `transactionId` | `string` | | + ### List Detections For Incident List Detections For Incident. @@ -58,6 +73,13 @@ List Detections For Incident. | --------- | ------- | --------------------------- | | `target` | `string` | Incident identifier to list detections. | + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `detections` | `array` | | + ### List devices Retrieves devices details. @@ -85,6 +107,14 @@ Release a device from network isolation. | --------- | ------- | --------------------------- | | `target` | `string` | Device identifier of the computer to release. | + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `multistatus` | `array` | | +| `transactionId` | `string` | | + ### Scan Device For Malware Scan Device For Malware. @@ -95,6 +125,14 @@ Scan Device For Malware. | --------- | ------- | --------------------------- | | `target` | `string` | Device identifier to scan for malware. | + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `multistatus` | `array` | | +| `transactionId` | `string` | | + ### Update status on Incident Update status on Incident. @@ -103,11 +141,19 @@ Update status on Incident. | Name | Type | Description | | --------- | ------- | --------------------------- | -| `target` | `string` | Incident identifier to comment. | +| `target` | `string` | Incident identifier to update. | | `status` | `string` | Status. | | `resolution` | `string` | Resolution. | +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `multistatus` | `string` | | +| `transactionId` | `string` | | + + ## Extra -Module **`WithSecure` v2.14.0** \ No newline at end of file +Module **`WithSecure` v2.15.1** \ No newline at end of file diff --git a/_shared_content/automate/library/zscaler.md b/_shared_content/automate/library/zscaler.md index f379ff2e84..8d479da115 100644 --- a/_shared_content/automate/library/zscaler.md +++ b/_shared_content/automate/library/zscaler.md @@ -49,4 +49,4 @@ UnBlock the provided IOCs: IP / domain ## Extra -Module **`Zscaler` v0.1.3** \ No newline at end of file +Module **`Zscaler` v1.0.0** \ No newline at end of file diff --git a/docs/assets/playbooks/library/binaryedge-s-api.png b/docs/assets/playbooks/library/binaryedge-s-api.png index 61387fac6e9b5645401953eb29f83ad30981ecca..87085b5432aae239840a9fa641e451f058dd25f0 100644 GIT binary patch literal 24000 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 literal 23957 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 diff --git a/docs/assets/playbooks/library/cato-networks.png b/docs/assets/playbooks/library/cato-networks.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0aa36a868fd3374d97c4637127490b3d0f6a52 GIT binary patch literal 6872 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 X&~+F8C80tHTy$`+rP*r}r{Mnq9j%bO literal 11843 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 diff --git a/docs/assets/playbooks/library/crowdstrike.png b/docs/assets/playbooks/library/crowdstrike.png index 2394a089d97c0809381799067eb9215f47307ff2..40a2dff36edecb1710d6e98212353ae9c908d3c6 100644 GIT binary patch literal 9041 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 diff --git a/docs/assets/playbooks/library/cybereason.png b/docs/assets/playbooks/library/cybereason.png index 22c11bcdf4258a0d72b5e41eae71030104f3fb41..051b5c911cd78aaa61202e229ee295755443acf8 100644 GIT binary patch literal 28428 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 literal 27685 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 diff --git a/docs/assets/playbooks/library/darktrace.png b/docs/assets/playbooks/library/darktrace.png index 7b75ca8585b3020a709cc00127e501356afc70b6..1bfa56b93cafa746f2c9b37a80ed94f0aa79bfb6 100644 GIT binary patch literal 9231 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 bZ;!!h1UV%~JcI)O=mT9-*F}|HxfSwXY47LI literal 8673 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 diff --git a/docs/assets/playbooks/library/fastly.png b/docs/assets/playbooks/library/fastly.png new file mode 100644 index 0000000000000000000000000000000000000000..362d37ad220a25de1d4d9ba2c1dd7449e0c642c4 GIT binary patch literal 24620 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 literal 0 HcmV?d00001 diff --git a/docs/assets/playbooks/library/harfanglab.png b/docs/assets/playbooks/library/harfanglab.png index 381701b2c9e42952b2b655ae0b8353e534217086..5d00329c4665740222b97719999c9f7cb4f140cd 100644 GIT binary patch literal 2793 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 HOY}bhg+o*6 literal 18157 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 NEgnnEETj+5{(t|{n;!rG diff --git a/docs/assets/playbooks/library/iknowwhatyoudownload.png b/docs/assets/playbooks/library/iknowwhatyoudownload.png index c06b7abbb7fb7c9890e0ecc82d54881ce78d09a9..01687b70047f7c7c8b530a23b83d48fab1b3503d 100644 GIT binary patch literal 46656 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%0D~NIl zP2fmU6FCil)_qGz(AIO~3sjY+fc5N*QK#jmw^E`+Q+4~O_NrCgZUCViuDjWez@zNr z%lF^)o4@4?O>TC*F&$@**R&FGKQo}z( z>WXeWN)1g1(r~yn-w|y0vAJa*_{jVI{crlO+`nhw5A-@^f1?j$0+X5z@h?K1WH7e7!_>j0)^v^py#uEZQs6|e)#n_{)2yjYp+HGX6MWa017~~S{7H- zBQhAES_&Ms;4-FwwHq*NA_o5_8OW>($bb&eVXQ08fLCW07GLtB zSG@Jj{MzruY!5{@5S#*DK?Wi?jTXTIuz*LQqF9T?PXX)Mg{!vq`l#7?yYH6O8XW;} z=CQSfPkiblzxEsFKJ$gE6*J|)+n@yI=drnoV3+}Nkr)v`4o*={Q#+^Q8KO9d0u=x< zEgh`K$O{Z3wkr@Yo1yY@4%p}{%GFoj@2i7lax#AS#B#<=^+Gzz#2e=xf>%RCWA;BMqouq?qO$fCE$rLe8|xs!gU62j$KU?yANc)|1bXpuYDD| z1&Sh|h!q@InzA!6B7qU0k(e*_Ql3j4u!4mFIR`jH2EY^=QXX;AGWJ<4u|2>iKXcc= z`;Y6NziZ#x>I{69Xi7E!q9etjal7;OLYa=~c&0e4v4)4|vDlU6n~^HTr2g&{vst#{ zy>~OqS$6O{U-6>ar%K@`j?OXm-k)Y>+1SSAH$q$v|_8Z^r%+p<`x2?UA#P11f7m&*eh&x`K8o~ zE`S3NL?a=oLe$mQipsDzbA2BIx~rX;aLrZU@e6P7{8vAMxo#v2o{CNf#;Sg(AT=rQ#8()}O!pZ-bzGxr=d65T9dB|ruFXfPzrb($!4Crp&H znl)YNr(-&vnUNHS$m)L1GHO`@1ftmRsp+guYt}3Fb|m+_7CrI&;~LH#TKdkP{ri`{ z<)?6PKcoOTQzDleK^1a|FX&4@tsz1cn!`-9FhKM;y^K$M`p^IQuk0U`dgkmb-~_{R zAQ^lBvrqyosKBT#uvceAjD#Q3l9;A7Ovf{9W2J)_Mq_EMBu~_Cff0eo5Q0T0&}H_D z;Bs5q`@q)vcmJcGJ@6wxfEU~bmk*V*PEQoEgmf@XYxr9~W>9N4(u52PUHF_<{|E*` zg)qeW8vf`{-~DfXec}8%ZLZGc1t@Hlv6G#3~fuP3Y4`owQ`)HvO*B&cl!BM{(X9R(l73Ox`&Mkb7)V1~w& zu)qO4>~xR$>P2t*sjJ`iX54-oIx{f}*okWz@U-ts{SR%;4Wkh^-EEoiyA80^lCYgg zQi+L84OAS)UPl0^1tGxS@tX_)03ZNKL_t&xrAOY|uFxw$rK0L%`Skkl{obd3=XdAV z)@I6(nfF}pPqDg7U;wmMv$CBc#kymceY4T3E|_R>YHjFjZ<1ztT}1M)A>p(wv19-P zIUIumG?IF@6eyy`uw)(MpMV(7nr?Uu0?0_!LP&E(&BP`A1IWf|7U{D`ov+4-W_3o9 zwU)ltA_7o@T3wgR%uEhoRUNHL#|#Zt$9|hvrCpa=OBx)A;0R<0fF`eM2Qt!#o+KMj zX#3(P=5tcRT4@aQ&rGJv_-ZHHER8N{bW*3Z!4U?DA%cSBt3|Qr&ToIgKl*vR`a99< zS+~;%I)DH^HI26BxE2M)I)f1mh=Egg#0`AO)oq+c0W`!QgagGhn2Opca8HGJ-`|>Kv;u11Xuy3nPs%RgI=Z z~F(G}}8{vFR?;8cKOvBLUmg z)GelLN8@SU}CDO#$oc zI0-vE17#4lEM_c4qwjC5Uf3b>_5i_f-&a5V>;LZ2_r336@V(*oV#aakxmBz4jG6R* zjRkjsq1Ut;BclY=*5FZ#xTAW<);n_t!4U{S0D~Aa0A@e6wCq$QdpL4^eYpm^V1-x>`L|g`+Ye1~<+0TCT*Z;%v=kMBImA&C$shbb`14pgkU(*r}Z908- zk*pIkyY)u0_aUIgRK5J$!(1gt=4H)f^!mr4?(T&9ZMN92L_DcKol55HcvLN z7y()8D8Z`@L#P1Pot<6U+g(^XeAyL6Z@#yAfx>;1L0;o54oy|Hrg@!|UFU}Yurw>m&4 z&vGVKY;1dh*S=9tgB(P9W8Smm3xxLH;VVuX!sg7#^w4Rcq+&}iw8f^lLa zbxs;hqfJaKc4wB0HVlW6rHtrOZAOp@Ivuxi?BT!oH^27NX70z{KnM30sjaz*>mU#U zAk0YR)5fX2g?s}-Z)#y(z{HXQ9x>DaLjuiUToMaI0w@3(Fxv}TU=xL&sWuQ~yQ(%&Tdp2WDuvT{y(qQlPl0Iz=NGuQG^SsYeV_0y3af~) zfDIa=j}`y{dloOQPdpIzojjYJ^YgR1ci-$~M~+^7)#0N@=MNmf(mduCG1J510`eS1 z0cwuk^!DD@h{}fa8OaBYBZAvt42v)ZB60!Z7@lLqutZs5Z5`WNSl`Cl+Hm>I>En-| zIQH1asZ+GN!dqLq)#u@$7p!Ym#6adFv~G_q3_w+*C2KJQi0cTOHpJ+dj2~IGt`))1 z<}A}mfrHkcMw7gYqQ)txl6oLUQX_y&6a?gqDnbbZ0_JDWY!75%>HB`}=jCVKiamS5 zIY?q56)-4mwxGI=n1y;8sNoBDS?%HO0<6(#CQz7%dYCqVRrpf1mjkfPK_@Rzd3@x9 z@BbJ7BtLPiTwXg=WS!C*u+;6Y4F+k)j?hU7b=~`JvaljiU{){yF-=QN>RrK2HomsQ zTPaQ10EHTM-n^7*$PIES5F)7(JR^dF%S>|3@{qY=Y0un&gL8)u&mKOw_vq35=usR# zgzIlcCx^>GfEtA0TusF?0Tv9E#zaChs6#|8W*XxSZv>)-sb>((0%4G<)y;&+fiu7v zL9NE%;OpoV2tK0fnnGe4$FgbEw2(26F^Q%*I;9 zap#4}5CkUA1D*`IwpIlzG;!-O#fgd2_a)O@Rd&;sA;3V1o@;1bqa?MgkmSQMILk`o z)!yuFKl8T3Z+a81K8j8eUEv!)%Z-(q5@rR|bYw9Ftf$_a3--DdN23D{j7T_H0z|=I{GlP+HrZ6)DF*ivB1cQ(8?Zc)q7{`gY z3}~XfRWj<deX`U%Y#8=G5x3 zN48HLr`45iD7%Ip;QUk494UyIZ0*S7xP&Oxt=Ir*E-vx(kq{V>IK4y^ouJun+A=y$ zeWp=(lwsSzWeeTS^+BQnA~2ih$Exc5{JuNi`qP)c<;QXTRk1S@WX1s&;JA(J0UVpK z>J+fP5nvHg;jsq=m?Aom^rN{vBh#!Z;r-^H{OKot?Kk{=UpdOL2!T?N8|VQuE?W3o|o|h$AKcWbSYN~PX*~XD`Ot$W@BPZ-58StY;_*&Z6~UZo7ByEJl{Add zN~z8!NmhxaUh@iPmd9~d(lq&j5E+pup_>@;XuGHPZ9CZlR+sV+0BEOh=SsgowW*bI zxT189MVF^8;Wu^(OApS{GV-|*3?W)zW+x1D zzC<~+KYG`DfAwF-2fun%r$hY#H8~D64h)fp3!qY9WKKh_mQsAn-2_;zW}Fi~3yu zI0iEq8k<~8PGS}59}1L)Dp@!YzC^i!wT){1%x=R|^e@3*an{D;lSO^>r|7=#?`TfGf|Od6#k^ zjaFC1x$<4_`ryC#mHE@B_QZZ1Mj1Ev8nLRB+?xne2Em*L2OHJF?;gNP)%n!4|A{+x z$cS7A5$7%!=6+c>H*@d~rJ_@+iSmP{<~g=D~}@YB3pvwiP#v1 zVW7xNOc016CetZ>M1@#kYqL7F-am8Z-16C#v*)%}*0;}Z4mbL`-S=BjDn*DKj1>}z zj2Mh2Zr8qviT`S^vqW_ngT)jUK`MyM=0tNgms`=5nfdO*d~a#b+}{0r_U+$$V6nGv zv3sP$a|H^i+3`_if*EXxRB4BEA&1Ba6?7B*O+0d9{bQg0%KJWa>Yn?ut?fl&QO~h- z(1J~>poV10mI7r?GM$+jOnpQJWHb)AN|TPHyKMcm0ZR-5qDFconZ~iTpco8j-pNl6 z%LDuNAJ=g7wcm5=|NPHz=m0uh19umh!rM z3<-~FRH_}xu@_-xX^okg0_;QyW@bq>h3Y+)VqGzWSSeJAD0g{A-TBUey>o{z-+Sc9 z{Gp}J-aVbYOWl2Q*-{5xf@27cSu#Z#z?~ZSgGaxQM~|KS=qDfh^k;{U9*d`!W$pX| z>8xW4!>B#eS%FuQbBhIS_$iBe=GUTtWiXo-Z+&CIBm??6HBB zh!F{~=eS?0LN?~-uld36yYip@5{@2$lYTMF5CE}6F9#VyFqiMHOsri8Si>qs09m7I zmm`3vg?bE!<-7juJ)jE_xCjd{LKZ|;$@gI%teu(O{)2~Zz2$~iy$W}}5Z7Icjzf_n z%Rp4O`OPAzAK(FaXo=xQe{ExPb-lm3y0yH#ar%js6ALal_G_s2=>Esgb++d1mq)j5jl`0%3?PGR*HP5xMuP# z2;6XRYN;lXNSPHJi5N!eX9UipfLjBWd)*t~^y63j!?)qaYtfyF=$bW6^LUcgngZ5E z=id+sq}$3x4nluxyEmJozh&?Ivv>c?f7Lm5>@tzyhuvD_48{VJ+#*967Jy3X98poq z>wuXh_S$H7<^7FHD?;Lfxh7CWF`sur={=%?2wg}XnATWUi-HdB-*@BnSHJj$hhOn> z+fc^cI`Cdq3W-_^Btf3SHC)c^5oKBt7CPALk5Z-X3grGAB+IQ4uQmGx6;5`4f*m{Drmt*)yBV=lt4+ZEw?7DV4Hc z*gF?v6@3|fu&B(Oi3n%D?$rV_i*=4F6PaTnGc$!+V%Etl8nSLrQ`$T!DT6fqZc3xy zVXPEkOi%=$46nLUi0eRCtkW8pZG>)6L@J!O(n5qqX3kxfxx!Jtu|DAFD7cRHW~jGV zEbf~-ur#y(+N*Cnyyx&wlQ!AO0{_ z&eP`htlFZH^Cck=qBi<1DOZ3EvinvJP1Ix66{ZZNe3wzSdH^CQ5-V|3KilbS4~KI= zk9k$K?Dmd#vYY?zPu~2NpT>>1AnSq{P9k88DPVo0%^N%z6&DJ0BCtIy|M*=W`}hA_ z|L)IR-;rz>I~g`SN?>l!<;&-n_kbLHYyu)^-KUz#=DI>(bT_K;rAp@JX4FwmN+JKe z*c3ix)%yI*;X7`5@$0{D{#CEWW!IpX1v7{t1crwVFeFgGAYgC`CyqV&;G?I$cKpdl z&#f(Urls~hg5_+PkuwOK<6(bGh%@3uTbR~)%~}OV3}NO(fyJOu#26zH5ecLzOC(~` zs;WRr5Rj5Fk=12IR*ODZ8@$YB@{Sp$NTR9+RYO#>EX#<9*)hn>Vytr{3ReIyL?uu+8ZVe8Y^oA95n1fTfxM4!$Xjd6n1mu8%LSv*GA?cB3 zI+mlcCZrP~O0KjrCn_>BRWqn$8?JL4^va)k+vR`nt+?(gDRdm0E~u+@R!UimWYnM2-zoAo4SkqC;YhymWCJdd+qJ9qyB$G>u7<*_F>Pi_oWq`=%l z&#Mm_zyyIJh7btqh#i=e2uRyr31(ok4zsC-7!&DE!iiu{?XOeR$&`!~N`{yVx0EAb zW^8prX8LK|KB3tvB?DN93?#&LN=lM<82OS!BqGdgm60Wq-;^}6nvk*uG9LmNGqZzG zfEY20bNOJi3MF-UcB!-f@;z7Ibj7VV9J%?*>`I5cKMbpy|o<%>yh4N;XsjSe6uK zoYs*|YRQ%wD8d;_4G0B7A2i>Upn!9bRxd_ADXGpahoSC=dcdK;L6~9cLan^T6@5 z58d(m3!a0aHPU^+Jlm(G);N zlAEx4seM?hfKpH~ltG40K&IbZBMa>^gES{}p@dfZZbz_ZPN}nET0|8flj2kymirI9 z=D+!QdD~mCXE7AL0o<&C6ebAph9FP@t2cHXfRp-Da%&_J2*lsit@aE6Rw`G@3@$;J z0Ahd!P^>L<2*bJ17+?X2Te$!3kN)F-9KQ7BeJh*usufUyhLS}_9+7D*pn%0)l@|j^ z?GXi$;YT^b5vU+3|C7N5Gik^WJHnb-8O=zL^;RoAAF*)bP1n5qJFfWAAH~f#VDBOd zr>2@03Jeh#rU)fAPxX&~?TLFHdg3d`&wlM}|Mcv>qQtPWGP1JEm^m6Ds?_Q$&y`VU z*gFaqWAtXkBsq15YkpRiE?c= z{4Zbo(1$l3erS(ak75Tta}=uBajp!pOtng8!N*i?S4`UVUf`M7Q0%76cxuXYDiY69 z7aPTxBW6GaZ1%dV`}e)%=YDqn?Qci7GbnmprQl%#cER8)9XgX-y08o_xjF%y1pt>i zU?nwIB&j%R8A2XP1VbQGM>)VDSzd#H;PJ>KAOGk7^vMsue{OyIXjgO)8{MJ|b#1V= z_3C!df}nA#UDCRRf+HY#7D9*`a-b({QB!n$2zX#!ur)u|z2%lGU-_yVzvs2MKGC3<`pjUTR zcdzfu*Q+}N2?+t>fB`!OYy-COAkUL*S+Zr#v#L~8Z@TxMv-kJMx%a(Sh73|DTaIqPl@CVyqi z-RbM!^8Kg2`(4ono0tlz+7t+ayg;{&`KQ~P?%s6Q<~>g>_?cG27rreB?2NF_LoNtptJbJm zfLRTRE!he5$_iKvtE#G^B*cM86hSrAk~GhApLrsay1Hejh34M$iX@@&^=r<1-G=Kf zTz1hUmeh*$a@fvevStocZhz*cJZZG|HKDz&1*2x0EdnQ z*Jvu>(a+KK=x%R6ci%JjJhAJMS${a#Oika1j&*R(z_6FXdk-dK3@M9@nrBojXj8{8Tz%1N*I#?V z>J8(VGDu0eP6-zU^>R>xUXHJQ{lWkBr=4e>?j1NV&SuQ8&kF$c)b;a$`Gv&uszko! z1fu>8GOS`C17C?9s-o`DFVF*$daV->OnvOtmtFSp-@`@cqgEGVg;D}c7)h++AeL6Y z{@+Kys-(qy^p-#{(ZwrR%tvwC(5;1lnWK91EjM2O`>lhA){q$!Z5O>&&HBzxuTi#O zN{OPtY80t}PO#a)K*%hF-~={+M%)d9B4HGU=WK0m+49;&7hd?TA6oSTKZwbdus~4d zoKob-dg%1g-qzW2|E7B$d1m8$am2P1iB}WgpvDB1qA0uyGe`Q8s!}Nf6LUBMz{>a* zKbTk4HM)I>t*UwzEs6A`On~^j&!EIK5~*dgJ}DZnI{lI>)?azash3Y-s)m|H3ZJ0k zAqI)Xo^1zix#`i*eXh6Z>FHj3JOs^(9B^cyhD(RILI@!qUEu@@SflD7QszZ5(r5vU z*SOmkXV480VCB@RO>;-j`|%$=>w_P_Yc3O)^tok$qyR#kx4sO5err-Fj*6!Ua#cP&j5~eKYzLf9FAs(DD0t=vt zpe8th^{wJ3Et%^8$WfQXo!??p;uIs5CNfNwMywY zMr4RsL_kK#fT^@wP=ywCEASp5#}4XzMpQWG>*uaG|H5^bTz%d(({w73GMWN{M;axN zwm!Z4b2n_h>Bi!@t>bwyCWJx<$KS6-+OS`WpF8iK|+N=PJxj3FthpK zV;eW$x%uFe3z!LMFK}iMNX0~VKX4#ZkQ?ZZmTbj17E{4`fHHjb^@-=Xv9u+*C`IBB zlM*YFTGn#CA=;5uOfCgjCDF{Nk5qqQ5pW=5LTY`TI_~W8bFaPlO&6bWWfRkcMvAoN zfi92&p^c4q-T#+=e)!gJEITqkQ3Qfek}l+#buNV|ivBo~9tv69&W;P_C4n-8N}o3) zFiKR)B?4t~u2QzPO5wg7lr<+etH1VFe{tO}{UTZu?MzyYbfDVpsZa(*UNV^f9R#e% z!ZKyUIiQpnVgU!AC5F-IV9&nWKlG9I9rvxtd&^J&x?tcLR*(cr!2oBVj8U+HB#B~@ zcqvOltyZ2WMqMOopaR+hyhShw#6jE~+^N^T{<8PH2k(A6#+z^)h)h7?J5tjw+B@d9 zJ^0Lhk8QjEP=7DRax+d{KdZNC|JpXlb1@3&*j% zhRH~>b9DTORliVLj7$_xZh4hjq+IMGBR zQM&Rgc!@G=8XUwS>qqF&vPBTR8W^Q{V7LrSROIT~3R{2OG4>Nk?;&))WpT)n947_dS?ihGrrN zh4#qwbIk9^o_pf({h#^TpFh3-p$^X_%P1syJDU^s&8hJ`cp(JpyHcf{L(sCHPF2J@5pk5I+mMwKgjNfK6i_80QcwT|um?pa3J);IhSC&=wDfUc zWmRHWm;{t68SiD`@Z9cawm(tWo|t^B)^O|~4n(LYSiW-d_1B)WX4S#{`_+5t<^7N~ zYGX&Uc}rAUcT|r>N5}v#e!z+=gB6uNhz>l^gj4|~iUUz`(O5vmPje$%=LprEl}{3|Mhrl~QP0PE88IBA9*~S%I&8^VUE3_==#bH|n14&dY)RYDR6lh3zd66$>ip5}zQ-DSdZ8r6eF}qc<{`@O`{-;m* zxu3ynUX50*M^b3!Om0mt!^{&i58eFuO*cRKr31w-t!HTp)f^C4PYO%3y`E2C8d&hOo43l zF*FKN5~9LTZcL%UCJFhFEzB7y#wTh>$V)Y!1}lfZlT z?KR?;UvvSDjlr1G8(TppO3jAo(oReH;g&kXQi6vnq|}=Z1OcoH3Xg{#x%*>(jIGZt z^LYcI2W^fez6i0lVl8i-kTBG$CKxJagfeBNmr8OvCQ}%=lqdwqnP<~vPm-*E+gq;u zLeWe7v!s;lZ~@>yY(n)L=m<`)(`h1T>GkGb6k_iWkx^ud{fwPrfrnhYi>*v$E? zS*yXim2Y~}d1s&f%%&%1=8jrtSjEUt`-qwF(q&i-7?8nGXQ8Z_X)sMj3@#-XD~y;# zTV%S(Cep^%XP-?BOrjDxjc6SI6K5J}Kr$h@2bR`gy`g;)?}j67;$1i}8poBsR% zv+uS$R{5f)MITCpejeh$uq{1fNJ*8{Dr!IiSU`Y$WD4M=>VZ*JeKC`W3gDRX$%(zI zmS6evKXuLr{{t?$7|U0{CCZdK6R}NK{kRREWLx!UaJMB*LS$AT>{^vLzeTc(6$twfdOmX72DjJWY&E zm^$w`yyMyZ&&=zQ#soQorfCV-x|EU{&OYmmD=*8eKDl-CGBP#qW12;k`29;5upGz^ zfY)exR!JdKxsudWJ1g2C7>2Ssg%tf%?K4}Sz2MySIBktK>VXUyP*kqr0K!sB{vA)3 zaKxW^L?fNcx$SEDSE_*JAq+S$_f5186tvqrKlWel`_n%?t=F9l85E70IouC*2k~(P z2Z*K&1OPE$Mb2B)8jZ!^ag_{1m|PZ1l#I%g4)0I(KWXS$sagqpGXre&fNVr>MA^6nT zS|BQlH2R>Dc%z9$zzQb;Hn33=a1N2g<;;aD30dMa&SqMg?<^4Oc)cm@pj~s(+RLxK=*<@_ zySjl11K02tSpfi9H~Zojzxq2Lo1U9<-JT7(g%U#)BH!k$6&O@XYD*fh2pWc_)}x)8 z2(S$Db5(#GvH})Rpasms_NG_vo?iaL|L`fCb}Ggv6iod%SM4iz`vFyghxM-vcVL9; z&G1bvali^d0U;m-${}WgCdd%KL>f6|QSMC`-2$}+40;?=&AFc~{M~16`{mzUyUlIL<;PWgi^>mUk;A3@8y;9vMLiD`451SLF|o=5^N5+QfD0hyw2%;xwU8)655ZUz z7QF%q!PJ`vGTm?81@C_Qt3UiJIQ!D*djZ$WO|OskVeEc#@549U@%ha4GM5#$2qek^ zfP|y=$Y9-2DfuRYNIBSbQr!vG!JWY3FHTO6TXZ8kL&M13R&zQc~k3>weQ>4R~FAe-=rk4YmM{WFZ=jZIeUwX6w6Of6X6$ z4CkB)mm=6|?UrnS2$ST|r5tPq{3eE4UJGD^i;r^=1p5mDQRoZfSa{iJNLN<8)(Dr6Uo=Dd-E@R=$sG#B2GUOY>@(~ zWZav_;k~l$p3S#^b>kPZS|>}o-e$r+Hlrvq$*Mkb1TYDT2)k4-Ex`mDd3!Qq0Hh~_ z)W2qz4r*k=qPxplg7g3>kyH%%Qqi#bk%&(Oqk)JBNl+&sXkg!WKC^z?uIK0GXBxHS zl<}2F6U}`ma8fr|vu^Fxuj%jKv+0>98>toV+x^f?Yy?2fi1n|+3Yg2?uw)?3x06() zf4Yi`p=!W&AizP4(Cm@fabsIoy&CGlk>^ci*Q1O?5z8lvrY0l&rX1jMviO*Z5XTs> zq9Zmz%77&$T4Lb2j8+z~!`;O23Tyf{Sj*Iz$I*pHe(%2?_{KNKNmxUqsKtQnz`Te| zv{ctHM~mmGmh9d^msbEEr2z>VtpFt#Ed-{Ekb6Hym;f1@?oe@;Ty*V6KD6vd-i7fM zuolhG=6O&3J{BH7@ZeYO`O>4$KGdZS(jXj^R0$N@SjtpplqZAE%jIHLcEQwwnrOqp z$PDL9U5DLsvs?D=IUKqxR<25uT9UwLU6c1QJ+<=tUbkY^vc1pkq_$t4wu)XB41*+9 zq!nT-kIAqbZV@%VZ&L=)*Lx-c>((Qy&isMK!;<=${T$Ic`-5e4_9H+JtB18Kx{x+3{UP`*3sWf}i|} zvwrQDarvb%Myw;pKFQ~B@S*v8ZoB`>4?c76q5gh5L0b3o`Mf%nN+l~2V#|OT%%EJ^%T7 z^VF6}UqCxX1X7O9+MjM(4EK3?R#$i+9UtCdDkXxX)Xn+?`mSH&vxwEHL-fd*yWd! zaRt~A(PB#&r2%zTwdA5!1cQGbKl^rbyjcYW#Z8$!}+uC#(|!Dp1BmLwq*@&XUn!C^xudwege z%Rp2Em8p6xDN?0W)PRd1UKU`TrgE^id;Zx@)}?n`^CPF=OhGX=RzthM?wxyg?Gy?g z$fJCMf}%6niMJL8^%5&PHL+P8p=;-gi9*{44nFkEhSm3l2=MHKBj9Z%tb_5xF?W?c)$bTC9vG;px zie>|hOnXY*-C^s^Pu%#`2fx6rywG+onNSe&WT4POVsmLgaZ#dZR497F9jhm=f37BE zqChIFQZ9bBs#b};z!?w>jQ{I2a&E2h@e#?!*!kxd)_@Z(1wek94e zMo^f@1SF$mPRKmFYDgPaHnEoqiEficz&Kz)hYrsz99=l&>Z@t2Nz5K(Xe22ur_f^) zoCdQygkw&xjyYfrw1g_DF2SJ2iGEu|U}R8FBtQbsd4b2Cy6sngx3zoUIC4Vf6{&?6 zDB!>Z^3bAcATQ}`pq9f2LxV{jO!+uu9?qbZIw=G|9kAd4C0OrTyKGYXu4}LPz2D{U zeRHVS;F@{JEqkGbhmYL-*>8OE@g4W1lj@~I9Qz^)G75r%%RWh|oj@oJFEJ9sPF^pI zODZJ9C>bRx4c# z3vfOx)Qskszw_Cze*Nj&_h&oYn9qtnnX;%9aFyeKORgWKzexb*llaxkD`1gez;slO zo;==^eu&nxfRr^r3sO(s7qe6KaoM@;j)(vEfrq;Gp68bJyOTt1DdqnG1R|qg7y^eA z$rcPih-NAZjy~!TkQg8_@Bv-G0L@U$9XPmf|D(A58~pv>g}iN(W+9$AA;4G*FE9)a z-=@+$#`j~7^RbP(@5P4}1QvZ?uuA|j$WtZc9$&s~(?5J}Vqs3;MM|CO?9m z4{X2Vn_Ir|{M=TmiDgTr9!`7`T!p5xRvrquRa&Jd(e{^HNhswr(-IJ=hJK(TOa_Jm zP^c871(Q`j-pS5`F5iDNxp#B-@r70M+5i_CEPw#dQ36yEC_VAe0j<&q0|D4`@C>6c z0vmwXF^C*!>2w}`Y||${z2V~Z$+}fQ9@u6OM{E#98~_XqIga1ao{xLaSF=J*Ugfw{c3Ow`NV}JEG>45{|HSVKptxYWTE2JHOHyT(8YOwU-s{FtbxgffT(2Sa) z+=GCcOADY2>ek$TN83_5_g!y)?H~OC)}N0$&w6BlM|TE$zxv4Mzi{8DcXqclS6b6V zE}l)QqjN-Bj?qx%0ag7m60rDW1bErzS>>!^1TmsxCXo@a7kB}{R_$b-T$oL+eEdLq z-!o%d<|ex`Zq!g1Y`n5D4FPF!f;p;uOPKH_r5fd-o-k~Rp2BNBNv74AJ#gn;M?QN4 zx*7Vt1VS+Z2m{^_zhI9a#|E&+8m-Joh7w|N%R}XM;}Rfn=)nU!_Rsv?=l0xp_u3kf z2@2M}8d#6QSA$f6%gQ)zaS>YTM>c@2WCS%c0w1&yr67V(z14+uNM^=r=l#eJp7+t; zMr#_xp)ail&*SL6@Z7DB+_3fFLo>3EjJMhnu(B(_AZ9G;0CJUERgQIWP~nw6sQj|L zlo?W5vz85I;c5z%1Ocjw6vnEtg;{%4&fe6ayY}hRnC_v$C`uPn1W*71DWFb*5y{8` zCE@0T=`oZCZ9tSx4udH~skF`&K?#k7Z9kXU!%yAtx$7?8fHz!=P^fW$m7zNYgG5Jo zm&XC$9^=i?0RuteY_P{jl|>Lxf!r}6^LXIV$G&jWM96LEcY6!XdYVh7qG{6XYxF~g z6
hZ=Ct_+wOGUV#5LwE_8Gv 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 nd_>?Q0v{3h|AfHnflp%7XNKX+)3Ja4G diff --git a/docs/assets/playbooks/library/zscaler.png b/docs/assets/playbooks/library/zscaler.png index 785f94178b4fc87ade385452369286b6c590896f..1653091af297647328446bf7c5f2892024ad2751 100644 GIT binary patch literal 10068 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 LrP@~&`^f(RRl)o> literal 6318 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 diff --git a/mkdocs.yml b/mkdocs.yml index 8fb77c8b96..a6e3df2404 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -224,6 +224,7 @@ nav: - Digital Shadows: tip/features/automate/library/digital-shadows.md - Duo: tip/features/automate/library/duo.md - ExtraHop: tip/features/automate/library/extrahop.md + - Fastly: tip/features/automate/library/fastly.md - Fortigate Firewalls: tip/features/automate/library/fortigate-firewalls.md - GLIMPS: tip/features/automate/library/glimps.md - Git: tip/features/automate/library/git.md @@ -254,10 +255,12 @@ nav: - Onyphe: tip/features/automate/library/onyphe.md - OpenAI: tip/features/automate/library/openai.md - PagerDuty: tip/features/automate/library/pagerduty.md + - Palo Alto Cortex XDR (EDR): tip/features/automate/library/palo-alto-cortex-xdr-edr.md - Panda Security: tip/features/automate/library/panda-security.md - Proofpoint: tip/features/automate/library/proofpoint.md - Public Suffix: tip/features/automate/library/public-suffix.md - RSS: tip/features/automate/library/rss.md + - Retarus: tip/features/automate/library/retarus.md - RiskIQ: tip/features/automate/library/riskiq.md - STIX: tip/features/automate/library/stix.md - Salesforce: tip/features/automate/library/salesforce.md @@ -270,6 +273,7 @@ nav: - Sophos: tip/features/automate/library/sophos.md - TEHTRIS: tip/features/automate/library/tehtris.md - The Hive: tip/features/automate/library/the-hive.md + - The Hive V5: tip/features/automate/library/the-hive-v5.md - Thinkst Canary: tip/features/automate/library/thinkst-canary.md - Tranco: tip/features/automate/library/tranco.md - Trellix: tip/features/automate/library/trellix.md From ae0fc02989ded82ad01be29006901311cee660ef Mon Sep 17 00:00:00 2001 From: Sebastien Quioc Date: Tue, 15 Oct 2024 16:26:17 +0200 Subject: [PATCH 4/5] fix(documentation): update to the last version of automation libraries --- _shared_content/automate/library/aws.md | 2 +- .../automate/library/crowdstrike-falcon.md | 2 +- .../automate/library/crowdstrike.md | 2 +- .../automate/library/microsoft-azure.md | 2 +- .../automate/library/microsoft-entra-id.md | 17 +----- .../automate/library/panda-security.md | 2 +- _shared_content/automate/library/sekoia-io.md | 3 +- .../automate/library/sentinelone.md | 4 +- _shared_content/automate/library/sophos.md | 34 ++++++++++- _shared_content/automate/library/trellix.md | 2 +- .../automate/library/withsecure.md | 61 ++++++++++++++++++- 11 files changed, 106 insertions(+), 25 deletions(-) diff --git a/_shared_content/automate/library/aws.md b/_shared_content/automate/library/aws.md index 876ce7c0ca..2378fb55ab 100644 --- a/_shared_content/automate/library/aws.md +++ b/_shared_content/automate/library/aws.md @@ -174,4 +174,4 @@ Get messages from SQS ## Extra -Module **`AWS` v1.31.5** \ No newline at end of file +Module **`AWS` v1.31.6** \ No newline at end of file diff --git a/_shared_content/automate/library/crowdstrike-falcon.md b/_shared_content/automate/library/crowdstrike-falcon.md index 9913209bb1..f5ee2099d4 100644 --- a/_shared_content/automate/library/crowdstrike-falcon.md +++ b/_shared_content/automate/library/crowdstrike-falcon.md @@ -97,4 +97,4 @@ Enable detections on the provided IOCs: md5 / sha256 file hashes, IPv4/v6 addres ## Extra -Module **`CrowdStrike Falcon` v1.20.0** \ No newline at end of file +Module **`CrowdStrike Falcon` v1.21.0** \ No newline at end of file diff --git a/_shared_content/automate/library/crowdstrike.md b/_shared_content/automate/library/crowdstrike.md index c49f802355..f9f1b89337 100644 --- a/_shared_content/automate/library/crowdstrike.md +++ b/_shared_content/automate/library/crowdstrike.md @@ -34,4 +34,4 @@ Forward Crowdstrike Falcon Data Replication events to Sekoia.io ## Extra -Module **`CrowdStrike` v1.10.1** \ No newline at end of file +Module **`CrowdStrike` v1.10.2** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-azure.md b/_shared_content/automate/library/microsoft-azure.md index 54df3e82f6..e62e5f04ad 100644 --- a/_shared_content/automate/library/microsoft-azure.md +++ b/_shared_content/automate/library/microsoft-azure.md @@ -81,4 +81,4 @@ Trigger playbook to get Azure Network Watcher events information ## Extra -Module **`Microsoft Azure` v2.5.3** \ No newline at end of file +Module **`Microsoft Azure` v2.5.6** \ No newline at end of file diff --git a/_shared_content/automate/library/microsoft-entra-id.md b/_shared_content/automate/library/microsoft-entra-id.md index b602180e03..dd10de3e48 100644 --- a/_shared_content/automate/library/microsoft-entra-id.md +++ b/_shared_content/automate/library/microsoft-entra-id.md @@ -107,25 +107,14 @@ Get information about an user's authentication methods (such as their MFA status | Name | Type | Description | | --------- | ------- | --------------------------- | -| `id` | `string` | ID of the user. id or userPrincipalName should be specified. | -| `userPrincipalName` | `string` | Principal Name of the user. id or userPrincipalName should be specified. | +| `userPrincipalName` | `string` | Principal name of the user, which may correspond to their Azure email address. | **Outputs** | Name | Type | Description | | --------- | ------- | --------------------------- | -| `id` | `string` | | -| `userPrincipalName` | `string` | | -| `userDisplayName` | `string` | | -| `isSsprRegistered` | `boolean` | | -| `isSsprEnabled` | `boolean` | | -| `isSsprCapable` | `boolean` | | -| `isMfaRegistered` | `boolean` | | -| `isMfaCapable` | `boolean` | | -| `isPasswordlessCapable` | `boolean` | | -| `methodsRegistered` | `array` | | -| `defaultMfaMethod` | `string` | | +| `authenticationResults` | `array` | | ### Reset User Password @@ -153,4 +142,4 @@ Invalidates all the refresh tokens issued to applications for a user. Requires t ## Extra -Module **`Microsoft Entra ID` v2.8.0** \ No newline at end of file +Module **`Microsoft Entra ID` v2.8.4** \ No newline at end of file diff --git a/_shared_content/automate/library/panda-security.md b/_shared_content/automate/library/panda-security.md index 7c3414184e..603a6124c1 100644 --- a/_shared_content/automate/library/panda-security.md +++ b/_shared_content/automate/library/panda-security.md @@ -401,4 +401,4 @@ Uninstalls protection from the specified devices. ## Extra -Module **`Panda Security` v1.23.0** \ No newline at end of file +Module **`Panda Security` v1.23.1** \ No newline at end of file diff --git a/_shared_content/automate/library/sekoia-io.md b/_shared_content/automate/library/sekoia-io.md index 1d7375fe19..738a410a4e 100644 --- a/_shared_content/automate/library/sekoia-io.md +++ b/_shared_content/automate/library/sekoia-io.md @@ -25,6 +25,7 @@ A comment was added to an existing Alert | Name | Type | Description | | --------- | ------- | --------------------------- | +| `comment` | `object` | Alert comment (object containing comment uuid, content, author, date). | | `file_path` | `string` | File path to the alert on disk. | | `event_type` | `string` | Action that triggered this Sekoia.io Alert notification (could be for example “alert-created”, “alert-status-changed”, etc.) | | `alert_uuid` | `string` | Unique identifier of the Alert (UUID string). | @@ -1304,4 +1305,4 @@ Update a rule ## Extra -Module **`Sekoia.io` v2.64.1** \ No newline at end of file +Module **`Sekoia.io` v2.64.4** \ No newline at end of file diff --git a/_shared_content/automate/library/sentinelone.md b/_shared_content/automate/library/sentinelone.md index ea8e351a14..b4d0b4dc74 100644 --- a/_shared_content/automate/library/sentinelone.md +++ b/_shared_content/automate/library/sentinelone.md @@ -45,7 +45,7 @@ Collect activities and threats from SentinelOne ## Actions -### Create IOCs +### [BETA] Create IOCs Push IOCs in the Threat Intelligence API of SentinelOne @@ -227,4 +227,4 @@ Update a threat incident in SentinelOne ## Extra -Module **`SentinelOne` v1.18.3** \ No newline at end of file +Module **`SentinelOne` v1.18.5** \ No newline at end of file diff --git a/_shared_content/automate/library/sophos.md b/_shared_content/automate/library/sophos.md index 0e13aa8aa3..83d82bef1d 100644 --- a/_shared_content/automate/library/sophos.md +++ b/_shared_content/automate/library/sophos.md @@ -43,7 +43,39 @@ Query last IoCs from the Sophos Data lake | `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | | `intake_key` | `string` | Intake key to use when sending events | +## Actions + +### [BETA] Deisolate endpoint + +Turn off endpoint isolation + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `endpoint_id` | `string` | Endpoint ID | + +### [BETA] Isolate endpoint + +Turn on endpoint isolation + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `endpoint_id` | `string` | Endpoint ID | + +### [BETA] Run scan + + + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `endpoint_id` | `string` | Endpoint ID | + ## Extra -Module **`Sophos` v1.16.5** \ No newline at end of file +Module **`Sophos` v1.17.1** \ No newline at end of file diff --git a/_shared_content/automate/library/trellix.md b/_shared_content/automate/library/trellix.md index 4d78bafc68..1b48de7e18 100644 --- a/_shared_content/automate/library/trellix.md +++ b/_shared_content/automate/library/trellix.md @@ -53,4 +53,4 @@ Trigger playbook to get Trellix events information ## Extra -Module **`Trellix` v1.10.0** \ No newline at end of file +Module **`Trellix` v1.10.3** \ No newline at end of file diff --git a/_shared_content/automate/library/withsecure.md b/_shared_content/automate/library/withsecure.md index 352c1c4906..59ed4397ff 100644 --- a/_shared_content/automate/library/withsecure.md +++ b/_shared_content/automate/library/withsecure.md @@ -44,6 +44,24 @@ Add comment on Incident. | --------- | ------- | --------------------------- | | `items` | `array` | | +### Enumerate processes + +Enumerate processes. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `organization_id` | `string` | UUID of an organization. | +| `target` | `string` | Device identifier on which action is created. | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | + ### Isolate Device From Network Isolate a device from network connections. @@ -63,6 +81,47 @@ Isolate a device from network connections. | `multistatus` | `array` | | | `transactionId` | `string` | | +### Kill process + +Kill process. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `organization_id` | `string` | UUID of an organization. | +| `target` | `string` | Device identifier on which action is created. | +| `match` | `string` | Strategy used to match processes (processId,processName,processNameRegex,processPath,processPathRegex) | +| `process_match_values` | `array` | List of values that are used to match process to kill. Depending on selected strategy it might be list of identifiers, names or regular expressions. | +| `process_memory_dump` | `boolean` | Whether to run memory dump on process before killing it. | +| `memory_dump_flag` | `string` | full - memory dump includes all accessible memory of process, pmem - only information necessary to capture process' stack traces | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | + +### Kill thread + +Kill thread. + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `organization_id` | `string` | UUID of an organization. | +| `target` | `string` | Device identifier on which action is created. | +| `thread_id` | `integer` | Thread ID | + + +**Outputs** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `id` | `string` | | + ### List Detections For Incident List Detections For Incident. @@ -156,4 +215,4 @@ Update status on Incident. ## Extra -Module **`WithSecure` v2.15.1** \ No newline at end of file +Module **`WithSecure` v2.16.0** \ No newline at end of file From 9d2b5e86abb37c340f8410161c91adc95b147786 Mon Sep 17 00:00:00 2001 From: Sebastien Quioc Date: Tue, 15 Oct 2024 16:29:48 +0200 Subject: [PATCH 5/5] fix(Documentation): add 1password --- _shared_content/automate/library/1password.md | 32 ++++++++++++++++++ docs/assets/playbooks/library/1password.png | Bin 0 -> 28013 bytes mkdocs.yml | 1 + 3 files changed, 33 insertions(+) create mode 100644 _shared_content/automate/library/1password.md create mode 100644 docs/assets/playbooks/library/1password.png diff --git a/_shared_content/automate/library/1password.md b/_shared_content/automate/library/1password.md new file mode 100644 index 0000000000..735d4b0824 --- /dev/null +++ b/_shared_content/automate/library/1password.md @@ -0,0 +1,32 @@ +# 1Password + +![1Password](/assets/playbooks/library/1password.png){ align=right width=150 } + +1Password's Enterprise Password Manager offers robust security features for businesses, enabling secure sharing and management of passwords and sensitive data across teams, with advanced admin controls and seamless integration into existing workflows. + +## Configuration + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `base_url` | `string` | 1Password base URL | +| `api_token` | `string` | API token | + +## Triggers + +### [BETA] Fetch new events from 1Password EPM + +Get last events from 1Password EPM + +**Arguments** + +| Name | Type | Description | +| --------- | ------- | --------------------------- | +| `frequency` | `integer` | Batch frequency in seconds | +| `intake_server` | `string` | Server of the intake server (e.g. 'https://intake.sekoia.io') | +| `intake_key` | `string` | Intake key to use when sending events | +| `chunk_size` | `integer` | The max size of chunks for the batch processing | + + +## Extra + +Module **`1Password` v1.0.0** \ No newline at end of file diff --git a/docs/assets/playbooks/library/1password.png b/docs/assets/playbooks/library/1password.png new file mode 100644 index 0000000000000000000000000000000000000000..893464ee20a2839903579d283f002b6df4858434 GIT binary patch literal 28013 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

jn5s{7ZDGyJMyjeW)A;ZBmOW36 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%0D(Qq$+yeShJt` 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index d3a54d3504..4349aab594 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -208,6 +208,7 @@ nav: - Operators: tip/features/automate/operators.md - Actions: tip/features/automate/actions.md - Actions Library: + - 1Password: tip/features/automate/library/1password.md - AWS: tip/features/automate/library/aws.md - Atlassian JIRA: tip/features/automate/library/atlassian-jira.md - BinaryEdge's API: tip/features/automate/library/binaryedge-s-api.md

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 diff --git a/docs/assets/playbooks/library/imperva.png b/docs/assets/playbooks/library/imperva.png index ba4557234f6c75dab93b664ed0c59975bc5dcb30..2fd3690b76090b9b587e89927bc3fdeff13636af 100644 GIT binary patch delta 5018 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 delta 5026 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 JWpX|Ke*ig}x4i%W diff --git a/docs/assets/playbooks/library/iptoasn.png b/docs/assets/playbooks/library/iptoasn.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf5dc3ead60fadcdce0793ebf19d59d040f05f3 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSVV*9IAr*7p9yDYG@(wNd>YvLa ezW~Uj1U$%R=x1QGlT6+XGR4!?&t;ucLK6UD$`q*p literal 0 HcmV?d00001 diff --git a/docs/assets/playbooks/library/microsoft-entra-id.svg b/docs/assets/playbooks/library/microsoft-entra-id.svg new file mode 100644 index 0000000000..e7b0fc5abd --- /dev/null +++ b/docs/assets/playbooks/library/microsoft-entra-id.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/assets/playbooks/library/microsoft-windows-server.png b/docs/assets/playbooks/library/microsoft-windows-server.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef622852dc15fe519c1269e6541ddf861f50101 GIT binary patch literal 1676 zcmdUw`!^E`0LPu&Ya~i}HAy>Ocbi8KLuQHQvDnybGA$FAnz~W0yeGQzX4$x&b7E+l zXO`p<^1NNQu%?G+aj0Ep%2;A|*ZuAO3!U@%e!qXg_xsKC!MJPe1@2W+Qqn+qAaT3d z`kz!)cKxt#H&;nX#TSKi#>bY6r_gjJ;Yix&?KxfNxWneZ9bOC#bTI7ob4pc5leU~a zeoom$-9S09{;p1czHNlKBlQ&AM< z2O?0rp!}oM5fmi&tEpVj6W+lDZHy^x3E@){zI8$Fx6J;x1hY!-3*xSrez)0sSR;FzQQe+GhWvck5gRtyDhfxfWiKj#0(EM>V@3p(Ao7YnqHYaM%PRg zI~4$?goR_0Vsr&vd$B8uZZ*p|Kvl)BQP*CD+lJ%nCOi2DU^JB#3oq&uVn+NyY2f_{ zZSLd@@v6|f4IoyX=zNFJ+IaHzDSwP8sinu?)~#9}KC$0U9ZMIyXVF@K8@FOe-p#@U zA0*=X5?q~mhm#()W`6GNHH2CESz9YzU``> z`S4o%CgGx@NXsx{;483+!~b2)IzSzQOt_E|nSWV|-T!UTi(Bg^pINmJ9t0UW3zH=9 z<@$(dbnds3RUhil!jB}e%ox%$bb zFJ|R2k`t$pccyX<_^+cpZh;iHDD7?%5_xQsda%9;v@z zVW!{jd}&FkZ_oSP@;V?&MSBvUVg!=0+I93uS9NLFe;hA?W=zHIes_GdbbJWI8PI(U|CD%&@+=?){6cfGT5 z0~uGc)$${R#Fo^i`U>IDk|`}5_vp>q)ZChSutM%{FvsCLb`Xj>^ctO{I~SuDEfK7a zdNHe1yjHkW^HUzRPrv4Qj>AYlT!S)(K`#X+qAPvbEQ`EUvaqCObKaHs={x zJ|4`Q?u|}tSkH!%EzU7*1ZHE`m~goGZbQ0RKNUqmD_9@way3|Qohl-j^cr(l`1OU!eYFnA<(CefOQ@@ mPa$gQm=daOn6D#76@Vhz!j~6)_CdQZql9wBARAqRQvU@~$SZ{a literal 0 HcmV?d00001 diff --git a/docs/assets/playbooks/library/misp.png b/docs/assets/playbooks/library/misp.png index 795e3d3058a12419b36e91d2d82edebe0173fa53..f8fa57d7ba8b39b51da364a8042c100bf0932214 100644 GIT binary patch literal 4444 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�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 be-~)jQ5KUfsSDs|G9V^~76wgM+~fZb049U8 literal 8085 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 diff --git a/docs/assets/playbooks/library/palo-alto-cortex-xdr-edr.png b/docs/assets/playbooks/library/palo-alto-cortex-xdr-edr.png new file mode 100644 index 0000000000000000000000000000000000000000..b93fcf396a206c85ea254238636a9d9bd08cca54 GIT binary patch literal 8033 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 literal 0 HcmV?d00001 diff --git a/docs/assets/playbooks/library/retarus.png b/docs/assets/playbooks/library/retarus.png new file mode 100644 index 0000000000000000000000000000000000000000..f249e726ed98c9dcdedc9c7fd2dffced43fd9505 GIT binary patch literal 5111 zcmdT|{Xf&||KE%zcgrCZrjAPGw$$8?I!NkJs=3Ww$|Q4>+%%c3a}LE}=WtNXO`()d z;<%Zc#{1-ykA&uS%w~t>isU{r0)0zW>AL`-8{Bd)Mo_Ua#wQy?cES%_ z{czAIOF>52x@Yqq_3!e2BWwOZsXI@E%bir*>vjK1$<-q)!$+}hyKkvHzGWPUyek{N zInT&ML+0FeN3)%-V+tl&=PY;9)nfFo+t9r6lS(mN?M;K+#PtEOV9GpZkAtPaf7Cqx zOQk4jP$a@+{gEZOjo#tX5yINFyRFjYL}pO-A3Cjj_F1L4p1G<-D}AqpacMsgo|P5+ zKW32c$3&$3Ra?6idvqn!x`Qg~hUkL1Z9>cGpmf;lxi(}P#gN=VNypoJ)VNmvCz?*D z=glL%5Wcj}sfWYUJn+j#7fodg}v}ZKYkU2xgV`KdoN-k*5sp zJK5OoOQFk5X%Ob06^P$G%AeK3T#lVF>L$;V@qbQlseW4Li4g1`p7cNU-qmXGKzL7B zpEn63bmP^-RpP~SCJ{`Gg)ZNM@TMWNJMBb=Cw`f4f^l#pOx}e8faTbcHf`*4R_X31 z)i*?WbH-4|%{}K8^Kmtuc_>jp1eoO+-gAbr&n(OwC1-aYzl@TL(2|o*cwD_UMH!`X znGNce4?}55NO1=U;8U8b&-sE0>IZ+)0Szj@FoWaeU*)0*j1wsmgslm&f%@q zhsL)^3(6)=`&Wz7rgd$Efjldweo6?dl;kFdMq@9e`ftGohNigAOa(Zi?zEoj_ZCCb zstyOk&)DOoKg`)CpINxIa~tNeTWqd9EaAt6Osn=o+!}{wUmIND9N`W3_oXW_I0JpJX;gk*c2m`+QCQD0k9U` z5v7$Cls&mvI}OLKxh{~Uj!6L-=y$CXpnNW}N|*iQMz&xtxCPw$>h(z|Es<KB7Li=L9vbfQ{9SZKb{z!C#?qS40)T)YnDFnz6C&ewD{GRO%aAvLm2 z>>Fy9iuEQ5Z)!qm^EWMiHV^N~x<;jA_X)EP#c2}e8}A2GK^(b{Luo@Crh&?ue-E3Y zxs@=V0;gJqrMUY1RZIwpcUI(eLUhj?^`?k2bwYKtz{E2D*~gEa35r7l10D;qg!|SV zdW!kT{O0$x<|m3%g~fz8_3p2AZ#H98^vlOu=&a_8vTMe|I37K{?(VGq8w*fol`gI2 z)oVdeOcR7vwG2br$Ke*O8x+aZt%R8PqTonS=0VwGpdIvhrF`FEJtdvqq}owq=nK>j zU2>-B@iDQ78qNRoO&Us|DZ(J%aTXg5?wN$Cm69WS}!mEP)6olvRb|fY+hA9yKNFGfhTzL#zQ(p7kO&9!|Qt0_P*Y37=HC~ z?e-MH`|>d2#l=s(*+1VDaY&mipO!yLBoF3Iysw)+>J!<#ne-1Zz(jd37DDGr>PF`z z7Xy^na5&c@9qh5$PQyA?;P4Y9xYm6&;$AkH>e;`L&z~Xm7iB(>z5WVw5O+8!E-EVJe_U@sCc5}bAWH_KC=38fq!oHEQl7H@Cu_-GSDr4oP;Ib8b}T5z2j%z)N?rO zUS3eImtU{n6Q|_O)PdiEdbK`MhjW+?HHAvF*CD1t^^!+UT9}M>E zav|(Jl!WBc?Zb-nmg-OB2c2x=a11^TKy4J$oQd}-1>z{2Ym263)#|QM1H>t$$FkFY zI^3SnSEJy|X0w^vo1(j{aOKJGOl1VJ+_PX`d9fw9!yFkmgukpUy{XYR*SnAO$jCr1 zV2m*156V3=$k(^pzN1KHDtF?&;!``XMQmA%%!><~Ddu5EH(K@C!y&)UfPEe9c`0_l zyLli=_-CO-w5BiyRIM

&TK3Duv5*A4Ija_Ed-Y6DL%i=Rf6O9%7c&oV3QVzYec;S~R+&b=_ryMnpVz{L% zQkK5RWZP)=$c> zVPjH6Tj}&V$t#)BWi&ogBOc>iK?kk7>s`YkMz+Cy0e2rG9io1|>J^S!7 wM>ZBJ6Qe~@DrfdBvi literal 0 HcmV?d00001 diff --git a/docs/assets/playbooks/library/ubika.png b/docs/assets/playbooks/library/ubika.png index 59be2ffb7650bd8a9c016976554b11b645d242a1..dc0d67aff5a42ba3988fd3079c0a6580bd97dce1 100644 GIT binary patch literal 22970 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 literal 265179 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ËX@ySV4&U#!^V+P2s5D9g?lrIez( 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 O;G+rAQ>{|53j051=ncI9 literal 33206 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 P;742inOeQdi`V}Lmb_U^ diff --git a/docs/assets/playbooks/library/sentinelone.png b/docs/assets/playbooks/library/sentinelone.png index 597aadd4dd854312536f67a75a02091bd60e7c8c..56f5eb5c10902e15e0d9b5f5f02b268fb8c8f0d1 100644 GIT binary patch literal 1828 zcmcIl|6kJA8vpP;F{PE}^2^i~8ThSfbpyYI-j;3UisHoj!DWo`2b7^_+hyUT;AI|f<&pGe&yk5`yJm)+Y z4<{aU!n$Jt0C1wl$0kEwX&)QVkd62a9RdL8*VNdkBWD`s#*@BIVSV^`q3PQ7klnXG zZ^`4JpAi1>XxD=G#i+RWK+e+x+FgXary$M$zArK`GoFf!!#mvjdenvWDJQN*beNb& zlU%Qe&pUp+YN~4L_08)=)`;oG#qjwR^|p?UMsa9USx3Ve)rYy z(u;AFBRRsIX|VcCR36V&+L!XbpMWpX2j$B@P;cOJ4~QRG8a1bj_F0Ubp!g5Ni_L8P z)j>;(Jg!Qfno!?RvrgV2SX3$3yv#Equw}_jnow}^qS8WOFQd)%_-Fr_Xu=5Tal)Y6 z4G%lV`7}!nb?9zh|Y|^l2+V9Qb9ok|DDa zY_2}@iTrHN}8yFLHF?Oh}sUfJ*=s6#8qSw{#(YmezCsi##PY$(b zT?_-Yf1^O)Eez}hMNrl@IRB?#&q2V7;P0A>teFx4pfUXzGv zp8PAfoRVBI=gikjT7qCHyZUDvtr;=rlZPuO!sJq3qeMGd1!L&L$B zj1IHS*<1PJ&<%`#^F*{>7)|a_M{B;D9+kT7g4JyRa9@topuo2G~!|F%~)g^$w`;NlTPrlG3 z4_4)1IE|4HlE=@f{vTb7G-gj%7h;z*A!hl2 zY+WnQDxrpDC2fHSh3YJD4P|cLJNU~s_F~tF>crNN`>x;aSRSY?=n7W9c+L<{8_FgE zoz>SQYtuPDBsCCL1a190W)2e-uZ7&b&!jQOn263ZK@@TLPu;xBOUoIQpn89uFHWKD z4>L&;biP`JmguVS9hSxreol1a?Q+oFa$&S!Ni{Arl7oiZG0u1gvI(|N5*)*+8)dP~2MGARb+4l@b}yGX%!tSUqT7 zCk#AC7CD(XaQ?;L?H<8LJyiT?Bzled2Ofi&+CovQ^SvWHS#45$8crYa+br$8;N5BV zi_#29m`aFH%L&ezdAMiBznN5n|{!o+TgznZ5vjrg4AZHG9ChvYx;duzl*M!Zw z_=>L}y=>?(mgbf$O8k8<+IAj@z@Jcv%Gtt#FPJ(^MRUlVXmk^lez literal 19895 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 diff --git a/docs/assets/playbooks/library/sentinelonedeepvisibility.png b/docs/assets/playbooks/library/sentinelonedeepvisibility.png index 51684ee486cc4b9c77fe5f0fad0dbb6205ad5db2..56f5eb5c10902e15e0d9b5f5f02b268fb8c8f0d1 100644 GIT binary patch literal 1828 zcmcIl|6kJA8vpP;F{PE}^2^i~8ThSfbpyYI-j;3UisHoj!DWo`2b7^_+hyUT;AI|f<&pGe&yk5`yJm)+Y z4<{aU!n$Jt0C1wl$0kEwX&)QVkd62a9RdL8*VNdkBWD`s#*@BIVSV^`q3PQ7klnXG zZ^`4JpAi1>XxD=G#i+RWK+e+x+FgXary$M$zArK`GoFf!!#mvjdenvWDJQN*beNb& zlU%Qe&pUp+YN~4L_08)=)`;oG#qjwR^|p?UMsa9USx3Ve)rYy z(u;AFBRRsIX|VcCR36V&+L!XbpMWpX2j$B@P;cOJ4~QRG8a1bj_F0Ubp!g5Ni_L8P z)j>;(Jg!Qfno!?RvrgV2SX3$3yv#Equw}_jnow}^qS8WOFQd)%_-Fr_Xu=5Tal)Y6 z4G%lV`7}!nb?9zh|Y|^l2+V9Qb9ok|DDa zY_2}@iTrHN}8yFLHF?Oh}sUfJ*=s6#8qSw{#(YmezCsi##PY$(b zT?_-Yf1^O)Eez}hMNrl@IRB?#&q2V7;P0A>teFx4pfUXzGv zp8PAfoRVBI=gikjT7qCHyZUDvtr;=rlZPuO!sJq3qeMGd1!L&L$B zj1IHS*<1PJ&<%`#^F*{>7)|a_M{B;D9+kT7g4JyRa9@topuo2G~!|F%~)g^$w`;NlTPrlG3 z4_4)1IE|4HlE=@f{vTb7G-gj%7h;z*A!hl2 zY+WnQDxrpDC2fHSh3YJD4P|cLJNU~s_F~tF>crNN`>x;aSRSY?=n7W9c+L<{8_FgE zoz>SQYtuPDBsCCL1a190W)2e-uZ7&b&!jQOn263ZK@@TLPu;xBOUoIQpn89uFHWKD z4>L&;biP`JmguVS9hSxreol1a?Q+oFa$&S!Ni{Arl7oiZG0u1gvI(|N5*)*+8)dP~2MGARb+4l@b}yGX%!tSUqT7 zCk#AC7CD(XaQ?;L?H<8LJyiT?Bzled2Ofi&+CovQ^SvWHS#45$8crYa+br$8;N5BV zi_#29m`aFH%L&ezdAMiBznN5n|{!o+TgznZ5vjrg4AZHG9ChvYx;duzl*M!Zw z_=>L}y=>?(mgbf$O8k8<+IAj@z@Jcv%Gtt#FPJ(^MRUlVXmk^lez literal 1129 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�-c_87& zU%QrV9()=|(^>+`v_}9!b=Kfj{@q@*8{XqHBR6nPib*ScXgCoB=RqHGFg}44Jv7;U zSE{-T!O0PYg0#G}eaud?ERwTz=D#!>%O0OLF+ zVLP**>_o|$p*3gWpMV9MhQBA%hiz)Ph%&fB7UeBk z-W+s_W@s1FlHa9yvnLn{`GlL*U_3>c~*+KnM6Qa)K3jK91uu9E*Nr2fhz?NkBpVKmWW-{&0*D Vdu9^q05r-WT55W#rOMXf{{t|9$6o*d diff --git a/docs/assets/playbooks/library/skyhigh-security.png b/docs/assets/playbooks/library/skyhigh-security.png index a292d056268b8bd066ec6b54d02f5c739e9292f1..2f506751605f9746e5ddcf1aa5687a3bd81b24c6 100644 GIT binary patch literal 49975 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Ƈ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 literal 68022 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⪙z^rCa`ZlHU@ni)dLO+t* z#o-NUj{GS5qQ%gt`DIlS<*FWAn)d6v(scCbckMT+#D;vFF1bAmWr-VCTMl;CsOa{( zaFXX06@h)d@W`x!*8YFGK`k?!j=>(b+1SmT;XEk`vIQg~VOnW8%dv99`P!=trit)-V9$TOgFzOXZcO6f1S4L zb&dFW`rIIT&+z|GE!}ntY+|@0mX+zpC}|8*m~&Ok1pwZ+0!48EYn~2`F`s_5S(ZEl zO_&s}A-z<_!DwGK@8vsh-F5%yuV6Ka_1Mip0`EXj3}uNGF^6ltMW{vxU%yqvxJRcq z%oBX~84EJt^Z>vHsZjRA91Td|xKg3I*CbPm^M|G}ae1(0Xiy$b!D8})tFzzLjwY6r{;UT2Or#J!ow|@)Rtr8X@4zVmN zCuft6*?KsKbG;qIMKjF(E|}1#iHNu%@ZAUgrUg4?Wa<{-GPOfCq9cvH%4k*enmys;lJZCFC`Lnyf4Ss*}Ok`Kd<|&WbL_BX=UiNU4 zHxvo4C?FPY6)fCLkXty5goGlay1iREC^zOI*hScl? z8wd1ObvBo%*QGTm@cSgENQqBzwW6S?* zoQ;OZw@}f_8KqG}6ZGs(-@;Xzk0hinRIlh&3fwiC$a*-E^v(fVqS+G)^q;|$6@w)8 zQSo37W2Q0R*T417zyWM$FK`JdCpT@=jn%JdR%Hc>$c=p#v6P#Z_|uM7iF7gZ(uGco z>x6eHmq`XO1A7ow)s9Oi_S@>uRT^^~xzAWqSl?NAPPn879uHwkRc_(!@FxWT51AWS zZjx5+S}-C6ee|W+wH{CYl}xTKmx4y(*KnrGjvVz&4Y6cfnsIXY?Vq5ULEjG+=g}e5 zxAB=oa-;(oYPT}DkicF$qgOQ^Ct_LKsJK+ELxDV=2!*$df19eQEOx7Gm8cuwVK%RV z{5>#bQe^92_XntI3|i5Rz514(;F3$|+Z+m-Qy-I8(9^W8m=e0lQ={Rn_vwpk-p*sV zEW_ap*;3lbx?ldz8IrxOC)DM~JFI6yLhfk;i9hf~?y`lYRpvI8Y~=xwgx-mgG%G*W zHME+nKs+&VU>v{seQYiw@>ce^?d)dGc`n$NU*y{tBP6|$pYYtChu1ATFGmBcu{k)A z%;@WP9=lF=0EPjX?O7>E-ohs$^n=e`KPo9Dn>zp4o-sd9@-T-P zkKg~V&eD9T`+DydTm8KQ6g(&sgo<9CdLf2I*8E9bjVvUFnLc>VUt`GEJRlrAZgMA( zHrUOWNNAL`Bw;(5wdmhopS6>~eNHjV`kTqLHfYG?{Q+M7f|Q>q{#QO66te9{U#Ui^ zI#X)zhbJ6q5~~$7b>s&I4;GT6*p$18CY|RjHS{oCr%uwTozkved;lr zLBiX3pWk)uBplSx`ewO-yymu7Wx5Wd7u~BY5s{09AHWV93~L6AOyNNbDUu2%SsB8| zA<&aja^s_`f0UbdM?{W8Z!l?};3Sk&t^ zh2Ltg_9qITV1M;CQjPtw{4_k$XfdmXQ*txYe`(}?#6{|G^}%b*O{PZs^OTumzR$`H zL%0da4rm`h_AQWF>sd`4xet`%vFBq7be*`Cn4^Y1LqF#IN0Y|*VsKV98H|Z=2a~Q; z;{HoYm$$6dYNz+!R#oEL>4Hz;69?Bln=+Dh_~}b4RiwP~R{HWLV2$4Azg*;2H;qVD zXUW#RSBo^|-+WO4oW{#Mgc;reWS^CEup0J~bGKEmxRj1dWXt-}vPH57U%)|rGuO|_ zrtLS%%tV9IL36RoB#2M;4Ih`76brRORT{bT=WfZ~qme@ZG)qeR-`8Vy*5Cw44`!r+ zFbp)hOzcnwVFhP{)QnX&19Qv2^c(NVRq|vwvfCM5ZvHCE5t2Efy#tt#JdYQ}FUqYoShVgXiZ{QS-5tF0F1gu}%Ck=0 zG5U@K4@x=Dxj<&&Mj*zjidPA8(npk-fmP62O##>i3zkk#Trfgj8h3033*uvan3}YA z+%b0Ti}M=+&D?HzNjQ~(ZAfDhqj5d7VcaQ0qcPQ9q;hU>9+xLiZcDwuuhGiTXfOjbnAo4c%V zc1q6JJXHk}Pg)({Vxk;nDPV^x(s>tIKskv8P_*M!_MO|l081WwP62WH7AL2lq8!15!X z$572S0}LYUdtck`1}5y(JPgre(ek2)#`13nRN00~)Sq`fwLRbd;%akQjvIZc)O@-a zEk=W%9(cyN(eI1e_F%EBr|`5Ui6_LDQ&w7-Rv+)~m$1nO33*Ee>+_w9r^?C&&JG#w zPX0Zu;k!6tu5>boGOBugSV5XOba5^lA<*Y*mw`5zP|DY3j&mld6CEZ^_Yq-!53W(w z0pZ8sfJYQ-eGK=jvhRzw8$5s#!>$>!5G^K-pB~&cE`M;fLN9k3tfPu00h&1FTxsUh zsIkL$Nn9-otQ`8Gec649ABqb21WBu4%5x(sd1!Bo!Too}@4y8<*dK!47k4!eH^eSJ zpQOpos%qU>315lJ$S0bZY6gJsM^tc|5QI zO{$qzk+OUMkI*-8m3g>`pW-oz+ZI|9hdu^xolV3?%i2zis-JBLeQBcm&ZNQ?a;!do z_nA4pj&}0Sq^^m^Tnl^LY2i40y%>9&U|g%2Q|`4T=V7Kq27~SCm92gH5&rbXoAKk@ zmxOyVm=?qJ&{@+{jUVq;`s#sKjuGPLxTbSn@D8et6)}Pf8Ng2@Q216wZ9`C?CT}r0 zJDy6!FR|H_Qy(-`rjiy|B(J<2XIZ^3EIm?3z>?X7d zk!)ABAO30|@Oc78N*8g+8Vnc-miysENvGLVio=6-Zz-d<8$&kNzvLQYp6EXN;{#&7 z58!lsYIL{!uBu_xN4$8&YKG?w$Zzbw~sMMZV)?i2I&SzD!kuw8}1 z_t66UaY5C$?a-QYqALULA0n zrVFt`(d8R4kt&u%Uux5Q+Tcs&3lPRz#dkA4cKvZ1W3JuJ6VxG{eK;jF~YUa2qE1xqeB&SSW_XVZv z^Xjs^mb?A}KhKS%v2X!3k4IUI?dA|J^HvB#B~W4Bf*-1&%L{_^4gFgEL4flJrZ%Wf zg!&Xy6oULdKRe7u_uEY2p1e|KF(p&NVbugTFnlWJu7<`?Zb+dFvVv?6TN6X`?r@!#_JKY1eXh2t)0A0~Y5^(PJzH1%MlX&>Ko0JE^mF=Pm*z9Suc8W%0u zU>8_UEU6kXUZbW`$uI739J{oe6m<1(g-xlrSThyXBe5U$xL>n$ZYI@K4+nx>{B1jd z|JM{YD%PmYUg8$-3D)OC@sM|0c!5!S7N=@L8ZOdw)w6xi=F66UwtmR+KlzD!5^)>d z;N89`JXR`3`O&tmtI7Daa4}2`Q@m_&wB7wCAQB@T=KP1lF|qhyA#JL36jsusxubG~ ze<%E7A}K=@vS#+6BE)|Y6))#Gwl2JMdAiD?-$ZwEg^j)b!q*~@A0Ji5xDluX;`-Y- z69^GGSXVk4#^3JZz|DX3ns_{i$H-+tLJ-}1?J^gR=ZkKeIMF8H`P|^G5EQD@wz$uCE>d9H#V5!Sme^;*;2f6J8}AF62qZ5^*Tf4 zVzvP~VXU|SiPU_McEnvhCM4GKaVYkxpzP)gy96@@E!q6wY)a2T33RKaB8Mj8_j;2a zM+jx!^YXb8+sr1?(G5a*+s*a3_sT;N1Cl!lU_WffKdsQQ$p}zL28sJihIe%yI9P$8 z)3&Z{Kb6Zz;Bls~-j3_wbzlF5Ciiu_CSH3h3~8hCU0f%>An{wG9eZrfmI^O^6EYl> zAH^Gx0M3qu#$?hP!%>cq_z0y}YGDFvFL0zmr*ujOXY(IZ{78eO?W%^PS6g#rW|SL` zD#Mk5v%6k?xU4P%Hf|JI?JqVwJhK4VCBaIrQ$7}Pr%2AKgHXD%EAJ(mW)-hh-X@SJ z7qZ=od?z$K7^^TJC{9`aD(XOWXH{ES_DGDCWNXHA<$-fE#(fj^W0WixXQ(^e0sGX> z4)=|w+>8@`5Hsg;LY?Mdgr}w`6selltxu+SNn?CmebgoE+Y^54pxQUn#Z}XEa)G-@ z=ZWb9w?DY%HD_ghv#o#EAe2wt*`Cn7T1JW(OkDQILwN~6vDs>+6V=TrB;!!#(^o{s zL-mfUspofSF0^y!^)$$jc!zM3A1CaiG~&Rz(U4i>dV(lh;kOL4hB{GJcmBiH_p#4* zPab)u^!|a$H)0LC?ymj$v!3T{AT%25hwu!3v~BA5XM-AC!6Ad^w(2I(T-mGmh(imT znOmB^NzOQh2dB_ozl1D5G8Cf$%ugUfI`!;^7}`m>+d(*MeV}IgpH$6n^3<#r?DzIII@Z$itX7ty;V(ewrfNzf$2kH+3|| z`24D`ahO`&zTvets4upoZTV!gI*n&f9(mS z6fVk6V_;A*vB0wO*EPyYv-JX*o%Q&b>lvZpx!PdAaf8hOi{*8BZW+!=|93~}gS{m} zNtT`ORg05^Q<~@|WG!1BzsY4IhY1)x^$DXo4A2aK7kWweXExlquELg6*Zh$nF zpe#nd(Xn#Z$_7BO5Mm|`^W!bL$4!cRY7{&re=iU~XTY!c9dx4bq;2`woxx`-a;1H6q9-P{l;axd*d?AH@VJ>J%KCpi2%Ges2rw}J_PbomYRXwmE9 z8#k=o*$$baj1tJUez!9GYPz^8-1@cqZA;DGc3Ff4C-z(>)R%+4}2wV?$ebtStY*@ zH6h_t+5JfogORW{`J@7s;gGilD!2Zmg1j;i0Hk8JiS+-s>ikF3G8OaQsPq~(ow2Vv zdnaMtI)iz-hB2r9;};$6vz+^_WZx_@P_J&4pMOQVwimK73H#I>mv{8LR92?)bxY&ofUC|W~Ubq$E)&!cElC?jcbM~)#MYCj>Kd|GNzp$%Rm)yUhKsxF+VCp(MX~|UVFd&`L`W6)QxmwZR)W?_R^Q2cQrOH2sIm3V@ zL4}1CZ-&<`pqydD2&O+P31r*QGxX}HrlE!%$n?cg&Qm`$zRRW#w1)>9kol?kxZ+4` z#pW$G?n$)nEZ@R}^04@;fR&<=Mh#Is*SdANa_87;WjgMu zL@Z~%O*7&r&guMf&UQ;bf#v{ z(FkzKa~o7}m1M>iXF>D&U1L>t*QG2P^A!Bez=(MVH21a73C5P+b$cYk4jRWt{kfU$ zeffCHu#i+~WO%9I%XQ|G4rpWztkg;D@BwhkBWh znZq6>lIxW6%AsZR0k*jY_P6KkLl{m`|+Ol%RN|< z6$GWtGW2ItN%9~@6OuYTvB+mM8h~Hd4hc_lB*-AeXFU*tlUzoAAmQ@)clk_AC!)9< z*27{KSSLDW;5U1=dRLexdLD>QXi;^AAIE#x4B}=)l|U95urV-Nrf)&ticZKwkw1;f zGzu9L<55BLe3|5#1;?$>N8{{s)Nv{qF@5|{nVX%1E+*58jq&{Py?Z=-A35s6&US#4 zWUj~Q7xL2Qk>@r_6t0iIXy7I6^M^Rec^0E; zj0bzulX{931)FX}@U6XNlM1Dh${O9*4QI;vi01GfFbVO`1sod zpHjDyM#_DBbpm&apN2WPRO-e#!IrFim$=j86jJIK#n{9DI_# zL+G>F@bwF)2t(&Y|8mMoM4JeY zTaYsl%@F{HWnjTFis8Ra^r#Axmf};uaC`Chfn8DCDU_Q5CqDO5)7)R9PwKAnpW?Qt zzjndAY?8b-jFX^pTKjhnNvGtdd4;`DJm-vS)Zg7|3)o{WGG{_7FURDckUNlpx(tn7 z2yNA~c8P?@J*2}S$p_7x&bULU>FTKZfZ6@^E{t*)(OgAf@HSWdAD)x-cw+7`@vwbu zPk(oL(EJoe%UAOY5AbL5>@9)|_6*mF-WMxtK}3!wXG@6dNxxt%9ZI;P(7A@d*g?02x=%%SVGe&zXjX!)9NjAc4y8Pb{a?Qk*aZC8uL2bk$& zBX4c3y8?0?+pNpskzhTqfwcLc2{-z)#l!ye^Dv^pkM~)*&g6YoANQzp{0wFD0hf*a zf%g*L%%;v}3-2c6epCPk;j%<+2XRJIOyvbn5Td(D-~HwGV{`ZC_L~|v24{UGa?AV7 zBWA2W1CAhYN9`YQbRjgMvZpv*?JJ~n%b_h7R`{*)| zDM9<_T4(sEE>-0V&x^h=Kcs-ov$Q}eZLeZ?u{3GUKMNDps1&5?9B8#S#gB#OodA?M zylyw7+nkf8w{UxAOmE4p>n~^Tg~F092L{QOkc5u2XqD>%qN@E&)%-7EFDb3AhGGWg zMvHsijIG90pt#3hGqczdK*VabZB`lsmtFRvKR$Y)@+4ll^~$)hAXVH)qbT=$FCBfT(}GYIz#`T6`Fk)i8<89v2u6WnD`6K?IyIDB18 zmgU>^wI^%$vV4q%+!%jvb0+R5E*9!lZV7GhHkq|xdoMtO5FnX=l%Yboqv$6Ov_{xz zZ5^eNvHbBM<|XNQQMBd-`(+(-cAcYcYKTY4=OY#ANj**VZBXs#&l;|FDxBci^iQy; znauh}QT;;?DdN#FIGWilzd_Ce85p}+ZA!+6TdON5_+17bnVy+4J;_#8MA@U*UEGBV zb#duHcCOokVUHK1bB&yepwbu9o?Ji5P(%2*-J!fPIlZtFm1rES$437O_|DL@aBz$T z{#KMfbwCqjs`xBHd0!Ug){`3Tm$p^)dy0Q1K*YGk^FjAcM~X_W+)p%brl^h3ixA=o zEpMHoUi^zf_6tF2Ua<#rs@^-v700*Ui@s|^iYDQT--AiEu#C%gaf|(5<}u6@@ir*8 z;b<+YlCni6_5$DbKx(T`zL-}B7I{}{{Fp6vhsbOhuWcd4Pm=jBXG~D=!|J&{7gO(p zsn3QIUC9z8TQ5s%Ne0Z$P0d$vE_w!eB)kB$cAM@kq%2AiR_Ud|q7H>i$bh9f=KISr_P@;{jA-DH; z^b|vWS8I?OCL$(x_152${iyIX{Ho$H)-!A1;Z32A7wS9S==3}eFIi4xE;w^{#lk`0 z8Wr%HQ3~|YZIo8Gas1N)HCyk#66ocj(h!T=^aj)Z))*t#(8ERSa}~8}ei`4sIHm_* zxOFWoJKTUxPnE}@uZB%C81D~4bl^@UMlj?p_sd2}Ho&a&dIE%cd`o3Y?Jz=z3BcJE z!>(3I%T1~_S6ARXHGDz8>YC>0T_^Isyp_+sR1%nv8aR{jMY`hO@wPMErD#n8@xeJ6bhVpICL+o=x zUID4#HQiIuF4|48<@=GxGO4*xWF{ZLh)eK!9VSzifx03_bD9uJed6QXwmvEf0 z*S@o)!3pi|34mi*2(BrrdZRz_I`&c`)ItbGY#5An{(-kXsGa3r4S*QekNsI zExRqzy*_PNi5M7i;uLGhAiB@GSIYTMA!Cd^keBYHyD2wQ3ZzX6Hf$9ktn493lN?PW zKNxw_d9wz)lg5+aZwPAtiyQuqQ(FBC5cZ;>90~~gg^AP#nr}A&=G1|z4mGeS30;C8 zk(&YdrrNaKm|@BDc>h`jh6MK5f;=bhwjdE>1(9=nWwjyuK>zko!MIsr8740r-cANL~+P*AHn)?cNo|T45Qqsf>>gkVeY#P0JVvok7 zO6~JJNa9_0KtOfq#%=9dIOl)}kU$YZyycNJ70h z{Z!E|$ts8ICf=6|?qIIv+7M0eQepwEj55JkQVdASsz`dnTW=A0>C}!TuUYsnTWKFp zvvWS#fN5z&rgPO#P12pLFQYe4$VnLA@^;uHZ7ggMFR+G1#HIN4OBpETIekJrXZDML zBDM1dpwS8JEK3Nrk4V7x?5WD8!$^LqhXKpD z(E81yN5nYeti+_aZzPq)hN+{fU*KohFu4Z1UdN3V?@cDt1Swgu}dAD-O0Kb}1?M39*ozy!WmX6-_Qz4~hVBrJPFwubOi zdAt7-3c8E+>A-od#uSAO&|*{3AzDHA_cuOEb9zB%8Do$_R|>AZ<0`!jyu}+V0ZLmK zSI_vhK+?oI*EhA zh91fB%$epBp!}Nmz~A&C^D#w>+ZN8cD>3JhA(;YvE1_#9}c?Jhx$MZo-pCalHLE@ivhLW`IUvy2w2K z{XvOWt;KejVsPEp7Ypvwzs11s{jpD^e>A;=!@l(jX7T)k;ec|?sPj3Mm=gl$qxz8y z$K+NhWRv#L_^vtZ#6iEAKquLwWUlstzi8{*zHmBlG%^5Gi&AgI!7vy(r91?t2#_Ux z5o}690<(VJPJ+TO?UP%;G*l#w6Tce4IejB?5X=;Q?>zgk|8}~rU;W#&79DtVfS*OM z5Bcnfz&VyMMr~_xkOsm}zl1`3vu`d~qvk|_@~0`;KDvG)7^n5{s|3IQq6v@QWWC8) z!q`!ULo5)J4gZLzD?A%AyPcoe?I~*M>7s@b0hE-+6hBN95s0Vn{T{oG*~$!(X#AC$ zr1yMd_jvrJl-%wUnp0)cn*c$g_IrZR{FT{O1vVwliiPP#X#} z1JWmaS_tC<7DRoD#Hddt??b*l*Gf7xSb8t!xHTeua`}ivMoL)sJ^br{>?C zfrAxc_rONH2|wtwyRi76clO|`zH!1*3TyeOemy2aH)tpsd(TT94LysHQFb4U=G@~F zU^aTvXUIx59-m1tlzpmAVt7hA{#4@UvG92|t|w;ZkDU5KQH80FAmqe0@BMOPc(65i zKEbw(5a_e_U-;xqLeOnhxb3Ff4_eN7kPCYJNtfLDKkh0FgH8S>2%pM__ z=QAFVuvwD|gbls;x$d*CrejxYYkQlmZDyE*uYy&J5}fLVN&Cw*)rx!ula>vjnz^z7 zhNCyGd;FC-OUZ8vu9Bo8!q(%KADH@0^G9R>_i8Pi$3IX;{D9Sr5mUEhq*dn0HM?V} zu{3(yJRumq-Hk*kee;(?uvL%jSMDxP@PANMHznMc|M>D<=NEy26e67QSD;@Q_3+-u zio2k?+~zQ60AU6Q@#U1JtA-$N(+5MVs)>fyG9@1qJZw=gu*cRwAQ5~UPsTEmYwp63 zZ<_mnakgsks)AIl=Xz(yz4Vo7?+~mQc*3NF>Ex=c)aJb!Bl&A8SNrB7RVOyU@y=Wn zq`}!2n*QHqVyFq<*WDBz)C`GuI82*Oime)m1KF1R2Iyt4K*|orI-1k)Z4*rb_aEMi z+wk?O=Y9P5mq{mUpM9$F!=9rqmL=GuY^2(__#2R^JENYA&0X6o6_AU`40-@y1x(np z0o-pRMLsp**My7?5O??ZQ^T#BoA(m0)b6n8bpRcRh+WFGz562d$`f46)PfGj&G%8lkr8dmQCmmg+ zJr2?;JGMJ5pO}5IiWj08Qy3KyeDK4T`{oVKfW7c@^wAT$&f8CD%bw?e|6j}GDLSaFNBq}mk(qxQuE##YgzSJ8IYkl+mN{B{ z;IBT^-*R0RRsq8Pac*fziijUS=ZfFIIFfi#W5Gcaos{@)pr_ng&03}5sq+iBxsr>j z?IR&A8{CDmn6O{1{Zpp(xmeH4K4hpevZWwj5oRpKJW6DpT5#g&Zo1-&nSjFwPZD_k zbwsg0uU>yo1Onx2{@}|V^{2-7smzXW%+lHD?!3#nQcbvJD>fW=ORfjAT&M%+v7o}z zj2JCI9Ug*^-Pavr|1sp$FJ}^uczIqd_fj-^);WcvVT@qNq;C7bC9y_xDW~9H z%o|VGcV8qKSSk&k-kS$onTAnP7?j!wFMX4*NKTcZKA+;01p1}FNPQ6j8in7cWs)Jr zCWcn`AIxpGobR0zwF)0b+`=$03i80ExNyYK#|#hM#hNuOlhpkEMLGNn=@T42KL#zC z6U(mPzqb78L97iuXk%B^<~Meu{-3CxE2@rd=xftTx6j)yPEH?-+EV}%@)r>KRdN#g zxI8K|qGq31DTcviY9lOT;^B9dLrTYveUE48f3Ico|FUeV4v6cVzJir2bVg5d7%3O3nQk>%oE!A$+b5NX`5$hVPl+veA7ozMZ3i3&Rq`2B!k(xv1zDzPf4-ud z^fCd+G&5eiCBR%X!6@2Ahs^Fbw!P3)J{O8PSSX*nZcHpf z_iFq1FjEe^?Ey&HDHJJ9@~K3Cv`lF-5DWw@ZGa8jWMX(h^yfz(|6JvoSp&}@S^i5* z#$j|!cHYmo=D@U_#Oaf3q)ySPdxNW*)ljyI3GTA9e7S2Sz+|uqxBlcTz`R8uq!;Hr z(Hj~EpTme`UbPBMmJdOSI(Pg7xG7(+?}kp+tOR{LUh>{wnQKHJkmYOr`wu^U=Orkc zw@W?iU$8`^9J3TP(8vXz??mqXuXS0!7E<$KlWzn9Yh~`YP}696ljx4W6PBkeA98%3 zAhXR;80z#t*$HsCn~iSqBRWcER`Z6CZrhyaOWO;dlH?YE+i6;(AT6zmsdc>X`*wH{ z;xzq%3E%9`6~}A^g*6&^<<+Rp5KsS8r4gK;1JYY z3cWlr!4(VpZQh45Pet~q?u$|Mk!(f7r;94Lz?JR|b8P zLXR>CGo6Viap$NvF?vBnEI>FcN?fLm$qDM=#g<4loAJUR(6nM6T@8f1XVzQ?H;Af_ z+|}MzRL8-ZurL$oIp@Zvi~&H7y3$T-4RB|a|Gm+;+&nEqOfAC6rff=;c@P7MO<$Vh zhC|-B@6UNR5s_6VrRa8dK;Y-Z%V-*Zuz4+nwMlE1CIFW|gzn!h#$oXzTX?(N`U$;+ zZ{1_mBGELG0c%Q(W$L5+gHW&d~LwdG9~A z^%dZyIc1m>{zZ{leSFrwNf?;ef9=mu<;Kn-{WAX$$bHhuK!RA2QS20{&qgOL9A(-u zZ-1*56j|K?F12;L_fet0;$jqu6}Tb3Lh5@Cwg~GsaIVLzCL1t0J^d^5#kKUbY>p!= zIpDzsayqMJ&R5<4YGTQ!2=|!oQ3&Tq6%Y*;tMH^lB-vf>G0tWE%Nvhxm+M$vv$XAj zb;8tyk?eP44V%7O0&+moK^Lzj(TU-DNyQq2L~PWk>y!UD7m#y!tzK9e6w+ym>}@=f zXCmp_#bj;{JWJ2u8Jh9Av4o(S^VZpizXSKin^k(L#+J-y8CHcLwBgWg1?@A+XmlMb zJ`*sPSHnSxKQKLs4U`v-}1B*-zJq1Kp`^JF@+T`Kuzu*8|x{@?N2;k_K5%s+f>D6A>2^kj;Fh90t-H?;la|QL)_I**ebr6+fa2Y8OTvQiGP}kL;Hyx^>l0((!+&0De*0G!SZmq`8t@B2 zXtyYYS^;fMJ6K*1C9;INQvi2&>+mP5#qHk~(0U3E{+A`!95Z zT75|v>maov3m&WN%<({JmXaP&#FEf5o?YMzx6P~tRY&k+ayA(aauCKDDF12I>jzs7 zf4!D0|G>>-CFjfq&?NId;9{_Pn>c#DLRU2>U-v)Y5o2t&e512avCiHC^qrDCkC)6T z*h+VotFHHEMGsk8M%k;N$dJAr^-*nD2?44%IZOtFzmS(p@ZFL;!96t6 z!pFv_GwM&LnZAW)`ZG3yje!fccWPP8R=VC&AMEnjabeWHYLQC)+d#msiV2pmTd>JD z^y@iu5D54CTLpRT|7%qMz$>5tad?FT=dTPsEB^;|z0s$IW~t<`0|8>BPc}0?8t6cl zLjX+0?J!9jky$=wy?=DFEQT3}2LoO{VJM9s@$G^hQ}_G2($km8>+H&TQS)nN4w9K? zOKS$caxO=x=*#*4VDSv{=yCy~#CGjXs~JClv)qGY?T?}wmK?;;Xf7Gt)V*3Z$R^71 zs7QA^3z0r2-TUZ1P}noLQ#3S>y!axh7bx5K`QLQ%C3Vx=v7qHfdb1gnr}IY%CUJ2M zG0ja+jOjqL>a~45D*c#t(+6Wb8tNNEnc4gd5eJ;hEadlFCkp5W4>6|8EY(qe*{Ka+ z6ykS0*-$3DC=|R}ANpl*fEg;LVQqVR8IukL+C_P$L`w{V2|iM@rSl0$^cm&!nSRqw zNRG^c{;zX#mmfex5c^PfYqetQOfEchb0pF|TLQL!9*%j289}Nc7U%S=Pxp@uz+IC6 zt=1>sgop~gWtMB4xVqoXFtU53L(?^svfx<#;pM?7>SZNKpqm-NQ&Skhp?qs-Szxzj zgX5S2m%|?)*3by_<112bkx+_)-QOC2kw*B2TQ37k&9SaDe)7N5V5xe;=Jbwk%-KuW zWQ9~kTGeKADO>-#anNS}-H`W&)KZ;_i^Sqweus=QRXn$!G+y@$P$-|W za!w`{=BK-%{qf$Lz*HQyu`hPR=crTtlA7{-DPkgHg#~{B>;6%Crr>}}Arn6Vvh|cC z&a8WS6GpHVD@Z;G-to??s8rUUO&-%9iaGY2R(m`U|3`=6`6e%?WvxD;vbrqh%R}|p zmrG~_m07YpH7`aeE(ek-Qua{Iz0Vcjb|I zY^Zdv-YFuCMB3h6~7ik-2@rT0nG*Gn|$n2gCX zvaBL|gph)GQ0TSSkU19SC|UB3RAnqrZ1ful4qj-Ps>3dpZ5^ex zIT-S4Pa?fXwF-RgrJisTV-kbSf94oLp@boAgI}BqHM;EQ>lbDWYh+|h$Jz(6u*S@P zzEfVXa;xz)FhaL?WIiOI_g(L!4t|k`jX_!pJVuTl6p9-XVCG!2Z1If`T^3nhlRsr$ zH`)=z+Sjwn%gN{3`g*KO%hywv6olc8N$Pn*OnM+MxAYsB(lw}lkWxxQ6fI!d*4eyD z6b?!)8Fh#*b7=6``EGHP8g0|Y&de-|frlI)i0++IhI#>-DFbGmTml2mMfqtPjS!xC zFQJ&@6j4?GATcGEvPpW^L_)*GVapbe#HkgOnih?cdI z_Gq`(uD5kHDEwA~lCNX?XiOeqEiG3sT~{YI6Pje=ak*MrFdLis;c`OhUA_>Wh{AGR z!B634M~QpV)#tD9)0+i_s+F!!S2@UM?J0JjmH+ncN?ZwzTyc3+{i`f4&p${lvTJ9i zE^#2_Q68Rj(NymCx&Nd=sR6-3e5&%zoxq=lpL}1^!VKBASY7B1eitm=DiGonBW(WVf)QZ-Iqou8jY{B z)k5qi2eB4yrVtdr_N<+XRPISx`%G9Y@8lGJl?QL7{rnV@3hIGE$AL4@6qDs%BEsy- zl$oU5&2Pwc7kn}3ah`UJhYGO4gXEwmUb-g|a-o6+_&QmY`@)&m2DSpYy=AZNA6i(VmoN< z_A_+yDH8Sd=8N1N*z7REOUyi@e_)oo*XO=UPN<)00^|600h1D%#kAq zIEZ^8R<2y_Lz}gdlps#%!padY`An>2wQ7OkCWn9sBdfQIIt_%Ez+J&y3=FRbdpQrrJk;neD z#@KWzvhIiBV)9=!8wh|vdl7)3w^w_hG$7zg;OMTScPW~dP&j{(?B)c$r`}A)^L=!K z{?)}kVp!Dmi@Hj;>3fUMQF?Pih~FsK%ZyOO&x)$d?3vng8O;I$Akh8eWFrdq3K=8MzTRKmjsV;AWg|L?*C{6`0*tS69=7ztG5 zW%T{?{^SSbSSWn@7p7&9@3m3>m64DZlO7GQLXxI|jFDkrr~vdp^;yf;83Ecqx!Xzk z4BwOZfaIZs84A+cWE3*e3OdL#aG=h6;uSb!zW428w|!Oh!Q-ws87*8Bc7(rv>+>Hs z^Xqg~eaEz(!EJL!;zpYn8k|C14P*xhGaXR(MYZGkmP6MoFoKKxMbr+H=LfG`xMMN} zin`Y%p;fMJG}1g3KU&WI|C@@bwBgnI13-8M&zQK99f=;se$w@-kjV-_Pn4etw_0*x zC}67fL(~45i$q@(KKyXf;XKfUfnB-9NJsd8gq3udsm#Dy%LBAZ;K(}^1FTeaMTSN2 z2?SXljnM}0>C$>{dH}B$**u1kFrzXHBq@h_(WQZhWu2ELtC9TI*1T~8NXstJ6kqsU zUAU{s2{N}KEInDq#*8OQoWmYhp)uSDsnzynhq-Jmls1LdVl9fJNS7H2+}{{c<@0J; zsv+7eh-z2uFw5lw6^5%e;m>~LZEG!q#M*pCHX)5DC#1--ga8cq$LX58JvRmuyGjWO zDNZzk(GEUT6y4b+Uja%{0{nMUuSvbxujO%x=!2PuflUJz1eis%@wZq>Efe_!LZT<) z$Ta{(y-w)!q zj`K&6u~PjWx)mrB-m=~Pa1fzZ?|DN2#%?%mavAc7X$74y=P=ro(w?|a`ILB1z`y$` z`~Q#`R|X!Q2(Mjzj=%0Xk2Q@zgK4^8t2?4p%4V^pJX5@!m?`l{vNJFuOa0R<-=4&7 zIvo#tU2z!Dqhm$xlW7=u+%RjpXO6bunWS)bUqp|vTwnSErU;y zP~H3TN(xw&bwljUL^6au(~n+iIoTvd2vqgd|G1tn6MEEw+rZE%SzE@gg?yjZ-xV2C z0kf|!a`rOZ^!?d$OaA6s$J<~NNfXw^f)TxvDW=^|b#Pw}-F=GBKez&>KTFIJ3P@c3 z)!zl;;#C=oFt6QxPDJP^oK~L>>H!T@cyCBtzYlo4mI6uh zS+l^AS|PIlm+?$t=?}DuDO=jAIX0T5Y|2PXxoAmN?=CDYQzZW7Z1D}aPkZ&Bn0CF# z(b{mdnIyKRxDK zI?P46dGB_{LqVERmozQFE6R`h<3}iIA0><=&$Gi`2Fjxt2L^)GTi+C#))j}2$l|u- zVlAzqWm_<`f8l8>vq~YSu<+AH{-8q)4B2_A2CKLXuM?zP3{dLY{oplw=HHHatMWnk z2O1}0i)YyVaXs11VgcG%yw*H(dHs&WlD#RNnwa5cn6n|!WIXMW#aleh&aVCWOiHtd z@ZmE)P4J(N0-GE@G;ISCIqif5*=eIZU&HqvCOc+D`GTS^JkXbGh;2Z0EBd~QSB;U( z0*{|u&MQoLGP8F2a?kC++bc5XSJ!6)2Xr!ppYAVAZ0j?iqcvcz7 zB;T#OQg)$y`%$lyTT*hfw2Q~b3_D_WwwX_CTaL5k7Y1P$Ebf0j-Hi4^(`0P9P-uMX}FKL>=bpLS1+OzbQ zxDm&5h$usT#!5__hll2O&*CUoK=(fO}qU45MC|@FX*yl=3~_d} zS;WXbY#OZw&4%dVZ!l>4VhgCW@4oax-)ftNP!kulaHIxed*YvcC#Y}lW)v%@LY#hc z8shLJ?#S$)7t2L6=*x{IV|(Yk6|jnsG;`PnlcsPHPPMo9^;;{?D=&~zON{*&_zTmy zDI(XG?^j7`c+YrpN0Of>1%nT{R4rhp5WnX7U|N_lngY8L!!^}E)q!D3;YKhk&h&~A ztdhwJ>liD1DV9YyTDh4i`1&euNDV${!pJ6aNO}Pymk%~VXo*|wPFV`ZCMEtO+HjZe zKNHXToe%GmnIL^z+kRXT&4_j9fT`O@qK#F7hOAFVSI)Y1LXJW0KRDye8c;D5WXU}l z6pG~LVO+Ek)PTJx>u0>|=Qmv-Zoo-}pO`3k_(nHyLkFOSt2)od6(K<40F7nEp>b<; zn7p{Nnee@ajGVIEC`uCt3?D2K(pEr-rS4v0o5@O%3wy%~&I5jX$gO6AHqpfIar#yM z0Ty)&F-43#*MB7A)N4oEu_Y+sb^g)68aBePf%0JMpf)vyEbE51EEqv9#9jYo>23<0z`Xu@iga4RK%s5ZD_yMMRIQO2<57Xe%q@48A>W4jy?{C`jS%&P{sw=VN zTa8;uOg$!p_+7hdiZV^AXW_3e!CQ?Xa0`M#H2qyTCQ_@9LE)V1zC=?|(ScsuM$?b= z+Z6W=QVrM6`DUvKBBtVoqva3RycUnD6W!e8)PV~#CqDi!%v^y{GV17zv6?&^(tQat z*}ZOO2~>}Cdk6)MT7!q&2(|9xPp@5X5FeU!t*s$8bC_1K`X3sB55Jfy%yK+;4l??( zptFtJIZGtLN9TG?0wY02N~rv^tdz)DRvFbK;Hu(JB2(W=wtn;LorSQblanrr)PmUm zW(X`hM~><=z*4$9-+%P&SGKSkLVQW<)+zqPR*~m&cSp_vu%i?+AE5lFc7I&Kaiu9= z5NeIkuFEo-n{jx76PU(?VeuiBxkEOlW zkz7gY>ImQ`X*{cJ)i}*JbKoG9SsZFT@B%|biCT8fT)(7HQX7{rRzb2uGX;;?qd>Sy zG!D!5U*QNQwm%Ek-zin=?@fw+Ho+Uk!j_s-R2agoSjTnLY4SXi5BikgZGTCiQ%;tU z6+d$5rLjtjb<$a~JY0Iw+w9tQyHE@NhH=i7aj z+wU75D=9?E86}^a=NIudF2PLPoMe6V(BKe1#BQ@a*t2k^sR)@cA$BoK0X@M6%?wRe zH9a%wTg?Co$NN1u%F{O2?I{iujNi_> z>^CQ<&`HOtTE1)F=@{KxQnLHXNk{Ix{$F*JN|dU7FmU}rC!f^5a8cxgA)dcIcyO@o%TMxB<=w0GJl6p6O0?nz6!|+Q&?= zYV}Z9r4w%|*ls2AyoMFnNC-6sMYb8-8XVrYEuJn_i<6X~+Oo3C1dDE$r771|ptt^x zvTnE6c8Z&=)tM|-{k})KTEw17&_yitnJJO|<}1G~>VeLx`l)a!|79 z$G#m`Xw*L%q%0Pt`)&V?@m;pBV9qrHHT&+w(i`iA8$|=W+UIMa@@+r8~-j2rC%0124(xU(R&f2Jh)CgEfe56bM$ z+D=pG_Yu}#dkC5cA$Ujq&g$^SlU|h`Pbklv&#m5il?%7?4CH^WMie|-nn=+U{e?za zfG8<~wS^Kr`>AmZtMEnuPeSTgg!pU2_^bLo)HptjBtt z`NJczdim4i2+9Zzsfk41&RX+)3n5*rYV+pqb;bxa_hD9a*Fh|19~8IEQ|K@ScT)2L zYSn^c$Z3bNF;WqOL@EQRVwZFic?!vTcW(5HUZ8IK?b}SRL5pZ~NI9ZjsZiw#0FH1) z|2&2F^y5V0>*j7H`{CX=#ir(eooMunoa)iioBA-e+6Z?4_$WMO2{|vT`Z9ln@d>Y( z;vOE9htrgVr$mIf5;EvCAO4FUB>A2)P*Z&UVzrawVGf`+tcw4(Y3QXBLs7h7Qe89d zlZq}%)L{Ri^40|^5&jBgHHs;YwP~9*-?L}TlRo2XXJXzPSDdA9VA587b`rTlNz$S>dQE)=Z*f7#0(ro7 z{e$D^TrljW{|Z3vw2hceI%GZ{er9Ktk`7z-+;t&6u>3f$dg9*7CFFWlFRT!#<}I=7 zaK#gc#v{UBq5?WGP8O%Pza?i%^rpncXV12@{dP=Fiicy@^$Foi-{4Nrrwn1JWZxC_ zC*{pzG^EHaB>{#$5pQp5x?Cb&wO`yDm^8R}-}J;NUg$WsNLE-92Ars9yqu_SPX*yb zKj8j}hzFfGmt&_?H&!P_pk#{W*4qdWxaM8XO zJtpDEW`Fzbr{^h#+8~p@RMQWM>7fed$$Y(?n#96>mFIHjvryI=8k_gnog2g;GxV9D~gCrE5f>T5t*Z2(|vfj_F}88$bmyYD76?)&Zw zRa3)ms*zy}k=#$mQrEIJFt06iE=iv5SNsd3`_CWGT}KS)i=e>F#$7|wP02c$EdN?V zRws_22FMp_ZHH(4J1UEAx&BoPC*vlOx$z9~^P__WH*}cG4wf;3<8+L{YId1EerJvd z_37$t6pO_-;28r)^IOr6X;+Par)eI0-|^2W;Q^E+Xy=BY;P8$)Eaf#37u(_3CFv}(G977HpNZ&H-z zdfHFUNO@`AtMn^3yZHzRv)EFps|YKKWN6wh@*I89_NLF3<w(%lA{h;uYxb$M^9VElrW%Zny^)P81w)-%`WdE)s9}&$a zD|=2}W4;mGT35pH0?-j8%QMT|nqz&zMNUK*+a8jjD^Zh)_@BQ?k;*|>4K}XqN)N5bG)5Ri@uy1X$a#sf@Gz z^uu<_0G9BkFpv|XkAYjmIGA-K46;}X^MR(Z5WFKp46nDbG%CYyh+va}gPjpY1 z{n$$W%(sSs}l)c7FqwVDTt8P3WJ$ZNgv^xw|P(&|!c z#1Axp{YFQ99&Z&kmhy=|AnySJ9-=}^2gmCOMa>v&2n9)oSluK`WailnpxSsh<)q}# zqgNH^{TDf&+XhUXJ!r#Z6nr$8coWp(;I;sn-`h%RwHg;Fu3Zum@;2H;9%aoLh0jE1 z9ZQ$9#2H^{>h5$e(s}(#(}_3drS*F`zVliAV7v=9ieTeMUohw;9a@Sk2)fdxphy^O z>Te;|?3uhi3%hzct~bHOg_czh(jMwLS6k(=0Q_GRDLT8+@^s)xAa!v2?_aQOS>VaH zOQE}Y8ogX*40@=$vs4g#;GYlYu>jpAA<1l@Dj}{ctXc*Y_oh!->28pGd)G4F+eXGt z0$PxoLPjE~Wub8TUgW6|SuYxCLdP$i_ir3k9I1QObUsw{@>R%qS#1;yX&Jw)iJj$_ zwns~rkoVu{if@7uM)|6J`*(n~v^ht6E+8Fcxk+dC!XRhaiBCZQRS-+Ptj^w>q~^Tn zv(ng#E3KG#NkZo1fUArCd6yh^x5S*140!lOO&U4c;diY`qGyk7jI3sFh9l1#e5^l_ zJ*}6^m68Eqh?Z6)2~o`?tmN>m1lti{1)b~69l+DN-T)aCM-$Q`Z&e+?rRM~8sO7eR z(F2%b5wSYM9ayU_5D|ZZ_AT~_+7;kmHS|iBui2)EtV;R6;K?{wveI0jC1R4IP7$ll3M z-*}7SpCrzaaW@~rULsVgyAy56lK_u;7i&F7wY&gL8kBkTU`N1Q|hvgH2IPFBl% z^*+T&3Ir~iEl-mxj;R#!mo<{2a5Sc)hPyeFWbRNLz~cx;p?#m8IXD6<`Mk# zmXFMj!4Z5MJmh0I7iyE^i582T`<&JMMn@_vy0~FGi{J%~vx0Z#s2`u3Vo3Hdsn;_A90VN(EGTskBL^#wyh;}Cqs7lYhI@SDlQQP|jA}y_KPU}-JDDzn@^*i-Nf4pG;2flteUGCv;a8=U^x3bK{mb$H4P%J04I)h}lm+YS0{*G# z0DpbQW#u7%jpU#HayD=cdlUQ>j4M8yB&)jOTKbB7z1bu71afQ~au!ZgXXEx|sY`Gh zt{-Ic=?oKR7@Q;T&VFZ%7?K#+=oFDny-Y_Y=0`{ISxEQ0fnr&TEM43YsoC|nZ}5IQ z3IESfW7M9I8P9vce(4FKkf>T2Sf%1X&1=WNjP^&@v+Oh$_$Vd85C7+F>I&)wpvL!^ zcQ1*T=W+n%C>tTfUlCoy0@2Okqc z`luCN8LzhWq=vUnD}rJ{Rb#|oYPbSsqY81r;llZlq$>Ys0C>6Xk*Q%4csBb&Dig z9T=EVu`BNB&QJ~)d)6vo-v(dp9NFjcz~V^saIfEx((lN6%qF=1p*a3afu9_sKP#%f zR(IFjJZ?Oi``?)qdr~FRUoLy?M(@Nj2UcK$M^dHzg)w?(-;Ep@(?rIG=vk&wSYzcA zRY2zNK_+XcDm-l#A{uBVSs+hYFqT22Fg2LM**_~o1D51~L{qrW6f_*#@YZVB3q!xp z*nh<}+C|uq+S2TG^VoIoXBkP9^(>64SwWYawLl(UeTRgH`kY%bc#;PfmYhgao63i{ zx15z{6ORtDFl*WsViFAj!3m@67}DR{t=Jdd)Jzbk7WyK=OTwF~%YS!OE_=F0GT>w9 zJ&{^ZMf;rf9n*e57r4C9t_mN+!_5~!0U-flru(=u3|y>^Gc!Eh{RPSj+72R06@i5)>3pB z+ucGLBQwO$V5)mm_byyd4obog)T`eWo(jZm#jXArR0Fb7bu;GBe*VkJEOSp)>A(APu^}T7K{NQDJTlk?T3;W&meqptKG$Wz@oun4B^m z_+teK`NV40{r7sq*RH!#Q6kP9xW!WQV;kw?*~->h4gGbrYBe7;^Ao)qowUHDtG=`3 z+tTWBd!~CI7oH=raOHgTrw1e9(MoO8WoYE$?^!IMSj-VL8@iq&>k%()beQmQ-u8&y z@NDicJ$r1y`KJE_!qz{AR+AHBbk~-B^0}DhTM_Fep_Tpaf6 zE2|6pV^cb^gAfbdPSfUF)_%DN8qf;OBqC06=oOhrpUsH8)eyNTm$l~{DDyB|F!AWk zCSq6wYA$N)M$#c@3LE#$xY4*{%Xdlk{#oLq-t=^2dCnWg|0HtCIK)#xwv`;1@VgAYLT%iv zAMa0-9{721#TK%Kom(~Vtv$N+Ig37Ag)QL?bSb>b=oF?sBpoKc*YR2P<%ncE%Ti7# zbU{>nY8K?&{ON-GJd)w|c5scT&JtYmaO%AUwizd+9mWK!=#3~Bxc~Ht zIJeOASpN~N$z9Yf)7)T{0@1}^uGngP&UJ2ej7dY_+E=NKQK~IqW68!A)vi<3?1~lf z1Arkm@~MkiH9rY%H=WwIj(Y<({no+?ZJgughMk7?KPx0lN{b#FV69F!9FhVB;}gdG zpNqywVgFq$j+Z60ZjuGC7~`OQHqc8V5JV8JJ@@uE$N@trk0G4l96gagHu}bHY(+;9VQFG=jbXX%as`HR^IEW&61pZw)N39qdDokcG02Kpsam|2-VPbW>Tj`F&> zGHMjBW_Ez0{N-5??1R`jVrWQNV(+u6o#JXxC3GTlq!*+y0hTKdPdzLqS{2b26r&6R zgABwgs+uiO6d4ppaO^B>v?=yCD9Q@X`NvwrkjAkF89`Ak%PL7%Z+!01WdE|4LzK|F z2TGZu2y^7Hv>f%<0eI{ZHPtgp>s8KCe_fy5(W`j3kB<&c`lX)0net=;8O63#MVGBFF6lClyChQhoGwcN%xGYKQ#wQ-g?1Du%ZPG8lS^5gC}(y4+a{+9zMN z{zxl~*(7KP14FM@<1IF59in1o1T{HJyoc-uns(O*S&8Vw9t~y8@DWjiEa|EOHY(D@ zB~=4T8kJs@%&WU!+5h_t=8WQ$R0<^(d^|4F_1`$fcMH}SH<}W{#aryo3S95*sQDv? zK}c+zj-&MFV8xdovlx%a$W!>MIv&YS)9peO-mq!73OUS>pyq6*sn$V=$igetb}?Mn zz{l|cbYhcM<8=?B6A5-s1?;sCfZuD#VQR75OY!z0YQzsdNbZ#}B`9JiOAR(2B%pTZih12OM;(wL%e#D+9Joqe%IxygG8VB* zUC;~`XNAoS<%ku!$8bSt{39!R_AYY|Vw4S|05wr$teajB65;`rfPx->s=Y{{51I_LYd$ zjIOY-yk8jmLhn<~T1S-XXGJWrrTWG9pDJgB+x`X6cj5Ug3ZCQMKMdyvp& z9#gL_9O*~&7S7&qCxelN+x?M7a_3py;eOHZ9NDs+*YsH@Tg)kR`A-8%WHUXEI2&HG z&DFA3LruXoT6o|)dozWwYVV+|G|k@ZWQ9_!*L;+ zj=}K!$${!NK%z?5NLGxn zI)ZRRH!N_K93O=6gi6-NT+@P7?#e9mGTZtW;TBse8`o?DzXZ$I2>u+A|6h>I{{?FE a6b6Q2UwoRzKKTzJgruUNDPJ#Z1^XW&*eWFrdq3K=8MzTRKmjsV;AWg|L?*C{6`0*tS69=7ztG5 zW%T{?{^SSbSSWn@7p7&9@3m3>m64DZlO7GQLXxI|jFDkrr~vdp^;yf;83Ecqx!Xzk z4BwOZfaIZs84A+cWE3*e3OdL#aG=h6;uSb!zW428w|!Oh!Q-ws87*8Bc7(rv>+>Hs z^Xqg~eaEz(!EJL!;zpYn8k|C14P*xhGaXR(MYZGkmP6MoFoKKxMbr+H=LfG`xMMN} zin`Y%p;fMJG}1g3KU&WI|C@@bwBgnI13-8M&zQK99f=;se$w@-kjV-_Pn4etw_0*x zC}67fL(~45i$q@(KKyXf;XKfUfnB-9NJsd8gq3udsm#Dy%LBAZ;K(}^1FTeaMTSN2 z2?SXljnM}0>C$>{dH}B$**u1kFrzXHBq@h_(WQZhWu2ELtC9TI*1T~8NXstJ6kqsU zUAU{s2{N}KEInDq#*8OQoWmYhp)uSDsnzynhq-Jmls1LdVl9fJNS7H2+}{{c<@0J; zsv+7eh-z2uFw5lw6^5%e;m>~LZEG!q#M*pCHX)5DC#1--ga8cq$LX58JvRmuyGjWO zDNZzk(GEUT6y4b+Uja%{0{nMUuSvbxujO%x=!2PuflUJz1eis%@wZq>Efe_!LZT<) z$Ta{(y-w)!q zj`K&6u~PjWx)mrB-m=~Pa1fzZ?|DN2#%?%mavAc7X$74y=P=ro(w?|a`ILB1z`y$` z`~Q#`R|X!Q2(Mjzj=%0Xk2Q@zgK4^8t2?4p%4V^pJX5@!m?`l{vNJFuOa0R<-=4&7 zIvo#tU2z!Dqhm$xlW7=u+%RjpXO6bunWS)bUqp|vTwnSErU;y zP~H3TN(xw&bwljUL^6au(~n+iIoTvd2vqgd|G1tn6MEEw+rZE%SzE@gg?yjZ-xV2C z0kf|!a`rOZ^!?d$OaA6s$J<~NNfXw^f)TxvDW=^|b#Pw}-F=GBKez&>KTFIJ3P@c3 z)!zl;;#C=oFt6QxPDJP^oK~L>>H!T@cyCBtzYlo4mI6uh zS+l^AS|PIlm+?$t=?}DuDO=jAIX0T5Y|2PXxoAmN?=CDYQzZW7Z1D}aPkZ&Bn0CF# z(b{mdnIyKRxDK zI?P46dGB_{LqVERmozQFE6R`h<3}iIA0><=&$Gi`2Fjxt2L^)GTi+C#))j}2$l|u- zVlAzqWm_<`f8l8>vq~YSu<+AH{-8q)4B2_A2CKLXuM?zP3{dLY{oplw=HHHatMWnk z2O1}0i)YyVaXs11VgcG%yw*H(dHs&WlD#RNnwa5cn6n|!WIXMW#aleh&aVCWOiHtd z@ZmE)P4J(N0-GE@G;ISCIqif5*=eIZU&HqvCOc+D`GTS^JkXbGh;2Z0EBd~QSB;U( z0*{|u&MQoLGP8F2a?kC++bc5XSJ!6)2Xr!ppYAVAZ0j?iqcvcz7 zB;T#OQg)$y`%$lyTT*hfw2Q~b3_D_WwwX_CTaL5k7Y1P$Ebf0j-Hi4^(`0P9P-uMX}FKL>=bpLS1+OzbQ zxDm&5h$usT#!5__hll2O&*CUoK=(fO}qU45MC|@FX*yl=3~_d} zS;WXbY#OZw&4%dVZ!l>4VhgCW@4oax-)ftNP!kulaHIxed*YvcC#Y}lW)v%@LY#hc z8shLJ?#S$)7t2L6=*x{IV|(Yk6|jnsG;`PnlcsPHPPMo9^;;{?D=&~zON{*&_zTmy zDI(XG?^j7`c+YrpN0Of>1%nT{R4rhp5WnX7U|N_lngY8L!!^}E)q!D3;YKhk&h&~A ztdhwJ>liD1DV9YyTDh4i`1&euNDV${!pJ6aNO}Pymk%~VXo*|wPFV`ZCMEtO+HjZe zKNHXToe%GmnIL^z+kRXT&4_j9fT`O@qK#F7hOAFVSI)Y1LXJW0KRDye8c;D5WXU}l z6pG~LVO+Ek)PTJx>u0>|=Qmv-Zoo-}pO`3k_(nHyLkFOSt2)od6(K<40F7nEp>b<; zn7p{Nnee@ajGVIEC`uCt3?D2K(pEr-rS4v0o5@O%3wy%~&I5jX$gO6AHqpfIar#yM z0Ty)&F-43#*MB7A)N4oEu_Y+sb^g)68aBePf%0JMpf)vyEbE51EEqv9#9jYo>23<0z`Xu@iga4RK%s5ZD_yMMRIQO2<57Xe%q@48A>W4jy?{C`jS%&P{sw=VN zTa8;uOg$!p_+7hdiZV^AXW_3e!CQ?Xa0`M#H2qyTCQ_@9LE)V1zC=?|(ScsuM$?b= z+Z6W=QVrM6`DUvKBBtVoqva3RycUnD6W!e8)PV~#CqDi!%v^y{GV17zv6?&^(tQat z*}ZOO2~>}Cdk6)MT7!q&2(|9xPp@5X5FeU!t*s$8bC_1K`X3sB55Jfy%yK+;4l??( zptFtJIZGtLN9TG?0wY02N~rv^tdz)DRvFbK;Hu(JB2(W=wtn;LorSQblanrr)PmUm zW(X`hM~><=z*4$9-+%P&SGKSkLVQW<)+zqPR*~m&cSp_vu%i?+AE5lFc7I&Kaiu9= z5NeIkuFEo-n{jx76PU(?VeuiBxkEOlW zkz7gY>ImQ`X*{cJ)i}*JbKoG9SsZFT@B%|biCT8fT)(7HQX7{rRzb2uGX;;?qd>Sy zG!D!5U*QNQwm%Ek-zin=?@fw+Ho+Uk!j_s-R2agoSjTnLY4SXi5BikgZGTCiQ%;tU z6+d$5rLjtjb<$a~JY0Iw+w9tQyHE@NhH=i7aj z+wU75D=9?E86}^a=NIudF2PLPoMe6V(BKe1#BQ@a*t2k^sR)@cA$BoK0X@M6%?wRe zH9a%wTg?Co$NN1u%F{O2?I{iujNi_> z>^CQ<&`HOtTE1)F=@{KxQnLHXNk{Ix{$F*JN|dU7FmU}rC!f^5a8cxgA)dcIcyO@o%TMxB<=w0GJl6p6O0?nz6!|+Q&?= zYV}Z9r4w%|*ls2AyoMFnNC-6sMYb8-8XVrYEuJn_i<6X~+Oo3C1dDE$r771|ptt^x zvTnE6c8Z&=)tM|-{k})KTEw17&_yitnJJO|<}1G~>VeLx`l)a!|79 z$G#m`Xw*L%q%0Pt`)&V?@m;pBV9qrHHT&+w(i`iA8$|=W+UIMa@@+r8~-j2rC%0124(xU(R&f2Jh)CgEfe56bM$ z+D=pG_Yu}#dkC5cA$Ujq&g$^SlU|h`Pbklv&#m5il?%7?4CH^WMie|-nn=+U{e?za zfG8<~wS^Kr`>AmZtMEnuPeSTgg!pU2_^bLo)HptjBtt z`NJczdim4i2+9Zzsfk41&RX+)3n5*rYV+pqb;bxa_hD9a*Fh|19~8IEQ|K@ScT)2L zYSn^c$Z3bNF;WqOL@EQRVwZFic?!vTcW(5HUZ8IK?b}SRL5pZ~NI9ZjsZiw#0FH1) z|2&2F^y5V0>*j7H`{CX=#ir(eooMunoa)iioBA-e+6Z?4_$WMO2{|vT`Z9ln@d>Y( z;vOE9htrgVr$mIf5;EvCAO4FUB>A2)P*Z&UVzrawVGf`+tcw4(Y3QXBLs7h7Qe89d zlZq}%)L{Ri^40|^5&jBgHHs;YwP~9*-?L}TlRo2XXJXzPSDdA9VA587b`rTlNz$S>dQE)=Z*f7#0(ro7 z{e$D^TrljW{|Z3vw2hceI%GZ{er9Ktk`7z-+;t&6u>3f$dg9*7CFFWlFRT!#<}I=7 zaK#gc#v{UBq5?WGP8O%Pza?i%^rpncXV12@{dP=Fiicy@^$Foi-{4Nrrwn1JWZxC_ zC*{pzG^EHaB>{#$5pQp5x?Cb&wO`yDm^8R}-}J;NUg$WsNLE-92Ars9yqu_SPX*yb zKj8j}hzFfGmt&_?H&!P_pk#{W*4qdWxaM8XO zJtpDEW`Fzbr{^h#+8~p@RMQWM>7fed$$Y(?n#96>mFIHjvryI=8k_gnog2g;GxV9D~gCrE5f>T5t*Z2(|vfj_F}88$bmyYD76?)&Zw zRa3)ms*zy}k=#$mQrEIJFt06iE=iv5SNsd3`_CWGT}KS)i=e>F#$7|wP02c$EdN?V zRws_22FMp_ZHH(4J1UEAx&BoPC*vlOx$z9~^P__WH*}cG4wf;3<8+L{YId1EerJvd z_37$t6pO_-;28r)^IOr6X;+Par)eI0-|^2W;Q^E+Xy=BY;P8$)Eaf#37u(_3CFv}(G977HpNZ&H-z zdfHFUNO@`AtMn^3yZHzRv)EFps|YKKWN6wh@*I89_NLF3<w(%lA{h;uYxb$M^9VElrW%Zny^)P81w)-%`WdE)s9}&$a zD|=2}W4;mGT35pH0?-j8%QMT|nqz&zMNUK*+a8jjD^Zh)_@BQ?k;*|>4K}XqN)N5bG)5Ri@uy1X$a#sf@Gz z^uu<_0G9BkFpv|XkAYjmIGA-K46;}X^MR(Z5WFKp46nDbG%CYyh+va}gPjpY1 z{n$$W%(sSs}l)c7FqwVDTt8P3WJ$ZNgv^xw|P(&|!c z#1Axp{YFQ99&Z&kmhy=|AnySJ9-=}^2gmCOMa>v&2n9)oSluK`WailnpxSsh<)q}# zqgNH^{TDf&+XhUXJ!r#Z6nr$8coWp(;I;sn-`h%RwHg;Fu3Zum@;2H;9%aoLh0jE1 z9ZQ$9#2H^{>h5$e(s}(#(}_3drS*F`zVliAV7v=9ieTeMUohw;9a@Sk2)fdxphy^O z>Te;|?3uhi3%hzct~bHOg_czh(jMwLS6k(=0Q_GRDLT8+@^s)xAa!v2?_aQOS>VaH zOQE}Y8ogX*40@=$vs4g#;GYlYu>jpAA<1l@Dj}{ctXc*Y_oh!->28pGd)G4F+eXGt z0$PxoLPjE~Wub8TUgW6|SuYxCLdP$i_ir3k9I1QObUsw{@>R%qS#1;yX&Jw)iJj$_ zwns~rkoVu{if@7uM)|6J`*(n~v^ht6E+8Fcxk+dC!XRhaiBCZQRS-+Ptj^w>q~^Tn zv(ng#E3KG#NkZo1fUArCd6yh^x5S*140!lOO&U4c;diY`qGyk7jI3sFh9l1#e5^l_ zJ*}6^m68Eqh?Z6)2~o`?tmN>m1lti{1)b~69l+DN-T)aCM-$Q`Z&e+?rRM~8sO7eR z(F2%b5wSYM9ayU_5D|ZZ_AT~_+7;kmHS|iBui2)EtV;R6;K?{wveI0jC1R4IP7$ll3M z-*}7SpCrzaaW@~rULsVgyAy56lK_u;7i&F7wY&gL8kBkTU`N1Q|hvgH2IPFBl% z^*+T&3Ir~iEl-mxj;R#!mo<{2a5Sc)hPyeFWbRNLz~cx;p?#m8IXD6<`Mk# zmXFMj!4Z5MJmh0I7iyE^i582T`<&JMMn@_vy0~FGi{J%~vx0Z#s2`u3Vo3Hdsn;_A90VN(EGTskBL^#wyh;}Cqs7lYhI@SDlQQP|jA}y_KPU}-JDDzn@^*i-Nf4pG;2flteUGCv;a8=U^x3bK{mb$H4P%J04I)h}lm+YS0{*G# z0DpbQW#u7%jpU#HayD=cdlUQ>j4M8yB&)jOTKbB7z1bu71afQ~au!ZgXXEx|sY`Gh zt{-Ic=?oKR7@Q;T&VFZ%7?K#+=oFDny-Y_Y=0`{ISxEQ0fnr&TEM43YsoC|nZ}5IQ z3IESfW7M9I8P9vce(4FKkf>T2Sf%1X&1=WNjP^&@v+Oh$_$Vd85C7+F>I&)wpvL!^ zcQ1*T=W+n%C>tTfUlCoy0@2Okqc z`luCN8LzhWq=vUnD}rJ{Rb#|oYPbSsqY81r;llZlq$>Ys0C>6Xk*Q%4csBb&Dig z9T=EVu`BNB&QJ~)d)6vo-v(dp9NFjcz~V^saIfEx((lN6%qF=1p*a3afu9_sKP#%f zR(IFjJZ?Oi``?)qdr~FRUoLy?M(@Nj2UcK$M^dHzg)w?(-;Ep@(?rIG=vk&wSYzcA zRY2zNK_+XcDm-l#A{uBVSs+hYFqT22Fg2LM**_~o1D51~L{qrW6f_*#@YZVB3q!xp z*nh<}+C|uq+S2TG^VoIoXBkP9^(>64SwWYawLl(UeTRgH`kY%bc#;PfmYhgao63i{ zx15z{6ORtDFl*WsViFAj!3m@67}DR{t=Jdd)Jzbk7WyK=OTwF~%YS!OE_=F0GT>w9 zJ&{^ZMf;rf9n*e57r4C9t_mN+!_5~!0U-flru(=u3|y>^Gc!Eh{RPSj+72R06@i5)>3pB z+ucGLBQwO$V5)mm_byyd4obog)T`eWo(jZm#jXArR0Fb7bu;GBe*VkJEOSp)>A(APu^}T7K{NQDJTlk?T3;W&meqptKG$Wz@oun4B^m z_+teK`NV40{r7sq*RH!#Q6kP9xW!WQV;kw?*~->h4gGbrYBe7;^Ao)qowUHDtG=`3 z+tTWBd!~CI7oH=raOHgTrw1e9(MoO8WoYE$?^!IMSj-VL8@iq&>k%()beQmQ-u8&y z@NDicJ$r1y`KJE_!qz{AR+AHBbk~-B^0}DhTM_Fep_Tpaf6 zE2|6pV^cb^gAfbdPSfUF)_%DN8qf;OBqC06=oOhrpUsH8)eyNTm$l~{DDyB|F!AWk zCSq6wYA$N)M$#c@3LE#$xY4*{%Xdlk{#oLq-t=^2dCnWg|0HtCIK)#xwv`;1@VgAYLT%iv zAMa0-9{721#TK%Kom(~Vtv$N+Ig37Ag)QL?bSb>b=oF?sBpoKc*YR2P<%ncE%Ti7# zbU{>nY8K?&{ON-GJd)w|c5scT&JtYmaO%AUwizd+9mWK!=#3~Bxc~Ht zIJeOASpN~N$z9Yf)7)T{0@1}^uGngP&UJ2ej7dY_+E=NKQK~IqW68!A)vi<3?1~lf z1Arkm@~MkiH9rY%H=WwIj(Y<({no+?ZJgughMk7?KPx0lN{b#FV69F!9FhVB;}gdG zpNqywVgFq$j+Z60ZjuGC7~`OQHqc8V5JV8JJ@@uE$N@trk0G4l96gagHu}bHY(+;9VQFG=jbXX%as`HR^IEW&61pZw)N39qdDokcG02Kpsam|2-VPbW>Tj`F&> zGHMjBW_Ez0{N-5??1R`jVrWQNV(+u6o#JXxC3GTlq!*+y0hTKdPdzLqS{2b26r&6R zgABwgs+uiO6d4ppaO^B>v?=yCD9Q@X`NvwrkjAkF89`Ak%PL7%Z+!01WdE|4LzK|F z2TGZu2y^7Hv>f%<0eI{ZHPtgp>s8KCe_fy5(W`j3kB<&c`lX)0net=;8O63#MVGBFF6lClyChQhoGwcN%xGYKQ#wQ-g?1Du%ZPG8lS^5gC}(y4+a{+9zMN z{zxl~*(7KP14FM@<1IF59in1o1T{HJyoc-uns(O*S&8Vw9t~y8@DWjiEa|EOHY(D@ zB~=4T8kJs@%&WU!+5h_t=8WQ$R0<^(d^|4F_1`$fcMH}SH<}W{#aryo3S95*sQDv? zK}c+zj-&MFV8xdovlx%a$W!>MIv&YS)9peO-mq!73OUS>pyq6*sn$V=$igetb}?Mn zz{l|cbYhcM<8=?B6A5-s1?;sCfZuD#VQR75OY!z0YQzsdNbZ#}B`9JiOAR(2B%pTZih12OM;(wL%e#D+9Joqe%IxygG8VB* zUC;~`XNAoS<%ku!$8bSt{39!R_AYY|Vw4S|05wr$teajB65;`rfPx->s=Y{{51I_LYd$ zjIOY-yk8jmLhn<~T1S-XXGJWrrTWG9pDJgB+x`X6cj5Ug3ZCQMKMdyvp& z9#gL_9O*~&7S7&qCxelN+x?M7a_3py;eOHZ9NDs+*YsH@Tg)kR`A-8%WHUXEI2&HG z&DFA3LruXoT6o|)dozWwYVV+|G|k@ZWQ9_!*L;+ zj=}K!$${!NK%z?5NLGxn zI)ZRRH!N_K93O=6gi6-NT+@P7?#e9mGTZtW;TBse8`o?DzXZ$I2>u+A|6h>I{{?FE a6b6Q2UwoRzKKTzJgruUNDPJ#Z1^XW&*ocG4bA7g~7+R+jy+X>27R$=C%C%=l z;Mz^pH*nmZQT{=eY5hLgVvD8nBIS-}z|UAH!5-Gp!#L|D0@^C%00v9{bNIxU0N^>> zT@AD1;OnoYt_1)VuEsx6X;EqW$>qiyw;Akcc`5-^wX{B9;i~$({-)9HWD*}uh>UX} z@Ju$ud7luV*bY3s^Ltao0GPiO099*y2GC`A05xp5$-h?{9|uZq)QuTbL}oBh!U%(J zD~gQT9{^j}F4<=b>&IBP@V3)66rRH@9g?OiG=n6Y7vD&HyAXTwQ6;zTs9>}L0qPL* zu^I{B*AO|D+GUnmkY}i6CYEKLBta+FE;}ti@No)i&&L9nPyNB0KuG)^WsHT1kyB`ImAwCpLiJdwj(!4i_`d8cxkIPI8HQ}fe#eTI)4Wi(4} zpoSBHy<#l#;RcC8gkQ$lWK7GgV zsUoI{REU$SiFGrsuCQ|MtT|C=ACv5pX=m^K>yVLiGTv=2VWSXY8=M%PP1$&MKRMUX7N9**1e+j7~x8Op@SXwtvS$Qp+p{w)+`wS z=(qDx=VYV1Xp^|{HGs)j|0OuX7*?#8E~O3BR%j%tSnTpZ=q$ea_O>EZrf z27-$(T2C^@XKfSlV$sPGH|$y4o7bC;3tkgv-8-}fx7fk3K-#XjbnZi+;RBmvv){6V z{8Okb!rbL0n04V5DM%m0#FBI?TTaf0_Lk!-XAV_s532qxNg|i1;m<9G=xSjne)9Bu z2oXwTntxa|nn7z8=xgi1g&&{5_*8dbICnhh{H?q5#SjfThoT^-c&2uf(wSI*?p#@< zss6)J?PY=@SFM%`;V{Uvi~-TFj9H+pR^se;w@(ae3be5{MOztEQr}cp-~m?bwbk9u z1&(p^^;Il~?`ABWHUCI!cA^g{xn4~{L?|00Fi2@I#jhyjo7fa-0UBvSfyBJ#jqY=^ zKkCze9#FyiUa4$cq=2EYD#5Qr8I-1&`5{lZU%i9ZuZ&9ylb2+@Z+<$S!g6z|6XI0p z>Y16yPVubmow7|_p-j|?C+dRgcv_$M1n#c6q%&H-{sngY1=%m$Y+E}0{#kS3K)eUF zpdA(#X7oDGCigL3NQ3fryCZd7!Rhi5m*X5|W>NxxeDZp7e+pF6ZmONnIs*K0!Q}P_yjj(kB!XXeT1K>`b)@Oe*+;a2`qm zPw6#UN0#fxA_}L{gxN)$sa@B(noyLuJO2r`KAv+x83rz`_z@VXWh>hv+2@7G=QhFC z!`CAo9T$cc+!#Yu(814Ye3rQj8*a+z8{8?A5?Nk{SMGz;jUWutWx^<=GB8^T>!1pR zWf1(??ryce+XKC^!<3Eui#lC@zEs`q-^*;ARX%O|{nX0b`X5QR7?g6rzmLtYHvr6r z3g~(E*3tc^1L+|P#LTJRv7HJx*kH|G_S<$TE_gafJrAp}AO8w1H}N?2Pd8p!rJ!(P zYD`Vo!YK99xmKP1K*`+-Djm{m%Z_swY!G-!J#-9^G&&-?*7+jK?{>fiY1=fsnJ4+j z+g$gZ6H(^+@ZYsNHK3%AiV4~KUgj#?swKf@v*O2tJ@Fk@C!Ov9>5qQE7fk-b!1ioKqxxEJ%B<`{#3D0Qc(5nF_1m@G9wR#ikI+Qj@P*2mNlAfAlPTTY0Hzs_xwctf|EumqrTv6T}ILr z39Bsr(4sut&-xd=L%9;v*P`hPwd3N~PIP^v;SKH_L(cwdO2&YFLv5TfD5rwZi9}@{ zqvOlU0b19dnYoqG_H(UO_oDP&Yu=rGcVRa9{eZ@|0_nD4QV5(3FEDF^r)X*~f>LXb z5ge5v@p46>eBs$pQZy9X^7ab)DiFJBk13-?1=5kx3bsFRR@gCmw;nTtw_<8# z1!2Lhe8;J1f5oK!4omJ7aX9)NfF2DTrP>MlcOSd4k~*9{fsUGH7Q-y!{F81>N*wqX znU0p4>SXQ1?LuPobHWWf#P{F$%Ctj@41TaxYNo}w&8Wtn0fr8wBhvRRX~oLnmlMdM z;W8x5_z=(PFFe9nSUL$6{P)F54^S*z0U?=etnf?-_COXHf*_(;9x$DI@XxeG&Vvpa zvetFmsPoH#hWXvnCy4*V!&p%nr|g! zK{vGXu1Fe>%ktL{|43;cCWJSU!aa(B&E;19@z;FY32S<1G@HD|xncu3$L7WTG4OXj z>9%0kw;%4;L}lr!NsqOmqyIKs9N$;k;b%VDpfv4M7yj7;R4ObjvhhjhEIcC47arrGvt^x*sNV21{n|A6>GlJTU4^Du%ee zeB#hKY51)ma6UizqR!xM(~O5b3MTzFYRCp{wfg6zhocr;G=PYjj+&8(5vKyc`OU^- zQE4Su6eT(&Qk-T-;A9F!L_TMR@ePt4s76s7ut#Z+brHQ}aH@?@bprm4;n2WBLrwkL8e@p!G*Ru7RFCE0oS^UM- zk%5#_KMy123>N`oOXlAOe2x*o}deX=^~biqH+ zk0HiXTTD#uuF2k!5MiBvmV~x?3BdJ}rIEuI&B}3+3xMtGOA)zR7Ey?f)1U6Dz(m>a z!wGiUm<7T5C#WS72+vsZN(T+MHdpZM=Z<)nQg~1_rAg34NH1o+(R98wtCz}$b}W#P z`X$i%F@60pS(%)9VXNcC3)!|0VA?9Vo;s z;c6VWmYJloL^tmbsRmm&ok!;gw2J8qOy=k@5g2ASh0foew)|N{_$VgtuM}e(^27_q z8$h)au4I?H5e65^p1}Eu+3`>)ZFLu1KTD?jRIoxT4R z?w3-inO)aTK7Ml*@O-V8okhL-%Y8F)CObtXy3_M(O_J*U(r_NcB7s+tpG>SQsv_#; zS#iJGVITWzIp>C*(aFU(u-tKe=ve{$Umt)F*2Ud(qodYqf5kh+?*ivBg z!J03R^LP8t`q3d~)o)Lu?^`*SK%DL~*z-Fstu#wC=C%3Cb-tF_Whd?Z zrr#eJS$S`L;JJjc(eb%XFDJ$1WygESoKPerUo;TKXPzT4L2M|kNAMUfHD0GGN)h~- z%lu2=RI)K0OwW-6g!VMIL^fru{*f5sHr2#HJS9J&DEDq2g7^Hk@VbtWhMGT#u_t^}Z-H)U` z<*N}qKGnuxQ)usZ{nu+Yhj}AU$7*0X^{>l-^AwzNn+&&sNU0SyDR%6lm}R(tz3Y*w z{V|D!k!wYF?wU#&{OveOwH6VJvr5pT_WVv^26MI~y`B7$z#vrzhYr%bS$OU5ChsMy z6bknsgzU%GQA1*%ffGA%aDE)3uLr3%^vG)6N6#VRAT%3aUNj0!BUIH=$NViNZ`AKb(?A%UK7Gkz_{9*JJzXQQPsnFvdS!B$I;c<5G3&j#UgBo7;Bx zIUd%~e()(?*w8Wgu|IKL)=uyD?w{*Pewo=vgGco9uu3)Qy6{b>?$6r=bb1GYcB0(> z4pI5dKt$fmh^Xzyq*(cVI8Ze?`-(8))ECe2$61xo3-1}WqXTH{qd{}C=(EF|Y^In* z`H~)P!QJ2AQT0aQ=Y*5a!v z72J^4Gn)hZm)Pzs=qJM4h}+w&iX6dChNxOTT5^4d1oWsO{c{P3WR7PMy2ivB3ksDk z7tpM++D}bxA|T_<_{U_<>z8$R$lXIC{WMgqzW8VE#|x5GHp6)yZW{NA45j5w z5NfRIoAJwX>>mQRft(Fskf4UR9`$?-o4i_c~kJ%V0$x;pN$BpXseGa#b zFJJEXpyXwxWDWA!o1G# zo3<931_ZFQJ-`4rk>4wF@QB9+9e?81RVBdir;Me#@;`l@YhN-o{ye|xK{{pTG;xY& zBe9Vrc~xr;j0|bfGD&o%FMI!3gV?XF$y|mWXYc?MLmd2(J0-zaGcTZNk@PCUeYU0v z;brv%b-Hh-*k9h9ZmLwSYz_#+7U~4{32C%?nhb~^8j}~Vo zf8nP560M%}_c4u69Z$cky35A(YWrT-k4hqGpE~D-`9H1i{xYY;ZzHcr{XHAu*G-T$N4@4YlH~gORY}%=I~EE9X>D zU(#Hw(#mO%&3kmQ!6}G&(eW3INnsW(_0Kfv#jm~}LqcHdk>Di<nDT>-qsn|au zYfQC&iwvmz;p|jY()jt;zVm}M8SiJE1#m5tlyseWqAN?Hq=Ya$O8X0_p$8d4HxZY; zzR34q1fj+3N}6>w2 zGpwp3{)CqyzxJ=3%2P_`O=+i8n4LfsXXJ9ND0Vz?MCp&`=R1lnRS#F%C0p_Ea6z)* zMtr5eavo%nckn?EkydFCgOX%$ZbG^MHJT5JnzCGbQfj#=L|>!pVRXM@ zk`~g>!L<9RDS?xRq>I#z2oQ*~+#WaLFV3>^JQjDE$ZEQS)sMu3bN);9N|KYXi3%mA zF3AT`B}Qj;($wVU#_yN?G2_f{PMvy!dD(cou>tE&tSXK%^J9^mQS`pHpSX2>wOh}W zC!*n=A4tzb;uS|$)m*-O`xf(Ze^JnkrHRD8^$QVGoG$v~q>|;t%OB>Fr?4q^sc-PqRh)tj!>FT=hHAN3Pxv2gjFi+;M; zNWjPfp(azUirudG%iQf{cSc>++yyIr%GJd$uH%{Zwj-5~MpGhh9hZuHoO|{wCfcnx zr>r40=MP^^f(Xl^9};bE6|7XTqP5C#YG7Z@#Oe3V5D|%qwOY?UeLh>`<06FR1tM_R zp1}oB24L6Sqnos!sWuqv(J*7oYrB24wA^OB=1Vdu)y!%%cw9R4M0`fF(rg(v+J ztL*mDjeXGfg|SpS=yx)1#5aM7x8jUk@fP^9p;r^tZclu61MQ=u+ekgO8yrvj~xsq9gujiSliei3^m2lwU>J(?puoV^ zII_41KcU-E^)H!*ko(o>$fl}{o>vb*4TtfUdu-oHvNXX;GD#vMCV{LG4>TeBSpI3~ zejIjbqkGeq&tHYT0u_ZJ=^E({N^x-}kZ8C2v4j3Th<HRIWMUfS4P$IE)tBm1T@0zj)2*t zf|KiN1LKB!yqrX(*yhV#l41HPfzFrCZ=Oc7bGuI`3i-0Y!a4Ao8AbwAbRA}gDYBpz zy7-gl-yxyBF_JGN7kG1d!d*D1enb-66_MA)GCbTn!%i+;>f_kGmKqZQ9wQ2zibIY^ zdus>JmI@!AOMPc5Nq1kx>z{}?;Mly*V?%YKEKf(6KV0cg@4mP;b0#n+EiGap8k@rF zt85$*TwYTpIxQSnm1oTZ(zU!n}pDE1Lx3 z!jVnjW?j1ARka;bx8r=Q*OWl^X_~vSa3KVD$l=&J_q0MQaJay}Q)%t%OJkDVUt-HPPjb-%!t~facQO4? zeiTUyI^x+dN_LyblezNmEP@=xRjaYYuoP~HHl!p|Uo2@0q&6F_6(F1!sIH=IDA_(t)Nx8kC2!VPK zzq%5zAB<8dKd;5A#i5Jx7%UH3Mp^Z)Zv zp7k?m$J?K}ySX3x)FN$pm)xaT6Eorh8&quhqg}7`ey<#n+K}DFn@p_GqGt_#T-{x2 zv7+pyQD7a(cwc+`(@&LlyG*`JdBw$vm%HZknD$nNO5y>aQa&Hv$#2uqydzUXBsCx1 zmn6Dh+aX@#q4EwG~d& z*evsHlg9WZzi%mk#gZ^H7NtSmb4ytamQTMf9#WpMzxngj@k-K+=G|=cLh|>m$HEU$Ks|)m z{sCwNA`V>9TP_kGdL0imh*bt86ycXrc|eDS(J)FwaypgYpl5*SPLG#h|HL-0gE3D275tYaCwVDX+ zhNpgbghzv%ZZ`HreFD#4@aD2<>t}P5;&hc2n6zU|pV2Rr~M0LW!P^E`L|N&w(m?%6-I%t&~C;xJMV z0Sj|hKqF`7#y8df6>M_1&yO!|&l3-i%)t`>(C5j_7R5*z%!qnQ%w`;Lx7YqXaEK5= z%akJt#zV~?FGJp?Ug?M*K0hR{HN8>#?A{HP^+HQ?ZY2GNu`yr_)m7QM?8xI zsfUx;`G6Vfu$d1u(>q;u%}w>o{pAh5AseRM`W*Z0IqV=%c(s>JCD!wevAEzKqrO=z zigzXw`*5{(kfRio8<{%Nf$yMU;I%zIr^DqoLFFnR>lw?)93T+G5JtI5sfT?#5UdB< zCNw&B*X_()Pqu}7Em?;3YaACK`;_o`E%`z)CPW&wz9ee+6H8!x5=&_0AN)&0NLa7i zSwQyHVIzv)f*7pv=JV3EU+0YISW=o!S`;=GXoBabS+V`8%qBVUBIZAM_|y*1PFEO! zv2=US5=r~CZ$nx=8yc^I*|Li(9T=!h!CE8t!RWPpDMskpdR*C0^uSkh=v|%FiQ^O$ zjM#9S=<)=A-y%!IV?h&JsvzPTgr`gihp*AmhnGnAXwY*bE1@4m zAp_1Wqrk4&kCyGTL-CAaIBH3=Ni_ahR43wp5Jf!g4^@x=0D6BcKc2J_Y;8R8urR6` zRIQL_4eO`!zYGY!KOBF>haxT5`Vc=^RsZiK@Bf8he)|Tq^?m*OcL&wHcZHkoKOYLr zoGeV7E!fQ89e|62lb?-)myPqYCWn9^H-{iE9}5SEAP2`KS%=Yk0@i;Lz>XGHf@Tmq zh|_mR6SMauRu`?D_aNo}4}LeXceJx{uwt_`F>{7E0XW?`S^qDNlK(mWzsmLya~n&K X|Dkeq#hC4T0zghm8CWG@9PobtVEIQ) diff --git a/docs/assets/playbooks/library/trellix.png b/docs/assets/playbooks/library/trellix.png new file mode 100644 index 0000000000000000000000000000000000000000..37308acc39a4e16f5b23285e86171face0778938 GIT binary patch literal 11579 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 V^^XJMVIUw7gt5h?>c4Kr{U7Ahm+lYrnP9|(ja zS6N<0*Z=*_e2A{`S~mNBHM~rptU2|wwL#-cd9N8mhFK1KJ5-h^ZQ9=yPyXR|P@Zgm zfxZ-ijZxEmehu-wW?^-)v|c;nuk*goM((e$YzcmQPuw^1#8Ugub`_ucEBGg@85V;JvodH5z(qM(+;|%N1wAyRR1Uh-GmYBZ&jDVGpGn zG|7761oQujWUIZ7Qe_lV3R9qnEnJ8Ejtw>>+1z~Nzca&a_jR6@^3k`hp@ia08stKqO((_2Ri2IvM#UCaXzvEq zqTSqFXd)&wkk=q^3S40ksb@gyw_|3ElApV^UdLaPS?;i}^V z&W`sbPn15K;hA4Lg_y0HR%fY|(4mChPIA;dWr-`i{9~REzxg+b9O)mp{ZsJb-61rJ zXAa=j2>@I-T%3Ep)WeAj)rcuvZwAZf-Yx&eTvCOxCxy%`Al-a-prW-RuO#v6BhpHZ ztY?!;N~+;#)3~FmWP>gQEcMgb`ATGA$+2T&a5m6k=b z-G07XbMpNt8m2x)Rr~eq<`30**GV<@Z176U`4Q~4^RtBs*+E8rrLc6g7i1C-DtBB9 zs&;XW@})iBhU`gn=62kQa63yGtk{~yXJ}az%aAGbO;%LzHiQdFei;{?IY? zwL1Ovwgt7&)O}uuhQ`#Td#Yp#XY$Uk`c?`EH}yz(=8ub|@D{H87AraqPD2*E5fmtV zTA0D&jqAxO{q3hee{QcsXyML`EadeJ7TphCz1p7Ls}MQNmY2iI0EfEKE;7R-iPBcW zla9^6xjk^c8NF%Pku2I3aBoJEDvSx-EVfURT=b~Y0X$OgqQUKEcK&O^&lC||i!rj4 z^(aH){f*weW3r%%PA#2p)UbyiGxo>+xIUz6pO@E>F2p`sdcq@dLo`*tcP;gWBkn{o zn`!fPBx_uubz$SRtr*_(X=q zUz!I88+3O2n4uaul)r?X9DJT2rw<6Z;6JH|d69*QCL(p(HsTY~R+R6g=7JWF7>U3e9q zOL%jvA(1CDsbB$Er1|)tl()(Gd4bcN2l4%n5#ya703Pj;vSXxoR#hbvEg`dct5aG_ zOlWQAfKhKB{dO3;b~R(TlR(PO-Jd*dwN522%#^?XfyNu55J{< zxUL6a${T-rX=H4K4v4RY3<1l0R~z;6(OaE}tj%EBw_!4$jL2NMxxp38U(3f zg&bld!8=>*RqZF#L|aBUw=S!;HLmk@|Gv-xAebko5bQ#6 zIH^dBX1f>P6$kG%G74`kS24xbeLT??jN?Pwsq4O&+Gm}Mj#|7DQO|REJec?w9X!cm zMG@H(`n|e*rTpyM_#6xZs7Q@&6Xr7GEZQJQ4kOcN$uIs9bycnc2$4+Oy7VF5(vvEh zO&C5;J;QH-%Ud(A3Atg6JCByWW@cYUNLv@Bd`~1Z0nCu&^39p4#$hA8mXlKZAYLSG z%$mr>4H|l2nry{L*87Hjr{$>Ru9ro~VfpTxwkEd9H6<)8zE{4Fyuze4xVly?IK6}GnpEZN*&lXUMkdn{iO~gx zUJm*<6G9OwzaIUM{4J_0m0Lo+d>#BfqRzH|#B5J5a58q3lY)fbUr|2UwX7=@D(=6q z8a9hW1R;$@0?LXax>P#AF>&}e(*@|I-|yhXeCN#>hg!r#ji)+1Sv2oHIv&Fgovn0i z#)nt9-!@%z|K00=M`>!MQi3e{I)nfvVbWpsjZcI^+Qx!-qOE$1>7#Zm*0ir#X`%#M z+J+=bfu+mz&NTxjc<*=3vQPbYy(Nj3`tH4t2h8E+iX9kPdkmYF@%$3>U5+uG&NzVby{qQI43rY~2e+>c zdwuHgEryobX_Q5<7c;+66f#On+3UTx#pR33kX@URf!qj=i&jku0^24;DL`m2D1?4Bs^dO}WCbDa z6+Hav6YQ($YA1sPPPA0OIjZm=-_c?Wb9jaob87p?^RD2`nAWG+Obhn>*?}+$q+ksX z{l2eSL(_CEJj|xo%s3+aO(0M(+U_d0K(#$>yEM!omT$PfXRimTM;5lHH?0`xS($dr z#k?15vk`b&$U`U_?;_wv*60`o?7L=PZDK+Ud_>n5;T( zO@Z3>Z^sFuxHMaE-Xw@)_;Gj+K zp2@L4J}PaJj5e(LMNriOJQ(aHhOaP(Sdlig2AF*|j#(F3riwTs#yi(bZx;KfKM#_= z0f!I10ynb`Vf7 z4)CUhtxRsj)yVEJ{JPuGUb}PA>o0TFsyND{K~INR8c;Z0%O_OO1=%wj&Qlls@A>^ zk%|V9FD=}lNSlseNTUidS?x{y7ws>&7#ecgC=UV-Y(_196p50dOY$*;i zgCyq96pP*$K@HLGv`4~T9-F9HJTX(UA(k-~_oCX%zj^gZN3(u{11A@C7_T8bkX^?OE=BP7_u>N$BKKpb7?|3VG5co+zl+w4xG#>$w{gk->z;rsRjq1> zV%`yW)P^IKDM=S6MKE064w#4Y>@W{uV$NQQMC>Q-=}#cQ4}|FRtxUTLx59`#&93ux zECyac80F1Vceq1N5=JG?=ax22%*3~lIYGNGPo@MU{dln1BRQNIzfDtUrfK^9os|79 zS>yTa38Q>K>wNppMf5{1;GKy2>vK3dz`y$P?vpwR4o3M73T>A;QF=maut~!&sdc#U zUw(_upXTN7GseQ3EKWA7Uz_Ib$d1F&oxu}6zpiK)BZs18lK_%#KEhJD9u}sOzbkXa z{TAL1cj7Q^^5dazk&+^AmU`fUzbUa%ccOIYuXH5wNo8B5%?Uf-%ah7Q|GQx0zivsm z1Kg?Ufvk3pMD9ZNz<%uzwiG2MivDJMaB9+pJ@Qkko1)DG-Y7@S5FvJD8x--&cky`tN4%EB}0Uq1)w>7NnXsHRj+U6wnk?9UhC z@X(WXL{5 zl?BmSBDm%rWOwiz=8YWb6Tp8h5*DWivGA4pNdc26Z|CMsejFnoNNm)-zR}~+k!5K6W%3;cq*PdRu@2eZ8JL; z{Iv82EwSo35735iDQJEA);ccao3j^rg#`O5jIglG10bisp}DR zPiTP}y|aJtv^>s4?W~>W(s=}v2iU@EX)&y+xybX1oC;{#u!+leg?I;LehMoePk(g+ z8{U$juF{n?>-JdRlbYRHJli081PY*nvc`#tOXFm-Q9G3VCqF&Owr-d z>7tbH;>N$m#?((gi={Isfhpz^mWy7;D;f6_i-I!g^m0l{yzKaupZbD&zI<{u4)jQ@ zk6RH33JN>nD+i)9u30odz5ze?3_5;Q_42>JQ+HsYvF@CJHMsGZ%Ai;v(1jUz4NcUp(>6#N=8SLigcg`j5TnVqWkqYgU9AG*y&!(=~P4xdE)BP#EV8!!| zKiD_nmwDz?K#7k_KDIWE#Cy#4sXQT6 z(ZDI>CmUkfPT6Aqc-1vOIV3>4F?_|Qx>80)u5B}S&px~_TGPAc-^ zUnV1?XLD?6TzeJ98s^h&pLe=NpHQK%E<6+- z3TmC7dy6A3hO)vAc$7@oK$oQ%V(`*8siMcPncg*M-WvFbfImWfIYvp*OM+vP6m47? z^i9koOnwLd%FHjsRugp%>w)kD;t;GhH5$_&duJPmLz(^IE9Ad!6akVqxR#}62y=_( z$be0+%AV7a#da2>|TlZ@}i9uzIhe2dUDK9zhBi3Go4|JXRQOl6Rw|&B+)ix`oCR%_FQBWs+VJ zez>%QPx$s>h2mwp9PP8js*LTOs?B#PJ$C1Ty<4RW19_FL3Ccxz-8;!N2j*o|FhN8r z(Y%LJ2OtjnSsk^c;DhL7ueR&APGPp3-X4v->8P=Fl@1i2(HI@&qm_2{awCfuuz~2^ z<|6Z^Lw-8}67C?J@+QJTP^y9sS5ozhp=*_Y%H*fcqbDIsUF;b;GISKNC31~O+-Jv$ z@6G?9Iz?It;r&Pkp55U0K9urBprGK-#^s6ZZa$WCZFSFv(hOt8i$~h1;K@04l>$a( zv&Tfcq24(Vd;n|xVEIYt1&cA9A_jfNp`mX=-onw+TPR?i62(fKI5X*yVpw6_>L`-- z$1eU7Y1K%i#Wva6!ZMZ#0^KhDGrQ4jfYDe!#qPcMshoFeT6=Le-N0@F?pIkfuY4U~ zX?w<1_Xf4smtWgs8$D2{v!uXq+12;`(4gC!OK0o5jnCb(_uI;XJURKa!tDEFnCVsa zeO#_of{fsbSd{M&K7oL!Z&fp`rLxG!-;~i0<46g9{;Z2OTvVyhk-7gRtZ_-n z)+K6Q{t{O81zk{xTrFl0Y30MUt2Wk#rOXD}w?imnG-PpGva`qIM+vu90T$=FT+EmY znS78dH%8TeHo&C7zaO$rDw*y@G#3t^M)BUnuZEH9Rwl4C@FNQC#0S3p-R&OASc3vY zwLV-nwm$pqrqW!y%7_VpbxcOm4!!k}Ns-V!6YN4#s$*V(17;DJap0jHs7cB@ry#pyaaS`W3dWCha~; z>oL(iuCf;glmIPioYcjpST#LmD#9b#n~`FCI_k#33s zN!-P^5pI|9HGUoL?&EfTFE&F6Bfa|11EZGfhdTiZ+Hbq!RtT4ycnv8gDvq6V;I-6k5mzXBJj>eg zuKhv;t@})6&lZNkALAS8LZlI&yKY=t)0@ldDu`24+RFQd>mg$*&})%+{Shm^Pbp%M zUX2WP9hXVked$)1`gvj6FjM;JH#wLB7M747bFAPwsYJhviUT*drR16>cBKn@>^`x6 zy<9hARqZ@bH`3WQ*no<|7#Gm;BrMI9bW1L z3;e3X8c>Fid+J(pb1y9qrzG`rQdv^o=XHidx}&Gc1;nR-M>;lvo>L-9;0b&^8~L#L zJ{OWWbMDi4{mcVxtc>@;P~(7X6W(HuHuFR2!cTw2h@9apip?u_-^2ZYf}?Mc1nr`9f#J(@5A3uTRYl%V=I|U zCx!keqP?a}usPrv%Fb+=BRF^vvw;F)_*6d-#Ls#V7)L}*&TRj6VA=st1eC-?u~nqp>Tc5BZpNGOSrwgXj0 zyd;Ht8%80~Sfd{AOKN@4q{Xe6^0B+PM~SKLLgJ{27!~nCsWMz>{m@D-Y`2~>`#=R+ zSm!waK>bV)^Jf#BjKq0f`lUzm+$YsIw?L7BV`w3G%n(?*AODKp-t-N{zws8|mn~|g zksNgNJCU+qAj~Y33rc#@-X~&FdNXy1PAg$%D1+FU%lAY37F!QjD^qks(Ah;VJ>#r; zRWLrxYTwHY&uSQdyQbMK-{5)wEeTMZKykOU%+YsIn)tIwFzW z#miDTR%75c?w1V_9`;pkl7Iq!KTUobe+8NQ)sE%v@Ro}jbmI_j0zne+@-tLt$~=`! z0<{n%(Iri=f;KlbxUenjUCa_ZFoye^DXQGIzsD>Bwd6R5i#HvyNo5_e`h>WdTbr zOvW$9v26QmKp24zNi*TafH02~218DJ zrB3%G|3$oy)|$FBzIlHdU>;Tc1M`(@q8&vr8z~q}M+G{;xfpOhJ|97*dPQQgP}vgT ze-FYrxoc-;BDoy{x+)`PXkI9Tn#B>fjK)yOAap2Uk+e**s$i@l^3C`^FRD#L!v{o`8k714T z<*~-l@{Q4xoK71XS41DR2Spx43#g@_8$Zcn!lLqnl6eFXcRd3`bvY>}!3hHKC? zyrQ(;KS;M$NG1-G0+R4Feg-1w>hi0o!bcqhMZ#X7ZvEB}3rHehv|-WFq4-dzeHCb< zM<8>bOP0UEK$|0(eG4N|!OpmcEURoCss*B)m8eI)tb+P(x^WSeBKx?yT>HT+!X`pd zZ>WL8!|q9bVHoD!`H4Yj&Hv?TW`0yS#F$} zW~4*R7ylsdOe$<`)|$|DpEq9!+gl9wbW(NgqTle*=Nr8j1ByC}l1lkp;DFHv%$KOX zTKu#ya`Sa~^zclwb5(av`YJ|vCc=qEtr3YH+Cs$ZJ6Gc&mzUGWav`VgQ&q-K{ti?J zV1Pwzn!Boh)GRLr_TPNm-RF4GhdosiPO5hg4QoQ;QlS}Xug25h?0=27eQeT z{Lp)YiR+U;I?J)T*tyMQEEvk6#OjKlcWm`-`LnMIIZ(_^1O$wL!NCMT=R=&i4CJg9 z8u|-Il_}1OI+P9NL+o2tP(^umC(mo3p#c_XlcW6Q|Lc-}E~p|X=e2wunThm_xG;Pp zBU3D@cBy}mbyBn3b76Rf_Oug0QAmUPSREI=In9TJ6zEaX7i77RhT5u#{`hc}iCw_% zC$&7XU3wO1p&W6vkj=Ykijqumz=_Jd8k6xHCWW-Re`V3?eFRb=Em+j--e8!6)L?fL zY3luaKQmU!4Nf|GTg1X+N}inE!ECh>3zrug_kU!|RdGjlaSaZh?lpo9}pCO-<)I@Ot@x+8`@#9xX;u z2hnHaUg6@vR-^b{AxU%oqU8aYB=^w)--Zv4RRS_rJ89QwxcHD1dNUWipa3XV_snqHQe z4o_-AHD&Qa`=B^K_lqR@tII$AHd6TCm`vw6iTWGzk7G#mj5ibzkop9djZ~c8D{17F ze1vM50L1o(G(DHe+Mib z+17*wrp1#y>g3we${`O@rHPR|mEfreBszs$1p#MM@!PJ!rbc`qb)C}LD!|-r2tUyR zLF`kYJP{C- zEn-hiWbh`_4;?|rg8(=$Q+iB`hr>e~zoa9ZdK6%#G6NV2_`Z-?K6ti;qq6> z`6BS4kVhUA0n)}3#D6xRbo8sfQWYkZmZqWFR!67eB-ag$-*9|4MBxzHWZ+H$F|?5K zU;45!R^c&KwVReE(aYZSuvC}agUFX7(GIZlN7Dtk-5^52Zp%q%T}6L_XQ5&wd01GK z(*;y=|6|`dh#A)W+h~W`s^x33;?EdSZoE#HEY4yUd8C<4LHuK5JR9-u)LQ<)E8RjHyp5IKzaGQIM8+`c5{i z5!c8?MR)vu1ULFHxFthnWlwq*j&dbAKPM(Af8FcjfR3q;<&g8-h73b!Nrv&7GRBA+Mx&_d5!3<;Lo|k`0ph@i$ZK3G+