
Swift-basiertes macOS-Incident-Response-Framework zur Sammlung und Analyse von Host-Artefakten, darunter Dateisystem-Zeitstempel, Browserdaten, Unified Logs, Persistenzmechanismen und Prozessbäume, mit integrierter Analyse und Timeline-Generierung.

Aftermath ist ein auf Swift basierendes Open-Source-Framework für Incident Response.
Aftermath kann von Verteidigern genutzt werden, um Daten von kompromittierten Hosts zu sammeln und anschließend zu analysieren. Aftermath kann idealerweise über ein MDM bereitgestellt werden, kann aber auch unabhängig von der Kommandozeile des infizierten Benutzers ausgeführt werden.
Aftermath führt zunächst eine Reihe von Modulen zur Sammlung aus. Die Ausgabe wird entweder an den von Ihnen gewählten Speicherort über die Option -o oder --output geschrieben, oder standardmäßig in das Verzeichnis /tmp.
Sobald die Sammlung abgeschlossen ist, kann die endgültige Zip-/Archivdatei von der Festplatte des Endbenutzers abgerufen werden. Diese Datei kann dann mit dem Argument --analyze analysiert werden, das auf die Archivdatei verweist. Die Ergebnisse werden in das Verzeichnis /tmp geschrieben. Der Administrator kann dann dieses Analyse-Verzeichnis entpacken und eine geparste Ansicht der lokal gesammelten Datenbanken, eine Zeitleiste der Dateien mit Erstellungs-, letztem Zugriffs- und letztem Änderungsdatum (sofern verfügbar) sowie eine Storyline sehen, die die Dateimetadaten, Datenbankänderungen und Browserinformationen umfasst, um potenziell den Infektionsvektor zurückzuverfolgen.
Um Aftermath lokal zu erstellen, klonen Sie es aus dem Repository
git clone https://github.com/jamf/aftermath.git
cd in das Aftermath-Verzeichnis
cd <path_to_aftermath_directory>
Erstellen mit Xcode
xcodebuild -scheme "aftermath"
cd in den Release-Ordner
cd build/Release
Führen Sie aftermath aus
sudo ./aftermath
Aftermath muss als root ausgeführt werden und benötigt vollständigen Festplattenzugriff (Full Disk Access, FDA), um zu laufen. FDA kann der Terminal-Anwendung gewährt werden, in der es ausgeführt wird.
Die Standardverwendung von Aftermath erfolgt mit:
sudo ./aftermath
Um bestimmte Optionen anzugeben:
sudo ./aftermath [option1] [option2]
Beispiele:
sudo ./aftermath -o /Users/user/Desktop --deep
sudo ./aftermath --analyze <path_to_collection_zip>
Benutzer haben die Möglichkeit, Aftermath eine Textdatei mit Unified-Log-Prädikaten zu übergeben, indem sie die Argumente --logs oder -l verwenden. Die an Aftermath übergebene Datei muss eine Textdatei sein, und jedes Prädikat muss durch Zeilenumbrüche getrennt sein. Darüber hinaus wird jeder Eintrag ein Dictionary-Objekt sein. Der Schlüssel im Dictionary ist das, was der Benutzer dieses Prädikat nennen möchte. Wenn Sie beispielsweise alle Anmeldeereignisse sehen möchten, erstellen wir ein Prädikat und nennen es login_events.
login_events: processImagePath contains "loginwindow" and eventMessage contains "com.apple.sessionDidLogin
tcc: process == "tccd"
Da eslogger und tcpdump in zusätzlichen Threads laufen und das Ziel ist, so viele Daten wie möglich von ihnen zu sammeln, beenden sie sich, wenn aftermath beendet wird. Aus diesem Grund kann die letzte Zeile der eslogger JSON-Datei oder der von tcpdump erstellten pcap-Datei abgeschnitten sein.
Ein Aftermath.pkg ist unter Releases verfügbar. Dieses pkg ist signiert und notariell beglaubigt. Es installiert das aftermath-Binary unter /usr/local/bin/. Dies wäre die ideale Möglichkeit zur Bereitstellung über MDM. Da es in bin installiert ist, können Sie aftermath wie folgt ausführen:
sudo aftermath [option1] [option2]
Um das aftermath-Binary zu deinstallieren, führen Sie das AftermathUninstaller.pkg von den Releases aus. Dies deinstalliert das Binary und führt auch aftermath --cleanup aus, um Aftermath-Verzeichnisse zu entfernen. Falls sich Aftermath-Verzeichnisse aufgrund der Verwendung des --output-Befehls an anderen Stellen befinden, liegt es in der Verantwortung des Benutzers/Administrators, diese Verzeichnisse zu entfernen.
--analyze -> analyze the results of the Aftermath results
usage: --analyze <path_to_aftermath_collection_file>
--collect-dirs -> specify locations of (space-separated) directories to dump those raw files
usage: --collect-dirs <path_to_dir> <path_to_another_dir>
--deep or -d -> perform a deep scan of the file system for modified and accessed timestamped metadata
WARNING: This will be a time-intensive, memory-consuming scan.
--disable -> disable a set of aftermath features that may collect personal user data
Available features to disable: browsers -> collecting browser information | browser-killswitch -> force-closes browers | -> databases -> tcc & lsquarantine databases | filesystem -> walking the filesystem for timestamps | proc-info -> collecting process information via TrueTree and eslogger | slack -> slack data | ul -> unified logging modules | all -> all aforementioned options
usage: --disable browsers browser-killswitch databases filesystem proc-info slack
--disable all
--es-logs -> specify which Endpoint Security events (space-separated) to collect (defaults are: create exec mmap). To disable, see --disable es-logs
usage: --es-logs setuid unmount write
--logs -> specify an external text file with unified log predicates (as dictionary objects) to parse
usage: --logs /Users/<USER>/Desktop/myPredicates.txt
-o or --output -> specify an output location for Aftermath collection results (defaults to /tmp)
usage: -o Users/user/Desktop
--pretty -> colorize Terminal output
--cleanup -> remove Aftermath folders from default locations ("/tmp", "/var/folders/zz/)
Dieses Projekt nutzt das Open-Source-Projekt TrueTree, das von Jaron Bradley geschrieben und lizenziert wurde.