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

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 ---> 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   #内网穿透 FrpLuCI ---> Applications ---> luci-app-guest-wifi  #WiFi访客网络LuCI ---> Applications ---> luci-app-ipsec-virtuald  #virtual服务器 IPSecLuCI ---> 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 pLuCI ---> 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  #支持AHCPdLuCI ---> 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  #DNSPodLuCI ---> 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   #内网穿透 FrpLuCI ---> Applications ---> luci-app-fwknopd  #Firewall Knock Operator服务器LuCI ---> Applications ---> luci-app-guest-wifi   #WiFi访客网络LuCI ---> Applications ---> luci-app-haproxy-tcp   #HAProxy负载均衡-TCPLuCI ---> Applications ---> luci-app-hd-idle  #硬盘休眠LuCI ---> Applications ---> luci-app-hnet  #Homenet Status家庭网络控制协议LuCI ---> Applications ---> luci-app-ipsec-virtuald  #virtual服务器 IPSecLuCI ---> 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-UILuCI ---> 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 pLuCI ---> 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-WizzardLuCI ---> 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  --->  odhcp6cNetwork  --->  odhcpd-ipv6onlyLuCI  --->  Protocols  --->  luci-proto-ipv6LuCI  --->  Protocols  --->  luci-proto-pppKernel modules (内核模块):Kernel modules —> USB Support —> kmod-usb-ohci 支持 USB 1.0Kernel modules —> USB Support —> kmod-usb-storage 支持 USB 存储Kernel modules —> USB Support —> kmod-usb-uhci 支持 USB 1.1Kernel modules —> USB Support —> kmod-usb2 支持 USB 2.0Kernel modules —> Video Support —>kmod-video-coreKernel modules —> Video Support —> kmod-video-cpia2Kernel modules —> Video Support —> kmod-video-gspca-coreKernel modules —> Video Support —> kmod-video-pwcKernel modules —> Video Support —> kmod-video-uvcKernel modules —> Video Support —> kmod-video-videobuf2MultimediaMultimedia–> mjpg-streamerNetworkNetwork–> 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

原文来源:Tide安全团队