Automating Malware Analysis with VirusTotal API

Otomatisasi analisis malware menggunakan VirusTotal API memungkinkan tim keamanan siber memproses sampel file, memeriksa hash (MD5, SHA-256), dan mengumpulkan Indikator Kompromi (IOC) secara massal tanpa intervensi manual melalui antarmuka web. Dengan memanfaatkan endpoint VirusTotal v3 berbasis Python, proses deteksi ancaman, pemindaian URL, dan pengambilan laporan perilaku dapat diintegrasikan langsung ke dalam SIEM atau sistem SOAR milik organisasi.

Persiapan Awal & Autentikasi API

Sebelum menjalankan skrip otomatisasi, pastikan Anda telah memiliki akun VirusTotal aktif dan mengambil kunci API (API Key) dari panel profil Anda. Batasi penggunaan skrip sesuai kuota rate limit pada tier gratis (biasanya 4 request per menit dan 500 request per hari) atau gunakan akun berbayar untuk produksi skala enterprise.

Tabel Parameter Utama VirusTotal API v3

Endpoint Metode HTTP Fungsi Utama
/api/v3/files/{id} GET Mengambil laporan analisis berdasarkan hash file (SHA-256/MD5).
/api/v3/files POST Mengunggah sampel file baru untuk dipindai oleh mesin antivirus.
/api/v3/urls POST Mengirim URL mencurigakan untuk dianalisis sistem keamanan.
/api/v3/ip_addresses/{ip} GET Menganalisis reputasi alamat IP terkait aktivitas berbahaya.

Implementasi Skrip Python untuk Cek Hash Malware

Skrip di bawah ini menggunakan pustaka requests untuk memeriksa status hash file terhadap database VirusTotal v3 secara otomatis. Pastikan Anda memasang modul pustaka eksternal dengan perintah pip install requests sebelum mengeksekusi kode.

import requests
import sys

API_KEY = "masukkan_api_key_disini"
HEADER = {
    "x-apikey": API_KEY
}

def check_file_hash(file_hash):
    url = f"https://www.virustotal.com/api/v3/files/{file_hash}"
    response = requests.get(url, headers=HEADER)
    
    if response.status_code == 200:
        result = response.json()
        stats = result['data']['attributes']['last_analysis_stats']
        print(f"[+] Hasil Analisis untuk Hash: {file_hash}")
        print(f"    - Berbahaya (Malicious): {stats['malicious']}")
        print(f"    - Mencurigakan (Suspicious): {stats['suspicious']}")
        print(f"    - Bersih (Undetected): {stats['undetected']}")
    elif response.status_code == 404:
        print("[-] Hash tidak ditemukan di database VirusTotal.")
    else:
        print(f"[!] Terjadi kesalahan kode status: {response.status_code}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Gunakan: python check_vt.py <SHA256_HASH>")
        sys.exit(1)
    
    target_hash = sys.argv[1]
    check_file_hash(target_hash)

Langkah-Langkah Teknis Eksekusi Otomatisasi

  1. Simpan kode skrip di atas dengan nama file check_vt.py di direktori lokal Anda.
  2. Ganti teks masukkan_api_key_disini dengan string kunci API valid yang diperoleh dari dasbor akun Anda.
  3. Buka terminal atau command prompt, lalu jalankan skrip dengan menyertakan argumen hash SHA-256 target:
    python check_vt.py 44d88612fea8a8f36de82e1278abb02f
  4. Amati output terminal yang menampilkan jumlah mesin antivirus yang mendeteksi file tersebut sebagai ancaman.

Troubleshooting & Penanganan Kendala Lapangan

Kesalahan umum yang sering terjadi saat mengintegrasikan VirusTotal API meliputi:

  • HTTP 429 (Too Many Requests): Batas kuota harian atau menit terlampaui. Terapkan jeda waktu (sleep) menggunakan modul time.sleep(15) di dalam perulangan skrip batch Anda.
  • HTTP 403 (Forbidden): Kunci API tidak valid, salah salin, atau masa berlaku akun bermasalah. Verifikasi ulang kredensial di dasbor resmi.
  • Hash Tidak Ditemukan (404): Sampel file belum pernah diunggah atau dipindai di platform publik VirusTotal. Gunakan metode POST untuk mengunggah file secara langsung melalui API jika diperlukan.