【IOT安全】路由器固件编译入门

声明: Tide安全团队原创文章,转载请声明出处! 文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

0×01环境准备

1、本次使用开源的OPENWRT源码进行编译,OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。

2、本次使用斐讯K3做为适配的路由器。

3、编译环境:使用 Ubuntu 64bit来作为固件编译环境,推荐 Ubuntu 18 LTS x64a)、

a)系统更新

sudo apt-get update

b)安装编译需要用基础环境执行如下命令

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib

要等一段时间安装完成

0×02固件编译

本次编译采用lede大佬的开源版本库https://github.com/coolsnowwolf/lede

1、克隆源码进入工作目录

1、使用

git clone https://github.com/coolsnowwolf/lede.git

命令下载好源代码,然后 cd lede 进入目录,编辑过程不用使用root账户,否则编译过程容易出错。

2、更新软件包

1、执行如下命令更新feeds(第三方包)

./scripts/feeds update -a

2、执行如下命令 安装feeds(第三方包)

./scripts/feeds install -a

3、配置固件菜单

make menuconfig

<*>,表示将软件包编译进固件,<M>,表示软件包会被编译,但不会编译进固件。<>,不选择。

选项 作用
Target System 目标设备芯片类型
Subtarget 目标子类型,一般是具体板子类型
Target Profile 针对不同路由器的版本再做的一个明确选项参数,一般默认即可
Target Images 生成的固件文件采用何种分区格式
Global build settings 编译时的一些全局参数,这些参数与Linux内核或GCC编译器相关
Advanced configuration options 高级选项参数,用于OpenWrt开发人员,一般用不上
Build the OpenWrt Image Builder 除了编译固件,再编译一个固件编译环境,可以分发给团队中的其他人使用。一般是厂商不想开放自己的全部源代码,给第三方合作伙伴提供这玩意
Build the OpenWrt SDK 产生OpenWrt SDK环境,就是另外一个开发环境
Build the OpenWrt based Toolchain 单独编译出OpenWrt的交叉编译工具
Image configuration 编译好的固件所附带的参数信息
Package features 一些软件包特性
Base system 基本系统命令软件包
Administration 高级管理命令软件包
Boot Loaders 引导程序,教学板不用固件附带,所以这里无选项
Development 开发用工具包
Firmware 不要被名字混淆了,这个的意思是,固件中是否带某些其他外围芯片的固件
Kernel modules 内核编译参数,这里的参数都来自芯片厂对内核的预设配置
Languages 编程语言软件包
Libraries 库软件包
LuCI OpenWrt下顶顶大名的LuCI界面包
Mail 电子邮件相关的软件包
Multimedia 多媒体软件包
Network 与网络相关的软件包
Sound 声音相关的软件包
Utilities 工具软件包
Video Streaming 视频流服务软件包

4、target system 选择

斐讯K3使用的ARM架构的Broadcom BCM4709C处理器所以选择Broadcom BCM47XX/53XX(ARM)

5、Target Profile选择

6、接下来要添加LUCI

路径为LUCI-collections-LUCI

LuCI 配置( web 网页管理程序):
-LuCI —> 1. Collections —> luci 启用 LuCI
-LuCI —> 3. Applications —> luci-app-commands 网页 Shell
-LuCI —> 3. Applications —> luci-app-ddns 动态域名
-LuCI —> 3. Applications —> luci-app-firewall 防 火 墙
-LuCI —> 3. Applications —> luci-app-ntpc 时间同步服务器
-LuCI —> 3. Applications —> luci-app-qos 上网管理
-LuCI —> 3. Applications —> luci-app-samba 网络共享
-LuCI —> 4. Themes —> luci-theme-bootstrap 默认主题

下为我的自定义选择模块 

选上 frpc

qos

这里选几个也许能用得着

Themes(主题)

Protocols(协议)

以下为详细配置说明(实际使用时请按需选择,否则会因固件太大(指4M Flash版)而无法生成):

LuCI 配置:
LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adbyby-plus   #广告屏蔽大师Plus +
LuCI ---> Applications ---> luci-app-arpbind  #IP/MAC绑定
LuCI ---> Applications ---> luci-app-autoreboot  #支持计划重启
LuCI ---> Applications ---> luci-app-ddns   #动态域名 DNS(集成阿里DDNS客户端)
LuCI ---> Applications ---> luci-app-filetransfer  #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall   #添加防火墙
LuCI ---> Applications ---> luci-app-flowoffload  #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS...
LuCI ---> Applications ---> luci-app-frpc   #内网穿透 Frp
LuCI ---> Applications ---> luci-app-guest-wifi  #WiFi访客网络
LuCI ---> Applications ---> luci-app-ipsec-virtuald  #virtual服务器 IPSec
LuCI ---> Applications ---> luci-app-mwan3   #MWAN3负载均衡
LuCI ---> Applications ---> luci-app-mwan3helper   #MWAN3分流助手
LuCI ---> Applications ---> luci-app-nlbwmon   #网络带宽监视器
LuCI ---> Applications ---> luci-app-p p t p-server  #virtual服务器 p p t p
LuCI ---> Applications ---> luci-app-ramfree  #释放内存
LuCI ---> Applications ---> luci-app-samba   #网络共享(Samba)
LuCI ---> Applications ---> luci-app-sqm  #流量智能队列管理(QOS)LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus   #乳酸菌饮料兲朝上网Plus+
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include s-s New Versiong  #新SS代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include v2瑞  #v2瑞透明代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include Trojan  #Trojan代理
LuCI ---> Applications ---> luci-app-syncdial  #多拨虚拟网卡(原macvlan)
LuCI ---> Applications ---> luci-app-unblockmusic  #解锁网易云灰色歌曲
LuCI ---> Applications ---> luci-app-upnp   #通用即插即用UPnP(端口自动转发)
LuCI ---> Applications ---> luci-app-vlmcsd  #KMS服务器设置
LuCI ---> Applications ---> luci-app-vsftpd  #FTP服务器
LuCI ---> Applications ---> luci-app-wirele违禁软件egdb  #WiFi无线
LuCI ---> Applications ---> luci-app-wol   #WOL网络唤醒
LuCI ---> Applications ---> luci-app-xlnetacc  #迅雷快鸟
LuCI ---> Applications ---> luci-app-zerotier  #ZeroTier内网穿透
LuCI ---> Applications ---> luci-app-accesscontrol  #访问时间控制
LuCI ---> Applications ---> luci-app-adblock   #ADB广告过滤
LuCI ---> Applications ---> luci-app-adbyby-plus  #广告屏蔽大师Plus +
LuCI ---> Applications ---> luci-app-advanced-reboot  #Linksys高级重启
LuCI ---> Applications ---> luci-app-ahcp  #支持AHCPd
LuCI ---> Applications ---> luci-app-aliddns   #阿里DDNS客户端(已弃,集成至ddns)
LuCI ---> Applications ---> luci-app-amule  #aMule下载工具
LuCI ---> Applications ---> luci-app-aria2 # Aria2下载工具
LuCI ---> Applications ---> luci-app-arpbind  #IP/MAC绑定
LuCI ---> Applications ---> luci-app-asterisk  #支持Asterisk电话服务器
LuCI ---> Applications ---> luci-app-attendedsysupgrade  #固件更新升级相关
LuCI ---> Applications ---> luci-app-autoreboot  #支持计划重启
LuCI ---> Applications ---> luci-app-baidupcs-web  #百度网盘管理LuCI ---> Applications ---> luci-app-birdl-ipv4  #对Birdl-ipv6的支持LuCI ---> Applications ---> luci-app-birdl-ipv6  #对Birdl-ipv4的支持LuCI ---> Applications ---> luci-app-bmx6  #BMX6路由协议
LuCI ---> Applications ---> luci-app-bmx7  #BMX7路由协议
LuCI ---> Applications ---> luci-app-cifsd  #网络共享CIFS/SMB服务器LuCI ---> Applications ---> luci-app-cjdns  #加密IPV6网络相关
LuCI ---> Applications ---> luci-app-clamav  #ClamAV杀毒软件
LuCI ---> Applications ---> luci-app-commands   #Shell命令模块
LuCI ---> Applications ---> luci-app-cshark   #CloudShark捕获工具
LuCI ---> Applications ---> luci-app-ddns   #动态域名 DNS(集成阿里DDNS客户端)
LuCI ---> Applications ---> luci-app-diag-core   #core诊断工具
LuCI ---> Applications ---> luci-app-dnscrypt-proxy  #DNSCrypt解决DNS污染
LuCI ---> Applications ---> luci-app-dnsforwarder  #DNSForwarder防DNS污染
LuCI ---> Applications ---> luci-app-dnspod  #DNSPod
LuCI ---> Applications ---> luci-app-docker  #Docker容器LuCI ---> Applications ---> luci-app-dynapoint  #DynaPoint(未知)
LuCI ---> Applications ---> luci-app-e2guardian   #Web内容过滤器
LuCI ---> Applications ---> luci-app-familycloud   #家庭云盘
LuCI ---> Applications ---> luci-app-filetransfer  #文件传输(可web安装ipk包)
LuCI ---> Applications ---> luci-app-firewall   #添加防火墙
LuCI ---> Applications ---> luci-app-flowoffload  #Turbo ACC网络加速(集成FLOW,BBR,NAT,DNS...
LuCI ---> Applications ---> luci-app-freifunk-diagnostics   #freifunk组件 诊断(未知)
LuCI ---> Applications ---> luci-app-freifunk-policyrouting  #freifunk组件 策略路由(未知)
LuCI ---> Applications ---> luci-app-freifunk-widgets  #freifunk组件 索引(未知)
LuCI ---> Applications ---> luci-app-frpc   #内网穿透 Frp
LuCI ---> Applications ---> luci-app-fwknopd  #Firewall Knock Operator服务器
LuCI ---> Applications ---> luci-app-guest-wifi   #WiFi访客网络
LuCI ---> Applications ---> luci-app-haproxy-tcp   #HAProxy负载均衡-TCP
LuCI ---> Applications ---> luci-app-hd-idle  #硬盘休眠
LuCI ---> Applications ---> luci-app-hnet  #Homenet Status家庭网络控制协议
LuCI ---> Applications ---> luci-app-ipsec-virtuald  #virtual服务器 IPSec
LuCI ---> Applications ---> luci-app-kodexplorer  #KOD可道云私人网盘
LuCI ---> Applications ---> luci-app-lxc   #LXC容器管理
LuCI ---> Applications ---> luci-app-meshwizard #网络设置向导
LuCI ---> Applications ---> luci-app-minidlna   #完全兼容DLNA / UPnP-AV客户端的服务器软件
LuCI ---> Applications ---> luci-app-mjpg-streamer   #兼容Linux-UVC的摄像头程序
LuCI ---> Applications ---> luci-app-mtwifi  #MTWiFi驱动的支持LuCI ---> Applications ---> luci-app-mwan3   #MWAN3负载均衡
LuCI ---> Applications ---> luci-app-mwan3helper   #MWAN3分流助手
LuCI ---> Applications ---> luci-app-n2n_v2   #N2N内网穿透 N2N v2 virtual服务
LuCI ---> Applications ---> luci-app-netdata  #Netdata实时监控(图表)LuCI ---> Applications ---> luci-app-nft-qos  #QOS流控 Nftables版
LuCI ---> Applications ---> luci-app-nlbwmon   #网络带宽监视器
LuCI ---> Applications ---> luci-app-noddos  #NodDOS Clients 阻止DDoS攻击
LuCI ---> Applications ---> luci-app-nps  #内网穿透npsLuCI ---> Applications ---> luci-app-ntpc   #NTP时间同步服务器
LuCI ---> Applications ---> luci-app-ocserv  #OpenConnect virtual服务
LuCI ---> Applications ---> luci-app-olsr  #OLSR配置和状态模块
LuCI ---> Applications ---> luci-app-olsr-services  #OLSR服务器
LuCI ---> Applications ---> luci-app-olsr-viz   #OLSR可视化
LuCI ---> Applications ---> luci-app-openvirtual  #Openvirtual客户端
LuCI ---> Applications ---> luci-app-openvirtual-server  #易于使用的Openvirtual服务器 Web-UI
LuCI ---> Applications ---> luci-app-p910nd   #打印服务器模块
LuCI ---> Applications ---> luci-app-pagekitec   #Pagekite内网穿透客户端
LuCI ---> Applications ---> luci-app-polipo  #Polipo代理(是一个小型且快速的网页缓存代理)
LuCI ---> Applications ---> luci-app-pppoe-relay  #PPPoE NAT穿透 点对点协议(PPP)
LuCI ---> Applications ---> luci-app-p p t p-server  #virtual服务器 p p t p
LuCI ---> Applications ---> luci-app-privoxy  #Privoxy网络代理(带过滤无缓存)
LuCI ---> Applications ---> luci-app-qbittorrent  #BT下载工具(qBittorrent)
LuCI ---> Applications ---> luci-app-qos   #流量服务质量(QoS)流控
LuCI ---> Applications ---> luci-app-radicale   #CalDAV/CardDAV同步工具
LuCI ---> Applications ---> luci-app-ramfree  #释放内存
LuCI ---> Applications ---> luci-app-rp-pppoe-server  #Roaring Penguin PPPoE Server 服务器
LuCI ---> Applications ---> luci-app-samba   #网络共享(Samba)
LuCI ---> Applications ---> luci-app-samba4   #网络共享(Samba4)
LuCI ---> Applications ---> luci-app-s-s-libes  #SS-libev服务端
LuCI ---> Applications ---> luci-app-shairplay  #支持AirPlay功能
LuCI ---> Applications ---> luci-app-siitwizard  #SIIT配置向导  SIIT-Wizzard
LuCI ---> Applications ---> luci-app-simple-adblock  #简单的广告拦截
LuCI ---> Applications ---> luci-app-softethervirtual  #SoftEther virtual服务器  NAT穿透LuCI ---> Applications ---> luci-app-splash  #Client-Splash是无线MESH网络的一个热点认证系统
LuCI ---> Applications ---> luci-app-sqm  #流量智能队列管理(QOS)
LuCI ---> Applications ---> luci-app-squid   #Squid代理服务器
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus   #乳酸菌饮料兲朝上网Plus+
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include s-s New Versiong  #新SS代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include v2瑞  #v2瑞透明代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include Trojan  #Trojan代理LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include Kcptun  #Kcptun代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include 违禁软件 Server  #乳酸菌饮料服务器
LuCI ---> Applications ---> luci-app-乳酸菌饮料-plus ---> Include 违禁软件 Socks and Tunnel  #乳酸菌饮料代理
LuCI ---> Applications ---> luci-app-乳酸菌饮料server-python  #违禁软件 Python服务器
LuCI ---> Applications ---> luci-app-statistics  #流量监控工具
LuCI ---> Applications ---> luci-app-syncdial  #多拨虚拟网卡(原macvlan)
LuCI ---> Applications ---> luci-app-tinyproxy  #Tinyproxy是 HTTP(S)代理服务器
LuCI ---> Applications ---> luci-app-transmission   #BT下载工具
LuCI ---> Applications ---> luci-app-travelmate  #旅行路由器
LuCI ---> Applications ---> luci-app-ttyd   #网页终端命令行
LuCI ---> Applications ---> luci-app-udpxy  #udpxy做组播服务器
LuCI ---> Applications ---> luci-app-uhttpd  #uHTTPd Web服务器
LuCI ---> Applications ---> luci-app-unblockmusic  #解锁网易云灰色歌曲
LuCI ---> Applications ---> luci-app-unbound  #Unbound DNS解析器
LuCI ---> Applications ---> luci-app-upnp   #通用即插即用UPnP(端口自动转发)
LuCI ---> Applications ---> luci-app-usb-printer   #USB 打印服务器
LuCI ---> Applications ---> luci-app-v2瑞-server   #v2瑞 服务器
LuCI ---> Applications ---> luci-app-verysync  #微力同步LuCI ---> Applications ---> luci-app-vlmcsd  #KMS服务器设置
LuCI ---> Applications ---> luci-app-vnstat   #vnStat网络监控(图表)
LuCI ---> Applications ---> luci-app-virtualbypass  #virtual BypassWebUI  绕过virtual*设置
LuCI ---> Applications ---> luci-app-vsftpd  #FTP服务器
LuCI ---> Applications ---> luci-app-watchcat  #断网检测功能与定时重启
LuCI ---> Applications ---> luci-app-webadmin  #Web管理页面设置
LuCI ---> Applications ---> luci-app-wifischedule  #WiFi 计划
LuCI ---> Applications ---> luci-app-wireguard  #virtual服务器 WireGuard状态
LuCI ---> Applications ---> luci-app-wirele违禁软件egdb  #WiFi无线
LuCI ---> Applications ---> luci-app-wol   #WOL网络唤醒
LuCI ---> Applications ---> luci-app-wrtbwmon  #实时流量监测
LuCI ---> Applications ---> luci-app-xlnetacc  #迅雷快鸟
LuCI ---> Applications ---> luci-app-zerotier  #ZeroTier内网穿透
支持 iPv6:
1、Extra packages  --->  ipv6helper  (选定这个后下面几项自动选择了)
Network  --->  odhcp6c
Network  --->  odhcpd-ipv6only
LuCI  --->  Protocols  --->  luci-proto-ipv6
LuCI  --->  Protocols  --->  luci-proto-ppp

Kernel modules (内核模块):
Kernel modules —> USB Support —> kmod-usb-ohci 支持 USB 1.0
Kernel modules —> USB Support —> kmod-usb-storage 支持 USB 存储
Kernel modules —> USB Support —> kmod-usb-uhci 支持 USB 1.1
Kernel modules —> USB Support —> kmod-usb2 支持 USB 2.0
Kernel modules —> Video Support —>kmod-video-core
Kernel modules —> Video Support —> kmod-video-cpia2
Kernel modules —> Video Support —> kmod-video-gspca-core
Kernel modules —> Video Support —> kmod-video-pwc
Kernel modules —> Video Support —> kmod-video-uvc
Kernel modules —> Video Support —> kmod-video-videobuf2
Multimedia
Multimedia–> mjpg-streamer
Network
Network–> File Transfer –>vsftpd FTP服务器
Network–> ser2net

7、配置好以后保存

第一次编译会下载大量源码,为了速度所以包越简单越好接下来按ESC退出再退出,最后提示保存,最后就要开始激动人心的编译啦

8、下载dl库

make -j8 download v=s

下载dl库(国内请尽量全局上网)

9、开始编译固件

输入

make -j1 V=s

(-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。

成功编译出固件

openwrt-bcm53xx-phicomm-k3-squashfs.trx

0×03将固件刷入路由器中

参考资料

https://github.com/coolsnowwolf/lede

https://blog.csdn.net/sensiki/article/details/70271533

https://aisoa.cn/post-2574.html

guān

zhù

men

Tide安全团队正式成立于2019年1月 是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

对安全感兴趣的小伙伴可以 关注团队官网: http://www.TideSec.com 或长按二维码关注公众号:

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章