[Desktop翻译]VirtualBox的小秘密:命令行

自动化您的 VirtualBox 配置html

原文地址:medium.com/disruptive-…react

原文做者:medium.com/@0xbharath安全

发布时间:2017年6月7日 - 4分钟阅读bash

咱们在一些软件上常常会遇到一些不为人知但却很是方便的功能。VirtualBox就有这样一个功能,命令行。markdown

VBoxManage是VirtualBox的命令行界面。有了它,你彻底能够在主机操做系统的命令行中控制VirtualBox。VBoxManage支持GUI给你提供的全部功能,但它支持的功能远不止这些。它公开了虚拟化引擎的全部功能,甚至是那些没法(还不能)从GUI访问的功能。网络

幸运的是,VBoxManage有大量的文档,使生活变得简单。它涵盖了VBoxManage中的全部可用选项。若是你发现本身在使用 VBoxManage,文档是你的参考资料。less

VBoxManage文档oop

与其说是在官方文档中已经普遍涉及的内容,让本文成为VBoxManage的又一教程,不如说是我最近使用VirtualBox命令行解决的一个问题。ui

问题是

我开始在一个开放的安全社区举办研讨会。在开放社区举办研讨会的好处是,很难预测人们带着什么样的软件/硬件走进来。你必须意识到软件依赖性和硬件要求。spa

咱们计划举办一个关于网络侦查的研讨会。做为实验室设置的一部分,咱们面临着一系列的挑战。

  • 咱们想让观众运行几个完整的虚拟机做为实验室的一部分,以展现远程操做系统检测技术,利用内核网络栈实现的差别,因此使用容器是不可能的。
  • 咱们但愿运行 "ReactOS "以免混乱的Windows许可条款。运行ReactOS意味着,使用Vagrant或容器不是一个简单的选择。
  • 观众携带的笔记本电脑有各类主机操做系统。Windows没有原生的SSH客户端,因此Vagrant又不是一个可行的选择。
  • 咱们但愿实验室的设置尽量的自动化,而不是让观众点击每一步,简单的VirtualBox GUI是没法知足的。

VBoxManage FTW!

这时,咱们没有太多选择,只能求助于老牌的VirtualBox,这时我认真考虑了VirtualBox命令行。

  • VirtualBox能够运行几乎全部的*nix机器,也能够运行ReactOS。
  • VBoxManage支持实验室设置的彻底自动化(事实上Vagrant在后台使用VBoxManage)。
  • VBoxManage在全部安装了VirtualBox的平台上均可以使用。

解决方案的步骤

建立实验室设置

咱们建立了一堆虚拟机。其中一些虚拟机做为受害者,一个虚拟机做为实验室中的攻击者。咱们使用VirtualBox GUI从咱们的Linux机器中导出OVA格式的虚拟机。这时咱们有一个目录,里面有全部OVA格式的实验室虚拟机。

导入实验室设置

  • 咱们为*nix建立了一个bash脚本,为Windows建立了一个批处理文件,以使用VBoxManage自动导入实验室设置。
  • Windows的问题是VBoxManage只能在VirtualBox安装目录下做为命令使用,因此咱们必须调整批处理文件。
  • 下面的脚本导入全部须要的OVA文件,并列出主机上全部可用的虚拟机,以检查OVA是否成功导入。

bash脚本导入实验室虚拟机。

#!/usr/bin/env bash
VBoxManage import "victim1.ova"
VBoxManage import "victim2.ova"
VBoxManage import "attacker.ova"
printf "\n\nList of all the VMs\n------------------------\n"
VBoxManage list vms
复制代码

batch脚原本导入实验室虚拟机。

PATH=%PATH%;C:\Program Files\Oracle\VirtualBox
vboxmanage import "victim1.ova"
vboxmanage import "victim2.ova"
vboxmanage import "attacker.ova"
echo. && echo 'List of all VMs' && echo. && echo '-------------------------'
vboxmanage list vms
cmd \k
复制代码

开始实验室

  • 咱们建立了一个*nix的bash脚本和Windows的批处理文件来运行实验室。
  • 咱们但愿在后台运行受害者,只显示攻击者。VirtualBox无头模式在后台运行一个虚拟机。
  • 咱们从Linux机器导出OVA,而Windows上的VirtualBox主机专用网络适配器名称与Linux不一致,因此咱们不得不使用vboxmanage modifyvm来修改适配器名称。
  • 下面的脚本在后台运行全部的受害者,并显示攻击者的虚拟机。这个脚本列出了全部正在运行的虚拟机,以检查是否全部的东西都在运行。

bash脚原本启动实验室。

#!/usr/bin/env bash
vboxmanage startvm "victim1" --type headless
vboxmanage startvm "victim2" --type headless
vboxmanage startvm "attacker"
printf "\n\nList of all the VMs running\n------------------------------\n"
vboxmanage list runningvms
复制代码

batch脚原本启动实验室。

PATH=%PATH%;C:\Program Files\Oracle\VirtualBox
vboxmanage modifyvm "victim1" --nic1 hostonly --hostonlyadapter1 "VirtualBox Host-Only Ethernet Adapter"
vboxmanage modifyvm "victim2" --nic1 hostonly --hostonlyadapter1 "VirtualBox Host-Only Ethernet Adapter"
vboxmanage modifyvm "attacker" --nic1 hostonly --hostonlyadapter1 "VirtualBox Host-Only Ethernet Adapter"
vboxmanage startvm "victim1" --type headless
vboxmanage startvm "victim2" --type headless
vboxmanage startvm "attacker"
echo. && echo 'List of all the running VMs' && echo. && echo '-------------------------'
vboxmanage list runningvms
cmd \k
复制代码

中止实验室

  • 建立了*nix的bash脚本和Windows的批处理文件来优雅地关闭实验室。
  • vboxmanage controlvm有一个选项能够关闭正在运行的虚拟机。
  • 下面的脚本关闭了全部正在运行的实验室虚拟机,并列出了当前正在运行的虚拟机,以检查一切是否正常关闭。

bash脚原本中止实验室。

#!/usr/bin/env bash
vboxmanage controlvm "victim1" poweroff
vboxmanage controlvm "victim2" poweroff
vboxmanage controlvm "attacker" poweroff
printf "\n\nList of all the VMs running\n------------------------------\n"
vboxmanage list runningvms
复制代码

批量文件来中止实验室。

PATH=%PATH%;C:\Program Files\Oracle\VirtualBox
vboxmanage controlvm "victim1" poweroff
vboxmanage controlvm "victim2" poweroff
vboxmanage controlvm "attacker" poweroff
echo. && echo 'List of all the running VMs' && echo. && echo '-------------------------'
vboxmanage list runningvms
cmd \k
复制代码

结论

VBoxManage是VirtualBox提供的一个很是整洁而强大的界面。当你试图自动化你的虚拟环境时,特别是当你试图分发你的环境时,它就会很方便。本文探讨了这样一个问题的解决方案,这还不是冰山一角,找到一个问题/挑战,阅读VBoxManage文档,并享受其中的乐趣!


经过www.DeepL.com/Translator(免费版)翻译

相关文章
相关标签/搜索