From 81c6e3bee2fd67574642fb06d4897d9215218529 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 13 Apr 2025 14:22:26 +0000 Subject: [PATCH] Translated ['src/macos-hardening/macos-security-and-privilege-escalation --- .../macos-tcc/README.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md index 0113a6fae..7322700dd 100644 --- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md +++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md @@ -20,13 +20,13 @@ ps -ef | grep tcc 0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system 501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd ``` -As permissões são **herdadas do aplicativo pai** e as **permissões** são **rastreadas** com base no **Bundle ID** e no **Developer ID**. +As permissões são **herdadas do aplicativo pai** e as **permissões** são **monitoradas** com base no **Bundle ID** e no **Developer ID**. ### Bancos de Dados TCC As permissões concedidas/negadas são então armazenadas em alguns bancos de dados TCC: -- O banco de dados do sistema em **`/Library/Application Support/com.apple.TCC/TCC.db`**. +- O banco de dados de sistema em **`/Library/Application Support/com.apple.TCC/TCC.db`**. - Este banco de dados é **protegido por SIP**, então apenas um bypass de SIP pode escrever nele. - O banco de dados TCC do usuário **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** para preferências por usuário. - Este banco de dados é protegido, então apenas processos com altos privilégios TCC, como Acesso Completo ao Disco, podem escrever nele (mas não é protegido por SIP). @@ -101,7 +101,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0; {{#endtab}} {{#endtabs}} -> [!DICA] +> [!TIP] > Verificando ambos os bancos de dados, você pode verificar as permissões que um aplicativo permitiu, proibiu ou não possui (ele solicitará). - O **`service`** é a representação em string da **permissão** do TCC @@ -153,7 +153,7 @@ Basta fazer **`launctl load you_bin.plist`**, com um plist como: - O **`auth_value`** pode ter diferentes valores: denied(0), unknown(1), allowed(2) ou limited(3). - O **`auth_reason`** pode assumir os seguintes valores: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12) -- O campo **csreq** está lá para indicar como verificar o binário a ser executado e conceder as permissões do TCC: +- O campo **csreq** está presente para indicar como verificar o binário a ser executado e conceder as permissões do TCC: ```bash # Query to get cserq in printable hex select service, client, hex(csreq) from access where auth_value=2; @@ -186,7 +186,7 @@ tccutil reset All ``` ### Verificações de Assinatura do TCC -O **banco de dados** do TCC armazena o **Bundle ID** do aplicativo, mas também **armazena** **informações** sobre a **assinatura** para **garantir** que o aplicativo que solicita o uso de uma permissão é o correto. +O **banco de dados** do TCC armazena o **Bundle ID** da aplicação, mas também **armazena** **informações** sobre a **assinatura** para **garantir** que o App que solicita o uso de uma permissão é o correto. ```bash # From sqlite sqlite> select service, client, hex(csreq) from access where auth_value=2; @@ -204,7 +204,7 @@ csreq -t -r /tmp/telegram_csreq.bin ### Direitos e Permissões TCC Os aplicativos **não precisam apenas** **solicitar** e ter **acesso concedido** a alguns recursos, eles também precisam **ter os direitos relevantes**.\ -Por exemplo, **Telegram** tem o direito `com.apple.security.device.camera` para solicitar **acesso à câmera**. Um **aplicativo** que **não** tem esse **direito não poderá** acessar a câmera (e o usuário nem será solicitado a dar as permissões). +Por exemplo, **Telegram** tem o direito `com.apple.security.device.camera` para solicitar **acesso à câmera**. Um **aplicativo** que **não tiver** esse **direito não poderá** acessar a câmera (e o usuário nem será solicitado a dar as permissões). No entanto, para que os aplicativos **acessam** **certas pastas do usuário**, como `~/Desktop`, `~/Downloads` e `~/Documents`, eles **não precisam** ter nenhum **direito específico.** O sistema lidará com o acesso de forma transparente e **pedirá ao usuário** conforme necessário. @@ -234,7 +234,7 @@ Algumas permissões do TCC são: kTCCServiceAppleEvents, kTCCServiceCalendar, kT ### Intenção do Usuário / com.apple.macl -Como mencionado anteriormente, é possível **conceder acesso a um App a um arquivo arrastando\&soltando-o para ele**. Esse acesso não será especificado em nenhum banco de dados do TCC, mas como um **atributo** **estendido** do arquivo. Este atributo irá **armazenar o UUID** do app permitido: +Como mencionado anteriormente, é possível **conceder acesso a um App a um arquivo arrastando e soltando-o nele**. Esse acesso não será especificado em nenhum banco de dados do TCC, mas como um **atributo** **estendido** **do arquivo**. Este atributo irá **armazenar o UUID** do app permitido: ```bash xattr Desktop/private.txt com.apple.macl @@ -254,7 +254,7 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3 > > Também note que se você mover um arquivo que permite o UUID de um aplicativo no seu computador para outro computador, porque o mesmo aplicativo terá UIDs diferentes, não concederá acesso a esse aplicativo. -O atributo estendido `com.apple.macl` **não pode ser limpo** como outros atributos estendidos porque é **protegido pelo SIP**. No entanto, como [**explicado neste post**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), é possível desativá-lo **zipando** o arquivo, **deletando**-o e **deszipando**-o. +O atributo estendido `com.apple.macl` **não pode ser limpo** como outros atributos estendidos porque é **protegido pelo SIP**. No entanto, como [**explicado neste post**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), é possível desativá-lo **compactando** o arquivo, **deletando**-o e **descompactando**-o. ## TCC Privesc & Bypasses @@ -328,7 +328,7 @@ O nome TCC da permissão de Automação é: **`kTCCServiceAppleEvents`**\ Esta permissão TCC específica também indica a **aplicação que pode ser gerenciada** dentro do banco de dados TCC (portanto, as permissões não permitem apenas gerenciar tudo). **Finder** é um aplicativo que **sempre tem FDA** (mesmo que não apareça na interface do usuário), então, se você tiver privilégios de **Automação** sobre ele, pode abusar de seus privilégios para **fazer com que ele execute algumas ações**.\ -Nesse caso, seu aplicativo precisaria da permissão **`kTCCServiceAppleEvents`** sobre **`com.apple.Finder`**. +Neste caso, seu aplicativo precisaria da permissão **`kTCCServiceAppleEvents`** sobre **`com.apple.Finder`**. {{#tabs}} {{#tab name="Steal users TCC.db"}} @@ -358,7 +358,7 @@ EOD {{#endtab}} {{#endtabs}} -Você pode abusar disso para **escrever seu próprio banco de dados TCC de usuário**. +Você poderia abusar disso para **escrever seu próprio banco de dados TCC de usuário**. > [!WARNING] > Com esta permissão, você poderá **pedir ao Finder para acessar pastas restritas do TCC** e lhe dar os arquivos, mas até onde sei, você **não poderá fazer o Finder executar código arbitrário** para abusar totalmente do acesso FDA dele. @@ -396,11 +396,11 @@ EOD ``` -O mesmo acontece com o **Script Editor app,** ele pode controlar o Finder, mas usando um AppleScript você não pode forçá-lo a executar um script. +O mesmo acontece com o **Script Editor app**, ele pode controlar o Finder, mas usando um AppleScript você não pode forçá-lo a executar um script. ### Automação (SE) para algum TCC -**Eventos do Sistema podem criar Ações de Pasta, e Ações de Pasta podem acessar algumas pastas do TCC** (Desktop, Documents & Downloads), então um script como o seguinte pode ser usado para abusar desse comportamento: +**System Events pode criar Ações de Pasta, e Ações de Pasta podem acessar algumas pastas do TCC** (Desktop, Documents & Downloads), então um script como o seguinte pode ser usado para abusar desse comportamento: ```bash # Create script to execute with the action cat > "/tmp/script.js" <