
Unittests für Blue Teams, um bei der Erstellung von Erkennungsregeln für einige gängige macOS-Post-Exploitation-Methoden zu helfen.
Unit-Tests für Blue Teams, um den Aufbau von Erkennungen für einige gängige macOS-Post-Exploitation-Methoden zu unterstützen. Ich habe einige Post-Exploitation-Beispiele sowohl unter Verwendung der Befehlszeilenhistorie als auch von API-Aufrufen beigefügt. Die hier enthaltenen Post-Exploitation-Beispiele sind nicht vollständig. Stattdessen sind es nur einige gängige Beispiele, von denen ich dachte, dass sie für die Durchführung von Unit-Tests nützlich wären. Ich plane, dieses Projekt im Laufe der Zeit mit weiteren Unit-Tests zu erweitern.
Alle diese Tests laufen lokal und geben Ergebnisse an stdout aus (d. h., Swift-Attack stellt keine Verbindung zu einem Server her).
git clone https://github.com/cedowens/Swift-Attack && cd Swift-Attack
Stellen Sie sicher, dass Sie Swift und die Entwicklertools installiert haben (können aus dem Mac App Store installiert werden)
Erstellen Sie calc.c für den dylib-Injektionstest:
gcc -dynamiclib -o calc.dylib calc.c
swiftc -o Swift-Attack swift-attack.swift
./Swift-Attack -h

Hinweis: Andere TTP-Abhängigkeiten sind unten aufgeführt:
Sie können Swift-Attack mit einer einzelnen oder mehreren Optionen ausführen
./Swift-Attack [option1] [option2]...
Ich habe auch eine einfache Datei macro.txt (unverschleiert) zum Testen der Eltern-Kind-Beziehungen bei der Ausführung von Office-Makros auf macOS beigefügt. Ich habe sie nicht verschleiert, da der Fokus auf der Sichtbarkeit/Erkennung der Eltern-Kind-Beziehung liegt. Wenn Sie mit einem verschleierten Makro testen möchten, habe ich ein Repository unter github.com/cedowens/MacC2, das ein verschleiertes Makro enthält.
Ich habe nur zwei Persistenztests hinzugefügt (Launch Agent und Login Item). Schauen Sie sich Leo Pitts persistentes JXA-Repository unter https://github.com/D00MFist/PersistentJXA für eine umfassendere Liste von Persistenzbeispielen an.
Eingabeaufforderung mit dem osascript-Binary
Eingabeaufforderung über API-Aufrufe
Zwischenablage-Dump mit dem osascript-Binary
Zwischenablage-Dump über API-Aufrufe
Screenshot mit dem screencapture-Binary
Screenshot über API-Aufrufe
Auslesen der zsh-Historie
Aufzählung von Sicherheitswerkzeugen
Systeminformationen mit dem osascript-Binary abrufen
Systeminformationen über API-Aufrufe abrufen
Auslesen von SSH-, AWS-, GCP- und Azure-Schlüsseln auf der Festplatte
Auslesen des Browserverlaufs (Chrome, Safari, Firefox)
Auslesen der Quarantäne-Historie
Office-Makro: Ich habe ein einfaches Office-Makro beigefügt, das eine Verbindung zum lokalen Host herstellt. Hinweis: Das Makro führt curl aus, um eine GET-Anfrage mit Python an http://127.0.0.1/testing zu senden, wenn es durch Klicken auf die Schaltfläche „Makros aktivieren“ ausgeführt wird. Dies ermöglicht es Ihnen, Erkennungen für Eltern-Kind-Beziehungen bei der Makroausführung zu testen. Hinweis: Dieser einfache Test enthält keine Verschleierung, da der Test eher auf Eltern-Kind-Beziehungen ausgerichtet ist. Sie können ein anderes Repository von mir unter https://github.com/cedowens/MacC2 verwenden, um mit verschleierten Makros zu testen. Um es zu verwenden, fügen Sie einfach den Inhalt von „macro.txt“ in ein Office-Dokument ein, speichern Sie es als makroaktiviertes Dokument oder im 97-2004-Dokumentformat (z. B. .doc, .xls usw.) und klicken Sie beim Öffnen des Dokuments auf „Makros aktivieren“, um es auszuführen.
Installationspaket: Ich habe die Datei TestInstaller.pkg beigefügt, um Erkennungen für ein grundlegendes Installationspaket zu testen. Dieses Installationspaket enthält ein Preinstall-Skript, das in Bash läuft und com.simple.agent.plist nach /Library/LaunchDaemons/ ablegt sowie test.js (einfache Popup-Eingabeaufforderung) nach /Library/Application Support/ ablegt. Die Datei com.simple.agent.plist führt einfach osascript gegen /Library/Application Support/test.js aus. Es enthält auch ein Postinstall-Skript, das in Bash läuft und com.simple.agent.plist mit launchctl load lädt. Halten Sie die Steuerungstaste gedrückt und klicken Sie auf „Öffnen“ bei TestInstaller.pkg, um es auszuführen. TestInstaller.pkg legt die genannten Dateien als Root ab.
CVE-2021-30657 Bypass Payloads: Zwei Beispiel-Payloads (beide führen beim Auslösen curl-Anfragen an localhost aus), um zwei verschiedene Arten von Payloads zu testen, die CVE-2021-30657 missbrauchen. Weitere Informationen hier:
Launch-Agent-Persistenz
Login-Item-Persistenz
Zugriff/Kopieren der Benutzer-Keychain-Datenbank
Dylib-Injektion
Auslesen von Chrome-Cookies