前言

朋友整了台Qeust2,在搭建好openwrt后,就可以访问外网开始玩了,但中间还是遇到了一些坑点,故记录下。

正文

重置账户

  1. 这个其实挺坑的,因为是收的二手,但上家转手的时候没退账号,导致更新版本后要用原先的账号激活。
  2. 好在和上家有保持联系,提供了账号密码成功重置。

Facebook账号被ban

  1. 因为Facebook的审核机制,导致非实名用户的账号被ban了,这个数据和Quest2官网的数据不互通,所以直接在Quest2 官网上注册即可。

账号申请开发者权限

  1. 有2种渠道


    1. 填写手机号
    2. 添加信用卡
  2. 不知道为什么手机号添加不了,Google Voice和国内手机号都不行,就选择了用国内的Visa卡注册。

使用开发者权限安装第三方APK

  1. 开始折腾了半天,发现这个需要用手机安装 Quest2 App后,连接上设备,在头戴设备设置中开启开发者选项。
  2. 然后ADB命令一把梭就行

Steam串流

  1. ADB安装ALVR后,电脑端也安装好后,即可。
  2. 自带的Air Link还没用过,就不多说了。

前言

出题5天,被秒半小时,当时做环境的时候数据忘了清干净,导致被非预期了,原本挺有趣的题目没多少人玩到。
感兴趣的师傅后续也可以试试原有的解题思路,希望可以给各位有些帮助。

出题灵感来源

  1. 一直在玩黑苹果,虽然11代intel已经是黑果的绝唱了,但中间的一些思路倒是很有意思的。
  2. 安装黑果的重点就在于硬件能否被苹果系统识别,因此就有了本题,大致就是通过检测系统的硬件配置,实现一个简单的macOS检测机制。
  3. 选手需要通过oc或者其他方式修改nvram中的内容,让程序识别到该系统的某些配置。

正文

当时预设了2种解题方式

解题思路1

  1. 拿vmdk文件,提取其中的可执行文件进行分析,最终锁定openssl解密的部分,利用题目描述中的「cat_jump」进行解密获得flag。

解题思路2

  1. 拿到vmdk,进行仿真挂载,但发现该磁盘无法在ubuntu等预设中进行挂载,因为这里用的是Alpine Linux,并且是Alpine是UEFI,Vmware中一般都是bios引导启动,如果是vmware workstation的话需要在创建完毕后,高级中设置为UEFI启动,即可进入游戏。

  2. 进入游戏后,这里有个小脑洞,一般的游戏都会有「退出」模块,一般为「q」,但这里用的是「]」,退出后即可发现读取文件失败了。

  3. 读取的是nvram中的一个特定变量,如无法检测到这个变量的话,即使进了系统登录界面也无济于事。

  4. 通过opencore做一个引导驱动,在nvram中写入报错中的特定变量名和变量值,将该引导挂载到虚拟机中,我这直接用的U盘创了个ESP分区,把EFI丢进去了。


    如果U盘是USB3.1的记得改下兼容性

  5. 启动到固件后,选择opencore启动,这样EFI引导就是走的opencore,模拟出的nvram也就能获取到。

  6. 最终进入启动界面即可获取flag。

解题思路3(非预期)

  1. strings cat_jump_clean.vmdk | grep CatCTF{
  2. 010编辑搜索
  3. 取证大师提取原始数据
  4. 记事本打开
  5. .....

总之就是磁盘数据没清干净,被一把梭了。

Date Created: November 15, 2022 9:13 AM
Status: To Do

灵感

  1. 一直在玩黑苹果,虽然11代intel已经是黑果的绝唱了,但中间的一些思路倒是很有意思的。
  2. 安装黑果的重点就在于硬件能否被苹果系统识别,因此就有了本题,大致就是通过检测系统的硬件配置,实现一个简单的macOS检测机制。
  3. 选手需要通过oc或者其他方式修改nvram中的内容,让程序识别到该系统的某些配置。

思路

  1. 利用opencore进入引导后,通过某些open core的特性来查看flag
  2. efi和镜像文件均放在dumpit导出的镜像中

实现方式

  1. 用户态
    1. 利用Linux系统init的过程中,在login之前拉起检测程序
  2. 内核态
    1. 在Linux内核中添加一个读取efi变量的模块,编译完毕后,通过qemu拉起系统。

相关技术

UEFI仿冒、Linux用户态

具体实现流程

  • 拉取镜像
  • 安装efivar、g++等环境
  • 编写CatJump Game模块
  • 编写读取EFI变量模块
  • 更改Init,将编写好的模块放入login模块前
  • 导出vmdk镜像

前言

继硬件更新后,就可以做黑果了,前期起初打算是做物理机的黑果的,始终不成功,后面发现是镁光固态的缘故导致的(这个问题我以前在装笔记本的黑果时也遇到过)。

在以前机缘巧合下,观看了国光师傅的PVE环境搭建,感觉很酷,在不追求极致的性能下,我就选择了PVE来搭建。

硬件配置

CPU: i5 8600k
内存: 16G+8G+8G
主板:MSI Z370 银蛇环 GAMMING
硬盘(PVE系统):凯侠 RC10 1T
显卡1(windows游戏):Nvidia GTX1060 5G
显卡2(macOS): AMD RX580 2304SP 8G
电源:鑫谷 650W
网卡:BCM94360CD
硬盘:西数 1T+2T、影驰240G(存放原神)
显示器1:DELL 2404
显示器2:DELL 2304
机箱:先马 黑洞

PVE虚拟设备

目前除了2台虚拟化的主力设备以外,我还将以前vmware中的虚拟机也迁移到了PVE上,以及一台群晖。

各个虚拟机搭建环节

macOS

前言

基本上是参考了国光师傅的整个流程,需要的是仔细,但由于粗心没有照着一步一步的点点点,甚至还额外学到了一些东西。

正文

镜像准备
  • macOS系统镜像
  • open core的引导镜像
  1. macOS的系统镜像,因为手头只有黑果小兵的打包镜像,只有黑果小兵的打包镜像,这种镜像是无法直接用OC引导的,需要刷入U盘才行。 我这是直接拿的官方的GitHub项目直接编译的。
  2. 官方镜像GitHub地址:https://github.com/thenickdude/OSX-KVM
    git clone https://github.com/thenickdude/OSX-KVM
    cd OSX-KVM
    cd scripts monterey
    make Monterey-recovery.img
    

    最终在当前make的目录会得到镜像文件

    将dmg改为iso后上传镜像即可。
创建虚拟机
  1. open core的引导镜像
    opencore的镜像直接从GitHub release下拿就行
    https://github.com/thenickdude/KVM-Opencore/releases

    解压后,上传即可。

  2. 避免安装时的循环死机,进PVE中,给配置文件添加参数。

    echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u
    reboot
    
  3. 然后就是添加引导、创建虚拟机的一个过程了,和物理机的黑果类似。

    更改名称、VM-ID即可,这里的VM-ID是唯一标识码。

  4. 选择opencore作为光盘镜像

    系统选择othoer

  5. 系统配置,显卡选用vmware兼容,其实默认也行
    Bios选用OVMF(UEFI),机器架构是q35

  6. 硬盘类型选择VirtoIO Block,缓存为Write back,硬盘大小请随意(最好不要低于128G,当然你如果硬要把应用全塞另外的盘,那就是你对)。

  7. CPU类型选Penryn,核心也是看着给,开启NUMA2.

  8. 内存最好不要低于8G,这里只能填MB,所以说1024*N这样。

  9. 网卡类型选择半虚拟化

  10. 再添加一块硬盘,目前我们只有引导盘,没有系统镜像盘。

配置修改

  1. 之后,进PVE系统,nano更改一下磁盘的类型,改为cache=unsafe

    nano /etc/pve/qemu-server/<VM-ID>.conf 这里的VM-ID就是开头创建的VM-ID。
    
    



    再添加CPU信息

    INTEL: args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc
    
    AMD: args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+fma4,+bmi1,+bmi2,+xsave,+xsaveopt,check
    

    然后control + O,回车键保存文件,control + X,退出nano。
    最终的配置文件就是下面这样

  2. 进入选项中,更改一下引导顺序。

    将opencore引导盘放置最前面。

启动虚拟机

  1. 点击启动后,成功启动,接下来就是黑苹果系统的正常安装操作。(以下仅截图就不做说明了)








    等待完毕后,进入系统即可,这里的时间没这么久,具体要取决于硬盘性能。

  2. 重启后,选择macOS installer

  3. 依旧会再次重启,这里在选择macOS installer

  4. 成功安装后,选择macOS启动即可。

安装完成

  1. 安装完成后,根据引导选择相关的配置进去即可,不要登录账号、不要登录账号、不要登录账号!!!,因为这里的三码是默认的,有风险。



  2. 安装完成

显卡直通

  1. 其实可以直接看国光师傅的了,直接添加PCI硬件就行了。

  2. 关闭显示的vmware兼容即可,因为RX580免驱,黑果的常识就不多说了。

  3. 之后我们需要注意一个点,因为没了vnc,我们需要直通一套键鼠才行。

    选择USB端口,关闭USB3.0、关闭USB3.0、关闭USB3.0、关闭USB3.0,这里也是个坑点,开了直接进不去系统就黑了。

  4. 这里的显卡已经成功驱动了。

网卡直通、蓝牙

和显卡一样的操作,直接添加即可。

蓝牙在USB设置中,同样添加即可。

关机相关

出现问题的话直接选择关闭主机,不要选关机,因为是other系统,PVE没有关闭系统的指令。

EFI配置

  1. 然后就是黑果的基本操作了,改三码、启动时间啥的。
  2. 这里就不多说了。(摆

windows

前言

windows虽然没这么多讲究,但我开始装的时候也遇到了点麻烦。

镜像准备

windows镜像
virtio 驱动镜像

windows镜像 https://www.microsoft.com/zh-cn/software-download/windows10

virtio官方镜像 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.215-2/virtio-win-0.1.215.iso

安装

  1. 安装就直接把windows镜像作为引导盘启动
  2. 把virtio挂载就行

GTX1060 直通

跟着掘金上的一篇文章成功驱动
没有用到vbios,就添加了下配置。
https://juejin.cn/post/7101389906043207694#heading-4

  1. 看pci地址
    lspci -v
  2. 查看显卡的具体路径
    lspci -n -s 82:00
    lspci -n -s 82:00
    
  3. 开启iommu和pci相关配置
    nano /etc/default/grub
    修改
    GRUB_CMDLINE_LINUX_DEFAULT="quiet"
    修改为
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off video=efifb:off vfio-pci.ids=10de:1c04,10de:10f1"
    保存、退出
    
  4. 更新grub启动
    update-grub
  5. 加载vfio驱动
    nano /etc/modules
    添加以下内容
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
    保存、退出
    
  6. 更新配置,重启
    update-initramfs -u -k all && reboot now
  7. 禁止host驱动GPU
    nano /etc/modprobe.d/pve-blacklist.conf
    options vfio_iommu_type1 allow_unsafe_interrupts=1
    options kvm ignore_msrs=1
    options kvm-intel nested=Y
    blacklist nouveau
    options nouveau modeset=0
    blacklist nvidiafb
    blacklist amdgpu
    blacklist radeon
    blacklist nvidia
    blacklist snd_hda_codec_hdmi
    blacklist snd_hda_intel
    blacklist snd_hda_codec
    blacklist snd_hda_core
    
    保存、退出
    
  8. 更新配置
    update-initramfs -u -k all && reboot now

成功驱动

Vmware迁移

前言

这里也耽搁了大半天,主要问题是在vmdk文件的完整性,和硬盘的类型。

  1. vmdk的话有两种方法
    1. 直接将以前的vmdk复制出来,但有些虚拟机的vmdk是分片的,所以需要用工具进行整合,可以看我另一篇文章。
      https://yuno0n.top/index.php/archives/60/
    2. 我是用vmware导出ovf后(直接导出的vmdk无法使用),导入macOS里的vmware实现合并的,当时忘了可以用工具合并,导致用了2倍的时间。
  2. 硬盘类型先选IDE,成功驱动后,进系统,添加相关参数,就可以开启SCSI咯。

群晖

前言

群晖在zy的帮助下,一波点亮,没什么问题,就不多说了。