macOS-Sicherheitsmaßnahmen
Reading time: 6 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Gatekeeper
Gatekeeper wird normalerweise verwendet, um die Kombination von Quarantäne + Gatekeeper + XProtect zu bezeichnen, 3 macOS-Sicherheitsmodule, die versuchen, zu verhindern, dass Benutzer potenziell schädliche Software ausführen, die heruntergeladen wurde.
Weitere Informationen in:
macOS Gatekeeper / Quarantine / XProtect
Prozessbeschränkungen
MACF
SIP - System Integrity Protection
Sandbox
Die macOS-Sandbox beschränkt Anwendungen, die innerhalb der Sandbox ausgeführt werden, auf die erlaubten Aktionen, die im Sandbox-Profil festgelegt sind, mit dem die App ausgeführt wird. Dies hilft sicherzustellen, dass die Anwendung nur auf erwartete Ressourcen zugreift.
TCC - Transparenz, Zustimmung und Kontrolle
TCC (Transparenz, Zustimmung und Kontrolle) ist ein Sicherheitsrahmen. Er wurde entwickelt, um die Berechtigungen von Anwendungen zu verwalten, insbesondere indem der Zugriff auf sensible Funktionen reguliert wird. Dazu gehören Elemente wie Standortdienste, Kontakte, Fotos, Mikrofon, Kamera, Barrierefreiheit und Vollzugriff auf die Festplatte. TCC stellt sicher, dass Apps nur auf diese Funktionen zugreifen können, nachdem sie die ausdrückliche Zustimmung des Benutzers erhalten haben, wodurch die Privatsphäre und Kontrolle über persönliche Daten gestärkt wird.
Start-/Umgebungsbeschränkungen & Vertrauenscache
Startbeschränkungen in macOS sind eine Sicherheitsfunktion, um die Prozessinitiierung zu regulieren, indem definiert wird, wer einen Prozess starten kann, wie und von wo. Eingeführt in macOS Ventura, kategorisieren sie System-Binärdateien in Beschränkungs-Kategorien innerhalb eines Vertrauenscaches. Jede ausführbare Binärdatei hat festgelegte Regeln für ihren Start, einschließlich selbst, Eltern und verantwortlich. Diese Funktionen wurden in macOS Sonoma auf Drittanbieter-Apps als Umgebungs-Beschränkungen ausgeweitet, um potenzielle Systemausnutzungen zu mindern, indem die Bedingungen für das Starten von Prozessen geregelt werden.
macOS Launch/Environment Constraints & Trust Cache
MRT - Malware Removal Tool
Das Malware Removal Tool (MRT) ist ein weiterer Teil der Sicherheitsinfrastruktur von macOS. Wie der Name schon sagt, besteht die Hauptfunktion von MRT darin, bekannte Malware von infizierten Systemen zu entfernen.
Sobald Malware auf einem Mac erkannt wird (entweder durch XProtect oder auf andere Weise), kann MRT verwendet werden, um die Malware automatisch zu entfernen. MRT arbeitet im Hintergrund und wird normalerweise ausgeführt, wenn das System aktualisiert wird oder wenn eine neue Malware-Definition heruntergeladen wird (es scheint, dass die Regeln, die MRT zur Erkennung von Malware hat, in der Binärdatei enthalten sind).
Während sowohl XProtect als auch MRT Teil der Sicherheitsmaßnahmen von macOS sind, erfüllen sie unterschiedliche Funktionen:
- XProtect ist ein präventives Tool. Es überprüft Dateien, während sie heruntergeladen werden (über bestimmte Anwendungen), und wenn es bekannte Malware erkennt, verhindert es, dass die Datei geöffnet wird, wodurch verhindert wird, dass die Malware Ihr System überhaupt infiziert.
- MRT hingegen ist ein reaktives Tool. Es arbeitet, nachdem Malware auf einem System erkannt wurde, mit dem Ziel, die störende Software zu entfernen, um das System zu bereinigen.
Die MRT-Anwendung befindet sich in /Library/Apple/System/Library/CoreServices/MRT.app
Verwaltung von Hintergrundaufgaben
macOS warnt jetzt jedes Mal, wenn ein Tool eine bekannte Technik zur Persistenz der Codeausführung verwendet (wie Anmeldeobjekte, Daemons...), sodass der Benutzer besser weiß, welche Software persistiert.
Dies läuft mit einem Daemon, der sich in /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd
befindet, und dem Agenten in /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app
Die Art und Weise, wie backgroundtaskmanagementd
weiß, dass etwas in einem persistenten Ordner installiert ist, besteht darin, die FSEvents abzurufen und einige Handler dafür zu erstellen.
Darüber hinaus gibt es eine plist-Datei, die bekannte Anwendungen enthält, die häufig persistiert werden und von Apple verwaltet werden, die sich in: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist
befindet.
[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]
Aufzählung
Es ist möglich, alle konfigurierten Hintergrundelemente mit dem Apple CLI-Tool aufzulisten:
# The tool will always ask for the users password
sfltool dumpbtm
Darüber hinaus ist es auch möglich, diese Informationen mit DumpBTM aufzulisten.
# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM
Diese Informationen werden in /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm
gespeichert und das Terminal benötigt FDA.
Manipulation mit BTM
Wenn eine neue Persistenz gefunden wird, wird ein Ereignis vom Typ ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD
ausgelöst. Jede Möglichkeit, dieses Ereignis daran zu hindern, gesendet zu werden, oder den Agenten daran zu hindern, den Benutzer zu benachrichtigen, wird einem Angreifer helfen, BTM zu umgehen.
- Datenbank zurücksetzen: Das Ausführen des folgenden Befehls setzt die Datenbank zurück (sollte sie von Grund auf neu aufbauen), jedoch wird aus irgendeinem Grund nach dem Ausführen dies keine neue Persistenz benachrichtigt, bis das System neu gestartet wird.
- root ist erforderlich.
# Reset the database
sfltool resettbtm
- Stoppe den Agenten: Es ist möglich, ein Stoppsignal an den Agenten zu senden, sodass er den Benutzer nicht benachrichtigt, wenn neue Erkennungen gefunden werden.
# Get PID
pgrep BackgroundTaskManagementAgent
1011
# Stop it
kill -SIGSTOP 1011
# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
- Fehler: Wenn der Prozess, der die Persistenz erstellt hat, direkt danach schnell existiert, wird der Daemon versuchen, Informationen darüber zu erhalten, fehlen und wird nicht in der Lage sein, das Ereignis zu senden, das anzeigt, dass eine neue Sache persistiert.
Referenzen und weitere Informationen über BTM:
- https://youtu.be/9hjUmT031tc?t=26481
- https://www.patreon.com/posts/new-developer-77420730?l=fr
- https://support.apple.com/en-gb/guide/deployment/depdca572563/web
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.