暮光博客

小心你讨厌的东西,因为你很可能被它塑造成某种形状

之前固件带后门?于是我自行编译了 N1 OpenWrt 固件

折腾 3 条评论

2019 年初折腾的斐讯 N1,三年来一直作为我的家庭旁路由,承担科学上网工作。去年国庆期间,由于之前固件中科学上网不支持 trojan 协议,就在恩山找了一个网友自编译固件更新到 N1 中,新固件内置了许多第三方插件,包含支持多种协议的科学上网、AdGuard Home、音乐解锁等,然而除了科学上网,其他功能我并用不上。

今年夏天,一次偶然地在主路由翻看日志时,发现经常会有不同的华为设备连接到我的家庭网络。起初,我以为是家庭 WiFi 密码遭到泄露,于是更换了密码,并停止了 SSID 广播。然而,还是会有华为设备不断连进来,包括各种型号的华为手机和平板。

之前固件带后门?于是我自行编译了 N1 OpenWrt 固件
(主路由日志,各种华为设备连接记录)

后来我依然猜想是 WiFi 被蹭网,或者是主路由的 DHCP 有 BUG,这半年来没太当回事。
直到前几天下班回家,惊讶发现我的小爱音箱居然在自己播放电影音频。经过一番研究,发现电影是通过局域网 DLNA 点播到我音箱上的。这引起了我极大的不适,这都拉屎拉到我头上了。

于是写脚本监控设备连入,有未知设备连入时就通知我。后续有华为设备连入时,我第一时间去查看了华为设备的网络通信记录,发现华为设备和全国各地的 IP 都有通信。我的家宽极有可能被后门程序开放到公网,放进代理 IP 池了。在家里来来回回拔了几次网线,最终锁定这些华为设备都是从 N1 连入的,因为只要我拔掉 N1 的网线,我就 ping 不通华为设备了。

好家伙,给人当了一年肉鸡。

这里要提一下,这些所谓的「华为设备」可能并非是真实的华为设备,而是后门程序自行虚构的 Hostname 和 MAC 地址。

老固件是哪一个?

其实我本来不想公布老固件型号,因为该作者在恩山发布固件,有诸多用户,未见过其他用户反馈类似问题。后门程序可能不存在于固件本身,而是集成的各种第三方插件,作者可能也处于不知情状态。但思索很久还是发出来吧,如果有其他网友有类似问题,也可以给个参考。

老固件型号是「OpenWrt R20.10.1 国庆中秋双节特别版 by gd772」,在恩山的发布帖子是[N1盒子] 【2021-08-14 】 N1盒子 Openwrt 固件,支持 在线升级!

在此声明,我极大怀疑是内置的某个插件存在后门,具体哪个插件我无法排查,我并非质疑作者有意在编译的固件中投放后门。

自行编译新固件

自此,我觉得还是自己编译固件比较放心,最起码不用内置多余的插件,增加不必要的风险。我用 Parallel 开了一台 Ubuntu 虚拟机,拉取了 Lede 的代码,为了安全和纯净,我只将科学上网插件编译了进去。整个编译过程耗时 4 个多小时,编译完毕后,使用恩山知名用户 flippy 的 Armbian 内核和镜像制作工具,将编译好的 OpenWrt 制成镜像,写入 U 盘。将 U 盘插到斐讯 N1,重启后 U 盘启动,连入 OpenWrt SSH,使用 flippy 的 EMMC 一键写入脚本,将 OpenWrt 写入到 N1 存储中。从编译固件到最终写入 N1,整个过程耗时很久,把我搞得很疲惫。中间也来来回回二次编译了几次,因为第一次编译的固件写入 EMMC 时失败,主要原因是一些写入 EMMC 的依赖工具没有编译进去,比如 fdisk、bikid 等分区工具、文件系统等。

之前固件带后门?于是我自行编译了 N1 OpenWrt 固件
(LEDE 编译和镜像制作过程)

自行编译的固件很干净,不出意外的话,它作为旁路网关仍将服务我很长时间。

之前固件带后门?于是我自行编译了 N1 OpenWrt 固件
(自行编译的新固件界面)

最后不得不说,到 2021 年底,N1 的各种玩法已经很成熟。2019 年初刚玩时,OpenWrt 固件写入 EMMC 还是一个很费事的工作,如今得益于一些大佬的努力,这项工作已经非常简单。

永远的长度
评论区
选择表情选择表情
  1. 大先生

    大佬,能分享一下您这个编译的固件嘛?尝试自己编译每次都要出错。恩山发布的版本插件太多自己用不上。如果可以,万分感谢🙏

    回复
  2. 看来这个真的小心了,我原来也折腾过编译,但是几次都没有成功,最后还是用了别人的固件。。关键是三方插件太多,你防不胜防呀!

    回复
    1. @老张博客

      防不胜防。

      别人的固件有个问题是,为了尽量满足大部分人要求,会往里面塞很多插件,而插件多了就难免会提高风险。
      自己编译只能说尽量规避风险,毕竟有些插件还是要用的。

      回复