VirusTotal Attributes Object: Struktur Data API v3

Memahami Objek Atribut dalam VirusTotal API v3

Objek Attributes dalam VirusTotal API v3 adalah wadah data utama yang berisi seluruh metrik, hasil pemindaian mesin antivirus, metadata file, dan analisis perilaku dari suatu entitas (baik itu file, URL, IP address, atau domain). Setiap kali Anda melakukan kueri ke endpoint VirusTotal menggunakan API v3, data inti yang menjelaskan karakteristik objek tersebut selalu dikemas di dalam properti attributes pada JSON response.

Dalam ekosistem VirusTotal, memahami struktur objek ini krusial bagi pengembang SOC (Security Operations Center), analis malware, dan insinyur otomatisasi keamanan yang ingin menguraikan (parsing) hasil deteksi keamanan secara programatis tanpa harus membaca dashboard web secara manual.

Struktur Utama Objek Atribut File

Ketika Anda menganalisis file melalui hash (MD5, SHA-1, SHA-256) pada endpoint /api/v3/files/{id}, objek attributes memuat puluhan field data penting. Berikut adalah matriks komponen kunci yang paling sering diakses dalam pengembangan skrip keamanan.

Nama Atribut (Field) Tipe Data Deskripsi Keterangan
last_analysis_stats Object Ringkasan hasil deteksi dari seluruh vendor (harmless, malicious, suspicious, undetected, timeout).
last_analysis_results Object Hasil detail per vendor antivirus (misal: Kaspersky, Microsoft, Sophos mendeteksi sebagai apa).
sha256 / sha1 / md5 String Kriptografis hash unik dari sampel file yang dianalisis.
size Integer Ukuran file dalam satuan byte.
magic String Identifikasi tipe file berdasarkan magic bytes (misal: PE32 executable, PDF document).
first_submission_date Integer (Epoch) Waktu pertama kali file ini diunggah ke database VirusTotal.
times_submitted Integer Jumlah total file identik yang pernah dikirimkan oleh pengguna lain.
pe_info / elf_info Object Struktur header spesifik biner (jika file berupa executable Windows atau Linux).

Contoh Implementasi Respon JSON

Berikut adalah cuplikan kode nyata dari struktur objek atribut yang dikembalikan oleh server VirusTotal saat melakukan pemanggilan API terhadap file tertentu.

{
  "data": {
    "id": "84c82835a5d21bbcf75a61763d8bab4f52c2e8c64ec3bf8575031b26c61f9349",
    "type": "file",
    "attributes": {
      "size": 102400,
      "sha256": "84c82835a5d21bbcf75a61763d8bab4f52c2e8c64ec3bf8575031b26c61f9349",
      "md5": "d41d8cd98f00b204e9800998ecf8427e",
      "magic": "PE32 executable (GUI) Intel 80386, for MS Windows",
      "last_analysis_stats": {
        "harmless": 0,
        "malicious": 58,
        "suspicious": 2,
        "undetected": 0,
        "timeout": 0
      },
      "times_submitted": 12,
      "first_submission_date": 1672531199
    }
  }
}

Cara Mengambil Atribut dengan Python

Untuk mengekstrak data dari objek atribut ini secara otomatis, Anda dapat menggunakan pustaka requests standar di Python. Pastikan Anda sudah memiliki kunci API yang valid dari akun VirusTotal.

  1. Instal pustaka requests melalui terminal: pip install requests
  2. Gunakan endpoint v3 dengan menyertakan header x-apikey.
  3. Akses kamus data Python pada kunci ['data']['attributes'] untuk membaca metrik keamanan.
import requests

url = "https://www.virustotal.com/api/v3/files/84c82835a5d21bbcf75a61763d8bab4f52c2e8c64ec3bf8575031b26c61f9349"
headers = {
    "accept": "application/json",
    "x-apikey": "KUNCI_API_ANDA_DI_SINI"
}

response = requests.get(url, headers=headers)
if response.status_code == 200:
    data = response.json()
    attributes = data['data']['attributes']
    
    malicious_count = attributes['last_analysis_stats']['malicious']
    file_magic = attributes['magic']
    
    print(f"Jumlah deteksi malware: {malicious_count}")
    print(f"Tipe file: {file_magic}")
else:
    print(f"Gagal mengambil data: {response.status_code}")

Troubleshooting Umum Akses API

Kendala yang sering ditemui pengembang saat memproses objek atribut meliputi:

  • HTTP 403 Forbidden: Kunci API tidak valid atau kuota harian/menit telah habis (terutama pada akun publik gratis yang dibatasi 4 permintaan per menit).
  • KeyError pada Python: File belum pernah dianalisis sebelumnya di database VirusTotal, sehingga beberapa atribut seperti last_analysis_results mungkin belum tersedia sebelum dilakukan pemindaian ulang (re-scan).
  • Format Hash Salah: Pastikan string hash yang dimasukkan dalam URL sesuai dengan standar SHA-256, SHA-1, atau MD5 tanpa karakter spasi tambahan.