vt-cli - Проверка файлов с помощью Virus Total в терминале Linux
Приветствую!

В этой заметке покажу, как быстро проверить файл через Virus Total прямо из терминала Linux, не залазя в веб-интерфейс.

Введение

Virus Total - это облачный сервис, который проверяет файлы и ссылки через набор антивирусов и поведенческих анализаторов. В веб-интерфейсе можно загружать файлы вручную, но есть и возможность работы из командной строки - утилита vt-cli. Это официальный CLI инструмент от самого Virus Total, написанный на Go, с полной поддержкой всех основных операций: проверка файлов, хешей, URL’ов, включая запрос исторических данных о детекциях.

Вводные данные

В примерах ниже я использовал LMDE 7 (Debian 13) и Linux Mint 22 (Ubuntu 24.04). Версии ПО:

ПОВерсия
Go1.26.5
vt-cli1.3.1
Debian/Ubuntu13/24.04

Получение бесплатного API ключа Virus Total

Прежде всего нужна учётная запись на Virus Total и API ключ.

Переходим на страницу регистрации https://www.virustotal.com/gui/join-us, заполняем форму и подтверждаем email:

После входа в аккаунт заходим в профиль и получаем API ключ:

Скопируйте ключ - он понадобится при инициализации vt-cli.

Установка Go

vt-cli написана на Go, поэтому нужен сам Go! Скачиваем актуальную на момент написания статьи версию с https://go.dev/dl/:

BASH
curl -fsSL -o /tmp/go1.26.5.linux-amd64.tar.gz https://go.dev/dl/go1.26.5.linux-amd64.tar.gz
Нажмите, чтобы развернуть и увидеть больше

Распаковываем в домашнюю директорию с помощью tar:

BASH
tar -C $HOME/.local -xzf /tmp/go1.26.5.linux-amd64.tar.gz
Нажмите, чтобы развернуть и увидеть больше

Добавляем Go в PATH. Если используете zsh (как я):

BASH
echo 'export GOBIN=$HOME/.local/go/bin' >> ~/.zshrc
echo 'export PATH=$PATH:$GOBIN' >> ~/.zshrc

exec zsh
Нажмите, чтобы развернуть и увидеть больше

Если bash - тогда в ~/.bashrc вместо ~/.zshrc.

Проверяем, что Go установился:

BASH
go version
Нажмите, чтобы развернуть и увидеть больше

Если всё нормально, увидим примерно такой вывод:

PLAINTEXT
go version go1.26.5 linux/amd64
Нажмите, чтобы развернуть и увидеть больше

Установка vt-cli

Устанавливаем утилиту через go install. Исходники и документация на GitHub: https://github.com/virustotal/vt-cli.

BASH
go install github.com/VirusTotal/vt-cli/vt@latest
Нажмите, чтобы развернуть и увидеть больше

Проверяем версию:

BASH
vt version
Нажмите, чтобы развернуть и увидеть больше

Инициализируем утилиту и добавляем API ключ. На этом шаге вас попросят ввести ключ, который мы скопировали в аккаунте Virus Total:

BASH
vt init
Нажмите, чтобы развернуть и увидеть больше

После этого ключ сохранится локально в ~/.config/vt/config.json, и vt-cli готова к работе.

Настройка автодополнения в ZSH (опционально)

Если часто используете vt-cli и хотите автодополнения при нажатии Tab, генерируем completion-скрипт для ZSH:

BASH
mkdir -vp $ZSH/completions

vt completion zsh > $ZSH/completions/_vt

exec zsh
Нажмите, чтобы развернуть и увидеть больше

Теперь при вводе vt и нажатии Tab будут подсказываться доступные команды.

Примеры использования

Теперь к самому интересному - как собственно использовать утилиту для проверки файлов из консоли 👨‍💻.

Проверка файла по пути

Самый простой случай - проверить файл, который лежит у вас на диске:

BASH
dd if=/dev/urandom of=./app.bin bs=100K count=3

vt scan file ./app.bin --wait
Нажмите, чтобы развернуть и увидеть больше

Если файл новый и ещё не был в базе Virus Total, утилита его загрузит и запустит проверку. Благодаря ключу --wait результат вернётся сразу после анализа:

Получение результатов анализа

После загрузки файла без --wait он попадает в очередь анализа, а в ответ выводится идентификатор:

Чтобы получить результаты, используем команду с ID анализа:

BASH
vt analysis <ID-анализа>
Нажмите, чтобы развернуть и увидеть больше

Проверка файла по хешу

Если у вас есть SHA-256, MD5 или SHA-1 хеш файла, можно проверить его прямо без загрузки:

BASH
vt file <ХЕШ>
Нажмите, чтобы развернуть и увидеть больше

Например:

BASH
vt file 4ca58a3308c1a5abc7bc4cc4bcb7b6b20e0b9043aee9cd5f4ce43b8da10bdc0d
Нажмите, чтобы развернуть и увидеть больше

Это полезно, если нужно найти старый анализ.

Проверка URL’а

Проверяем безопасность ссылки:

BASH
vt scan url https://r4ven.me
Нажмите, чтобы развернуть и увидеть больше

Команда scan говорит, что мы хотим запустить свежий анализ. Результат вернётся с ID анализа, затем можно запросить результаты той же командой vt analysis или используйте ключ --wait.

Если по URL расположен файл, например Bash скрипт, то воспользовавшись механизмом перенаправления потоков, можно выполнить проверку без его скачивания:

BASH
vt scan file <(curl -Ls https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh) --wait
Нажмите, чтобы развернуть и увидеть больше

Вывод результатов в JSON

По умолчанию vt-cli выводит результаты в человеко-читаемом формате. Если нужно обработать результаты скриптом, используйте флаг --json:

BASH
vt file <ХЕШ> --format=json | jq '.data.attributes.last_analysis_stats'
Нажмите, чтобы развернуть и увидеть больше

Например:

BASH
vt file 4ca58a3308c1a5abc7bc4cc4bcb7b6b20e0b9043aee9cd5f4ce43b8da10bdc0d --format=json | jq '.[0].last_analysis_stats'
Нажмите, чтобы развернуть и увидеть больше

Здесь мы получим JSON со статистикой детекций, и через jq вытащим интересующие нас поля.

JSON
{
  "confirmed-timeout": 0,
  "failure": 1,
  "harmless": 0,
  "malicious": 0,
  "suspicious": 0,
  "timeout": 0,
  "type-unsupported": 13,
  "undetected": 60
}
Нажмите, чтобы развернуть и увидеть больше

Послесловие

vt-cli - удобный инструмент для оперативной работы с потенциально опасными файлами из консоли.

Главный минус тут - это лимит запросов на бесплатном плане (500 в сутки). Для регулярного автоматического скана такого может и не хватить, но для выборочных проверок и тестов вполне себе. У сервиса конечно есть премиум подписка, но это другая история 😉.

Спасибо, что читаете. Помните, вы сами ответственны за свою цифровую безопасность! 🐧

Полезные материалы

Комментарии

Авторские права

Автор: Иван Чёрный

Ссылка: https://r4ven.me/software/vt-cli-proverka-faylov-s-pomoshchyu-virus-total-v-terminale-linux/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша