<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Na imagem anterior, é possível observar **como o sandbox será carregado** quando um aplicativo com a permissão **`com.apple.security.app-sandbox`** é executado.
Em seguida, **`libSystem.B`** chamará outras várias funções até que o **`xpc_pipe_routine`** envie as permissões do aplicativo para o **`securityd`**. O Securityd verifica se o processo deve ser colocado em quarentena dentro do Sandbox e, se sim, ele será colocado em quarentena.\
Por fim, o sandbox será ativado com uma chamada para **`__sandbox_ms`**, que chamará **`__mac_syscall`**.
**Arquivos criados por processos em sandbox** recebem o **atributo de quarentena** para evitar a fuga do sandbox. No entanto, se você conseguir **criar uma pasta `.app` sem o atributo de quarentena** dentro de um aplicativo em sandbox, poderá fazer com que o binário do pacote do aplicativo aponte para **`/bin/bash`** e adicione algumas variáveis de ambiente no **plist** para abusar do **`open`** e **iniciar o novo aplicativo sem sandbox**.
Portanto, no momento, se você for capaz de criar uma pasta com um nome terminando em **`.app`** sem um atributo de quarentena, você pode escapar do sandbox porque o macOS só **verifica** o **atributo de quarentena** na **pasta `.app`** e no **executável principal** (e vamos apontar o executável principal para **`/bin/bash`**).
Observe que se um pacote .app já foi autorizado a ser executado (tem um xttr de quarentena com a flag autorizada para executar), você também poderia abusar dele... exceto que agora você não pode escrever dentro de pacotes **`.app`** a menos que tenha algumas permissões TCC privilegiadas (o que você não terá dentro de um sandbox alto).
Nos [**últimos exemplos de bypass do sandbox do Word**](macos-office-sandbox-bypasses.md#word-sandbox-bypass-via-login-items-and-.zshenv) pode-se apreciar como a funcionalidade **`open`** do cli pode ser abusada para contornar o sandbox.
Mesmo que um aplicativo seja **destinado a estar em sandbox** (`com.apple.security.app-sandbox`), é possível contornar o sandbox se ele for **executado a partir de um LaunchAgent** (`~/Library/LaunchAgents`), por exemplo.\
Como explicado neste [**post**](https://www.vicarius.io/vsociety/posts/cve-2023-26818-sandbox-macos-tcc-bypass-w-telegram-using-dylib-injection-part-2-3?q=CVE-2023-26818), se você deseja obter persistência com um aplicativo que está em sandbox, você pode fazê-lo ser executado automaticamente como um LaunchAgent e talvez injetar código malicioso via variáveis de ambiente DyLib.
Se um processo em sandbox pode **escrever** em um local onde **mais tarde um aplicativo sem sandbox vai executar o binário**, ele será capaz de **escapar apenas colocando** o binário lá. Um bom exemplo desses locais são `~/Library/LaunchAgents` ou `/System/Library/LaunchDaemons`.
Para isso, você pode precisar de **2 etapas**: fazer um processo com um **sandbox mais permissivo** (`file-read*`, `file-write*`) executar seu código, que na verdade escreverá em um local onde será **executado sem sandbox**.
Se a partir do processo em sandbox você conseguir **comprometer outros processos** em sandboxes menos restritivos (ou nenhum), você será capaz de escapar para seus sandboxes:
[**Esta pesquisa**](https://saagarjha.com/blog/2020/05/20/mac-app-store-sandbox-escape/) descobriu 2 maneiras de contornar o Sandbox. Como o sandbox é aplicado a partir do espaço do usuário quando a biblioteca **libSystem** é carregada. Se um binário pudesse evitar carregá-lo, ele nunca seria colocado em sandbox:
To debug the macOS sandbox, you can use the `sandbox-exec` tool with the `-D` flag to enable debug mode. This will print detailed information about the sandbox operations being performed.
```bash
sandbox-exec -D
```
### Bypassing the Sandbox
To bypass the macOS sandbox, you can use various techniques such as exploiting vulnerabilities in the sandbox profile, abusing entitlements, or injecting code into a process to disable sandbox restrictions.
It is important to note that bypassing the macOS sandbox is a serious security risk and should only be done for research or testing purposes in controlled environments.
O arquivo `Info.plist` contém as configurações de sandboxing para um aplicativo macOS. Ele define as permissões e restrições de acesso que o aplicativo terá ao sistema e a outros recursos. Ao modificar este arquivo, é possível ajustar as restrições de segurança impostas ao aplicativo, potencialmente permitindo a execução de ações não autorizadas. É importante revisar e validar as configurações do `Info.plist` para garantir que o aplicativo esteja devidamente protegido contra possíveis violações de segurança.
### Bypassing Sandbox Restrictions
Existem técnicas avançadas que podem ser usadas para contornar as restrições de sandboxing e obter acesso não autorizado a recursos do sistema. Os desenvolvedores e administradores de segurança devem estar cientes dessas técnicas e implementar medidas adicionais para mitigar possíveis vulnerabilidades de sandboxing.
### Debugging Sandbox Violations
Ao encontrar violações de sandboxing em um aplicativo, é importante realizar uma análise detalhada para identificar a causa raiz do problema. O uso de ferramentas de depuração e monitoramento pode ajudar a rastrear e corrigir violações de sandboxing de forma eficaz. Certifique-se de revisar regularmente os logs de sandboxing para identificar e resolver quaisquer problemas de segurança em potencial.
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* 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)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).