установщик запрашивает разрешение на управление приложением systemuiserver
Разрешение доступа к компьютеру Mac приложениям Универсального доступа
Когда приложение стороннего разработчика пытается получить доступ к компьютеру Mac и управлять им через функции универсального доступа, Вы получите предупреждение и должны явно предоставить приложению доступ к компьютеру Mac в настройках «Защита и безопасность».
Если Вы доверяете приложению, можно авторизовать его, нажав в предупреждении «Открыть «Системные настройки»», затем установив флажок для приложения в панели «Конфиденциальность». Если Вы не знаете приложение или не хотите в данный момент предоставлять ему доступ к компьютеру Mac, нажмите «Отказать» в предупреждении.
Соблюдайте осмотрительность и предоставляйте доступ только тем приложениям, которые знаете и которым доверяете. Предоставляя приложениям доступ к компьютеру Mac, Вы также предоставляете им доступ к своим контактам, календарю и другой информации, при этом действуют условия и правила конфиденциальности этих приложений, а не политика конфиденциальности Apple. Внимательно изучите условия использования и политику конфиденциальности приложения, чтобы понимать, как будет использоваться Ваша информация.
Приложения, которым запрещен доступ, перечислены в разделе «Универсальный доступ» панели «Конфиденциальность». Если впоследствии Вы решите предоставить такому приложению доступ к компьютеру Mac, выберите меню Apple
> «Системные настройки», нажмите «Защита и безопасность» , нажмите «Конфиденциальность», нажмите «Универсальный доступ», после чего установите флажок рядом с приложением. Чтобы запретить приложению доступ к компьютеру Mac, снимите флажок. Можно также перетянуть приложение в панель, чтобы добавить его самостоятельно, затем установить флажок этого приложения.
Моя борьба с PTPCamera или увлекательная история о реверсинге для самых маленьких
Почти все продвинутые зеркальные камеры, а также некоторые правильные мыльницы, позволяют управлять собой с компьютера. Программное управление камерой дает интересные возможности, например: съемка time lapse video, сопряжение камеры с микроскопом, эксперименты в области компьютерного зрения. Для управления камерой вендоры предоставляют свои проприетарные SDK, которые обычно работают исключительно под Windows и поддерживают камеры только в рамках определенной линейки (например у Canon есть аж 4 несовместимых между собой SDK). Какое счастье, что есть достойная открытая альтернатива — проект gphoto.
Прямо сейчас gphoto поддерживает 1598 моделей камер и список постоянно растет. Проект собирается под все UNIX-like ОС, включая Linux и Mac OS X. Съемкой можно управлять как при помощи command line утилиты, так и из своей собственной программы, используя библиотеку libgphoto. Доступны биндинги для разных языковых платформ, включая node.js.
В современных ОС присутствуют встроенные средства для работы с цифровыми камерами — как правило под «работой» подразумевается только выгрузка фото из камеры. Эти встроенные механизмы препятствуют работе gphoto, так как захватывают USB устройство в эксклюзивном режиме. Особенно интересно дела в этом плане обстоят в Mac OS X — ОС не предоставляет никаких штатных возможностей для отключения, но при этом система поддержки цифровых камер легко поддается реверс инжинирингу.
Скрипты для блокировки запуска PTPCamera на github.
PTPCamera
В общем, требовалось понять механизм запуска PTPCamera, и максимально корректно отключить эту функцию.
О захвате изображений в Mac OS X
Согласно имеющимся источникам [1,2], инфраструктура захвата изображений в Mac OS X устроена следующим образом.
На вершине стека расположены приложения, с которыми непосредственно взаимодействует пользователь (ex: iPhoto).
Посередине находится коммуникационный слой, который организует связь между верхним и нижним уровнями. Любопытно, что несколько пользовательских приложений могут использовать одно устройство совместно, а также возможна прозрачная работа с устройствами по локальной сети.
Кто же запускает PTPCamera?
Попробуем определить механизм запуска PTPCamera, и для начала определим родительский процесс.
Итак, мы видим что PTPCamera запущен процессом launchd. В Mac OS X launchd — это универсальная запускалка для системных и пользовательских демонов. В системе запущено по экземпляру launchd для каждого активного пользователя. Launchd пользователя root выполняет те же функции, что init в традиционных UNIX системах.
Кроме демонов, laucnhd также запускает графические приложения по команде других программ. PTPCamera — это именно последний случай, как можно убедиться по ID задачи в launchd, об этом нам говорит [префикс].
Итак, мы знаем что PTPCamera был запущен процессом launchd, по команде некого приложения X.
Включим логирование launchd ( launchctl log level debug ), и спровоцируем повторный запуск PTPCamera.
По умолчанию, на каждый процесс в системе выделена квота в 500 записей в логе в секунду. Сообщения, не уложившиеся в лимит, отбрасываются. Настроим отдельную сборку отладочных сообщений для обхода лимита.
Ковыряем SystemUIServer
Изучаем ICANotifications.framework
Видно, что в конец имени ( com.apple.ImageCaptureNotifications.DeviceDiscoveryDatabase.501 ) дописывается ID пользователя, для каждого пользователя поддерживается собственный файл. Из содержимого понятно, что база задает список соответствий класса устройств и управляющей программы, которую нужно запускать при обнаружении устройства.
Редактирую базу данных, мы отключаем запуск PTPCamera для любого выбранного пользователя, это однозначный успех!
При необходимости вернуть все обратно, откатываем изменения, или просто удаляем файл бд (название папки /Library/Caches сообщает нам, что ОС при необходимости может перегенерировать содержимое).
Безопасное открытие приложений на компьютере Mac
В ОС macOS используется технология Gatekeeper, которая обеспечивает запуск только доверенного программного обеспечения на компьютере Mac.
Самым безопасным местом для загрузки приложений на компьютер Mac является App Store. Компания Apple проверяет каждое приложение в App Store, прежде чем принять, и подписывает его, чтобы оно не подверглась несанкционированному вмешательству или изменению. Если с приложением возникнет проблема, компания Apple может быстро удалить его из магазина.
Если вы загружаете приложения из Интернета или непосредственно на веб-сайте разработчика и устанавливаете их, ОС macOS продолжает защищать компьютер Mac. Когда вы устанавливаете на компьютер Mac приложения, плагины и установочные пакеты не из App Store, ОС macOS проверяет подпись идентификатора разработчика, чтобы убедиться, что программное обеспечение выпустил идентифицированный разработчик и что оно не изменено. По умолчанию macOS Catalina и более поздние версии также требуют подтверждения подлинности программного обеспечения, чтобы вы могли быть уверены, что программное обеспечение, запущенное на вашем Mac, не содержит известных вредоносных программ. Перед первым открытием загруженного программного обеспечения macOS запрашивает подтверждение, чтобы вы случайно не запустили программное обеспечение, устанавливать которое вы не собирались.
Приведенные ниже предупреждения являются лишь примерами, вам может встретиться аналогичное сообщение, не показанное здесь. Будьте осторожны при установке программного обеспечения, для которого компьютер Mac отображает предупреждение.
Просмотр настроек безопасности приложений на компьютере Mac
По умолчанию настройки безопасности и конфиденциальности на компьютере Mac разрешают устанавливать приложения только из магазина App Store и от идентифицированных разработчиков. Для дополнительной безопасности вы можете разрешить устанавливать приложения только из магазина App Store.
В меню «Системные настройки» щелкните «Защита и безопасность» и выберите «Основные». Щелкните значок замка и введите пароль, чтобы внести изменения. Выберите App Store в разделе «Разрешить использование приложений, загруженных из».
Открытие приложения с подписью разработчика или подтверждением подлинности
Если на вашем компьютере Mac настроено разрешение на установку приложений из App Store и от идентифицированных разработчиков, при первом запуске приложения Mac выдаст запрос о том, действительно ли вы хотите его открыть.
Если приложение имеет подтверждение подлинности от Apple, это значит, что компания Apple проверила его на наличие вредоносного ПО и не обнаружила ничего подозрительного.
Если отображается сообщение с предупреждением и не удается установить приложение
Если в настройках Mac вы разрешили устанавливать приложения только из App Store и пытаетесь установить приложение из другого источника, ваш Mac сообщит, что приложение невозможно открыть, потому что оно не было загружено из App Store*.
Если в настройках Mac разрешено открывать приложения из App Store и от идентифицированных разработчиков и вы пытаетесь установить приложение, которое не подписано идентифицированным разработчиком — в macOS Catalina и более поздних версиях дополнительно требуется подтверждение подлинности от Apple, — система также предупредит о том, что приложение невозможно открыть.
Это предупреждение означает, что подлинность приложения не подтверждена и компания Apple не смогла проверить, является ли данное ПО вредоносным.
Возможно, лучше найти обновленное приложение в App Store или другое приложение.
Если ОС macOS обнаруживает вредоносное приложение
Если macOS обнаружит, что программное обеспечение содержит вредоносный код или что авторизация ПО была отозвана по какой-либо причине, система уведомит вас о том, что данное приложение способно повредить ваш компьютер Mac. В таком случае переместите это приложение в корзину и установите флажок «Сообщить в Apple о вредоносном ПО, чтобы защитить других пользователей».
Если вы хотите открыть приложение без подтверждения подлинности или созданное неизвестным разработчиком
Программное обеспечение без подписи и подтверждения подлинности может оказаться вредоносным. Оно может нанести вред вашему компьютеру Mac или поставить под угрозу вашу конфиденциальную информацию. Если вы уверены, что приложение, которое вы хотите установить, из достоверного источника и не содержит несанкционированных изменений, вы можете временно переопределить настройки безопасности компьютера Mac, чтобы открыть его.
Если вы по-прежнему хотите открыть приложение, разработчика которого не удаётся проверить, перейдите в «Системные настройки».*
Затем войдите в раздел «Защита и безопасность». Нажмите кнопку «Все равно открыть» на панели «Основные», чтобы подтвердить желание открыть или установить приложение.
Снова появится предупреждение. Если вы действительно хотите открыть приложение, нажмите «Открыть».
Приложение будет сохранено как исключение из настроек безопасности, и вы сможете открыть его двойным щелчком, как и любое другое авторизованное приложение.
Защита конфиденциальности
ОС macOS была разработана для обеспечения безопасности пользователей и их данных при сохранении конфиденциальности.
Gatekeeper выполняет онлайн-проверки на наличие в приложении известных вредоносных компонентов и отзыв сертификата подписи разработчика. Мы никогда не объединяли данные этих проверок с информацией о пользователях Apple или их устройствах. Мы не используем данные этих проверок, чтобы узнать, какие приложения пользователи запускают или устанавливают на своих устройствах.
Подтверждение подлинности необходимо для проверки наличия в приложении известных вредоносных компонентов. Проверка проводится с использованием зашифрованного соединения, устойчивого к сбоям сервера.
Эти проверки безопасности никогда не включали идентификатор Apple ID пользователя или идентификацию его устройства. Для более надежной защиты конфиденциальности мы прекратили регистрацию IP-адресов, связанных с проверками сертификатов идентификатора разработчика, и гарантируем, что все собранные IP-адреса будут удалены из журналов.
Кроме того, в следующем году мы внесем некоторые изменения в наши проверки безопасности:
* Если вам предложено открыть приложение в Finder и вы действительно хотите открыть его несмотря на предупреждение, нажав и удерживая клавишу Control, щёлкните приложение, после этого выберите «Открыть» в контекстном меню, а затем нажмите «Открыть» в появившемся диалоговом окне. Чтобы открыть приложение, введите имя администратора и пароль.
Информация о продуктах, произведенных не компанией Apple, или о независимых веб-сайтах, неподконтрольных и не тестируемых компанией Apple, не носит рекомендательного или одобрительного характера. Компания Apple не несет никакой ответственности за выбор, функциональность и использование веб-сайтов или продукции сторонних производителей. Компания Apple также не несет ответственности за точность или достоверность данных, размещенных на веб-сайтах сторонних производителей. Обратитесь к поставщику за дополнительной информацией.
[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет
К сожалению, в работе сисадмина нет-нет да и приходится разрешать пользователям запускать всякий софт с админскими правами. Чаще всего это какие-нибудь странные китайские программы для работы с оборудованием. Но бывают и другие ситуации вроде небезызвестного bnk.exe.
Выдавать пользователю права администратора, чтобы решить проблему быстро и просто, противоречит нормам инфобезопасности. Можно, конечно, дать ему отдельный компьютер и поместить в изолированную сеть, но — это дорого и вообще…
Попробуем разобрать решения, которые позволят и программу запустить, и безопасника с финансистом не обозлить.
Ну, и зачем тебе права?
Программа может запрашивать права администратора условно в двух случаях:
С первым случаем все понятно: берем в руки замечательную программу Марка Руссиновича Process Monitor, смотрим, что происходит, и куда программа пытается залезть:
Куда это лезет этот 7Zip?
И по результатам исследования выдаем права пользователю на нужный каталог или ветку реестра.
Сложнее, если случай клинический, и так просто выдать права не получится: например, программа требует сильного вмешательства в работу системы вроде установки драйверов. Тогда придется придумывать всякий колхоз, про который речь пойдет в последнем разделе статьи. Пока подробнее освещу второй случай — когда стоит флажок.
Если сильно упростить, то в специальном манифесте программы (к слову, установщики — это тоже программы) могут быть три варианта запуска:
Если разработчик твердо решил требовать права администратора, даже если они не нужны, то обойти это можно малой кровью.
Нет, не будет тебе прав
В системе Windows, начиная с Vista, появилась служба UAC, которая помимо прочего отвечает за запросы программ на повышение прав. Не все программы «переваривали» работу с этой службой. Поэтому в системе был доработан механизм совместимости приложений, позволяющий прямо задать программе ее поведение — запрашивать права или нет.
Простейшим вариантом работы с этим механизмом будет использование переменных среды.
Рассмотрим пример с редактором реестра. Действительно, запуская regedit.exe под администратором, мы получаем запрос на повышение прав:
Запрос повышение прав.
Если же мы запустим редактор реестра из консоли, предварительно поменяв значение переменной среды __COMPAT_LAYER на:
То запроса UAC не будет, как и административных прав у приложения:
Бесправный редактор реестра.
Этим можно пользоваться, запуская программы батниками или добавляя контекстное меню через реестр. Подробнее читайте в материале How to Run Program without Admin Privileges and to Bypass UAC Prompt?
С конкретным примером такой неприятной программы можно столкнуться при загрузке классификаторов банков из 1С с сайта РБК по ссылке http://cbrates.rbc.ru/bnk/bnk.exe. Если обновление классификаторов отдается на откуп самим пользователям и нет возможности поменять загрузку на bnk.zip (а современные 1С это поддерживают), то приходится придумывать костыли. Ведь bnk.exe — самораспаковывающийся архив, в котором зачем-то прописано «Требовать права администратора».
Поскольку ярлычками тут обойтись не выйдет, ведь 1С сама скачивает файл и запускает его, то придется применять тяжелую артиллерию — Microsoft Application Compatibility Toolkit.
Документация к ПО, как обычно, доступна на официальном сайте, загрузить можно как часть Windows Assessment and Deployment Kit. Сам процесс решения проблемы несложен.
Необходимо поставить утилиту, запустить Compatibility Administrator и создать Application Fix в новой или имеющейся базе данных:
Создаем исправление приложения.
Имя и издатель значения не имеют. Имеет значение только расположение файла — тут нужно указать реальный проблемный bnk.exe (где он будет лежать на самом деле — не важно).
Далее необходимо в списке исправлений выбрать RunAsInvoker.
Выбираем нужный фикс.
Все остальное оставляем по умолчанию, сохраняем базу данных. Должно получиться примерно так:
Созданный фикс для bnk.exe.
После этого достаточно будет установить базу данных, щелкнув по ней правой кнопкой и выбрав Install. Теперь пользователи смогут сами грузить классификаторы банков.
Все становится хуже, если приложению действительно нужны права админа. Тогда добавление прав на системные объекты и исправления не помогают.
Ну ладно, держи права
Казалось бы, самым очевидным решением для запуска нашего странного ПО выглядит использование встроенной утилиты Runas. Документация доступна на сайте Microsoft.
Ну, посмотрим, что из этого выйдет.
Действительно, RunAs запустит 7zip с правами учетной записи «Администратор», спросит пароль и запомнит его. Потом ярлык с такой строкой запуска будет запускать 7zip под Администратором без вопросов.
)
Есть один существенный недостаток: пароль запоминается на уровне системы, и теперь, используя команду Runas, можно будет запускать абсолютно любую программу. Это мало чем отличается от прямого предоставления админских прав сотрудникам, так что использовать это решение не стоит.
Зато runas может быть полезен, когда сотрудник знает пароль администратора, но работает под ограниченной учетной записью (по идее так должен делать каждый системный администратор).
Если мы начали с консольных команд, то перейдем к более высокоуровневым скриптам. Интересное решение было предложено в статье «Планктонная Windows», где упомянутый выше Runas обвязывался js-скриптом и пропускался через обфускатор. У решения есть и очевидный минус — скрипт можно раскодировать.
Чуть более интересным методом в 2к20 являются возможности PowerShell и его работа с паролями. Подробнее можно почитать в материале «Защита и шифрование паролей в скриптах PowerShell».
Если вкратце: в PS работа с паролями производится через специальный тип данных SecureString и объект PSCredential. Например, можно ввести пароль интерактивно:
Затем сохранить пароль в зашифрованном виде в файл:
И теперь использовать этот файл для неинтерактивной работы:
К сожалению, файл этот можно использовать только на том ПК, на котором его создали. Чтобы этого избежать, можно сделать отдельный ключ шифрования. Например так:
Теперь при помощи этого ключа пароль можно зашифровать:
В свое время я использовал для решения подобных задач свой любимый AutoIt, где компилировал скрипт с командой RunAs и радовался… До тех пор, пока не узнал, что AutoIt (особенно старых версий) декомпилируется на раз-два.
Другим интересным вариантом может быть применение назначенных заданий — если создать назначенное задание от админского аккаунта, пользователю для работы будет достаточно его запуска. К сожалению, для интерактивной работы с приложением это решение не подходит.
На свете существует несколько сторонних решений, призванных решить задачу. Остановлюсь на парочке из них.
Пожалуй, одна из самых известных утилит — это AdmiLink, разработанная Алексеем Курякиным для нужд ядерной физики. Программа и принципы ее работы описаны на официальном сайте. Я, как обычно, позволю себе более краткое описание.
Программа состоит из трех модулей. AdmiLink — это графическое окно, где можно создать ярлык на нужное приложение (в принципе, в ряде случаев достаточно только его).
Основное окно программы.
Помимо непосредственно создания ярлыка (и да, запрос UAC тоже можно подавлять), есть и дополнительные функции вроде калькулятора, терминала и удобных настроек политик безопасности. Со всеми возможностями программы читателю предлагается разобраться самостоятельно.
Второй модуль называется AdmiRun и представляет из себя консольную утилиту. Она умеет запускать приложения от имени администратора, получив в качестве одного из параметров строку, созданную через AdmiLink. В строке шифруется имя пользователя и пароль, при этом участвует и путь к программе.
На первый взгляд все выглядит безопасно, но, к сожалению, код программ закрыт, и насколько можно доверять разработчику — вопрос.
Третий модуль — AdmiLaunch — отвечает за запуск окон в разных режимах, и он используется для запуска AdmiRun, если создавать ярлык через AdmiLink.
В целом, решение проверено годами и поколениями отечественных системных администраторов. Но добавлю и альтернативу из-за рубежа.
RunAsRob — довольно интересное ПО за авторством немецкого разработчика Оливера Хессинга (Oliver Hessing). В отличие от AdmiLink, ПО устанавливается как служба, запускаемая под привилегированной учетной записью (администратора или системы). Как следствие, подготовленный ярлык обращается к службе, которая уже в свою очередь запускает заданное ПО.
Особенность программы в том, что есть возможность авторизовать не только программы, но и папки (включая сетевые). А хранение настроек в реестре позволило добавить шаблоны групповых политик, примерно как мы писали в статье «Погружение в шаблоны и приручение GPO Windows». Благодаря этому при необходимости настройки можно применять прямо из Active Directory.
Основное окно программы.
Программа богато документирована на официальном сайте.
У этого автора есть еще и программа RunAsSpc, позволяющая запускать исполняемые файлы под правами другого пользователя, передавая учетные данные через зашифрованный файл.
Мне остается только добавить, что это ПО бесплатно только для личного использования.
Но учтите, что из программы, запущенной под административными правами, можно натворить бед. Например, запустить привилегированную командную консоль через диалог Файл — Открыть.
Запускаем cmd.exe прямо из редактора реестра.
Немного защититься помогут политики запрета контекстного меню и прочих диспетчеров задач, часть из которых может настроить AdmiLink. Но в любом случае следует быть осторожным.
А вам приходилось городить странные костыли? Предлагаю делиться историями в комментариях.