VirusTotal Operation
The web format of this guide reflects the most current release. Guides for older iterations are available in PDF format.
Integration Details
ThreatQuotient provides the following details for this integration:
Current Integration Version | 3.1.0 |
Compatible with ThreatQ Versions | >= 4.47.0 |
Support Tier | ThreatQ Supported |
Introduction
The VirusTotal operation enriches ThreatQ objects with context obtained from the VirusTotal API.
The operation provides the following actions:
- search_ip - submits IP for analysis.
- search_domain - submits domain for analysis.
- submit_url - submits URL for analysis.
- search_url - retrieves the VirusTotal report for a URL.
- search_hash - submits hash for analysis.
The operation is compatible with the following indicator types:
- MD5
- SHA-1
- SHA-256
- FQDN
- IP Address
- URL
Installation
Perform the following steps to install the integration:
The same steps can be used to upgrade the integration to a new version.
- Log into https://marketplace.threatq.com/.
- Locate and download the integration .whl file.
- Navigate to the integrations management page on your ThreatQ instance.
- Click on the Add New Integration button.
- Upload the integration file using one of the following methods:
- Drag and drop the file into the dialog box
- Select Click to Browse to locate the integration file on your local machine
ThreatQ will inform you if the operation already exists on the platform and will require user confirmation before proceeding. ThreatQ will also inform you if the new version of the operation contains changes to the user configuration. The new user configurations will overwrite the existing ones for the operation and will require user confirmation before proceeding.
The operation is now installed and will be displayed in the ThreatQ UI. You will still need to configure and then enable the operation.
Configuration
ThreatQuotient does not issue API keys for third-party vendors. Contact the specific vendor to obtain API keys and other integration-related credentials.
To configure the integration:
- Navigate to your integrations management page in ThreatQ.
- Select the Operation option from the Type dropdown (optional).
- Click on the integration entry to open its details page.
- Enter the following parameters under the Configuration tab:
Parameter Description API Key Your private or public VirusTotal API Key. Automatically Add Attributes If checked, indicator attributes are added automatically. Automatically Add Indicators If checked, related indicators, along with their attributes, are added automatically. If not checked, the user can select which indicators to be added (without their attributes). - Review any additional settings, make any changes if needed, and click on Save.
- Click on the toggle switch, located above the Additional Information section, to enable it.
Actions
The VirusTotal operation provides the following actions:
Action | Description | Object Type | Object Subtype |
---|---|---|---|
search_ip | Submits IP for analysis. | Indicator | IP |
search_domain | Submits domain for analysis. | Indicator | FQDN |
submit_url | Submits URL for analysis. | Indicator | URL |
search_url | Retrieves the VirusTotal report for a URL. | Indicator | URL |
submit_hash | Submits hash for analysis. | Indicator | MD5, SHA-1, SHA-256 |
search_ip, search_domain, submit_url, search_hash
These actions first call VirusTotal Scan and then retrieves the VirusTotal Report.
search_url
The search_url action retrieves the VirusTotal report if a VirusTotal Scan ID
attribute exists for the URL object.
GET https://www.virustotal.com/api/v3/{vt_collection_name}/{ioc_value}
vt_collection_name
represents the plural form of the object type as it appears in VirusTotal, while ioc_value
represents the actual value of the objects for all indicators except for URLs. The URLs are first encoded to Base64.
Sample Response:
{
"data": {
"attributes": {
"type_description": "DOS EXE",
"tlsh": "T178445B4972A43CF9ECA7C239C657461BEFF27C664630D35F03641A9A4F233A1622E752",
"exiftool": {
"MIMEType": "application/octet-stream",
"FileType": "DOS EXE",
"FileTypeExtension": "exe"
},
"trid": [
{
"file_type": "DOS Executable Generic",
"probability": 100
}
],
"crowdsourced_yara_results": [
{
"description": "Detects Meterpreter Beacon - file K5om.dll",
"source": "https://github.com/Neo23x0/signature-base",
"author": "Florian Roth",
"ruleset_name": "apt_apt19",
"rule_name": "Beacon_K5om",
"ruleset_id": "000f28467c"
}
],
"names": [
"e2f6cdade9be842ebd160634c30f1e16.virus"
],
"last_modification_date": 1654841377,
"type_tag": "mz",
"times_submitted": 1,
"total_votes": {
"harmless": 0,
"malicious": 0
},
"size": 263358,
"popular_threat_classification": {
"suggested_threat_label": "trojan.cobaltstrike",
"popular_threat_category": [
{
"count": 4,
"value": "trojan"
}
],
"popular_threat_name": [
{
"count": 4,
"value": "cobaltstrike"
}
]
},
"last_submission_date": 1653524502,
"last_analysis_results": {
"ClamAV": {
"category": "malicious",
"engine_name": "ClamAV",
"engine_version": "0.105.0.0",
"result": "Win.Trojan.CobaltStrike-8091534-0",
"method": "blacklist",
"engine_update": "20220609"
},
"FireEye": {
"category": "undetected",
"engine_name": "FireEye",
"engine_version": "35.24.1.0",
"result": null,
"method": "blacklist",
"engine_update": "20220610"
}
},
"downloadable": true,
"sha256": "56e784268807ee237adebd98046f0090ceecdfde6d2e1326afd3670e4e3ffd23",
"type_extension": "exe",
"tags": [
"mz"
],
"last_analysis_date": 1654834036,
"unique_sources": 1,
"first_submission_date": 1653524502,
"ssdeep": "3072:3sYckn3Xzq4IDwSK2Mbn/gprEJwJNJsCwQTIfXouPruOOTR09BQYJerCo2e:3sYwjwIGIprEJweGTIDjhOTRqQ8I",
"md5": "e2f6cdade9be842ebd160634c30f1e16",
"sha1": "ccbbc621afe012b358ed2e13875f1581b944dd25",
"magic": "MS-DOS executable, MZ for MS-DOS",
"last_analysis_stats": {
"harmless": 0,
"type-unsupported": 11,
"suspicious": 0,
"confirmed-timeout": 0,
"timeout": 0,
"failure": 2,
"malicious": 5,
"undetected": 54
},
"meaningful_name": "e2f6cdade9be842ebd160634c30f1e16.virus",
"reputation": 0
},
"type": "file",
"id": "56e784268807ee237adebd98046f0090ceecdfde6d2e1326afd3670e4e3ffd23",
"links": {
"self": "https://www.virustotal.com/api/v3/files/56e784268807ee237adebd98046f0090ceecdfde6d2e1326afd3670e4e3ffd23"
}
}
}
ThreatQuotient provides the following default mapping for these actions:
Feed Data Path | ThreatQ Entity | ThreatQ Object Type or Attribute Key | Published Date | Examples | Notes |
---|---|---|---|---|---|
.attributes.last_analysis_ stats.malicious |
Indicator.Attribute | Malicious Count | .attributes.creation_date or .attributes.first_submission_date | 10 | If Malicious Count user option is checked. For all indicator types. |
.attributes.last_analysis_ stats.harmless |
Indicator.Attribute | Harmless Count | .attributes.creation_date or .attributes.first_submission_date | 23 | If Harmless Count user option is checked. For all indicator types. |
.attributes.last_analysis_ stats.suspicious |
Indicator.Attribute | Suspicious Count | .attributes.creation_date or .attributes.first_submission_date | 8 | If Suspicious Count user option is checked. For all indicator types. |
.attributes.last_analysis_ stats.undetected |
Indicator.Attribute | Undetected Count | .attributes.creation_date or .attributes.first_submission_date | 0 | If Undetected Count user option is checked. For all indicator types. |
.attributes.reputation | Indicator.Attribute | Reputation | .attributes.creation_date or .attributes.first_submission_date | 0 | If Basic Properties or Reputation user option is checked. For all indicator types. |
.attributes.last_analysis_ stats.malicious |
Indicator.Attribute | Malicious | .attributes.creation_date or .attributes.first_submission_date | True | If .attributes.last_analysis_stats.malicious is greater or equal then the Malicious Verdict Treshold value. |
.attributes.type_ description |
Indicator.Attribute | File Type | .attributes.creation_date or .attributes.first_submission_date | DOS EXE | For File Hashes. If Basic Properties user option is checked |
.attributes.first_ submission_date |
Indicator.Attribute | First Published Date | .attributes.creation_date or .attributes.first_submission_date | 1581118958 | For File Hashes. If Basic Properties user option is checked |
.attributes.first_ submission_date |
Indicator.Attribute | First Submission Date | .attributes.creation_date or .attributes.first_submission_date | 1581118958 | For URLs. If Basic Properties user option is checked |
.attributes.last_ analysis_results. result |
Indicator.Attribute | Last Analysis Result | .attributes.creation_date or .attributes.first_submission_date | 0 | For File Hashes. If Basic Properties user option is checked. |
.attributes .meaningful_name |
Indicator.Attribute | Meaningful Name | .attributes.creation_date or .attributes.first_submission_date | e2f6cdade9b e842ebd1606 34c30f1e16.virus |
For File Hashes. If Basic Properties user option is checked |
.attributes.md5 | Related Indicator.Value | N/A | .attributes.creation_date or .attributes.first_submission_date | e2f6cdade9be 842ebd160634 c30f1e16 |
For File Hashes. If MD5 user option is checked |
.attributes.md5 | Indicator.Attribute | VirusTotal Link | .attributes.creation_date or .attributes.first_submission_date | e2f6cdade9be84 2ebd160634c30f 1e16 |
For File Hashes. If MD5 user option is checked, formatted as https://www.virustotal.com/gui/file/{.attributes.md5} |
.attributes.sha1 | Related Indicator.Value | N/A | .attributes.creation_date or .attributes.first_submission_date | ccbbc621afe012b3 58ed2e13875f1581 b944dd25 |
For File Hashes. If SHA-1 user option is checked |
.attributes.sha1 | Indicator.Attribute | VirusTotal Link | .attributes.creation_date or .attributes.first_submission_date | ccbbc621afe012b35 8ed2e13875f1581b9 44dd25 |
For File Hashes. If SHA-1 user option is checked, formatted as https://www.virustotal.com/gui/file/{.attributes.sha1} |
.attributes.sha256 | Related Indicator.Value | N/A | .attributes.creation_date or .attributes.first_submission_date | 56e784268807ee237 adebd98046f0090cee cdfde6d2e1326afd36 70e4e3ffd23 |
For File Hashes. If SHA-256 user option is checked |
.attributes.sha256 | Indicator.Attribute | VirusTotal Link | .attributes.creation_date or .attributes.first_submission_date | 56e784268807ee237a debd98046f0090ceecd fde6d2e1326afd3670e 4e3ffd23 |
For File Hashes. If SHA-256 user option is checked, formatted as https://www.virustotal.com/gui/file/{.attributes.sha256} |
.attributes.names[] | Indicator.Attribute | Name | .attributes.creation_date or .attributes.first_submission_date | e2f6cdade9be842ebd1 60634c30f1e16.virus |
For File Hashes. If Names user option is checked |
.attributes.asn | Related Indicator | ASN | .attributes.creation_date or .attributes.first_submission_date | 39798 | For IP Addresses. If Basic Properties user option is checked |
.attributes.as_owner | Indicator.Attribute | AS Owner | .attributes.creation_date or .attributes.first_submission_date | MivoCloud SRL | For IP Addresses. If Basic Properties user option is checked |
.attributes.last_ https_certificate |
Indicator.Attribute | Last SSL certificate | .attributes.creation_date or .attributes.first_submission_date | 1581118958 | For IP Addresses. If Last SSL certificate user option is checked |
IoC Type Mapping
The following tables provides ThreatQ to VirusTotal Collection Name IoC type mapping.
ThreatQ IoC Type | VirusTotal Collection Name |
---|---|
FQDN | domain |
IP Address | ip_addresses |
URL | urls |
MD5, SHA-1, SHA-256 | files |
Supplemental calls
VirusTotal objects contain relationships with other objects in the dataset that can be retrieved using the following endpoint:
GET https://www.virustotal.com/api/v3/{{vt_collection_name}}/{{ioc_value}}/{{relationship}}
Sample Response:
{
"meta": {
"count": 1
},
"data": [
{
"attributes": {
"last_dns_records": [
{
"type": "CNAME",
"value": "rigpriv.com",
"ttl": 599
},
{
"type": "NS",
"value": "jm2.dns.com",
"ttl": 21600
}
],
"jarm": "28d28d28d00028d1ec28d28d28d28de9ab649921aa9add8c37a8978aa3ea88",
"whois": "Creation Date: 2022-06-29T16:00:00Z\nCreation Date: 2022-06-30T02:32:32Z\nDNSSEC: unsigned\nDomain Name: RIGPRIV.COM\nDomain Status: ok https://icann.org/epp#ok\nName Server: JM1.DNS.COM\nName Server: JM2.DNS.COM\nRegistrant City: 7145b6c7c70448a6\nRegistrant Country: CN\nRegistrant Email: 5c0a26a8248bb13fs@\nRegistrant State/Province: 4f3a9c87b8ed6c6a\nRegistrar Abuse Contact Email: domainabuse@35.cn\nRegistrar Abuse Contact Phone: +86.4001353511\nRegistrar Abuse Contact Phone: +86.4006003535\nRegistrar IANA ID: 1316\nRegistrar Registration Expiration Date: 2023-06-30T04:00:00Z\nRegistrar URL: http://www.35.com\nRegistrar WHOIS Server: whois.35.com\nRegistrar: Xiamen 35.Com Technology Co., Ltd\nRegistrar: Xiamen 35.Com Technology Co., Ltd.\nRegistry Domain ID: 2707568686_DOMAIN_COM-VRSN\nRegistry Expiry Date: 2023-06-30T02:32:32Z\nRegistry Registrant ID: Not Available From Registry\nUpdated Date: 2022-06-30T02:43:05Z\nUpdated Date: 2022-08-21T16:00:00Z",
"last_https_certificate_date": 1660080390,
"tags": [],
"popularity_ranks": {},
"last_dns_records_date": 1660080390,
"last_analysis_stats": {
"harmless": 86,
"malicious": 0,
"suspicious": 0,
"undetected": 8,
"timeout": 0
},
"creation_date": 1656556352,
"reputation": 0,
"registrar": "Xiamen 35.Com Technology Co., Ltd",
"last_analysis_results": {
"CMC Threat Intelligence": {
"category": "harmless",
"result": "clean",
"method": "blacklist",
"engine_name": "CMC Threat Intelligence"
}
},
"last_update_date": 1661097600,
"last_modification_date": 1660080390,
"last_https_certificate": {
"size": 1159,
"public_key": {
"ec": {
"oid": "secp256r1",
"pub": "0481596f6c64661ffb6a79fce6cba763d9ee961778b6e21f93eca791db1bb8fa401bbda5b35fc3874e05774448520d600e5f041b35257c4d7b428390afac0d514e"
},
"algorithm": "EC"
},
"thumbprint_sha256": "2a676d52b302af217fd08e64dca3a5635bd8eea0d19ad91a50c518da2e26acc4",
"tags": [],
"cert_signature": {
"signature": "6902093866e2a299575f2c04f852aaf3c2789cf53687873d4e6f599ea9140101e9be50dd8774f01b30115ca721561416a4d03d316b146844a3b819ec235346bb2ddc7cf3a17592a142c6b303080b18cd801d28bf7738ffb3e513059d8c0664783bc7edaf3711c1e6062eb20abedada8c0c8f5b2a1be20519b3056422f3c92b02c4190f649189ea4ed07d2f9e3e87839bb180afe9a81e36f28a826400eee290775b2035bb37b681424d8224e5c8955d5ce21ecf0475a7670f772fe16e5133176fd6dc0cc538c3d459faa72f7ffec06c4c1f9f2578cb168f82c56e10a0ffa77365db3378f6f55fbb1144465011a0cadb2d72658fc59b54958b0f34a89de56d640c",
"signature_algorithm": "sha256RSA"
},
"validity": {
"not_after": "2022-10-20 12:54:43",
"not_before": "2022-07-22 12:54:44"
},
"version": "V3",
"extensions": {
"certificate_policies": [
"2.23.140.1.2.1",
"1.3.6.1.4.1.44947.1.1.1"
],
"extended_key_usage": [
"serverAuth",
"clientAuth"
],
"authority_key_identifier": {
"keyid": "142eb317b75856cbae500940e61faf9d8b14c2c6"
},
"subject_alternative_name": [
"m.rigpriv.com",
"rigpriv.com",
"wap.rigpriv.com",
"www.rigpriv.com"
],
"tags": [],
"subject_key_identifier": "48a87063dd6dc4462b432889e1615c2ce20f118d",
"key_usage": [
"ff"
],
"1.3.6.1.4.1.11129.2.4.2": "0481f100ef007500dfa55eab68824f1f6cadeeb85f4e3e5aeacda212a46a5e8e",
"CA": true,
"ca_information_access": {
"CA Issuers": "http://r3.i.lencr.org/",
"OCSP": "http://r3.o.lencr.org"
}
},
"signature_algorithm": "sha256RSA",
"serial_number": "044be080e3027b8cbf43952e34f00ce03492",
"thumbprint": "de1cabd8d7c8b5e3b9ef2d8899b2f148390fa3d2",
"issuer": {
"C": "US",
"CN": "R3",
"O": "Let's Encrypt"
},
"subject": {
"CN": "m.rigpriv.com"
}
},
"categories": {},
"total_votes": {
"harmless": 0,
"malicious": 0
}
},
"type": "domain",
"id": "wap.rigpriv.com",
"links": {
"self": "https://www.virustotal.com/api/v3/domains/wap.rigpriv.com"
}
}
],
"links": {
"self": "https://www.virustotal.com/api/v3/domains/rigpriv.com/subdomains?limit=10"
}
}
ThreatQuotient provides the following default mapping for this action:
Feed Data Path | ThreatQ Entity | ThreatQ Object Type or Attribute Key | Published Date | Examples | Notes |
---|---|---|---|---|---|
.attributes.url | Related Indicator.Value | N/A | N/A | www.rigpriv.com/ upload |
For URLs relationships |
.attributes.md5 | Related Indicator.Value | N/A | N/A | e2f6cdade9be842 ebd160634c30f1e 16 |
For Referrer MD5 relationship |
.attributes.sha1 | Related Indicator.Value | N/A | N/A | ccbbc621afe012b3 58ed2e13875f1581 b944dd25 |
For Referrer SHA-1 relationship |
.attributes.sha256 | Related Indicator.Value | N/A | N/A | 56e784268807ee23 7adebd98046f0090c eecdfde6d2e1326af d3670e4e3ffd23 |
For Referrer SHA-256 relationship |
.context_attributes.first_seen_date | Indicator.Attribute | Historical SSL certificate | N/A | 1591571057 | For Historical SSL certificate relationship |
.id | Related Indicator.Value | View the Relationships table above | N/A | www.rigpriv.com | For all other relationships |
.attributes.last_dns_records | Related Indicator.Value | IP Address | N/A | N/A | For domains relationships |
Relationships Mapping
The available relationships are shown in the following table:
Virustotal Collection name | virustotal relationship | ThreatQ configuration | Accessibility |
---|---|---|---|
domains | ns_records | FQDNs | VT Premium users only |
domains | soa_records | FQDNs | VT Premium users only |
domains | mx_records | FQDNs | VT Premium users only |
domains | urls | Immediate Parent | Everyone |
domains | parent | Parent | Everyone |
domains | siblings | Siblings | Everyone |
domains | immediate_parent | Immediate Parent | Everyone |
domains | subdomains | Subdomains | Everyone |
domains | urls | URLs | VT Premium users only |
ip_addresses | historical_ssl_certificates | Historical SSL certificates | Everyone |
ip_addresses | urls | URLs | VT Premium users only |
urls | contacted_domains | Contacted Domains | VT Premium users only |
urls | redirecting_urls | Redirecting URLs | VT Premium users only |
urls | referrer_files | Referrer Files | VT Premium users only |
urls | referrer_urls | Referrer URLs | VT Premium users only |
Action Parameters
Each action provides the offers the following configuration parameters:
Parameter | Description |
---|---|
API Key | Private or public VirusTotal API key. |
Automatically add attributes | If checked, Indicator attributes are added automatically. |
Automatically add indicators | If checked, Indicator are added automatically. |
Malicious Verdict Threshold | The minimum number of AV scans reporting the IOC as malicious. Passing this threshold will result in an attribute of "Malicious: True" to be added. |
AV Scan Information | Number of reports from URL scanners marking it as harmless, suspicious, malicious or undetected |
Supporting Context (for File Hash Submission) | Extra information to fetch, File Type, First Published Date, Meaningful Name, Names and VirusTotal Link |
Synonymous Hashes (for File Hash Submission) | Which indicator type should be ingested into ThreatQ for File Hash Submission (MD5, SHA-256, SHA-1) |
Set synonymous hash status to... | The status of the ingested IOCs. |
Supporting Context (for FQDN Submission) | Which data should be used to enrich the IOC for FQDN Submission. |
Relationships (for FQDN Submission) | The Relationships data to be retrieved from VirusTotal (for FQDN Submission). |
Set related indicator status to... | The status of the related indicators (for FQDN, IP Address and URL Submission) |
Supporting Context (for IP Address Submission) | Which data should be used to enrich the IOC for IP Address Submission. |
Relationships (for IP Address Submission) | The Relationships data to be retrieved from VirusTotal (for IP Address Submission). |
Supporting Context (for URL Submission) | Which data should be used to enrich the IOC for URL Submission. |
Relationships (for URL Submission) | The Relationships data to be retrieved from VirusTotal (for URL Submission). |
Change Log
- Version 3.1.0
- Resolved an issue where URLs were ingested instead of the proper IoC types for the FQDN's related IoC.
- Updated the following action names:
- submit_ip is now search_ip
- submit_domain is now search_domain
- submit_hash is now search_hash
- Added a new action: search_url. This action retrieves the VirusTotal report for a URL.
- Updated the
Referrer URL
attribute name.
- Version 3.0.2
- Resolved the following issues:
- no results would be returned for non-malicious IOCs.
- If supporting context endpoints are not licensed, no enrichment would be returned at all.
- (UX issue) when submitting URLs, it would only show the raw response.
- Attribute names for Related Files are now displayed as
Related <hash type>
. - Attribute Redirecting URL now includes the URL value rather than its ID.
- Added an info block when malicious count > 0, but the malicious threshold was not met.
- Renamed attributes to better illustrate what they represent.
- Added support for the
Reputation
attribute.
- Resolved the following issues:
- Version 3.0.1
- Updated the operation for improved reentrancy.
- Version 3.0.0
- Updated the API to match VirusTotal API V3.
- Performed functionality improvements to the actions.
- Performed UI enhancements.
- Version 2.3.0
Submit URL
- FQDN indicators can't be submitted through this action anymoreSubmit IP
-.asn
attribute ingested as ASN indicator- Minor tweaking for ingested attributes
- Version 2.2.2
- Minor UI Enhancements
- Improved error handling
- Removed
.undetected_urls
parsing for IPs and FQDNs - Added
Automatically add attributes
andAutomatically add indicators
user fields
- Version 2.2.1
- Improved enrichment attributes UI formatting
- Version 2.2.0
- Improve UI messages, add new user field, mapping changes
- Version 1.0.0
- Initial release
PDF Guides
Document | ThreatQ Version |
---|---|
VirusTotal Operation Implementation Guide v3.1.0 | 4.47 or Greater |
VirusTotal Operation Implementation Guide v3.0.2 | 4.47 or Greater |
VirusTotal Operation Implementation Guide v3.0.1 | 4.47 or Greater |
VirusTotal Operation Implementation Guide v3.0.0 | 4.47 or Greater |
VirusTotal Operation Implementation Guide v2.3.0 | 4.22 or Greater |
VirusTotal Operation Implementation Guide v2.2.2 | 4.22 or Greater |
VirusTotal Operation Implementation Guide v2.2.1 | 4.22 or Greater |
VirusTotal Operation Implementation Guide v2.2.0 | 4.22 or Greater |
VirusTotal Operation Implementation Guide v2.1.0 | 4.22 or Greater |
VirusTotal Operation Implementation Guide v2.0.0 | 4.22 or Greater |