* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
<figure><imgsrc="../../../../../.gitbook/assets/image (2) (1).png"alt=""><figcaption><p>Image de <ahref="http://newosxbook.com/files/HITSB.pdf">http://newosxbook.com/files/HITSB.pdf</a></p></figcaption></figure>
Dans l'image précédente, il est possible d'observer **comment la sandbox sera chargée** lorsqu'une application avec l'entitlement **`com.apple.security.app-sandbox`** est exécutée.
Le compilateur liera `/usr/lib/libSystem.B.dylib` au binaire.
Ensuite, **`libSystem.B`** appellera d'autres fonctions jusqu'à ce que **`xpc_pipe_routine`** envoie les entitlements de l'application à **`securityd`**. Securityd vérifie si le processus doit être mis en quarantaine à l'intérieur de la Sandbox, et si c'est le cas, il sera mis en quarantaine.\
Enfin, la sandbox sera activée par un appel à **`__sandbox_ms`** qui appellera **`__mac_syscall`**.
## Possibles contournements
{% hint style="warning" %}
Notez que les **fichiers créés par des processus sandboxés** sont dotés de l'**attribut de quarantaine** pour empêcher les évasions de la Sandbox.
{% endhint %}
### Exécuter un binaire sans Sandbox
Si vous exécutez un binaire qui ne sera pas sandboxé à partir d'un binaire sandboxé, il **s'exécutera dans la Sandbox du processus parent**.
### Débogage et contournement de la Sandbox avec lldb
Compilons une application qui devrait être sandboxée :
{% tabs %}
{% tab title="sand.c" %}
```c
#include <stdlib.h>
int main() {
system("cat ~/Desktop/del.txt");
}
```
{% endtab %}
{% tab title="README.md" %}
# macOS Sandbox Debug and Bypass
The macOS sandbox is a powerful security feature that restricts the actions that a process can perform on a system. However, like any security feature, it is not perfect and can be bypassed or debugged in certain circumstances.
This directory contains examples of techniques that can be used to bypass or debug the macOS sandbox.
## Debugging the Sandbox
Debugging the macOS sandbox can be useful for understanding how it works and for finding vulnerabilities that can be exploited to bypass it. There are several tools and techniques that can be used to debug the sandbox, including:
- **lldb**: The LLDB debugger can be used to attach to a sandboxed process and inspect its state. This can be useful for understanding how the sandbox is enforced and for finding vulnerabilities that can be exploited to bypass it.
- **dtrace**: The DTrace dynamic tracing framework can be used to trace the system calls made by a sandboxed process. This can be useful for understanding how the sandbox is enforced and for finding vulnerabilities that can be exploited to bypass it.
- **sysdiagnose**: The sysdiagnose tool can be used to collect diagnostic information about a sandboxed process. This can be useful for understanding how the sandbox is enforced and for finding vulnerabilities that can be exploited to bypass it.
## Bypassing the Sandbox
Bypassing the macOS sandbox can be useful for performing actions that are restricted by the sandbox, such as accessing sensitive files or performing network operations. There are several techniques that can be used to bypass the sandbox, including:
- **Exploiting vulnerabilities**: Like any software, the macOS sandbox is not perfect and can contain vulnerabilities that can be exploited to bypass it. Finding and exploiting these vulnerabilities can be a powerful way to bypass the sandbox.
- **Abusing entitlements**: Entitlements are a way for macOS applications to request additional privileges beyond what is normally allowed by the sandbox. By abusing entitlements, it is possible to bypass the sandbox and perform actions that are normally restricted.
- **Using third-party libraries**: Third-party libraries can be used to bypass the sandbox by performing actions that are normally restricted. For example, a library might provide a way to access sensitive files or perform network operations that are normally restricted by the sandbox.
- **Modifying the sandbox profile**: The sandbox profile is a configuration file that defines the restrictions placed on a sandboxed process. By modifying the sandbox profile, it is possible to bypass the sandbox and perform actions that are normally restricted.
- [Apple Developer Documentation: macOS System Integrity Protection](https://developer.apple.com/documentation/security/system_integrity_protection)
```xml
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plistversion="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
```
{% endtab %}
{% tab title="Info.plist" %}
# macOS Sandbox Debug and Bypass
The macOS sandbox is a powerful security feature that restricts the actions that a process can perform on a system. It is used to enforce security policies and prevent malicious code from executing on a system. However, the sandbox is not foolproof and can be bypassed by attackers who have the knowledge and skills to do so.
This guide will cover some of the techniques that can be used to debug and bypass the macOS sandbox.
## Debugging the macOS Sandbox
Debugging the macOS sandbox can be a useful technique for understanding how it works and identifying potential vulnerabilities. There are several tools that can be used to debug the sandbox, including:
- **sandbox-exec**: This is a command-line tool that can be used to run a process in a sandbox and monitor its behavior. It can be used to identify sandbox violations and other issues.
- **dtrace**: This is a dynamic tracing tool that can be used to monitor system activity. It can be used to identify sandbox violations and other issues.
Bypassing the macOS sandbox can be a difficult task, but it is not impossible. There are several techniques that can be used to bypass the sandbox, including:
- **Exploiting sandbox vulnerabilities**: The sandbox is not perfect and can contain vulnerabilities that can be exploited to bypass it. These vulnerabilities can be found by analyzing the sandbox code or by fuzzing the sandbox.
- **Exploiting kernel vulnerabilities**: The sandbox relies on the kernel to enforce its policies. If there are vulnerabilities in the kernel, they can be exploited to bypass the sandbox.
- **Exploiting third-party applications**: Third-party applications that are not sandboxed can be exploited to bypass the sandbox. For example, an attacker could exploit a vulnerability in a web browser to execute code outside of the sandbox.
- **Exploiting configuration issues**: The sandbox relies on configuration files to enforce its policies. If there are configuration issues, they can be exploited to bypass the sandbox.
The macOS sandbox is a powerful security feature that can help prevent malicious code from executing on a system. However, it is not foolproof and can be bypassed by attackers who have the knowledge and skills to do so. By understanding how the sandbox works and the techniques that can be used to bypass it, you can better protect your system from attacks.
Si vous êtes capable de **compromettre d'autres processus** fonctionnant dans des Sandboxes moins restrictives (ou sans Sandboxes), vous pourrez vous échapper vers leurs Sandboxes :
[Cette recherche](https://saagarjha.com/blog/2020/05/20/mac-app-store-sandbox-escape/) a découvert deux façons de contourner le bac à sable. Étant donné que le bac à sable est appliqué depuis l'espace utilisateur lorsque la bibliothèque **libSystem** est chargée. Si un binaire pouvait éviter de la charger, il ne serait jamais mis en bac à sable :
* Si le binaire était **complètement compilé de manière statique**, il pourrait éviter de charger cette bibliothèque.
* Si le **binaire n'avait pas besoin de charger de bibliothèques** (car le lien est également dans libSystem), il n'aurait pas besoin de charger libSystem.
### Shellcodes
Notez que **même les shellcodes** en ARM64 doivent être liés dans `libSystem.dylib`:
```bash
ld -o shell shell.o -macosx_version_min 13.0
ld: dynamic executables or dylibs must link with libSystem.dylib for architecture arm64
```
### Abus des emplacements de démarrage automatique
Si un processus sandboxé peut **écrire** dans un endroit où **plus tard une application non sandboxée va exécuter le binaire**, il pourra **s'échapper simplement en y plaçant** le binaire. Un bon exemple de ce type d'emplacements sont `~/Library/LaunchAgents` ou `/System/Library/LaunchDaemons`.
Pour cela, vous pourriez même avoir besoin de **2 étapes** : faire fonctionner un processus avec un **bac à sable plus permissif** (`file-read*`, `file-write*`) exécuter votre code qui écrira effectivement dans un endroit où il sera **exécuté sans bac à sable**.
Consultez cette page sur les **emplacements de démarrage automatique** :
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).