
Stören von Apple-Geräten im Netzwerk mit CVE-2018-4407 (Heap-Überlauf bei fehlerhafter Paketverarbeitung)
Basierend auf CVE-2018-4407 (https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407), diesem Tweet und diesem Video. Der Fehler ist eine Heap-Überlauf-Schwachstelle in der Behandlung fehlerhafter Pakete, wenn das Betriebssystem versucht, eine ICMP-Nachricht zu senden, die Segmente des fehlerhaften Pakets enthält, an den Absender zurück.

Dieser POC stürzt die anfälligen Apple-Geräte ab, indem er fehlerhafte TCP-Paketdaten mit langen TCP/IP-Header-Optionen sendet, um die ICMP-Nachricht zu überlaufen, wenn das Gerät versucht, die Fehlermeldung zu senden. Sie benötigen die Fähigkeit, Netzwerkpaketdaten direkt an das Gerät zu senden (z. B. im selben lokalen Netzwerk).
Die folgenden Betriebssystemversionen und Geräte sind anfällig:
NUR ZU BILDUNGSZWECKEN. VERWENDEN SIE DIESES SKRIPT NICHT FÜR ILLEGALE AKTIVITÄTEN. DER AUTOR ÜBERNIMMT KEINE HAFTUNG FÜR MISSBRAUCH ODER SCHÄDEN.
Stellen Sie sicher, dass Sie Python 3 und scapy installiert haben.
pip install scapy
# or
pip3 install scapy
Möglicherweise müssen Sie das Skript als root ausführen.
Senden Sie ein schlechtes Paket an das Subnetz 192.168.1.0/24.
sudo ./appledos.py 192.168.1.0/24
Zeigt die IP nach dem Senden des Pakets an.
sudo ./appledos.py --verbose 192.168.1.0/24
Senden Sie kontinuierlich ein schlechtes Paket an das Subnetz 192.168.1.0/24.
sudo ./appledos.py --continuous 192.168.1.0/24
Ändern Sie den Zielport (Standard: 80). Sie können jeden Port ändern, da Geräte auf jedes eingehende Paket auf jedem Port antworten, aber Sie sollten die Portsperre oder Firewall im Host oder Netzwerk beachten.
sudo ./appledos.py --continuous --port 22 192.168.1.0/24
Senden Sie ein schlechtes Paket nur an eine IP.
sudo ./appledos.py 192.168.1.118
Legen Sie die maximale Anzahl von Arbeitern fest (Standard: 100).
sudo ./appledos.py --worker 10 192.168.1.0/24
Dieses Skript verwendet scapy und es gibt ein bekanntes Problem bei der Handhabung von /dev/bpf (Berkeley Packet Filter) beim Senden von Paketdaten von einem Betriebssystem wie macOS mit Multi-Threading. Wenn Sie No /dev/bpf handle is available erhalten, versuchen Sie, die Arbeiteranzahl auf 1 oder 2 zu reduzieren. Oder verwenden Sie einfach Linux wie im Demonstrationsvideo.