Modifier TCC.db pour contourner "'Foo.app' veut accéder au contrôle 'Bar.app'" sur sa propre machine

15

J'utilise largement Apple Events pour contrôler une grande variété d'applications sur ma machine. Les nouvelles invites de sécurité introduites dans Mojave sont paralysantes .

entrez la description de l'image ici

Dans les versions précédentes de macOS, une fois qu'une application avait reçu l'autorisation de "contrôler votre ordinateur", elle pouvait envoyer des événements Apple à n'importe quelle autre application sur votre machine. Dans Mojave, cette autorisation doit être accordée manuellement une fois pour chaque application contrôlée.

Une fois qu'un utilisateur accorde l'accès, sa sélection est stockée dans l'une des deux bases de données sqlite:

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

    • Notez que # 2 n'est visible que pour l'utilisateur root.
    • Notez que la protection de l'intégrité du système est désactivée.

Serait-il possible de modifier ces bases de données sqlite directement pour accorder automatiquement des autorisations et contourner ces invites de sécurité?

Wowfunhappy
la source
@ user3439894 Merci, SIP est déjà désactivé sur ma machine. Il ne semble pas que ce programme python soit compatible avec la nouvelle protection "Automation" de Mojave.
Wowfunhappy
Qu'est-ce qui envoie Apple Events aux différentes applications (c'est-à-dire combien de Foo.app avez-vous et combien de Bar.app avez-vous et cette matrice est-elle clairsemée ou dense?)? Êtes-vous d'accord avec une solution qui n'évolue pas au-delà des 3 machines que vous contrôlez (ou qui nécessite des fonds à ce stade)?
bmike
@bmike Mes applescripts ont des lignes comme "dire à l'application (chemin d'accès à l'application la plus en avant en tant que texte) de quitter", donc Bar.app pourrait être n'importe quelle application installée. Tout cela sur une seule machine.
Wowfunhappy
Vous trouverez tout cela sur le chemin en une seule fois: tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Alors repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Ce sera douloureux, mais ce sera comme arracher un panda.
CJK

Réponses:

7

L'accès direct à la base de données TCC.db n'est plus pris en charge par Apple, même si vous désactivez SIP , en raison de sa politique de protection des utilisateurs contre les grandes entreprises qui aiment suivre tout ce que vous faites en ligne, et également utilisé pour effectuer ce contournement furtif sans demander autorisation aux utilisateurs. Cependant, même à Mojave, il existe un moyen de contourner cela, mais avec un hic: cela ne fonctionne que si un ordinateur donné est inscrit à un programme MDM . Pour en savoir plus sur le programme MDM, cliquez ici .

Afin de contourner cela pour plusieurs ordinateurs, vous pouvez utiliser le script python tccprofile.pydisponible sur GitHub .

Une discussion approfondie de ce que vous pouvez et ne pouvez pas faire est disponible ici .

Pour autant que je sache, c'est le seul moyen de contourner la nécessité de demander l'autorisation de l'utilisateur à partir de Mojave.

jvarela
la source
1
Il n'est vraiment pas pratique d'obtenir un profil MDM pour mes propres scripts personnels. Avec SIP désactivé, qu'est-ce qui m'empêche exactement de modifier la base de données? Je reconnais que le système lui-même ne peut pas être directement désactivé, mais sans SIP, je devrais pouvoir modifier n'importe quel fichier sur mon ordinateur, y compris la base de données qui stocke toutes les listes blanches.
Wowfunhappy
1
Apparemment, Apple a changé la façon dont il accède à cette base de données en utilisant l'API privée guarded_open_np. J'ai déjà vu quelques articles de pirates russes essayant de désosser cette API avec IDA Pro, mais jusqu'à présent sans grand succès.
jvarela
Indépendamment de la façon dont Apple modifierait normalement la liste blanche, il semble s'agir d'une base de données sqlite standard, comme en témoigne le fait qu'elle peut être ouverte et lue dans les éditeurs de base de données. S'il y a une autre raison pour laquelle le fichier est impossible à modifier et à remplacer directement (par exemple, si macOS stocke une somme de contrôle de la base de données et que cette somme de contrôle est elle-même chiffrée par Apple), je voudrais voir une explication claire et complète de cela. dans votre réponse! Je vous remercie.
Wowfunhappy
1
+1, mais je ne fais pas confiance aux blogs. Pouvons-nous prendre le contenu de ce site Web et le citer directement ou l'ajouter à Drive ou quelque chose comme ça?
JBis
2

J'ai trouvé cela pour supprimer une entrée.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'supprimer de l'accès où le client comme " %appnamehere%"'

Remplacez " appnamehere" par le nom de l'application tel qu'il apparaît dans la liste d'accessibilité (conservez les signes%).

bmike
la source
2
Cela supprimerait une application de la base de données, pas ajouter des autorisations, non? Il ne semblait rien faire quand je l'ai essayé (ajouter ou supprimer).
Wowfunhappy
1
Dans Catalina, vous ne pouvez même pas voir le fichier en tant que root ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database fileet si j'essaye de lstrouver le répertoire en tant que root, j'obtiens ls: : Operation not permitted.
Michael
@Michael avez-vous pu lire TCC.dbsur Catalina? J'ai aussi le même problème, je ne peux même pas le faire lsdans le com.apple.TCCrépertoire
WallTearer
1
@WallTearer Oui, je dois autoriser un accès complet au système de fichiers à Terminal et / ou / bin / bash sous sécurité et confidentialité dans les Préférences Système
Michael
@Michael cool, merci! Au même moment, je lisais également l'article suivant avec une suggestion similaire pour activer l'accès complet au disque - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c Au final, j'ai accordé l'accès à iTerm2 et j'ai pu lire les paramètres de sécurité avec tccutil. utilitaire py comme sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer
0

SIP ne prend pas en charge le répertoire Library. Ainsi, cela signifie que vous pouvez toujours écrire dans le fichier TCC.db via le terminal par certaines commandes.

Voici le lien: À propos de SIP

Coder123
la source
Les fichiers TCC.db sont protégés par SIP même si leurs répertoires ne le sont pas. Peu m'importe, j'aimerais bien savoir quelles commandes me permettront de mettre des applications sur liste blanche.
Wowfunhappy
apple.stackexchange.com/questions/362865/… ce lien peut aider votre requête
Coder123