20212931 2021-2022-4 《网络攻防实践》第四次实验任务
TCP/IP网络协议攻击
一、实践内容
-
在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。
- ARP缓存欺骗攻击:
ARP欺骗是针对以太网地址解析协议的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可以篡改数据包,且可让网上特定计算机或所有计算机无法正常连线。
如上图所示,可进行主机型欺骗和网关型欺骗。
主机A与主机C之间通信会经过网关1和网关2,但当主机收到一个ARP应答包后,他不会去验证自己是否发送过这个ARP请求,而是直接将应答包的MAC地址与IP替换掉原有的ARP缓存信息,导致主机A与主机C间的通信内容可被主机B截取。- 主机B向主机A发送一个ARP响应,将网关1的MAC地址替换为自己的MAC地址
- 主机B向网关1发送一个ARP响应,将主机A的MAC地址替换为自己的MAC地址
- 主机A与主机C通信时,会先经过网关1,而此时的网关1已被替换为了主机B,再由主机B向网关1发送数据
- 主机C由网关2返回数据给网关1时,网关1向主机B发送数据,再由主机B发送给主机A
主机A与主机C的通信数据都经过主机B,这就是ARP欺骗
- ICMP重定向攻击:
ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。
- SYN Flood攻击:
SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,它是利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式,最终导致系统或服务器宕机。
TCP的三次握手如下:
SYN Flood攻击正是利用了TCP连接的三次握手:
- 假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);
- 一个用户出现异常导致服务器的一个线程等待1分钟并不会对服务器端造成什么大的影响,但如果有大量的等待丢失的情况发生,服务器端将为了维护一个非常大的半连接请求而消耗非常多的资源。
- 攻击者伪造了大量TCP连接请求,相对于攻击数据流,正常的用户请求就显得十分渺小,服务器疲于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户会表现为打开页面缓慢或服务器无响应,这种情况就是我们常说的SYN Flood攻击(SYN洪水攻击)。
- TCP RST攻击:
提及TCP RST攻击就得首先了解TCP协议中TCP头的构造
从上面TCP协议图可以看到,标志位共有六个,其中RST位在TCP异常时出现。- RST表示复位,用来异常的关闭连接。当发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。
- TCP处理程序会在自己认为的异常时刻发送RST包。例如,A向B发起连接,但B之上并未监听相应的端口,这时B操作系统上的TCP处理程序会发RST包。
- 又比如,AB正常建立连接了,正在通讯时,A向B发送了FIN包要求关连接,B发送ACK后,网断了,A通过若干原因放弃了这个连接(例如进程重启)。网通了后,B又开始发数据包,A收到后表示压力很大,不知道这野连接哪来的,就发了个RST包强制把连接关了,B收到后会出现connect reset by peer错误。
- 而RST攻击,就是A和B之间建立了TCP连接,此时C伪造了一个TCP包发给B,使B异常的断开了与A之间的TCP连接,就是RST攻击了。
- 假定C伪装成A发过去的包,这个包如果是RST包的话,毫无疑问,B将会丢弃与A的缓冲区上所有数据,强制关掉连接。
- 如果发过去的包是SYN包,那么,B会表示A已经发疯了(与OS的实现有关),正常连接时又来建新连接,B主动向A发个RST包,并在自己这端强制关掉连接。
- TCP会话劫持攻击:
由于 TCP 协议并没有对 TCP 的传输包进行身份验证,所以在我们知道一个 TCP 连接中的 seq 和 ack 的信息后就可以很容易的伪造传输包,假装任意一方与另一方进行通信,我们将这一过程称为 TCP 会话劫持(TCP Session Hijacking)。
- 根据TCP/IP中的规定,使用TCP协议进行通讯需要提供两段序列号,TCP协议使用这两段序列号确保连接同步以及安全通讯,系统的TCP/IP协议栈依据时间或线性的产生这些值。在通讯过程中,双方的序列号是相互依赖的,这也就是为什么称TCP协议是可靠的传输协议(具体可参见RFC 793)。
- 如果攻击者在这个时候进行会话劫持,结果肯定是失败,因为会话双方“不认识”攻击者,攻击者不能提供合法的序列号;所以,会话劫持的关键是预测正确的序列号,攻击者可以采取嗅探技术获得这些信息。
二、实践过程
(一)实验环境
- Kali信息
- Meta信息
- XP信息
- SEED信息
(二)ARP缓存欺骗攻击
- 在Meta靶机上对XP靶机进行ping命令,并使用arp -a获取arp缓存列表
- 在Kali攻击机上使用netwox完成arp欺骗攻击(80是指netwox的80号工具(建议用80而不是33,因为33一次执行,很容易arp缓存表就回去了)),执行后就在局域网内广播这条命令。
- 在meta可以观察到arp缓存表被修改
- kali也可以捕获到134->135的ICMP数据包
(三)ICMP重定向攻击
- 在SEED攻击机上ping baidu.com
- 在Kali上执行攻击命令(嗅探到SEED Ubuntu ip的数据包时,以192.168.60.1的名义发送ICMP重定向报文,使Kali ip成为其默认路由)
- 再次在SEED上ping baidu.com,发现异常
- 同时Kali捕获到重定向数据包
(四)SYN Flood攻击
- 在SEED上访问Meta靶机
- 在Kali上使用SYN Flood攻击命令(使用76号工具对靶机23端口SYN Flood攻击)
- SEED上访问超时
- 同时Kali上可以捕获到大量伪造的TCP SYN数据包
- 千万别开太长时间,电脑会直接卡死,请勿享受你风扇的高速转动。
(五)TCP RST攻击
- Kali上执行TCP RST攻击命令
- SEED上访问Meta失败
- 注意:这里只有访问时才能捕获到数据包
(六)TCP会话劫持攻击
- 在Kali上启动Ettercap
- 开始嗅探,并扫描主机列表
- 在扫描到的主机列表中添加监控的两个ip对象
- 注意:此处我使用的两个网段,所以有个直接设定在网关处,如果同一网段,直接监控目标ip即可
- 执行劫持
- 劫持到SEED访问Meta的数据包,并还原数据内容
三、实验感悟
- 本次实验使用工具脚本实现了简单的针对TCP/IP协议的网络攻击,荣获“脚本小子”成就,同时在最后的劫持实验中,处理目标ip的选择时,最开始无从下手,后来联想到数据包转发路径,大胆尝试,实现了攻击的原貌,也算一点小收获。