Selamat datang di Virustotal CLI, alat yang dirancang untuk mereka yang menyukai antarmuka Virustotal dan baris perintah. Dengan alat ini Anda dapat melakukan semua yang biasanya Anda lakukan menggunakan halaman web Virustotal, termasuk:
Dan banyak lagi ...
Karena alat ini menggunakan API virusotal di bawah kap, Anda akan memerlukan kunci API virusotal. Dengan mendaftar dengan VirusTotal, Anda akan menerima kunci API gratis namun, tombol API gratis memiliki jumlah permintaan terbatas per menit, dan mereka tidak memiliki akses ke beberapa fitur premium seperti pencarian dan unduhan file. Jika Anda tertarik menggunakan fitur premium, silakan hubungi kami.
Ada dua cara untuk memasang alat: dengan menggunakan salah satu binari kami yang telah dikompilasi sebelumnya atau dengan membangunnya sendiri.
Binari yang telah dikompilasi sebelumnya dapat ditemukan di halaman rilis. Ada binari untuk Windows, Linux dan Mac OS X. Untuk menggunakannya, cukup unduh file, mendekompresi dan letakkan di direktori di mana Anda berpikir lebih nyaman untuk digunakan.
Untuk mengkompilasi program, Anda perlu pergi 1.14.x atau lebih tinggi diinstal di sistem Anda dan mengetik perintah berikut:
$ git clone https://github.com/VirusTotal/vt-cli
$ cd vt-cli
$ make install
Catatan: Untuk menggunakan Biner vt
, pastikan GOBIN
adalah bagian dari PATH
Anda, variabel:
$ export GOBIN= ` go env GOPATH ` /bin
$ export PATH= $PATH : $GOBIN
Untuk pengguna Mac OS, ada formula minuman yang tersedia. Harap dicatat ini tidak dipertahankan oleh VirusTotal.
$ brew install virustotal-cli
Untuk pengguna Windows, ada manifes Winget yang tersedia. Harap dicatat ini tidak dipertahankan oleh VirusTotal.
winget install VirusTotal.vt - cli
Cokelat juga didukung (juga tidak dikelola oleh Virustotal):
choco install vt - cli
Jika Anda berencana untuk menggunakan vt-cli
di Windows secara teratur, kami sangat menyarankan Anda menghindari konsol Windows standar dan menggunakan Cygwin sebagai gantinya. Konsol Windows sangat lambat saat mencetak teks dalam jumlah besar (seperti biasanya vt-cli
) sementara Cygwin berkinerja jauh lebih baik. Selain itu, Anda dapat memperoleh manfaat dari dukungan Cygwin untuk pelengkapan otomatis perintah, fitur praktis yang tidak ditawarkan oleh konsol Windows. Untuk memanfaatkan pelengkapan otomatis, pastikan untuk memasukkan paket bash-completion
saat menginstal Cygwin.
Setelah Anda menginstal alat VT-CLI, Anda mungkin ingin mengonfigurasinya dengan kunci API Anda. Ini tidak sepenuhnya diperlukan, karena Anda dapat memberikan kunci API Anda setiap kali Anda memohon alat dengan menggunakan opsi --apikey
( -k
dalam bentuk pendek), tapi itu sedikit repot jika Anda akan sering menggunakan alat ini (Dan kami yakin Anda akan melakukannya!). Untuk mengonfigurasi kunci API Anda, cukup ketik:
$ vt init
Perintah ini akan meminta kunci API Anda, dan menyimpannya ke file konfigurasi di direktori home Anda (~/.vt.toml). Anda juga dapat menentukan kunci API Anda menggunakan variabel lingkungan VTCLI_APIKEY
. Jika Anda menentukan kunci API Anda dalam berbagai cara, opsi --apikey
akan memiliki prioritas tertinggi, diikuti oleh variabel lingkungan VTCLI_APIKEY
, kunci API dalam file konfigurasi akan digunakan sebagai upaya terakhir.
Jika Anda berada di belakang proxy HTTP, Anda dapat memberi tahu vt-cli
yang merupakan alamat server proxy Anda dalam berbagai cara. Salah satunya menggunakan opsi --proxy
, seperti di:
$ vt --proxy http://myproxy.com:1234 < command >
Anda juga dapat menggunakan variabel lingkungan VTCLI_PROXY
, atau menambahkan baris berikut ke file konfigurasi:
proxy= " http://myproxy.com:1234 "
Jika Anda akan sering menggunakan alat ini, Anda mungkin ingin memiliki kelengkapan otomatis. Ini menghemat waktu dan penekanan tombol yang berharga. Namun perhatikan bahwa Anda harus mengonfigurasi API Anda seperti yang dijelaskan di bagian sebelumnya sebelum mengikuti langkah -langkah yang tercantum di bawah ini. API diperlukan untuk menentukan perintah yang akan Anda akses.
Linux:
$ vt completion bash > /etc/bash_completion.d/vt
Mac OS X:
$ brew install bash-completion
$ vt completion bash > $( brew --prefix ) /etc/bash_completion.d/vt
Tambahkan baris berikut ke ~/.bash_profile
:
if [ -f $( brew --prefix ) /etc/bash_completion ] ; then
. $( brew --prefix ) /etc/bash_completion
fi
Cygwin:
Pastikan paket bash-completion
diinstal (Cygwin tidak menginstalnya secara default) dan ketik:
$ vt completion bash > /usr/share/bash-completion/completions/vt
❗ Anda mungkin perlu memulai kembali shell Anda agar pelengkapan otomatis mulai bekerja.
Script output dari vt completion zsh
perlu diletakkan di suatu tempat di bawah direktori $fpath
. Misalnya, direktori .oh-my-zsh/completions
:
$ mkdir /Users/ $USERNAME /.oh-my-zsh/completions
$ vt completion zsh > /Users/ $USERNAME /.oh-my-zsh/completions/_vt
Restart cangkang.
Dapatkan informasi tentang file:
$ vt file 8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
Dapatkan informasi tentang file dalam format JSON:
$ vt file 8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85 --format json
Dapatkan laporan analisis khusus untuk file:
$ # File analysis IDs can be given as `f-<file_SHA256_hash>-<UNIX timestamp>`...
$ vt analysis f-8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85-1546309359
$ # ...or as a Base64 encoded string, retrieved from the `vt scan file` command:
$ vt scan file test.txt
test.txt MDJiY2FiZmZmZmQxNmZlMGZjMjUwZjA4Y2FkOTVlMGM6MTU0NjQ1NDUyMA==
$ vt analysis MDJiY2FiZmZmZmQxNmZlMGZjMjUwZjA4Y2FkOTVlMGM6MTU0NjQ1NDUyMA==
- _id: " MDJiY2FiZmZmZmQxNmZlMGZjMjUwZjA4Y2FkOTVlMGM6MTU0NjQ1NDUyMA== "
_type: " analysis "
date: 1546454520 # 2019-01-02 13:42:00 -0500 EST
stats:
failure: 0
harmless: 0
malicious: 0
suspicious: 0
timeout: 0
type-unsupported: 0
undetected: 0
status: " queued "
Unduh file yang diberikan daftar hash dalam file teks, satu hash per baris:
$ cat /path/list_of_hashes.txt | vt download -
Dapatkan informasi tentang URL:
$ vt url http://www.virustotal.com
Dapatkan alamat IP yang melayani URL:
$ vt url last_serving_ip_address http://www.virustotal.com
Cari file:
$ vt search " positives:5+ type:pdf "
Pindai file:
$ vt scan file < yourfile >
< yourfile > ZDZiOTcxY2JhNDE0MWU5ZWRjN2JjNGQ2NTdhN2VjODU6MTU3MDE3Mjg1NQ==
$ vt analysis ZDZiOTcxY2JhNDE0MWU5ZWRjN2JjNGQ2NTdhN2VjODU6MTU3MDE3Mjg1NQ==
- _id: " ZDZiOTcxY2JhNDE0MWU5ZWRjN2JjNGQ2NTdhN2VjODU6MTU3MDE3Mjg1NQ== "
_type: " analysis "
date: 1570172855 # 2019-10-04 09:07:35 +0200 CEST
stats:
failure: 0
harmless: 0
malicious: 0
suspicious: 0
timeout: 0
type-unsupported: 0
undetected: 0
status: " queued "
Deteksi ekspor dan tag file dari pencarian dalam format CSV:
$ vt search " positives:5+ type:pdf " -i sha256,last_analysis_stats.malicious,tags --format csv
Deteksi ekspor dan tag file dari pencarian dalam format JSON:
$ vt search " positives:5+ type:pdf " -i sha256,last_analysis_stats.malicious,tags --format json
Ketika Anda meminta informasi tentang file, URL, domain, alamat IP atau objek lain di VirusTotal, Anda mendapatkan banyak data (secara default dalam format YAML) yang biasanya lebih dari yang Anda butuhkan. Anda dapat mempersempit informasi yang ditunjukkan oleh alat VT -CLI dengan menggunakan opsi baris perintah --include
--exclude
( -i
dan -x
dalam bentuk pendek).
Opsi -opsi ini menerima pola yang cocok dengan bidang yang menyusun data, dan memungkinkan Anda untuk memasukkan hanya sebagian dari mereka, atau mengecualikan bidang apa pun yang tidak menarik bagi Anda. Mari kita lihat cara kerjanya menggunakan data yang kita miliki tentang http://www.virustotal.com
sebagai contoh:
$ vt url http://www.virustotal.com
- _id: 1db0ad7dbcec0676710ea0eaacd35d5e471d3e11944d53bcbd31f0cbd11bce31
_type: " url "
first_submission_date: 1275391445 # 2010-06-01 13:24:05 +0200 CEST
last_analysis_date: 1532442650 # 2018-07-24 16:30:50 +0200 CEST
last_analysis_results:
ADMINUSLabs:
category: " harmless "
engine_name: " ADMINUSLabs "
result: " clean "
AegisLab WebGuard:
category: " harmless "
engine_name: " AegisLab WebGuard "
result: " clean "
AlienVault:
category: " harmless "
engine_name: " AlienVault "
result: " clean "
last_http_response_code: 200
last_http_response_content_length: 7216
last_http_response_content_sha256: " 7ed66734d9fb8c5a922fffd039c1cd5d85f8c2bb39d14803983528437852ba94 "
last_http_response_headers:
age: " 26 "
cache-control: " public, max-age=60 "
content-length: " 7216 "
content-type: " text/html "
date: " Tue, 24 Jul 2018 14:30:24 GMT "
etag: " " bGPKJQ " "
expires: " Tue, 24 Jul 2018 14:31:24 GMT "
server: " Google Frontend "
x-cloud-trace-context: " 131ac6cb5e2cdb7970d54ee42fd5ce4a "
x-frame-options: " DENY "
last_submission_date: 1532442650 # 2018-07-24 16:30:50 +0200 CEST
private: false
reputation: 1484
times_submitted: 213227
total_votes:
harmless: 660
malicious: 197
Perhatikan bahwa data yang dikembalikan biasanya mengikuti struktur hierarkis, dengan beberapa bidang tingkat atas yang mungkin berisi subbidang yang pada gilirannya dapat berisi subbidang mereka sendiri. Dalam contoh di atas last_http_response_headers
memiliki age
subbidang, cache-control
, content-length
dan sebagainya, sementara total_votes
memiliki harmless
dan malicious
. Untuk mengacu pada bidang tertentu dalam hierarki, kita dapat menggunakan jalur, mirip dengan bagaimana kita mengidentifikasi file di komputer kita, tetapi dalam hal ini, kita akan menggunakan karakter titik (.) Sebagai pemisah untuk komponen jalur, sebagai gantinya dari slash (atau backslash) yang digunakan oleh sebagian besar sistem file. Yang berikut adalah jalur yang valid untuk struktur contoh kami:
last_http_response_headers.age
total_votes.harmless
last_analysis_results.ADMINUSLabs.category
last_analysis_results.ADMINUSLabs.engine_name
Filter yang diterima oleh keduanya --include
dan --exclude
adalah jalur di mana kita dapat menggunakan *
dan **
sebagai placeholder untuk masing -masing satu dan banyak elemen jalur. Misalnya foo.*
Cocok dengan foo.bar
tapi tidak foo.bar.baz
, sementara foo.**
cocok dengan foo.bar
, foo.bar.baz
dan foo.bar.baz.qux
. Di sisi lain, foo.*.qux
cocok dengan foo.bar.qux
dan foo.baz.qux
tetapi tidak foo.bar.baz.qux
, sementara foo.**.qux
cocok dengan foo.bar.baz.qux
dan lainnya Jalur dimulai dengan foo
dan diakhiri dengan qux
.
Untuk memetik ceri hanya bidang yang Anda inginkan, Anda harus menggunakan --include
diikuti oleh pola jalur seperti yang dijelaskan di atas. Anda juga dapat memasukkan lebih dari satu pola baik dengan menggunakan argumen --include
beberapa kali, atau dengan menggunakannya dengan daftar pola yang dipisahkan koma. Dua opsi berikut ini setara:
$ vt url http://www.virustotal.com --include=reputation --include=total_votes. *
$ vt url http://www.virustotal.com --include=reputation,total_votes. *
Di sini Anda memiliki contoh yang berbeda dengan outputnya (dengan asumsi bahwa vt url http://www.virustotal.com
Mengembalikan struktur yang ditunjukkan di atas):
$ vt url http://www.virustotal.com --include=last_http_response_headers.server
- last_http_response_headers:
server: " Google Frontend "
$ vt url http://www.virustotal.com --include=last_http_response_headers. *
- last_http_response_headers:
age: " 26 "
cache-control: " public, max-age=60 "
content-length: " 7216 "
content-type: " text/html "
date: " Tue, 24 Jul 2018 14:30:24 GMT "
etag: " " bGPKJQ " "
expires: " Tue, 24 Jul 2018 14:31:24 GMT "
server: " Google Frontend "
x-cloud-trace-context: " 131ac6cb5e2cdb7970d54ee42fd5ce4a "
x-frame-options: " DENY "
$ vt url http://www.virustotal.com --include=last_analysis_results. **
- last_analysis_results:
ADMINUSLabs:
category: " harmless "
engine_name: " ADMINUSLabs "
result: " clean "
AegisLab WebGuard:
category: " harmless "
engine_name: " AegisLab WebGuard "
result: " clean "
AlienVault:
category: " harmless "
engine_name: " AlienVault "
result: " clean "
$ vt url http://www.virustotal.com --include=last_analysis_results. * .result
- last_analysis_results:
ADMINUSLabs:
result: " clean "
AegisLab WebGuard:
result: " clean "
AlienVault:
result: " clean "
$ vt url http://www.virustotal.com --include= ** .result
- last_analysis_results:
ADMINUSLabs:
result: " clean "
AegisLab WebGuard:
result: " clean "
AlienVault:
result: " clean "
Perhatikan juga bahwa _id
dan _type
juga merupakan nama lapangan dan oleh karena itu Anda dapat menggunakannya di filter Anda:
$ vt url http://www.virustotal.com --include=_id,_type, ** .result
- _id: " 1db0ad7dbcec0676710ea0eaacd35d5e471d3e11944d53bcbd31f0cbd11bce31 "
_type: " file "
last_analysis_results:
ADMINUSLabs:
result: " clean "
AegisLab WebGuard:
result: " clean "
AlienVault:
result: " clean "
Opsi --exclude
berfungsi serupa dengan --include
tetapi alih -alih memasukkan bidang yang cocok dalam output, itu termasuk semuanya kecuali bidang yang cocok. Anda dapat menggunakan opsi ini ketika Anda ingin menyimpan sebagian besar bidang, tetapi tinggalkan beberapa dari mereka yang tidak menarik. Jika Anda menggunakan --include
dan --exclude
secara bersamaan --include
masuk beraksi terlebih dahulu, termasuk hanya bidang yang sesuai dengan pola --include
, sementara --exclude
masuk setelah itu, menghapus bidang yang tersisa yang cocok dengan --exclude
pola.