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
- Dapatkan kunci API gratis dari situs resmi VirusTotal dan daftarkan akun Anda.
- Atur variabel lingkungan di terminal sistem operasi Anda dengan perintah
export VT_API_KEY='kunci_api_anda'(Linux/macOS) atauset VT_API_KEY='kunci_api_anda'(Windows Command Prompt). - Salin kode skrip di atas ke dalam file berformat
.py, misalnyavt_check.py. - 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.