从0开始利用VirtualBox搭建虚拟机靶场

Posted 粥一羊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从0开始利用VirtualBox搭建虚拟机靶场相关的知识,希望对你有一定的参考价值。

从0开始利用VirtualBox搭建虚拟机靶场

写在前面: 由于目前我需要在一台Linux服务器上搭建一个可以用来做渗透测试的虚拟机仿真网络靶场,由于前期基本没有这方面的经验,就把整个过程写记录下来,方便后面的工作。整体上,需要先配置远程可视化的环境,安装VirtulBox,然后配置路由吗,配置Windows Sever Active Directory,最后利用进行安装多个虚拟机。


如果已经安装配置好VirtualBox可以从第二部分-靶场搭建开始看


系统环境:

OS: CentOS Linux release 7.9.2009 (Core)
Processor: Intel® Xeon® Gold 5118 CPU @ 2.30GHz
Architecture: x86_64
CPU(s): 48
Kernel: 3.10.0-1160.45.1.el7.x86_64
Memory: 125G

1. 前期准备配置

1.1 Gnome Desktop 安装

首先安装图形界面

yum groupinstall "Gnome Desktop"
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

1.2 VNC配置

由于大部分时候需要远程连接服务器,同时SSH配置VirtualBox虚拟机不是很直观,而且Windows VM的安装以及PfSense的配置也需要可视化操作。因此需要我们给服务器配置VNC(Virtual Network Computing)服务进行远程操控,首先通过下面的命令安装TigerVNC server.

1.2.1 VNC Sever配置

sudo yum install tigervnc-server -y

安装完程序后,切换到运行VNC程序的用户登录。并执行vncpasswd,为VNC server配置密码[^密码至少有六个字符]。

$ su - your_user  
$ vncpasswd

接下来,通过复制放置在systemd目录下的配置文件,为用户添加一个VNC服务配置文件。(@后的数值1代表显示端口号码(端口5900+1);每启动一个VNC Server端口5900将递增1)

sudo cp /usr/lib/systemd/system/vncserver@.service   /etc/systemd/system/vncserver@:1.service

接下来我们需要更改/etc/systemd/system中的配置文件

vim /etc/systemd/system/vncserver@:1.service

如下图所示,这里ExecStart=/usr/bin/vncserver_wrapper your_user %i中的your_user需要被替换成所需用户名

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper your_user %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

开启VNC Server

sudo systemctl daemon-reload && sudo systemctl start vncserver@:1.service

并通过以下命令将vncserver配置为开机启动

sudo systemctl enable vncserver@:1.service

1.2.2 VNC Client配置

首先在远程客户端安装TightVNC, 然后打开TightVNC Viewer:

输入之前设置的VNC密码

就可以远程操控服务器了

1.2.a 服务器防火墙配置

一般来说,CentOS 服务会自带防火墙,而VNC服务的端口(5901+)会被防火墙屏蔽,导致远程无法连接

基本操作

查看防火墙状态

sudo firewall-cmd --state
sudo systemctl enable firewalld
sudo systemctl stop firewalld
sudo systemctl start firewalld

如果想获得为public zone定义的rule-set,执行下面的命令:

sudo firewall-cmd --list-all

可以看到

[yangyz@localhost ~]$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eno1
  sources:
  services: dhcpv6-client ssh 
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

这里只有 dhcpv6-clientssh 是可以通过防火墙的

添加服务到特定Zone (以public为例)

我们经常需要在当前工作的zone中添加一些服务。可以执行下面的命令查看所有 pre-defined 的services :

sudo firewall-cmd --get-services

对于VNC来说,最直接的方法是执行下面的命令,添加vnc-server服务。

sudo firewall-cmd --zone=public --add-service=vnc-server --permanent

然后我们使用下面命令查看目前添加到zone中的服务

sudo firewall-cmd --zone=public --list-services

得到:

[yangyz@localhost ~]$ sudo firewall-cmd --zone=public --list-services
dhcpv6-client ssh vnc-server

可以看到vnc-server以及被添加到目前zone中。

1.3 VirtualBox 安装

VirtualBox uses the vboxdrv kernel module to control and allocate physical memory for the guest operating systems.
首先下载编译vboxdrv内核模块所需的构建工具(kernel-devel, dkms, kernel-headers, wget)

sudo yum update
sudo yum install –y patch gcc kernel-headers kernel-devel make perl wget

结束后需要重启服务器,要不后续执行sudo /sbin/vboxconfig时可能会报错。

sudo yum install dnf
sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo=https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo

后面,输入下面的命令来安装最新版本的VirtualBox。

sudo dnf install VirtualBox-6.1 -y

安装完成后,检查VirtualBox Linux内核模块服务的状态

sudo systemctl status vboxdrv

同时需要执行一些vbox的配置

sudo /sbin/vboxconfig

成功执行之后就可通过命令行中输入virtualbox启动virtualbox了


2 靶场设置

整体的靶场搭建主要参考0xBEN教程, 并略有更改。

主要的Features

  • 使用pfSense作为路由和防火墙
  • 通过不同的路由实现多个子网划分
  • 不同子网间的Firewall Rules由pfSense控制

2.1 虚拟靶场网络架构

靶场的结构如图所示,主要分为四个不同子网:

  • WAN
  • LAN
    • 这里我们只放置了KALI主机用于攻击和防火墙管理
  • Isolated Network(ISOLATED)
  • Active Domain Network (AD LAB)

2.2 pfSense

pfSense是基于FreeBSD的开源的操作系统形式的防火墙,可以作为路由器和防火墙软件,提供商业级别的防火墙特性。并可以通过WEB页面进行配置。

2.2.1 pfSense虚拟机配置

首先在pfSense官网下载ISO文件:

接下来在VirtualBox中配置一个虚拟机,设为FreeBSD系统

设定2G左右的RAM

选定如下配置,并分配大概16G的磁盘空间

  • 现在创建虚拟磁盘(C)
  • VDI(VirtualBox)磁盘映像
  • 动态分配(D)

同时在设置中将调整启动顺序,将硬盘提到光驱前面

同时配置存储,如下图所示:

选择之前下载的pfSense-CE-2.6.0-RELEASE-amd64.iso。注意:需要先解压。

同时这里可以禁掉声音和USB端口。

2.2.2 VirtualBox路由网口配置

VirtualBox中的VM网络配置模式可以参考https://www.nakivo.com/blog/virtualbox-network-setting-guide/

这里每一个网卡对应pfSense路由器上的一个Interface,首先我们设置WAN也就是相当于和互联网Internet连接的端口。由于物理服务器上只有一个静态配置的互联网端口,所以桥接网络的话虚拟机VM将无法连接网络,所以WAN一般选择NAT模式。

网卡一(WAN)配置如下:

网卡二(LAN)配置如下:
这里LAN的配置可以有两种:1)通过物理服务器的浏览器通过WEB管理pfSense的配置。 2)搭建一个虚拟机VM构成的LAN网络,利用虚拟机(比如KALI)通过WEB管理pfSense的配置 。

后续我们继续选择模式二

  • 模式一:通过物理服务器搭建LAN网络,管理pfSense
    • 首先设置一个主机Host-Only的网络,Gateway地址为 e.g. 192.168.58.1
    • 在VirtualBox中设置LAN对应网卡配置为:
    • 在pfSense中设置一下LAN的端口为Host-Only网络对应的IP-e.g. 192.168.58.100. 具体设置方法见下一节
    • 在服务器端打开浏览器输入 ,可以进入管理界面:
  • 模式二:通过虚拟机VM内网搭建LAN网络,管理pfSense

网卡三(ISOLATED)配置如下:

网卡四(AD LAB)配置如下:

配置完成点击绿色箭头Start运行

2.2.3 pfSense安装

启动后进入安装配置界面:

安装pfSense:

选择键盘配置:

这里选择Auto(UFS)Bios

等安装完成后,选择no然后重新启动

先不配置VLAN

让后配置Interface:

依次设置,最后得到

随着系统自动配置后,整个路由的Interface如下图所示

2.2.4 pfSense端口配置

对于LAN进行配置

选择2 对应LAN

对于不同的LAN模式选择不同的IPv4配置

  • 模式一:192.168.58.100/24
  • 模式二:10.0.0.1/24

直接敲回车

直接敲回车. 我们不会用到IPv6.

输入y开启DHCP

设置起始结束位置

输入n使用https

后面设置好后可以用LAN网络中的虚拟机VM(比如Kali)中的浏览器登入10.0.0.1使用web配置pfSense:

对其他端口配置

仿照上面的步骤配置其他的Interfaces,最终得到:

随后通过WEB进入管理界面,默认的用户名密码是:

  • 用户名: admin
  • 密码:pfsense

后面进入设置wizard:

首先取消勾选 Override DNS

选择地区和时区设置后,由于我们的靶场是在内网搭建的,所以最好uncheck这个选项

优化DNS服务

从菜单栏Services > DNS Resolver中,勾选下面的选项

然后找到 Advanced Settings,勾选这两个选项

2.2.5 防火墙配置

菜单栏中找到Firewall然后添加下列规则

LAN

ISOLATED

AD LAB

2.3 kali 虚拟机VM安装

TODOs

2.4 其它靶机VM安装

2.5 Windows Active Domain配置

附录

配置服务器加载U盘

由于整体靶场镜像大概会有60G左右,通过scp进行拷贝往往速度很慢同时不是特别稳定。由于现在几台服务器相对比较近,所以用U盘拷贝文件比较方便。但是由于FAT32的格式不支持大文件在U盘上的读写,所以U盘需要被格式化成exFAT格式。最新版本的Windows和macOS操作系统都支持exFAT文件系统。但是CentOS和其他大多数主要的Linux系统一样,默认不提供对专有exFAT格式文件系统支持。

为了能够在CentOS上挂载exFAT格式文件系统,需要使用yum从Nux Dextop软件库中安装FUSE exFAT模块。Nux Dextop软件库依赖于EPEL软件库。如果系统没有启用EPEL软件库,可以通过执行下面的命令来启用:

sudo yum install epel-release

接下来,导入软件库的GPG key,通过安装rpm包启用Nux软件库:

sudo rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

最后使用以下命令安装exFAT-fuse和exFAT-utils软件包。

sudo yum install exfat-utils fuse-exfat

现在服务器就可以挂载exFAT格式的U盘了。

X11 Forwarding

除了VNC之外,X11 Forwarding结合SSH客户端软件(如MobaXterm)也可以远程使用linux主机图形化界面的VirtualBox。

首先需要更改/etc/ssh中的SSH的配置文件sshd_config

sudo vim /etc/ssh/sshd_config

并做出如下更改

X11Forwarding yes
X11DisplayOffset 10

同时保证服务器端安装有xauth

[yangyz@localhost ~]$ which xauth
/usr/bin/xauth

如果没有安装的话,执行如下命令安装

sudo dnf install xorg-x11-xauth

这时再重新启动一下SSH Sever:

sudo service sshd restart

在远程SSH客户端就可以打开VirtualBox的可视化界面了

参考Reference:

IP路由 http://t.zoukankan.com/dengbingbing-p-10390391.html

VNC https://www.tecmint.com/install-and-configure-vnc-server-in-centos-7/

X11 https://www.businessnewsdaily.com/11035-how-to-use-x11-forwarding.html

靶场配置(无路由子网) https://blog.csdn.net/lemonalla/article/details/105592150

靶场配置 https://benheater.com/building-a-security-lab-in-virtualbox/

防火墙 https://linuxhint.com/do-firewall-configuration-in-centos-8/

https://www.nakivo.com/blog/virtualbox-network-setting-guide/

以上是关于从0开始利用VirtualBox搭建虚拟机靶场的主要内容,如果未能解决你的问题,请参考以下文章

搭建VirtualBox虚拟机集群

主机访问不了虚拟机搭建云服务器搭建的靶场时显示连接超时

Win10 VirtualBox虚拟机搭建lnmp环境

VirtualBox搭建1主2从虚拟机

VIrtualBox搭建虚拟环境

Vulnhub靶场渗透-Breach1.0