farisv/AppleDOS
GitHub: farisv/AppleDOS
基于 CVE-2018-4407 漏洞的 Apple 设备拒绝服务攻击 PoC,通过发送恶意 TCP 数据包触发 ICMP 堆溢出导致目标设备崩溃。
Stars: 25 | Forks: 6
# AppleDOS (CVE-2018-4407)
基于 CVE-2018-4407 ( ),这条 [推文](https://twitter.com/ihackbanme/status/1057811965945376768) 以及这个 [视频](https://twitter.com/kevin_backhouse/status/1057352656560287746)。该漏洞是操作系统试图将包含错误数据包段的 ICMP 消息发送回发送方时,在错误数据包处理过程中产生的堆溢出漏洞。

此 POC 通过发送包含超长 TCP/IP 头选项的恶意 TCP 数据包,在设备尝试发出错误消息时导致 ICMP 消息溢出,从而使存在漏洞的 Apple 设备崩溃。你需要具备直接向设备发送网络数据包的能力(例如在同一局域网内)。
以下操作系统版本和设备受此漏洞影响:
- Apple iOS 11 及更早版本:所有设备
- Apple macOS High Sierra,包括 10.13.6 及更早版本:所有设备
- Apple macOS Sierra,包括 10.12.6 及更早版本:所有设备
- Apple OS X El Capitan 及更早版本:所有设备
## 警告
仅供教育目的。切勿将此脚本用于非法活动。作者不对任何滥用或损害负责。
## 示例
请确保你已安装 Python 3 和 scapy。
```
pip install scapy
# 或
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,在 macOS 等操作系统上通过多线程发送数据包数据时,存在处理 `/dev/bpf` (Berkeley Packet Filter) 的已知问题。如果你遇到 `No /dev/bpf handle is available` 错误,请尝试将工作线程数减少到 1 或 2。或者,你可以直接使用 Linux 系统,如演示视频所示。
标签:Apple, CVE-2018-4407, DoS, ICMP, iOS, PoC, Python, Scapy, XNU内核, 内核驱动, 堆溢出, 局域网攻击, 拒绝服务攻击, 无后门, 暴力破解, 漏洞复现, 系统崩溃, 编程工具, 网络协议, 网络安全, 远程代码执行, 隐私保护