前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >用 PPPwn_cpp 在 Mac 上折腾 PS4

用 PPPwn_cpp 在 Mac 上折腾 PS4

作者头像
AlphaHinex
发布2024-12-19 19:16:50
发布2024-12-19 19:16:50
22400
代码可运行
举报
文章被收录于专栏:周拱壹卒
运行总次数:0
代码可运行

PS4 能不能用PPPwn[1] 方式折腾,主要取决于GoldHEN[2]SiSTR0/PPPwn[3] stage2 支持的固件版本。

目前最新的GoldHEN v2.4b18[4] 版本和GoldHEN stage2 v1.03[5] 支持的固件版本交集如下:

Supported Firmware

  • 9.00
  • 9.60
  • 10.00 / 10.01
  • 10.50
  • 10.70 / 10.71
  • 11.00

主要折腾两件事:

  1. 把 PS4 系统版本升级到上面支持的固件版本
  2. 通过 PPPwn 扫描到漏洞并加载stage2.bingoldhen.bin

所需工具

  1. 系统版本不高于支持固件版本的 PS4
  2. 网线
  3. Mac 及网口转换器(或其他能执行 PPPwn 的电脑、设备)

离线升级固件版本

这里[6] 提供了一些支持的固件版本的离线升级系统文件下载,可选择升级至离当前版本最近的固件版本(保持最低可用的固件版本,避免需要降级)。

从百度网盘下载后,拷入格式化为FAT32exFAT 格式的 U 盘:/PS4/UPDATE/PS4UPDATE.PUP,将 U 盘插入 PS4。

  • 升级方式一:关机状态下的 PS4 主机,长长长长长按电源键,刚按的时候会听到第一次哔声,约 8 秒后听到第二次哔声后松开,主机会进入安全模式,此模式下需要 USB 线连接手柄才能控制。依次选择:3.升级系统软件 => 1.使用USB储存装置更新 => OK => 等待升级完成
  • 升级方式二:若用方法一进入安全模式后,USB 线连接手柄无反应,可尝试直接使用U盘给PS4进行系统升级[7] —— 在【设定】中选择【系统软件升级】=> 检测到新版本后选择【继续】=>【升级】=> 等待升级完成

等待升级完成会自动重启,重启后进入设置看下系统版本,升级完成。

PPPwn_cpp

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 列出所有网卡。

stage1.bin

可以使用PPPwn[12]SiSTR0/PPPwn[13] 项目源码编译stage1.bin,或直接使用编译好的版本stage1.bin[14](MD5:87e198da92a4c8e53abd7be6d8e7ce02)。

stage2.bin

下载stage2_v1.03.7z[15],解压后得到对应固件版本的stage2.bin,如:stage2_9.60.bin

goldhen.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

在 PS4 中进行如下操作:

  • 进入【设定】=>【网络】=>【设定互联网连接】=>【使用LAN连接线】=>【定制】=>【PPPoE】
  • 输入任意 PPPoE 用户ID 和 密码,点【继续】
  • DNS 设定和 MTU 设定均选择【自动】
  • 选择【不使用】Proxy服务器
  • 最后一步【测试互联网连接】先不点

终端

准备好stage1.binstage2.bingoldhen.bin 之后,先将 PS4 与 Mac 通过网线连接。首次执行时确保根路径下放有goldhen.bin 文件的 U 盘已插入 PS4。

在终端中准备好如下命令(先不执行),需根据实际环境网卡名、stage1.binstage2.bin 的路径及文件名进行调整,如:

代码语言:javascript
代码运行次数:0
复制
./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

折腾

在终端执行准备好的命令,之后会出现类似下面的日志:

代码语言:javascript
代码运行次数:0
复制
[+] 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 的内容即为成功。

代码语言:javascript
代码运行次数:0
复制
[+] 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

完整的成功日志类似下面情况:

代码语言:javascript
代码运行次数:0
复制
[+] 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 周拱壹卒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 所需工具
  • 离线升级固件版本
  • PPPwn_cpp
    • stage1.bin
    • stage2.bin
    • goldhen.bin
    • PS4
    • 终端
    • 折腾
  • 安装游戏
  • 关机后重新折腾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档