Відредагуйте TCC.db для обходу "Foo.app" хоче отримати доступ до керування "Bar.app" "на власній машині


15

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

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

У попередніх версіях macOS, коли програма отримала дозвіл на "керування комп'ютером", вона могла надсилати події Apple у будь-який інший додаток на вашій машині. У Mojave цей дозвіл повинен бути наданий вручну один раз для кожного керованого додатка.

Як тільки користувач надає доступ, їх вибір зберігається в одній з двох баз даних sqlite:

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

    • Зауважте, що №2 видно лише користувачу root.
    • Зауважте, що захист цілісності системи вимкнено.

Чи можна було б редагувати ці бази даних sqlite безпосередньо, щоб автоматично надавати дозволи та обходити ці підказки безпеки?


@ user3439894 Спасибі, SIP вже відключений на моїй машині. Схоже, що програма python сумісна з новим захистом "Автоматизації" Mojave.
Wowfunhappy

Що надсилає Apple Events в різні додатки (тобто, скільки у вас Foo.app і скільки у вас є Bar.app і чи є ця матриця рідкою чи щільною?)? Чи добре ви з рішенням, яке не розширює останні три машини, якими ви керуєте (або вимагає коштів у цей момент)?
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 .

Поглиблене обговорення того, що можна, а що не можна зробити, можна знайти тут .

Наскільки я знаю, це єдиний спосіб обійти необхідність запитувати дозволу користувача від Mojave далі.


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" ім'я програми, як воно відображається у списку доступності (збережіть знаки%).


2
Це видалить додаток із бази даних, не додасть дозволів, правда? Здавалося, що я нічого не робив, коли я спробував це (додати або видалити).
Wowfunhappy

1
У Каталіні ви незрозуміло навіть не можете бачити файл як корінь ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database file, і якщо я спробую отримати lsкаталог як корінь, я отримаю ls: : Operation not permitted.
Михайло

@Michael ти вмів читати TCC.dbна Каталіні ? У мене є та ж проблема, що я навіть не можу зробити lsв com.apple.TCCкаталозі
WallTearer,

1
@WallTearer Так, я повинен дозволити повний доступ до файлової системи до Терміналу та / або / bin / bash під безпекою та конфіденційністю в System Preferences
Michael

@Michael класно, дякую! У той же момент я також читав наступну статтю з подібною пропозицією, щоб увімкнути повний доступ до диска - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c Врешті-решт я надав доступ до iTerm2 і зміг прочитати налаштування безпеки за допомогою tccutil. py утиліта на кшталт sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer

0

SIP не підтримує каталог бібліотек. Отже, це означає, що ви можете все-таки записати у термінал TCC.db через термінал деякими командами.

Ось посилання: Про SIP


Файли TCC.db захищені SIP, хоча їхні каталоги відсутні. Мені все одно, я просто хотів би знати, які команди дозволять мені додавати білі програми.
Wowfunhappy

apple.stackexchange.com/questions/362865/… це посилання може допомогти вашому запиту
Coder123
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.