Как защитить MSI от модификации - PullRequest
1 голос
/ 10 июля 2019

Я бы хотел защитить файл MSI от модификации.Это может быть легко сделано с ORCA или с MSI API.Это печально, потому что любой может изменить / добавить / удалить пользовательские действия или свойства установщика Windows с правами администратора.

Есть ли способ установить MSI-файл в какой-либо режим только для чтения или каким-либо образом защитить его содержимое?

Ответы [ 2 ]

4 голосов
/ 10 июля 2019

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


Прозрачность : MSI-файлы прозрачны по определенной причине - упаковщики корпоративных приложений хотят иметь возможность изменять пакет в соответствии с корпоративными стандартами. Эта прозрачность фактически является основным преимуществом MSI . Поэтому я не стал бы защищать MSI. Скомпилированные пользовательские действия остаются «черным ящиком» (не подлежит проверке, но их можно отключить).

Документация и комментарии : Если ваш MSI имеет настраиваемые действия, которые являются критическими, вы можете указать это «встроенными» комментариями в MSI или, возможно, именем, назначенным для пользовательское действие. Вы также можете доставить одностраничный файл PDF (назовите его Large Scale Deployment Guide.pdf?) Вместе с настройкой, где вы описываете, как лучше развернуть приложение, и, что важно, чего не делать с MSI. Я предпочитаю встраивать этот документ в MSI, так что он поставляется с административной установкой - механизмом извлечения файлов MSI - который увидит упаковщик. Первое, что обычно делает корпоративный упаковщик, - это извлечение файлов из MSI с помощью установки администратора.

Цифровые подписи : Как уже упоминалось другими a цифровая подпись ( подробности из Advanced Installer , (подробности из Installshield ) помогают гарантировать неизменность MSI при доставке клиентам. Это очевидно имеет большое значение с точки зрения безопасности. Это еще более проблематично с новыми функциями, такими как SmartScreen (защита на основе репутации - сертификат подписи кода EV "покупает доверие" - интересная концепция? Кто пахнет ракеткой? :-)). Убедитесь, что ваша установка не содержит вредоносных программ или что цифровой сертификат является доказательством того, что вы доставили вредоносное ПО (до тех пор, пока оно не будет взломано) . И говорить о .... Хммм .

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

  • https://www.virustotal.com (сканирование с использованием ряда программ сканирования на наличие вредоносных программ)
  • https://virusdesk.kaspersky.com (крупный поставщик антивирусов)

Инструмент, такой как Process Explorer из SysInternals также делает его можно сканировать вредоносные процессы, запустив приложение и выбрав Options => VirusTotal.com => Check VirusTotal.com. Видеоруководство здесь (я не слишком много смотрел на него, не знаком с другими обсуждаемыми продуктами). Use this method to save your application from false-positive nightmares (and also for real malware infections of course).

Запуск приложения : Если у вас есть что-то, что вам необходимо запустить, вы можете добавить его в последовательность запуска приложения вместо вашей настройки. Это определенно работает, если вам не нужен админ прав. Если вам нужно что-то написать в HKLM, вы можете открыть ACL write Доступ туда для обычных пользователей - совсем не идеален, но возможен. С кодом запуска приложения проще справиться. Легче отлаживать и никаких проблем подражания, последовательности и обусловленности (когда действие выполняется), как в настройке.

Legacy Setup.exe : если вы настаиваете на выполнении «секретных вещей» в вашей настройке, то вы можете использовать устаревший инструмент, чтобы сделать обычный setup.exe (не MSI). Имейте в виду, что с ужесточением проверок безопасности и обнаружением вредоносных программ ваши настройки могут быть еще более подвержены проблеме ложных срабатываний для обнаружения вредоносных программ. Очень серьезный удар по продаже программного обеспечения. С реальным вредоносным ПО вы говорите клиенту о необходимости восстановления ПК, а при ложном срабатывании вам нужно что-то сделать, чтобы решить проблему. Корпоративное признание также может зависеть от формата MSI или других проверяемых форматов («, который является нашим стандартом »). И вы должны знать, что инструменты захвата в корпоративных настройках увидят, что установка сделала подробно, когда они преобразуют ее в MSI (или другие форматы в наши дни, например, AppV и MSIX).

И еще одна проблема: Кроссплатформенные установщики .

2 голосов
/ 11 июля 2019

Короткий ответ - нет, вы не можете запретить кому-либо редактировать MSI-файл.Существуют различные подходы, которые вы можете использовать, чтобы минимизировать вероятность того, что кто-то это сделает, или подходы, которые увеличивают трудности, связанные с любым редактированием, но вы не можете полностью предотвратить это.

Чтобы ответить на этот вопрос лучше, необходимо уточнить вопросты спрашиваешь.«Защитить» звучит как вопрос безопасности, поэтому помогает создать хотя бы модель угрозы в кресле.Например, вот три вещи, которые вы можете пытаться предотвратить:

  1. заинтересованный пользователь, изменяющий биты, установленные в системе этого пользователя
  2. корпоративный пользователь, изменяющий то, что его системные администраторыустановить на компьютер пользователя
  3. злонамеренную сторону, изменяющую и предоставляющую биты, маскирующиеся под ваше приложение, которые кто-то по ошибке устанавливает

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

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

Так что вы можете сделать?

  • Вы можете подписать MSI.файл.Это оставляет признаки того, что файл был изменен, если это было.Обратите внимание, что преобразования (файлы .mst) могут изменить действия MSI без изменения самого файла;однако это также влияет на представление подписанного статуса.
  • Вы можете попытаться проинформировать своих потенциальных пользователей о важности проверки цифровой подписи, прежде чем принимать приглашение UAC.Это не остановит кого-то, кто пытается подорвать ваше лицензирование, но может помочь кому-то избежать установки вредоносного ПО вместо вашей реальной программы.
  • Вы можете обернуть .msi в подписанную загрузочную версию .exe.Это затрудняет доступ к вещам;Попытки использовать обычные инструменты не будут работать напрямую, а вместо этого потребуют, чтобы изменяющая сторона выяснила, как извлечь файл .msi.Хотя это обычно не очень сложно, это как минимум еще одно препятствие.
  • Вы можете попытаться внедрить проверки подписи в файл .msi.Как вы говорите, их, вероятно, будет легко победить путем дальнейших изменений в MSI-файле, если только вы не сможете связать их с важным и трудным дублированием другого кода.Это, конечно, просто усложняет изменение;но не невозможно.Опять же, вам придется рассмотреть .mst случай, и хотите ли вы поддерживать административные установки и установки из этих кэшей.
  • Вы можете добавить соответствующую подпись или другие проверки в само приложение,Если MSI-файл изменен, но он не меняет то, что установлено на компьютере, заботится ли ваше приложение?Ответ зависит от того, что именно вы пытаетесь защитить;например, это не поможет предотвратить заражение вредоносными программами.
  • Рассмотрите другие варианты упаковки или развертывания, будь то от Microsoft (например, .appx / .msix) или от третьих лиц.Каждый из них имеет свой набор преимуществ и недостатков, а также свой уровень восприимчивости к каждой вещи, о которой я говорил здесь.
  • Запустите ваше приложение где-нибудь еще;например, переписать ваше приложение как веб-приложение, чтобы не было установки.Очевидно, что это может работать только для определенных видов приложений, но этот список продолжает расти.

Что вы не можете сделать?

  • Заставьте всех пользователей уделять достаточно внимания
  • Запретить злоумышленнику создать установщик, который претендует на роль вашего приложения, но имеет только вредоносную нагрузку
  • Запретить владельцу машины изменять машину до или после запуска MSI-файла
  • Поддержка всех способов использования MSI-файлов без использования MSI-файлов (административные установки, преобразования, «переупаковка», различные утилиты развертывания .msi и т. Д. - все это обычное использование) шаблоны для определенных классов программного обеспечения)

В конце этого упражнения вам нужно будет решить, является ли это для вас прерывателем соглашения, или что-то, что вы можете принять. Убедитесь, что вы понимаете, почему кто-то захочет изменить ваш MSI-файл, и прежде чем сосредоточиться на самом MSI-файле, подумайте, могут ли они иметь такой же эффект с помощью средств, отличных от MSI. Если он специфичен для .msi и является нарушителем условий, обратите внимание на другие технологии установки. Если ничто не может помешать сценарию, который вы пытаетесь предотвратить, возможно, вы сможете найти способы уменьшить стимул для людей пытаться это сделать.

...