Отредактируйте TCC.db, чтобы обойти «Foo.app» хочет получить доступ к элементу управления «Bar.app» »на своей машине

15

Я широко использую Apple Events для управления различными приложениями на моей машине. Новые подсказки безопасности, введенные в Мохаве, наносят урон .

введите описание изображения здесь

В предыдущих версиях macOS, когда приложение получало разрешение на «управление вашим компьютером», оно могло отправлять события Apple любому другому приложению на вашем компьютере. В Мохаве это разрешение должно быть предоставлено вручную один раз для каждого контролируемого приложения.

Как только пользователь предоставляет доступ, его выбор сохраняется в одной из двух баз данных sqlite:

  1. ~/Library/Application Support/com.apple.TCC/TCC.db
  2. /Library/Application Support/com.apple.TCC/TCC.db

    • Обратите внимание, что # 2 виден только пользователю root.
    • Обратите внимание, что защита целостности системы отключена.

Можно ли редактировать эти базы данных sqlite напрямую, чтобы автоматически предоставлять разрешения и обходить эти запросы безопасности?

Wowfunhappy
источник
@ user3439894 Спасибо, SIP уже отключен на моей машине. Не похоже, что эта программа на Python совместима с новой защитой Mojave "Automation".
Wowfunhappy
Что отправляет Apple Events в различные приложения (например, сколько у вас Foo.app и сколько у вас Bar.app и является ли матрица разреженной или плотной?)? У вас все в порядке с решением, которое не масштабирует последние 3 машины, которые вы контролируете (или требует средств на данный момент)?
bmike
@bmike Мои яблочные скрипты имеют строки типа «указать приложению (путь к первому приложению в виде текста) выйти», поэтому Bar.app может быть любым установленным приложением. Это все на одной машине.
Wowfunhappy
Получите все это за один раз tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Тогда repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Это будет больно, но это все равно, что сорвать перевязку.
CJK

Ответы:

7

Прямой доступ к базе данных TCC.db больше не поддерживается Apple, даже если вы отключите SIP из-за своей политики защиты пользователей от крупных компаний, которые любят отслеживать все, что вы делаете в Интернете, а также использовали этот скрытый обход, не спрашивая разрешение пользователям. Однако даже в Мохаве есть способ обойти это, но с подвохом: это работает только в том случае, если данный компьютер зарегистрирован в программе MDM . Чтобы узнать больше о программе MDM, зайдите сюда .

Чтобы обойти это для нескольких компьютеров, вы можете использовать скрипт Python, tccprofile.pyдоступный на GitHub .

Подробное обсуждение того, что вы можете и не можете делать, можно найти здесь .

Насколько я знаю, это единственный способ обойти необходимость запрашивать разрешение пользователя у Мохаве и далее.

jvarela
источник
1
Получить профиль MDM для моих личных сценариев непрактично. С отключенным SIP, что именно мешает мне редактировать базу данных? Я понимаю, что сама система не может быть отключена напрямую, но без SIP я смогу редактировать любой файл на моем компьютере, включая базу данных, в которой хранятся все белые списки.
Wowfunhappy
1
Очевидно, Apple изменила способ доступа к этой базе данных с помощью частного API guarded_open_np. Я уже видел сообщения о том, как русские хакеры пытались реконструировать этот API с помощью IDA Pro, но пока без особого успеха.
Jvarela
Независимо от того, как Apple обычно редактирует белый список, он представляется стандартной базой данных sqlite, о чем свидетельствует тот факт, что ее можно открывать и читать в редакторах баз данных. Если есть другая причина, по которой файл невозможно редактировать и заменять напрямую (например, если macOS хранит контрольную сумму базы данных и эта контрольная сумма сама зашифрована Apple), я хотел бы получить четкое и полное объяснение этого в твоем ответе! Спасибо.
Wowfunhappy
1
+1, но я не доверяю блогам. Можем ли мы взять контент с этого сайта и напрямую цитировать его или добавить на диск или что-то в этом роде?
JBis
2

Я нашел это для удаления записи.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'удалить из доступа, где клиент, как %appnamehere%""

Замените " appnamehere" на имя приложения, которое отображается в списке специальных возможностей (оставьте знаки%).

bmike
источник
2
Это приведет к удалению приложения из базы данных, а не к добавлению разрешений, верно? Похоже, он ничего не сделал, когда я попробовал (добавить или удалить).
Wowfunhappy
1
В Каталине вы необъяснимо не можете даже увидеть файл как root ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database fileи если я попытаюсь перейти lsв каталог как root, я получу ls: : Operation not permitted.
Майкл
@ Майкл, ты умеешь читать TCC.dbо Каталине? У меня такая же проблема, даже не могу сделать lsв com.apple.TCCкаталоге
WallTearer
1
@WallTearer Да, я должен включить полный доступ к файловой системе для Терминала и / или / bin / bash под защитой и конфиденциальностью в Системных настройках
Майкл
@ Майкл круто, спасибо! В то же время я также читал следующую статью с аналогичным предложением включить полный доступ к диску - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c В конце концов я предоставил доступ к iTerm2 и смог прочитать настройки безопасности с помощью tccutil. Как утилита py sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer
0

SIP не поддерживает каталог библиотеки. Таким образом, это означает, что вы можете записывать в файл TCC.db через терминал некоторые команды.

Вот ссылка: О SIP

Coder123
источник
Файлы TCC.db защищены SIP, хотя их каталоги не защищены. Мне все равно - мне бы очень хотелось узнать, какие команды позволят мне создавать приложения из белого списка.
Wowfunhappy
apple.stackexchange.com/questions/362865/… эта ссылка может помочь вашему запросу
Coder123