
Tests unitaires pour les équipes bleues afin de faciliter l'élaboration de détections pour certaines méthodes courantes de post-exploitation macOS.
Tests unitaires pour les équipes bleues afin d'aider à construire des détections pour certaines méthodes courantes de post-exploitation macOS. J'ai inclus quelques exemples de post-exploitation utilisant à la fois l'historique des commandes et des appels d'API. Les exemples de post-exploitation inclus ici ne sont pas exhaustifs. Ce sont plutôt quelques exemples courants que j'ai pensé utiles pour mener des tests unitaires. Je prévois de continuer à ajouter à ce projet au fil du temps avec des tests unitaires supplémentaires.
Tous ces tests s'exécutent localement et renvoient les résultats sur stdout (c'est-à-dire que Swift-Attack ne se connecte pas à un serveur).
git clone https://github.com/cedowens/Swift-Attack && cd Swift-Attack
Assurez-vous d'avoir installé Swift et les outils de développement (vous pouvez les installer depuis le Mac App Store)
Compilez calc.c pour le test d'injection dylib :
gcc -dynamiclib -o calc.dylib calc.c
swiftc -o Swift-Attack swift-attack.swift
./Swift-Attack -h

Remarque : Les autres dépendances TTP sont ci-dessous :
Vous pouvez exécuter Swift-Attack avec une seule option ou plusieurs options
./Swift-Attack [option1] [option2]...
J'ai également inclus un fichier macro.txt simple (non obfusqué) pour tester les relations parent-enfant lors de l'exécution de macros Office sur macOS. Je ne l'ai pas obfusqué car l'accent est mis sur la visibilité/détection des relations parent-enfant. Si vous souhaitez tester avec une macro obfusquée, j'ai un dépôt sur github.com/cedowens/MacC2 qui contient une macro obfusquée.
Je n'ai inclus que deux tests de persistance (Launch Agent et Login Item). Consultez le dépôt JXA persistant de Leo Pitt https://github.com/D00MFist/PersistentJXA pour une liste plus complète d'exemples de persistance.
Invite de commande à l'aide du binaire osascript
Invite de commande via des appels d'API
Vidage du presse-papiers à l'aide du binaire osascript
Vidage du presse-papiers via des appels d'API
Capture d'écran à l'aide du binaire screencapture
Capture d'écran via des appels d'API
Vidage de l'historique zsh
Énumération des outils de sécurité
Récupération des informations système à l'aide du binaire osascript
Récupération des informations système via des appels d'API
Vidage des clés ssh, aws, gcp et azure sur le disque
Vidage de l'historique du navigateur (Chrome, Safari, Firefox)
Vidage de l'historique de quarantaine
Macro Office : J'ai inclus une macro Office simple qui se connecte à l'hôte local. Remarque : la macro invoquera curl pour effectuer une requête GET en utilisant python vers http://127.0.0.1/testing lorsqu'elle est exécutée en cliquant sur le bouton « Activer les macros ». Cela vous permettra de tester les détections des relations parent-enfant autour de l'exécution de macros. Remarque : ce test simple n'inclut aucune obfuscation, car le test est vraiment plus axé sur les relations parent-enfant. Vous pouvez utiliser un autre de mes dépôts sur https://github.com/cedowens/MacC2 pour tester avec des macros obfusquées. Pour l'utiliser, il suffit de coller le contenu de « macro.txt » dans un document Office, de l'enregistrer en tant que document activé pour les macros ou au format document 97-2004 (ex : .doc, .xls, etc.), et de cliquer sur « Activer les macros » lors de l'ouverture du document pour exécuter.
Package d'installation : J'ai inclus le fichier TestInstaller.pkg pour tester les détections autour d'un package d'installation de base. Ce package d'installation inclut un script preinstall qui s'exécute en bash et dépose com.simple.agent.plist dans /Library/LaunchDaemons/ et dépose test.js (simple invite contextuelle) dans /Library/Application Support/. Le fichier com.simple.agent.plist exécute simplement osascript sur /Library/Application Support/test.js. Il inclut également un script postinstall qui s'exécute en bash et charge com.simple.agent.plis à l'aide de launchctl load. Tout en maintenant la touche Contrôle enfoncée, cliquez sur Ouvrir sur TestInstaller.pkg pour l'exécuter. TestInstaller.pkg déposera les fichiers susmentionnés en tant que root.
Charges utiles de contournement CVE-2021-30657 : Deux exemples de charges utiles (les deux effectuent des requêtes curl vers localhost lorsqu'elles sont déclenchées) pour tester deux types différents de charges utiles qui abusent de cve-2021-30657. Plus d'informations ici :
Persistance Launch Agent
Persistance Login Item
Accès/copie de la base de données du trousseau utilisateur
Injection Dylib
Vidage des cookies Chrome