zoukankan      html  css  js  c++  java
  • tenda固件分析

    tenda固件仿真

    版本信息

    Firmware version: V15.03.06.47_multi

    System:ubuntu 18.04

    固件提取

    下载固件地址:https://down.tendacn.com/uploadfile/AC10/US_AC10V1.0re_V15.03.06.47_multi_TDE.zip

    binwalk -Me US_AC10V1.0re_V15.03.06.47_multi_TDE.bin
    
    固件仿真

    获取仿真固件内核以及镜像

    wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qcow2
    
    wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta
    

    配置网络,qemu安装过程省略

    ifconfig ens33 down
    ## 关闭网卡
    
    vim /etc/network/interfaces
    
    auto lo
    iface lo inet loopback
    auto br0
    iface br0 inet dhcp
      bridge_ports ens33
      bridge_maxwait 0
    ## 配置网卡网桥,如上
    
    apt install bridge-utils
    ## 安装网桥管理工具
    
    ifconfig ens33 0.0.0.0 promisc up
    ifconfig br0 0.0.0.0 promisc up
    ## 混合模式打开ens33和br0网卡
    
    brctl stp br0 off
    ## 关闭生成树协议
    
    brctl setfd br0 1
    ## 设置br0的转发延迟
    
    brctl sethello br0 1
    ## 设置br0的hello时间
    
    dhclient br0
    ## 获取动态ip
    
    tunctl -t tap0
    ## 创建虚拟网卡
    
    brctl addif br0 tap0
    ## 将tap0加入br0网桥
    
    ifconfig tap0 0.0.0.0 promisc up
    ## 以混合模式打开tap0网卡
    
    brctl showstp br0
    ## 可以通过该命令查看br0网桥信息,来检查配置
    
    系统模式仿真
    qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -net nic -net tap,ifname=tap0 -append "root=/dev/sda1 console=tty0" -nographic
    
    ## username/password
    ## user/user
    ## root/root
    

    进入系统之后,获取仿真系统的ip地址,将从固件中提取出来的文件系统squashfs-root拷贝仿真系统中

    cd /root/squashfs-root
    ## 进入上传的squashfs-root文件夹下
    
    mount -o bind /dev ./dev
    ## 将仿真系统的dev挂载到固件squashfs-root文件系统dev目录
    
    mount -t proc /proc ./proc
    ## 将仿真系统的proc挂载到固件squashfs-root文件系统proc目录
    
    chroot . sh
    ## 将squashfs-root作为根目录执行sh
    
    bin/httpd
    ## 启动tenda的服务
    

    启动服务时报错如下

    查了相关文档,发现tenda服务启动时,存在网络检查函数,检查不通过会进入死循环,这里没有进入死循环而是直接退出了,通过ida分析定位到如下代码

    可以看到存在三个检测函数分别为apmib_init、check_network、ConnectCfm,通过ida的插件keypatch修改为如下

    keypath插件安装使用

    将插件代码git clone下来,将里面的keypatch.py放入ida安装目录的plugins下即可

    修改

    选中修改行,右击选中如下

    导出

    在系统模式下启动服务发现,出现如下情况

    查询相关文档得知,tenda启动服务文件默认绑定的是br0网卡,并且博主提供了两种解决思路:

    1、修改httpd中绑定的网卡名为仿真系统中的网卡名

    2、修改仿真系统的网卡名为br0

    这里采用的是第二种方法

    ifconfig eth0 down
    
    ip link set eth0 name br0
    
    ifconfig br0 up
    

    再次启动即可成功获取ip

    用户模式仿真

    进入squashfs-root目录,并将qemu-mipsel-static命令复制到该目录下

    chroot . qemu-mipsel-static -L . bin/httpd
    
  • 相关阅读:
    查看文件 ls -lh
    java Dom4j xml 写
    centos tar 常用
    os && shutil 模块
    Visual Studio
    ssh 无法登陆
    find 命令
    Centos7 安装redis
    zerorpc
    uwsgi
  • 原文地址:https://www.cnblogs.com/she11s/p/15523184.html
Copyright © 2011-2022 走看看