从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-client
和ssh
是可以通过防火墙的
添加服务到特定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 靶场设置
主要的Features
- 使用pfSense作为路由和防火墙
- 通过不同的路由实现多个子网划分
- 不同于使用VitualBox做虚拟网络管理的靶场
- 不同子网间的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. 具体设置方法见下一节
- 在服务器端打开浏览器输入 ,可以进入管理界面:
- 首先设置一个主机Host-Only的网络,Gateway地址为 e.g. 192.168.58.1:
- 模式二:通过虚拟机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搭建虚拟机靶场的主要内容,如果未能解决你的问题,请参考以下文章