1、1 项目七 网络协议攻击与防范项目七 网络协议攻击与防范2 项目七 网络协议攻击与防范【项目概述】某安全运维公司接到一个任务,要求对客户公司的服务器进行渗透测试。已知客户公司的局域网使用的是TCP/IP协议,有一台Windows服务器,运行有web、ftp服务,一台Linux服务器,运行有Telnet服务。请使用渗透测试技术测试公司的网络是否存在安全漏洞,并给出防范措施。【项目分析】TCP/IP协议是Internet的标准协议,该协议诞生于20世纪60年代,在制定该协议时就没有预测到攻击的发生,因此,该协议本身就存在许多漏洞。针对TCP/IP协议常见的攻击有SYN泛洪攻击、UDP泛洪攻击、TC
2、P会话支持等。另外,http、ftp、telnet、pop3等协议因为是明文传输,很容易被窃听,存在着传输信息被泄露的危险。3 项目七 网络协议攻击与防范项目主要内容:任务一 网络嗅探攻击与防范任务二 SYN泛洪攻击与防范任务三 UDP泛洪攻击与防范任务四 TCP会话劫持攻击与防范4 项目七 网络协议攻击与防范任务四 TCP会话劫持攻击与防范5 项目七 网络协议攻击与防范l任务描述 客户网络的Linux服务器IP地址为192.168.137.200,上面运行着Telnet服务,渗透测试团队发现该服务器可能存在被TCP会话劫持的风险。请使用测试工具对目标主机发起TCP会话劫持攻击,测试目标网络是
3、否具有防范TCP会话劫持攻击的能力,如果没有,请给出防范措施。l任务分析l1TCP会话劫持概述。lTCP会话劫持是一生中TCP协议攻击技术,是在一次正常的TCP通信过程中,攻击者作为第三方劫持正常通信双方已经建立起来的TCP会话连接,以假冒其中一方(通常是客户端)的身份与另一方进行进一步的通信。l通常一些网络服务(如Telnet服务)会在建立TCP会话之后进行应用层的身份认证(通常是输入用户名和密码),而客户端在通过身份认证后,在和服务端的进一步通信过程中无需再次进行身份认证。TCP会话劫持正是为攻击者提供了一种绕过应用层身份认证的攻击途径。6 项目七 网络协议攻击与防范lTCP会话劫持成功的
4、关键是攻击者能够通过TCP协议对会话通信方的验证。要达到这个目的,攻击者必须完成两方面的事情:l(1)利用ARP欺骗、路由重定向攻击等技术,使得要攻击的网络通信经过攻击者控制的主机,从而结合网络嗅探技术获取到客户端和服务器之间的TCP序列号、确认序列号等。7 项目七 网络协议攻击与防范l(2)根据获取的序列号、确认号等信息和TCP协议的工作原理,猜测需要发送给服务器的数据包的正确序列号,从而假冒客户端的地址和身份,向服务器发送该数据包宣称自己就是正常的客户端,从而实现会话支持。l之所以攻击者能够根据获取的序列号、确认号等信息猜测到服务器所需要的数据包的正确序列号,是因为TCP会话中,前后数据包
5、的序列号和确认号之间是有联系的。对于一台主机来说,其收到的前一个TCP报文和要发送的下一个TCP报文之间的序列号和确认号之间的关系是:它所要发送报文的序列号应该等于它所收到的前一个报文的确认号,而它所要发送报文的确认号应该为它所收到的前一个报文的序列号加上该报文中所发送的TCP净荷的长度。8 项目七 网络协议攻击与防范l2TCP会话劫持的工作过程。lTCP会话劫持的基本工作过程如图7-31所示。图7-31 TCP会话支持的工作过程9 项目七 网络协议攻击与防范l(1)客户端主机与服务器进行连接,并通过身份认证建立会话。l(2)服务器向客户端发送响应包,并包含服务器当前的序列号SEQ以及期望客户
6、端发送的下一个序列号ACK。l(3)攻击者通过中间人攻击,嗅探到客户端和服务器之间的通信内容(SEQ和ACK)。然后假冒客户端向服务器发送数据包,其中的SEQ为服务器发送的ACK,服务器收到该数据包后会接收该数据包,攻击者成功劫持客户端和服务器之间的会话。l(4)在客户端和服务器之间的会话被劫持后,由于客户端仍然维持与服务器之间的会话连接,还会向服务器发送数据包,而服务器发现客户端发送来的数据包不是它所期望的数据包(确认号已经过期了),服务器就会以自己所期待的确认号向客户端返回ACK包,而客户端收到服务器的ACK包后也发现它不符合自己的接收条件,它也会再次返回一个ACK包。这样就形成了恶性循环
7、,最终导致“ACK风暴”。ACK风暴使得TCP会话劫持很容易被网络管理员发现,因此攻击者往往向客户端发送RST数据包,重置掉客户端和服务器之间的会话连接。10 项目七 网络协议攻击与防范l3基于hunt工具的TCP会话劫持。l本次TCP会话劫持测试使用hunt软件。将hunt软件安装在Linux的32位系统上作为攻击端。Windows客户端使用Windows XP,服务器使用Linux的64位系统,上面运行着Telnet服务。为保证攻击者能够嗅探到客户端和Telnet服务器之间的会话内容,必须保证三者同处于一个共享网络中。否则,就要使用ARP欺骗等方法使得客户端和服务器之间的通信经过攻击机,才
8、能实现网络嗅探。嗅探成功是TCP会话劫持成功的前提条件。11 项目七 网络协议攻击与防范l任务实施l1使用hunt工具对目标系统进行TCP会话劫持攻击l本次任务实施的拓扑示意图如图7-32所示。图7-32 使用hunt工具对目标系统进行TCP会话劫持攻击拓扑示意图12 项目七 网络协议攻击与防范l步骤1 在Linux攻击机上解压hunt工具软件,如图7-33所示。图7-33 解压hunt软件13 项目七 网络协议攻击与防范l步骤2 进入hunt-1.5目录,并执行hunt程序,进入hunt主界面,如图7-34所示。图7-34 启动hunt进入主界面14 项目七 网络协议攻击与防范l步骤3 在W
9、indows客户端上登录telnet服务器,输入正确的用户名和密码进行正常身份验证,如图7-35、7-36所示。图7-35 登录Telnet服务器15 项目七 网络协议攻击与防范图7-36 登录Telnet服务器16 项目七 网络协议攻击与防范l步骤4 在攻击者的hunt界面中输入“w”进入监视会话模式,并输入要监视的会话连接编号,如图7-37所示,即进入会话监视状态。在Telnet客户端输入“ifconfig”命令,该会话被hunt监视到,当输入一个字符时,终端会再重复显示一个同样的字符,如图7-38所示。l小贴士:在使用hunt监视会话时,一定要保持Telnet客户端与服务器的会话连接。如
10、果Telnet客户端与服务器有一段时间没有会话数据,则hunt将无法继续监视会话。17 项目七 网络协议攻击与防范图7-37 hunt进入监视会话状态18 项目七 网络协议攻击与防范图7-38 hunt监视Telnet客户端与服务器之间的会话19 项目七 网络协议攻击与防范l步骤5 在攻击者的hunt界面中输入“s”进入会话劫持模式,并输入要劫持的会话连接编号,如图7-39所示,即进入会话劫持状态。此时,可以假冒Telnet客户端与Telnet服务器进行会话。图7-39 hunt劫持会话20 项目七 网络协议攻击与防范l小贴士:正常hunt软件结束监视状态回到主界面使用“Ctrl+C”组合键,
11、如果在虚拟机中运行hunt软件,“Ctrl+C”组合键被占用,无法被hunt使用。因此,如果想要结束当前状态,需通过“ps -aux”命令查看当前hunt的进程ID,然后使用“kill 进程ID”的方式强制结束当前的hunt进程,然后再次运行hunt进入主界面。21 项目七 网络协议攻击与防范l步骤6 当被hunt会话劫持后,Telnet客户端和服务器之间会互相发送ACK响应包,形成“ACK风暴”。因此,如果使用wireshark进行抓包,可以发现网络中存在ACK风暴数据包,如图7-40所示。22 项目七 网络协议攻击与防范图7-40 ACK风暴数据包23 项目七 网络协议攻击与防范l2TCP
12、会话劫持攻击的检测与防范。l由于TCP会话劫持会在网络中产生大量的ACK风暴数据包,所以查看网络中是否存在ACK风暴是检测TCP会话劫持的有效方法。l基于TCP会话劫持的工作原理,目前防范TCP会话劫持攻击的措施主要有以下两种:l(1)采用加密机制(例如使用IPSec协议,使用SSH代替Telnet)加密客户端与服务器之间的通信过程,使得攻击者无法在网络上获取TCP序列号、确认号等信息,是防范TCP会话劫持最通的方法。l(2)为了避免攻击者成为客户端和服务器通信双方的中间人,可以从防范ARP欺骗、ICMP路由重定向攻击等方法入手。24 项目七 网络协议攻击与防范l【项目拓展】l本项目我们列举了
13、几个典型的利用网络协议进行攻击的案例。网络攻击可以发生在TCP/IP网络的所有层次。经常遇到的还有基于ICMP协议的ICMP Smurf攻击、ICMP重定向攻击等。读者可以通过查阅相关资料来学习这些攻击的原理和方法。l对于基于网络协议的攻击,最简单的防范方法就是使用防火墙。目前各大网络安全厂商生产的“下一代防火墙”,能够非常全面地防范基于网络协议的攻击,而且操作起来也非常简单。25 项目七 网络协议攻击与防范l【项目总结】l本项目主要讲述了基于TCP/IP协议的四种网络攻击方式及防范措施。主要包括嗅探FTP协议和HTTP协议中的数据、基于FTP的DoS攻击、基于UDP的DoS攻击以及TCP会话劫持攻击。本章知识点总结如下图所示。26 项目七 网络协议攻击与防范THANKS