Edytuj TCC.db, aby ominąć „Foo.app” chce mieć dostęp do kontroli „Bar.app” na własnym komputerze

15

W dużym stopniu korzystam z Apple Events, aby kontrolować różnorodne aplikacje na moim komputerze. Nowe monity bezpieczeństwa wprowadzone w Mojave są paraliżujące .

wprowadź opis zdjęcia tutaj

W poprzednich wersjach systemu macOS, gdy aplikacja otrzymała pozwolenie na „sterowanie komputerem”, mogła wysyłać zdarzenia Apple do dowolnej innej aplikacji na komputerze. W Mojave to uprawnienie musi zostać przyznane ręcznie raz dla każdej kontrolowanej aplikacji.

Gdy użytkownik przyzna dostęp, jego wybór jest przechowywany w jednej z dwóch baz danych sqlite:

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

    • Zauważ, że # 2 jest widoczny tylko dla użytkownika root.
    • Pamiętaj, że ochrona integralności systemu jest wyłączona.

Czy można by bezpośrednio edytować te bazy danych sqlite, aby automatycznie udzielać uprawnień i omijać te monity bezpieczeństwa?

Wowfunhappy
źródło
@ user3439894 Dzięki, protokół SIP jest już wyłączony na moim komputerze. Nie wygląda na to, aby ten program python był zgodny z nową ochroną „Automatyzacji” mojejve.
Wowfunhappy
Co wysyła zdarzenia Apple do różnych aplikacji (tj. Ile masz aplikacji Foo.app i ile masz aplikacji Bar.app i czy matryca jest rzadka czy gęsta?)? Czy zgadzasz się z rozwiązaniem, które nie skaluje się w stosunku do 3 kontrolowanych przez ciebie maszyn (lub wymaga funduszy w tym momencie)?
bmike
@bike Moje skrypty jabłkowe mają wiersze typu „powiedz aplikacji (ścieżka do aplikacji na pierwszym planie jako tekst), aby wyjść”, więc Bar.app może być dowolną zainstalowaną aplikacją. To wszystko na jednym komputerze.
Wowfunhappy
Dostać to wszystko z drogi za jednym zamachem: tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Potem repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Będzie to bolesne, ale będzie to jak zrywanie bandaża.
CJK,

Odpowiedzi:

7

Bezpośredni dostęp do bazy danych TCC.db nie jest już obsługiwany przez Apple, nawet jeśli wyłączysz SIP , z powodu ich polityki ochrony użytkowników przed dużymi firmami, które lubią śledzić wszystko, co robisz online, a także robił to ukradkowe obejście bez pytania uprawnienia dla użytkowników. Jednak nawet w Mojave istnieje sposób na obejście tego, ale z haczykiem: działa to tylko wtedy, gdy dany komputer jest zarejestrowany w programie MDM . Aby dowiedzieć się więcej o programie MDM, przejdź tutaj .

Aby to obejść na kilku komputerach, możesz użyć skryptu python tccprofile.pydostępnego na GitHub .

Szczegółową dyskusję na temat tego, co możesz, a czego nie możesz zrobić, znajdziesz tutaj .

O ile mi wiadomo, jest to jedyny sposób na ominięcie potrzeby pytania użytkownika o pozwolenie od Mojave.

jvarela
źródło
1
Naprawdę nie jest praktyczne uzyskanie profilu MDM dla moich osobistych skryptów. Z wyłączonym SIP, co dokładnie uniemożliwia mi edycję bazy danych? Rozumiem, że sam system nie może być bezpośrednio wyłączony, ale bez SIP powinienem móc edytować dowolny plik na moim komputerze, w tym bazę danych, która przechowuje wszystkie białe listy.
Wowfunhappy
1
Najwyraźniej Apple zmieniło sposób uzyskiwania dostępu do tej bazy danych za pomocą prywatnego interfejsu API guarded_open_np. Widziałem już kilka postów rosyjskich hakerów próbujących przebudować ten interfejs API za pomocą IDA Pro, ale jak dotąd bez wielkiego sukcesu.
jvarela
Niezależnie od tego, jak Apple normalnie edytuje białą listę, wydaje się, że jest to standardowa baza danych sqlite, o czym świadczy fakt, że można ją otwierać i czytać w edytorach baz danych. Jeśli istnieje inny powód, dla którego nie można bezpośrednio edytować i zamieniać pliku (na przykład jeśli macOS przechowuje sumę kontrolną bazy danych, a sama suma kontrolna jest zaszyfrowana przez Apple), chciałbym zobaczyć jasne i wyczerpujące wyjaśnienie tego w twojej odpowiedzi! Dziękuję Ci.
Wowfunhappy
1
+1, ale nie ufam blogom. Czy możemy pobrać treść z tej witryny i zacytować ją bezpośrednio, dodać do dysku lub coś w tym rodzaju?
JBis
2

Znalazłem to do usunięcia wpisu.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db „usuń z dostępu tam, gdzie klient lubi„ %appnamehere%

Zamień „ appnamehere” na nazwę aplikacji widoczną na liście ułatwień dostępu (zachowaj znaki%).

bmike
źródło
2
Spowoduje to usunięcie aplikacji z bazy danych, a nie dodanie uprawnień, prawda? Wydawało się, że nic nie robi, kiedy próbowałem (dodaj lub usuń).
Wowfunhappy
1
W Catalinie w niewytłumaczalny sposób nie widzisz pliku jako root ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database filea jeśli spróbuję wejść do lskatalogu jako root, dostanę ls: : Operation not permitted.
Michael
@Michael czy potrafiłeś czytać TCC.dbna temat Catalina? Mam również ten sam problem, nie mogę nawet zrobić lsw com.apple.TCCkatalogu
WallTearer
1
@WallTearer Tak, muszę włączyć pełny dostęp do systemu plików do terminala i / lub / bin / bash w ramach bezpieczeństwa i prywatności w Preferencjach systemowych
Michael
@ Michael super, dziękuję! W tym samym momencie czytałem również następujący artykuł z podobną sugestią, aby włączyć pełny dostęp do dysku - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c W końcu przyznałem dostęp do iTerm2 i byłem w stanie odczytać ustawienia bezpieczeństwa za pomocą tccutil. py narzędzie jak sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer
0

SIP nie obsługuje katalogu Library. Oznacza to, że za pomocą niektórych poleceń możesz nadal zapisywać do pliku TCC.db przez terminal.

Oto link: O SIP

Coder123
źródło
Pliki TCC.db są chronione przez SIP, nawet jeśli ich katalogi nie są. Nie dbam o to, niezależnie od tego - bardzo chciałbym wiedzieć, jakie polecenia pozwolą mi dodać aplikacje do białej listy.
Wowfunhappy
apple.stackexchange.com/questions/362865/… ten link może pomóc w zapytaniu
Coder123 16.10.19