
Framework de réponse aux incidents macOS basé sur Swift pour la collecte et l'analyse d'artefacts hôtes, incluant les horodatages du système de fichiers, les données de navigateur, les logs unifiés, les mécanismes de persistance et les arborescences de processus, avec une analyse intégrée et une génération de chronologie.

Aftermath est un framework de réponse aux incidents open source basé sur Swift.
Aftermath peut être utilisé par les défenseurs afin de collecter, puis d'analyser les données provenant de l'hôte compromis. Aftermath peut être déployé depuis un MDM (idéalement), mais il peut aussi s'exécuter indépendamment depuis la ligne de commande de l'utilisateur infecté.
Aftermath exécute d'abord une série de modules pour la collecte. La sortie sera écrite à l'emplacement de votre choix, via l'option -o ou --output, ou par défaut, elle est écrite dans le répertoire /tmp.
Une fois la collecte terminée, l'archive zip finale peut être récupérée depuis le disque de l'utilisateur final. Ce fichier peut ensuite être analysé à l'aide de l'argument --analyze pointant vers le fichier d'archive. Les résultats seront écrits dans le répertoire /tmp. L'administrateur peut alors décompresser ce répertoire d'analyse et voir une vue parsée des bases de données collectées localement, une chronologie des fichiers avec les dates de création, de dernier accès et de dernière modification (si disponibles), et un storyline qui comprend les métadonnées des fichiers, les modifications de bases de données et les informations du navigateur pour potentiellement tracer le vecteur d'infection.
Pour construire Aftermath localement, clonez-le depuis le dépôt
git clone https://github.com/jamf/aftermath.git
Placez-vous dans le répertoire Aftermath
cd <chemin_vers_le_répertoire_aftermath>
Construisez avec Xcode
xcodebuild -scheme "aftermath"
Placez-vous dans le dossier Release
cd build/Release
Exécutez aftermath
sudo ./aftermath
Aftermath nécessite les droits root ainsi que l'accès complet au disque (FDA) pour fonctionner. Le FDA peut être accordé à l'application Terminal dans laquelle il est exécuté.
L'utilisation par défaut d'Aftermath s'effectue via
sudo ./aftermath
Pour spécifier certaines options
sudo ./aftermath [option1] [option2]
Exemples
sudo ./aftermath -o /Users/user/Desktop --deep
sudo ./aftermath --analyze <chemin_vers_zip_de_collecte>
Les utilisateurs ont la possibilité de passer à Aftermath un fichier texte de prédicats de journaux unifiés en utilisant les arguments --logs ou -l. Le fichier passé à Aftermath doit être un fichier texte et chaque prédicat doit être séparé par une nouvelle ligne. De plus, chaque élément de ligne sera un objet dictionnaire. La clé du dictionnaire sera le nom que l'utilisateur souhaite donner à ce prédicat. Par exemple, si vous voulez voir tous les événements de connexion, nous allons créer un prédicat intitulé login_events.
login_events: processImagePath contains "loginwindow" and eventMessage contains "com.apple.sessionDidLogin
tcc: process == "tccd"
Comme eslogger et tcpdump s'exécutent sur des threads supplémentaires et que l'objectif est de collecter autant de données que possible, ils se ferment lorsque aftermath se ferme. Par conséquent, la dernière ligne du fichier json d'eslogger ou du fichier pcap généré par tcpdump peut être tronquée.
Un Aftermath.pkg est disponible dans les Releases. Ce pkg est signé et notarié. Il installera le binaire aftermath dans /usr/local/bin/. C'est la manière idéale de déployer via MDM. Étant installé dans bin, vous pouvez ensuite exécuter aftermath comme ceci :
sudo aftermath [option1] [option2]
Pour désinstaller le binaire aftermath, exécutez AftermathUninstaller.pkg depuis les Releases. Cela désinstallera le binaire et exécutera également aftermath --cleanup pour supprimer les répertoires aftermath. Si des répertoires aftermath se trouvent ailleurs, suite à l'utilisation de la commande --output, il incombe à l'utilisateur/administrateur de supprimer ces répertoires.
--analyze -> analyser les résultats d'Aftermath
usage: --analyze <chemin_vers_fichier_de_collecte_aftermath>
--collect-dirs -> spécifier les emplacements (séparés par des espaces) des répertoires à vider (dump) de leurs fichiers bruts
usage: --collect-dirs <chemin_vers_répertoire> <chemin_vers_autre_répertoire>
--deep or -d -> effectuer une analyse approfondie du système de fichiers pour les métadonnées d'horodatage modifiées et consultées
ATTENTION : Cette analyse sera longue et consommatrice de mémoire.
--disable -> désactiver un ensemble de fonctionnalités d'aftermath qui pourraient collecter des données personnelles de l'utilisateur
Fonctionnalités disponibles à désactiver : browsers -> collecte des informations du navigateur | browser-killswitch -> force la fermeture des navigateurs | -> databases -> bases de données tcc & lsquarantine | filesystem -> parcours du système de fichiers pour les horodatages | proc-info -> collecte d'informations sur les processus via TrueTree et eslogger | slack -> données Slack | ul -> modules de journalisation unifiée | all -> toutes les options susmentionnées
usage: --disable browsers browser-killswitch databases filesystem proc-info slack
--disable all
--es-logs -> spécifier quels événements Endpoint Security (séparés par des espaces) collecter (par défaut : create exec mmap). Pour désactiver, voir --disable es-logs
usage: --es-logs setuid unmount write
--logs -> spécifier un fichier texte externe contenant des prédicats de journaux unifiés (sous forme d'objets dictionnaire) à parser
usage: --logs /Users/<USER>/Desktop/mesPredicats.txt
-o or --output -> spécifier un emplacement de sortie pour les résultats de la collecte Aftermath (par défaut /tmp)
usage: -o Users/user/Desktop
--pretty -> coloriser la sortie du terminal
--cleanup -> supprimer les dossiers Aftermath des emplacements par défaut ("/tmp", "/var/folders/zz/")
Ce projet s'appuie sur le projet open source TrueTree, écrit et licencié par Jaron Bradley.