Modifica TCC.db per bypassare "'Foo.app' vuole accedere al controllo 'Bar.app'” sulla propria macchina


15

Faccio ampio uso di Apple Events per controllare un'ampia varietà di applicazioni sulla mia macchina. I nuovi messaggi di sicurezza introdotti in Mojave sono paralizzanti .

inserisci qui la descrizione dell'immagine

Nelle versioni precedenti di macOS, una volta concessa un'app per "controllare il tuo computer", era in grado di inviare eventi Apple a qualsiasi altra app sul tuo computer. In Mojave, questa autorizzazione deve essere concessa manualmente una volta per ogni app controllata.

Una volta che un utente concede l'accesso, la sua selezione viene archiviata in uno dei due database sqlite:

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

    • Si noti che il n. 2 è visibile solo all'utente root.
    • Si noti che la protezione dell'integrità del sistema è disabilitata.

Sarebbe possibile modificare questi database sqlite direttamente per concedere automaticamente le autorizzazioni e bypassare questi messaggi di sicurezza?


@ user3439894 Grazie, SIP è già disabilitato sulla mia macchina. Non sembra che il programma Python sia compatibile con la nuova protezione "Automazione" di Mojave.
Wowfunhappy,

Cosa invia Apple Event alle varie app (ad es. Quante Foo.app hai e quante Bar.app hai ed è quella matrice sparsa o densa?)? Stai bene con una soluzione che non scala le 3 macchine che controlli (o richiede fondi a quel punto)?
bmike

@bmike I miei script di mele hanno righe come "dire all'applicazione (percorso dell'applicazione principale come testo) per uscire", quindi Bar.app potrebbe essere qualsiasi app installata. Questo è tutto su una singola macchina.
Wowfunhappy,

Ottenere tutto fuori strada in un colpo solo: tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Allora repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Sarà doloroso, ma sarà come strappare un cerotto.
CJK,

Risposte:


7

L'accesso diretto al database TCC.db non è più supportato da Apple, anche se si disabilita SIP , a causa della loro politica di protezione degli utenti dalle grandi aziende a cui piace tenere traccia di tutto ciò che si fa online, e utilizzato anche per fare questo bypass nascosto senza chiedere permesso agli utenti. Tuttavia, anche in Mojave, c'è un modo per aggirare questo, ma con un problema: funziona solo se un determinato computer è registrato in un programma MDM . Per saperne di più sul programma MDM vai qui .

Al fine di aggirare questo per diversi computer è possibile utilizzare lo script Python tccprofile.pydisponibile su GitHub .

Una discussione approfondita di ciò che puoi e non puoi fare può essere trovata qui .

Per quanto ne so, questo è l'unico modo per aggirare la necessità di chiedere il permesso dell'utente da Mojave in poi.


1
Non è davvero pratico ottenere un profilo MDM per i miei script personali. Con SIP disabilitato, cosa mi impedisce esattamente di modificare il database? Riconosco che il sistema stesso non può essere disattivato direttamente, ma senza SIP dovrei essere in grado di modificare qualsiasi file sul mio computer, incluso il database che memorizza tutte le whitelist.
Wowfunhappy,

1
Apparentemente, Apple ha cambiato il modo in cui accede a questo database utilizzando l'API privata guarded_open_np. Ho già visto alcuni post di hacker russi che cercavano di decodificare questa API con IDA Pro, ma finora senza grande successo.
jvarela,

Indipendentemente da come Apple normalmente modificherebbe la whitelist, sembra essere un database sqlite standard, come dimostra il fatto che può essere aperto e letto negli editor di database. Se c'è un altro motivo per cui il file è impossibile da modificare e sostituire direttamente (ad esempio, se macOS memorizza un checksum del database e tale checksum è crittografato da Apple), vorrei vedere una spiegazione chiara e completa di questo nella tua risposta! Grazie.
Wowfunhappy,

1
+1, ma non mi fido dei blog. Possiamo prendere il contenuto da quel sito Web e citarlo direttamente o aggiungerlo per guidare o qualcosa del genere?
JBis

2

Ho trovato questo per eliminare una voce.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'elimina dall'accesso dove client come " %appnamehere%"'

Sostituisci " appnamehere" con il nome dell'app come appare nell'elenco Accessibilità (mantieni i segni%).


2
Ciò rimuove un'app dal database, non aggiunge autorizzazioni, giusto? Non sembrava fare nulla quando l'ho provato (aggiungi o rimuovi).
Wowfunhappy,

1
In Catalina inspiegabilmente non riesci nemmeno a vedere il file come root ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database file, e se provo ad lsaccedere alla directory come root ottengo ls: : Operation not permitted.
Michael,

@Michael sei riuscito a leggere TCC.dbsu Catalina? Ho anche lo stesso problema, non riesco nemmeno a farlo lsnella com.apple.TCCdirectory
WallTearer il

1
@WallTearer Sì, devo abilitare l'accesso completo al filesystem al Terminale e / o / bin / bash in sicurezza e privacy in Preferenze di Sistema
Michael

@Michael cool, grazie! Nello stesso momento stavo anche leggendo il seguente articolo con suggerimenti simili per abilitare l'accesso completo al disco - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c Alla fine ho concesso l'accesso a iTerm2 e sono stato in grado di leggere le impostazioni di sicurezza con tccutil. py utility like sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer

0

SIP non supporta la directory della libreria. Quindi, significa che puoi ancora scrivere nel file TCC.db attraverso il terminale con alcuni comandi.

Ecco il link: Informazioni su SIP


I file TCC.db sono protetti da SIP anche se le loro directory non lo sono. Non mi importa a prescindere: mi piacerebbe davvero sapere quali comandi mi consentiranno di inserire nella whitelist le applicazioni.
Wowfunhappy,

apple.stackexchange.com/questions/362865/… questo link può aiutare la tua domanda
Coder123
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.