家用路由器研究详解入门(内含仿真环境搭建)

家用路由器研究介绍

  • soho路由器
  • 常见路由器品牌
  • 家用路由器漏洞主要四个方面
  • WI-FI常见加密认证方式3种
  • WPS一键加密技术(Wi-Fi Protected Setup)
  • 路由器密码
  • 后门|溢出漏洞
  • 路由器的LINUX系统特点
  • 路由器中系统常用的文本编辑器(^G注:等价Ctrl+G):
  • 一些常用的命令
  • MIPS汇编语言(即用即查即可)
  • 交叉编译(了解即可)
  • 仿真测试模拟环境中使用到的工具
  • WINE安装
  • Binwalk安装
  • Buildroot安装(不好装)
  • gcc安装(为了匹配别的工具版本问题可能需要)
  • Qemu安装
  • Mips和Ubuntu网络配置
  • 其他安装环境各种工具方法

soho路由器

small office home office 路由器(泛指家用路由器)

常见路由器品牌

  • D-Link
  • Cisco
  • Linksys
  • Netgear
  • Tenda
  • H3C

家用路由器漏洞主要四个方面

  • 密码破解漏洞
  • web漏洞
  • 后门漏洞
  • 溢出漏洞

WI-FI常见加密认证方式3种

  • WPA
  • WPA2
  • WEP

WPS一键加密技术(Wi-Fi Protected Setup)

WPS设置下的PIN码(一般两小时内可破解)(密码破解漏洞)

概念:一共8位,最后一位是校验位,可不必破解直接计算。通过PIN码可获得wi-fi密码。
当第一次PIN认证连接失败,路由器会回发一个EAP-NACK信息。通过该信息可以确定PIN的前半部分(前4位)和后半部分正确性。

路由器密码

无线路由器两个重要密码

  • 一个用户连接WiFi的密码;
  • 一个路由器管理密码(Web漏洞);

后门|溢出漏洞

开发者留下的便于调试管理的超级权限入口(后门漏洞)

攻击路由器上运行的程序发现可溢出点进而控制权限(溢出漏洞)

路由器的LINUX系统特点

指令架构:嵌入式,多采用MIPS和ARM
路由器的shell是基于BusyBox(裁剪版的shell)

路由器中系统常用的文本编辑器(^G注:等价Ctrl+G):

  • nano
  • vi

一些常用的命令

  • gcc
    -ggdb 产生符号调试工具所必须的符号

  • gdb
    bt 回溯命令,显示栈帧名称
    up/down 向上或向下移动栈帧

  • du命令 -sk:查看文件大小

  • cat text.text >> readme.txt 将内容附加过去
    cat n1 n2 > readme.txt 将n1和n2合并成一个文件

  • rm -v myfile 显示删除过程

  • grep -n “root” /etc/passwd 查找/etc/passwd文件包含root的行 并输出行号
    grep -R --include="*.php" “POST” ./ 递归查找当前目录下的所有PHP文件,要求文件中包含关键字“POST”

  • ps -ef 显示所有进程
    ps -aux 显示不以终端区分,所有进程按用户ID排列

  • kill pid 根据进程号pid终止进程
    kill -9 pid 强制终止进程号为pid的进程

  • killall command-name 根据进程名command-name终止进程
    killall bash 杀死所有进程名为bash的进程
    killall -9 bash 强制终止进程名为bash的进程

  • ifconfig eth0 192.168.0.0 netmask 255.255.255.0 设置eth0网卡的IP地址及子网掩码
    ifconfig eth0 up 启动
    ifconfig eth0 down 关闭

  • uname -r 显示操作系统发行版本号
    uname -a 显示系统名,节点名称,操作系统发行版本号,操作系统版本,运行系统的机器ID

MIPS汇编语言(即用即查即可)

通用寄存器和特俗寄存器组成
32个通用寄存器

$Rs 源寄存器(source)
$Rt 中间缓存寄存器(temp)
$Rd 目标寄存器(destination)

注意:load/store的传送方向,跟intel汇编固定方向有点不同。

SLT(set on less than)指令用于比较
SLTI
SLTU

交叉编译(了解即可)

参考:交叉编译详解 一 概念篇

仿真测试模拟环境中使用到的工具

  • 系统
    Vmware
    Ubuntu
  • 工具
    ida
    wine(LINUX下支持兼容使用WINDOWS软件)
    qemu(仿真系统,解决不同架构问题)
    python
    binwalk(提取分析固件firmware)
    buildroot

WINE安装

sudo apt-get install wine

参考:https://blog.csdn.net/qq_34638161/article/details/81271977

Binwalk安装

$ sudo apt-get update
$ sudo apt-get install build-essential autoconf git
 
$ git clone https://github.com/devttys0/binwalk
$ cd binwalk
$ sudo python setup.py install
 
# 如果安装的是 python 2.x,还需要安装python-lzma模块
$ sudo apt-get install python-lzma

参考:Binwalk工具的安装

  • binwalk使用

binwalk xxx.bin //固件扫描
binwalk -e/–extract //提取文件
-d提取深度
-M根据签名扫描

-W/–hexdump 对给定的文件进行字节比较。
绿色表示字节都相同
红色不同
蓝色仅在某些文件不同

-y/–include= //过滤,只包含与签名相匹配的
-x/–exclude=

-I/–invalid //显示所有扫描结果

-f/–log= //用于将扫描结果保存到一个指定的文件中

-A/–opcodes //指令系统分析

-E/–entropy //熵分析,生成熵图

Buildroot安装(不好装)

这个软件不好装,装的时间久,问题多,参考少。
解决:仔细跟着步骤走,仔细看提示erro问题,在配置里面去找到相信的修改

去官网下包:https://buildroot.org/download.html

下好后解包:

	tar -jxvf buildroot-snapshot.tar.bz2

配置Buildroot:

cd buildroot
sudo apt-get install libncurses5-dev patch
make clean
make menuconfig

sudo make	//编译,时间超久...

参考:buildroot使用介绍
buildroot详解和分析
安装:Buildroot自动化交叉编译工具

gcc安装(为了匹配别的工具版本问题可能需要)

参考:Linux(ubuntu18.04)安装GCC-9.3.0全指导–2021年尝试成功经验

Qemu安装

# 下载源码包 (如果下载速度过慢可以把地址替换为我们提供的地址:http://42.194.184.212:5212/#/s/4dHZ)
wget https://download.qemu.org/qemu-5.0.0.tar.xz
# 解压
tar xvJf qemu-5.0.0.tar.xz
# 编译安装并配置 RISC-V 支持
cd qemu-5.0.0
./configure --target-list=riscv32-softmmu,riscv64-softmmu
make -j$(nproc)
sudo make install

如果在运行 configure 时遇到软件包依赖的问题(以 Ubuntu 系统举例):

出现 ERROR: pkg-config binary 'pkg-config' not found 时,可以通过 sudo apt-get install pkg-config 安装;
出现 ERROR: glib-2.48 gthread-2.0 is required to compile QEMU 时,可以通过 sudo apt-get install libglib2.0-dev 安装;
出现 ERROR: pixman >= 0.21.8 not present 时,可以通过 sudo apt-get install libpixman-1-dev 安装。

如果有其他问题,请针对不同操作系统在软件包管理器中查找并安装依赖。

其他方法:

sudo apt-get install qemu 	//缺点:可能版本没及时更新

安装完成后检测安装是否成功:

qemu-system-riscv32 --version

Mips和Ubuntu网络配置

1,
sudo apt-get install uml-utilities bridge-utils # 安装依赖文件,网络配置工具

2,修改ubuntu主机网络配置,写入

sudo vim /etc/network/interfaces                        # 修改主机配置

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp        # dhcp方式获取IP地址
iface br0 inet dhcp
bridge_ports eth0
bridge_maxwait 0

这里eth0用ifconfig查看你对应的网卡,我这里是ens33。
家用路由器研究详解入门(内含仿真环境搭建)_第1张图片
3,创建qemu网络接口启动脚本

sudo vim /etc/qemu-ifup

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "bridge networking"
echo "Bringing up $1 for bridge mode"
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0"
sudo /sbin/brctl addif br0 $1			#brctl的最后是L的小写
sleep 2

4,更改qemu-ifup权限,重启使配置生效

sudo chmod 777 /etc/qemu-ifup
sudo /etc/init.d/networking restart

5,在qemu仿真系统中关闭原先网卡,打开br0网卡

sudo ifdown eth0
sudo ifup br0

呜呜~配成了,各种细节注意!!!
在这里插入图片描述

其他方法:
QEMU 网络配置一把梭
https://blog.csdn.net/u014022631/article/details/53411557
各种问题按以下命令直接一把梭:

apt-get install bridge-utils        # 虚拟网桥工具
apt-get install uml-utilities       # UML(User-mode linux)工具

ifconfig <你的网卡名称(能上网的那张)> down    # 首先关闭宿主机网卡接口
brctl addbr br0                     # 添加一座名为 br0 的网桥
brctl addif br0 <你的网卡名称>        # 在 br0 中添加一个接口
brctl stp br0 off                   # 如果只有一个网桥,则关闭生成树协议
brctl setfd br0 1                   # 设置 br0 的转发延迟
brctl sethello br0 1                # 设置 br0 的 hello 时间
ifconfig br0 0.0.0.0 promisc up     # 启用 br0 接口
ifconfig <你的网卡名称> 0.0.0.0 promisc up    # 启用网卡接口
dhclient br0                        # 从 dhcp 服务器获得 br0 的 IP 地址
brctl show br0                      # 查看虚拟网桥列表
brctl showstp br0                   # 查看 br0 的各接口信息

tunctl -t tap0 -u root              # 创建一个 tap0 接口,只允许 root 用户访问
brctl addif br0 tap0                # 在虚拟网桥中增加一个 tap0 接口
ifconfig tap0 0.0.0.0 promisc up    # 启用 tap0 接口
brctl showstp br0                   # 显示 br0 的各个接口

启动:

sudo qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic -net nic -net tap,ifname=tap0,script=no,downscript=no

详细参考及参数说明:https://wiki.archlinux.org/title/QEMU

-net nic 表示希望 QEMU 在虚拟机中创建一张虚拟网卡,-net tap 表示连接类型为 TAP,并且指定了网卡接口名称(就是刚才创建的 tap0,相当于把虚拟机接入网桥)。

script 和 downscript 两个选项的作用是告诉 QEMU 在启动系统的时候是否调用脚本自动配置网络环境,如果这两个选项为空,那么 QEMU 启动和退出时会自动选择第一个不存在的 tap 接口(通常是 tap0)为参数,调用脚本 /etc/qemu-ifup 和 /etc/qemu-ifdown。由于我们已经配置完毕,所以这两个参数设置为 no 即可。

完成啦啦啦:
家用路由器研究详解入门(内含仿真环境搭建)_第2张图片

其他安装环境各种工具方法

[路由器漏洞挖掘环境搭建]https://pup2y.github.io/2020/03/30/lu-you-qi-lou-dong-wa-jue-huan-jing-da-jian/
h4lo安装参考(里面遇见的问题我也基本都碰到了,按里面的解决方式安装应该能解决大家很多时间,唉!我是安装好了以后才发现这篇文章,就浪费了大量时间在安装环境,解决报错上。)
路由器环境基础工具安装

你可能感兴趣的:(IOT,linux,php)