20212905 2021-2022-2 《网络攻防实践》第四周作业
20212905 2021-2022-2 《网络攻防实践》第四周作业
1.实践内容
- ARP缓存欺骗攻击
- ICMP重定向攻击
- SYN Flood攻击
- TCP RST攻击
- TCP会话劫持攻击
2.实践过程
在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。
2.1 ARP缓存欺骗攻击
ARP缓存欺骗攻击原理:
- 源节点 A 发送数据包给目的节点 B时,将会通过 ARP 协议在局域网段广播 ARP请求包,询问节点B的IP地址所映射的 MAC 地址
- 正常节点在接收 ARP 广播包后,在确认 ARP 查询的 IP 地址不是自己络接口配置的IP地址之后,就不作应答。而攻击节点C则应答,说目标 IP 地址IP(B)所映射的 MAC 地址是它自己,即 MAC(C),并不断地向源节点发送 ARP 响应包
- 此时尽管目的节点B也向源节点A 发出了 ARP响应,告知了正确的映射关系,但是由于节点C不断地发送响应包,这样在源节点上会强制以节点C发送的响应包中的信息来更新 ARP 缓存。这样在源节点A的 ARP 缓存中就保留了错误的IP 地址和 MAC地址映射表项。本来应为IP(B)与MAC(B),现在就变成了IP(B)与MAC(C)
- 当源节点 A 要再次发送数据包到目的节点B时,由于其 ARP缓存中己经存在节点B的IP地址IP(B)的映射记录,它就不再广播 ARP 请求包,而是直接将数据包发到MAC地址为 MAC(C)的节点,即攻击节点,这样攻击节点C通过欺骗就己经假冒了目的节点B
- 利用同样的方法,攻击节点C也可以对节点B假冒节点A,就构成了A与B通信的中间人攻击。
使用netwox的33号工具进行ARP欺骗攻击
选择Metasploitable_Linux、VM_Metasploitable_xpsp1作为靶机,使用kali作为攻击机
查看Metasploitable_Linux的ip地址和mac地址
查看VM_Metasploitable_xpsp1的ip地址和mac地址
查看kali的ip地址和mac地址
具体的IP和MAC地址为:
主机 | IP地址 | MAC地址 |
---|---|---|
靶机A(Metasploitable_Linux) | 192.168.200.193 | 00:0c:29:fb:56:6d |
靶机B(VM_Metasploitable_xpsp1) | 192.168.200.192 | 00:0C:29:1D:22:D5 |
攻击机C(kali) | 192.168.200.195 | 00:0c:29:b6:e3:34 |
开启IP转发功能
使用sudo apt-get install netwox
安装netwox
找到33号工具
首先实现IP(B)/MAC(C)
的ARP欺骗,使用sudo netwox 33 -b 00:0c:29:fb:56:6d -g 192.168.200.192 -h 00:0c:29:fb:56:6d -i 192.168.200.193
然后实现IP(A)/MAC(C)
的ARP欺骗,使用sudo netwox 33 -b 00:0C:29:1D:22:D5 -g 192.168.200.193 -h 00:0C:29:1D:22:D5 -i 192.168.200.192
最后进行窃听测试,在靶机B上向靶机A发起FTP通信,在靶机B中执行命令ftp 192.168.200.193
,输入A主机账号和密码登录成功
在攻击机C的wireshark上捕获
可以看到,在靶机B上向靶机A的FTP请求中,目的ip地址为192.168.200.193,但目的mac地址已经变为00:0c:29:b6:e3:34,也就是攻击机C的mac地址
同样,在靶机A上向靶机B的FTP响应中,目的ip地址为192.168.200.192,但目的mac地址已经变为00:0c:29:b6:e3:34,也就是攻击机C的mac地址
完整捕获到了FTP的登录账号和密码,已成功实现了ARP欺骗
2.2 ICMP重定向攻击
ICMP 重定向攻击就是利用 ICMP 路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,自己则可以伪裝成为路由器,使目标机器的数据报发送至攻击机从而加强监听。具体攻击过程一般会和 IP 源地址欺骗技术结合实施,步骤如下:
- 攻击节点利用 IP 源地址欺骗技术,冒充网关 IP 地址,向被攻击节点发送 ICMP 重定向报文,并将指定的新路由器 IP 地址设置为攻击节点:
- 被攻击节点在接收到该报文后,会进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新路由器(即网关);
- 攻击节点可以开启路由转发,充当一个中间人,对被攻击节点与外部网络的通信进行全程嗅探监听,达到与 ARP欺骗类似的攻击效果:
- 在转发过程中,根据 ICMP 路由重定向机制的设计原理,由于从被攻击节点到外部网络存在更优的路由路径,即直接通过原先的网关进行路由较重定向后的路由路径少一跳,因此攻击节点协议栈可能会向被攻击节点发送一个 ICMP 重定向报文,指定原先网关作为新路由器,这个报文将使歎骗路由路径还原至原先正常状态
攻击机A、靶机B和路由的详细信息如下表
主机 | IP |
---|---|
攻击机A(kali) | 192.168.200.195 |
靶机B(VM_Metasploitable_xpsp1) | 192.168.200.192 |
路由 | 192.168.200.130 |
靶机B的路由表信息为
在kali中输入命令sudo netwox 86 -f "host 192.168.200.192" -g 192.168.200.195 -i 192.168.200.130
使用wireshark,捕获到了ICMP重定向包
2.3 SYN Flood攻击
在 SYN Flood 攻击中,攻击主机向受害主机发送大量伪造源地址的 TCP SYN 报文,受害主机分配必要的资源,然后向源地址返回 SYN/ACK 包,并等待源端返回 ACK 包。如果伪造的源地址主机活跃,将会返回一个 RST 包直接关闭连接,但大部分伪造源地址是非活跃的,这种情况下源端永远都不会返回 ACK 报文,受害主机继续发送SYN+ACK 包,并将半开连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断地向受害主机发送大量的 TCP SYN 报文,半开连接队列就会很快填满,服务器也就拒绝新的连接,导致该端口无法响应其他机器进行的正常连接请求,最终使受害主机被拒绝服务。
靶机A、靶机B和攻击机C的详细信息如下表
主机 | IP地址 |
---|---|
靶机A(VM_Metasploitable_xpsp1) | 192.168.200.192 |
靶机B(Metasploitable_Linux) | 192.168.200.193 |
攻击机C(kali) | 192.168.200.195 |
首先测试A与B的连通性,B开启了telent服务,在A上使用telnet登陆B
输入账号密码,成功登录
然后断开A与B间的连接,在kali中使用netwox的76号工具,执行sudo netwox 76 -i 192.168.200.193 -p 23
,进行SYN Flood攻击
再次进行telnet连接,已经无法正常连接
使用wireshark捕获了许多伪造的SYN数据包
2.4 TCP RST攻击
TCP RST 攻击也被称为伪造 TCP 重置报文攻击(spoofed TCP reset packet),是指一种假冒干扰TCP通信连接的技术方法。TCP 协议头的标志位中拥有一个reset
比特位,绝大部分数据包中该标志位都置为0,而一旦该标志位置为1,则接收该数据包的主机将立即断开这个 TCP 会话连接,不再利用该连接进行数据包发送和接收。简单地说,TCP 重置报文将直接关闭掉一个 TCP 会话连接。TCP 重置报文的设计是为了避免在发生一些特殊情况时 TCP 会话仍继续传输无效数据,如通信一方的服务进程如果崩溃后重启,丧失掉了已建TCP 会话的上下文环境,那么它就可以利用重置报文关闭掉当前的连接,然后重新建立连接进行正常通信。
在 TCP RST 攻击中,攻击主机C可以通过嗅探方式监视通信双方 A、B之间的 TCP连接,在获得源、目标 IP 地址及端口,以及序列号之后,就可以结合 IP 源地址欺骗技术伪装成通信一方,发送 TCP 重置报文给通信另一方,在确保端口号一致及序列号落入 TCP 窗口之内的情况下,即可直接关闭这个TCP连接,造成通信双方正常网络通信的中断,达到拒绝服务的效果。
靶机A、靶机B和攻击机C的详细信息如下表
主机 | IP地址 |
---|---|
靶机A(VM_Metasploitable_xpsp1) | 192.168.200.192 |
靶机B(Metasploitable_Linux) | 192.168.200.193 |
攻击机C(kali) | 192.168.200.195 |
首先在A上使用telnet登陆B
在kali中使用netwox的78号工具,执行sudo netwox 78 -i "192.168.200.193"
A与已经断开了连接
使用wireshark捕获了大量RST数据包
2.5 TCP会话劫持攻击
TCP 会话劫持攻击的目标是劫持通信双方已建立的 TCP 会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。通常一些网络服务会在建立 TCP 会话之后进行应用层的身份认证,客户端在通过身份认证之后,就可以通过 TCP 会话连接对服务端进行控制或获取资源,期间不再需要再次进行身份认证。由于 TCP 会话劫持为攻击者提供了一种绕过应用层身份认证的技术途径,因此得到了较高水平攻击者的青睐。
靶机A、靶机B和攻击机C的详细信息如下表
主机 | IP地址 |
---|---|
靶机A(VM_Metasploitable_xpsp1) | 192.168.200.192 |
靶机B(Metasploitable_Linux) | 192.168.200.193 |
攻击机C(kali) | 192.168.200.195 |
开启IP转发功能
打开ettercap
点击scan for hosts
右键将靶机A作为target1,将靶机B作为target2
点击ARP poisoning
点击OK
执行arp –a
命令显示MAC地址缓存,可以看到ARP poisoning攻击前后,arp缓存发生了变化,ARP poisoning攻击成功
在靶机A上执行telnet靶机B,在ettercap里查看捕获到的连接
点击inject data可以注入数据
在wireshark中捕获到了tcp数据包
3.学习中遇到的问题及解决
在kali中使用netwox时提示错误信息:
Command returned 3002:
Error 3002 : not supported
hint: errno = 9 = Bad file descriptor
hint: libnet_open_link(): UID/EUID 0 or capability CAP_NET_RAW required
Press ‘r’ or ‘k’ to run again this tool, or any other key to continue
原因:非root用户,权限不够
解决方法:使用命令su root 切换到root用户
4.实践总结
通过本次实验,学习掌握了几种常见的网络协议攻击方式,并初步了解了netwox、ettercap等工具的使用,为今后进一步深入了解和实践网络协议攻击奠定了基础。