TCP/IP协议中的漏洞是协议解中的一种特殊类型的漏洞迹象和实现;在这个实验室中,学生需要对TCP协议进行几种攻击,包括SYN flood攻击、TCP重置攻击和TCP会话劫持攻击。
2.1.1 Network Setup
网络设置。要进行这个实验,学生至少需要3台机器。一台计算机用于当进行攻击时,第二台计算机作为受害者,第三台计算机作为观察者。学生可以在同一台主机上设置3个虚拟机,或者可以设置2个虚拟机,然后使用主机作为第三台计算机。在这个实验室里,我们把这三台机器放在同一个局域网里
2.1.2 Operating System
操作系统。这个实验可以使用多种操作系统进行。我们的预构建的虚拟机器基于Ubuntu Linux,这个实验室所需的所有工具都已经安装好了。如果您更喜欢使用其他Unix操作系统,那么您可以自由地这样做;但是,有些命令在本实验室描述中使用的可能无法工作或存在于其他操作系统中。
本次实验的虚拟机全为老师提供的SEEDUbuntu12.04,解压三遍,重命名为3台机器
2.1.2 Netwox Tools(提供的虚拟机已安装好)
2.1.3 Wireshark Tool(提供的虚拟机已安装好)
2.1.4 Enabling the ftp and telnet Servers
启用ftp和telnet服务器。对于本实验室,您可能需要启用ftp和telnet服务器。为了安全起见,这些服务通常在默认情况下是禁用的。在预先构建的Ubuntu虚拟机,你需要运行以下命令作为root用户:
在这个实验室中,学生需要对TCP/IP协议进行攻击。他们可以使用网络工具或攻击中的其他工具。所有攻击都在Linux操作系统上执行。然而,教师还可以要求学生对其他操作系统进行相同的攻击并进行比较观察。
为了简化TCP序列号和源端口号的“猜测”,我们假设攻击者与受害者在同一物理网络上。因此,您可以使用嗅探工具来获取该信息。下面是需要实现的攻击列表。
SYN flood是DoS攻击的一种,攻击者向受害者的TCP端口发送许多SYN请求,但是攻击者并不打算完成3路握手过程。攻击者要么使用欺骗IP地址或不继续程序。通过这种攻击,攻击者可以填充受害者的队列用于半开的连接,即已经完成SYN、synack但还没有完成的连接得到了最后的回复。当此队列已满时,受害者无法再接受任何连接。
在此任务中,您需要演示SYN泛洪攻击。您可以使用Netwox工具进行操作攻击后,再使用嗅探器工具捕获攻击包。进攻进行时,在受害机器上使用“netstat -na
”命令,并将结果与攻击前的结果进行比较。
请描述你是如何知道攻击是否成功的。
在受害者主机192.168.132.134上关闭SYN cookie
SYN cookie是抵御SYN洪泛攻击的一种防御机制。如果机器检测到它受到了SYN洪泛攻击,该机制就会启动。可以使用sysctl命令打开/关闭SYN
cookie机制 开始攻击之前,尝试用观察者主机192.168.132.135登录受害者主机192.168.132.134
发现可以成功登录
在开始攻击之前,检查一下受害者主机192.168.132.134上的半开放连接数
由下图可知,均为LISTEN状态、CLOSE_WAIT状态、ESTABLISHED状态
并没有发现SYN_RECV状态的半连接
接着用攻击者主机192.168.132.133对受害者主机192.168.132.134进行攻击
再次查看受害者主机192.168.132.134上的网络连接状态
由下图可以看到,有很多SYN_RECV状态的连接,已经遭受了SYN泛洪攻击
尝试用观察者主机192.168.132.135登录受害者主机192.168.132.134
由下图可以知道,登录失败
TCP RST攻击可以终止两个受害者之间建立的TCP连接。例如,如果在两个用户A和B之间有一个已建立的telnet连接(TCP),攻击者可以欺骗RST数据包从A到B,中断现有的连接。为了成功的攻击,攻击者需要正确的构造TCP RST包。
在此任务中,您需要启动一个TCP RST攻击,以破坏A之间现有的telnet连接然后,尝试对ssh连接进行相同的攻击。请描述你的观察结果。为了简化在实验室中,我们假设攻击者和受害者在同一个局域网中。时,攻击者可以观察到A和B之间的TCP通信。
3.2.1 Telnet连接
用观察者主机192.168.132.135登录受害者主机192.168.132.134,Telnet服务器
查看连接端口为23
用攻击者主机192.168.132.133进行攻击
回到观察者主机192.168.132.135观察发现,连接被中断
查看观察者主机IP,发现已经回到了192.168.132.135
3.2.2 SSH连接
用观察者主机192.168.132.135登录受害者主机192.168.132.134,SSH服务器
查看连接端口为22
用攻击者主机192.168.132.133进行攻击
回到观察者主机192.168.132.135观察发现,连接被中断
查看观察者主机IP,发现已经回到了192.168.132.135
让我们通过在广泛使用的应用程序上试验TCP RST攻击,让它变得更有趣。在这个任务中我们选择视频流应用程序。对于这个任务,您可以选择您熟悉的视频流网站(我们不会在这里列出任何具体的网站)。大多数视频共享网站与客户端建立TCP连接,流媒体视频内容。
攻击者的目标是破坏受害者和视频流机器之间建立的TCP会话。为了简化实验室,我们假设攻击者和受害者在同一个局域网上。
你的任务是通过中断受害者和受害者之间的TCP连接来中断视频流内容服务器。你可以让受害用户从另一台(虚拟)机器上浏览这个视频流网站来自与攻击者相同的(虚拟)机器。请注意,为了避免责任问题,任何攻击包应该针对受害机器(即您自己运行的机器),而不是针对内容服务器机器(不属于您的)。
原理和Task2相同,如果受害者主机192.168.132.134正在用浏览器观看bilibili视屏
用攻击者主机192.168.132.133进行攻击,让连接重置
可以看到受害者主机192.168.132.134的视频无法观看
TCP会话劫持攻击的目的是劫持一个现有的TCP连接(会话),通过向会话中注入恶意内容,导致两个受害者。如果此连接是telnet会话,攻击者可向此会话注入恶意命令(如删除重要文件),导致受害者执行恶意命令。在这个任务中,您需要演示如何劫持两台计算机之间的telnet会话。你的目标是得到telnet服务器运行来自您的恶意命令。为简单起见,我们假设攻击者和受害者在同一局域网内。
首先在攻击者主机192.168.132.133上开启wireshark,过滤器设置如下
用观察者主机192.168.132.135登录受害者主机192.168.132.134,Telnet服务器
找到最后一个数据包的源ip、目标ip、源端口、目的端口、Next sequence number
使用netwox 40 来进行TCP会话劫持攻击(数据要以16进制形式发送)
发送之后,可以在wireshark中看到我们伪造的数据成功发送
攻击者想要达到的是利用攻击来设置一个后门,这样他们就可以利用这个后门来方便进一步损害。设置后门的一种典型方法是从受害机器运行一个反向shell,以使攻击对受害机器的shell访问。反向shell是运行在远程机器上的shell进程,正在连接回到攻击者的机器。这为攻击者提供了一种方便的方法,可以在远程机器被攻击后立即访问它的身份被识破了。
在下面,我们将展示如何设置一个反向shell,如果我们可以直接在上面运行命令的话受害机器(即服务器机器)。在TCP会话劫持攻击中,攻击者不能直接攻击在受害机器上运行一个命令,这样他们的任务就是通过会话运行一个反向shell命令劫持攻击。在这个任务中,学生需要证明他们可以实现这个目标。
在攻击机开启监听
将反弹shell命令转换成16进制,并进行会话劫持,完成后
查看发现,netcat接收反弹回来的shell