Membuat Python script untuk berinteraksi dengan VirusTotal API v3 memungkinkan Anda melakukan otomatisasi pemindaian file, pencarian hash, dan analisis URL secara massal tanpa harus melalui antarmuka web. Pendekatan ini sangat krusial bagi analis keamanan siber, administrator sistem, dan pengembang yang ingin mengintegrasikan deteksi malware ke dalam alur kerja CI/CD atau sistem SIEM.
Untuk mulai menggunakan VirusTotal API, Anda memerlukan kunci API (API Key) aktif yang bisa didapatkan secara gratis dengan mendaftar di situs resmi VirusTotal. Batasan akun gratis standar adalah 4 permintaan per menit, yang cukup untuk kebutuhan pengujian dan skrip otomatisasi ringan.
Persiapan Pustaka Python
Sebelum menjalankan skrip, pastikan Anda telah memasang pustaka pihak ketiga yang paling efisien untuk menangani permintaan HTTP, yaitu requests. Pasang melalui terminal menggunakan perintah berikut:
pip install requests
Contoh Python Script: Memeriksa Hash File
Skrip berikut mendemonstrasikan cara memeriksa status keamanan suatu file berdasarkan nilai hash SHA-256 menggunakan endpoint VirusTotal API v3.
import requests
def check_hash_virustotal(file_hash, api_key):
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['data']['attributes']['last_analysis_stats']
print(f"Hasil Analisis untuk Hash: {file_hash}")
print(f"Malicious: {stats.get('malicious', 0)}")
print(f"Suspicious: {stats.get('suspicious', 0)}")
print(f"Harmless: {stats.get('harmless', 0)}")
elif response.status_code == 404:
print("Hash tidak ditemukan di database VirusTotal.")
else:
print(f"Terjadi kesalahan: {response.status_code}")
# Contoh Penggunaan
# API_KEY = "KUNCI_API_ANDA_DI_SINI"
# FILE_HASH = "1f3583d789061614f164b38d70b62e4f07a7269e8024213d2f2fa4f706e2ea8d"
# check_hash_virustotal(FILE_HASH, API_KEY)
Tabel Endpoint Utama VirusTotal API v3
| Fungsi | Metode HTTP | Endpoint API v3 |
|---|---|---|
| Periksa Laporan File (Hash) | GET | /api/v3/files/{id} |
| Unggah File untuk Pemindaian | POST | /api/v3/files |
| Analisis URL | POST | /api/v3/urls |
| Periksa Laporan URL | GET | /api/v3/urls/{id} |
Tips Troubleshooting Lapangan
Ketika menjalankan skrip Python untuk VirusTotal, beberapa kendala umum sering ditemui:
- Error 429 (Too Many Requests): Artinya Anda telah melewati batas kuota API publik (4 request per menit). Tambahkan fungsi
time.sleep(15)di dalam perulangan (loop) skrip Anda. - Error 403 (Forbidden): Kunci API salah atau tidak valid. Periksa kembali string API key yang Anda masukkan pada variabel header.
- ID URL yang Dikodekan: Untuk memeriksa URL, VirusTotal mewajibkan ID URL menggunakan format Base64 yang aman untuk URL (URL-safe Base64) tanpa padding
=.