Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-04-07 02:24:24 +00:00
parent f79b9e1cbf
commit d004ebb04e
2 changed files with 15 additions and 16 deletions

View File

@ -288,7 +288,6 @@
- [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md) - [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md)
- [RDPexec](windows-hardening/lateral-movement/rdpexec.md) - [RDPexec](windows-hardening/lateral-movement/rdpexec.md)
- [SCMexec](windows-hardening/lateral-movement/scmexec.md) - [SCMexec](windows-hardening/lateral-movement/scmexec.md)
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md) - [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md) - [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]() - [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()

View File

@ -27,7 +27,7 @@ Les **permissions** sont **héritées de l'application parente** et les **permis
Les autorisations/refus sont ensuite stockés dans certaines bases de données TCC : Les autorisations/refus sont ensuite stockés dans certaines bases de données TCC :
- La base de données système dans **`/Library/Application Support/com.apple.TCC/TCC.db`**. - La base de données système dans **`/Library/Application Support/com.apple.TCC/TCC.db`**.
- Cette base de données est **protégée par SIP**, donc seul un contournement SIP peut y écrire. - Cette base de données est **protégée par SIP**, donc seul un contournement de SIP peut y écrire.
- La base de données TCC utilisateur **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** pour les préférences par utilisateur. - La base de données TCC utilisateur **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** pour les préférences par utilisateur.
- Cette base de données est protégée, donc seuls les processus avec des privilèges TCC élevés comme l'accès complet au disque peuvent y écrire (mais elle n'est pas protégée par SIP). - Cette base de données est protégée, donc seuls les processus avec des privilèges TCC élevés comme l'accès complet au disque peuvent y écrire (mais elle n'est pas protégée par SIP).
@ -39,7 +39,7 @@ Les autorisations/refus sont ensuite stockés dans certaines bases de données T
- Il y a une **troisième** base de données TCC dans **`/var/db/locationd/clients.plist`** pour indiquer les clients autorisés à **accéder aux services de localisation**. - Il y a une **troisième** base de données TCC dans **`/var/db/locationd/clients.plist`** pour indiquer les clients autorisés à **accéder aux services de localisation**.
- Le fichier protégé par SIP **`/Users/carlospolop/Downloads/REG.db`** (également protégé contre l'accès en lecture avec TCC), contient la **localisation** de toutes les **bases de données TCC valides**. - Le fichier protégé par SIP **`/Users/carlospolop/Downloads/REG.db`** (également protégé contre l'accès en lecture avec TCC), contient la **localisation** de toutes les **bases de données TCC valides**.
- Le fichier protégé par SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (également protégé contre l'accès en lecture avec TCC), contient plus de permissions accordées par TCC. - Le fichier protégé par SIP **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (également protégé contre l'accès en lecture avec TCC), contient plus de permissions accordées par TCC.
- Le fichier protégé par SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (mais lisible par quiconque) est une liste d'autorisation d'applications nécessitant une exception TCC. - Le fichier protégé par SIP **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (mais lisible par quiconque) est une liste d'autorisation d'applications qui nécessitent une exception TCC.
> [!TIP] > [!TIP]
> La base de données TCC dans **iOS** est dans **`/private/var/mobile/Library/TCC/TCC.db`**. > La base de données TCC dans **iOS** est dans **`/private/var/mobile/Library/TCC/TCC.db`**.
@ -106,7 +106,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
- Le **`service`** est la représentation en chaîne de caractères de la **permission** TCC - Le **`service`** est la représentation en chaîne de caractères de la **permission** TCC
- Le **`client`** est le **bundle ID** ou le **chemin vers le binaire** avec les permissions - Le **`client`** est le **bundle ID** ou le **chemin vers le binaire** avec les permissions
- Le **`client_type`** indique s'il s'agit d'un Identifiant de Bundle(0) ou d'un chemin absolu(1) - Le **`client_type`** indique s'il s'agit d'un identifiant de bundle (0) ou d'un chemin absolu (1)
<details> <details>
@ -201,12 +201,12 @@ csreq -t -r /tmp/telegram_csreq.bin
> [!WARNING] > [!WARNING]
> Par conséquent, d'autres applications utilisant le même nom et ID de bundle ne pourront pas accéder aux autorisations accordées à d'autres applications. > Par conséquent, d'autres applications utilisant le même nom et ID de bundle ne pourront pas accéder aux autorisations accordées à d'autres applications.
### Droits & Permissions TCC ### Droits et autorisations TCC
Les applications **n'ont pas seulement besoin** de **demander** et d'avoir **accès** à certaines ressources, elles doivent également **avoir les droits pertinents**.\ Les applications **n'ont pas seulement besoin** de **demander** et d'avoir **accès** à certaines ressources, elles doivent également **avoir les droits pertinents**.\
Par exemple, **Telegram** a le droit `com.apple.security.device.camera` pour demander **l'accès à la caméra**. Une **application** qui **n'a pas** ce **droit ne pourra pas** accéder à la caméra (et l'utilisateur ne sera même pas invité à donner les permissions). Par exemple, **Telegram** a le droit `com.apple.security.device.camera` pour demander **l'accès à la caméra**. Une **application** qui **n'a pas** ce **droit ne pourra pas** accéder à la caméra (et l'utilisateur ne sera même pas invité à donner les autorisations).
Cependant, pour que les applications **accèdent** à **certains dossiers utilisateur**, tels que `~/Desktop`, `~/Downloads` et `~/Documents`, elles **n'ont pas besoin** d'avoir des **droits spécifiques.** Le système gérera l'accès de manière transparente et **demandera à l'utilisateur** si nécessaire. Cependant, pour que les applications **accèdent** à **certaines dossiers utilisateur**, tels que `~/Desktop`, `~/Downloads` et `~/Documents`, elles **n'ont pas besoin** d'avoir des **droits spécifiques.** Le système gérera l'accès de manière transparente et **demandera à l'utilisateur** si nécessaire.
Les applications d'Apple **ne généreront pas de demandes**. Elles contiennent des **droits pré-accordés** dans leur liste de **droits**, ce qui signifie qu'elles **ne généreront jamais de popup**, **ni** n'apparaîtront dans aucune des **bases de données TCC.** Par exemple : Les applications d'Apple **ne généreront pas de demandes**. Elles contiennent des **droits pré-accordés** dans leur liste de **droits**, ce qui signifie qu'elles **ne généreront jamais de popup**, **ni** n'apparaîtront dans aucune des **bases de données TCC.** Par exemple :
```bash ```bash
@ -226,7 +226,7 @@ Cela évitera que Calendar demande à l'utilisateur d'accéder aux rappels, au c
Certaines autorisations TCC sont : kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Il n'existe pas de liste publique qui définit toutes ces autorisations, mais vous pouvez consulter cette [**liste de celles connues**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service). Certaines autorisations TCC sont : kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePhotos... Il n'existe pas de liste publique qui définit toutes ces autorisations, mais vous pouvez consulter cette [**liste de celles connues**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service).
### Endroits sensibles non protégés ### Lieux sensibles non protégés
- $HOME (lui-même) - $HOME (lui-même)
- $HOME/.ssh, $HOME/.aws, etc - $HOME/.ssh, $HOME/.aws, etc
@ -234,7 +234,7 @@ Certaines autorisations TCC sont : kTCCServiceAppleEvents, kTCCServiceCalendar,
### Intention de l'utilisateur / com.apple.macl ### Intention de l'utilisateur / com.apple.macl
Comme mentionné précédemment, il est possible de **donner accès à une application à un fichier en le faisant glisser et déposer**. Cet accès ne sera spécifié dans aucune base de données TCC mais en tant qu'**attribut étendu** **du fichier**. Cet attribut **stockera l'UUID** de l'application autorisée : Comme mentionné précédemment, il est possible de **donner accès à une application à un fichier en le faisant glisser et déposer dessus**. Cet accès ne sera spécifié dans aucune base de données TCC mais comme un **attribut étendu** **du fichier**. Cet attribut **stockera l'UUID** de l'application autorisée :
```bash ```bash
xattr Desktop/private.txt xattr Desktop/private.txt
com.apple.macl com.apple.macl
@ -370,7 +370,7 @@ Voici l'invite TCC pour obtenir des privilèges d'automatisation sur Finder :
<figure><img src="../../../../images/image (27).png" alt="" width="244"><figcaption></figcaption></figure> <figure><img src="../../../../images/image (27).png" alt="" width="244"><figcaption></figcaption></figure>
> [!CAUTION] > [!CAUTION]
> Notez que parce que l'application **Automator** a la permission TCC **`kTCCServiceAppleEvents`**, elle peut **contrôler n'importe quelle application**, comme Finder. Donc, en ayant la permission de contrôler Automator, vous pourriez également contrôler le **Finder** avec un code comme celui ci-dessous : > Notez qu'en raison du fait que l'application **Automator** a la permission TCC **`kTCCServiceAppleEvents`**, elle peut **contrôler n'importe quelle application**, comme Finder. Donc, en ayant la permission de contrôler Automator, vous pourriez également contrôler le **Finder** avec un code comme celui ci-dessous :
<details> <details>
@ -396,7 +396,7 @@ EOD
``` ```
</details> </details>
Il en va de même pour l'**application Script Editor,** elle peut contrôler Finder, mais en utilisant un AppleScript, vous ne pouvez pas le forcer à exécuter un script. Il en va de même pour **l'application Script Editor,** elle peut contrôler Finder, mais en utilisant un AppleScript, vous ne pouvez pas le forcer à exécuter un script.
### Automation (SE) à certains TCC ### Automation (SE) à certains TCC
@ -502,21 +502,21 @@ Si vous avez **`kTCCServiceEndpointSecurityClient`**, vous avez FDA. Fin.
### Fichier de politique système SysAdmin à FDA ### Fichier de politique système SysAdmin à FDA
**`kTCCServiceSystemPolicySysAdminFiles`** permet de **changer** l'attribut **`NFSHomeDirectory`** d'un utilisateur, ce qui change son dossier personnel et permet donc de **contourner TCC**. **`kTCCServiceSystemPolicySysAdminFiles`** permet de **changer** l'attribut **`NFSHomeDirectory`** d'un utilisateur qui change son dossier personnel et permet donc de **contourner TCC**.
### Base de données TCC utilisateur à FDA ### Base de données TCC utilisateur à FDA
En obtenant des **permissions d'écriture** sur la base de données **TCC utilisateur**, vous **ne pouvez pas** vous accorder des permissions **`FDA`**, seul celui qui vit dans la base de données système peut le faire. En obtenant des **permissions d'écriture** sur la base de données **TCC utilisateur**, vous **ne pouvez pas** vous accorder des permissions **`FDA`**, seul celui qui vit dans la base de données système peut accorder cela.
Mais vous pouvez **vous donner** des **`droits d'automatisation au Finder`**, et abuser de la technique précédente pour escalader à FDA\*. Mais vous pouvez **vous donner** des **`droits d'automatisation au Finder`**, et abuser de la technique précédente pour escalader à FDA\*.
### **Permissions FDA à TCC** ### **Permissions FDA à TCC**
**Accès complet au disque** est le nom TCC **`kTCCServiceSystemPolicyAllFiles`** **L'accès complet au disque** est le nom TCC **`kTCCServiceSystemPolicyAllFiles`**
Je ne pense pas que ce soit un vrai privesc, mais juste au cas où vous le trouveriez utile : Si vous contrôlez un programme avec FDA, vous pouvez **modifier la base de données TCC des utilisateurs et vous donner n'importe quel accès**. Cela peut être utile comme technique de persistance au cas où vous pourriez perdre vos permissions FDA. Je ne pense pas que ce soit un vrai privesc, mais juste au cas où vous le trouveriez utile : Si vous contrôlez un programme avec FDA, vous pouvez **modifier la base de données TCC des utilisateurs et vous donner n'importe quel accès**. Cela peut être utile comme technique de persistance au cas où vous pourriez perdre vos permissions FDA.
### **Contournement SIP à Contournement TCC** ### **Contourner SIP pour contourner TCC**
La **base de données TCC** du système est protégée par **SIP**, c'est pourquoi seuls les processus avec les **droits indiqués pourront la modifier**. Par conséquent, si un attaquant trouve un **contournement SIP** sur un **fichier** (pouvoir modifier un fichier restreint par SIP), il pourra : La **base de données TCC** du système est protégée par **SIP**, c'est pourquoi seuls les processus avec les **droits indiqués pourront la modifier**. Par conséquent, si un attaquant trouve un **contournement SIP** sur un **fichier** (pouvoir modifier un fichier restreint par SIP), il pourra :
@ -554,7 +554,7 @@ AllowApplicationsList.plist:
</dict> </dict>
</plist> </plist>
``` ```
### Contournements TCC ### Bypasses TCC
{{#ref}} {{#ref}}
macos-tcc-bypasses/ macos-tcc-bypasses/