本教程将带您了解亚马逊Fire TV Stick 4K(2017年发布的第三代Fire TV Stick)的高级扎根过程。
多亏了XDA论坛上的用户xyz和用户k4y0z(他们创建了一个用于执行该漏洞的很好的包)发现了一个漏洞,才有可能根除该漏洞。他们称这个包裹为kamakiri。
通过根访问解锁Fire TV棒,我们可以在上面安装任何我们想要的东西,并绕过现有操作系统的限制。例如,以下是用扎根的Fire电视棒可以做的一些事情:
在这篇文章的末尾,我们将只回顾一下根过程,并选择性地在Termux上安装Arch Linux。
我们将使用Linux将一个打了补丁的Linux内核ISO刻录到USB驱动器中,该驱动器将用于从Fire TV Stick引导并在Fire TV Stick上运行利用漏洞。
我们需要稍作硬件更改才能解锁Fire TV棒上的引导加载程序。平头螺丝刀将被用来打开Fire TV棒,以接触电路板上的小电容器,我们需要短路来解锁引导装载器。我们将用一小块铝箔把这些点连接起来。
OTG电缆用于将外部存储连接到Fire TV棒,以扩展其内部存储。Fire TV Stick只有8 GB的内部存储空间,实际可用的空间不到5 GB。我们安装应用程序或将现有应用程序移动到外部存储中,以释放内部内存,这应该会使Fire TV Stick响应更灵敏一些。
重要的是,你不应该在已经用亚马逊账户设置的情况下这样做,因为我读到在它扎根后可能不可能正确设置它。
还要确保通过进入Fire TV Stick启用USB调试:设置-&>我的Fire TV-&>;开发人员选项-&>打开ADB调试和打开来自未知来源的应用程序。
打开箱子很简单;使用小平头螺丝刀或撬开工具(如这个),然后把它放在缝隙之间来打开它。有多个连接接头,应该会毫不费力地弹出打开。
下一步是移除隔热罩,隔热罩挡住了我们需要接触到的小电容器。使用一个小的平头螺丝刀(塑料螺丝刀更好)或任何你可以滑到下面把它从底座上拧下来的东西。隔热罩在一侧,末端没有两个方形的块状天线。
隔热板是由两个粘性的垫子固定的,应该不费什么力气就能拆下来。
我们需要创建一个短片来解锁引导加载程序。短片将使Boottrom进入下载模式,允许我们刷新自定义图像。
这部分有点棘手,因为我们需要连接的电容器真的很小。这些是我们试图缩短以解锁引导加载程序的要点。
以下是黑板上各点的特写图像,显示没有任何金属外壳:
这是另一个显示这些点的视图。这些点应连接到金属外壳:
拿一小块铝箔,把它松弛地折叠起来,直到你有一根半平的细棍子,你可以放在零件覆盖物的下面,然后折叠起来,使它保持在与外壳接触的位置。
记住要小心,不要使用锋利的物品或太多的力量,因为那样可能会损坏盖子,还可能会使设备出现砖块。
从https://github.com/amonet-kamakiri/fireiso.下载打补丁的linux内核映像。此ISO包含通过USB连接到Fire TV Stick以启动攻击所需的所有应用程序。
我总是更喜欢使用dd,因为它简单。插入USB驱动器后,首先找出它的设备名称。在我的示例中,我有一个位于/dev/sdb的16 GB(显示为14.6G驱动器)。
$lsblknvme0n1259:0 0 476.9G 0 Disk├─nvme0n1p1259:1 0 468G 0 Part/├─nvme0n1p2259:2 08G 0 Part[交换]BOOT nvme0n1p3259:3 0 961.3M 0 Part/└─/efisdb 8:16 1 14.6G 0 Disk├─sdb1 8:17 1 7.3G 0 Part├─sdb2 8:18 1 16M 0 Part└─sdb3 8:19 1 7.3G 0 Part。
现在使用dd将ISO映像直接刻录到USB设备。始终确保输出路径正确,以避免意外覆盖并可能损坏错误的路径或设备!
如果你使用的是Windows,那么你可以使用Rufus,这是一个流行的GUI,用于在Windows上创建可引导的USB驱动器。
如果您有另一台计算机,请将您的可引导USB驱动器插入另一台计算机进行引导,如果没有,请从当前计算机重新启动。按相应的功能键进入BIOS设置,根据您的计算机型号不同。确保您可以从设置中的USB驱动器启动,然后退出BIOS。
如果计算机从USB驱动器成功启动,您应该会看到类似这样的启动屏幕。
恢复程序称为TWRP(Team Win Recovery Project),允许我们安装自定义固件、ROM(如Lineage OS)以及备份整个系统的功能。
在引导的操作系统中打开终端,并将目录切换到桌面。我们将在此处下载所有必要的利用漏洞文件。
名为flakie的用户方便地提供了包含必要的利用漏洞脚本和Magisk的压缩文件。Magisk在使用恢复映像刷新设备后解锁对该设备的root访问。包含利用漏洞脚本的压缩包可从https://flakie.co.uk/downloads/4k-exploit-files.zip.获得。
[根@sysresccd~/桌面]#wget https://flakie.co.uk/downloads/4k-exploit-files.zip--2020-10-11 07:58:39--https://flakie.co.uk/downloads/4k-exploit-files.zipLoaded CA证书';/etc/ssl/certs/ca-certificates.crt';Resolving flakie.co.uk(flakie.co.uk)...。77.72.1.21正在连接到flakie.co.uk(flakie.co.uk)|77.72.1.21|:443...。已连接。已发送HTTP请求,正在等待响应...。200OK长度:23766751(23M)[应用程序/压缩]保存到:‘4K-EXPLITE-FILES.zip’4K-EXPLITE-FILES.ZI 100%[=4.1s2020-10-11 07:58:44(5.50MB/s)-‘4k-EXPLITE-Files.zip’保存[23766751/23766751][ROOT@sysresccd~/Desktop]#ls4k-EXPLICIT-files.zip。
[root@sysresccd~/Desktop]#unzip 4k-exploit-files.zipArchive:4k-exploit-files.zip充气:delete-Amazon-Launcher.txt充气:Disable-ota.txt充气:exploit-Commands.txt提取:kamakiri-mantis-v1.2.zip提取:magisk-v20.4.zip充气:NewSettingsRoot.apk充气:root-4k.txt[root@sysresccd~/Desktop]#ls4k-Developit-files.zip-Commands.txt SettingsRoot.apkdelete-Amazon-Launcher.txt SettingsRoot.apkdelete-Amazon-Launcher.txt SettingsRoot.apkdelete-amazon.txt SettingsRoot.apkdelete-amazcher.txt SettingsRoot.apkdelete-Amazon-Launcher.tkamiri-mantis-1.2。Zip root-4k.txtable-ota.txt magisk-v20.4.zip。
我们需要下载包含引导加载器脚本的第二个zip。该压缩文件在https://flakie.co.uk/downloads/4k-extra-files.zip上有售。
[根@sysresccd~/桌面]#wget https://flakie.co.uk/downloads/4k-extra-files.zip--2020-10-11 08:01:46--https://flakie.co.uk/downloads/4k-extra-files.zipLoaded CA证书';/etc/ssl/certs/ca-certificates.crt';Resolving flakie.co.uk(flakie.co.uk)...。77.72.1.21正在连接到flakie.co.uk(flakie.co.uk)|77.72.1.21|:443...。已连接。已发送HTTP请求,正在等待响应...。200OKLength:27522372(26M)[应用程序/压缩文件]保存到:‘4k-Extra-files.zip’4k-Extra-files.zip 100%[=4.6s2020-10-11 08:01:01:51(5.66MB/s)-‘4
[root@sysresccd~/Desktop]#unzip 4k-Extra-files.zipArchive:4k-Extra-files.zip充气:4k-install-Extra-files.txt充气:File_Explorer_Plus-8.0.1.0_RU.apk充气:LeanKeyKeyboardPro_v6.0.8_Origin_r.apk充气:YoWindow-v2.19.9.apk[root@sysresccd~/Desktop]#ls4k-exploit-files.zip kamakiri-mantis-v1.2.zip4k-Extra-files.zip LeanKeyKeyboardPro_v6.0apk充气:YoWindow-v2.19.9.apk[root@sysresccd~/Desktop]#ls4k-exit-files.zip kamakiri-mantis-v1.2.zip4k-Extra-files.zip LeanKeyKeyboardPro_v6.0。8_Origin_r.apk4k-Install-Extra-files.txt Magisk-v20.4.zipdelete-amazon-Launcher.txt NewSettingsRoot.apkDisable-ota.txtroot-4k.txtdevit-Commands.txt YoWindow-v2.19.9.apkFile_Explorer_Plus-8.0.1.0_RU.apk。
[root@sysresccd~/Desktop]#unzip kamakiri-mantis-v1.2.zip存档:kamakiri-mantis-v1.2.zip创建:kamakiri/创建:kamakiri/Brom-payload/Creating:kamakiri/Brom-payload/stage2/flating:kamakiri/Brom-payload/stage2/stage2.bin创建:kamakiri/Brom-payload/Stage1/flating:kamakiri/Brom-payload/stage1/stage1.bin创建:kamakiri/bin/tzimg充气:kamakiri/bin/preloader.img:kamakiri/Brom-payload/stage1/flating:kamakiri/Brom-payload/stage1/flating:kamakiri/bin/tzimg充气:kamakiri/bin/preloader.img:kamakiri/brom-payload/stage2.bin创建:kamakiri/brom-payload/stage1/flating:kamakiri/bin/tzimg充气:kamakiri/bin/preloader.img。Bin充气:kamakiri/bin/lk.bin充气:kamakiri/bin/twrp.img正在创建:kamakiri/lk-有效负载/创建:kamakiri/lk-payload/build/inflating:kamakiri/lk-payload/build/payload.bin提取:kamakiri/boot-step.sh创建:kamakiri/module/logger.py充气:kamakiri/module/load_payload.py充气:kamakiri/module/common.py充气:kamakiri/module/main.py充气:kamakiri/module/logger.py充气:kamakiri/module/load_payload.py充气:kamakiri/module/common.py充气:kamakiri/module/main.py充气:kamakiri/module/logger.py充气:kamakiri/module/load_payload.py充气:kamakiri/module/common.py充气:kamakiri/module/main.py充气:kamakiri/module/快速引导步骤。Sh创建:META-INFO/CREATING:META-INFO/COM/CREATING:META-INF/COM/GOOGLE/CREATING:META-INF/COM/google/android/flatating:META-INF/COM/google/android/更新二进制提取:META-INF/COM/google/android/updater-script[root@sysresccd~/Desktop]#ls4k-Developit-files.zip kamakiri-mantis-v1.2.zip4k-Extra-files.zip LeanKeyKeyboardPro_v6.0.8_origin_r.apk4k-install-extra-files.txt。Magisk-v20.4.zipdelete-Amazon-Launcher.txt meta-INFDisable-ota.txt newSettingsRoot.apkexploit-Commands.txt root-4k.txtFile_Explorer_Plus-8.0.1.0_RU.apk YoWindow-v2.19.9.apkamakiri。
现在将Fire TV Stick USB连接到运行FireOS的计算机。暂时不要连接Fire电视棒的HDMI端。如果Short设置正确,根脚本应该会检测到botrom。
如果短路设置不正确,您将看到如下错误消息:
[2020-10-11 08:11:52.412845]找到端口=/dev/ttyACM0[2020-10-11 08:11:52.452394]握手[2020-10-11 08:11:52.473815]禁用监视跟踪回溯(最近一次调用):文件";main.py";第119行,在<;模块&>main(Dev)文件";main.py";第24行,位于main load_payload(Dev)文件";/root/Desktop/kamakiri/modules/load_payload.py";,第47行,在Load_Payload dev.write32(0x10007000,0x22000000)文件";/root/Desktop/kamakiri/modules/common.py";,行147,写入32 self.check(self.dev.read(2),b';\x00\x01';)#参数检查文件";/root/Desktop/kamakiri/modules/common.py";,行84,正在检查引发运行错误(";错误:串行协议不匹配,预期{}获取{}";.format(gold.hex(),test.hex()运行错误:错误:串行协议不匹配,预期0001获取0000。
使用ctrl-c取消脚本,然后再试一次,方法是拔下Fire TV Stick USB,并确保设备上正确连接了正确的大写字母以创建短路。
再次尝试运行botrom脚本并从Fire TV棒连接USB。
如果短路设置正确,您将看到一条消息,说明已正确附加。仔细删除短码,然后按Enter键继续:
[root@sysresccd~/Desktop/kamakiri]#./botrom-step.sh[2020-10-11 08:37:52.615981]正在等待引导程序[2020-10-11 08:37:56.886375]找到端口=/dev/ttyACM 0[2020-10-11 08:37:56.886819]握手[2020-10-11 08:37:56.887311]禁用看门狗*如果有短路连接,请立即将其移除*按Enter键继续*。
[2020-10-11 08:38:36.990668]加载有效负载来自../brom-payload/stage1/stage1.bin=0x27C字节[2020-10-11 08:38:37.122565]让我们的岩石[2020-10-11 08:38:37.129146]等待阶段1上线...。[2020-10-11 08:38:37.131450]一切正常[2020-10-11 08:38:37.131554]加载第二级有效负载[2020-10-11 08:38:37.131661]加载有效负载来自../brom-payload/stage2/stage2.bin=0x36D4 bytes[2020-10-11 08:38:37.131722]发送第二级有效负载[2020-10-11 08:38:37.155635]聚会时间[2020-10-11 08:38:37.156942]等待第二阶段上线...。[2020-10-11 08:38:37.313780]都很好[2020-10-11 08:38:37.313780]检查gpt[2020-10-11 08:38:37.437896]gpt_parsed={';lk';::(23552,32768),';tee1';:(3072,10240),';tee2';:(13312,10240),';引导';:(23552,32768),';恢复';:(56320,32768),';徽标';:(89088,7168),';KB';::(96256,2048年),';dkb';:(98304,2048),';杂项';:(100352,2048),';供应商';::(102400,307200),';系统';::(409600,2252800),';缓存';:(2662400,1048576),';用户数据';:(3710976,11562591),';';:(0,1)}[2020-10-11 08:38:37.438143]检查boot0[2020-10-11 08:38:37.477132]检查rpmb[2020-10-11 08:38:37.682633]清除预加载头[4/4][2020-10-11 08:38:37.779397]降级rpmb[2020-10-11 08:38:37.781113]重新检查rpmb[2020-10-11 08:38:38.663317]rpmb降级OK[2020-10-11 08:38:38。663820]Flash lk[6/6][2020-10-11 08:40:32.074984]Flash lk-payload[6/6][2020-10-11 08:40:32.201797]注入微加载器[2/2][2/2][2020-10-11 08:40:32.375597]强制快速启动[2020-10-11 08:40:32.470381]Flash预加载器。][2020-10-11 08:40:41.757329]重启。
在此阶段,引导加载程序已准备好使用自定义恢复映像进行刷新。
[root@sysresccd~/Desktop/Kamakiri]#./fast boot-step.shSending';(11592 KB)OK[0.598s]写入Recovery';OK[0.732s]已完成。总时间:1.342s好[0.002s]完成。总时间:0.002s您的设备现在将重新启动到TWRP。[root@sysresccd~/Desktop/kamakiri]#cd..。
现在引导加载器已解锁,我们可以使用Magisk将其作为根。重新启动设备进入TWRP恢复:
[root@sysresccd~/Desktop]#adb reboot Recovery*后台进程未运行;现在从TCP:5037开始*后台进程已成功启动。
[root@sysresccd~/Desktop]#adb Push Magisk-v20.4.zip/sdcard/magisk-v20.4.zip:1个文件推送。14.4MB/s(0.393秒内为5942417字节)。
~#twrp install/sdcard/magisk-v20.4.zip正在安装zip文件';/sdcard/magisk-v20.4.zip';正在检查摘要文件...。[amonet]从恢复加载微型加载器...。[amonet]删除引导补丁...。[amonet]确定*Magisk 20.4安装程序*-挂载/系统挂载/供应商-目标映像:/dev/block/mmcblk0p4-设备平台:ARM构建环境-解压缩启动映像-检查内存状态-检测到库存启动映像-修补随机磁盘-重新打包启动映像-闪烁新启动映像-卸载分区-完成[amonet]安装启动修补程序...。[amonet]好[amonet]安装恢复修补程序...。[amonet]ALYLEY_INSTALLEDDONE处理脚本文件
~#twrp擦除缓存使用mke2fs格式化缓存...完成。完成处理脚本文件~#twrp擦除dalvikWiping缓存&;Dalvik...已清理:/data/Dalvik-cache...--Dalvik缓存目录擦除完成!完成处理脚本文件~#退出。
现在,我们要将HDMI电缆插入电视,同时仍将USB电缆插入计算机。
运行ADB设备,它应该打印设备ID,后跟单词“device”。如果HDMI电缆没有正确连接,则会显示“未经授权”。
进入ADB shell并运行su。您将有10秒的时间在电视上按GRANT,以授予超级用户永久访问权限。
禁用来自亚马逊的OTA(空中传输)更新非常重要,这样他们就不能更新和覆盖我们的自定义固件。禁用OTA更新仍将允许单个应用程序照常更新。
在ADB shell中使用软件包管理器pm命令禁用以下软件包:
[root@sysresccd~/Desktop]#adb shellmantis:/$pm禁用com.amazon.tude.forcedotaupdater.v2mantis:/$pm禁用com.amazon.device.software.otamantis:/$pm禁用com.amazon.device.software.ota.override。
禁用这些软件包不是永久性的,我们可以在将来的任何时候撤销此操作。
此时,您可以像往常一样从计算机上拔下Fire TV棒,然后将其插入墙上插座。可以将HDMI电缆插入电视。在启动时,您会注意到TWRP屏幕。您可以按Cancel(取消)按钮停止正常引导过程,转而进入TWRP恢复。
我们不会在这篇文章中讨论如何使用TWRP,所以只要像往常一样继续引导,在引导过程中不做任何操作就可以了。
由于我们不再需要访问引导加载程序,因此在此步骤中最好将案例放回Fire TV Stick上。
以下部分是完全可选的,如果您想通过Termux安装Arch Linux,可以按照它们进行操作。
Termux是一个面向Android的终端仿真器和Linux环境。使用Termux或安装Arch Linux不需要对设备进行根操作,但是在有根的设备上使用Linux允许您安装其他需要根访问权限的软件包,比如网络扫描器和Linux容器。
在Fire TV应用商店中没有Termux,所以我们需要间接下载apk文件。安装Termux的一个简单方法是通过F-Droid,这是一个免费和开源的Android软件存储库。
从Fire TV应用商店安装Downloader应用,在搜索菜单中搜索“Downloader”即可找到。
克隆存储库https://github.com/SDRausty/termux-archlinux,它是在Termux环境中设置Arch Linux的脚本集合。
几分钟后,如果一切正常,您将安装拱门。运行startarch命令以chroot到ARCH目录。
要将外部驱动器(如U盘)连接起来用作外部存储,我们需要一根OTG电缆(如这根)。OTG电缆将允许我们的Fire TV棒与外部USB设备接口。
您还可以连接USB集线器以连接更多USB设备。在这里,我有一个有线鼠标和键盘连接在USB驱动器旁边用于存储。链接多条OTP电缆将不起作用。
插入要用于外部存储的USB驱动器后,我们需要格式化该驱动器以使其可用于Fire TV Stick。
下载消防电视棒的远程ADB外壳或远程连接到它。您可以通过Downloader应用程序下载APK。
在打开ADB shell的情况下,使用sm命令对驱动器进行分区,并定义应该为应用程序分配多少存储空间。
要分配整个驱动器用作应用程序存储,请在分区时使用PRIVATE关键字:
您可以使用MIXED仅分配一部分。这里我们只分配50%用于私有存储:
现在我们的驱动器可用于Fire TV Stick,我们可以返回到Termux并运行termux-setup-storage命令以将驱动器和其他有用的目录挂载到主文件夹中:
$termux-setup-storage$lsarch storage$ls storagedcim下载外部共享的电影音乐图片$ls-l storagelrwxrwxrwxrwx 1 u0_a192 u0_a192 24 9月12 18:01 DCIM->;/STORAGE/EMULATED/0/DCIMlrwxrwxrwx 1 u0_A192 28 9月12 18:01下载->;/STORAGE/EMULATED/0/Downloadlrwxrwxrwx 1 u0_A192 0_Axrwx 1 u0-1->;/storage/68BA-19EC/Android/data/com.termux/fileslrwxrwxrwx 1外部u0_A192 0_192A26 9月12 18:01电影->;/storage/仿真/0/Movieslrwxrwxrwxrwx 1 u0_a192 u0_a192 25 9月12 18:01音乐->;/storage/仿真/0/Musiclrrwxrwxrwx 1 u0_a192 28 9月12 18:01图片->;/storage/仿真/0/Pictureslrwxrwxrwx 1 u0_a192 u0_a192 19 9月12 18:01共享->;/storage/仿真/0。
这里重要的是,外部驱动器是我们安装的USB驱动器,现在用于存储。
如果您的内部存储空间不足,并且想要将应用程序移动到USB驱动器,请执行以下操作:
再次打开亚行外壳。列出使用pm命令安装的应用程序,并筛选要移动的特定应用程序。
随移动移动应用程序。
.