Bearbeiten Sie TCC.db, um "'Foo.app' soll den Zugriff auf die Steuerung von 'Bar.app'" auf dem eigenen Computer umgehen

15

Ich nutze Apple Events in großem Umfang, um eine Vielzahl von Anwendungen auf meinem Computer zu steuern. Die in Mojave eingeführten neuen Sicherheitsanweisungen sind lähmend .

Geben Sie hier die Bildbeschreibung ein

In früheren Versionen von macOS konnte eine App, nachdem sie die Berechtigung zum "Steuern Ihres Computers" erhalten hatte, Apple-Ereignisse an jede andere App auf Ihrem Computer senden. In Mojave muss diese Berechtigung für jede zu steuernde App einmal manuell erteilt werden.

Sobald ein Benutzer Zugriff gewährt, wird seine Auswahl in einer von zwei SQLite-Datenbanken gespeichert:

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

    • Beachten Sie, dass # 2 nur für den Root-Benutzer sichtbar ist.
    • Beachten Sie, dass der Systemintegritätsschutz deaktiviert ist.

Wäre es möglich, diese SQLite-Datenbanken direkt zu bearbeiten, um automatisch Berechtigungen zu erteilen und diese Sicherheitsanweisungen zu umgehen?

Wowfunhappy
quelle
@ user3439894 Danke, SIP ist auf meinem Computer bereits deaktiviert. Es sieht nicht so aus, als ob das Python-Programm mit Mojaves neuem "Automation" -Schutz kompatibel ist.
Wowfunhappy
Was sendet Apple Events an die verschiedenen Apps (dh wie viele Foo.app haben Sie und wie viele Bar.app haben Sie und ist diese Matrix spärlich oder dicht?)? Sind Sie mit einer Lösung einverstanden, die nicht über 3 von Ihnen kontrollierte Maschinen skaliert (oder zu diesem Zeitpunkt Mittel benötigt)?
bmike
@bmike Meine Applescripts haben Zeilen wie "Anwendung anweisen (Pfad zur vordersten Anwendung als Text) zum Beenden", sodass Bar.app jede installierte App sein kann. Dies ist alles auf einer einzigen Maschine.
Wowfunhappy
Holen Sie alles auf einmal aus dem Weg : tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Dann repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Es wird schmerzhaft sein, aber es wird sein, als würde man ein Pflaster abreißen.
CJK

Antworten:

7

Der direkte Zugriff auf die TCC.db-Datenbank wird von Apple nicht mehr unterstützt, selbst wenn Sie SIP deaktivieren , da Benutzer vor großen Unternehmen geschützt werden, die gerne alles verfolgen, was Sie online tun, und diese heimliche Umgehung auch ohne Aufforderung durchgeführt haben Berechtigung für Benutzer. Selbst in Mojave gibt es eine Möglichkeit, dies zu umgehen, jedoch mit einem Haken: Dies funktioniert nur, wenn ein bestimmter Computer in einem MDM-Programm registriert ist . Um mehr über das MDM-Programm zu erfahren, klicken Sie hier .

Um dies für mehrere Computer zu umgehen, können Sie das tccprofile.pybei GitHub verfügbare Python-Skript verwenden .

Eine ausführliche Diskussion darüber, was Sie können und was nicht, finden Sie hier .

Soweit ich weiß, ist dies die einzige Möglichkeit, die Notwendigkeit zu umgehen, ab Mojave die Erlaubnis des Benutzers einzuholen.

jvarela
quelle
1
Es ist wirklich nicht praktisch, ein MDM-Profil für meine persönlichen Skripte zu erhalten. Was genau hindert mich bei deaktiviertem SIP daran, die Datenbank zu bearbeiten? Ich erkenne, dass das System selbst nicht direkt ausgeschaltet werden kann, aber ohne SIP sollte ich in der Lage sein, alle Dateien auf meinem Computer zu bearbeiten, einschließlich der Datenbank, in der alle Whitelists gespeichert sind.
Wowfunhappy
1
Anscheinend hat Apple die Art und Weise, wie auf diese Datenbank zugegriffen wird, mithilfe der privaten API guarded_open_np geändert. Ich habe bereits einige Posts russischer Hacker gesehen, die versucht haben, diese API mit IDA Pro zurückzuentwickeln, aber bisher ohne großen Erfolg.
Jvarela
Unabhängig davon, wie Apple die Whitelist normalerweise bearbeitet, scheint es sich um eine Standard-SQLite-Datenbank zu handeln. Dies zeigt die Tatsache, dass sie in Datenbankeditoren geöffnet und gelesen werden kann. Wenn es einen anderen Grund gibt, warum die Datei nicht direkt bearbeitet und ersetzt werden kann (z. B. wenn macOS eine Prüfsumme der Datenbank speichert und diese Prüfsumme selbst von Apple verschlüsselt wird), würde ich mir eine klare und umfassende Erklärung dafür wünschen in deiner Antwort! Vielen Dank.
Wowfunhappy
1
+1, aber ich vertraue Blogs nicht. Können wir den Inhalt von dieser Website nehmen und ihn direkt zitieren oder zum Laufwerk hinzufügen oder so etwas?
JBis
2

Ich habe dies zum Löschen eines Eintrags gefunden.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'vom Zugriff löschen, wo Client wie " %appnamehere%"'

Ersetzen Sie " appnamehere" durch den Namen der App, wie er in der Eingabehilfenliste angezeigt wird (behalten Sie die% -Zeichen bei).

bmike
quelle
2
Dies würde eine App aus der Datenbank entfernen, keine Berechtigungen hinzufügen, oder? Es schien nichts zu tun, als ich es versuchte (Hinzufügen oder Entfernen).
Wowfunhappy
1
In Catalina kann man die Datei unerklärlicherweise nicht einmal als root sehen ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database fileund wenn ich versuche, lsdas Verzeichnis als root aufzurufen, bekomme ich sie ls: : Operation not permitted.
Michael
@ Michael konnten Sie TCC.dbauf Catalina lesen ? Ich habe das gleiche Problem auch, kann nicht einmal lsim com.apple.TCCVerzeichnis tun
WallTearer
1
@WallTearer Ja, ich muss den vollständigen Zugriff auf das Dateisystem auf Terminal und / oder / bin / bash unter Sicherheit und Datenschutz in den Systemeinstellungen aktivieren
Michael
@ Michael cool, danke! Im gleichen Moment las ich auch den folgenden Artikel mit einem ähnlichen Vorschlag, um den vollständigen Datenträgerzugriff zu aktivieren - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c Am Ende gewährte ich Zugriff auf iTerm2 und konnte die Sicherheitseinstellungen mit tccutil lesen. py Dienstprogramm wie sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer
0

SIP unterstützt kein Bibliotheksverzeichnis. Dies bedeutet, dass Sie mit einigen Befehlen weiterhin über das Terminal in die Datei TCC.db schreiben können.

Hier ist der Link: Über SIP

Coder123
quelle
Die TCC.db-Dateien sind durch SIP geschützt, ihre Verzeichnisse jedoch nicht. Es ist mir egal - ich würde nur sehr gerne wissen, mit welchen Befehlen ich Anwendungen auf die Whitelist setzen kann.
Wowfunhappy
apple.stackexchange.com/questions/362865/… dieser Link kann Ihrer Anfrage helfen
Coder123