مرحبًا بكم في Virustotal CLI ، وهي أداة مصممة لأولئك الذين يحبون كل من واجهات خطوط الخط والقيادة. باستخدام هذه الأداة ، يمكنك القيام بكل ما يمكنك القيام به عادةً باستخدام صفحة الويب الخاصة بـ Virustotal ، بما في ذلك:
وأكثر من ذلك بكثير ...
نظرًا لأن هذه الأداة تستخدم واجهة برمجة تطبيقات virustotal تحت الغطاء ، فستحتاج إلى مفتاح API في virustotal. من خلال الاشتراك مع Virustotal ، ستتلقى مفتاح API مجانيًا ، ومع ذلك ، فإن مفاتيح API المجانية لديها كمية محدودة من الطلبات في الدقيقة ، ولا يمكنهم الوصول إلى بعض الميزات المتميزة مثل عمليات البحث وتنزيلات الملفات. إذا كنت مهتمًا باستخدام هذه الميزات المتميزة ، فيرجى الاتصال بنا.
هناك طريقتان لتثبيت الأداة: باستخدام إحدى الثنائيات المسبقة مسبقًا أو عن طريق بنك بنفسك.
يمكن العثور على الثنائيات المسبقة مسبقًا على صفحة الإصدارات. هناك ثنائيات لنظام التشغيل Windows و Linux و Mac OS X. لاستخدامها ، فقط قم بتنزيل الملف ، وإلغاء ضغطه ووضعه في دليل تعتقد أنه أكثر ملاءمة للاستخدام.
لتجميع البرنامج ، ستحتاج إلى GO 1.14.x أو مثبت أعلى في نظامك واكتب الأوامر التالية:
$ git clone https://github.com/VirusTotal/vt-cli
$ cd vt-cli
$ make install
ملاحظة: من أجل استخدام vt
Binary ، تأكد من أن GOBIN
جزء من متغير ENV PATH
الخاص بك:
$ export GOBIN= ` go env GOPATH ` /bin
$ export PATH= $PATH : $GOBIN
لمستخدمي نظام التشغيل Mac OS ، هناك صيغة مشروب متاحة. يرجى ملاحظة أن هذا لا يتم الحفاظ عليه بواسطة Virustotal.
$ brew install virustotal-cli
بالنسبة لمستخدمي Windows ، هناك بيان Winget متاح. يرجى ملاحظة أن هذا لا يتم الحفاظ عليه بواسطة Virustotal.
winget install VirusTotal.vt - cli
يتم دعم الشوكولاتة أيضًا (لا يتم الحفاظ عليها أيضًا بواسطة Virustotal):
choco install vt - cli
إذا كنت تخطط لاستخدام vt-cli
في Windows بشكل منتظم ، فإننا نوصيك بشدة بتجنب وحدة تحكم Windows القياسية واستخدام Cygwin بدلاً من ذلك. تكون وحدة التحكم في Windows بطيئة جدًا عند طباعة كميات كبيرة من النص (كما يفعل vt-cli
عادةً) بينما يعمل Cygwin بشكل أفضل. بالإضافة إلى ذلك ، يمكنك الاستفادة من دعم Cygwin لإكمال الأوامر التلقائية ، وهي ميزة مفيدة لا توفرها وحدة التحكم Windows. من أجل الاستفادة من الإكمال التلقائي ، تأكد من تضمين حزمة bash-completion
أثناء تثبيت Cygwin.
بمجرد تثبيت أداة VT-Cli ، قد ترغب في تكوينها باستخدام مفتاح API الخاص بك. هذا ليس ضروريًا تمامًا ، حيث يمكنك توفير مفتاح API الخاص بك في كل مرة تستدعي الأداة باستخدام الخيار --apikey
( -k
في شكل قصير) ، ولكن هذا قليلاً من المتاعب إذا كنت ستستخدم الأداة بشكل متكرر (ونراهن أنك ستفعل!). لتكوين مفتاح API الخاص بك فقط اكتب:
$ vt init
سيطلب هذا الأمر مفتاح API الخاص بك ، وحفظه في ملف التكوين في الدليل الرئيسي الخاص بك (~/.vt.toml). يمكنك أيضًا تحديد مفتاح API الخاص بك باستخدام متغير بيئة VTCLI_APIKEY
. إذا قمت بتحديد مفتاح API الخاص بك بطرق متعددة ، فسيكون للخيار --apikey
الأسبقية ، يليه متغير بيئة VTCLI_APIKEY
، سيتم استخدام مفتاح API في ملف التكوين كمنزل آخر.
إذا كنت وراء وكيل HTTP ، فيمكنك إخبار vt-cli
وهو عنوان خادم الوكيل الخاص بك بطرق متعددة. يستخدم المرء خيار --proxy
، مثل في:
$ vt --proxy http://myproxy.com:1234 < command >
يمكنك أيضًا استخدام متغير بيئة VTCLI_PROXY
، أو إضافة السطر التالي إلى ملف التكوين:
proxy= " http://myproxy.com:1234 "
إذا كنت ستستخدم هذه الأداة بشكل متكرر ، فقد ترغب في الحصول على الإكمال التلقائي. يوفر كل من الوقت الثمين وضغط المفاتيح. لاحظ أنه يجب عليك تكوين API كما هو موضح في القسم السابق قبل اتباع الخطوات المذكورة أدناه. واجهة برمجة التطبيقات ضرورية لتحديد الأوامر التي ستتمكن من الوصول إليها.
لينكس:
$ 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
أضف الأسطر التالية إلى ~/.bash_profile
:
if [ -f $( brew --prefix ) /etc/bash_completion ] ; then
. $( brew --prefix ) /etc/bash_completion
fi
Cygwin:
تأكد من تثبيت حزمة bash-completion
(لا يقوم Cygwin بتثبيتها افتراضيًا) واكتب:
$ vt completion bash > /usr/share/bash-completion/completions/vt
❗ قد تحتاج إلى إعادة تشغيل قذيتك حتى يتم الإكمال التلقائي لبدء العمل.
يجب وضع البرنامج النصي للإخراج من vt completion zsh
في مكان ما تحت دليل $fpath
. على سبيل المثال ، دليل .oh-my-zsh/completions
:
$ mkdir /Users/ $USERNAME /.oh-my-zsh/completions
$ vt completion zsh > /Users/ $USERNAME /.oh-my-zsh/completions/_vt
أعد تشغيل القشرة.
احصل على معلومات حول ملف:
$ vt file 8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
احصل على معلومات حول ملف بتنسيق JSON:
$ vt file 8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85 --format json
احصل على تقرير تحليل محدد لملف:
$ # 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 "
قم بتنزيل الملفات التي تم إعطاؤها قائمة بالتجزئة في ملف نصي ، تجزئة واحدة لكل سطر:
$ cat /path/list_of_hashes.txt | vt download -
احصل على معلومات حول عنوان URL:
$ vt url http://www.virustotal.com
احصل على عنوان IP الذي يخدم عنوان URL:
$ vt url last_serving_ip_address http://www.virustotal.com
ابحث عن الملفات:
$ vt search " positives:5+ type:pdf "
مسح ملف:
$ 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 "
اكتشاف التصدير وعلامات الملفات من البحث بتنسيق CSV:
$ vt search " positives:5+ type:pdf " -i sha256,last_analysis_stats.malicious,tags --format csv
تصدير الاكتشافات وعلامات الملفات من البحث في تنسيق JSON:
$ vt search " positives:5+ type:pdf " -i sha256,last_analysis_stats.malicious,tags --format json
عندما تطلب معلومات حول ملف أو عنوان URL أو المجال أو عنوان IP أو أي كائن آخر في Virustotal ، تحصل على الكثير من البيانات (افتراضيًا بتنسيق Yaml) التي عادة ما تكون أكثر مما تحتاجه. يمكنك تضييق المعلومات الموضحة بواسطة أداة VT -Cli باستخدام خيارات سطر الأوامر --include
-in --exclude
( -i
و -x
في شكل قصير).
تقبل هذه الخيارات الأنماط التي تتم مطابقة الحقول التي تقوم بتأليف البيانات ، وتسمح لك بتضمين مجموعة فرعية فقط منها ، أو استبعاد أي مجال غير مثير للاهتمام بالنسبة لك. دعونا نرى كيف يعمل باستخدام البيانات التي لدينا حول http://www.virustotal.com
كمثال:
$ 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
لاحظ أن البيانات التي تم إرجاعها عادة ما تتبع بنية هرمية ، مع بعض الحقول ذات المستوى الأعلى والتي قد تحتوي على حقول فرعية يمكن أن تحتوي بدورها على حقولها الفرعية. في المثال المذكور أعلاه last_http_response_headers
فإن age
الفرعي ، cache-control
، content-length
وما إلى ذلك ، في حين أن total_votes
له harmless
malicious
. للإشارة إلى حقل معين داخل التسلسل الهرمي ، يمكننا استخدام مسار ، على غرار كيفية تحديد ملف في أجهزة الكمبيوتر الخاصة بنا ، ولكن في هذه الحالة ، سنستخدم حرف DOT (.) كفاصل لمكونات المسار ، بدلاً من ذلك من القطع المائلة (أو التراجعات المتخلفة) المستخدمة من قبل معظم أنظمة الملفات. المسارات التالية هي مسارات صالحة لهيكل المثال لدينا:
last_http_response_headers.age
total_votes.harmless
last_analysis_results.ADMINUSLabs.category
last_analysis_results.ADMINUSLabs.engine_name
إن المرشحات المقبولة من قبل كل من --include
- --exclude
هي مسارات يمكننا من خلالها استخدام *
و **
كأصحاب نائب لعناصر المسار الواحدة والعديد من المسارات على التوالي. على سبيل المثال foo.*
يتطابق مع foo.bar
ولكن ليس foo.bar.baz
، بينما foo.**
يطابق foo.bar
و foo.bar.baz
و foo.bar.baz.qux
. foo.baz.qux
foo.**.qux
أخرى foo.bar.qux
foo.*.qux
foo.bar.baz.qux
foo.bar.baz.qux
مسار يبدأ مع foo
وينتهي مع qux
.
بالنسبة للاختيار الكرز فقط الحقول التي تريدها ، يجب عليك استخدام --include
متبوعًا بنمط مسار كما هو موضح أعلاه. يمكنك أيضًا تضمين أكثر من نمط واحد إما باستخدام الوسيطة --include
التوسع عدة مرات ، أو باستخدامه مع قائمة من الأنماط المفصلية. الخياران التاليان متكافئان:
$ vt url http://www.virustotal.com --include=reputation --include=total_votes. *
$ vt url http://www.virustotal.com --include=reputation,total_votes. *
هنا لديك أمثلة مختلفة مع مخرجاتها (على افتراض أن vt url http://www.virustotal.com
إرجاع الهيكل الموضح أعلاه):
$ 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 "
لاحظ أيضًا أن _id
و _type
هما أيضًا أسماء الحقول ، وبالتالي يمكنك استخدامها في المرشحات الخاصة بك:
$ 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 "
يعمل الخيار --exclude
بشكل مشابه لـ --include
ولكن بدلاً من تضمين حقول المطابقة في الإخراج ، فإنه يشمل كل شيء باستثناء حقول المطابقة. يمكنك استخدام هذا الخيار عندما تريد الاحتفاظ بمعظم الحقول ، ولكن ترك عدد قليل منها غير مثيرة للاهتمام. إذا كنت تستخدم --include
--exclude
في وقت واحد --include
في العمل أولاً ، بما في ذلك الحقول فقط التي تتطابق مع أنماط --include
، بينما يأتي --exclude
بعد ذلك ، وإزالة أي حقل متبقي يطابق --exclude
أنماط.