路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69652258
在QEMU MIPS虚拟机上运行MIPS程序--SSH方式
有关在ubuntu系统上安装和使用QEMU虚拟机的内容,这里不会再描述了,在前面的博客中已经写的很清楚里。这里主要讨论的是怎么在QEMU-MIPS的虚拟机中运行MIPS程序。要在QEMU的系统模式下运行MIPS程序就必须让本地ubuntu主机和QEMU-MIPS虚拟机能够进行网络通讯才有机会。
01.获取安装依赖文件,示例如下:
$ sudo apt-get install bridge-utils uml-utilities
02.修改 ubuntu主机网络配置。
将ubuntu主机系统中的网络接口配置文件 /etc/network/interfaces 修改为如下的内容并保存。
# 编辑ubuntu主机的网络接口文件/etc/network/interfaces
$ sudo gedit /etc/network/interfaces
修改 ubuntu 16.04 的主机系统的网络接口文件 /etc/network/interfaces 的内容如下,这里需要注意一下:如果是 ubuntu 14.04 的系统,在修改本地ubuntu主机的网络接口文件时,需要用 "eth0"
替换掉 "ens33"进行修改,后面启动桥接网络也需要对应的修改相关命令,具体原因在前面的博客《路由器逆向分析------MIPS系统网络的配置(QEMU)》中有提到。修改完网络接口文件 /etc/network/interfaces后,进行保存和关闭。
auto lo
iface lo inet loopback
# ubuntu 16.04的系统用ens33代替eth0
auto ens33
iface ens33 inet manual
up ifconfig ens33 0.0.0.0 up
auto br0
iface br0 inet dhcp
bridge_ports ens33
bridge_stp off
bridge_maxwait 1
执行的结果如下图:
03.创建 QEMU 网络接口文件启动脚本文件,重启网络使网络配置生效。使用下面的命令 创建并编辑 /etc/qemu-ifup
文件。
$ sudo geany /etc/qemu-ifup
在启动脚本文件 /etc/qemu-ifup 中写入如下的内容,然后保存和关闭 /etc/qemu-ifup文件。这里需要注意一下,为了防止不干扰 /etc/qemu-ifup文件的原来的命令操作,没有修改和删除 /etc/qemu-ifup文件中的原文件内容而是在后面直接添加自己的命令操作的内容。
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /sbin/brctl addif br0 $1
sleep 3
执行操作的结果截图如下:
保存、关闭/etc/qemu-ifup文件以后,修改/etc/qemu-ifup文件的权限,然后重启网络使所有配置生效。
# 赋予/etc/qemu-ifup脚本可执行权限
$ sudo chmod a+x /etc/qemu-ifup
# 重启网络使配置生效
$ sudo /etc/init.d/networking restart
执行结果如下图:
04. QEMU启动配置
启用桥接网络,示例如下:
$ sudo ifdown ens33
$ sudo ifup br0
执行结果如下图,这里需要注意一下:如果是 ubuntu 14.04 的系统主机则执行的 "sudo ifdown eth0" 命令,与前面的网络接口文件中的修改进行对应。
下载 MIPS虚拟机,访问网站:https://people.debian.org/~aurel32/qemu/,选择MIPS大端格式或者MIPS小端格式进行下载。这里选择下载MIPS32小端格式 的虚拟机镜像文件,下载的内核文件为 vmlinux-2.6.32-5-4kc-malta,磁盘镜像文件为 debian_squeeze_mipsel_standard.qcow2。
# Start QEMU with the following arguments for a 32-bit machine:
$ qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0"
# for MIPSEL 32bit ###############:
# 内核版本为2.6.x
$ wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-2.6.32-5-4kc-malta
$ wget https://people.debian.org/~aurel32/qemu/mipsel/debian_squeeze_mipsel_standard.qcow2
启动MIPS虚拟机,示例如下:
$ sudo qemu-system-mipsel -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap -nographic
执行结果如下图:
05.配置MIPS系统网络
在qemu-mipsel虚拟机上,使用 " ifconfig -a " 命令,查看网络接口是否已经分配了IP地址。获取网络接口,示例如下:
root@debian-mipsel:~# ifconfig -a
执行结果如下图:
注意:这里有个地方是需要思考的,在前面的博文《路由器逆向分析------MIPS系统网络的配置(QEMU)》中,在启动MIPS虚拟机成功以后,使用 "ifconfig -a" 命令查看MIPS虚拟机的网络接口,发现MIPS虚拟机的网络接口并没有被分配IP地址;在修改了MIPS虚拟机的网络接口文件
/etc/network/interfaces中的 "eth0" 为 "eth1" 后,启用 eth1 网络接口才实现MIPS虚拟机的网络接口被分配IP地址成功,但是在本篇博文的操作中则 不需要修改 MIPS虚拟机的网络接口文件 /etc/network/interfaces 呢?
思考一下:主要的原因是在前面的博文中,启动MIPS虚拟机时-虚拟了一个网络接口,因此在后面的MIPS虚拟机中需要修改网络接口文件 /etc/network/interfaces中的 "eth0" 为 "eth1" 才能实现MIPS虚拟机的网络接口被分配IP地址成功。
在启动MIPS虚拟机时候,去掉如下图所标示的参数即可实现上面所讨论的需求,默认自动实现为MIPS虚拟机网络接口eth0分配IP地址。
使用 " ping " 命令,测试一下MIPS虚拟机是否与外部的网络连接通畅。
root@debian-mipsel:~# ping www.baidu.com
执行结果如下图:
06.通过SSH连接MIPS虚拟机
在ubuntu本地主机上,通过 ssh 远程登陆进入到 MIPS虚拟机 中,执行下面的命令:
$ ssh root@192.168.254.132
ssh登陆MIPS虚拟机成功,结果截图如下:
07.通过 scp 向MIPS虚拟机拷贝MIPS程序
通过 " scp" 命令向MIPS虚拟机拷贝本地ubuntu上的文件,执行下面的命令。这里主要是将解压后的路由器的整个文件系统拷贝到远端的MIPS虚拟机中。
$ scp -r ./squashfs-root root@192.168.254.132:/root/
执行操作的结果截图:
在远端的MIPS虚拟机上查看本地文件的上传的结果,截图如下:
08.在QEMU-MIPS虚拟机上执行MIPS程序
在远端的MIPS虚拟机上执行上传的MIPS程序,示例如下:
root@debian-mipsel:~# cd squashfs-root/
root@debian-mipsel:~/squashfs-root# ./bin/login
-bash: ./bin/login: No such file or directory
root@debian-mipsel:~/squashfs-root# file ./bin/login
./bin/login: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked (uses shared libs), stripped
root@debian-mipsel:~/squashfs-root# chroot . ./bin/login
debian-mipsel login: hello
Password:
Login timed out after 60 seconds.
很显然,在远端的MIPS虚拟机上运行MIPS程序成功。
09.最后的讨论
本文的操作主要是参考《详细的路由器漏洞分析环境搭建教程》这篇文章。总体研究了一下这篇文章,首先感谢文章的作者然后呢,发现其实文章的作者有些知识点弄也不是很清楚。本篇博文与前面的博文《路由器逆向分析------MIPS系统网络的配置(QEMU)》总体区别不大,但是在配置网络接口这一部分稍有区别,其实仔细看官方的文档,也没什么不同。本篇博文还参考《揭秘家用路由器0day漏洞挖掘技术》以及其他的国外嵌入式大牛的博客,后面有时间再分享这些大牛的博客内容。
撰写这篇博文的主要目的为了后面动态调试MIPS程序进行做准备~
路由器逆向分析------在QEMU MIPS虚拟机上运行MIPS程序(ssh方式)的更多相关文章
- 路由器逆向分析------Running Debian MIPS Linux in QEMU
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70176583 下面的文章内容主要参考英文博客<Running Debian ...
- 路由器逆向分析------MIPS系统网络的配置(QEMU)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69378333 MIPS系统网络的配置 使用QEMU 模拟正在运行的MIPS系统并 ...
- gearman在虚拟机上运行没有自动开启的处理
几天来被gearman无响应的问题困扰,后来请教了大神解决.原因是gearman在虚拟机上运行不稳定,无法自动开启,需手动开始,输入图片的两行命令即开始.
- 故障排除:无法启动、访问或连接到 Azure 虚拟机上运行的应用程序
有多种原因可导致无法启用或连接到在 Azure 虚拟机 (VM) 上运行的应用程序.原因包括应用程序未在预期端口上运行或侦听.侦听端口受到阻止,或网络规则未将流量正确传递到应用程序.本文说明有条理地找 ...
- Raspbian 在虚拟机上运行,运行Flask,供宿主机访问
Raspbian 在虚拟机上运行,启动Flask,供宿主机访问 参考ref 1, 在virtualbox上跑起来Raspbian OS 参考ref 2, 在Raspbian上安装并运行Falsk, 注 ...
- 路由器逆向分析------QEMU的基本使用方法(MIPS)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69258334 一.QEMU的运行模式 直接摘抄自己<揭秘家用路由器0day漏 ...
- 路由器逆向分析------在Linux上安装IDA Pro
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69665905 01.在Linux系统上安装Linux版本的IDA Pro Linu ...
- 逆向分析-IDA动态调试WanaCrypt0r的wcry.exe程序
0x00 前言 2017年5月12日全球爆发大规模蠕虫勒索软件WanaCrypt0r感染事件,各大厂商对该软件做了深入分析,但针对初学者的分析教程还比较少,复现过程需要解决的问题有很多,而且没有文章具 ...
- 路由器逆向分析------QEMU的下载和安装(Linux平台)
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68953160 一.QEMU源码的下载和编译 QEMU源码的github下载地址:h ...
随机推荐
- vue3中的通过proxy实现双向数据绑定的原理
1.什么是Proxy?它的作用是? 据阮一峰文章介绍:Proxy可以理解成,在目标对象之前架设一层 "拦截",当外界对该对象访问的时候,都必须经过这层拦截,而Proxy就充当了这种 ...
- java基础:变量、常量与作用域
变量就是可以变化的量,每个变量都必须声明其类型,Java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域.作用域 类变量 实例变量 局部变量常量初始化后不能在改变值,不会变动的值,它 ...
- springboot整合mybatis。mapper.xml资源文件放置到resources文件夹下的配置&别名使用配置
- UI透明欺诈
判断是否存在的代码: private static boolean c(Activity paramActivity) { List localList = ((ActivityMan ...
- Codeforces Round #557 B. Double Matrix
题面: 传送门 题目描述: 给出两个n*m的矩阵,问:是否能通过交换两个矩阵"对应"位置的元素,使两个矩阵都为"递增"矩阵. "递增"矩阵定 ...
- Vue 全家桶学习资源(转)
companion: React 全家桶学习资源(持续更新) 下面整理了一些关于Vue以及Vue衍生的学习资源: 官网文档 官网API ECMAScript 6 入门 30分钟掌握ES6/ES2015 ...
- Java并发编程之基础理论
内存模型 主内存.工作内存与Java堆.栈.方法区并不是同一个层次的内存划分 勉强对应起来 从定义来看,主内存对应Java堆中对象实例数据部分,工作内存对应虚拟机栈中部分区域 从更低层次来说,主内 ...
- PTA 利用指针找最大值
6-6 利用指针找最大值 (10 分) 本题要求实现一个简单函数,找出两个数中的最大值. 函数接口定义: void findmax( int *px, int *py, int *pmax ); ...
- 浅谈意图识别各种实现&数学原理
\[ J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \Gamma (m + \alpha + 1)} {\left({ \frac{x}{2} }\ ...
- java例题_10小球 自由落体
1 /*10 [程序 10 自由落体] 2 题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半: 3 求它在 第 10 次落地时,共经过多少米? 4 第 10 次反弹多高? 5 */ ...