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