Вы скачали программу с неофициального сайта, получили файл по почте или нашли подозрительный .exe на флешке. Запускать страшно — а вдруг внутри спрятан вредоносный скрипт? PowerShell стал излюбленным инструментом злоумышленников: он встроен в Windows, легко маскируется и может загружать что угодно из интернета. Ниже — практические способы проверить исполняемый файл на скрытые PowerShell-команды, от простых до продвинутых.
- Почему PowerShell прячут именно в .exe
- Быстрая проверка: статический анализ без запуска
- 1. Откройте файл в HEX-редакторе
- 2. Используйте Strings для извлечения текста
- 3. Проверьте ресурсы файла
- Динамический анализ: наблюдайте за поведением
- 1. Мониторинг через Process Monitor
- 2. Логирование PowerShell
- 3. Песочница: безопасный запуск
- Автоматизированные инструменты проверки
- Что искать в коде: красные флаги
- Типичные ошибки при проверке
- Как лучше организовать проверку
- Что делать в зависимости от ситуации
- Итог
Почему PowerShell прячут именно в .exe
PowerShell — мощная командная среда Windows. Злоумышленники используют её потому, что:
- она есть на каждом компьютере с Windows;
- позволяет загружать и выполнять код из интернета без сохранения файла на диск;
- легко обходит антивирусы при правильной обфускации;
- может быть встроена прямо в .exe через встроенные ресурсы или скрипты установки.
Типичная схема: запускается легитимный установщик, а в фоне тихо выполняется PowerShell-команда, которая скачивает и запускает вредоносный код. Пользователь видит обычную установку — и не подозревает о подвохе.
Быстрая проверка: статический анализ без запуска
Первый шаг — посмотреть внутрь файла, не запуская его. Это безопасно и часто даёт ответ сразу.
1. Откройте файл в HEX-редакторе
Скачайте HxD (бесплатный) или любой другой HEX-редактор. Откройте подозрительный .exe и поищите строки:
powershellpwsh-enc(закодированная команда)-nop(NoProfile — часто используется в атаках)-w hidden(скрытый запуск)IEX(Invoke-Expression — выполнение строки как кода)DownloadString,DownloadFile,Invoke-WebRequestFromBase64String
Если нашли такие строки — файл почти наверняка запускает PowerShell-скрипт.
2. Используйте Strings для извлечения текста
Утилита strings (входит в Sysinternals Suite) вытаскивает все читаемые строки из бинарного файла:
strings.exe подозрительный_файл.exe | findstr /i "powershell iex download invoke"
Если видите длинные Base64-строки рядом с powershell -enc — это закодированная команда. Её можно декодировать через [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("тут_строка")) в безопасной среде.
3. Проверьте ресурсы файла
Некоторые .exe хранят PowerShell-скрипты как встроенные ресурсы. Откройте файл в Resource Hacker (бесплатный) и посмотрите разделы:
- RCData
- Script
- Custom
Если внутри есть .ps1-файлы или текст с командами PowerShell — это явный признак скрытого скрипта.
Динамический анализ: наблюдайте за поведением
Если статический анализ ничего не дал, но подозрения остались — запустите файл в изолированной среде и посмотрите, что он делает.
1. Мониторинг через Process Monitor
Запустите Process Monitor от Sysinternals, установите фильтр на ваш файл, и запустите его. Смотрите:
- запускается ли
powershell.exeилиpwsh.exeкак дочерний процесс; - какие сетевые подключения устанавливаются;
- какие файлы создаются или изменяются.
Если видите, что .exe запускает PowerShell с подозрительными аргументами — это подтверждение.
2. Логирование PowerShell
Включите расширенное логирование PowerShell на время проверки:
- Group Policy → Administrative Templates → Windows Components → Windows PowerShell → Turn on Module Logging и Turn on PowerShell Script Block Logging;
- или через реестр:
HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging→ включитеEnableScriptBlockLogging.
После запуска файла проверьте Event Viewer → Applications and Services Logs → Microsoft → Windows → PowerShell → Operational. Там будут все выполненные команды.
3. Песочница: безопасный запуск
Для анализа используйте изолированную среду:
- Windows Sandbox (встроен в Pro/Enterprise);
- VirtualBox или VMware с снапшотом;
- Any.Run или Hybrid Analysis — онлайн-песочницы с мониторингом поведения.
В песочнице можно безопасно запустить файл и увидеть все его действия.
Автоматизированные инструменты проверки
| Инструмент | Что делает | Когда использовать |
|---|---|---|
| VirusTotal | Проверяет файл 70+ антивирусами, показывает поведение в песочнице | Первая быстрая проверка любого файла |
| PEStudio | Анализирует структуру PE-файла, ищет подозрительные импорты и строки | Статический анализ без запуска |
| Detect It Easy (DIE) | Определяет упаковщики, компиляторы, аномалии в структуре | Если файл упакован или обфусцирован |
| PowerShell AST Parser | Разбирает синтаксическое дерево PowerShell-кода | Для анализа извлечённых .ps1-скриптов |
| AMSI (Antimalware Scan Interface) | Встроен в Windows, сканирует скрипты перед выполнением | Для перехвата скриптов в реальном времени |
Что искать в коде: красные флаги
При анализе извлечённого PowerShell-кода обращайте внимание на:
- Обфускация: длинные строки с символами вроде
+,-replace,char[]— попытка скрыть реальные команды; - Загрузка из интернета:
Invoke-WebRequest,Net.WebClient,Start-BitsTransfer; - Выполнение из памяти:
IEX,Invoke-Expression,[Reflection.Assembly]::Load; - Отключение защиты:
Set-MpPreference -DisableRealtimeMonitoring $true,Set-ExecutionPolicy Bypass; - Работа с реестром: автозагрузка через
HKCU\Software\Microsoft\Windows\CurrentVersion\Run; - Base64: длинные строки, которые декодируются перед выполнением.
Типичные ошибки при проверке
- Проверка только антивирусом: свежие вредоносные скрипты часто не детектируются. Антивирус — первый шаг, но не единственный;
- Запуск на рабочей машине: даже если «просто посмотреть» — файл может успеть навредить. Используйте песочницу;
- Игнорирование ложных срабатываний: легитимные программы тоже используют PowerShell (например, установщики, обновление драйверов). Важно отличать нормальное поведение от подозрительного;
- Проверка только расширения: файл может быть переименованным .scr, .bat, .cmd или даже .docx с макросом, который запускает PowerShell;
- Отключение логов «чтобы не замедлять»: без логов вы не увидите, что делал скрипт.
Как лучше организовать проверку
- Первый эшелон: загрузите файл на VirusTotal. Если детектируется — не запускайте. Если чисто — идите дальше;
- Статический анализ: откройте в PEStudio и HEX-редакторе, проверьте строки и ресурсы;
- Динамический анализ: запустите в песочнице с Process Monitor и включённым логированием PowerShell;
- Анализ результатов: изучите логи, сетевые подключения, созданные файлы;
- Решение: если нашли скрытый PowerShell — удалите файл, проверьте систему на изменения.
Что делать в зависимости от ситуации
Если вы обычный пользователь и нашли подозрительный файл: не запускайте его. Проверьте через VirusTotal. Если есть сомнения — удалите и скачайте программу с официального сайта.
Если вы системный администратор и проверяете файл от пользователя: используйте песочницу и Process Monitor. Включите логирование PowerShell на время анализа. Задокументируйте результаты.
Если вы аналитик безопасности: используйте полный цикл — от статического анализа до динамического в изолированной среде. Обратите внимание на AMSI-обходы и обфускацию.
Если файл уже запущен и вы подозреваете компрометацию: немедленно отключите машину от сети, проверьте автозагрузку, запущенные процессы PowerShell, и просканируйте систему антивирусом с обновлением.
Итог
Проверка .exe на скрытые PowerShell-скрипты — это многоуровневый процесс. Начните с быстрой проверки через VirusTotal и анализа строк в HEX-редакторе. Если подозрения остались — используйте песочницу с мониторингом процессов и включённым логированием PowerShell. Не полагайтесь только на антивирус — он не видит всё. Главное правило: никогда не запускайте подозрительный файл на рабочей машине. Лучше потратить 15 минут на анализ, чем потом восстанавливать систему.
