mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 13:43:24 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
7bef82098c
commit
4d74aaf900
11 changed files with 106 additions and 56 deletions
|
@ -171,8 +171,8 @@
|
|||
* [macOS XPC](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/README.md)
|
||||
* [macOS XPC Authorization](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-authorization.md)
|
||||
* [macOS XPC Connecting Process Check](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md)
|
||||
* [macOS xpc\_connection\_get\_audit\_token Attack](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-xpc\_connection\_get\_audit\_token-attack.md)
|
||||
* [macOS PID Reuse](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-pid-reuse.md)
|
||||
* [macOS xpc\_connection\_get\_audit\_token Attack](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/macos-xpc\_connection\_get\_audit\_token-attack.md)
|
||||
* [macOS Thread Injection via Task port](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md)
|
||||
* [macOS Library Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/README.md)
|
||||
* [macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES](macos-hardening/macos-security-and-privilege-escalation/macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
|
||||
|
|
|
@ -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 suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -22,7 +22,7 @@ Os arquivos NIB são usados no ecossistema de desenvolvimento da Apple para **de
|
|||
Além disso, os **arquivos NIB** também podem ser usados para **executar comandos arbitrários** e se o arquivo NIB for modificado em um aplicativo, o **Gatekeeper ainda permitirá a execução do aplicativo**, então eles podem ser usados para **executar comandos arbitrários dentro de aplicativos**.
|
||||
{% endhint %}
|
||||
|
||||
## Injeção de NIB Sujo <a href="#dirtynib" id="dirtynib"></a>
|
||||
## Injeção de Dirty NIB <a href="#dirtynib" id="dirtynib"></a>
|
||||
|
||||
Primeiro, precisamos criar um novo arquivo NIB, usaremos o XCode para a maior parte da construção. Começamos adicionando um objeto à interface e definimos a classe como NSAppleScript:
|
||||
|
||||
|
@ -32,7 +32,7 @@ Para o objeto, precisamos definir a propriedade `source` inicial, o que podemos
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (682).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
Isso configura nosso gadget de execução de código, que apenas vai **executar AppleScript sob demanda**. Para realmente acionar a execução do AppleScript, vamos adicionar um botão por enquanto (você pode, é claro, ser criativo com isso ;). O botão será vinculado ao objeto `Apple Script` que acabamos de criar e **invocará o seletor `executeAndReturnError:`**:
|
||||
Isso configura nosso gadget de execução de código, que apenas vai **executar o AppleScript quando solicitado**. Para realmente acionar a execução do AppleScript, vamos adicionar um botão por enquanto (você pode, é claro, ser criativo com isso ;). O botão será vinculado ao objeto `Apple Script` que acabamos de criar e **invocará o seletor `executeAndReturnError:`**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (683).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -45,7 +45,7 @@ E se executarmos isso no depurador do XCode e clicarmos no botão:
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (684).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
Com nossa capacidade de executar código AppleScript arbitrário a partir de um NIB, em seguida, precisamos de um alvo. Vamos escolher o Pages para nossa demonstração inicial, que é, é claro, um aplicativo da Apple e certamente não deve ser modificável por nós.
|
||||
Com nossa capacidade de executar código AppleScript arbitrário a partir de um NIB, precisamos de um alvo. Vamos escolher o Pages para nossa demonstração inicial, que é, é claro, um aplicativo da Apple e certamente não deve ser modificável por nós.
|
||||
|
||||
Primeiro, faremos uma cópia do aplicativo em `/tmp/`:
|
||||
```bash
|
||||
|
@ -95,7 +95,7 @@ No entanto, ao analisar o arquivo **`/System/Volumes/Preboot/*/boot/*/usr/standa
|
|||
|
||||
A partir do macOS Somona, existem algumas proteções **impedindo a gravação dentro dos aplicativos**. No entanto, ainda é possível contornar essa proteção se, antes de executar sua cópia do binário, você alterar o nome da pasta Contents:
|
||||
|
||||
1. Faça uma cópia do `CarPlay Simulator.app` para `/tmp/`
|
||||
1. Faça uma cópia de `CarPlay Simulator.app` para `/tmp/`
|
||||
2. Renomeie `/tmp/Carplay Simulator.app/Contents` para `/tmp/CarPlay Simulator.app/NotCon`
|
||||
3. Execute o binário `/tmp/CarPlay Simulator.app/NotCon/MacOS/CarPlay Simulator` para armazenar em cache dentro do Gatekeeper
|
||||
4. Substitua `NotCon/Resources/Base.lproj/MainMenu.nib` pelo nosso arquivo `Dirty.nib`
|
||||
|
|
|
@ -56,27 +56,35 @@ Nos aplicativos do macOS, isso geralmente está localizado em `application.app/C
|
|||
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
|
||||
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
|
||||
```
|
||||
Você pode carregar este arquivo em [https://hexed.it/](https://hexed.it/) e procurar pela string anterior. Após essa string, você pode ver em ASCII um número "0" ou "1" indicando se cada fusível está desabilitado ou habilitado. Basta modificar o código hexadecimal (`0x30` é `0` e `0x31` é `1`) para **modificar os valores dos fusíveis**.
|
||||
Você pode carregar este arquivo em [https://hexed.it/](https://hexed.it/) e procurar pela string anterior. Após esta string, você pode ver em ASCII um número "0" ou "1" indicando se cada fusível está desabilitado ou habilitado. Basta modificar o código hexadecimal (`0x30` é `0` e `0x31` é `1`) para **modificar os valores dos fusíveis**.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Observe que se você tentar **sobrescrever** o binário do **`Electron Framework`** dentro de um aplicativo com esses bytes modificados, o aplicativo não será executado.
|
||||
Observe que se você tentar **sobrescrever** o **binário do Framework Electron** dentro de um aplicativo com esses bytes modificados, o aplicativo não será executado.
|
||||
|
||||
## RCE adicionando código a Aplicações Electron
|
||||
|
||||
Pode haver **arquivos JS/HTML externos** que um aplicativo Electron está usando, então um invasor pode injetar código nesses arquivos cuja assinatura não será verificada e executar código arbitrário no contexto do aplicativo.
|
||||
Pode haver **arquivos JS/HTML externos** que um aplicativo Electron está usando, então um atacante pode injetar código nesses arquivos cuja assinatura não será verificada e executar código arbitrário no contexto do aplicativo.
|
||||
|
||||
{% hint style="danger" %}
|
||||
No entanto, no momento existem 2 limitações:
|
||||
|
||||
* A permissão **`kTCCServiceSystemPolicyAppBundles`** é **necessária** para modificar um aplicativo, portanto, por padrão, isso não é mais possível.
|
||||
* O arquivo **`asap`** compilado geralmente tem os fusíveis **`embeddedAsarIntegrityValidation`** `e` **`onlyLoadAppFromAsar`** `habilitados`
|
||||
* O arquivo compilado **`asap`** geralmente tem os fusíveis **`embeddedAsarIntegrityValidation`** `e` **`onlyLoadAppFromAsar`** `habilitados`
|
||||
|
||||
Tornando esse caminho de ataque mais complicado (ou impossível).
|
||||
{% endhint %}
|
||||
|
||||
Observe que é possível contornar o requisito de **`kTCCServiceSystemPolicyAppBundles`** copiando o aplicativo para outro diretório (como **`/tmp`**), renomeando a pasta **`app.app/Contents`** para **`app.app/NotCon`**, **modificando** o arquivo **asar** com seu código **malicioso**, renomeando-o de volta para **`app.app/Contents`** e executando-o.
|
||||
|
||||
Você pode descompactar o código do arquivo asar com:
|
||||
```bash
|
||||
npx asar extract app.asar app-decomp
|
||||
```
|
||||
E empacote-o novamente após tê-lo modificado com:
|
||||
```bash
|
||||
npx asar pack app-decomp app-new.asar
|
||||
```
|
||||
## RCE com `ELECTRON_RUN_AS_NODE` <a href="#electron_run_as_node" id="electron_run_as_node"></a>
|
||||
|
||||
De acordo com [**a documentação**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), se essa variável de ambiente for definida, ela iniciará o processo como um processo Node.js normal.
|
||||
|
@ -127,7 +135,7 @@ Você pode armazenar a carga útil em um arquivo diferente e executá-lo:
|
|||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Content of /tmp/payload.js
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Ca$
|
||||
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator');
|
||||
|
||||
# Execute
|
||||
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
|
@ -204,7 +212,7 @@ Você pode abusar dessa variável de ambiente em um plist para manter a persist
|
|||
## Bypassando o TCC abusando de versões antigas
|
||||
|
||||
{% hint style="success" %}
|
||||
O daemon TCC do macOS não verifica a versão executada do aplicativo. Portanto, se você **não consegue injetar código em um aplicativo Electron** com nenhuma das técnicas anteriores, você pode baixar uma versão anterior do aplicativo e injetar código nele, pois ele ainda obterá os privilégios do TCC.
|
||||
O daemon TCC do macOS não verifica a versão executada do aplicativo. Portanto, se você **não consegue injetar código em um aplicativo Electron** com nenhuma das técnicas anteriores, você pode baixar uma versão anterior do aplicativo e injetar código nele, pois ele ainda obterá as permissões do TCC (a menos que o Trust Cache o impeça).
|
||||
{% endhint %}
|
||||
|
||||
## Injeção Automática
|
||||
|
|
|
@ -72,11 +72,11 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
Os presentes em **`LaunchDameons`** são executados pelo root. Portanto, se um processo não privilegiado puder se comunicar com um deles, poderá conseguir elevar os privilégios.
|
||||
Os presentes em **`LaunchDameons`** são executados pelo root. Portanto, se um processo não privilegiado puder se comunicar com um deles, poderá ser capaz de elevar os privilégios.
|
||||
|
||||
## Mensagens de Evento XPC
|
||||
|
||||
As aplicações podem **se inscrever** em diferentes mensagens de evento, permitindo que sejam **iniciadas sob demanda** quando esses eventos ocorrerem. A **configuração** desses serviços é feita em arquivos **plist do launchd**, localizados nos **mesmos diretórios dos anteriores** e contendo uma chave extra **`LaunchEvent`**.
|
||||
As aplicações podem **se inscrever** em diferentes **mensagens de evento**, permitindo que sejam **iniciadas sob demanda** quando esses eventos ocorrerem. A **configuração** desses serviços é feita em arquivos **plist do launchd**, localizados nos **mesmos diretórios dos anteriores** e contendo uma chave adicional **`LaunchEvent`**.
|
||||
|
||||
### Verificação do Processo de Conexão XPC
|
||||
|
||||
|
@ -107,7 +107,7 @@ xpcspy -U -r -W <bundle-id>
|
|||
## Using filters (i: for input, o: for output)
|
||||
xpcspy -U <prog-name> -t 'i:com.apple.*' -t 'o:com.apple.*' -r
|
||||
```
|
||||
## Exemplo de Código C
|
||||
## Exemplo de Código de Comunicação XPC
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="xpc_server.c" %}
|
||||
|
@ -247,7 +247,7 @@ sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.service.plist
|
|||
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.service.plist
|
||||
sudo rm /Library/LaunchDaemons/xyz.hacktricks.service.plist /tmp/xpc_server
|
||||
```
|
||||
## Exemplo de Código Objective-C
|
||||
## Exemplo de Código Objective-C para Comunicação XPC
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="oc_xpc_server.m" %}
|
||||
|
@ -324,6 +324,12 @@ return 0;
|
|||
}
|
||||
```
|
||||
{% tab title="xyz.hacktricks.svcoc.plist" %}
|
||||
|
||||
O arquivo `xyz.hacktricks.svcoc.plist` é um arquivo de propriedades do Launchd usado para definir e controlar serviços no macOS. O Launchd é o sistema de inicialização e gerenciamento de processos do macOS. O arquivo plist contém informações sobre o serviço, como o caminho do executável, argumentos, variáveis de ambiente e outras configurações.
|
||||
|
||||
Para explorar vulnerabilidades de escalonamento de privilégios usando o arquivo `xyz.hacktricks.svcoc.plist`, você pode procurar por configurações inadequadas que permitam a execução de comandos privilegiados ou a substituição do executável por um binário malicioso. Além disso, você pode verificar se há permissões excessivas definidas para o arquivo plist, o que pode permitir a modificação não autorizada.
|
||||
|
||||
É importante ressaltar que a exploração de vulnerabilidades de escalonamento de privilégios é ilegal e deve ser realizada apenas em um ambiente controlado e com permissão adequada.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
|
||||
|
@ -384,7 +390,7 @@ int main(int argc, const char * argv[]) {
|
|||
xpc_object_t message = xpc_dictionary_create(NULL, NULL, 0);
|
||||
xpc_dictionary_set_string(message, "key", "value");
|
||||
|
||||
xpc_connection_send_message_with_reply(connection, message, dispatch_get_main_queue(), ^(xpc_object_t reply) {
|
||||
xpc_connection_send_message_with_reply(connection, message, dispatch_get_main_queue(), ^(xpc_object_t response) {
|
||||
// Manipule a resposta recebida do serviço XPC aqui
|
||||
});
|
||||
|
||||
|
|
|
@ -276,7 +276,6 @@ is-admin (admin), is-admin-nonshared (admin), is-appstore (_appstore), is-develo
|
|||
Rights with 'allow-root': 'true':
|
||||
com-apple-aosnotification-findmymac-remove, com-apple-diskmanagement-reservekek, com-apple-openscripting-additions-send, com-apple-reportpanic-fixright, com-apple-servicemanagement-blesshelper, com-apple-xtype-fontmover-install, com-apple-xtype-fontmover-remove, com-apple-dt-instruments-process-analysis, com-apple-dt-instruments-process-kill, com-apple-pcastagentconfigd-wildcard, com-apple-trust-settings-admin, com-apple-wifivelocity, com-apple-wireless-diagnostics, is-root, system-install-iap-software, system-install-software, system-install-software-iap, system-preferences, system-preferences-accounts, system-preferences-datetime, system-preferences-energysaver, system-preferences-network, system-preferences-printing, system-preferences-security, system-preferences-sharing, system-preferences-softwareupdate, system-preferences-startupdisk, system-preferences-timemachine, system-print-operator, system-privilege-admin, system-services-networkextension-filtering, system-services-networkextension-vpn, system-services-systemconfiguration-network, system-sharepoints-wildcard
|
||||
|
||||
|
||||
Rights with 'session-owner': 'true':
|
||||
authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui
|
||||
```
|
||||
|
@ -322,7 +321,7 @@ Por último, precisamos saber o **nome do Mach Service exposto** para estabelece
|
|||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* No plist do launchd:
|
||||
* No arquivo launchd plist:
|
||||
```xml
|
||||
cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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 cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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**? Verifique 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 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)**.**
|
||||
|
@ -17,9 +17,9 @@
|
|||
Quando uma conexão é estabelecida com um serviço XPC, o servidor verificará se a conexão é permitida. Estas são as verificações que normalmente são realizadas:
|
||||
|
||||
1. Verificar se o **processo de conexão está assinado com um certificado assinado pela Apple** (apenas fornecido pela Apple).
|
||||
* Se isso **não for verificado**, um atacante pode criar um **certificado falso** para corresponder a qualquer outra verificação.
|
||||
* Se isso **não for verificado**, um atacante poderia criar um **certificado falso** para corresponder a qualquer outra verificação.
|
||||
2. Verificar se o processo de conexão está assinado com o **certificado da organização** (verificação do ID da equipe).
|
||||
* Se isso **não for verificado**, qualquer certificado de desenvolvedor da Apple pode ser usado para assinar e se conectar ao serviço.
|
||||
* Se isso **não for verificado**, **qualquer certificado de desenvolvedor** da Apple pode ser usado para assinar e se conectar ao serviço.
|
||||
3. Verificar se o processo de conexão **contém um ID de pacote adequado**.
|
||||
* Se isso **não for verificado**, qualquer ferramenta **assinada pela mesma organização** pode ser usada para interagir com o serviço XPC.
|
||||
4. (4 ou 5) Verificar se o processo de conexão possui um **número de versão de software adequado**.
|
||||
|
@ -47,7 +47,7 @@ Para obter mais informações sobre o ataque **`xpc_connection_get_audit_token`*
|
|||
|
||||
### Prevenção de Ataques de Downgrade - Trustcache
|
||||
|
||||
Trustcache é um método defensivo introduzido em máquinas Apple Silicon que armazena um banco de dados de CDHSAH de binários da Apple, permitindo apenas a execução de binários não modificados. Isso impede a execução de versões degradadas.
|
||||
Trustcache é um método defensivo introduzido em máquinas Apple Silicon que armazena um banco de dados de CDHSAH de binários da Apple, para que apenas binários não modificados permitidos possam ser executados. Isso impede a execução de versões de downgrade.
|
||||
|
||||
### Exemplos de Código
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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 cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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 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)**.**
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
## Reutilização de PID
|
||||
|
||||
Quando um serviço **XPC** do macOS verifica o processo chamado com base no **PID** e não no **token de auditoria**, ele está vulnerável a um ataque de reutilização de PID. Esse ataque é baseado em uma **condição de corrida**, onde um **exploit** vai **enviar mensagens para o XPC** abusando da funcionalidade e, **logo após**, executar **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** com o binário **permitido**.
|
||||
Quando um serviço **XPC** do macOS verifica o processo chamado com base no **PID** e não no **token de auditoria**, ele está vulnerável a um ataque de reutilização de PID. Esse ataque é baseado em uma **condição de corrida** em que um **exploit** vai **enviar mensagens para o XPC** abusando da funcionalidade e, **logo após**, executar **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** com o binário **permitido**.
|
||||
|
||||
Essa função fará com que o **binário permitido possua o PID**, mas a **mensagem XPC maliciosa terá sido enviada** logo antes. Portanto, se o serviço **XPC** usar o **PID** para **autenticar** o remetente e verificar isso **APÓS** a execução do **`posix_spawn`**, ele pensará que vem de um processo **autorizado**.
|
||||
|
||||
|
@ -31,7 +31,7 @@ Verifique este exemplo de exploit (novamente, retirado da referência) para ver
|
|||
* **Cada fork** irá **enviar** a **carga útil** para o serviço XPC enquanto executa **`posix_spawn`** logo após o envio da mensagem.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Para que o exploit funcione, é importante exportar **`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`** ou colocar no exploit:
|
||||
Para que o exploit funcione, é importante `exportar` **`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`** ou colocar dentro do exploit:
|
||||
```objectivec
|
||||
asm(".section __DATA,__objc_fork_ok\n"
|
||||
"empty:\n"
|
||||
|
|
|
@ -20,36 +20,36 @@ Observe que as permissões que começam com **`com.apple`** não estão disponí
|
|||
|
||||
### `com.apple.rootless.install.heritable`
|
||||
|
||||
A permissão **`com.apple.rootless.install.heritable`** permite **burlar o SIP**. Verifique [isto para mais informações](macos-sip.md#com.apple.rootless.install.heritable).
|
||||
A permissão **`com.apple.rootless.install.heritable`** permite **burlar o SIP**. Verifique [isso para mais informações](macos-sip.md#com.apple.rootless.install.heritable).
|
||||
|
||||
### **`com.apple.rootless.install`**
|
||||
|
||||
A permissão **`com.apple.rootless.install`** permite **burlar o SIP**. Verifique [isto para mais informações](macos-sip.md#com.apple.rootless.install).
|
||||
A permissão **`com.apple.rootless.install`** permite **burlar o SIP**. Verifique [isso para mais informações](macos-sip.md#com.apple.rootless.install).
|
||||
|
||||
### **`com.apple.system-task-ports` (anteriormente chamado `task_for_pid-allow`)**
|
||||
### **`com.apple.system-task-ports` (anteriormente chamado de `task_for_pid-allow`)**
|
||||
|
||||
Essa permissão permite obter a **porta da tarefa para qualquer** processo, exceto o kernel. Verifique [**isto para mais informações**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
Essa permissão permite obter a **porta da tarefa para qualquer** processo, exceto o kernel. Verifique [**isso para mais informações**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
|
||||
### `com.apple.security.get-task-allow`
|
||||
|
||||
Essa permissão permite que outros processos com a permissão **`com.apple.security.cs.debugger`** obtenham a porta da tarefa do processo executado pelo binário com essa permissão e **injetem código nele**. Verifique [**isto para mais informações**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
Essa permissão permite que outros processos com a permissão **`com.apple.security.cs.debugger`** obtenham a porta da tarefa do processo executado pelo binário com essa permissão e **injetem código nele**. Verifique [**isso para mais informações**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
|
||||
### `com.apple.security.cs.debugger`
|
||||
|
||||
Aplicativos com a Permissão da Ferramenta de Depuração podem chamar `task_for_pid()` para recuperar uma porta de tarefa válida para aplicativos não assinados e de terceiros com a permissão `Get Task Allow` definida como `true`. No entanto, mesmo com a permissão da ferramenta de depuração, um depurador **não pode obter as portas de tarefa** de processos que **não possuem a permissão `Get Task Allow`**, e que portanto estão protegidos pela Proteção de Integridade do Sistema. Verifique [**isto para mais informações**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
|
||||
Aplicativos com a Permissão da Ferramenta de Depuração podem chamar `task_for_pid()` para recuperar uma porta de tarefa válida para aplicativos não assinados e de terceiros com a permissão `Get Task Allow` definida como `true`. No entanto, mesmo com a permissão da ferramenta de depuração, um depurador **não pode obter as portas de tarefa** de processos que **não possuem a permissão `Get Task Allow`**, e que portanto estão protegidos pela Proteção de Integridade do Sistema. Verifique [**isso para mais informações**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
|
||||
|
||||
### `com.apple.security.cs.disable-library-validation`
|
||||
|
||||
Essa permissão permite **carregar frameworks, plug-ins ou bibliotecas sem serem assinados pela Apple ou assinados com o mesmo ID de equipe** que o executável principal, portanto, um invasor pode abusar de alguma carga de biblioteca arbitrária para injetar código. Verifique [**isto para mais informações**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
|
||||
Essa permissão permite **carregar frameworks, plug-ins ou bibliotecas sem serem assinados pela Apple ou assinados com o mesmo ID de equipe** que o executável principal, portanto, um invasor pode abusar de alguma carga de biblioteca arbitrária para injetar código. Verifique [**isso para mais informações**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
|
||||
|
||||
### `com.apple.private.security.clear-library-validation`
|
||||
|
||||
Essa permissão é muito semelhante a **`com.apple.security.cs.disable-library-validation`**, mas **em vez disso** de **desabilitar diretamente** a validação da biblioteca, ela permite que o processo **chame uma chamada de sistema `csops` para desabilitá-la**.\
|
||||
Verifique [**isto para mais informações**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
|
||||
Verifique [**isso para mais informações**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
|
||||
|
||||
### `com.apple.security.cs.allow-dyld-environment-variables`
|
||||
|
||||
Essa permissão permite **usar variáveis de ambiente DYLD** que podem ser usadas para injetar bibliotecas e código. Verifique [**isto para mais informações**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
|
||||
Essa permissão permite **usar variáveis de ambiente DYLD** que podem ser usadas para injetar bibliotecas e código. Verifique [**isso para mais informações**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
|
||||
|
||||
### `com.apple.private.tcc.manager` e `com.apple.rootless.storage`.`TCC`
|
||||
|
||||
|
@ -63,20 +63,28 @@ Essas permissões permitem **instalar software sem solicitar permissões** ao us
|
|||
|
||||
Permissão necessária para solicitar ao **kernel que carregue uma extensão de kernel**.
|
||||
|
||||
### **`com.apple.private.icloud-account-access`**
|
||||
|
||||
A permissão **`com.apple.private.icloud-account-access`** permite comunicar-se com o serviço XPC **`com.apple.iCloudHelper`**, que fornecerá tokens do iCloud.
|
||||
|
||||
**iMovie** e **Garageband** tinham essa permissão.
|
||||
|
||||
Para mais **informações** sobre a exploração para **obter tokens do iCloud** dessa permissão, confira a palestra: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
|
||||
### `com.apple.private.tcc.manager.check-by-audit-token`
|
||||
|
||||
TODO: Não sei o que isso permite fazer
|
||||
TODO: Não sei o que isso permite fazer.
|
||||
|
||||
### `com.apple.private.apfs.revert-to-snapshot`
|
||||
|
||||
TODO: Em [**este relatório**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **é mencionado que isso poderia ser usado para** atualizar o conteúdo protegido por SSV após uma reinicialização. Se você souber como, envie um PR, por favor!
|
||||
TODO: Neste [**relatório**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) é mencionado que isso poderia ser usado para atualizar o conteúdo protegido pelo SSV após uma reinicialização. Se você souber como fazer isso, envie um PR, por favor!
|
||||
|
||||
### `com.apple.private.apfs.create-sealed-snapshot`
|
||||
|
||||
TODO: Neste [**relatório**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **é mencionado que isso pode ser usado para** atualizar o conteúdo protegido pelo SSV após uma reinicialização. Se você souber como fazer isso, envie um PR, por favor!
|
||||
TODO: Neste [**relatório**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) é mencionado que isso poderia ser usado para atualizar o conteúdo protegido pelo SSV após uma reinicialização. Se você souber como fazer isso, envie um PR, por favor!
|
||||
|
||||
### `keychain-access-groups`
|
||||
|
||||
Esta lista de permissões **keychain** agrupa os grupos de acesso que o aplicativo possui:
|
||||
Esta lista de permissões **keychain** agrupa os grupos aos quais o aplicativo tem acesso:
|
||||
```xml
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
|
@ -89,7 +97,7 @@ Esta lista de permissões **keychain** agrupa os grupos de acesso que o aplicati
|
|||
```
|
||||
### **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Concede permissões de **Acesso Total ao Disco**, uma das permissões mais altas do TCC.
|
||||
Concede permissões de **Acesso Total ao Disco**, uma das permissões mais altas do TCC que você pode ter.
|
||||
|
||||
### **`kTCCServiceAppleEvents`**
|
||||
|
||||
|
@ -131,14 +139,25 @@ A Permissão de Desativação de Proteção de Memória Executável é uma permi
|
|||
|
||||
TODO
|
||||
|
||||
### `kTCCServiceAll`
|
||||
|
||||
De acordo com este post de blog, essa permissão do TCC geralmente é encontrada na forma:
|
||||
```
|
||||
[Key] com.apple.private.tcc.allow-prompting
|
||||
[Value]
|
||||
[Array]
|
||||
[String] kTCCServiceAll
|
||||
```
|
||||
Permita que o processo **solicite todas as permissões do 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**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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 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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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 seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -118,7 +118,7 @@ spctl --master-disable
|
|||
spctl --global-enable
|
||||
spctl --master-enable
|
||||
```
|
||||
Quando totalmente habilitado, uma nova opção aparecerá:
|
||||
Quando totalmente habilitada, uma nova opção aparecerá:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (679).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -172,7 +172,7 @@ spctl --disable
|
|||
```
|
||||
Você também pode **verificar se um arquivo possui o atributo de quarentena estendida** com:
|
||||
```bash
|
||||
xattr portada.png
|
||||
xattr file.png
|
||||
com.apple.macl
|
||||
com.apple.quarantine
|
||||
```
|
||||
|
@ -210,7 +210,7 @@ As informações de quarentena também são armazenadas em um banco de dados cen
|
|||
|
||||
### XProtect
|
||||
|
||||
XProtect é um recurso embutido de **anti-malware** no macOS. O XProtect **verifica qualquer aplicativo quando ele é executado pela primeira vez ou modificado em relação ao seu banco de dados** de malwares conhecidos e tipos de arquivo inseguros. Quando você baixa um arquivo por meio de determinados aplicativos, como Safari, Mail ou Messages, o XProtect verifica automaticamente o arquivo. Se ele corresponder a algum malware conhecido em seu banco de dados, o XProtect **impedirá a execução do arquivo** e o alertará sobre a ameaça.
|
||||
XProtect é um recurso embutido de **anti-malware** no macOS. O XProtect **verifica qualquer aplicativo quando ele é executado ou modificado pela primeira vez em relação ao seu banco de dados** de malwares conhecidos e tipos de arquivo inseguros. Quando você baixa um arquivo por meio de determinados aplicativos, como Safari, Mail ou Messages, o XProtect verifica automaticamente o arquivo. Se ele corresponder a algum malware conhecido em seu banco de dados, o XProtect **impedirá a execução do arquivo** e o alertará sobre a ameaça.
|
||||
|
||||
O banco de dados do XProtect é **atualizado regularmente** pela Apple com novas definições de malware, e essas atualizações são baixadas e instaladas automaticamente em seu Mac. Isso garante que o XProtect esteja sempre atualizado com as últimas ameaças conhecidas.
|
||||
|
||||
|
@ -245,7 +245,7 @@ Verifique o [**relatório original**](https://labs.withsecure.com/publications/t
|
|||
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
Quando um aplicativo é criado com o **Automator**, as informações sobre o que ele precisa executar estão dentro de `application.app/Contents/document.wflow` e não no executável. O executável é apenas um binário genérico do Automator chamado **Automator Application Stub**.
|
||||
Quando um aplicativo é criado com o **Automator**, as informações sobre o que ele precisa executar estão dentro de `application.app/Contents/document.wflow`, não no executável. O executável é apenas um binário genérico do Automator chamado **Automator Application Stub**.
|
||||
|
||||
Portanto, você poderia fazer com que `application.app/Contents/MacOS/Automator\ Application\ Stub` **apontasse com um link simbólico para outro Automator Application Stub dentro do sistema** e ele executaria o que está dentro de `document.wflow` (seu script) **sem acionar o Gatekeeper** porque o executável real não possui o atributo de quarentena.
|
||||
|
||||
|
|
|
@ -111,9 +111,13 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...
|
|||
<array/>
|
||||
[...]
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Tudo criado/modificado por um aplicativo em Sandbox receberá o atributo de **quarentena**. Isso impedirá que um espaço em sandbox seja acionado pelo Gatekeeper se o aplicativo em sandbox tentar executar algo com **`open`**.
|
||||
{% endhint %}
|
||||
|
||||
### Perfis de Sandbox
|
||||
|
||||
Os perfis de Sandbox são arquivos de configuração que indicam o que será **permitido/proibido** nessa **Sandbox**. Eles utilizam a **Linguagem de Perfil de Sandbox (SBPL)**, que utiliza a linguagem de programação [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)).
|
||||
Os perfis de Sandbox são arquivos de configuração que indicam o que será **permitido/proibido** nesse **Sandbox**. Ele usa a **Linguagem de Perfil de Sandbox (SBPL)**, que utiliza a linguagem de programação [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)).
|
||||
|
||||
Aqui você pode encontrar um exemplo:
|
||||
```scheme
|
||||
|
@ -173,6 +177,20 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last
|
|||
[...]
|
||||
```
|
||||
{% code title="touch2.sb" %}
|
||||
|
||||
O arquivo `touch2.sb` é um exemplo de um perfil de sandbox para o macOS. A sandbox é uma medida de segurança implementada pelo sistema operacional para restringir as ações de um aplicativo, limitando seu acesso a recursos sensíveis do sistema.
|
||||
|
||||
Este perfil de sandbox em particular permite que um aplicativo execute a ação de tocar (criar) um arquivo em um diretório específico. O aplicativo só terá permissão para criar arquivos nesse diretório e não poderá acessar ou modificar outros arquivos ou diretórios no sistema.
|
||||
|
||||
Para usar este perfil de sandbox, você precisa atribuí-lo a um aplicativo específico usando o comando `sandbox-exec`. Por exemplo:
|
||||
|
||||
```
|
||||
sandbox-exec -f touch2.sb touch /path/to/directory/file.txt
|
||||
```
|
||||
|
||||
Isso permitirá que o aplicativo toque (crie) o arquivo `file.txt` no diretório `/path/to/directory/`.
|
||||
|
||||
Lembre-se de que a sandbox é apenas uma camada adicional de segurança e não deve ser considerada como a única medida de proteção. É importante implementar outras práticas de segurança, como atualizações regulares do sistema operacional, uso de senhas fortes e conscientização sobre phishing e malware.
|
||||
```scheme
|
||||
(version 1)
|
||||
(deny default)
|
||||
|
@ -200,7 +218,7 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last
|
|||
{% endtabs %}
|
||||
|
||||
{% hint style="info" %}
|
||||
Observe que o **software** **desenvolvido pela Apple** que roda no **Windows** **não possui precauções de segurança adicionais**, como a aplicação de sandbox.
|
||||
Observe que o **software** **desenvolvido pela Apple** que roda no **Windows** **não possui precauções adicionais de segurança**, como a aplicação de sandbox.
|
||||
{% endhint %}
|
||||
|
||||
Exemplos de bypass:
|
||||
|
|
|
@ -44,7 +44,7 @@ Observe que agora, para poder habilitar o SSH, você precisa de "Acesso total ao
|
|||
|
||||
### Manipular extensões - CVE-2022-26767
|
||||
|
||||
O atributo `com.apple.macl` é atribuído a arquivos para dar permissões a um determinado aplicativo para lê-lo. Esse atributo é definido quando arrastamos e soltamos um arquivo sobre um aplicativo ou quando um usuário clica duas vezes em um arquivo para abri-lo com o aplicativo padrão.
|
||||
O atributo `com.apple.macl` é atribuído a arquivos para dar permissões a um determinado aplicativo para lê-lo. Esse atributo é definido quando arrastamos e soltamos um arquivo sobre um aplicativo, ou quando um usuário clica duas vezes em um arquivo para abri-lo com o aplicativo padrão.
|
||||
|
||||
Portanto, um usuário poderia registrar um aplicativo malicioso para manipular todas as extensões e chamar o Launch Services para abrir qualquer arquivo (assim, o arquivo malicioso terá acesso para lê-lo).
|
||||
|
||||
|
@ -54,13 +54,13 @@ A permissão `com.apple.private.icloud-account-access` permite a comunicação c
|
|||
|
||||
O iMovie e o Garageband tinham essa permissão e outras que permitiam.
|
||||
|
||||
Para mais informações sobre a exploração para obter tokens do iCloud a partir dessa permissão, confira a palestra: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
|
||||
Para obter mais informações sobre a exploração para obter tokens do iCloud a partir dessa permissão, confira a palestra: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
|
||||
|
||||
### kTCCServiceAppleEvents / Automação
|
||||
|
||||
Um aplicativo com a permissão `kTCCServiceAppleEvents` poderá controlar outros aplicativos. Isso significa que ele poderá abusar das permissões concedidas aos outros aplicativos.
|
||||
|
||||
Para mais informações sobre Scripts da Apple, confira:
|
||||
Para obter mais informações sobre Scripts da Apple, confira:
|
||||
|
||||
{% content-ref url="macos-apple-scripts.md" %}
|
||||
[macos-apple-scripts.md](macos-apple-scripts.md)
|
||||
|
@ -223,7 +223,7 @@ Para mais informações, consulte o [**relatório original**](https://wojciechre
|
|||
|
||||
### CVE-2020-29621 - Coreaudiod
|
||||
|
||||
O binário **`/usr/sbin/coreaudiod`** tinha os entitlements `com.apple.security.cs.disable-library-validation` e `com.apple.private.tcc.manager`. O primeiro **permite a injeção de código** e o segundo dá acesso para **gerenciar o TCC**.
|
||||
O binário **`/usr/sbin/coreaudiod`** tinha os entitlements `com.apple.security.cs.disable-library-validation` e `com.apple.private.tcc.manager`. O primeiro **permitindo injeção de código** e o segundo dando acesso para **gerenciar o TCC**.
|
||||
|
||||
Esse binário permitia carregar **plug-ins de terceiros** da pasta `/Library/Audio/Plug-Ins/HAL`. Portanto, era possível **carregar um plugin e abusar das permissões do TCC** com este PoC:
|
||||
```objectivec
|
||||
|
@ -300,11 +300,11 @@ O Telegram tinha as permissões `com.apple.security.cs.allow-dyld-environment-va
|
|||
|
||||
## Por invocações abertas
|
||||
|
||||
É possível invocar o comando `open` mesmo estando em um ambiente sandbox.
|
||||
É possível invocar o **`open`** mesmo estando em um ambiente sandbox 
|
||||
|
||||
### Scripts do Terminal
|
||||
|
||||
É bastante comum conceder ao terminal **Acesso Total ao Disco (FDA)**, pelo menos em computadores usados por pessoas de tecnologia. E é possível invocar scripts **`.terminal`** usando isso.
|
||||
É bastante 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 isso.
|
||||
|
||||
Os scripts **`.terminal`** são arquivos plist, como este, com o comando a ser executado na chave **`CommandString`**:
|
||||
```xml
|
||||
|
@ -408,7 +408,7 @@ A pasta **`/var/db/locationd/` não estava protegida contra montagem de DMG**, e
|
|||
[macos-auto-start-locations.md](../../../../macos-auto-start-locations.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Por meio do comando grep
|
||||
## Por meio de grep
|
||||
|
||||
Em várias ocasiões, arquivos armazenam informações sensíveis como e-mails, números de telefone, mensagens... em locais não protegidos (o que é considerado uma vulnerabilidade na Apple).
|
||||
|
||||
|
|
Loading…
Reference in a new issue