BlackBerryKeySeries: 打造迷你移动Hack设备

缘由

记得2014年看敢死队3的时候,在1:30:22附近,Barney Ross带着Galgo还有他的旧队友去解救新招募的成员,Conrad Stonebanks在整栋大楼部署了C4Gunner Jensen手腕戴着Thorn的无线电干扰装置干扰了C4的爆炸时间。

当时觉得这个非常酷,印象非常深刻,后来也在twitter见到了各路大神制作的移动Hack设备

有这样的

也有这样的

后来偶然间得知kali nethunter for android,简直打开了新世界

其实说实话,虚拟键盘总归没有实体键盘得劲,如果BlackBerry KEYONE/KEYTWO能安装kali nethunter那简直完美啊

后来接触了玩无线安全的,无线电安全的,硬件安全的,对这个就有了无限向往,在大学的一个工作室里偶然发现了一个同学,用了一款实体键盘的智能安卓手机,哇,简直又刷新了我的认知

由于学生时代没钱,工作了以后偶然间在闲鱼看到了一个成色极好的,于是就买来折腾了许久,但是发现这个没有办法解bootloader

对于移动端研究的还真不是特别多,以前刷机都是找什么一键ROOT,后来Android5.0开始主流厂商就上了Bootloader来对抗Bookit和供应链攻击,基本就没怎么研究,这次就当是熟悉刷机流程

环境准备:

  • adb
  • 对应手机的驱动
  • 原厂ROM

adb安装

Mac

直接brew安装即可

brew cask install android-platform-tools

Windows

直接来这个地方下载即可

SDK Platform Tools release notes  |  Android Developers

当然这里也有Mac, Windows, Linux的包

下载完直接添加环境变量,如果你是Windows10,那直接下面的

计算机->属性->高级系统设置->环境变量->系统变量

如果你是Windows11路径是

Settings->System->About->Advaned_system_settings->Environment _Vaiables

然后设置valuekey

value key
Android C:\Program Files\platform-tools
Path C:\Program Files\platform-tools

Path这个直接在Path那个点编辑直接加在后边就可以

然后应用

Linux

sudo apt install android-tools-adb  // debian/ubuntu
sudo yum install android-toos   // centos

驱动

根据你的架构,提前准备好你用的驱动,我所用的驱动如下:

  • BlackBerry-USBDrivers-5.0.0.2.exe
  • latest_usb_driver_windows.zip
  • Mobile+Upgrade+Q+5.1.8+Setup.exe //这个是黑莓用来恢复/救砖用的软件

原厂ROM

你可能要准备的不仅有原厂的ROM包还有第三方的包,因为黑莓没有第三方的包,所以我试N多个原厂的包,有的时候一个包不行就得下另一个包,建议先把能用的包能下载都下了,不然的话用到哪个下哪个很耽误时间,如果你们恰好也在研究黑莓没有镜像可以联系我,我传给你

在选择ROM包时候要确定你自己的硬件版本,直接在拨号键入:


*#837837#*

然后直接在这个网站对照硬件版本选择是否支持OTA的系统版本

https://tclota.birth-online.de

还有一个项目可以帮你快速查询哪些ROM支持OTA, 这个项目有很多脚本自行选择筛选,可以根据系统版本筛选,也可以根据硬件版本筛选


┌─[hacker@iMac]-[~]

└──╼ $ python tclcheck_allfull.py -p PRD-63734-002 -l

Loading list of devices.

List of latest FULL firmware by PRD:

PRD-63734-002: ABX921 8047b8994f052131be076b4aa824d654bb1f9f37 (KEYone BBB100-4 (Unlocked))

There are 13 logs collected in the logs/ directory. Please consider uploading

them to https://tclota.birth-online.de/ by running ./upload_logs.py.

keyone

  • BlackberryKEYOne_AndroidOS_8.1.0_BBB100-1.2.4_ABP819.rar
  • bbry_qc8953_sficn-user-production_signed_china-ABD174.zip
  • APX921.zip

keytwo

  • ABP924.7z
  • ABT974.7z
  • ABR886.7z
  • bbry_sdm660_autoloader_user-bbf100-cn-china-ABR886.zip

关于命令使用

adbfastboot命令很多,我最开始也是分不清都是哪个,用的多了就记住了,这里列举几个本文用到的

adb devices // 列出adb设备
adb install foo.apk // 安装apk 
adb shell foo   // 执行某个命令
adb reboot bootloader   // 重启到bootloader模式
adb push foo sdcard/foo // 上传文件到手机
adb pull sdcard/foo // 下载文件到电脑
fastboot oem unlock // 解锁oem锁,每个手机厂商命令可能不一样
fastboot oem device-info    // 获取设备信息
fastboot oem get-bootinfo   // 获取boot信息
fastboot getvar all // 获取bootloader所有信息
fastboot erase foo  // 抹除某个分区
fastboot flash partition_name foo.img   // 刷入某个img镜像到某个分区
fastboot reboot // 重启

刷机与探索

众所周知黑莓以安全性著称,所以我原本也没指望那些自动化刷机工具能搞定,所以直接谷歌,当然也没发现什么特别好的方案,准确来说是基本没有

但是我找到了一篇西班牙的文章

https://www.ayudaroot.com/root/blackberry/como-hacer-root-al-blackberry-keyone/

使用的是MTKRoot进行刷机,其实原理就是结合MagiskADB还有FastBoot进行刷机,当时的我并不知道什么是Magisk,由于程序是西班牙语,头疼的很看不懂,研究了好一阵才明白软件是怎么用的,先说结果最后的确成功root了,但是magisk并没有成功过的写进去

0x01

首先,提取原厂ROM里的boot.img,然后点击No hay boot这里意思应该是载入boot.img,就是把boot.img传入手机

这里传入之后,会显示Boot cargado, 我也不知道什么意思,大概是已载入

然后点击Procesar Parche,进行打补丁,相当于操作Magisk进行打补丁,只不过自动化了

然后会弹出指示提醒

首先在Magisk点击installer

然后选择一个镜像进行修补

然后进入文件管理器选择你刚刚传入的boot.img,它还进行了重命名以防弄混这里重命名成了unroot.img

然后就开始修补了,修补完成之后会将修补完的镜像放在/sdcrad/Download

会提示你完成

然后这里我们点击lr fastboot大概意思就是进入fastboot模式,当手机重启到bootloader模式时候我们可以点击Test Fastboot查看电脑是否识别到了设备,然后查看我们的设备是否解锁了bootloader

如果未解锁,我们直接点击Liberar Bootloader经过翻译,我们得知这个命令意思是发布引导,但是我执行完之后提示

FAILED (remote: unknown command)
finished. total time: 0.001s

5000003336	fastboot
 desbloqueando Bootloader
Confirme la operación desde
la pantalla del dispositivo
-------
...
失败(远程:未知命令)
完成的。 总时间:0.001s

5000003336 快速启动
  解锁引导程序
从确认操作
设备屏幕

还有一个认证失败的错误我没有截图,总之就是发布引导不成功,解锁bootloader无望后

0x02

折腾了两三天,各种方法,也没能解锁bootloader,不过好像可以用Magisk绕过bootloader直接root没有试过,后来恰巧看到闲鱼有卖工程机的,就买了个BlackBerryKey2

我们把keyonekeytwobootloader`的信息输出对比一下

┌─[hacker@iMac]-[~]
└──╼ $fastboot getvar all   // keyone
(bootloader) bootmode:PRODUCT_MODE
......
(bootloader) subvariant:china
(bootloader) variant:cn
(bootloader) device:bbb100
......
(bootloader) prd:PRD-63734-002
(bootloader) product:MSM8953
(bootloader) security:enabled   // 未解锁
all: 
Finished. Total time: 1.385s
---------------------------------------------
┌─[hacker@iMac]-[~]
└──╼ $fastboot getvar all         // keytwo          
(bootloader) bootmode:PRODUCT_MODE
(bootloader) hlos_unsigned.tkn:disabled
(bootloader) subvariant:
(bootloader) variant:americas
(bootloader) device:bbf100
(bootloader) prd:PRD-63825-802
(bootloader) chip_name:SDM660
(bootloader) security:disabled
(bootloader) bb_bc_version:ABT974
(bootloader) unlocked:yes   // 已解锁
(bootloader) battery-soc-ok:yes
(bootloader) version-baseband:
(bootloader) version-bootloader:
(bootloader) variant:SDM EMMC
(bootloader) secure:no  // 已解锁
(bootloader) product:bbf100americas
(bootloader) kernel:uefi
all: 
Finished. Total time: 0.003s

既然已经解锁了bootloader,又开始打开了MTKRoot,以前步骤一样

这次直接点击Rootear,然后等几秒钟Root的按钮就会变黑,点击Root

这次成功Root了,提示ACCESO ROOT OK!

然后执行Check Root查看是不是root成功了

然后我们来到手机端验证是否Root成功

我们在手机版本升级里边看到,设备已被root

但是我们在magisk发现超级用户选项依然是灰的

然后我们下载了root status,经检测显示This device is Rooted

后来经过交流发现,如果用magisk``root成功后是这样的

也就是说我们只是root了,并没有把magisk刷进引导

0x03

尝试手动刷,我们首先

Last login: Wed Dec  7 22:39:03 on ttys005
┌─[hacker@iMac]-[~]
└──╼ $adb devices          
List of devices attached
1164553779	device

首先将我们提取的boot.img传到我们手机里

┌─[hacker@iMac]-[~]
└──╼ $adb push boot.img sdcard/                       
boot.img: 1 file pushed, 0 skipped. 19.4 MB/s (22405120 bytes in 1.104s)
┌─[hacker@iMac]-[~]
└──╼ $adb shell ls sdcard/ |grep boot
ls: sdcard//Locker: Permission denied
boot.img

然后安装Magisk

┌─[hacker@iMac]-[~]
└──╼ $adb install Magisk-v25.2.apk        
Performing Streamed Install
Success

打开Magisk,这里我们看到Ramdiskyes,直接继续点击Install

这里由于我们在fastboot getvar时候并没哟发现vbmeta分区所以这里我们选择path,强制加密也选上

然后提示我们选择一个文件进行patch,我们点Select and Patch a file

点击我们上传的boot_keyone.img

然后点击Next

补丁完之后,patch之后的img存在了/sdcrad/Download

我们直接将img下载下来

┌─[hacker@iMac]-[~]
└──╼ $adb pull sdcard/Download/magisk_patched-25200_ur3H4.img 
sdcard/Download/magisk_patched-25200_ur3H4.im...skipped. 25.3 MB/s (22843392 bytes in 0.861s)

然后,重启到fastboot

┌─[hacker@iMac]-[~]
└──╼ $adb reboot bootloader

然后,刷入补丁之后带有magiskboot.img

┌─[hacker@iMac]-[~]
└──╼ $fastboot flash boot magisk_patched-25200_ur3H4.img 
Sending 'boot' (22308 KB)                          OKAY [  0.671s]
Writing 'boot'                                     OKAY [  0.199s]
Finished. Total time: 0.971s

然后重启

┌─[hacker@iMac]-[~]
└──╼ $fastboot reboot                                   
Rebooting                                          OKAY [  0.006s]
Finished. Total time: 0.006s

发现依然是系统显示已经root但是Magisk的超级用户为灰色


后来,去翻了magisk的官网以及使用说明,发现我的操作没问题,不知道什么情况

目前只能先装个Termux先用着,不过好像没什么用,不过已经解锁了而且root了,以后有时间在慢慢折腾
关于Termux配置

这里有个坑,如果你是从谷歌商店安装的Termux默认版本不是最新的启动时候会报一堆红的提醒,建议直接从github下载安装

切换软件源


sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list

sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list

sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list

更新并安装常用软件,开启sshd


pkg update

pkg install vim curl wget git tree openssh -y

sshd

备份与恢复


termux-setup-storage   // 开启存储访问权限

----------------备份----------------

cd /data/data/com.termux/files

tar -zcf /sdcard/termux-backup.tar.gz home usr

----------------恢复----------------

cd /data/data/com.termux/files

tar -zxf /sdcard/termux-backup.tar.gz --recursive-unlink --preserve-permissions



之前这手机上第一次插的是联通卡,后来换成电信卡结果只能上网,但是无法打电话和发短信,通过谷歌了解:

工厂无锁机,未写 IMEI 前会有一次写 IMEI 的机会

但是想了想,自己刷了多次发行版ROM 应该在写入了IMEI,结果换了张移动的卡,可以正常上网也可以电话短信。

最后猜测,可能我刷的发行版ROM没有电信基带


服务器资源由ZeptoVM赞助

Partners Wiki Discord