Pengantar VirusTotal Intelligence API
VirusTotal Intelligence API memberikan akses terprogram penuh ke kumpulan data ancaman siber global milik VirusTotal. Endpoint ini memungkinkan sistem keamanan otomatis, Security Operations Center (SOC), dan peneliti malware untuk mencari sampel file, domain, IP address, dan URL menggunakan sintaks kueri tingkat lanjut secara real-time tanpa melalui antarmuka web.
Autentikasi dan Endpoint Dasar
Seluruh permintaan ke VirusTotal API v3 memerlukan header x-apikey yang berisi kunci API valid milik akun berlisensi Intelligence. Batas rate limit dan kuota bergantung pada tier langganan akun Anda (Community vs. Intelligence Commercial).
| Parameter | Nilai / Deskripsi |
|---|---|
| Base URL | https://www.virustotal.com/api/v3 |
| Metode Autentikasi | Header: x-apikey: YOUR_API_KEY |
| Endpoint Pencarian File | GET /intelligence/search?query={query}&limit={limit} |
| Endpoint Laporan File | GET /files/{id} |
Sintaks Kueri Intelligence (Search Modifiers)
Pencarian pada endpoint Intelligence menggunakan modifier khusus untuk memfilter atribut file, perilaku sandbox, tanda tangan digital, dan hasil mesin antivirus.
| Modifier | Contoh Penggunaan | Fungsi Utama |
|---|---|---|
positives: |
positives:10+ |
Mencari file yang dideteksi positif oleh minimal 10 AV. |
type: |
type:peexe |
Memfilter jenis file (peexe, android, pdf, office). |
fs: |
fs:2026-01-01+ |
Berdasarkan tanggal pertama kali file terlihat (First Seen). |
tag: |
tag:ransomware |
Mencari file dengan tag tertentu yang disematkan sistem. |
size: |
size:10kb-500kb |
Menentukan rentang ukuran file dalam byte/kilobyte. |
Contoh Implementasi Kode Python
Berikut adalah skrip Python menggunakan pustaka requests untuk melakukan query pencarian file ransomware baru yang muncul dalam 24 jam terakhir.
import requests
API_KEY = "YOUR_INTELLIGENCE_API_KEY"
URL = "https://www.virustotal.com/api/v3/intelligence/search"
headers = {
"x-apikey": API_KEY
}
params = {
"query": "tag:ransomware fs:2026-03-01+",
"limit": 10
}
response = requests.get(URL, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
for item in data.get("data", []):
print(f"ID (SHA256): {item['id']}")
print(f"Type: {item['type']}")
print("-" * 40)
else:
print(f"Error: {response.status_code} - {response.text}")
Panduan Troubleshooting & Rate Limiting
Kendala umum saat mengintegrasikan VirusTotal Intelligence API meliputi:
- HTTP 401 Unauthorized: Pastikan kunci API disematkan dengan benar pada header
x-apikeydan akun masih aktif. - HTTP 429 Too Many Requests: Anda telah melampaui batas kuota per menit atau per hari. Implementasikan logika exponential backoff pada kode Anda.
- Empty Result: Periksa kembali sintaks modifier kueri. Pastikan operator logika seperti
AND,OR, dan tanda kurung digunakan dengan benar jika membuat kueri kompleks.