Уязвимости файлов .msi и что это вообще такое | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Уязвимости файлов .msi и что это вообще такое

tatts

Нейросеть
Автор темы
27 Май 2024
56
292
53
Уязвимости файлов .msi и что это вообще такое :ricardo

1726470249720

Вы, вероятно, довольно часто сталкивались с файлами MSI. Они используются производителями программного обеспечения для предоставления своих программ. Этот формат более удобен, чем стандартный, потому что:
  • Есть возможность восстановления и установки определенных компонентов
  • Хранение данных в хорошо структурированных таблицах, к которым можно легко получить доступ через API-интерфейсы
  • Простое распространение через SCCM, web-endpoints
В файлах MSI могут быть различные уязвимости, большинство из которых приведут к повышению привилегий. К ним относятся как логические уязвимости: перехват DLL/TypeLib/COM/Exe-файла/скрипта/etc , злоупотребление путями.

Формат файла MSI :opop

Сам формат MSI в чем-то похож на базы данных SQL. Внутри файла MSI находятся таблицы с различными данными. Между таблицами существует взаимосвязь. Эта таблица анализируется и используется при установке файла MSI.

ebb78062-939e-4374-bf33-3a1f3e8ec246.png

Отмечу, что таблиц много. Нас интересуют лишь некоторые из них. Полный список таблиц приведен здесь.

специальная таблица, внутри которой расположены ресурсы, используемые приложением (изображения, ярлыки, иконки и т.д.);


  • таблица, указывающая, какие файлы должны быть установлены в системе;
  • таблица, содержащая информацию о структуре папок устанавливаемой программы;
  • таблица, содержащая действия, которые необходимо выполнить во время установки файла MSI (создать ярлык, создать раздел реестра, ввести значение);
  • действия, которые необходимо выполнить в процессе установки, однако, они не могут быть выполнены через Windows Installer API, поэтому используются сторонние программы, DLL-файлы, cmd-команды
Сбор MSI-файлов для анализа :catlove


Вручную

Самый простой способ найти все MSI-файлы - это заглянуть в папку C:\Windows\Installer. Здесь вы обязательно найдете все MSI-файлы программ, установленных на вашем компьютере.

cee6bf86-e0c2-4d26-80e4-41a6b1a0aee5.png

Внутри папки вы можете найти MSI-файлы и другие папки. В других папках часто хранятся различные ресурсы, необходимые для работы с MSI-файлом. Они называются GUID. Этот идентификатор GUID можно увидеть в поле идентификационного номера установленного программного продукта.

Вы можете просмотреть установленные программы и составить сопоставление, используя эти команды:

wmic product identifyingnumber,name,vendor,version

76b46b22-bdf0-4bcf-8d0a-a0bdff7647c6.png

Список установленных продуктов
Вы также можете использовать Powershell и добавить фильтр по программному обеспечению

Get-WmiObject - | ? { $_.Name -like } | select IdentifyingNumber,Name
Инструменты



Конечно, удобнее использовать автоматизированные инструменты для сбора информации и самих MSI-файлов.

  • Эти инструменты можно использовать для поиска файлов msi, затем их загрузки и последующего анализа непосредственно на компьютере злоумышленника для обнаружения повышения привилегий.
  • Отлично подходит для извлечения файлов MSI из SCCM. Например, из точек распространения.
CMLoot — это PowerShell-библиотека, созданная для облегчения поиска интересных файлов, хранящихся на SMB-шарах System Center Configuration Manager (SCCM/CM).
Invoke-CMLootInventory -SCCMHost sccm01.domain.local -Outfile sccmfiles.txt
Invoke- -InventoryFile .\sccmfiles.txt -Extension msi
python-версия CMLoot.


Интернет :smilecat


Вы также можете найти файлы для анализа в Интернете. Например, вы можете воспользоваться Google.

Dorks:

bb6d4722-e753-4a4b-aa07-d320e664cd86.png


Учетные данные :Lll


Самое главное. Внутри файлов MSI можно найти оставшиеся пароли, API-ключи, конечные точки и другие данные, которые могут представлять интерес для злоумышленников. В MyMSIAnalyzer мы выделили класс Cardfinder для обнаружения учетных данных. Поиск учетных данных работает на пределе простоты. Он проверяет все.

a66f1e13-e69c-472d-abab-c509159db43b.png

CredFinder.cs
Поскольку формат MSI близок к формату SQL, вы можете получить все свойства с помощью одного запроса. Однако, если вам нужен переносимый вариант или вы еще не знаете, как компилировать проекты C#, вы можете использовать сценарий Powershell с той же логикой:

$installerPath = "C:\Windows\Installer" $package = New-Object -ComObject WindowsInstaller.Installer { param ( [string]$msiPath ) try { $database = $package.GetType().InvokeMember("OpenDatabase", "InvokeMethod", $null, $package, @($msiPath, 0)) $view = $database.GetType().InvokeMember("OpenView", "InvokeMethod", $null, $database, @("SELECT * FROM Property")) $view.Execute() while ($record = $view.Fetch()) { $property = $record.StringData(1) $value = $record.StringData(2) if ($property -match"USERNAME|PASSWORD|USER|PASS") { Write-Host "File: , Property: , Value: " } } } catch { Write-Host "Error processing file: " -ForegroundColor Red } } Get-ChildItem -Path -Filter *.msi - Recurse | ForEach-Object { AnalyzeMsiFile .FullName}


Режим восстановления MSI :fox


Конечно, внутренние учетные данные MSI можно найти довольно редко. Чаще всего только при анализе Файлов MSI, которые были украдены из SCCM. Поэтому, если мы ищем вектор повышения привилегий, нам нужно проанализировать поведение файла MSI.

И здесь нам нужно ознакомиться с необычной функциональностью: механизмом восстановления файлов MSI.

Механизм восстановления MSI позволяет системе Windows переустановить либо весь продукт, либо отдельные его компоненты. По сути, вы можете исправить программу, если что-то пошло не так во время использования или установки.

Эту функциональность наиболее удобно использовать с помощью инструмента CLI msiexec.

Кроме того, пользовательские действия MSI, созданные разработчиком файла MSI, запускаются в режиме восстановления. Здесь также может быть уязвимость. Если пользовательские действия или весь файл MSI настроен неправильно, процесс восстановления выполняется от имени пользователя NT AUTHORITY\SYSTEM, что позволяет нам повысить привилегии.

Например, если разработчик настроил пользовательские действия на запуск cmd.exe, то во время обычной установки cmd.exe будет запущен от имени текущего пользователя, но во время восстановления он будет запущен от имени системного пользователя (администратора).

Также с помощью пользовательских действий можно запускать некоторые графические приложения от имени системы (администратора), из которых можно сделать аналог обхода, выйти на explorer.exe и запустить cmd.exe из него. cmd.exe будет запущено от имени системы (администратора).

338087a9-45e8-4d18-bd88-edfc390f1ab3.png

ГРАФИЧЕСКИЙ интерфейс в пользовательских действиях
93681be6-ee8d-454f-88d7-26e8f0ceffba.png

Пример злоупотребления в программе установки Internet Explorer
Как это обнаружить?



Давайте начнем с проверки всего файла MSI. Есть только две вещи, которые нам нужно отслеживать:

  • Наличие графического интерфейса, если мы хотим продвигать его с помощью explorer.exe escape.
  • Имя пользователя, от имени которого файл MSI запускается в режиме восстановления, если мы хотим проверить файл на наличие других уязвимостей, таких как перехват библиотеки DLL.
Самый простой способ обнаружить такие MSI-файлы - воспользоваться инструментом Gui Finder

.\GuiFinder C:\Temp


Вывод anime_piy


Файлы MSI довольно часто используются в инфраструктуре Windows. Часто неправильный подход к разработке или развертыванию таких файлов приводит к возможности повышения привилегий на хосте. Поэтому, для разработчиков, которые используют расширение .msi стоит обращать внимание на различные лазейки в своих проектах. Обычным же пользователям при работе с файлами .msi необходимо тщательно их проверять, дабы оставаться в безопасности и сохранить все свои данные.
 
Активность:
Пока что здесь никого нет