К вам на стол попал .msi-файл — может быть, от коллеги, может быть, скачанный с какого-то сайта. Вы не уверены, что внутри только то, что заявлено в названии. Хотелось бы запустить его, не опасаясь, что после установки на компьютер появится майнер, бэкдор или кейлоггер. Эта задача решается, и для этого не обязательно быть аналитиком вредоносного ПО с десятилетним стажем. Достаточно знать, куда смотреть и какие инструменты использовать.
Ниже — практический подход: как «вскрыть» msi-пакет, что внутри искать и по каким признакам понять, что что-то пошло не так.
- Почему .msi — это не «просто установщик»
- Первый шаг — извлечение содержимого без запуска
- Что искать внутри извлечённого пакета
- 1. Таблица CustomAction
- 2. Таблица Binary
- 3. Исполняемые файлы в составе пакета
- 4. Таблица InstallExecuteSequence
- Практический пример анализа
- Инструменты для анализа
- Признаки вредоносного msi-пакета
- Что делать в зависимости от вашей ситуации
- Частые ошибки при анализе
- Как лучше организовать проверку на постоянной основе
- Итог
Почему .msi — это не «просто установщик»
Многие воспринимают msi-файл как нечто безобидное: мол, это стандартный формат установки Windows, что тут может быть опасного? Но на деле msi-пакет — это мини-база данных, внутри которой лежат файлы, реестровые записи, ярлыки, службы и, что самое интересное, пользовательские действия (Custom Actions). Именно через Custom Actions запускаются скрипты и исполняемые файлы на этапе установки. Именно туда чаще всего прячут вредоносный код.
Кроме того, msi может запускать через системные механизмы — например, через отложенный запуск с повышенными привилегиями (SYSTEM). Это значит, что вредоносный код внутри установщика может получить больше прав, чем обычный исполняемый файл, запущенный пользователем.
Первый шаг — извлечение содержимого без запуска
Главное правило: никогда не запускайте подозрительный .msi напрямую. Сначала нужно его «разобрать» и посмотреть, что внутри.
Есть несколько способов извлечь содержимое msi-файла без выполнения скриптов установки:
- Командная строка msiexec. Откройте командную строку и выполните:
msiexec /a «C:\path\to\file.msi» /qb TARGETDIR=»C:\extracted\msi»
Ключ /a запущает административную установку — файлы извлекаются, но Custom Actions и скрипты не выполняются. Это самый быстрый способ, если у вас уже есть доступ к Windows.
- 7-Zip. Большинство современных версий 7-Zip умеют открывать .msi как архивы. Просто кликните правой кнопкой → «Извлечь». Быстро, удобно, но не все внутренние структуры будут видны так явно, как через msiexec.
- 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-пакетами — особенно в корпоративной среде — имеет смысл выстроить процесс:
- Создайте чек-лист проверки: подпись, издатель, хеш, содержимое CustomAction, проверка через VirusTotal.
- Автоматизируйте извлечение и проверку хешей через скрипты (PowerShell + командная строка msiexec).
- Внедрите правило: msi без подписи от доверенного издателя не запускается без предварительного анализа.
- Используйте песочницы для динамического анализа подозрительных пакетов — Any.Run, Hybrid Analysis или собственную изолированную виртуальную машину.
Итог
Выявление вредоносных компонентов в .msi — это не магия, а методичная работа с внутренней структурой пакета. Ключевые шаги: извлечь содержимое без запуска, изучить таблицу CustomAction и Binary, проверить все исполняемые файлы через VirusTotal, обратить внимание на цифровую подпись и соответствие издателя.
Если после анализа остаются хоть малейшие сомнения — не запускайте пакет. Лучше потратить лишние двадцать минут на проверку, чем потом разбираться с последствиями заражения.
