Как выявить вредоносные компоненты в установочных скриптах .msi

К вам на стол попал .msi-файл — может быть, от коллеги, может быть, скачанный с какого-то сайта. Вы не уверены, что внутри только то, что заявлено в названии. Хотелось бы запустить его, не опасаясь, что после установки на компьютер появится майнер, бэкдор или кейлоггер. Эта задача решается, и для этого не обязательно быть аналитиком вредоносного ПО с десятилетним стажем. Достаточно знать, куда смотреть и какие инструменты использовать.

Ниже — практический подход: как «вскрыть» msi-пакет, что внутри искать и по каким признакам понять, что что-то пошло не так.

Почему .msi — это не «просто установщик»

Многие воспринимают msi-файл как нечто безобидное: мол, это стандартный формат установки Windows, что тут может быть опасного? Но на деле msi-пакет — это мини-база данных, внутри которой лежат файлы, реестровые записи, ярлыки, службы и, что самое интересное, пользовательские действия (Custom Actions). Именно через Custom Actions запускаются скрипты и исполняемые файлы на этапе установки. Именно туда чаще всего прячут вредоносный код.

Кроме того, msi может запускать через системные механизмы — например, через отложенный запуск с повышенными привилегиями (SYSTEM). Это значит, что вредоносный код внутри установщика может получить больше прав, чем обычный исполняемый файл, запущенный пользователем.

Первый шаг — извлечение содержимого без запуска

Главное правило: никогда не запускайте подозрительный .msi напрямую. Сначала нужно его «разобрать» и посмотреть, что внутри.

Есть несколько способов извлечь содержимое msi-файла без выполнения скриптов установки:

  1. Командная строка msiexec. Откройте командную строку и выполните:

msiexec /a «C:\path\to\file.msi» /qb TARGETDIR=»C:\extracted\msi»

Ключ /a запущает административную установку — файлы извлекаются, но Custom Actions и скрипты не выполняются. Это самый быстрый способ, если у вас уже есть доступ к Windows.

  1. 7-Zip. Большинство современных версий 7-Zip умеют открывать .msi как архивы. Просто кликните правой кнопкой → «Извлечь». Быстро, удобно, но не все внутренние структуры будут видны так явно, как через msiexec.
  2. LessMSI. Бесплатная утилита с графическим интерфейсом, специально созданная для просмотра и извлечения содержимого msi-файлов. Показывает все таблицы внутри пакета, что очень полезно для анализа.

Что искать внутри извлечённого пакета

Когда вы извлекли содержимое, перед вами набор файлов и структура таблиц msi. Вот на что обращать внимание в первую очередь:

1. Таблица CustomAction

Это сердце проблемы. Таблица CustomAction содержит все нестандартные действия, которые выполняются при установке. Откройте msi через LessMSI или Orca (редактор от Microsoft) и найдите эту таблицу.

Насторожитесь, если видите действия с именами вроде:

  • Запуск скриптов (VBScript, JScript) — например, действия с типами 5 или 6 в колонке Type
  • Запуск исполняемых файлов из временных папок
  • Действия, которые ссылаются на файлы с подозрительными именами (случайные строки символов, отсутствие цифровой подписи)
  • Действия с типом 34 — они запускают исполняемый файл из указанной директории, и путь может вести куда угодно

2. Таблица Binary

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

3. Исполняемые файлы в составе пакета

Посмотрите, какие .exe и .dll лежат внутри. Проверьте:

  • Есть ли у них цифровая подпись и от кого она
  • Совпадает ли имя подписанта с тем, кто выпустил основной продукт
  • Не зафиксирован ли этот файл в базах VirusTotal (можно загрузить туда хеш или сам файл)

4. Таблица InstallExecuteSequence

Эта таблица определяет порядок выполнения действий при установке. Если здесь есть ссылки на подозрительные CustomAction, которые выполняются с правами SYSTEM — это красный флаг.

Практический пример анализа

Допустим, у вас есть файл update.msi, который якобы обновляет драйвер. Вы извлекаете его через LessMSI и открываете в Orca.

В таблице CustomAction вы видите запись с именем «LaunchUpdateCheck», тип — 34, исходный файл указан как «Binary._A1B2C3». Экспортируете этот двоичный блок — получаете файл update_check.exe. Загружаете его на VirusTotal — 12 из 70 антивирусов детектируют его как Trojan. При этом сам msi-пакет подписан каким-то левым сертификатом, а имя компании в свойствах пакета не совпадает с тем, кто выпускает драйверы.

Вывод очевиден: не запускать.

Инструменты для анализа

Инструмент Для чего использовать Уровень сложности
LessMSI Просмотр и извлечение содержимого msi без запуска Простой
Orca Редактор таблиц msi от Microsoft, детальный просмотр всех структур Средний
VirusTotal Проверка хешей и файлов по базам десятков антивирусов Простой
7-Zip Быстрое извлечение файлов из msi Простой
PE-sieve / pestudio Анализ извлечённых исполняемых файлов на предмет инжекта, подозрительных импортов Продвинутый
Sandboxie / Any.Run Запуск подозрительного msi в изолированной среде для наблюдения за поведением Средний

Признаки вредоносного msi-пакета

Вот конкретные маркеры, которые должны насторожить:

  • Отсутствие цифровой подписи или подпись от неизвестного издателя
  • Несовпадение имени издателя в свойствах пакета и в цифровой подписи
  • Наличие скриптов (VBS, JS) в таблице Binary или CustomAction
  • Исполняемые файлы с случайными или нечитаемыми именами
  • Ссылки на внешние URL-адреса в скриптах или действиях
  • Действия, которые запускаются с правами SYSTEM (Deferred с NoImpersonate)
  • Файлы, которые записываются в системные директории или автозагрузку
  • Подозрительные записи в реестре, добавляющие новые службы или задачи планировщика

Что делать в зависимости от вашей ситуации

Ситуация 1: Вы получили msi по почте или от третьей стороны и не уверены в его легитимности.

Не запускайте. Извлеките содержимое через msiexec /a или LessMSI, проверьте все исполняемые файлы через VirusTotal, изучите таблицу CustomAction. Если что-то вызывает сомнения — отправьте файл аналитику или используйте песочницу (Any.Run) для наблюдения за поведением.

Ситуация 2: Вы администратор и вам нужно проверить msi перед развёртыванием в корпоративной сети.

Используйте Orca для аудита всех таблиц. Особое внимание — CustomAction, Binary, InstallExecuteSequence. Проверьте все хеши файлов через VirusTotal или корпоративную систему анализа вредоносного ПО. Если пакет не подписан или подписан непонятно кем — это повод не пропускать его в инфраструктуру.

Ситуация 3: msi уже был запущен, и вы подозреваете, что что-то пошло не так.

Проверьте автозагрузку (msconfig или Autoruns от Sysinternals), список служб, задачи планировщика. Сравните текущее состояние с тем, что было до установки. Запустите полное сканирование антивирусом. При серьёзных подозрениях — переустановите систему из доверенного образа.

Частые ошибки при анализе

  • Запуск msi «просто посмотреть». Даже если вы отмените установку на полпути, часть CustomActions уже могла выполниться. Извлекайте содержимое без запуска — через административную установку или архиватор.
  • Проверка только самого msi-файла на VirusTotal. Антивирус может не детектировать сам пакет, но пропустить вредоносный компонент внутри него. Проверяйте все извлечённые файлы отдельно.
  • Игнорирование цифровой подписи. Отсутствие подписи — не гарантия вредоносности, но наличие валидной подписи от известного издателя — хороший знак. Проверяйте не просто наличие подписи, но и её корректность (цепочка сертификатов, срок действия).
  • Уверенность, что «скачал с официального сайта — значит безопасно». Сайты компрометируются, файлы подменяются. Всегда проверяйте хеш-суммы, если они опубликованы, и сравнивайте с тем, что скачали.

Как лучше организовать проверку на постоянной основе

Если вы регулярно работаете с msi-пакетами — особенно в корпоративной среде — имеет смысл выстроить процесс:

  1. Создайте чек-лист проверки: подпись, издатель, хеш, содержимое CustomAction, проверка через VirusTotal.
  2. Автоматизируйте извлечение и проверку хешей через скрипты (PowerShell + командная строка msiexec).
  3. Внедрите правило: msi без подписи от доверенного издателя не запускается без предварительного анализа.
  4. Используйте песочницы для динамического анализа подозрительных пакетов — Any.Run, Hybrid Analysis или собственную изолированную виртуальную машину.

Итог

Выявление вредоносных компонентов в .msi — это не магия, а методичная работа с внутренней структурой пакета. Ключевые шаги: извлечь содержимое без запуска, изучить таблицу CustomAction и Binary, проверить все исполняемые файлы через VirusTotal, обратить внимание на цифровую подпись и соответствие издателя.

Если после анализа остаются хоть малейшие сомнения — не запускайте пакет. Лучше потратить лишние двадцать минут на проверку, чем потом разбираться с последствиями заражения.

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