macOS Default Sandbox Debug

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

In questa pagina puoi trovare come creare un'applicazione per eseguire comandi arbitrari all'interno del sandbox predefinito di macOS:

  1. Compila l'applicazione:

main.m
#include <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
while (true) {
char input[512];

printf("Enter command to run (or 'exit' to quit): ");
if (fgets(input, sizeof(input), stdin) == NULL) {
break;
}

// Remove newline character
size_t len = strlen(input);
if (len > 0 && input[len - 1] == '\n') {
input[len - 1] = '\0';
}

if (strcmp(input, "exit") == 0) {
break;
}

system(input);
}
}
return 0;
}

Compilalo eseguendo: clang -framework Foundation -o SandboxedShellApp main.m

  1. Costruisci il bundle .app

mkdir -p SandboxedShellApp.app/Contents/MacOS
mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/

cat << EOF > SandboxedShellApp.app/Contents/Info.plist
<?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">
<dict>
<key>CFBundleIdentifier</key>
<string>com.example.SandboxedShellApp</string>
<key>CFBundleName</key>
<string>SandboxedShellApp</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleExecutable</key>
<string>SandboxedShellApp</string>
</dict>
</plist>
EOF
  1. Definire i privilegi

cat << EOF > entitlements.plist
<?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">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
EOF

macOS Sandbox

Il sandbox di macOS è un meccanismo di sicurezza che limita le azioni che un'applicazione può eseguire sul sistema operativo. Questo meccanismo è progettato per proteggere il sistema da applicazioni dannose o non attendibili.

Protezioni predefinite del sandbox

Quando un'applicazione viene eseguita all'interno del sandbox di macOS, viene automaticamente limitata nelle sue azioni. Alcune delle protezioni predefinite del sandbox includono:

  • Accesso limitato ai file e alle cartelle del sistema

  • Limitazioni sulle comunicazioni di rete

  • Limitazioni sull'accesso all'hardware del sistema

  • Limitazioni sull'accesso alle risorse del sistema, come la fotocamera o il microfono

Debug del sandbox predefinito

Il sandbox predefinito di macOS è progettato per essere sicuro e limitare le azioni delle applicazioni. Tuttavia, è possibile che alcune applicazioni richiedano funzionalità aggiuntive che non sono consentite dal sandbox predefinito. In questi casi, è possibile abilitare il debug del sandbox predefinito per consentire l'accesso a queste funzionalità aggiuntive.

Il debug del sandbox predefinito può essere abilitato utilizzando il comando sandbox-exec. Questo comando consente di specificare un profilo di sandbox personalizzato che definisce le azioni consentite per un'applicazione specifica.

Download all'interno del sandbox

Quando un'applicazione viene eseguita all'interno del sandbox di macOS, il download di file può essere limitato. Il sandbox predefinito di macOS consente solo il download di file in determinate posizioni, come la cartella "Downloads" dell'utente corrente.

Se un'applicazione richiede di scaricare file in una posizione diversa, è possibile abilitare il debug del sandbox predefinito e specificare un profilo di sandbox personalizzato che consenta il download in una posizione specifica.

cat << EOF > entitlements.plist
<?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">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.downloads.read-write</key>
<true/>
</dict>
</plist>
EOF
  1. Firma l'app (è necessario creare un certificato nel portachiavi)

codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app
./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp

# An d in case you need this in the future
codesign --remove-signature SandboxedShellApp.app
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated