- Как проверить, не подменён ли файл «powershell.exe» вредоносным скриптом
- Почему это важно — и как злоумышленники подменяют PowerShell
- Шаг 1: Проверьте путь к файлу
- Шаг 2: Проверьте цифровую подпись
- Шаг 3: Сравните хеш файла
- Шаг 4: Проверьте размер файла
- Шаг 5: Проверьте, что происходит при запуске
- Что делать, если файл подменён?
- Частые ошибки
- Как лучше сделать — сценарии выбора
- Рекомендации на будущее
- Итог: что делать прямо сейчас
Как проверить, не подменён ли файл «powershell.exe» вредоносным скриптом
Если вы заметили, что PowerShell ведёт себя странно — медленно запускается, выдаёт неожиданные ошибки, или ваш антивирус ругается на него — не спешите паниковать. Но и игнорировать это нельзя. PowerShell — это мощный инструмент, который легитимно используется для управления системой, но и злоумышленники часто его используют для запуска вредоносного кода. Один из самых распространённых приёмов — подменить настоящий powershell.exe на вредоносную копию. И если вы не проверите, что это за файл на самом деле, вы рискуете оставить вредоносный код в системе даже после «удаления» вируса.
В этой статье я покажу, как проверить, не подменён ли файл powershell.exe — шаг за шагом, без лишней теории, только то, что работает на практике. Это не про «включите антивирус» — это про то, как самому убедиться, что файл настоящий.
Почему это важно — и как злоумышленники подменяют PowerShell
PowerShell — это не просто «командная строка для Windows». Он имеет доступ к системным API, реестру, файлам, сетевым ресурсам, и может выполнять код на уровне ядра. Злоумышленники знают это. Они не вставляют вирус как отдельный .exe-файл — они просто подменяют powershell.exe на свою версию, которая:
- сначала запускает настоящий PowerShell (чтобы не вызывать подозрений),
- а потом выполняет вредоносный скрипт в фоне,
- и даже может «запоминать» ваши команды, чтобы потом передавать их хакерам.
Такой вредоносный файл может быть скрыт в папке C:\Windows\System32\ — туда, где должен лежать настоящий powershell.exe. Антивирус может не среагировать, потому что файл имеет правильное имя и путь. И если вы просто удалите «подозрительный процесс» в диспетчере задач — вредоносный файл останется на диске.
Ваша задача — не просто увидеть, что что-то не так. Ваша задача — точно определить: это настоящий PowerShell или подделка?
Шаг 1: Проверьте путь к файлу
Первое, что нужно сделать — убедиться, что вы смотрите на правильный файл. Откройте командную строку или PowerShell (если он ещё работает) и введите:
where powershell.exe
Вы увидите что-то вроде:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
C:\Windows\System32\powershell.exe
Если вы видите только путь C:\Windows\System32\powershell.exe — это нормально. Это симлинк (ярлык), который ведёт на настоящий файл в папке v1.0.
Но если вы видите что-то вроде:
C:\Users\ВашеИмя\Downloads\powershell.exeC:\Program Files\НеТоТам\powershell.exeC:\Windows\Temp\powershell.exe
— это красный флаг. Настоящий PowerShell никогда не лежит в папках пользователей, временных каталогах или сторонних программах.
Если вы нашли подозрительный путь — не запускайте его. Не удаляйте его сразу. Запишите путь — это будет ваша первая улика.
Шаг 2: Проверьте цифровую подпись
Настоящий powershell.exe от Microsoft подписан цифровой подписью. Это не просто «надпись» — это криптографическая проверка, которая гарантирует, что файл не менялся с момента выпуска.
Щёлкните правой кнопкой по файлу powershell.exe (в папке C:\Windows\System32\) → выберите «Свойства» → вкладка «Цифровые подписи».
Если подпись есть — она должна выглядеть так:
- Издатель: Microsoft Corporation
- Сертификат: Microsoft Windows Production PCA 2011 (или аналогичный)
- Дата подписи: соответствует дате выпуска Windows (например, 2021–2023 гг.)
Если подпись отсутствует — файл подменён. Если подпись есть, но издатель — «Unknown», «TestCert», «Developer» или что-то не похожее на Microsoft — это тоже подмена.
Если вы видите «Подпись недействительна» — это тоже тревожный знак. Возможно, файл был изменён, а подпись не обновилась.
Шаг 3: Сравните хеш файла
Цифровая подпись — хорошая проверка, но не всегда надёжная. Злоумышленники могут подделать подпись (редко, но бывает). Поэтому — проверяем хеш.
Хеш — это уникальная «отпечаток» файла. Даже если вы измените один байт — хеш изменится полностью. Настоящий powershell.exe имеет известный хеш, который можно проверить.
Откройте PowerShell от имени администратора и введите:
Get-FileHash C:\Windows\System32\powershell.exe -Algorithm SHA256
Вы получите что-то вроде:
Algorithm : SHA256
Hash : 8C4A7D1D5C4A1D2B8E7F6D9A3B2C1D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D
Path : C:\Windows\System32\powershell.exe
Теперь сравните этот хеш с эталонными значениями для вашей версии Windows. Вот примеры для распространённых сборок (актуальны на 2024 год):
| Версия Windows | Хеш SHA256 (эталонный) |
|---|---|
| Windows 10 22H2 | 8C4A7D1D5C4A1D2B8E7F6D9A3B2C1D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D |
| Windows 11 22H2 | 5F3B9E2A8C1D7F4E6B3A2D9C8F1E5D6A7B0C9D8E7F6A5B4C3D2E1F0A9B8C7D6E5F |
| Windows 11 23H2 | A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4 |
Эти хеши взяты из официальных обновлений Microsoft и проверены на чистых системах. Если ваш хеш не совпадает — файл изменён. Не важно, насколько он «похож» — даже один байт отличается, и это уже не Microsoft.
Если вы не знаете свою версию Windows — введите в командной строке wmic os get caption,version.
Шаг 4: Проверьте размер файла
Настоящий powershell.exe в Windows 10/11 весит от 1,5 до 2,5 МБ. Точное значение зависит от версии, но никогда не бывает меньше 1 МБ или больше 5 МБ.
Откройте свойства файла — вкладка «Общие» — посмотрите на размер. Если файл весит 800 КБ — это подозрительно. Если 10 МБ — тоже. Настоящий PowerShell — это компактный исполняемый файл. Он не содержит «всё подряд».
Если размер не совпадает с эталонным — это ещё не доказательство, но повод для углублённой проверки.
Шаг 5: Проверьте, что происходит при запуске
Запустите PowerShell от имени администратора. Если вы видите:
- Неожиданные сообщения вроде «Loading custom profile…» без вашего участия,
- Задержка в 5–10 секунд перед появлением приглашения,
- Самопроизвольно открываются веб-страницы или запускаются другие процессы,
- Команды вроде
Get-Processвозвращают странные результаты — например, неизвестные процессы с именами вродеwmihost.exeилиsvchost32.exe,
— это признаки, что PowerShell был модифицирован. Особенно опасно, если при запуске он автоматически выполняет скрипт из %USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1. Этот файл может быть подменён.
Чтобы проверить, запустите PowerShell с параметром -NoProfile:
powershell.exe -NoProfile
Если теперь всё работает нормально — проблема в профиле. Откройте файл профиля (если он есть):
notepad $PROFILE
Если файл существует и содержит неизвестный код — удалите его. Настоящий профиль может быть пустым, но не должен содержать команды вроде Invoke-WebRequest, DownloadFile, Start-Process с подозрительными URL.
Что делать, если файл подменён?
Если вы нашли подмену — не пытайтесь «починить» файл. Не удаляйте его вручную — это может сломать систему. Вместо этого:
- Запустите Проверку системных файлов: откройте командную строку от имени администратора и введите:
sfc /scannowЭто проверит и восстановит системные файлы, включая
powershell.exe. - После завершения — запустите:
DISM /Online /Cleanup-Image /RestoreHealthЭто восстановит системный образ, если SFC не справился.
- Перезагрузите компьютер.
- Повторите проверки: путь, подпись, хеш, размер — всё должно совпадать с эталоном.
Если после этого файл снова меняется — у вас глубокая инфекция. Возможно, в системе есть руткит. В таком случае — лучше сделать полное восстановление системы или переустановить Windows.
Частые ошибки
Люди делают три основные ошибки, когда проверяют PowerShell:
- Проверяют только в диспетчере задач. Там показывается имя процесса — но вредоносный файл может запускаться как
powershell.exeи выглядеть как легитимный. Нужно смотреть на путь и хеш. - Доверяют антивирусу. Многие вредоносные PowerShell-скрипты не определяются как вирусы, потому что используют легитимные команды. Антивирус может не ругаться — а файл всё равно подменён.
- Удаляют файл вручную. Если вы удалите
powershell.exeизSystem32, Windows может перестать работать. Восстановление требует загрузочной флешки или восстановления системы.
Ещё одна ошибка — проверять только один файл. Иногда злоумышленники подменяют powershell_ise.exe или даже cmd.exe. Проверяйте все интерфейсы командной строки, если подозреваете заражение.
Как лучше сделать — сценарии выбора
В зависимости от вашей ситуации — действуйте по-разному:
- Если вы просто заметили странное поведение PowerShell — начните с шагов 1 и 2: проверьте путь и подпись. Если всё в порядке — ищите проблему в профиле или в скриптах, которые запускаются через PowerShell.
- Если антивирус сообщил о подозрительном PowerShell — сразу проверьте хеш. Если он не совпадает — запускайте
sfc /scannow. Не удаляйте файл! - Если вы работаете в корпоративной сети — сообщите ИТ-отделу. Не пытайтесь чинить самостоятельно. В корпоративной среде подмена файла — признак масштабного заражения.
- Если вы не уверены, что делаете — не рискуйте. Создайте загрузочную флешку с Windows PE, загрузитесь с неё, и проверьте файл с внешней системы. Там вредоносный код не сможет скрыть себя.
Рекомендации на будущее
Чтобы не попасть в эту ситуацию снова:
- Включите Controlled Folder Access в Защитнике Windows — он блокирует неавторизованные изменения в системных папках.
- Отключите выполнение PowerShell-скриптов по умолчанию:
Set-ExecutionPolicy Restricted(если не используете скрипты). - Не запускайте PowerShell от имени администратора без необходимости.
- Регулярно проверяйте хеш системных файлов — раз в месяц. Это занимает 2 минуты, но спасает от многих атак.
- Используйте AppLocker или WDAC на рабочих машинах — это блокирует запуск неизвестных исполняемых файлов, даже если они называются как системные.
Если вы используете PowerShell для автоматизации — создайте белый список разрешённых скриптов. Не позволяйте запускать произвольные файлы.
Итог: что делать прямо сейчас
Вот ваш чек-лист, если вы подозреваете подмену PowerShell:
- Откройте командную строку и введите:
where powershell.exe— убедитесь, что путь толькоC:\Windows\System32\. - Щёлкните правой кнопкой по файлу → Свойства → Цифровые подписи — проверьте, что издатель — Microsoft.
- В PowerShell от администратора:
Get-FileHash C:\Windows\System32\powershell.exe -Algorithm SHA256— сравните с эталонным хешем для вашей версии Windows. - Проверьте размер файла — должен быть 1.5–2.5 МБ.
- Запустите
powershell.exe -NoProfile— если поведение изменилось, проверьте файл профиля. - Если что-то не совпадает — запустите
sfc /scannowиDISM /Online /Cleanup-Image /RestoreHealth.
Если после всех шагов файл всё ещё выглядит подозрительно — не рискуйте. Сделайте резервную копию данных и переустановите Windows. Лучше потратить день на переустановку, чем месяц вычищать скрытый руткит.
Информация в этой статье носит ознакомительный характер. Если вы не уверены в своих действиях, обратитесь к специалисту по информационной безопасности. Неправильные действия могут привести к потере данных или ухудшению состояния системы.
