Files
riposte-marketplace/integrations/virustotal-hunting/manifest.yaml
T
Guillaume BOURGEOIS 70dffb3b0a feat: SentinelOne SDL + VirusTotal Hunting integrations
SentinelOne SDL (endpoint): Unified Alerts via the GraphQL API. Alert ingestion
(get_alerts) with rich filtering and an exhaustive OCSF mapper + 'SentinelOne SDL
Alert' default type, full alert details, update (status/verdict/assignee), add
note and trigger mitigation action. ApiToken auth; watermark converted to epoch
ms for the detectedAt filter; alert edges flattened to nodes for ingestion.

VirusTotal Hunting (enrichment, Premium): Livehunt notification-file ingestion
(livehunt_files) with an OCSF mapper + 'VirusTotal Hunting File' default type
(severity bucketed from malicious AV detections), Livehunt notifications listing,
and Retrohunt job + matching-file listing.

The core VT v3 reputation already ships as 'virustotal'; the XSOAR-feed and
Premium file-download/zip/pcap commands were intentionally left out.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 15:34:42 +02:00

94 lines
3.6 KiB
YAML

id: virustotal_hunting
name: VirusTotal Hunting
version: 1.0.0
description: "VirusTotal Hunting (Premium API v3) — ingest Livehunt notification files as findings, list Livehunt notifications, and list finished Retrohunt jobs and their matching files."
changelog: "1.0.0 — Initial release: Livehunt notification-file ingestion (livehunt_files) with an OCSF mapper, Livehunt notifications listing, and Retrohunt job + matching-file listing."
category: enrichment
# Per-instance configuration. Authenticated with a VirusTotal API key (Premium
# subscription required for Hunting features).
config_schema:
properties:
base_url:
type: string
description: "VirusTotal API v3 base URL"
default: https://www.virustotal.com/api/v3
api_key:
type: string
description: "VirusTotal API key (Premium)"
x-soar-sensitive: true
required:
- api_key
auth:
- id: apikey
type: api_key
in: header
name: x-apikey
value_template: "{{secret}}"
secret_field: api_key
commands:
# ── Ingestion ───────────────────────────────────────────────────────────────
- id: livehunt_files
name: vt-livehunt-files
description: "Fetch file objects matched by Livehunt notifications. Used for ingestion: results path = data. Deduplicated by file ID (sha256)."
risk: read
inputs_schema:
properties:
filter: { type: string, description: "Filter on the notification tags / ruleset name (exact name). Leave empty for all." }
limit: { type: number, description: "Maximum number of files to fetch (default 10, max 40)" }
required: []
outputs_schema: { properties: {} }
ingest:
results_path: data
dedup_key: id
- id: livehunt_notifications
name: vt-livehunt-notifications
description: "List Livehunt notifications (metadata), optionally filtered by tag."
risk: read
inputs_schema:
properties:
filter: { type: string, description: "Filter on the notification tags" }
limit: { type: number, description: "Maximum number of notifications (default 10, max 40)" }
required: []
outputs_schema: { properties: {} }
- id: retrohunt_jobs
name: vt-retrohunt-jobs
description: "List Retrohunt jobs (finished by default)."
risk: read
inputs_schema:
properties:
filter: { type: string, description: "Job filter (default status:finished)" }
limit: { type: number, description: "Maximum number of jobs (default 10)" }
required: []
outputs_schema: { properties: {} }
- id: retrohunt_matching_files
name: vt-retrohunt-matching-files
description: "List the files matched by a Retrohunt job."
risk: read
inputs_schema:
properties:
job_id: { type: string, description: "Retrohunt job ID" }
limit: { type: number, description: "Maximum number of files (default 40)" }
required: [job_id]
outputs_schema: { properties: {} }
# ── Connectivity test ─────────────────────────────────────────────────────
- id: test_connection
name: vt-hunting-test-connection
description: "Verify connectivity and credentials (used by the Test button)."
risk: read
inputs_schema:
properties: {}
required: []
outputs_schema: { properties: {} }
ingestion:
command: livehunt_files
mapper: livehunt_files
default_incident_type: "VirusTotal Hunting File"