路由器逆向分析------在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 ...
随机推荐
- java基础知识 + 常见面试题
准备校招面试之Java篇 一. Java SE 部分 1.1 Java基础 1. 请你解释Object若不重写hashCode()的话,hashCode()如何计算出来的? Object 的 hash ...
- LeetCode-二叉搜索树的第k大节点
二叉搜索树的第k大节点 LeetCode-面试题54 需要充分了解二叉搜索树的性质. 利用中序遍历的思想,采用相反的思想:先遍历右节点再遍历左节点. /** * 给定一棵二叉搜索树,请找出其中第k大的 ...
- [源码分析] 消息队列 Kombu 之 启动过程
[源码分析] 消息队列 Kombu 之 启动过程 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 是 ...
- Windows-Redis占用C盘系统空间
发现redis在电脑死机蓝屏的情况下,就是非正常退出redis会导致redis的缓存文件不会回收,占用系统空间, 下次在启动的时候,会再次创建一个10G多的缓存文件,极度占用磁盘空间. 现说明解决办法 ...
- 虚拟机安装centos系统【史上最详细的】
因为文章中有很多的图片,在博客园中还需要单张上传,所以使用了将markdown的文件链接存入网盘中让大家下载 windows系统请使用Typora软件打开 如果不知道Typora是什么软件,请在百度搜 ...
- P4285 [SHOI2008]汉诺塔 题解 (乱搞)
题目链接 P4285 [SHOI2008]汉诺塔 解题思路 提供一种打表新思路 先来证明一个其他题解都没有证明的结论:\(ans[i]\)是可由\(ans[i-1]\)线性递推的. (\(ans[i] ...
- android分析之Condition
Condition的含义是条件变量,其实现依赖于系统,一般都要配合Mutex使用,使用步骤为:给mutex上锁(Lock),调用wait等待"条件"发生,如果没有发生则re-wai ...
- jQuery学习笔记(2) jQuery选择器
jQuery的选择器完全继承了CSS的风格,利用jQuery选择器,可以非常便捷和快速地找出特定的DOM元素,然后为它们添加相应的行为. 目录 目录 CSS选择器 jQuery选择器 jQuery选 ...
- 【wp】2021V&NCTF
前几天打完的V&NCTF公开赛,做题的时候没记过程,这是复现wp. 最后排名Top 18,三道RE+两道杂项(wp没啥可放的hhh)+一道web,感觉re题目还是挺好的,难度适中点赞,尤其pc ...
- POJ1562_Oil Deposits(JAVA语言)
思路:bfs.水题,标记下计数就完了. Oil Deposits Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22928 ...