Palo Alto Networks Threat Vault v2

Use the Palo Alto Networks Threat Vault to research the latest threats (vulnerabilities/exploits, viruses, and spyware) that Palo Alto Networks next-generation firewalls can detect and prevent. Query the Advanced Threat Protection (ATP) API endpoint for Analysis reports and PCAPs.

Data Enrichment & Threat Intelligence · Threat Vault by Palo Alto Networks

Details

IDPalo Alto Networks Threat Vault v2
ProviderPalo Alto Networks
CategoryData Enrichment & Threat Intelligence
From Version6.5.0
Docker Imagedemisto/crypto:1.0.0.6932158
Supported ModulesAgentix XSIAM

README

Use the Palo Alto Networks Threat Vault to research the latest threats (vulnerabilities/exploits, viruses, and spyware) that Palo Alto Networks next-generation firewalls can detect and prevent.
This integration was integrated and tested with Palo Alto Networks Threat Vault v2.

Some changes have been made that might affect your existing content.
If you are upgrading from a previous version of this integration, see Breaking Changes.

Configure Palo Alto Networks Threat Vault v2 on Cortex XSOAR

  1. Navigate to Settings > Integrations > Instances.
  2. Search for Palo Alto Networks Threat Vault v2.
  3. Click Add instance to create and configure a new integration instance.

    Parameter Description Required
    URL   True
    API Key   True
    Source Reliability Reliability of the source providing the intelligence data.  
    Trust any certificate (not secure)   False
    Use system proxy settings   False
    Fetch incidents   False
    Incident type   False
    First fetch timestamp (<number> <time unit>, e.g., 3 days) The time unit must be days, months, or years. False
    Incidents Fetch Interval   False
  4. Click Test to validate the URLs, token, and connection.

Commands

You can execute these commands from the Cortex XSOAR CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.

file


Checks the reputation of an antivirus in Threat Vault.

Base Command

file

Input

Argument Name Description Required
file A comma-separated list of SHA256 or MD5 hashes of the antivirus signature. Required

Context Output

Path Type Description
DBotScore.Vendor String The vendor used to calculate the score.
DBotScore.Score Number The actual score.
DBotScore.Type String The indicator type.
DBotScore.Indicator String The indicator that was tested.
File.MD5 String The MD5 hash of the file.
File.SHA1 String The SHA1 hash of the file.
File.SHA256 String The SHA256 hash of the file.
File.Malicious.Vendor String For malicious files, the vendor that made the decision.
ThreatVault.FileInfo.filetype String The file type of the file.
ThreatVault.FileInfo.sha256 String The SHA256 of the file.
ThreatVault.FileInfo.sha1 String The SHA1 of the file.
ThreatVault.FileInfo.md5 String The MD5 of the file.
ThreatVault.FileInfo.size String The size of the file.
ThreatVault.FileInfo.type String The type of the file.
ThreatVault.FileInfo.family String The family of the file.
ThreatVault.FileInfo.platform String The platform of the file.
ThreatVault.FileInfo.wildfire_verdict String The Wildfire verdict.
ThreatVault.FileInfo.create_time String The threat signature creation time.
ThreatVault.FileInfo.signatures String The signatures.

Command example

!file file= 7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8

Context Example

{
    "DBotScore": {
        "Indicator": "7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8",
        "Reliability": "D - Not usually reliable",
        "Score": 3,
        "Type": "file",
        "Vendor": "Palo Alto Networks Threat Vault v2"
    },
    "File": {
        "Hashes": [
            {
                "type": "MD5",
                "value": "7e8d3744c0a06d3c7ca7f6dbfce3d576"
            },
            {
                "type": "SHA256",
                "value": "7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8"
            }
        ],
        "MD5": "7e8d3744c0a06d3c7ca7f6dbfce3d576",
        "Malicious": {
            "Description": null,
            "Vendor": "Palo Alto Networks Threat Vault v2"
        },
        "SHA256": "7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8"
    }
}

Human Readable Output

Hash 7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8 antivirus reputation

Active CreateTime FileType MD5 Release SHA256 SignatureId
active 2012-07-04T03:36:54Z PE32 7e8d3744c0a06d3c7ca7f6dbfce3d576 antivirus: {“first_release_version”: “316”, “first_release_time”: “2010-10-04T17:03:41Z”, “last_release_version”: “786”, “last_release_time”: “2012-07-05T17:03:14Z”} 7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8 93534285

cve


Checks the reputation of CVE in Threat Vault.

Base Command

cve

Input

Argument Name Description Required
cve A comma-separated list of CVE names. Required

Context Output

Path Type Description
DBotScore.Score Number The actual score.
DBotScore.Type String The indicator type.
DBotScore.Vendor unknown The vendor used to calculate the score.
DBotScore.Indicator String The indicator that was tested.
CVE.ID String The CVE ID.
CVE.Description String A description of the CVE.
CVE.CVSS.Score String The CVSS of the CVE.
CVE.Modified String The timestamp of when the CVE was last modified.
CVE.Published String The timestamp of when the CVE was published.
ThreatVault.Vulnerability.id String The unique ID of the threat.
ThreatVault.Vulnerability.name String The name of the threat.
ThreatVault.Vulnerability.description String The description of the threat.
ThreatVault.Vulnerability.category String The threat category of the threat.
ThreatVault.Vulnerability.min_version String The PAN-OS minimum version.
ThreatVault.Vulnerability.max_version String The PAN-OS maximum version.
ThreatVault.Vulnerability.severity String The severity of the threat.
ThreatVault.Vulnerability.default_action String The default action when the signature is triggered.
ThreatVault.Vulnerability.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Vulnerability.vendor. Array The vulnerability identifier issued by the vendor on advisories.
ThreatVault.Vulnerability.reference Array The public reference of the threat.
ThreatVault.Vulnerability.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Vulnerability.details Object Any additional details of the threat.
ThreatVault.Vulnerability.ori_release_version String The original release version of the threat.
ThreatVault.Vulnerability.latest_release_version String The latest release version of the threat.
ThreatVault.Vulnerability.ori_release_time String The original release time of the threat.
ThreatVault.Vulnerability.latest_release_time String The latest release time of the threat.

Command example

!cve cve=CVE-2020-2040

Context Example

{
    "CVE": {
        "CVSS": {
            "Score": "critical"
        },
        "Description": "Palo Alto Networks PAN-OS is prone to a buffer overflow vulnerability while parsing certain crafted HTTP requests. The vulnerability is due to the lack of proper checks on HTTP requests, leading to an exploitable buffer overflow vulnerability. An attacker could exploit the vulnerability by sending crafted HTTP requests. A successful attack could lead to remote code execution.",
        "ID": "CVE-2020-2040",
        "Modified": "2020-09-09T09:45:08Z",
        "Published": "2020-09-09T09:45:08Z"
    },
    "DBotScore": {
        "Indicator": "CVE-2020-2040",
        "Score": 0,
        "Type": "cve",
        "Vendor": "Palo Alto Networks Threat Vault v2"
    }
}

Human Readable Output

CVE CVE-2020-2040 vulnerability reputation

CVE Category Default action ID Latest release time Latest release version Name Ori release time Ori release version Reference Severity Status
CVE-2020-2040 code-execution reset-server 59255 2020-09-09T09:45:08Z 8317 Palo Alto Networks PAN-OS Buffer Overflow Vulnerability 2020-09-09T09:45:08Z 8317 https://security.paloaltonetworks.com/CVE-2020-2040 critical released

threatvault-threat-signature-get


Gets the antivirus or anti-spyware or files signature.

Base Command

threatvault-threat-signature-get

Input

Argument Name Description Required
sha256 A comma-separated list of SHA256 hashes of the antivirus signature. Optional
md5 A comma-separated list of MD5 hash of the antivirus signature. Optional
signature_id A comma-separated list of IDs of the anti-spyware or antivirus signature. Optional

Context Output

Path Type Description
DBotScore.Vendor String The vendor used to calculate the score.
DBotScore.Score Number The actual score.
DBotScore.Type String The indicator type.
DBotScore.Indicator String The indicator that was tested.
File.MD5 String The MD5 hash of the file.
File.SHA1 String The SHA1 hash of the file.
File.SHA256 String The SHA256 hash of the file.
File.Malicious.Vendor String For malicious files, the vendor that made the decision.
ThreatVault.Vulnerability.id String The unique ID of the threat.
ThreatVault.Vulnerability.name String The name of the threat.
ThreatVault.Vulnerability.description String The description of the threat.
ThreatVault.Vulnerability.category String The threat category of the threat.
ThreatVault.Vulnerability.min_version String The PAN-OS minimum version.
ThreatVault.Vulnerability.max_version String The PAN-OS maximum version.
ThreatVault.Vulnerability.severity String The severity of the threat.
ThreatVault.Vulnerability.default_action String The default action when the signature is triggered.
ThreatVault.Vulnerability.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Vulnerability.vendor. Array The vulnerability identifier issued by the vendor on advisories.
ThreatVault.Vulnerability.reference Array The public reference of the threat.
ThreatVault.Vulnerability.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Vulnerability.details Object Any additional details of the threat.
ThreatVault.Vulnerability.ori_release_version String The original release version of the threat.
ThreatVault.Vulnerability.latest_release_version String The latest release version of the threat.
ThreatVault.Vulnerability.ori_release_time String The original release time of the threat.
ThreatVault.Vulnerability.latest_release_time String The latest release time of the threat.
ThreatVault.Spyware.id String The unique ID of the threat.
ThreatVault.Spyware.name String The name of the threat.
ThreatVault.Spyware.description String The description of the threat.
ThreatVault.Spyware.vendor Array The spyware identifier issued by the vendor on advisories.
ThreatVault.Spyware.severity String The severity of the threat.
ThreatVault.Spyware.default_action String The default action when the signature is triggered.
ThreatVault.Spyware.details Object Any additional details of the threat.
ThreatVault.Spyware.reference Array The public reference of the threat.
ThreatVault.Spyware.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Spyware.min_version String The PAN-OS minimum version.
ThreatVault.Spyware.max_version String The PAN-OS maximum version.
ThreatVault.Spyware.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Antivirus.id String The unique ID of the threat.
ThreatVault.Antivirus.name String The name of the threat.
ThreatVault.Antivirus.action String The action of the threat.
ThreatVault.Antivirus.description String The description of the threat.
ThreatVault.Antivirus.subtype String The subtype of the threat.
ThreatVault.Antivirus.type String The type of the threat.
ThreatVault.Antivirus.create_time String The create time of the threat.
ThreatVault.Antivirus.related_sha256_hashes String The related SHA256 hashes of the threat.
ThreatVault.Antivirus.release String Information about the signature release.
ThreatVault.Fileformat.id String The unique ID of the threat.
ThreatVault.Fileformat.name String The name of the threat.
ThreatVault.Fileformat.description String The description of the threat.
ThreatVault.Fileformat.category String The threat category of the threat.
ThreatVault.Fileformat.min_version String The PAN-OS minimum version.
ThreatVault.Fileformat.max_version String The PAN-OS maximum version.
ThreatVault.Fileformat.severity String The severity of the threat.
ThreatVault.Fileformat.default_action String The default action when the signature is triggered.
ThreatVault.Fileformat.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Fileformat.vendor Array The file format identifier issued by the vendor on advisories.
ThreatVault.Fileformat.reference Array The public reference of the threat.
ThreatVault.Fileformat.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Fileformat.details Array Any additional details of the threat.
ThreatVault.Fileformat.ori_release_version String The original release version of the threat.
ThreatVault.Fileformat.latest_release_version String The latest release version of the threat.
ThreatVault.Fileformat.ori_release_time String The original release time of the threat.
ThreatVault.Fileformat.latest_release_time String The latest release time of the threat.
ThreatVault.FileInfo.filetype String The file type of the file.
ThreatVault.FileInfo.sha256 String The SHA256 of the file.
ThreatVault.FileInfo.sha1 String The SHA1 of the file.
ThreatVault.FileInfo.md5 String The MD5 of the file.
ThreatVault.FileInfo.size String The size of the file.
ThreatVault.FileInfo.type String The type of the file.
ThreatVault.FileInfo.family String The family of the file.
ThreatVault.FileInfo.platform String The platform of the file.
ThreatVault.FileInfo.wildfire_verdict String The Wildfire verdict.
ThreatVault.FileInfo.create_time String The threat signature creation time.
ThreatVault.FileInfo.signatures String The signatures.
ThreatVault.DNS.id String The unique ID of the threat.
ThreatVault.DNS.name String The name of the threat.
ThreatVault.DNS.description String The description of the threat.
ThreatVault.DNS.type String The type of the threat.
ThreatVault.DNS.severity String The severity of the threat.
ThreatVault.DNS.subtype String The subtype of the threat.
ThreatVault.DNS.action String The action of the threat.
ThreatVault.DNS.create_time String The threat signature creation time.
ThreatVault.DNS.release String Information about the signature release.
ThreatVault.DNS.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.RTDNS.id String The unique ID of the threat.
ThreatVault.RTDNS.name String The name of the threat.
ThreatVault.RTDNS.description String The description of the threat.
ThreatVault.RTDNS.type String The type of the threat.
ThreatVault.RTDNS.severity String The severity of the threat.
ThreatVault.RTDNS.subtype String The subtype of the threat.
ThreatVault.RTDNS.action String The action of the threat.
ThreatVault.RTDNS.create_time String The threat signature creation time.
ThreatVault.RTDNS.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.SpywareC2.id String The unique ID of the threat.
ThreatVault.SpywareC2.name String The name of the threat.
ThreatVault.SpywareC2.description String The description of the threat.
ThreatVault.SpywareC2.type String The type of the threat.
ThreatVault.SpywareC2.severity String The severity of the threat.
ThreatVault.SpywareC2.subtype String The subtype of the threat.
ThreatVault.SpywareC2.action String The action of the threat.
ThreatVault.SpywareC2.create_time String The threat signature creation time.
ThreatVault.SpywareC2.release String Information about the signature release.
ThreatVault.SpywareC2.status String The status of the threat (e.g., inactive, active, or released).

Command example

!threatvault-threat-signature-get signature_id=93534285

Context Example

{
    "ThreatVault": {
        "Antivirus": {
            "action": "",
            "create_time": "2010-10-01T03:28:57Z",
            "description": "This signature detected Worm/Win32.autorun.crck",
            "id": "93534285",
            "name": "Worm/Win32.autorun.crck",
            "related_sha256_hashes": [
                "7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8",
                "9e12c5cdb069f74487c11758e732d72047b72bedf4373aa9e3a58e8e158380f8"
            ],
            "release": {
                "antivirus": {
                    "first_release_time": "2010-10-04T17:03:41Z",
                    "first_release_version": "316",
                    "last_release_time": "2012-07-05T17:03:14Z",
                    "last_release_version": "786"
                }
            },
            "severity": "medium",
            "status": "active",
            "subtype": "virus",
            "type": "0"
        }
    }
}

Human Readable Output

93534285 antivirus reputation

Create time ID Name Related sha256 hashes Release Severity Subtype
2010-10-01T03:28:57Z 93534285 Worm/Win32.autorun.crck 7a520be9db919a09d8ccd9b78c11885a6e97bc9cc87414558254cef3081dccf8,
9e12c5cdb069f74487c11758e732d72047b72bedf4373aa9e3a58e8e158380f8
antivirus: {“first_release_version”: “316”, “first_release_time”: “2010-10-04T17:03:41Z”, “last_release_version”: “786”, “last_release_time”: “2012-07-05T17:03:14Z”} medium virus

threatvault-release-note-get


Retrieves the release notes information by version.

Base Command

threatvault-release-note-get

Input

Argument Name Description Required
version The release version (ex. 8446) or content version (ex. 8446-6886) of the release notes. Required

Context Output

Path Type Description
ThreatVault.ReleaseNote.release_version String The release version of the update.
ThreatVault.ReleaseNote.type String The type of the release notes.
ThreatVault.ReleaseNote.content_version String The content version of the update.
ThreatVault.ReleaseNote.notes Array General notices and reminders.
ThreatVault.ReleaseNote.decoders Array The decoder updates in the release notes.
ThreatVault.ReleaseNote.spyware.new Array List of new entries.
ThreatVault.ReleaseNote.spyware.modified Array List of modified entries.
ThreatVault.ReleaseNote.spyware.disabled Array List of disabled entries.
ThreatVault.ReleaseNote.vulnerability.new Array List of new entries.
ThreatVault.ReleaseNote.vulnerability.modified Array List of modified entries.
ThreatVault.ReleaseNote.vulnerability.disabled Array List of disabled entries.
ThreatVault.ReleaseNote.applications.new Array List of new entries.
ThreatVault.ReleaseNote.applications.modified Array List of modified entries.
ThreatVault.ReleaseNote.applications.obsoleted Array List of obsolete entries.

Command example

!threatvault-release-note-get version=8615

Context Example

{
    "ThreatVault": {
        "ReleaseNote": {
            "content_version": "8615-7549",
            "release_notes": {
                "applications": {
                    "modified": [],
                    "new": [],
                    "obsoleted": []
                },
                "data_correlation": {
                    "deleted": [],
                    "modified": [],
                    "new": []
                },
                "decoders": {
                    "modified": [],
                    "new": []
                },
                "file_type": {
                    "disabled": [],
                    "modified": [],
                    "new": []
                },
                "notes": [
                    "<p><strong>Reminder:</strong></p><ul><li>(8/23/22) As part of Applications and Threats content update 8609 (released August 17, 2022), we updated the&nbsp;<em data-stringify-type=\"italic\">vmware&nbsp;</em>App-ID to include coverage for VMware traffic that was previously identified using the&nbsp;<em data-stringify-type=\"italic\">ssl</em>&nbsp;App-ID. Please review&nbsp;<a class=\"c-link\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/content-8609-vmware-app-id/ta-p/512741\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/content-8609-vmware-app-id/ta-p/512741' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/content-8609-vmware-app-id/ta-p/512741&lt;/a&gt;\" data-sk=\"tooltip_parent\">this article</a>&nbsp;for details.<br /><br /></li><li>(8/22/22)&nbsp;As part of the&nbsp;<a class=\"c-link\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/app-id-decoders-enhancement-plan/ta-p/469547\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/app-id-decoders-enhancement-plan/ta-p/469547' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/app-id-decoders-enhancement-plan/ta-p/469547&lt;/a&gt;\" data-sk=\"tooltip_parent\" aria-describedby=\"sk-tooltip-5262\">App-ID&trade; decoders improvement process</a>&nbsp;and as announced on 6/30/2022, we released a&nbsp;<strong data-stringify-type=\"bold\"><em data-stringify-type=\"italic\">dns-non-rfc</em></strong>&nbsp;placeholder App-ID (beginning with content update 8586) and we intend to activate the decoder for this App-ID with the content update scheduled for September 20, 2022. Review&nbsp;<a class=\"c-link\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/dns-app-id-enhancement-release-plan/ta-p/487590\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/dns-app-id-enhancement-release-plan/ta-p/487590' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/dns-app-id-enhancement-release-plan/ta-p/487590&lt;/a&gt;\" data-sk=\"tooltip_parent\">this article</a>&nbsp;for details.</li><li><p>(8/17/22) The update for App-IDs associated with Google Drive API traffic is scheduled for the new App-IDs content update on September 20, 2022. Refer to&nbsp;<a class=\"c-link\" tabindex=\"-1\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/app-id-update-for-google-drive-apis/ta-p/504345\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/app-id-update-for-google-drive-apis/ta-p/504345' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/app-id-update-for-google-drive-apis/ta-p/504345&lt;/a&gt;' target='_blank'&gt;&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/app-id-update-for-google-drive-apis/ta-p/504345&lt;' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/app-id-update-for-google-drive-apis/ta-p/504345&lt;&lt;/a&gt;;/a&gt;\" data-sk=\"tooltip_parent\" data-remove-tab-index=\"true\">this article</a>&nbsp;for the details.</p></li><li data-stringify-indent=\"0\" data-stringify-border=\"0\"><p>(8/17/22) We released new placeholder App-IDs for several new OT/ICS App-IDs (FL-net, OpenADR, SafetyNET, and Siemens-S7) in content update version 8609 and we intend to activate these new App-IDs with the new App-IDs content update scheduled for September 20, 2022. (Review&nbsp;<a class=\"c-link\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/release-plan-for-fl-net-openadr-safetynet-and-siemens-s7-app-ids/ta-p/511342\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/release-plan-for-fl-net-openadr-safetynet-and-siemens-s7-app-ids/ta-p/511342' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/release-plan-for-fl-net-openadr-safetynet-and-siemens-s7-app-ids/ta-p/511342&lt;/a&gt;' target='_blank'&gt;&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/release-plan-for-fl-net-openadr-safetynet-and-siemens-s7-app-ids/ta-p/511342&lt;' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/release-plan-for-fl-net-openadr-safetynet-and-siemens-s7-app-ids/ta-p/511342&lt;&lt;/a&gt;;/a&gt;\" data-sk=\"tooltip_parent\">the details here</a>.)</p></li><li data-stringify-indent=\"0\" data-stringify-border=\"0\"><p>(8/17/22) We released a new placeholder App-ID for PsExec traffic in content update version 8609 and we intend to activate this new App-ID, as well, with the new App-IDs content update scheduled for September 20,2022. (Review&nbsp;<a class=\"c-link\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/new-app-id-announcement-psexec/ta-p/508023\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/new-app-id-announcement-psexec/ta-p/508023' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/new-app-id-announcement-psexec/ta-p/508023&lt;/a&gt;' target='_blank'&gt;&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/new-app-id-announcement-psexec/ta-p/508023&lt;' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/new-app-id-announcement-psexec/ta-p/508023&lt;&lt;/a&gt;;/a&gt;\" data-sk=\"tooltip_parent\">the details here</a>.)</p></li><li data-stringify-indent=\"0\" data-stringify-border=\"0\"><p>(8/17/22) We introduced new App-ID tags to help you categorize your application traffic. The first four of these tags (Proxy Avoidance, Uploading, Posting, Editing, Downloading) are included content update version 8609 and we will continue to introduce one or more of these new App-ID tags in these same monthly content updates where we introduce new App-IDs. Watch these release notes for updates and review&nbsp;<a class=\"c-link\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/app-id-new-tags-announcement/ta-p/508005\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/app-id-new-tags-announcement/ta-p/508005' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/app-id-new-tags-announcement/ta-p/508005&lt;/a&gt;' target='_blank'&gt;&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/app-id-new-tags-announcement/ta-p/508005&lt;' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/app-id-new-tags-announcement/ta-p/508005&lt;&lt;/a&gt;;/a&gt;\" data-sk=\"tooltip_parent\">this article for details</a>&nbsp;about upcoming new App-ID tags.</p></li><li data-stringify-indent=\"0\" data-stringify-border=\"0\">(7/11/22; updated 8/1/22) As part of the&nbsp;<a class=\"c-link\" tabindex=\"-1\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/app-id-decoders-enhancement-plan/ta-p/469547\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/app-id-decoders-enhancement-plan/ta-p/469547' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/app-id-decoders-enhancement-plan/ta-p/469547&lt;/a&gt;\" data-sk=\"tooltip_parent\" data-remove-tab-index=\"true\">App-ID&trade; decoders improvement process</a>, we will modify the&nbsp;<strong data-stringify-type=\"bold\"><em data-stringify-type=\"italic\">smtp&nbsp;</em></strong>App-ID. As announced on 7/11/2022, we intend to release an&nbsp;<strong data-stringify-type=\"bold\"><em data-stringify-type=\"italic\">smtp-non-rfc</em></strong>&nbsp;placeholder App-ID but now intend to do this with the Applications and Threats content update scheduled for September 20, 2022, and will then activate the decoder for this App-ID with the content update scheduled for October 18, 2022. Review&nbsp;<a class=\"c-link\" tabindex=\"-1\" href=\"https://live.paloaltonetworks.com/t5/customer-resources/smtp-app-id-enhancement-release-plan/ta-p/508224\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"&lt;a href='https://live.paloaltonetworks.com/t5/customer-resources/smtp-app-id-enhancement-release-plan/ta-p/508224' target='_blank'&gt;https://live.paloaltonetworks.com/t5/customer-resources/smtp-app-id-enhancement-release-plan/ta-p/508224&lt;/a&gt;\" data-sk=\"tooltip_parent\" data-remove-tab-index=\"true\">this article</a>&nbsp;for the details.</li></ul>"
                ],
                "spyware": {
                    "disabled": [],
                    "modified": [
                        {
                            "action": "reset-both",
                            "attack_name": "Manuscrypt Command and Control Traffic Detection",
                            "category": "command-and-control",
                            "change_data": "improved detection logic to address a possible fp issue",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 86322,
                            "severity": "critical"
                        }
                    ],
                    "new": [
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22059,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22060,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22061,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22062,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22063,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22064,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22065,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22066,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22067,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22068,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22069,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22070,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22071,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22072,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22073,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22074,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22075,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22076,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22077,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Pastebin Command and Control Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 22078,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Manjusaka Default Command and Control Traffic Detection",
                            "category": "hacktool",
                            "change_data": "improved detection logic to cover a new c2 variant",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 86663,
                            "severity": "critical"
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "SocGholish Malware Download Traffic Detection",
                            "category": "spyware",
                            "change_data": "new coverage",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 86664,
                            "severity": "critical"
                        }
                    ]
                },
                "vulnerability": {
                    "disabled": [],
                    "modified": [
                        {
                            "action": "reset-both",
                            "attack_name": "Microsoft PowerPoint Presentation Buffer Overrun RCE Vulnerability",
                            "category": "code-execution",
                            "change_data": "improved detection logic to address a possible fp issue",
                            "cve": "CVE-2011-1270",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 33951,
                            "severity": "high",
                            "vendor": "MS11-036"
                        },
                        {
                            "action": "reset-server",
                            "attack_name": "Nagios XI SQL Injection Vulnerability",
                            "category": "code-execution",
                            "change_data": "improved detection logic to cover a new exploit",
                            "cve": "CVE-2021-37350",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 91633,
                            "severity": "critical",
                            "vendor": ""
                        },
                        {
                            "action": "reset-server",
                            "attack_name": "Jolokia Agent JNDI Injection Vulnerability",
                            "category": "code-execution",
                            "change_data": "improved detection logic to cover a new exploit",
                            "cve": "CVE-2018-1000130",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92364,
                            "severity": "high",
                            "vendor": ""
                        },
                        {
                            "action": "reset-server",
                            "attack_name": "Microsoft Exchange Server Remote Code Execution Vulnerability",
                            "category": "code-execution",
                            "change_data": "improved detection logic to cover a new exploit",
                            "cve": "CVE-2022-23277",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92903,
                            "severity": "high",
                            "vendor": ""
                        }
                    ],
                    "new": [
                        {
                            "action": "reset-server",
                            "attack_name": "H3C IMC Intelligent Management Center Remote Code Execution Vulnerability",
                            "category": "code-execution",
                            "change_data": "new coverage",
                            "cve": "",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92955,
                            "severity": "medium",
                            "vendor": ""
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Apache APISIX Remote Code Execution Vulnerability",
                            "category": "code-execution",
                            "change_data": "improved detection logic to cover a new exploit",
                            "cve": "CVE-2022-24112",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92980,
                            "severity": "critical",
                            "vendor": ""
                        },
                        {
                            "action": "alert",
                            "attack_name": "Ivanti Avalanche Web Server authenticate Authentication Bypass Vulnerability",
                            "category": "code-execution",
                            "change_data": "new coverage",
                            "cve": "CVE-2022-36980",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92996,
                            "severity": "medium",
                            "vendor": ""
                        },
                        {
                            "action": "reset-server",
                            "attack_name": "Microsoft HTTP Protocol Stack Remote Code Execution Vulnerability",
                            "category": "code-execution",
                            "change_data": "new coverage",
                            "cve": "CVE-2022-21907",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92998,
                            "severity": "critical",
                            "vendor": ""
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "PHP-Proxy Local File Inclusion Vulnerability",
                            "category": "info-leak",
                            "change_data": "improved detection logic to cover a new exploit",
                            "cve": "CVE-2018-19246",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 92999,
                            "severity": "high",
                            "vendor": ""
                        },
                        {
                            "action": "reset-both",
                            "attack_name": "Mozilla Firefox Prototype Pollution Vulnerability",
                            "category": "code-execution",
                            "change_data": "new coverage",
                            "cve": "CVE-2022-1802",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 93002,
                            "severity": "high",
                            "vendor": ""
                        },
                        {
                            "action": "reset-server",
                            "attack_name": "Open Web Analytics Remote Code Execution Vulnerability",
                            "category": "code-execution",
                            "change_data": "new coverage",
                            "cve": "CVE-2022-24637",
                            "max_version": "",
                            "min_version": "8.1.0",
                            "pan_id": 93014,
                            "severity": "critical",
                            "vendor": ""
                        }
                    ]
                }
            },
            "release_time": "2022-09-01T17:04:33Z",
            "release_version": 8615,
            "type": "content"
        }
    }
}

Human Readable Output

Release notes

Content version Disabled Spyware Modified Spyware Modified Vulnerability New Spyware New Vulnerability Notes Release time Release version type
8615-7549 {‘severity’: ‘critical’, ‘pan_id’: 86322, ‘attack_name’: ‘Manuscrypt Command and Control Traffic Detection’, ‘category’: ‘command-and-control’, ‘action’: ‘reset-both’, ‘change_data’: ‘improved detection logic to address a possible fp issue’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’} {‘severity’: ‘critical’, ‘pan_id’: 86322, ‘attack_name’: ‘Manuscrypt Command and Control Traffic Detection’, ‘category’: ‘command-and-control’, ‘action’: ‘reset-both’, ‘change_data’: ‘improved detection logic to address a possible fp issue’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’} severity: high
pan_id: 33951
attack_name: Microsoft PowerPoint Presentation Buffer Overrun RCE Vulnerability
cve: CVE-2011-1270
vendor: MS11-036
category: code-execution
action: reset-both
change_data: improved detection logic to address a possible fp issue
min_version: 8.1.0
max_version:
{‘severity’: ‘critical’, ‘pan_id’: 22059, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22060, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22061, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22062, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22063, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22064, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22065, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22066, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22067, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22068, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22069, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22070, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22071, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22072, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22073, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22074, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22075, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22076, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22077, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 22078, ‘attack_name’: ‘Pastebin Command and Control Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 86663, ‘attack_name’: ‘Manjusaka Default Command and Control Traffic Detection’, ‘category’: ‘hacktool’, ‘action’: ‘reset-both’, ‘change_data’: ‘improved detection logic to cover a new c2 variant’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’},
{‘severity’: ‘critical’, ‘pan_id’: 86664, ‘attack_name’: ‘SocGholish Malware Download Traffic Detection’, ‘category’: ‘spyware’, ‘action’: ‘reset-both’, ‘change_data’: ‘new coverage’, ‘min_version’: ‘8.1.0’, ‘max_version’: ‘’}
severity: medium
pan_id: 92955
attack_name: H3C IMC Intelligent Management Center Remote Code Execution Vulnerability
cve:
vendor:
category: code-execution
action: reset-server
change_data: new coverage
min_version: 8.1.0
max_version:
<p>Reminder:</p><ul><li>(8/23/22) As part of Applications and Threats content update 8609 (released August 17, 2022), we updated the vmware App-ID to include coverage for VMware traffic that was previously identified using the ssl App-ID. Please review this article for details.

</li><li>(8/22/22) As part of the App-ID™ decoders improvement process and as announced on 6/30/2022, we released a dns-non-rfc placeholder App-ID (beginning with content update 8586) and we intend to activate the decoder for this App-ID with the content update scheduled for September 20, 2022. Review this article for details.</li><li><p>(8/17/22) The update for App-IDs associated with Google Drive API traffic is scheduled for the new App-IDs content update on September 20, 2022. Refer to this article for the details.</p></li><li data-stringify-indent="0" data-stringify-border="0"><p>(8/17/22) We released new placeholder App-IDs for several new OT/ICS App-IDs (FL-net, OpenADR, SafetyNET, and Siemens-S7) in content update version 8609 and we intend to activate these new App-IDs with the new App-IDs content update scheduled for September 20, 2022. (Review the details here.)</p></li><li data-stringify-indent="0" data-stringify-border="0"><p>(8/17/22) We released a new placeholder App-ID for PsExec traffic in content update version 8609 and we intend to activate this new App-ID, as well, with the new App-IDs content update scheduled for September 20,2022. (Review the details here.)</p></li><li data-stringify-indent="0" data-stringify-border="0"><p>(8/17/22) We introduced new App-ID tags to help you categorize your application traffic. The first four of these tags (Proxy Avoidance, Uploading, Posting, Editing, Downloading) are included content update version 8609 and we will continue to introduce one or more of these new App-ID tags in these same monthly content updates where we introduce new App-IDs. Watch these release notes for updates and review this article for details about upcoming new App-ID tags.</p></li><li data-stringify-indent="0" data-stringify-border="0">(7/11/22; updated 8/1/22) As part of the App-ID™ decoders improvement process, we will modify the smtp App-ID. As announced on 7/11/2022, we intend to release an smtp-non-rfc placeholder App-ID but now intend to do this with the Applications and Threats content update scheduled for September 20, 2022, and will then activate the decoder for this App-ID with the content update scheduled for October 18, 2022. Review this article for the details.</li></ul>
2022-09-01T17:04:33Z 8615 content

threatvault-threat-batch-search


Retrieves the threats signature metadata by ID, name, or sample hash (sha256 or md5) in batch mode. Batch limit is 100 entries.

Base Command

threatvault-threat-batch-search

Input

Argument Name Description Required
id The signature IDs. Optional
md5 The hash of the sample. Optional
name The signature names. Optional
sha256 The hash of the sample. Optional
type Use together with the other fields to filter out the results. Possible values are: ips, fileformat, spyware, vulnerability, antivirus, dns, rtdns, spywarec2. Optional

Context Output

Path Type Description
ThreatVault.Vulnerability.id String The unique ID of the threat.
ThreatVault.Vulnerability.name String The name of the threat.
ThreatVault.Vulnerability.description String The description of the threat.
ThreatVault.Vulnerability.category String The threat category of the threat.
ThreatVault.Vulnerability.min_version String The PAN-OS minimum version.
ThreatVault.Vulnerability.max_version String The PAN-OS maximum version.
ThreatVault.Vulnerability.severity String The severity of the threat.
ThreatVault.Vulnerability.default_action String The default action when the signature is triggered.
ThreatVault.Vulnerability.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Vulnerability.vendor. Array The vulnerability identifier issued by the vendor on advisories.
ThreatVault.Vulnerability.reference Array The public reference of the threat.
ThreatVault.Vulnerability.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Vulnerability.details Object Any additional details of the threat.
ThreatVault.Vulnerability.ori_release_version String The original release version of the threat.
ThreatVault.Vulnerability.latest_release_version String The latest release version of the threat.
ThreatVault.Vulnerability.ori_release_time String The original release time of the threat.
ThreatVault.Vulnerability.latest_release_time String The latest release time of the threat.
ThreatVault.Antivirus.id String The unique ID of the threat.
ThreatVault.Antivirus.name String The name of the threat.
ThreatVault.Antivirus.action String The action of the threat.
ThreatVault.Antivirus.description String The description of the threat.
ThreatVault.Antivirus.subtype String The subtype of the threat.
ThreatVault.Antivirus.type String The type of the threat.
ThreatVault.Antivirus.create_time String The create time of the threat.
ThreatVault.Antivirus.related_sha256_hashes String The related SHA256 hashes of the threat.
ThreatVault.Antivirus.release String Information about the signature release.
ThreatVault.FileInfo.filetype String The file type of the file.
ThreatVault.FileInfo.sha256 String The SHA256 of the file.
ThreatVault.FileInfo.sha1 String The SHA1 of the file.
ThreatVault.FileInfo.md5 String The MD5 of the file.
ThreatVault.FileInfo.size String The size of the file.
ThreatVault.FileInfo.type String The type of the file.
ThreatVault.FileInfo.family String The family of the file.
ThreatVault.FileInfo.platform String The platform of the file.
ThreatVault.FileInfo.wildfire_verdict String The Wildfire verdict.
ThreatVault.FileInfo.create_time String The threat signature creation time.
ThreatVault.FileInfo.signatures String The signatures.
ThreatVault.Spyware.id String The unique ID of the threat.
ThreatVault.Spyware.name String The name of the threat.
ThreatVault.Spyware.description String The description of the threat.
ThreatVault.Spyware.vendor Array The spyware identifier issued by the vendor on advisories.
ThreatVault.Spyware.severity String The severity of the threat.
ThreatVault.Spyware.default_action String The default action when the signature is triggered.
ThreatVault.Spyware.details Object Any additional details of the threat.
ThreatVault.Spyware.reference Array The public reference of the threat.
ThreatVault.Spyware.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Spyware.min_version String The PAN-OS minimum version.
ThreatVault.Spyware.max_version String The PAN-OS maximum version.
ThreatVault.Spyware.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.DNS.id String The unique ID of the threat.
ThreatVault.DNS.name String The name of the threat.
ThreatVault.DNS.description String The description of the threat.
ThreatVault.DNS.type String The type of the threat.
ThreatVault.DNS.severity String The severity of the threat.
ThreatVault.DNS.subtype String The subtype of the threat.
ThreatVault.DNS.action String The action of the threat.
ThreatVault.DNS.create_time String The threat signature creation time.
ThreatVault.DNS.release String Information about the signature release.
ThreatVault.DNS.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.RTDNS.id String The unique ID of the threat.
ThreatVault.RTDNS.name String The name of the threat.
ThreatVault.RTDNS.description String The description of the threat.
ThreatVault.RTDNS.type String The type of the threat.
ThreatVault.RTDNS.severity String The severity of the threat.
ThreatVault.RTDNS.subtype String The subtype of the threat.
ThreatVault.RTDNS.action String The action of the threat.
ThreatVault.RTDNS.create_time String The threat signature creation time.
ThreatVault.RTDNS.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.SpywareC2.id String The unique ID of the threat.
ThreatVault.SpywareC2.name String The name of the threat.
ThreatVault.SpywareC2.description String The description of the threat.
ThreatVault.SpywareC2.type String The type of the threat.
ThreatVault.SpywareC2.severity String The severity of the threat.
ThreatVault.SpywareC2.subtype String The subtype of the threat.
ThreatVault.SpywareC2.action String The action of the threat.
ThreatVault.SpywareC2.create_time String The threat signature creation time.
ThreatVault.SpywareC2.release String Information about the signature release.
ThreatVault.SpywareC2.status String The status of the threat (e.g., inactive, active, or released).

Command example

!threatvault-threat-batch-search sha256=380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549

Context Example

{
    "DBotScore": {
        "Indicator": "380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549",
        "Reliability": "D - Not usually reliable",
        "Score": 3,
        "Type": "file",
        "Vendor": "Palo Alto Networks Threat Vault v2"
    },
    "File": {
        "Hashes": [
            {
                "type": "MD5",
                "value": "ca066f965dfbc5392871d3fa281236cf"
            },
            {
                "type": "SHA1",
                "value": "d58869fb948c60bef544e1a36f4489fd76fd10ae"
            },
            {
                "type": "SHA256",
                "value": "380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549"
            }
        ],
        "MD5": "ca066f965dfbc5392871d3fa281236cf",
        "Malicious": {
            "Description": null,
            "Vendor": "Palo Alto Networks Threat Vault v2"
        },
        "SHA1": "d58869fb948c60bef544e1a36f4489fd76fd10ae",
        "SHA256": "380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549"
    },
    "ThreatVault": {
        "FileInfo": {
            "create_time": "2021-12-02T20:27:12Z",
            "family": "WGeneric",
            "filetype": "DLL",
            "md5": "ca066f965dfbc5392871d3fa281236cf",
            "platform": "Win32",
            "sha1": "d58869fb948c60bef544e1a36f4489fd76fd10ae",
            "sha256": "380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549",
            "signatures": {
                "antivirus": [
                    {
                        "action": "",
                        "create_time": "2019-06-19T17:06:12Z",
                        "description": "This signature detected trojan/Win32 DLL.razy.slo",
                        "id": "280392504",
                        "name": "trojan/Win32 DLL.razy.slo",
                        "related_sha256_hashes": [
                            "5c825eae80aa0f376626387193c8ededa445cb066ca36813c7af49428e372cfb",
                            "d4a06653ad6d25ab69595c69656ce4c7f8ec60874b77998777fed7e741ad7003",
                            "88a5a664dbd3459b4fd1e55e450786c493989b994606d7b8cbe589fb9358dd74",
                            "4977929b742a47fafd4e4d0e2b765428ce8ec2764a4463d083914b30aa4d3a1b",
                            "0b66779d8910e365c8de5ea030f9827ee32b418bc303c26e3252a4843b86118d",
                            "3b3d767226aa796013b075fd7d6baa432e3f2bf380c55655dedaa8ead038829e",
                            "b8cbc5c1b01ae17dec42eca0f4b448407a2d5b9f85580e0e122c1854f4f80e37",
                            "47e3da7e179b755a1ccc8fe8fc506a2fb15baff2c124b15cf2f5e29038f3d1ac",
                            "5cd3e058f6049a31a42c292ebb091a1b5ea4bd9c7bc6fed5ac8a33c5fc89924a",
                            "4a2b514a753611b464e7583ba512310cd58c8066f19b631134012ebe05cd0e5f"
                        ],
                        "release": {
                            "antivirus": {
                                "first_release_time": "2019-06-21T13:37:09Z",
                                "first_release_version": "3017",
                                "last_release_time": "2022-11-05T11:36:34Z",
                                "last_release_version": "4258"
                            },
                            "wildfire": {
                                "first_release_time": "2019-06-19T17:06:35Z",
                                "first_release_version": "359199",
                                "last_release_time": "2022-11-06T12:47:08Z",
                                "last_release_version": "713954"
                            }
                        },
                        "severity": "medium",
                        "status": "active",
                        "subtype": "virus",
                        "type": "0"
                    }
                ]
            },
            "size": "176128",
            "type": "Virus",
            "wildfire_verdict": "malicious"
        }
    }
}

Human Readable Output

File 380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549

Active CreateTime Description Family FileType MD5 Platform Release SHA1 SHA256 Severity Signature Name SignatureId Size Wildfire verdict
active 2021-12-02T20:27:12Z This signature detected trojan/Win32 DLL.razy.slo WGeneric DLL ca066f965dfbc5392871d3fa281236cf Win32 antivirus: {“first_release_version”: “3017”, “first_release_time”: “2019-06-21T13:37:09Z”, “last_release_version”: “4258”, “last_release_time”: “2022-11-05T11:36:34Z”}
wildfire: {“first_release_version”: “359199”, “first_release_time”: “2019-06-19T17:06:35Z”, “last_release_version”: “713954”, “last_release_time”: “2022-11-06T12:47:08Z”}
d58869fb948c60bef544e1a36f4489fd76fd10ae 380082fbf9e57bcd524648efce14c92a4cb58cb745c30ef29730959d79164549 medium trojan/Win32 DLL.razy.slo 280392504 176128 malicious

threatvault-threat-search


Retrieves threat metadata. The nature of the query is determined by the query parameter you provide.

Base Command

threatvault-threat-search

Input

Argument Name Description Required
cve The CVE tied to the signature. Optional
vendor The vendor ID tied to the signatures. Optional
signature-name The signature name. Optional
from-release-date The release dates range (use with the to-release-date argument), Format: YYYY-MM-DD or timestamp (<number> <time unit>, e.g., 12 hours, 7 days, 3 months, 1 year). Optional
to-release-date The right boundary of date range query (use with the from-release-date argument), Format: YYYY-MM-DD or timestamp (<number> <time unit>, e.g., 12 hours, 7 days, 3 months, 1 year). Optional
from-release-version The release versions range (use with the to-release-version argument). Optional
to-release-version The right boundary of version range query (use with the from-release-version argument). Optional
release-date The release date. Format: YYYY-MM-DD or timestamp (<number> <time unit>, e.g., 12 hours, 7 days, 3 months, 1 year). Optional
release-version The release version. Optional
type The threat type. Use together with the other fields to filter out the results. Possible values are: ips, fileformat, spyware, vulnerability, antivirus, dns, rtdns, spywarec2. Optional
page Page number to get result from. Needs to be use with the page_size argument. Optional
page_size The page size of the returned results. Needs to be use with the page argument. Optional
limit The maximum number of results to return (default is 50). Optional

Context Output

Path Type Description
ThreatVault.Vulnerability.id String The unique ID of the threat.
ThreatVault.Vulnerability.name String The name of the threat.
ThreatVault.Vulnerability.description String The description of the threat.
ThreatVault.Vulnerability.category String The threat category of the threat.
ThreatVault.Vulnerability.min_version String The PAN-OS minimum version.
ThreatVault.Vulnerability.max_version String The PAN-OS maximum version.
ThreatVault.Vulnerability.severity String The severity of the threat.
ThreatVault.Vulnerability.default_action String The default action when the signature is triggered.
ThreatVault.Vulnerability.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Vulnerability.vendor. Array The vulnerability identifier issued by the vendor on advisories.
ThreatVault.Vulnerability.reference Array The public reference of the threat.
ThreatVault.Vulnerability.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Vulnerability.details Object Any additional details of the threat.
ThreatVault.Vulnerability.ori_release_version String The original release version of the threat.
ThreatVault.Vulnerability.latest_release_version String The latest release version of the threat.
ThreatVault.Vulnerability.ori_release_time String The original release time of the threat.
ThreatVault.Vulnerability.latest_release_time String The latest release time of the threat.
ThreatVault.Spyware.id String The unique ID of the threat.
ThreatVault.Spyware.name String The name of the threat.
ThreatVault.Spyware.description String The description of the threat.
ThreatVault.Spyware.vendor Array The spyware identifier issued by the vendor on advisories.
ThreatVault.Spyware.severity String The severity of the threat.
ThreatVault.Spyware.default_action String The default action when the signature is triggered.
ThreatVault.Spyware.details Object Any additional details of the threat.
ThreatVault.Spyware.reference Array The public reference of the threat.
ThreatVault.Spyware.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Spyware.min_version String The PAN-OS minimum version.
ThreatVault.Spyware.max_version String The PAN-OS maximum version.
ThreatVault.Spyware.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Antivirus.id String The unique ID of the threat.
ThreatVault.Antivirus.name String The name of the threat.
ThreatVault.Antivirus.action String The action of the threat.
ThreatVault.Antivirus.description String The description of the threat.
ThreatVault.Antivirus.subtype String The subtype of the threat.
ThreatVault.Antivirus.type String The type of the threat.
ThreatVault.Antivirus.create_time String The create time of the threat.
ThreatVault.Antivirus.related_sha256_hashes String The related SHA256 hashes of the threat.
ThreatVault.Antivirus.release String Information about the signature release.
ThreatVault.Fileformat.id String The unique ID of the threat.
ThreatVault.Fileformat.name String The name of the threat.
ThreatVault.Fileformat.description String The description of the threat.
ThreatVault.Fileformat.category String The threat category of the threat.
ThreatVault.Fileformat.min_version String The PAN-OS minimum version.
ThreatVault.Fileformat.max_version String The PAN-OS maximum version.
ThreatVault.Fileformat.severity String The severity of the threat.
ThreatVault.Fileformat.default_action String The default action when the signature is triggered.
ThreatVault.Fileformat.cve Array The CVE (Common Vulnerabilities and Exposures) of the threat.
ThreatVault.Fileformat.vendor Array The file format identifier issued by the vendor on advisories.
ThreatVault.Fileformat.reference Array The public reference of the threat.
ThreatVault.Fileformat.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.Fileformat.details Array Any additional details of the threat.
ThreatVault.Fileformat.ori_release_version String The original release version of the threat.
ThreatVault.Fileformat.latest_release_version String The latest release version of the threat.
ThreatVault.Fileformat.ori_release_time String The original release time of the threat.
ThreatVault.Fileformat.latest_release_time String The latest release time of the threat.
ThreatVault.DNS.id String The unique ID of the threat.
ThreatVault.DNS.name String The name of the threat.
ThreatVault.DNS.description String The description of the threat.
ThreatVault.DNS.type String The type of the threat.
ThreatVault.DNS.severity String The severity of the threat.
ThreatVault.DNS.subtype String The subtype of the threat.
ThreatVault.DNS.action String The action of the threat.
ThreatVault.DNS.create_time String The threat signature creation time.
ThreatVault.DNS.release String Information about the signature release.
ThreatVault.DNS.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.RTDNS.id String The unique ID of the threat.
ThreatVault.RTDNS.name String The name of the threat.
ThreatVault.RTDNS.description String The description of the threat.
ThreatVault.RTDNS.type String The type of the threat.
ThreatVault.RTDNS.severity String The severity of the threat.
ThreatVault.RTDNS.subtype String The subtype of the threat.
ThreatVault.RTDNS.action String The action of the threat.
ThreatVault.RTDNS.create_time String The threat signature creation time.
ThreatVault.RTDNS.status String The status of the threat (e.g., inactive, active, or released).
ThreatVault.SpywareC2.id String The unique ID of the threat.
ThreatVault.SpywareC2.name String The name of the threat.
ThreatVault.SpywareC2.description String The description of the threat.
ThreatVault.SpywareC2.type String The type of the threat.
ThreatVault.SpywareC2.severity String The severity of the threat.
ThreatVault.SpywareC2.subtype String The subtype of the threat.
ThreatVault.SpywareC2.action String The action of the threat.
ThreatVault.SpywareC2.create_time String The threat signature creation time.
ThreatVault.SpywareC2.release String Information about the signature release.
ThreatVault.SpywareC2.status String The status of the threat (e.g., inactive, active, or released).

Command example

!threatvault-threat-search signature-name=Code+Injection+JS

Context Example

{
    "ThreatVault": {
        "Vulnerability": {
            "category": "code-execution",
            "cve": [
                "CVE-2020-28502"
            ],
            "default_action": "alert",
            "description": "Node.js is prone to a code injection vulnerability while parsing certain crafted HTTP requests. The vulnerability is due to the lack of proper checks on HTTP requests, leading to an exploitable code injection vulnerability. An attacker could exploit the vulnerability by sending crafted HTTP requests. A successful attack could lead to remote code execution with the privileges of the server.",
            "details": {
                "change_data": "new coverage"
            },
            "id": "91119",
            "latest_release_time": "2021-05-14T05:00:11Z",
            "latest_release_version": "8406",
            "max_version": "",
            "min_version": "8.1.0",
            "name": "Node.js Code Injection Vulnerability",
            "ori_release_time": "2021-05-14T05:00:11Z",
            "ori_release_version": "8406",
            "reference": [
                "https://github.com/s-index/CVE-2020-28502"
            ],
            "severity": "high",
            "status": "released",
            "vendor": []
        }
    }
}

Human Readable Output

91119 vulnerability reputation

CVE Category Default action ID Latest release time Latest release version Name Ori release time Ori release version Reference Severity Status
CVE-2020-28502 code-execution alert 91119 2021-05-14T05:00:11Z 8406 Node.js Code Injection Vulnerability 2021-05-14T05:00:11Z 8406 https://github.com/s-index/CVE-2020-28502 high released

Breaking changes from the previous version of this integration - Palo Alto Networks Threat Vault v2

The following sections list the changes in this version.

Commands

The following commands were removed in this version:

  • threatvault-antivirus-signature-get - replaced by threatvault-threat-signature-get.
  • threatvault-dns-signature-get-by-id.
  • threatvault-antispyware-signature-get-by-id - replaced by threatvault-threat-signature-get.
  • threatvault-ip-geo-get.
  • ip.
  • threatvault-antivirus-signature-search - replaced by threatvault-threat-signature-search.
  • threatvault-dns-signature-search - replaced by threatvault-threat-signature-search.
  • threatvault-antispyware-signature-search - replaced by threatvault-threat-signature-search.
  • threatvault-signature-search-results.

threatvault-atp-batch-report-get


Retrieve the Advanced Threat Prevention (ATP) report by report id in batch mode. Batch limit is 100 entries. Get one or more ATP reports. Must provide one or more report IDs

Base Command

threatvault-atp-batch-report-get

Input

Argument Name Description Required
report_id Provides the ATP report by matching the report id . Required

Context Output

Path Type Description
ThreatVault.ATP.Report string ThreatVault ATP Report ID
ThreatVault.ATP.Report.err_msg string ThreatVault error message
ThreatVault.ATP.Report.panos_info.csp_id string ATP Report CSP
ThreatVault.ATP.Report.panos_info.fw_addr_v4 string ATP Report firewall IP
ThreatVault.ATP.Report.panos_info.fw_app_version string ATP Report content version
ThreatVault.ATP.Report.panos_info.fw_hostname string ATP Report firewall name
ThreatVault.ATP.Report.panos_info.fw_model string ATP Report firewall model
ThreatVault.ATP.Report.panos_info.fw_sw_version string ATP Report firewall PAN-OS
ThreatVault.ATP.Report.report_id string ATP Report ID
ThreatVault.ATP.Report.session_info.flow_info.daddr string ATP Report Session Flow destination IP
ThreatVault.ATP.Report.session_info.flow_info.dport string ATP Report Session Flow destination Port
ThreatVault.ATP.Report.session_info.flow_info.saddr string ATP Report Session Flow source IP
ThreatVault.ATP.Report.session_info.flow_info.sport string ATP Report Session Flow source Port
ThreatVault.ATP.Report.session_info.session_id string ATP Report session ID
ThreatVault.ATP.Report.session_info.session_timestamp string ATP Report session timestamp
ThreatVault.ATP.Report.transaction_data.payload_sha256 string ATP Report transaction payload sha256
ThreatVault.ATP.Report.transaction_data.transaction_id string ATP Report transaction payload ID
ThreatVault.ATP.Report.transaction_data.detection_results.verdict string ATP Report transaction verdict
ThreatVault.ATP.Report.transaction_data.detection_results.detection_service string ATP Report transaction detection service
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Method string ATP Report transaction payload method
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.User-Agent string ATP Report transaction payload user-agent
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Cookie string ATP Report transaction payload cookie
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Accept string ATP Report transaction payload accept
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Host string ATP Report transaction payload host
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.URI string ATP Report transaction payload URI
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Cache-Control string ATP Report transaction payload cache-control
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Version string ATP Report transaction payload version
ThreatVault.ATP.Report.transaction_data.detection_results.details.payload_info.Connection string ATP Report transaction payload connection

Command example

!threatvault-atp-batch-report-get report_id="a3b93da98349831c5c477370bb352e6b2a75b91c4996b402542b1094b39feff800a"

Context Example

{
    "ThreatVault": {
        "ATP": {
            "Report": {
                "err_msg": "",
                "panos_info": {
                    "csp_id": "123456",
                    "fw_addr_v4": "192.168.2.46",
                    "fw_app_version": "8662-7785",
                    "fw_hostname": "vm50",
                    "fw_model": "PA-VM",
                    "fw_serial": "12345678",
                    "fw_sw_version": "10.2.3"
                },
                "report_id": "a3b93da98349831c5c477370bb352e6b2a75b91c4996b402542b1094b39feff800a",
                "session_info": {
                    "flow_info": {
                        "daddr": "1.2.3.4",
                        "dport": "80",
                        "saddr": "4.3.2.1",
                        "sport": "55437"
                    },
                    "session_id": "289",
                    "session_timestamp": "2023-01-11T19:11:11Z"
                },
                "transaction_data": [
                    {
                        "detection_results": [
                            {
                                "details": {
                                    "payload_info": {
                                        "Accept": "*/*",
                                        "Cache-Control": "no-cache",
                                        "Connection": "Keep-Alive",
                                        "Cookie": "fH9DkfzA8HcEpU2cjbeyzGkckEEgP8keITqyztlb2DQAc0KEoNy/XqlI0F8PmdPpn5n2kXdQgqg5/wrEIaGd421084U=",
                                        "Host": "1.2.3.4",
                                        "Method": "GET",
                                        "URI": "/visit.js",
                                        "User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)",
                                        "Version": "HTTP/1.1"
                                    }
                                },
                                "detection_service": "Cobalt Strike HTTP",
                                "verdict": 1
                            }
                        ],
                        "payload_sha256": "b595e79f6420db35632c23d49ca287bc07690456ea61fb5d9c9896fd9aceecd9",
                        "transaction_id": 0
                    }
                ]
            }
        }
    }
}

Human Readable Output

Advanced Threat Prevention Report ID: a3b93da98349831c5c477370bb352e6b2a75b91c4996b402542b1094b39feff800a

panos_info fw_hostname: abc\nfw_addr_v4: 192.168.2.1\nfw_app_version: 8662-7785\nfw_sw_version: 10.2.3
report_id a3b93da98349831c5c477370bb352e6b2a75b91c4996b402542b1094b39feff800a
sesion_info session_id: 289\nsession_timestamp: 2023-01-11T19:11:11z
transaction_data {‘transaction_id: 0, ‘payload_sha256’:’b595e79f6420db35632c23d49ca287bc07690456ea61fb5d9c9896fd9aceecd9’, ‘detection_results’: [{‘detection_service’: ‘Cobalt strike HTTP’}] }

threatvault-atp-report-pcap-get


Retrieve the Advanced Threat Prevention (ATP) analysis report PCAP by reportID

Base Command

threatvault-atp-report-pcap-get

Input

Argument Name Description Required
report_id Retrieve the ATP report sample (packet capture) by report id. Required

Context Output

Path Type Description
ThreatVault.ATP.PCAP.ID string Threatvault ATP PCAP ID
ThreatVault.ATP.PCAP.Name string Threatvault ATP PCAP Name

Command example

!threatvault-atp-report-pcap-get report_id="5c4b78a92dea9d7bb3171b4f7be131400897fa0e61e6fed9532f2f9de5686b4b"

Context Example

{
    "ThreatVault": {
        "ATP": {
            "PCAP": {
                "ID": "5c4b78a92dea9d7bb3171b4f7be131400897fa0e61e6fed9532f2f9de5686b4b",
                "Name": "5c4b78a92dea9d7bb3171b4f7be131400897fa0e61e6fed9532f2f9de5686b4b.pcap"
            }
        }
    }
}

Human Readable Output

Advanced Threat Prevention PCAP Download

ID 5c4b78a92dea9d7bb3171b4f7be131400897fa0e61e6fed9532f2f9de5686b4b
Name 5c4b78a92dea9d7bb3171b4f7be131400897fa0e61e6fed9532f2f9de5686b4b.pcap

Additional Considerations for this version

Note: The Threat Vault API key is not the same as the Auto Focus API key. Make sure you have the required API key, as instructed on the integration configuration page.

Configuration parameters

  • url — URL (required)
  • credentials — (required)
  • integrationReliability — Source Reliability
  • insecure — Trust any certificate (not secure)
  • proxy — Use system proxy settings
  • isFetch — Fetch incidents
  • incidentType — Incident type
  • first_fetch — First fetch timestamp (<number> <time unit>, e.g., 3 days)
  • incidentFetchInterval — Incidents Fetch Interval

Commands (9)

  • cve

    Checks the reputation of CVE in Threat Vault.

  • file

    Checks the reputation of an antivirus in Threat Vault.

  • ip

    Returns information about IPs.

  • threatvault-atp-batch-report-get

    Retrieve the Advanced Threat Prevention (ATP) report by report ID in batch mode. Batch limit is 100 entries. Get one or more ATP reports. Must provide one or more report IDs.

  • threatvault-atp-report-pcap-get

    Retrieve the Advanced Threat Prevention (ATP) analysis report PCAP by reportID

  • threatvault-release-note-get

    Retrieve the release notes information by version.

  • threatvault-threat-batch-search

    Retrieve the threats signature metadata by id, name or sample hash (sha256 or md5) in batch mode. Batch limit is 100 entries.

  • threatvault-threat-search

    Retrieves threat metadata. The nature of the query is determined by the query parameter that you provide.

  • threatvault-threat-signature-get

    Gets the antivirus or anti-spyware or files signature.

import demistomock as demisto  # noqa: F401
from CommonServerPython import *  # noqa: F401

SCORE_TABLE_FILE = {
    "unknown": Common.DBotScore.NONE,
    "benign": Common.DBotScore.GOOD,
    "grayware": Common.DBotScore.SUSPICIOUS,
    "malicious": Common.DBotScore.BAD,
}


class ReputationType:
    FILE = "file"
    CVE = "cve"
    ANTIVIRUS = "antivirus"
    SPYWARE = "spyware"
    FILEFORMAT = "fileformat"
    VULNERABILITY = "vulnerability"
    DNS = "dns"
    RTDNS = "rtdns"
    SPYWAREC2 = "spywarec2"
    RELEASE_NOTES = "release_notes"


HEADERS_FILE = ["FileType", "MD5", "SHA256", "SHA1", "Size", "Status"]
HEADERS_CVE = ["ID", "Description", "Score", "Published", "Modified"]
HEADERS_SPYWARE = [
    "ThreatID",
    "Name",
    "Description",
    "Vendor",
    "Score",
    "Default action",
    "Details",
    "Reference",
    "Status",
    "Min version",
    "Max version",
    "CVE",
]
HEADERS_VULNERABILITY = [
    "ThreatID",
    "Name",
    "Description",
    "Category",
    "Score",
    "Default action",
    "Vendor",
    "Reference",
    "Status",
    "Published version",
    "Latest release version",
    "Published",
    "Latest release time",
    "CVE",
]
HEADERS_FILEFORMAT = [
    "ThreatID",
    "Name",
    "Description",
    "Category",
    "Score",
    "Default action",
    "Vendor",
    "Reference",
    "Status",
    "Published version",
    "Latest release version",
    "Published",
    "Latest release time",
]
HEADERS_ANTIVIRUS = [
    "ThreatID",
    "Name",
    "Description",
    "Subtype",
    "Score",
    "Action",
    "Creation Time",
    "Related SHA256 hashes",
    "Release",
]
HEADERS_DNS_RTDNS_SPYWAREC2 = [
    "ThreatID",
    "Name",
    "Description",
    "Severity",
    "Type",
    "Subtype",
    "Action",
    "Creation Time",
    "Status",
    "Release",
]

DATE_REGEX = r"\d{4}-[0-9]{2}-[0-9]{2}$"


class Client(BaseClient):
    """
    Client to use in the Threat Vault integration. Overrides BaseClient.
    """

    def __init__(self, base_url: str, api_key: str, verify: bool, proxy: bool, reliability: str):
        super().__init__(
            base_url=base_url,
            verify=verify,
            proxy=proxy,
            headers={"Content-Type": "application/json", "X-API-KEY": api_key},
        )

        self.name = "ThreatVault"
        self.reliability = reliability

    def ip_feed_get_request(self, arg: str, value: str) -> dict:  # pragma: no cover
        suffix = "ip-feed"
        return self._http_request(method="GET", url_suffix=suffix, params={arg: value})

    def ip_feed_batch_post_request(self, arg: str, value: str) -> dict:  # pragma: no cover
        suffix = "ip-feed"
        payload = json.dumps({"ipaddr": value})
        return self._http_request(method="POST", url_suffix=suffix, data=payload)

    def antivirus_signature_get_request(self, arg: str, value: str) -> dict:  # pragma: no cover
        suffix = "threats"
        return self._http_request(method="GET", url_suffix=suffix, params={arg: value})

    def release_notes_get_request(self, type_: str, version: str) -> dict:  # pragma: no cover
        suffix = "release-notes"
        return self._http_request(method="GET", url_suffix=suffix, params={"type": type_, "version": version})

    def threat_batch_search_request(self, arg: str, value: list, type_: str) -> dict:
        params: dict[str, Union[list, str]] = {arg: value}
        if type_:
            params["type"] = type_
        params = json.dumps(params)
        suffix = "threats"
        return self._http_request(method="POST", url_suffix=suffix, data=params)

    def threat_search_request(self, args: dict) -> dict:
        suffix = "threats"
        return self._http_request(method="GET", url_suffix=suffix, params=args)

    def atp_batch_report_request(self, args: str, value: list) -> dict:
        params: dict[str, Union[list, str]] = {args: value}
        params = json.dumps(params)
        suffix = "atp/reports"
        return self._http_request(method="POST", url_suffix=suffix, data=params)

    def atp_report_pcap_request(self, args: dict) -> dict:
        suffix = "atp/reports/pcaps"

        pcap_response = self._http_request(method="GET", url_suffix=suffix, params=args, resp_type="response")

        return pcap_response


"""
HELP FUNCTIONS
"""


def reputation_type_to_hr(reputation_type: str) -> str:
    match reputation_type:
        case ReputationType.RTDNS | ReputationType.DNS:
            return reputation_type.upper()
        case ReputationType.SPYWAREC2:
            return "SpywareC2"
        case _:
            return reputation_type.capitalize()


def validate_arguments_search_command(
    cve: str | None,
    vendor: str | None,
    name: str | None,
    from_release_date: str | None,
    to_release_date: str | None,
    from_release_version: str | None,
    to_release_version: str | None,
    release_date: str | None,
    release_version: str | None,
    type_: str | None,
) -> None:
    if sum(1 for x in (cve, vendor, name) if x) > 1:
        raise ValueError("Only one of the following can be used at a time: cve, vendor, name")

    if sum(1 for x in (from_release_date, to_release_date) if x) == 1:
        raise ValueError(
            "When using a release date range in a query, it must be used with the following two arguments: "
            "from-release-date, to-release-date"
        )

    if sum(1 for x in (from_release_version, to_release_version) if x) == 1:
        raise ValueError(
            "When using a release version range in a query, it must be used with the following two arguments: "
            "from-release-version, to-release-version"
        )

    if release_date and release_version:
        raise ValueError("There can only be one argument from the following list in the command: release-date, release-version")

    if (from_release_date or from_release_version) and (release_date or release_version):
        raise ValueError(
            "When using a release version range or a release date range in a query"
            "it is not possible to use with the following arguments: release-date, release-version"
        )

    if from_release_date and from_release_version:
        raise ValueError("from-release-version and from-release-date cannot be used together.")

    if not any(
        (
            cve,
            vendor,
            name,
            type_,
            from_release_date,
            from_release_version,
            release_date,
            release_version,
        )
    ):
        raise ValueError(
            "One of following arguments is required: cve, vendor, signature-name, type, "
            "from-release-version, from-release-date, release-date, release-version"
        )


def parse_date(date: str = None) -> str | None:
    if not date:
        return None
    if re.match(DATE_REGEX, date):
        return date

    date_time, _ = parse_date_range(date)

    return date_time.date().strftime("%Y-%m-%d")


def pagination(page: Optional[int], page_size: Optional[int], limit: Optional[int]) -> tuple[int, Optional[int]]:
    """
    The page_size and page arguments are converted so they match the offset and limit parameters of the API call.
    """

    if page and page_size:
        if page < 0:
            raise ValueError("The page number must be a positive number")
        return page * page_size, page_size

    if not page and not page_size:
        return 0, limit

    raise ValueError("When using a pagination, it must be used with the following two arguments -> [page, page_size]")


def resp_to_hr(response: dict, type_: str, expanded: bool = False) -> dict:
    match type_:
        case ReputationType.FILE:
            antivirus = response.get("signatures", {}).get("antivirus", ({},))[0]
            table_for_md = {
                "Status": antivirus.get("status"),
                "FileType": response.get("filetype"),
                "MD5": response.get("md5"),
                "SHA256": response.get("sha256"),
                "SHA1": response.get("sha1"),
                "Size": response.get("size"),
            }
            if expanded:
                table_for_md.update(
                    {
                        "Release": antivirus.get("release"),
                        "Creation Time": response.get("create_time"),
                        "SignatureId": antivirus.get("id"),
                        "Family": response.get("family"),
                        "Platform": response.get("platform"),
                        "Signature Name": antivirus.get("name"),
                        "Score": antivirus.get("severity"),
                        "Description": antivirus.get("description"),
                        "Wildfire verdict": response.get("wildfire_verdict"),
                    }
                )

        case ReputationType.CVE:
            table_for_md = {
                "ID": response.get("cve"),
                "Score": response.get("severity"),
                "Published": response.get("ori_release_time"),
                "Modified": response.get("latest_release_time"),
                "Description": response.get("description"),
            }

        case ReputationType.FILEFORMAT:
            table_for_md = {
                "ThreatID": response.get("id"),
                "Name": response.get("name"),
                "Description": response.get("description"),
                "Category": response.get("category"),
                "Score": response.get("severity"),
                "Default action": response.get("default_action"),
                "Vendor": response.get("vendor"),
                "Reference": response.get("reference"),
                "Status": response.get("status"),
                "Published version": response.get("ori_release_version"),
                "Latest release version": response.get("latest_release_version"),
                "Published": response.get("ori_release_time"),
                "Latest release time": response.get("latest_release_time"),
            }

        case ReputationType.VULNERABILITY:
            table_for_md = {
                "ThreatID": response.get("id"),
                "Name": response.get("name"),
                "Description": response.get("description"),
                "Category": response.get("category"),
                "Score": response.get("severity"),
                "Default action": response.get("default_action"),
                "Vendor": response.get("vendor"),
                "Reference": response.get("reference"),
                "Status": response.get("status"),
                "Published version": response.get("ori_release_version"),
                "Latest release version": response.get("latest_release_version"),
                "Published": response.get("ori_release_time"),
                "Latest release time": response.get("latest_release_time"),
                "CVE": response.get("cve"),
            }

        case ReputationType.ANTIVIRUS:
            table_for_md = {
                "ThreatID": response.get("id"),
                "Name": response.get("name"),
                "Description": response.get("description"),
                "Subtype": response.get("subtype"),
                "Score": response.get("severity"),
                "Action": response.get("action"),
                "Creation Time": response.get("create_time"),
                "Related SHA256 hashes": response.get("related_sha256_hashes"),
                "Release": response.get("release"),
            }

        case ReputationType.SPYWARE:
            table_for_md = {
                "ThreatID": response.get("id"),
                "Name": response.get("name"),
                "Description": response.get("description"),
                "Vendor": response.get("vendor"),
                "Score": response.get("severity"),
                "Default action": response.get("default_action"),
                "Details": response.get("details"),
                "Reference": response.get("reference"),
                "Status": response.get("status"),
                "Min version": response.get("min_version"),
                "Max version": response.get("max_version"),
                "CVE": response.get("cve"),
            }

        case ReputationType.RTDNS | ReputationType.DNS | ReputationType.SPYWAREC2:
            table_for_md = {
                "ThreatID": response.get("id"),
                "Name": response.get("name"),
                "Description": response.get("description"),
                "Severity": response.get("severity"),
                "Type": response.get("type"),
                "Subtype": response.get("subtype"),
                "Action": response.get("action"),
                "Creation Time": response.get("create_time"),
                "Status": response.get("status"),
                "Release": response.get("release"),
            }

        case ReputationType.RELEASE_NOTES:
            applications = response.get("release_notes", {}).get("applications", {})
            spyware = response.get("release_notes", {}).get("spyware", {})
            vulnerability = response.get("release_notes", {}).get("vulnerability", {})
            table_for_md = {
                "Release version": response.get("release_version"),
                "Content version": response.get("content_version"),
                "type": response.get("type"),
                "Notes": response.get("release_notes", {}).get("notes"),
                "New applications": applications.get("new"),
                "Modified applications": applications.get("modified"),
                "Obsoleted applications": applications.get("obsoleted"),
                "New Spyware": spyware.get("new"),
                "Modified Spyware": spyware.get("modified"),
                "Disabled Spyware": spyware.get("disabled"),
                "New Vulnerability": vulnerability.get("new")[0] if vulnerability.get("new") else None,
                "Modified Vulnerability": vulnerability.get("modified")[0] if vulnerability.get("modified") else None,
                "Disabled Vulnerability": vulnerability.get("disabled")[0] if vulnerability.get("disabled") else None,
                "Release time": response.get("release_time"),
            }

        case _:
            demisto.debug(f"Unexpected item type {type_}")
            return {}

    return table_for_md


def parse_resp_by_type(response: dict, expanded: bool = False) -> List[CommandResults]:
    command_results_list: List[CommandResults] = []
    reputation_types = (
        (ReputationType.ANTIVIRUS, HEADERS_ANTIVIRUS),
        (ReputationType.SPYWARE, HEADERS_SPYWARE),
        (ReputationType.VULNERABILITY, HEADERS_VULNERABILITY),
        (ReputationType.FILEFORMAT, HEADERS_FILEFORMAT),
        (ReputationType.DNS, HEADERS_DNS_RTDNS_SPYWAREC2),
        (ReputationType.RTDNS, HEADERS_DNS_RTDNS_SPYWAREC2),
        (ReputationType.SPYWAREC2, HEADERS_DNS_RTDNS_SPYWAREC2),
    )

    for rep_type, headers_type in reputation_types:
        if rep_type in response["data"]:
            if expanded:
                responses = response.get("data", {}).get(rep_type, [])
            else:
                responses = [response.get("data", {}).get(rep_type, ([],))[0]]

            reputation_types_readable = reputation_type_to_hr(rep_type)
            for result in responses:
                table_for_md = resp_to_hr(response=result, type_=rep_type)
                readable_output = tableToMarkdown(
                    name=f"{reputation_types_readable} Reputation: {result.get('id')}",
                    t=table_for_md,
                    headers=headers_type,
                    removeNull=True,
                )
                command_results_list.append(
                    CommandResults(
                        outputs_prefix=f"ThreatVault.{reputation_types_readable}",
                        outputs_key_field="id",
                        outputs=result if expanded else response.get("data", {}).get(rep_type, []),
                        readable_output=readable_output,
                    )
                )

    return command_results_list


"""
COMMANDS
"""


def ip_command(client: Client, args: dict) -> List[CommandResults]:
    """Retrieve information about the inputted IP from ThreatVault

    Args:
        client (Client): An instance of the client to call the GET commands.
        args (dict): The arguments inputted by the user.

    Returns:
        List[CommandResults]: A list of CommandResults objects to be returned to XSOAR.
    """

    def headers_transform(header):
        headers = {"ipaddr": "IP", "geo": "Country", "asn": "ASN", "name": "Feed Name"}
        return headers[header]

    ips = argToList(args["ip"])
    command_results_list: List[CommandResults] = []
    dbot_reliability = DBotScoreReliability.get_dbot_score_reliability_from_str(client.reliability)

    try:
        if len(ips) == 1:
            # Call single IP info
            response = client.ip_feed_get_request(arg="ipaddr", value=ips[0])

        else:
            # Call batch command
            response = client.ip_feed_batch_post_request(arg="ipaddr", value=ips)

    except DemistoException:
        raise

    if response:
        for data in response["data"]:
            ip_type = FeedIndicatorType.ip_to_indicator_type(data["ipaddr"])

            dbot_score = Common.DBotScore(
                indicator=data["ipaddr"],
                indicator_type=DBotScoreType.IP,
                integration_name=client.name,
                score=3 if data["status"] == "released" else 0,
                reliability=dbot_reliability,
            )

            ip = Common.IP(
                ip_type=ip_type,
                ip=data["ipaddr"],
                asn=data["asn"].split(" ")[0],
                as_owner=re.sub("[()]", "", data["asn"].split(" ")[1]),
                geo_country=data["geo"].split(" ")[0],
                geo_description=re.sub("[()]", "", data["geo"].split(" ")[1]),
                dbot_score=dbot_score,
            )

            readable_output = tableToMarkdown(
                name="IP Feed Information",
                t=data,
                headers=["ipaddr", "geo", "asn", "name"],
                headerTransform=headers_transform,
                removeNull=True,
            )

            command_results = CommandResults(
                readable_output=readable_output,
                outputs=data,
                outputs_prefix="ThreatVault.IP",
                indicator=ip,
            )

            command_results_list.append(command_results)

    return command_results_list


def file_command(client: Client, args: Dict) -> List[CommandResults]:
    """
    Get the reputation of a sha256 or a md5 representing an antivirus
    """
    readable_output = ""
    file_info: dict = {}
    hashes = argToList(args.get("file"))
    command_results_list: List[CommandResults] = []
    dbot_reliability = DBotScoreReliability.get_dbot_score_reliability_from_str(client.reliability)

    for _hash in hashes:
        type_hash = get_hash_type(_hash)
        try:
            response = client.antivirus_signature_get_request(arg=type_hash, value=_hash)
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                dbot_score = Common.DBotScore(
                    indicator=_hash,
                    indicator_type=DBotScoreType.FILE,
                    integration_name=client.name,
                    reliability=dbot_reliability,
                    score=Common.DBotScore.NONE,
                )
                file = Common.File(
                    sha256=_hash if type_hash == "sha256" else None,
                    md5=_hash if type_hash == "md5" else None,
                    dbot_score=dbot_score,
                )

                readable_output = f"Hash {_hash} antivirus reputation is unknown to Threat Vault."
                file_info = {}
            else:
                raise

        if response:
            file_info = response.get("data", {}).get("fileinfo", ({},))[0]
            dbot_score = Common.DBotScore(
                indicator=_hash,
                indicator_type=DBotScoreType.FILE,
                integration_name=client.name,
                score=SCORE_TABLE_FILE[file_info.get("wildfire_verdict", "unknown")],
                reliability=dbot_reliability,
            )
            file = Common.File(
                sha256=file_info.get("sha256"),
                md5=file_info.get("md5"),
                sha1=file_info.get("sha1"),
                dbot_score=dbot_score,
            )

            table_for_md = resp_to_hr(response=file_info, type_="file", expanded=args.get("expanded", False))

            readable_output = tableToMarkdown(
                name=f"Antivirus Reputation for hash: {_hash}",
                t=table_for_md,
                headers=HEADERS_FILE,
                removeNull=True,
            )
        else:
            file = Common.File(dbot_score=0)
            demisto.debug("No response. Initialized file variable.")

        command_results = CommandResults(
            readable_output=readable_output,
            outputs=file_info,
            outputs_prefix="ThreatVault.FileInfo",
            indicator=file,
        )

        command_results_list.append(command_results)

    return command_results_list


def cve_command(client: Client, args: Dict) -> List[CommandResults]:
    readable_output = ""
    _cve = None
    cves = argToList(args.get("cve"))
    command_results_list: List[CommandResults] = []

    for cve in cves:
        try:
            response = client.antivirus_signature_get_request(arg="cve", value=cve)
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                readable_output = f"CVE {cve} vulnerability reputation is unknown to Threat Vault."
                _cve = None
                vulnerability = None
            else:
                raise

        if response:
            vulnerability = response.get("data", {}).get("vulnerability", ({},))[0]
            _cve = Common.CVE(
                id=vulnerability.get("cve")[0],
                cvss=vulnerability.get("severity"),
                published=vulnerability.get("ori_release_time"),
                modified=vulnerability.get("latest_release_time"),
                description=vulnerability.get("description"),
            )
            table_for_md = resp_to_hr(response=vulnerability, type_="cve")
            readable_output = tableToMarkdown(
                name=f"CVE Vulnerability Reputation: {cve}",
                t=table_for_md,
                headers=HEADERS_CVE,
                removeNull=True,
            )

        command_results = CommandResults(
            readable_output=readable_output,
            outputs=vulnerability,
            outputs_prefix="ThreatVault.Vulnerability",
            indicator=_cve,
        )
        command_results_list.append(command_results)

    return command_results_list


def threat_signature_get_command(client: Client, args: Dict) -> List[CommandResults]:
    args["file"] = args.get("sha256", "")
    if md5 := args.get("md5"):
        args["file"] += f",{md5}" if args["file"] else md5
    args["expanded"] = True
    ids = argToList(args.get("signature_id"))

    if not any((ids, args["file"])):
        raise ValueError("One of following arguments is required: signature_id, sha256, md5")

    if ids and args["file"]:
        raise ValueError("The command cannot be run with more than one argument.")

    command_results_list: List[CommandResults] = []

    if args["file"]:
        command_results_list.extend(file_command(client=client, args=args))
        return command_results_list

    for _id in ids:
        try:
            response = client.antivirus_signature_get_request(arg="id", value=_id)
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                readable_output = f"{_id} reputation is unknown to Threat Vault."
                command_results_list.append(CommandResults(readable_output=readable_output))
            else:
                raise

        if response:
            command_results_list.extend(parse_resp_by_type(response=response))

    return command_results_list


def release_note_get_command(client: Client, args: Dict) -> CommandResults:
    if not args.get("version"):
        raise ValueError("The version argument is required")

    version = args["version"]
    try:
        response = client.release_notes_get_request("content", version)
    except DemistoException as err:
        if err.res is not None and err.res.status_code == 404:
            return CommandResults(readable_output=f"Release note {version} was not found.")
        else:
            raise

    data = response.get("data", ({},))[0]
    table_for_md = resp_to_hr(response=data, type_="release_notes")
    readable_output = tableToMarkdown(name="Release notes:", t=table_for_md, removeNull=True)
    return CommandResults(
        outputs_prefix="ThreatVault.ReleaseNote",
        outputs_key_field="release_version",
        outputs=data,
        readable_output=readable_output,
    )


def threat_batch_search_command(client: Client, args: Dict) -> List[CommandResults]:
    ids = argToList(args.get("id"))
    md5 = argToList(args.get("md5"))
    sha256 = argToList(args.get("sha256"))
    names = argToList(args.get("name"))
    threat_type = args.get("type", "")

    argument_count = sum(1 for x in (ids, md5, sha256, names) if x)
    if argument_count != 1:
        raise ValueError("Only one of the following can be used at a time: id, md5, sha256, name")

    command_results_list: List[CommandResults] = []

    if ids or names:
        type_ = "id" if ids else "name"
        try:
            response = client.threat_batch_search_request(arg=type_, value=ids if ids else names, type_=threat_type)
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                readable_output = f"There is no information about the {str(ids) if ids else str(names)}"
                command_results_list.append(CommandResults(readable_output=readable_output))
            else:
                raise

        if response:
            command_results_list.extend(parse_resp_by_type(response, True))

    elif md5 or sha256:
        dbot_reliability = DBotScoreReliability.get_dbot_score_reliability_from_str(client.reliability)
        type_ = "md5" if md5 else "sha256"
        try:
            response = client.threat_batch_search_request(arg=type_, value=md5 or sha256, type_=threat_type)
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                readable_output = f"There is no information about the {str(md5) if md5 else str(sha256)}"
                command_results_list.append(CommandResults(readable_output=readable_output))
            else:
                raise

        if response:
            files_info: List[dict] = response.get("data", {}).get("fileinfo", [])
            for file_info in files_info:
                dbot_score = Common.DBotScore(
                    indicator=file_info.get("sha256"),
                    indicator_type=DBotScoreType.FILE,
                    integration_name=client.name,
                    score=SCORE_TABLE_FILE[file_info.get("wildfire_verdict", "unknown")],
                    reliability=dbot_reliability,
                )
                file = Common.File(
                    sha256=file_info.get("sha256"),
                    md5=file_info.get("md5"),
                    sha1=file_info.get("sha1"),
                    dbot_score=dbot_score,
                )

                table_for_md = resp_to_hr(response=file_info, type_="file", expanded=True)
                readable_output = tableToMarkdown(
                    name=f"File {file_info.get('sha256')}:",
                    t=table_for_md,
                    removeNull=True,
                )
                command_results_list.append(
                    CommandResults(
                        outputs_prefix="ThreatVault.FileInfo",
                        readable_output=readable_output,
                        outputs_key_field="sha256",
                        outputs=file_info,
                        indicator=file,
                    )
                )

    return command_results_list


def threat_search_command(client: Client, args: Dict) -> List[CommandResults]:
    cve = args.get("cve")
    vendor = args.get("vendor")
    name = args.get("signature-name")
    from_release_date = parse_date(args.get("from-release-date"))
    to_release_date = parse_date(args.get("to-release-date"))
    from_release_version = args.get("from-release-version")
    to_release_version = args.get("to-release-version")
    release_date = parse_date(args.get("release-date"))
    release_version = args.get("release-version")
    type_ = args.get("type")
    page = arg_to_number(args.get("page"))
    page_size = arg_to_number(args.get("page_size"))
    offset, limit = pagination(page, page_size, arg_to_number(args.get("limit", 50)))

    validate_arguments_search_command(
        cve,
        vendor,
        name,
        from_release_date,
        to_release_date,
        from_release_version,
        to_release_version,
        release_date,
        release_version,
        type_,
    )

    query = assign_params(
        cve=cve,
        vendor=vendor,
        name=name,
        fromReleaseDate=from_release_date,
        toReleaseDate=to_release_date,
        fromReleaseVersion=from_release_version,
        toRelaseVersion=to_release_version,
        releaseDate=release_date,
        releaseVersion=release_version,
        type=type_,
        offset=offset,
        limit=limit,
    )

    command_results_list: List[CommandResults] = []

    try:
        response = client.threat_search_request(args=query)
    except DemistoException as err:
        if err.res is not None and err.res.status_code == 404:
            response = {}
            readable_output = "There is no information for your search."
            command_results_list.append(CommandResults(readable_output=readable_output))
        else:
            raise

    if response:
        command_results_list.extend(parse_resp_by_type(response, True))
    return command_results_list


def atp_batch_report_command(client: Client, args: Dict) -> List[CommandResults]:  # pragma: no cover
    report_ids = argToList(args.get("report_id"))

    command_results_list: List[CommandResults] = []

    if report_ids:
        demisto.debug(f"Requesting report IDs: {report_ids}")
        try:
            response = client.atp_batch_report_request(args="id", value=report_ids)
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                readable_output = f"There is no information about the {report_ids!s}"
                command_results_list.append(CommandResults(readable_output=readable_output))
            else:
                raise

        if response:
            report_infos: List[dict] = response.get("data", {}).get("reports", {}).get("reports", [])
            for idx, report_info in enumerate(report_infos):
                demisto.debug(f"Processing report {idx + 1}/{len(report_infos)}: {report_info.get('report_id', 'unknown')}")
                readable_output = tableToMarkdown(
                    name=f"Advanced Threat Prevention Report ID: {report_info.get('report_id')}:",
                    t=report_info,
                    removeNull=True,
                )
                command_results_list.append(
                    CommandResults(
                        outputs_prefix="ThreatVault.ATP.Report",
                        readable_output=readable_output,
                        # outputs_key_field="sha256",
                        outputs=report_info,
                    )
                )

            demisto.debug(f"Successfully processed {len(command_results_list)} reports")
    return command_results_list


def atp_report_pcap_command(client: Client, args: Dict) -> List[CommandResults]:  # pragma: no cover
    report_id = args.get("report_id")

    if report_id:
        query = assign_params(id=report_id)

        command_results_list: List[CommandResults] = []

        try:
            response = client.atp_report_pcap_request(args=query)
            response_data_headers = json.loads(json.dumps(dict(response.headers)))  # type: ignore
            response_content = response.content  # type: ignore

        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                response = {}
                readable_output = f"There is no information about the {report_id!s}"
                command_results_list.append(CommandResults(readable_output=readable_output))
            else:
                raise

        # check for octet-stream response for PCAP
        if response_data_headers.get("Content-Type") == "application/octet-stream":
            # set the pcap filename to the report_id.pcap
            pcap_name = report_id + ".pcap"

            # write the file prperties to the context
            return_results(fileResult(pcap_name, response_content))

            ec = {"ID": report_id, "Name": pcap_name}

            readable_output = tableToMarkdown(
                name="Advanced Threat Prevention PCAP Download:",
                t=ec,
                removeNull=True,
            )
            command_results_list.append(
                CommandResults(
                    outputs_prefix="ThreatVault.ATP.PCAP",
                    readable_output=readable_output,
                    # outputs_key_field="sha256",
                    outputs=ec,
                )
            )
        else:
            return_results(
                {
                    "Type": entryTypes["note"],
                    "ContentsFormat": formats["text"],
                    "Contents": f"No PCAP response for ID: {report_id!s}",
                }
            )

    return command_results_list


"""
FETCH INCIDENT
"""


def fetch_incidents(client: Client, args: dict) -> List:
    """
    Retrieving release notes that contain all the information about vulnerabilities, antivirus, spyware, and more.
    """

    last_run = demisto.getLastRun()
    first_fetch = args.get("first_fetch", "3 Days")
    if not last_run.get("scound_fetch"):
        if first_fetch.strip().split(" ")[1].lower() not in frozenset(
            ("days", "month", "months", "year", "years")
        ):  # only these are allowed
            raise ValueError("The unit of date_range is invalid. Must be days, months or years.")
        start_time, now = parse_date_range(first_fetch)
    else:
        _, now = parse_date_range(first_fetch)
        start_time = now

    current = start_time.date()
    now = now.date()
    incidents: List[dict] = []
    while current <= now:
        try:
            # Bringing the daily date for the first api call
            demisto.debug(f"Time for request fetch-incidents -> {current}")
            response = client.threat_search_request({"releaseDate": current.strftime("%Y-%m-%d")})
        except DemistoException as err:
            if err.res is not None and err.res.status_code == 404:
                current += timedelta(days=1)
                continue
            else:
                raise

        if keys_of_resp := tuple({"spyware", "vulnerability", "fileformat", "antivirus"}.intersection(response["data"].keys())):
            # The version of the release notes for the second API call can be extracted
            try:
                number_version = response["data"][keys_of_resp[0]][0]["latest_release_version"]
            except KeyError as err:
                raise Exception(f"Error parsing release note latest_release_version: {err!s}")
            # The API is called by the version number
            release = client.release_notes_get_request("content", number_version)

            # Adds source name to the incident
            release["data"][0]["Source name"] = "THREAT VAULT - RELEASE NOTES"

            # Incident organization and arrangement
            incidents.append(
                {
                    "name": f"ThreatVault Release {release['data'][0]['release_version']}",
                    "occurred": release["data"][0]["release_time"],
                    "rawJSON": json.dumps(release),
                }
            )
        current += timedelta(days=1)

    demisto.setLastRun({"scound_fetch": "true"})
    return incidents


def test_module(client: Client, *_) -> str:
    """Performs basic get request to get ip geo data.

    Args:
        client: Client object with request.

    Returns:
        string.
    """

    client.threat_search_request({"type": "ips"})
    return "ok"


def main():
    params = demisto.params()
    """PARAMS"""
    base_url = params.get("url", "") + "service/v1/"
    api_key = params.get("credentials", {}).get("password")
    verify = not params.get("insecure", False)
    proxy = params.get("proxy")
    reliability = params.get("integrationReliability", "D - Not usually reliable")

    if not DBotScoreReliability.is_valid_type(reliability):
        raise Exception("Please provide a valid value for the Source Reliability parameter.")

    try:
        command = demisto.command()
        demisto.debug(f"Command being called is {demisto.command()}")
        client = Client(
            base_url=base_url,
            api_key=api_key,
            verify=verify,
            proxy=proxy,
            reliability=reliability,
        )

        commands = {
            "file": file_command,
            "cve": cve_command,
            "ip": ip_command,
            "threatvault-threat-signature-get": threat_signature_get_command,
            "threatvault-release-note-get": release_note_get_command,
            "threatvault-threat-batch-search": threat_batch_search_command,
            "threatvault-threat-search": threat_search_command,
            "threatvault-atp-batch-report-get": atp_batch_report_command,
            "threatvault-atp-report-pcap-get": atp_report_pcap_command,
        }

        if demisto.command() == "test-module":
            # This is the call made when pressing the integration Test button.
            return_results(test_module(client))

        elif command == "fetch-incidents":
            incidents = fetch_incidents(client, params)
            demisto.incidents(incidents)

        elif command in commands:
            return_results(commands[command](client, demisto.args()))
        else:
            raise NotImplementedError(f'Command "{command}" was not implemented.')

    except Exception as err:
        demisto.error(traceback.format_exc())  # print the traceback
        return_error(f"Failed to execute {command} command.\nError:\n{err!s}")


if __name__ in ("__main__", "__builtin__", "builtins"):
    main()