Openwrt安全问题思考
字数 1471 2025-08-29 08:31:35

OpenWRT 安全研究与实践指南

1. OpenWRT 概述

OpenWRT 是一个嵌入式 Linux 发行版,是主流路由器固件之一(其他包括 dd-wrt、tomato、padavan)。与静态系统不同,OpenWRT 提供了:

  • 完全可写的文件系统
  • 灵活的包管理系统
  • 高度可定制性

市场份额逐年增长,被小米等主流厂商用于家用路由设备二次开发。

2. OpenWRT 环境搭建

2.1 获取源代码

git clone git://github.com/openwrt/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

2.2 目录结构详解

目录 内容描述
include/ 编译系统所需的Makefile文件
package/ 软件包目录,包含各代码包的Makefile
scripts/ 工具脚本(shell/python)
staging_dir/ 内核和工具的编译结果
target/ 平台相关代码(不同芯片型号)
toolchain/ 交叉编译工具链
tools/ 工具集(压缩、加壳、文件系统构造等)
build_dir/ 内核、工具、软件源码编译内容
bin/ 编译输出的二进制文件(bin和ipk)

2.3 配置选项

执行配置命令:

make menuconfig

主要配置项:

  • Target System:设备架构
  • Sub Target:子目标
  • Target Profile:目标配置文件
  • Target Images:选择vmdk等镜像格式
  • Base System:基本系统组件(可定制busybox)
  • Kernel Modules:内核驱动模块
  • Network:网络相关程序
  • Utilities:工具包

注:x86_64架构便于本地调试,其他架构需对应硬件

2.4 编译与运行

编译命令:

make V=s

运行:

  • 编译生成openwrt-x86-64-combined-ext4.vmdk
  • 使用VMware加载运行
  • 开启dropbear服务进行连接

3. OpenWRT 安全研究要点

3.1 后端代码审计

3.1.1 Lua语言后台(如小米设备)

审计路径:

  • /www 目录下的Web路由
  • controller/ 目录中的路由处理

常见漏洞类型:

  • 未授权访问
  • 命令注入
  • 权限越权
  • XSS跨站脚本
  • 目录穿越

3.1.2 Boa HTTP服务器(如360设备)

分析要点:

  • Boa配置文件
  • CGI程序逆向分析
  • HTTP请求处理流程

3.2 硬编码问题

检查点:

  1. /etc/passwd/etc/shadow 中的初始密码
  2. Telnet/SSH服务的默认凭证
  3. 启动脚本中的硬编码凭证

示例漏洞代码:

#!/bin/sh
# 某路由器启动脚本中的硬编码
telnetd -l /usr/sbin/login -u Alphanetworks:$image_sign -i br0 &

3.3 后门与隐藏服务

审计要点:

  1. 非常规开放端口(53、22、23等)
  2. 隐藏服务程序(如磊科的igdmtpd监听53413端口)
  3. 非常规认证机制

4. 安全研究建议

  1. 固件分析:解包分析文件系统,查找敏感信息
  2. 服务枚举:全面扫描所有开放端口和服务
  3. 逆向工程:对关键二进制进行逆向分析
  4. 流量分析:监控设备网络通信行为
  5. 认证机制:测试所有可能的认证绕过方式

5. 典型漏洞案例

  1. NetCore全系列路由器后门

    • 服务:igdmtpd
    • 端口:53413
    • 影响:允许未授权访问
  2. 硬编码Telnet凭证

    • 厂商:多个
    • 位置:启动脚本
    • 影响:固定凭证导致设备暴露

通过系统化的环境搭建和安全审计方法,可以有效发现OpenWRT及基于其开发的设备中的安全隐患。

OpenWRT 安全研究与实践指南 1. OpenWRT 概述 OpenWRT 是一个嵌入式 Linux 发行版,是主流路由器固件之一(其他包括 dd-wrt、tomato、padavan)。与静态系统不同,OpenWRT 提供了: 完全可写的文件系统 灵活的包管理系统 高度可定制性 市场份额逐年增长,被小米等主流厂商用于家用路由设备二次开发。 2. OpenWRT 环境搭建 2.1 获取源代码 2.2 目录结构详解 | 目录 | 内容描述 | |------|----------| | include/ | 编译系统所需的Makefile文件 | | package/ | 软件包目录,包含各代码包的Makefile | | scripts/ | 工具脚本(shell/python) | | staging_dir/ | 内核和工具的编译结果 | | target/ | 平台相关代码(不同芯片型号) | | toolchain/ | 交叉编译工具链 | | tools/ | 工具集(压缩、加壳、文件系统构造等) | | build_dir/ | 内核、工具、软件源码编译内容 | | bin/ | 编译输出的二进制文件(bin和ipk) | 2.3 配置选项 执行配置命令: 主要配置项: Target System :设备架构 Sub Target :子目标 Target Profile :目标配置文件 Target Images :选择vmdk等镜像格式 Base System :基本系统组件(可定制busybox) Kernel Modules :内核驱动模块 Network :网络相关程序 Utilities :工具包 注:x86_ 64架构便于本地调试,其他架构需对应硬件 2.4 编译与运行 编译命令: 运行: 编译生成 openwrt-x86-64-combined-ext4.vmdk 使用VMware加载运行 开启dropbear服务进行连接 3. OpenWRT 安全研究要点 3.1 后端代码审计 3.1.1 Lua语言后台(如小米设备) 审计路径: /www 目录下的Web路由 controller/ 目录中的路由处理 常见漏洞类型: 未授权访问 命令注入 权限越权 XSS跨站脚本 目录穿越 3.1.2 Boa HTTP服务器(如360设备) 分析要点: Boa配置文件 CGI程序逆向分析 HTTP请求处理流程 3.2 硬编码问题 检查点: /etc/passwd 和 /etc/shadow 中的初始密码 Telnet/SSH服务的默认凭证 启动脚本中的硬编码凭证 示例漏洞代码: 3.3 后门与隐藏服务 审计要点: 非常规开放端口(53、22、23等) 隐藏服务程序(如磊科的igdmtpd监听53413端口) 非常规认证机制 4. 安全研究建议 固件分析 :解包分析文件系统,查找敏感信息 服务枚举 :全面扫描所有开放端口和服务 逆向工程 :对关键二进制进行逆向分析 流量分析 :监控设备网络通信行为 认证机制 :测试所有可能的认证绕过方式 5. 典型漏洞案例 NetCore全系列路由器后门 : 服务:igdmtpd 端口:53413 影响:允许未授权访问 硬编码Telnet凭证 : 厂商:多个 位置:启动脚本 影响:固定凭证导致设备暴露 通过系统化的环境搭建和安全审计方法,可以有效发现OpenWRT及基于其开发的设备中的安全隐患。