macOS Red Teaming
Abus des MDM
JAMF Pro :
jamf checkJSSConnection
Kandji
Si vous parvenez à compromettre les identifiants d'administrateur pour accéder à la plateforme de gestion, vous pouvez potentiellement compromettre tous les ordinateurs en distribuant votre logiciel malveillant sur les machines.
Pour le red teaming dans les environnements macOS, il est fortement recommandé de comprendre le fonctionnement des MDM :
macOS MDMUtilisation de MDM comme C2
Un MDM aura l'autorisation d'installer, interroger ou supprimer des profils, installer des applications, créer des comptes administrateurs locaux, définir un mot de passe firmware, changer la clé FileVault...
Pour exécuter votre propre MDM, vous devez faire signer votre CSR par un vendeur 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 la faire signer par un compte développeur... cependant, lors de l'inscription au MDM, le dispositif ajoute le certificat SSL du MDM en tant qu'AC 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 du mot de passe EFI, surveillance de fichiers/processus...) et des MDM (configurations de dispositif, certificats de dispositif...).
Auto-inscription JAMF
Allez sur une page comme https://<nom-de-l'entreprise>.jamfcloud.com/enroll/
pour voir si l'auto-inscription est 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 de pulvérisation de mots de passe.
De plus, après avoir trouvé les bons identifiants, vous pourriez être en mesure de faire une attaque de force brute sur d'autres noms d'utilisateur avec le formulaire suivant :
Authentification de dispositif JAMF
Le binaire jamf
contenait le secret pour ouvrir le trousseau qui, au moment de la découverte, était partagé par 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 de dispositif JAMF
L'URL du JSS (Serveur de logiciels Jamf) que jamf
utilisera est située dans /Library/Preferences/com.jamfsoftware.jamf.plist
.
Ce fichier contient essentiellement l'URL :
Ainsi, un attaquant pourrait déposer un package malveillant (pkg
) qui écrase ce fichier lors de l'installation en définissant l'URL vers un écouteur Mythic C2 depuis un agent Typhon pour pouvoir maintenant abuser de JAMF en tant que C2.
Impersonation de JAMF
Pour impersonner la communication entre un appareil et JMF, vous avez besoin de :
L'UUID de l'appareil :
ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
Le trousseau JAMF depuis :
/Library/Application\ Support/Jamf/JAMF.keychain
qui contient le certificat de l'appareil
Avec ces informations, créez une machine virtuelle avec l'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
Vous pourriez é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 informations d'identification.
Cependant, les informations d'identification pourraient être transmises à ces scripts en tant que paramètres, donc vous devriez surveiller ps aux | grep -i jamf
(même sans être root).
Le script JamfExplorer.py peut écouter les nouveaux fichiers ajoutés et les nouveaux arguments de processus.
Accès à distance sur macOS
Et aussi sur les protocoles réseau "spéciaux" de MacOS :
macOS Network Services & ProtocolsActive Directory
Dans certains cas, vous constaterez que l'ordinateur MacOS est connecté à un AD. Dans ce scénario, vous devriez essayer d'énumérer l'annuaire actif comme vous en avez l'habitude. Trouvez de l'aide sur les pages suivantes :
389, 636, 3268, 3269 - Pentesting LDAPActive Directory Methodology88tcp/udp - Pentesting KerberosUn outil local MacOS qui pourrait également vous aider est dscl
:
Également, il existe des outils préparés pour MacOS pour énumérer automatiquement l'AD et 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. Le but 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 for Automation (JXA) pour l'énumération Active Directory.
Informations sur le domaine
Utilisateurs
Les trois types d'utilisateurs MacOS sont :
Utilisateurs Locaux — Gérés par le service local OpenDirectory, ils ne sont en aucun cas connectés à l'Active Directory.
Utilisateurs Réseau — Utilisateurs volatils de l'Active Directory qui nécessitent une connexion au serveur DC pour s'authentifier.
Utilisateurs Mobiles — Utilisateurs de l'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 sont dans /var/db/dslocal/nodes/Default/groups/admin.plist.
En plus d'utiliser les arêtes HasSession et AdminTo, MacHound ajoute trois nouvelles arêtes à la base de données Bloodhound :
CanSSH - entité autorisée à se connecter en SSH à l'hôte
CanVNC - entité autorisée à se connecter en VNC à l'hôte
CanAE - entité autorisée à exécuter des scripts AppleEvent sur l'hôte
Plus d'informations sur https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/
Accéder au trousseau
Le trousseau contient très probablement des informations sensibles qui, s'il est accédé sans générer de demande, pourrait aider à faire avancer un exercice de l'équipe rouge :
macOS KeychainServices externes
Le Red Teaming sur MacOS est différent d'un Red Teaming Windows classique car MacOS est généralement intégré à plusieurs plateformes externes directement. Une configuration courante de MacOS est d'accéder à l'ordinateur en utilisant les identifiants synchronisés de OneLogin, et d'accéder à plusieurs services externes (comme github, aws...) via OneLogin.
Techniques Red Team diverses
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 fichier zip, il sera automatiquement décompressé :
Références
Last updated