1. 实验目的
实现虚拟硬盘的多重加载
搭建虚拟机之间的拓扑网络
完成以下网络连通性测试;
- 靶机可以直接访问攻击者主机
- 攻击者主机无法直接访问靶机
- 网关可以直接访问攻击者主机和靶机
- 靶机的所有对外上下行流量必须经过网关
- 所有节点均可以访问互联网
2. 实验环境
- VirtualBox版本
6.0.11
- 虚拟机os:
- 攻击主机及靶机
kali-linux-2019.3-amd64
- 网关
Debian10
- 靶机
windows_xp_sp3_base
- 攻击主机及靶机
3. 实验过程
3.1. 虚拟机的多重加载
目的:
- 省去再次安装系统的麻烦
该介质是间接分配的,多个虚拟机可共用一个基础介质,每个虚拟机各自存储一个差分介质
- 注意:多重加载时要为每台VM配置特定的端口转发,否则会有”Permission Denied”错误(_端口占用_)。
- 省去再次安装系统的麻烦
实现:
- 对未注册的虚拟硬盘文件,选择
管理
->虚拟介质管理
->注册
,找到待注册的虚拟硬盘进行注册 - 对非多重加载的虚拟硬盘文件,选择
管理
->虚拟介质管理
->属性
, 在类型
中改为多重加载
- 选择
新建虚拟电脑
->…->选择虚拟硬盘
,在使用已有的虚拟硬盘文件
中选择需要多重加载的虚拟硬盘文件,即完成了虚拟硬盘的多重加载 - 注意:在vbox安装完记得把iso解除挂载,不然有可能能下次开启还是进入安装界面
- 对未注册的虚拟硬盘文件,选择
4. 虚拟机网络预设置
4.1. 回环网卡(Loopback adaptor)
Implementations of the Internet Protocol Suite include a virtual network interface through which network applications can communicate when executing on the same machine. It is implemented entirely within the operating system’s networking software and passes no packets to any network interface controller. Any traffic that a computer program sends to a loopback IP address is simply and immediately passed back up the network software stack as if it had been received from another device.
Unix-like systems usually name this loopback interface lo or lo0.
4.2. 网络(Networking)^1:
- NAT网络(NAT Network):一种允许出站连接的内部网络,防止外部系统直接访问该系统,并向内提供内部网络的相互访问,和向外使用TCP/IP网络
- 内部网络(Internal networking):对选定的虚拟机可见,但对宿主机上的应用程序或外部世界是不可见的
- 仅主机网络(Host-only networking):在主机上创建一个类似于环回接口的虚拟网络接口,提供虚拟机和宿主机之间的连接
- 当为一台虚拟机设置多网卡(multiple NICs),那它就同时具有了那些功能
4.3. 混杂模式
混杂模式(英语:promiscuous mode)是电脑网络中的术语。是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。
4.4. 设置
- attacker-kali:
- 设置网卡1
NAT网络
,网卡2、3仅主机网络
- 设置网卡1
- debian:
- 设置网卡1
NAT网络
,网卡2仅主机网络
,网卡3、4内部网络 intnet-1
内部网络 intnet-2
(即 debain 同时属于内网1与内网2)
- 设置网卡1
- victim-xp、victim-kali:
- 分别设置设置为
内部网络 intnet-1
内部网络 intnet-2
- 分别设置设置为
4.4.1. 区别
在主机网络管理器中配置的是主机的host-only
网卡地址(通过在宿主机ipconfig查看),与虚拟机的ip地址(通过虚拟机ip/ifconfig查看)相区别
kali
网络配置
为端口分配ip address
vi /etc/network/interfaces
1 | auto eth0 |
- 注意这里是动态分配
systemctl restart networking
更新
在ubuntu 18.04版本中(at least),若host-only网卡无ipv4(inet)地址,同时要分配静态地址:sudo vim /etc/netplan/0x.netcfg.yaml
1 | network: |
sudo netplan generate && sudo netplan apply
注意静态地址不能和host-only地址重合
4.5. 题外话
enp#s#
:ethernet network peripheral # serial #
(以太网网络外围#串行#”)- 看好是
eth0
还是enp0s3
- 看好是
ip addr
看网卡是不DOWN了,sudo ifconfig enp0s8 up
开启ls /sys/class/net
:看Each of the entries in this directory is a symbolic link rep‐resenting one of the real or virtual networking devices that are visible in the network namespace of the process that is accessing the directory. Each of these symbolic links refers to entries in the /sys/devices directory.
这个目录中的每个条目都是一个符号链接,代表着访问该目录的进程的网络命名空间中可见的真实或虚拟网络设备之一。 这些符号链接中的每一个都指的是/sys/devices目录中的条目。
1
2ls /sys/class/net
enp0s3 enp0s8 enp0s9 lo
kali
源配置
vi /etc/apt/sources.list
1 | deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib |
kali
配置ssh
更新参考:使用ssh连接VirtualBox虚拟机 - 简书
vi /etc/ssh/sshd_config
1 | PermitRootLogin yes |
systemctl enable ssh
systemctl start ssh
sudo service ssh restart
虚拟机配置ssh
- Nat设置
1
2
3
4
5
6
7
8
9
10
11Name: SSH
Protocol: TCP
Host IP:
Host Port: 2222
IP Guest:
Port Guest: 22
- Nat设置
然后
vim /etc/ssh/sshd_config
,将其中的Port 22
解除注释- 更多可参考
PS:在用sever版本的linux时也可用端口转发来实现在host访问vm本地页面

结果示例

4.6. 虚拟机的连通性测试
攻击主机 attacker-kali,网关debian,靶机victim-xp-2
靶机直接访问攻击者主机
ip a |grep eht0
查看攻击者地址tcpdump -i eth0
监听ping包- 靶机
ping
对方ip,观察到reply
;同时攻击主机显示icmp echo
,说明可以直接访问
攻击者无法访问靶机
netstat -nr
检测网卡情况ping xx.xx.xx.xx -w 10
设置10s超时ping靶机ip- 结果显示
100% packet loss
,说明无法访问
网关可以直接访问攻击者主机和靶机
- ping
攻击者主机与靶机都有
reply` 说明成立
- ping
靶机的所有对外上下行流量必须经过网关
- 简单测试:把网关debian开着,靶机可以ping攻击主机也可以上外网,关了debian就无法连接外网
根据网络拓扑设置,在网关主机监听
enp0s10
网卡- 用
intnet-2
的主机ping
外网,观察到网关同步显示icmp echo
和ARP
,说明结论成立
- 用
所有节点均可以访问互联网
ping www.baidu.com
皆可通
5. 常见问题的解决
xp靶机无法联网:
- 关闭防火墙
- 在
本地连接
->属性
->常规
中,选择自动获取IP地址
、自动获取DNS服务器地址
kali攻击主机无法联网
netstat -nr
检查网卡端口情况- 如果网卡数量少于预设值,
vim /etc/network/interfaces
添加auto ethx iface ethx inet dhcp
,即将网卡ethx
设置为DHCP自动获取