mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 08:01:00 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
1f6cc45e96
commit
c17a7b86dc
2 changed files with 29 additions and 14 deletions
|
@ -26,7 +26,7 @@ Permisos en un **directorio**:
|
|||
|
||||
* Uno de los **directorio padre propietario** en la ruta es el usuario
|
||||
* Uno de los **directorio padre propietario** en la ruta es un **grupo de usuarios** con **acceso de escritura**
|
||||
* Un **grupo de usuarios** tiene acceso de **escritura** al **archivo**
|
||||
* Un **grupo de usuarios** tiene **acceso de escritura** al **archivo**
|
||||
|
||||
Con cualquiera de las combinaciones anteriores, un atacante podría **inyectar** un **enlace simbólico/duro** en la ruta esperada para obtener una escritura arbitraria privilegiada.
|
||||
|
||||
|
@ -48,8 +48,12 @@ Si puedes hacer que un **proceso abra un archivo o una carpeta con altos privile
|
|||
|
||||
Por ejemplo: [https://youtu.be/f1HA5QhLQ7Y?t=21098](https://youtu.be/f1HA5QhLQ7Y?t=21098)
|
||||
|
||||
## Trucos para evitar atributos de cuarentena xattrs
|
||||
## Trucos para evitar atributos extendidos de cuarentena
|
||||
|
||||
### Eliminarlo
|
||||
```bash
|
||||
xattr -d com.apple.quarantine /path/to/file_or_app
|
||||
```
|
||||
### Bandera uchg / uchange / uimmutable
|
||||
|
||||
Si un archivo/carpeta tiene este atributo inmutable, no será posible poner un xattr en él.
|
||||
|
@ -122,7 +126,7 @@ ditto -c -k del test.zip
|
|||
ditto -x -k --rsrc test.zip .
|
||||
ls -le test
|
||||
```
|
||||
(Tenga en cuenta que incluso si esto funciona, la sandbox escribirá el atributo de cuarentena antes)
|
||||
(Nota que incluso si esto funciona, la sandbox escribe el atributo de cuarentena antes)
|
||||
|
||||
No es realmente necesario, pero lo dejo aquí por si acaso:
|
||||
|
||||
|
@ -132,7 +136,7 @@ No es realmente necesario, pero lo dejo aquí por si acaso:
|
|||
|
||||
## Bypass de Firmas de Código
|
||||
|
||||
Los paquetes contienen el archivo **`_CodeSignature/CodeResources`** que contiene el **hash** de cada **archivo** en el **paquete**. Tenga en cuenta que el hash de CodeResources también está **incrustado en el ejecutable**, por lo que no podemos modificarlo.
|
||||
Los paquetes contienen el archivo **`_CodeSignature/CodeResources`** que contiene el **hash** de cada **archivo** en el **paquete**. Ten en cuenta que el hash de CodeResources también está **incrustado en el ejecutable**, por lo que no podemos modificarlo.
|
||||
|
||||
Sin embargo, hay algunos archivos cuya firma no se verificará, estos tienen la clave omit en el plist, como:
|
||||
```xml
|
||||
|
|
|
@ -72,17 +72,10 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist
|
|||
</plist>
|
||||
EOF
|
||||
```
|
||||
3. Definir los permisos
|
||||
3. Definir los privilegios
|
||||
|
||||
Los permisos son declaraciones en el archivo de configuración de la sandbox que especifican qué acciones puede realizar una aplicación dentro del entorno restringido. Estos permisos se conocen como "entitlements" en macOS.
|
||||
|
||||
Los entitlements definen las capacidades y restricciones de una aplicación en la sandbox. Pueden permitir o denegar el acceso a recursos del sistema, como archivos, directorios, servicios de red y más. Al definir los entitlements, se establece el nivel de acceso que una aplicación tiene dentro de la sandbox.
|
||||
|
||||
Es importante tener en cuenta que los entitlements deben ser cuidadosamente configurados para evitar posibles vulnerabilidades o abusos. Una configuración incorrecta de los entitlements puede permitir a una aplicación realizar acciones no deseadas o acceder a información confidencial.
|
||||
|
||||
Los entitlements se definen en el archivo de configuración de la sandbox utilizando una sintaxis específica. Cada permiso tiene un nombre y un valor asociado que determina si está permitido o denegado. Algunos ejemplos de entitlements comunes incluyen el acceso a la cámara, el micrófono, la ubicación del usuario y la comunicación con otros procesos.
|
||||
|
||||
Es fundamental comprender y definir correctamente los entitlements para garantizar la seguridad y privacidad de las aplicaciones en la sandbox de macOS.
|
||||
{% tabs %}
|
||||
{% tab title="sandbox" %}
|
||||
```bash
|
||||
cat << EOF > entitlements.plist
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -95,6 +88,24 @@ cat << EOF > entitlements.plist
|
|||
</plist>
|
||||
EOF
|
||||
```
|
||||
{% tab title="sandbox + descargas" %}
|
||||
```bash
|
||||
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
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
4. Firma la aplicación (necesitas crear un certificado en el llavero)
|
||||
```bash
|
||||
codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app
|
||||
|
|
Loading…
Reference in a new issue