PS4 能不能用PPPwn[1] 方式折腾,主要取决于GoldHEN[2] 和SiSTR0/PPPwn[3] stage2 支持的固件版本。
目前最新的GoldHEN v2.4b18[4] 版本和GoldHEN stage2 v1.03[5] 支持的固件版本交集如下:
Supported Firmware
主要折腾两件事:
stage2.bin
及goldhen.bin
这里[6] 提供了一些支持的固件版本的离线升级系统文件下载,可选择升级至离当前版本最近的固件版本(保持最低可用的固件版本,避免需要降级)。
从百度网盘下载后,拷入格式化为FAT32
或exFAT
格式的 U 盘:/PS4/UPDATE/PS4UPDATE.PUP
,将 U 盘插入 PS4。
等待升级完成会自动重启,重启后进入设置看下系统版本,升级完成。
Python 版本的 PPPwn 需手工执行,且并不是每次都能执行成功(尝试几十次都有可能,效率很低),可使用 C++ 重写版PPPwn_cpp[8],能够在失败时自动重试且无需依赖 Python 环境,效率大大提升。
在Releases[9] 页面直接下载编译好的可执行版本,如x86_64-macos-none.zip。
在 macOS 上,下载后需要执行sudo xattr -rd com.apple.quarantine <path-to-pppwn>
。#10[10] 里有更多相关信息。
Windows 环境需要提前安装 npcap[11]。
在命令行执行pppwn
查看帮助,pppwn list
列出所有网卡。
可以使用PPPwn[12] 或SiSTR0/PPPwn[13] 项目源码编译stage1.bin
,或直接使用编译好的版本stage1.bin[14](MD5:87e198da92a4c8e53abd7be6d8e7ce02
)。
下载stage2_v1.03.7z[15],解压后得到对应固件版本的stage2.bin
,如:stage2_9.60.bin
。
下载GoldHEN_v2.4b18.7z,解压后得到goldhen.bin
。将goldhen.bin
拷贝至之前离线升级系统的 U 盘根路径,插入 PS4 等待后续使用。
SiSTR0 定制版本的 stage2 会先在 U 盘根路径寻找goldhen.bin
,找到后将其拷贝至 PS4 内部存储的/data/GoldHEN/payloads/goldhen.bin
。首次折腾成功之后即可使用内部存储中的goldhen.bin
,不再需要将 U 盘插入 PS4。
首次折腾时须确保根路径下放有goldhen.bin
文件的 U 盘已插入 PS4。后续折腾不再需要。
在 PS4 中进行如下操作:
准备好stage1.bin
、stage2.bin
和goldhen.bin
之后,先将 PS4 与 Mac 通过网线连接。首次执行时确保根路径下放有goldhen.bin
文件的 U 盘已插入 PS4。
在终端中准备好如下命令(先不执行),需根据实际环境网卡名、stage1.bin
和stage2.bin
的路径及文件名进行调整,如:
./pppwn --interface en8 --fw 960 --stage1 SiSTR0/PPPwn/stage1/stage1.bin --stage2 stage2_v1.03/stage2_9.60.bin --timeout 10 --auto-retry
其他固件版本需修改
fw
值,如11.00
传入--fw 1100
。
在终端执行准备好的命令,之后会出现类似下面的日志:
[+] PPPwn - PlayStation 4 PPPoE RCE by theflow
[+] args: interface=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin
[+] STAGE 0: Initialization
[*] Waiting for PADI...
此时在 PS4 上操作点击【测试互联网连接】。
顺利的话稍后会在 PS4 界面看到获取IP地址 成功
、互联网连接 失败
字样,一般不会一次就直接成功,失败时 PS4 界面左侧会弹出NW-31274-7
的错误提示,此时无需任何操作,会自动重试。一般三五分钟内即可成功(运气不好半个多小时也有可能),耐心等待执行成功即可。
失败一般会出现在 STAGE 1 的最后一步,最后一行出现类似found fe80::0fdf:4141:4141:4141
的内容即为成功。
[+] STAGE 1: Memory corruption
[+] Pinning to CPU 0...done
[*] Sending malicious LCP configure request...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] Scanning for corrupted object...found fe80::0fdf:4141:4141:4141
完整的成功日志类似下面情况:
[+] PPPwn - PlayStation 4 PPPoE RCE by theflow
[+] args: interface=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin
[+] STAGE 0: Initialization
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634beba00
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] Source MAC: 07:ba:be:34:d6:ab
[+] AC cookie length: 0x4e0
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[*] Waiting for interface to be ready...
[+] Target IPv6: fe80::2d9:d1ff:febc:83e4
[+] Heap grooming...done
[+] STAGE 1: Memory corruption
[+] Pinning to CPU 0...done
[*] Sending malicious LCP configure request...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] Scanning for corrupted object...found fe80::0fdf:4141:4141:4141
[+] STAGE 2: KASLR defeat
[*] Defeating KASLR...
[+] pppoe_softc_list: 0xffffffff884de578
[+] kaslr_offset: 0x3ffc000
[+] STAGE 3: Remote code execution
[*] Sending LCP terminate request...
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634beba00
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] Source MAC: 97:df:ea:86:ff:ff
[+] AC cookie length: 0x511
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Triggering code execution...
[*] Waiting for stage1 to resume...
[*] Sending PADT...
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634be9200
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] AC cookie length: 0x0
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] STAGE 4: Arbitrary payload execution
[*] Sending stage2 payload...
[+] Done!
pkg
格式的游戏文件拷贝至exFAT
格式的移动硬盘根目录后,插入 PS4,进入折腾后的 GoldHEN 界面,选择【Debug Settings】=>【Package Installer】进入后即可选择 U 盘中的 pkg 文件进行安装。
一般游戏文件较大,如需通过百度网盘下载又没有 SVIP,可参考百度网盘每天不限速下载 中内容。
PS4 关机后需重新折腾,连接 PS4 和电脑后,先执行pppwn
命令,然后在 PS4 的网络设置中点击【测试互联网连接】,等待执行成功即可。
参考资料
[1]
PPPwn:https://github.com/TheOfficialFloW/PPPwn
[2]
GoldHEN:https://github.com/GoldHEN/GoldHEN
[3]
SiSTR0/PPPwn:https://github.com/SiSTR0/PPPwn
[4]
GoldHEN v2.4b18:https://github.com/GoldHEN/GoldHEN/releases/tag/2.4b18
[5]
GoldHEN stage2 v1.03:https://github.com/SiSTR0/PPPwn/releases/tag/1.03
[6]
这里:http://caicai.zicp.vip:1100/
[7]
使用U盘给PS4进行系统升级:https://www.wikimoe.com/post/193
[8]
PPPwn_cpp:https://github.com/xfangfang/PPPwn_cpp
[9]
Releases:https://github.com/xfangfang/PPPwn_cpp/releases
[10]
#10:https://github.com/xfangfang/PPPwn_cpp/issues/10
[11]
npcap:https://npcap.com/
[12]
PPPwn:https://github.com/TheOfficialFloW/PPPwn
[13]
SiSTR0/PPPwn:https://github.com/SiSTR0/PPPwn
[14]
stage1.bin:https://alphahinex.github.io/contents/using-pppwn-cpp-on-mac-with-ps4/stage1.bin
[15]
stage2_v1.03.7z:https://github.com/SiSTR0/PPPwn/releases/download/1.03/stage2_v1.03.7z