Root谷歌OnHub路由器
Exploitee.rs极客小组因破解谷歌电视而成名,并且他们还发布了许多硬件相关的工具和exp。这次他们root了OnHub路由器。并发布在了他们的博客里。
Google OnHub是谷歌于今年八月下旬发布的智能路由器。详细参数如下:
材料:
一台谷歌OnHub
一个空间在4GB以上的U盘
Root步骤:
制作一个OnHub USB启动盘
1.下载Google OnHub USB镜像
2.解压下载文件,得到a.img文件
3.用你喜欢的工具把镜像文件写入U盘(linux可以使用dd命令 windows可以使用win32diskimager工具)
dd示例:dd if=<PATH-TO-USB-IMG> of=<PATH-TO-USB-Device> bs=64K
if=文件名:输入文件名,即指定源文件:< if=input file > 这里输入USB镜像的绝对路径(包括文件名)
of=文件名:输出文件名,即指定目的文件:< of=output file > 这里输入USB设备的绝对路径(如/dev/bus/usb*)
bs=bytes:同时设置读入/输出的块大小为 XX bytes个字节。
启用OnHub的开发者模式
1.移除谷歌OnHub的电源、网线;
2.拧下OnHub的螺丝,找到隐藏的“开发者模式”开关;
3.在路由器的USB接口插上USB键盘;
4.按下路由的重置按钮(按钮在电源接口附近);
5.插入电源;
6.设备上的IED先是白色,然后橙色闪烁,接着变为红色;
7.LED为红色且不停闪烁时,在键盘上按下CTRL + D,此时LED灯转为紫色;
8.现在按下隐藏的“开发者模式开关”
9.OnHub重启,LED再次紫色闪烁状态:这表明我们已经成功进入Google OnHub的开发者模式。
插入USB启动盘进入“intermediary shell” 启用内核
1.在OnHub插入U盘
2.按下隐藏的开关,从USB启动路由
3.现在可以看到U盘的LED开始闪烁
4.插入网线或连接路由器的WIFI(让路由和PC处于同一局域网)
5.通过Telnet或SSH连接路由
IP: 192.168.86.1 默认ip
User: root
Password: onhub
6.现在你应该成功以root身份登陆OnHub路由了
修改OnHub启动引导
烧录开发版固件+Resigning内核+增加telnetd和busybox
执行下面的命令,用devkeys重编写固件镜像
bash /usr/share/vboot/bin/make_dev_firmware.sh
输出:
Disabling system software write protection status...
Reading system live firmware...
Using keyblocks (normal, normal)...
Preparing new firmware image...
Backup of current firmware image is stored in:
/mnt/stateful_partition/backups/firmware_WHIRLWIND_D3A-Q2Q-Q8B_20150623_223857.fd
Please copy the backup file to a safe place ASAP.
To stop using devkeys and restore original firmware, execute command:
flashrom -w [PATH_TO_BACKUP_IMAGE]
Ex: flashrom -w /mnt/stateful_partition/backups/firmware_WHIRLWIND_D3A-Q2Q-Q8B_20150623_223857.fd Writing system live firmware...
Successfully changed firmware to Developer Keys. New HWID: WHIRLWIND D3A-Q2Q-Q8B DEV
为防止路由器变砖,固件的备份将会储存在U盘当中,你可以利用备份对固件进行还原。
Resigning 内核,禁用rootfs verification
运行下面的命令以来Resigning 内核并禁用rootfs verification
bash /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --image /dev/mmcblk0
输出:
Kernel A: Disabled rootfs verification.
Backup of Kernel A is stored in: /mnt/stateful_partition/backups/kernel_A_20150623_223724.bin
Kernel A: Re-signed with developer keys successfully.
Kernel B: Disabled rootfs verification.
Backup of Kernel B is stored in: /mnt/stateful_partition/backups/kernel_B_20150623_223733.bin
Kernel B: Re-signed with developer keys successfully.
Successfully re-signed of kernel(s) on device /dev/mmcblk0.
运行命令,修改引导环境
1.在Telnet或SSH进入路由root shell环境,运行下面的命令把busybox和Telnet增加到正常的启动模式里面:
mkdir /tmp/roota
mount /dev/mmcblk0p3 /tmp/roota/
mkdir /tmp/rootb
mount /dev/mmcblk0p5 /tmp/rootb/
cp /bin/busybox /tmp/roota/bin/busybox
cp /bin/busybox /tmp/rootb/bin/busybox
cp /etc/init/telnetd.conf /tmp/roota/etc/init/telnetd.conf
cp /etc/init/telnetd.conf /tmp/rootb/etc/init/telnetd.conf
chmod /tmp/roota/bin/busybox
chmod /tmp/rootb/bin/busybox
cp /etc/shadow /tmp/roota/etc/shadow
cp /etc/shadow /tmp/rootb/etc/shadow
sync
umount /dev/mmcblk0p3
umount /dev/mmcblk0p5
2.现在路由的内核已经获得开发者key的签名,并且Telnetd服务已经增加到文件系统里。
重启退出开发者模式
.重启路由器,拔下U盘:路由重启后仍会处于开发者模式,并且依旧从USB设备启动,这时我们需要退出开发者模式,从内部闪存启动路由;
.插入USB键盘;
.反复敲空格键,直到LED灯进入不闪烁紫色的状态;
这可能需要多尝试几次
第一次重启可能需要花费五分钟
.现在OnHub将会再次从内置闪存启动系统。
通过Telnet连接到root之后的路由
IP: 192.168.86.1 (默认)
User: root
Password: onhub
演示视频
*参考:Exploitee.rs,HackNews,编译/0xroot,内容有所修改
Root谷歌OnHub路由器的更多相关文章
- [Android Pro] Android fastboot刷机和获取Root权限
参考文章: https://developers.google.com/android/nexus/images 转载自: http://www.inexus.co/article-1280-1 ...
- 极路由器刷机安装ss插件最新教程
极路由器系统升级后,旧的插件已不可用,这里是最新极路由器刷机教程,可实现绑定ss代理账号的功能. 获取root权限 安装开发者插件,获取root权限,请先登录极路由器后台(电脑浏览器访问 192.16 ...
- 通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃
1.基本信息: 2017/11/27,Check Point 软件技术部门报告了一个华为 HG532 产品的远程命令执行漏洞(CVE-2017-17215),Mirai的升级版变种中已经使用该漏洞.看 ...
- Huawei HG556a A版 刷 openwrt
一直想玩玩openwrt,调研了一下 HG556a尽管散热很烂,但性价比超高,于是淘宝入手一台A版,A版和C版区别为wifi芯片: 到货后在网上找了几个教程便开始动手刷openwrt,但刷机的过程中还 ...
- [转]OpenContrail 体系架构文档
OpenContrail 体系架构文档 英文原文:http://opencontrail.org/opencontrail-architecture-documentation/ 翻译者:@KkBLu ...
- [RN] 04 - React Navigation
react-navigation和react-router的对比: 支持的平台: react-navigation: react-native react-router: react-native.r ...
- OpenContrail 体系
OpenContrail 体系架构文档 1 概述1.1 使用案例1.2 OpenContrail控制器和vRouter1.3 虚拟网络1.4 Overlay Networking1.5 ...
- 抓取摩拜单车API数据,并做可视化分析
抓取摩拜单车API数据,并做可视化分析 纵聊天下 百家号|04-19 15:16 关注 警告:此篇文章仅作为学习研究参考用途,请不要用于非法目的. 摩拜是最早进入成都的共享单车,每天我从地铁站下来的时 ...
- Genymotion刷入谷歌应用市场以及获取root权限
Genymotion刷入谷歌应用市场以及获取root权限 - 推酷http://www.tuicool.com/articles/rEV3aa6 刷入gapp, arm框架,supersu的包要注意, ...
随机推荐
- 【Android实验】线程的使用-计时器
目录 实验目的 实验要求 实验过程 实验结果 实验代码 实验总结 实验目的 熟悉和掌握Android线程的使用 实验要求 完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新 分析秒表的计时是否准 ...
- 解决Floodlight界面无法显示问题
参考: 解决Floodlight1.2+Mininet问题及使用安装 解决Floodlight界面无法显示问题 执行以下命令启动Floodlight时: java -jar target/floodl ...
- ASP.NET MVC 中使用Ckeditor4.5 编辑器
一.在项目中添加Ckeditor4.5.11 (1) 新建 ASP.NET MVC5项目,解压缩ckeditor_4.5.11_standard.zip,在VS2015的解决方案资源管理器中将得到的“ ...
- 【Ctsc2011】幸福路径
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2306 给定一张有向图,每个点有权值,蚂蚁从某个节点出发,初始体力值为$1$,每走一条边$体 ...
- iBatis的基本配置+CRUD操作
首先解释一下CRUD的含义:CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Delete) 基本的数据库操作 创建工程iBati ...
- MongoDB(课时12 字段判断)
3.4.2.7 判断某个字段是否存在 使用“$exists”可以判断某个字段是否存在,如果设置为true表示存在,false表示不存在. 范例:查询具有parents成员的数据 db.students ...
- 3.3 x86指令简介
计算机组成 3 指令系统体系结构 3.3 x86指令简介 x86指令种类繁多,数量庞大.在这一节我们将会学习x86指令的分类,并分析其中最为基础的一部分指令. 通常一个指令系统主要包括这几类指令.运算 ...
- mysql查询出来的某一列合并成一个字段
查询所有用户及角色,一个用户会有多个角色 select u.*,sr.* from users u left join sys_user_role sur on sur.userCode=u.id l ...
- vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerigh ...
- _beginthreadex()和CreateThread()的区别
在本例子中我们使用——beginThreadex这个函数,它和createThread的区别是: 为了方便管理,我么在使用该函数的时候可以把它的线程函数作为类成员,这也就需要在类中把该函数变成静态函数 ...