路由器逆向分析------在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 ...
随机推荐
- js--this指向的相关问题
前言 关于this的指向问题是前端面试中常考的知识点,也是我们开发学习中较难理解的问题.作为JavaScript的基础,需要我们彻底理解这一关键词.this作为JavaScript中非常复复杂的机制, ...
- web之面试常问问题:如何实现水平垂直居中?
前提准备,在HTML页面中定义一个div,div中内容自定义. <div class="box sc">致我们呼啸而过的青春</div> 样式: div.b ...
- 用实战玩转pandas数据分析(一)——用户消费行为分析(python)
CD商品订单数据的分析总结.根据订单数据(用户的消费记录),从时间维度和用户维度,分析该网站用户的消费行为.通过此案例,总结订单数据的一些共性,能通过用户的消费记录挖掘出对业务有用的信息.对其他产 ...
- 你想知道的 std::vector::push_back 和 std::vector::emplace_back
引言 C++ 11 后,标准库容器 std::vector 包含了成员函数 emplace 和 emplace_back.emplace 在容器指定位置插入元素,emplace_back 在容器末尾添 ...
- golang 二维平面求多重遮挡三角形总面积
解决问题描述:二维平面有很多三角形错落,可能会相互叠加落在一起,也可能互相远离.目标求出这些三角形的总占地面积. 我最开始想的解决方案是用总面积-总重叠面积 = 总占地面积.后来实现起来发现当面临多次 ...
- WinForm的Socket实现简单的聊天室 IM
1:什么是Socket 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象. 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制. 从 ...
- 在vscode中go编码发生的问题整理
引言 使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理. 前期准备,必看 ...
- P1164_小A点菜(JAVA语言)
思路 简单动态规划问题 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点" ...
- 设计模式—singleton(单例模式)
单例模式 单例设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建. 这个类提供了一种访问其唯一的对象的方式,可以直接 ...
- 使用 Kubernetes 扩展专用游戏服务器
系列 探索使用 Kubernetes 扩展专用游戏服务器:第 1 部分-容器化和部署 探索使用 Kubernetes 扩展专用游戏服务器:第 2 部分-管理 CPU 和内存 探索使用 Kubernet ...