1. 实验内容
在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。
ARP缓存欺骗攻击:ARP协议在进行IP到MAC地址映射查询时存在安全缺陷,ARP协议为提高效率,设置了缓存机制,会将主动的ARP应答视作有效信息进行接受,使得ARP缓存容易被注入伪造的映射关系。
ICMP重定向攻击:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径。攻击者则可以伪装成路由器,使受害主机的数据发送到攻击者。
SYN Flood攻击:利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
TCP RST攻击:重置报文攻击,是一种假冒干扰TCP通信连接的方法。重置报文会直接关掉一个TCP会话连接。攻击者通过滥用重置报文,可以造成通信双方的通信中断,达到拒绝服务的效果。
TCP会话劫持攻击:劫持通信双方已经建立的TCP会话连接,攻击者会假冒通信双方的一方,与另一方进行进一步的通信。
2. 实验过程
2.1 ARP缓存欺骗攻击
1、选取KALI作为攻击机,选取Metasploitable和SEED作为正常通信机。将三台虚拟机改为桥接模式后,查看三台虚拟机的IP。
名称 | IP地址 | MAC地址 |
---|---|---|
KALI | 172.20.10.4 | 00:0c:29:be:c0:83 |
Metasploitable | 172.20.10.3 | 00:0c:29:63:da:25 |
SEED | 172.20.10.5 | 00:0c:29:bf:8c:d9 |
通过ifconfig
查看到kali的地址
通过ifconfig
查看到Metasploitable的地址
通过ifconfig
查看到SEED的地址
2、用SEED ping Meta进行正常通信过程
通过arp -a
可以看到映射是正确的
3、在kali机上执行下面的命令,执行后会在局域网内广播这条命令
netwox 80 -e 00:0c:29:be:c0:83 -i 172.20.10.3
# 80是netwox的80号工具,00:0c:29:be:c0:83是kali的MAC地址,172.20.10.3是Meta的IP地址
4、重新在SEED上通过arp -a
可以看到映射已经改变了
5、在KALI上执行下面的命令,使得META的arp缓存表中SEED的MAC地址也为KALI的MAC地址
netwox 80 -e 00:0c:29:be:c0:83 -i 172.20.10.5
再通过arp -a
可以看到SEED的MAC地址已经发生了改变
6、在SEED上 ping META,再打开KALI上的wireshark进行抓包,可以看到此时SEED发给Meta的ICMP数据包已经被KALI截取到了
2.2 ICMP重定向攻击
1、依旧使用2.1中的实验配置,在SEED中使用命令ping baidu.com
,可以打开wireshark抓取到ICMP数据包
2、在KALI上执行下面的命令
netwox 86 -f "host 172.20.10.5" -g 172.20.10.4 -i 172.20.10.1
# 当嗅探到172.20.10.5(SEED)的数据包时,以172.20.10.1的名义发送ICMP重定向报文,使得172.20.10.4(KALI)成为默认路由地址
3、在SEED上ping百度,可以看到kali的wireshark抓到了重定向ICMP数据包,并且SEED上也可以看到新的下一跳已经被修改为了KALI的地址
2.3 SYN Flood攻击
1、在KALI上通过下面的命令对META进行SYN Flood攻击
netwox 76 -i 172.20.10.3 -p 23
# 通过netwox的76号工具对172.20.10.3(META)的23号端口进行SYN Flood攻击
2、通过wireshark可以看到发送了大量SYN标志的TCP数据包,而且因为大量发包,KALI出现了卡顿,稍后卡住,主机CPU直接跑满,最后只能关机。不过通过截图还是可以继续进行分析,可以看到目的地址均为META地址,而发送地址则为各种伪造地址。
2.4 TCP RST攻击
1、通过下面的命令,在SEED上向META发起登录
telnet 172.20.10.3
2、在KALI上通过下面的命令对META进行TCP RST攻击
netwox 78 -i 172.20.10.3
3、通过wireshark可以看到KALI向META发送了带RST标志的TCP数据包。而且SEED向META的连接也中断了。
2.5 TCP会话劫持攻击
1、使用工具ettercap,通过右上角勾号开始嗅探
2、通过host->scan for host
扫描主机
3、通过hosts list
查看扫描到的主机
4、选择SEED设置为目标1,选择META设置为目标2
5、打开MITM Menu->ARP poisoning
,单击OK
6、在SEED上向META发起telnet连接telnet 172.20.10.3
7、通过ettercap menu->view->connections
查看连接,前两个为我之前忘记关RST攻击发生的连接直接被kill掉了。
8、可以看到SEED与META的telnet成功连接的内容,包括我输入的用户名和密码。
3. 学习中遇到的问题及解决
-
问题1:kali中未安装netwox
-
问题1解决方法:在使用命令的过程中会直接弹出安装申请,一路YES过去就安装成功了
-
问题2:META设置完桥接模式之后,IP地址没有改变
-
问题2解决方法:通过下面的命令,将之前设置的静态IP命令删除掉,再重启虚拟机就好了
sudo vim /etc/rc.local 删除之前的静态IP设置 sudo reboot
-
问题3:SYN Flood攻击时,KALI主机卡住
-
问题3解决方法:因为KALI发送了大量的SYN数据包导致出现卡机,这里只能关机重启了。更好的方法是在运行命令后就赶紧切断这次攻击。
4. 学习感想和体会
本次实验很顺利,没有遇到什么麻烦。在这次实验中模拟了很多网络攻击,不同于本科进行的网络攻击与防御实验,通过虚拟机构建的攻击平台会更专注于在每一台主机上的操作和利用工具来模拟攻击,对于靶机遭受的攻击情况更加清晰。通过老师的介绍、书本的学习和切实体验攻击,我对网络层和传输层涉及的ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击和TCP会话劫持攻击的原理和过程印象更加深刻。也让我意识到,一个架构的产生是很难做到在一开始就完美的能够抵御任何攻击,攻击者和防御者总是相辅相成,促使一个架构越来越健壮。
参考资料
《网络攻防技术与实践》课本