Script Python Integrasi VirusTotal untuk Cek File dan URL

Integrasi VirusTotal menggunakan skrip Python dilakukan dengan memanfaatkan VirusTotal API v3 untuk mengotomatisasi pemindaian file, pengecekan hash SHA-256, dan analisis URL secara massal. Pendekatan ini memungkinkan pengembang keamanan siber atau administrator sistem untuk memeriksa indikator kompromi (IoC) langsung dari terminal tanpa harus menggunakan antarmuka web manual.

Untuk memulai otomatisasi ini, prasyarat utamanya adalah memiliki akun VirusTotal aktif untuk mendapatkan kunci API (API Key) gratis atau berbayar, serta menginstal pustaka eksternal requests pada lingkungan Python lokal Anda.

Persiapan Lingkungan dan Instalasi Pustaka

Sebelum menjalankan skrip, pastikan Python versi 3.x telah terpasang di sistem operasi Anda. Instal pustaka requests yang digunakan untuk menangani permintaan HTTP GET dan POST ke endpoint API VirusTotal.

pip install requests

Simpan API key Anda secara aman menggunakan variabel lingkungan (environment variables) alih-alih menuliskannya secara langsung (hardcode) di dalam kode sumber untuk menghindari kebocoran kredensial.

Tabel Endpoint Utama VirusTotal API v3

Berikut adalah referensi endpoint resmi VirusTotal API v3 yang sering digunakan dalam pengembangan skrip Python untuk analisis keamanan:

Fungsi Analisis Metode HTTP Endpoint URL API v3
Cek Report Berdasarkan Hash File GET https://www.virustotal.com/api/v3/files/{id}
Kirim dan Pindai URL POST https://www.virustotal.com/api/v3/urls
Cek Report Berdasarkan ID URL GET https://www.virustotal.com/api/v3/analyses/{id}
Kirim File untuk Dipindai (< 32MB) POST https://www.virustotal.com/api/v3/files

Contoh Skrip Python untuk Cek Hash File

Kode di bawah ini menunjukkan cara memeriksa status keamanan suatu file menggunakan nilai hash SHA-256 melalui API v3:

import os
import requests

def check_file_hash(file_hash):
    api_key = os.getenv("VT_API_KEY")
    if not api_key:
        print("Error: Variabel lingkungan VT_API_KEY belum diset.")
        return

    url = f"https://www.virustotal.com/api/v3/files/{file_hash}"
    headers = {
        "accept": "application/json",
        "x-apikey": api_key
    }

    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        result = response.json()
        stats = result.get("data", {}).get("attributes", {}).get("last_analysis_stats", {})
        print(f"Hasil Analisis untuk Hash: {file_hash}")
        print(f"Malicious: {stats.get('malicious', 0)}")
        print(f"Harmless: {stats.get('harmless', 0)}")
        print(f"Suspicious: {stats.get('suspicious', 0)}")
    elif response.status_code == 404:
        print("File dengan hash tersebut tidak ditemukan di database VirusTotal.")
    else:
        print(f"Terjadi kesalahan: {response.status_code}")

if __name__ == "__main__":
    # Contoh hash file eicar test
    sample_hash = "275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f"
    check_file_hash(sample_hash)

Langkah-Langkah Implementasi Teknis

  1. Dapatkan kunci API gratis dari situs resmi VirusTotal dan daftarkan akun Anda.
  2. Atur variabel lingkungan di terminal sistem operasi Anda dengan perintah export VT_API_KEY='kunci_api_anda' (Linux/macOS) atau set VT_API_KEY='kunci_api_anda' (Windows Command Prompt).
  3. Salin kode skrip di atas ke dalam file berformat .py, misalnya vt_check.py.
  4. Jalankan skrip menggunakan perintah terminal: python vt_check.py.

Troubleshooting dan Tips Lapangan

Batasan utama pada akun API VirusTotal gratis (Public API) adalah pembatasan kuota sebanyak 4 permintaan per menit (requests per minute) dan maksimal 500 permintaan per hari. Jika Anda melampaui batas ini, server akan mengembalikan respons kode HTTP 429 (Too Many Requests). Untuk mengatasi hal ini pada skrip pemindaian massal, tambahkan fungsi jeda waktu menggunakan modul time.sleep(15) di setiap iterasi pemanggilan API.