问题 | 回答 |
---|---|
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
我在这个课程的目标是 | 学习教材第五章,了解各层网络协议的常见漏洞 |
这个作业在哪个具体方面帮助我实现目标 | 相关知识点和实践任务 |
1. 实践内容
1.1 TCP/IP网络协议栈攻击概述
1.1.1 网络安全属性与攻击模式
网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改 、泄露,系统连续可靠正常运行,网络服务不被中断。
- 网络安全属性:网络安全属性包括机密性、完整性、可用性 、真实性和不可抵赖性
- 机密性:是指网络中的信息不被非授权实体获取和使用,通常基于加密算法进行保陷。
- 完整性: 是指信息未经授权不能进行改变的特性,即信息在存储和传输过程中保待不被修改、 不被破坏和丢失的特性。
- 可用性: 是指被授权实体访问并按需求使用的特性, 即当需要时能够正常地存取和访 问所需的信息与服务。
- 真实性: 是指确保通信对方是它所声称的真实实体, 而非假冒实体。
- 不可抵赖性: 是指在通信中确保任何一方无法抵赖自己曾经做过的操作的安全特性, 包括对自己行为的不可抵赖及对行为发生时间的不可抵赖, 有时也被称为不可否认性和可审查性。
- 网络攻击基本模式:在网络通信中, 攻击者可以采取如下四种基本的攻击模式, 包括截获、 中断、 篡改和伪造。
- 截获是一种被动攻击模式, 其目的是获取网络通信双方的通信信息内容,是对机密性的违反,具体攻击技术为嗅探与监听。
- 中断、 篡改与伪造都属于主动攻击模式,中断攻击的目标是致使正常的网络通信和会话无法继续,是对可用性的破坏,具体攻击技术为拒绝服务。
- 伪造则是假冒网络通信方的身份,欺骗通信对方达到恶意目的,是对真实性属性的背离,具休攻击技术为欺骗。
- 篡改则是对网络通信过程的信息内容进行修改, 使得通信一方或双方接收到篡改后的虚假信息,是对完整性的违背,具体技术为数据包篡改。
- 中间人攻击:攻击者通过各种技术手段与通信双方建立起各自独立的会话连接,并进行消息的双向转发,使他们误以为是通过一个私有通道在直接通信,而实际上整个会话都是由攻击者所截获和控制的。要成功实现中间人攻击,攻击者必须能够拦截通信双方的全部通信,注入转发或篡改后的消息,并需要攻击者能够对通信双方都实现身份欺骗。
1.1.2 TCP/IP网络协议栈安全缺陷与攻击技术
TCP/IP 网络协议栈在设计时采用了分层模型,分为了网络接口层、互联层、传输层与应用层,每一层负责不同的功能,各自具有相应的网络协议。在每个层次上的网络协议都存在着一定的安全问题或设计缺陷,目前也已经出现相应的攻击技术。如图所示
1.2 网络层协议攻击
网络层的主要协议如 IP、 ICMP 和 ARP 都存在多种攻击方式,以下将对其中最为常见的 IP 源地址欺骗、ARP欺骗和 ICMP 路由重定向攻击进行分别介绍,包括其原理、 攻击技术与具体实现。
1.2.1 IP源地址欺骗
IP 源地址欺骗是指攻击者伪造具有虚假源地址的 IP 数据包进行发送,以达到隐藏发送者身份、假冒其他计算机等目的。
-
IP 源地址欺骗原理:IP 源地址欺骗可以实现的根本原因在于:IP 协议在设计时只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。路由器在转发 IP 数据包时,也只根据目标 IP 地址查询路由路径,进行数据包的转发直至送达目标,不会对数据包是否真正来自其声称的源地址进行验证。在大多数情况下,IP 数据包的源地址会被正确地设置为数据包所发出的 IP 地址。但怀有恶意目的的攻击者则会修改 IP 协议报头,使其包含 个不同的虚假 IP 地址,使其看起来像是从另外一个地址发出的,这样就达到了欺骗目标和隐藏发送源的目的。而接收到欺骗数据包的计算机则会向假冒的源地址发回响应包,通常情况下,攻击者无法获取到这些响应包,因此 IP 源地址欺骗技术主要应用于攻击者不需要响应包或存在某些技术可以猜测响应包的场景中,如拒绝服务攻击等。在特定环境中, 攻击者也可能嗅探到响应包,或者能够将响应包重定向到受控主机上,最常见的情况是攻击者与假冒lP地址处在同一局域网内,可以实施ARP欺骗或路由重定向攻击劫待响应包,这时攻击者就能够完全假冒这些主机进行网络交互了。
-
IP地址欺骗攻击过程:
- 对受信任主机进行拒绝服务攻击,使其丧失工作能力,避免其在接受到响应包后影响欺骗过程
- 对目标主机的 TCP 初始序列号 (ISN) 进行取样与猜测,TCP 初始序列号是指目标 主机在接受 SYN 报文后,返回 SYN/ACK 报文中的 SEQ 值, 攻击主机只有在随后进一步伪造的 ACK 报文中,将 ACK 值正确地设置为目标主机的 ISN+1,才能够通过目标主机的验证,真正建立起连接,达到欺骗效果。
- 伪造源地址为受信任主机 IP 的 SYN 数据包, 发送给目标主机。
- 等待目标主机将 SYN/ACK 包发给己瘫痪的受信任主机。
- 再次伪装成被信任主机向目标主机发送 ACK 包, 设置发送数据包的 ACK 值为预测目标主机 ISN+1,可以通过发送大量不同 ACK 值的数据包以提高命中的可能性。
- 连接建立,假冒被信任主机与目标主机通信。
-
IP源地址欺骗技术的应用场景:IP源地址欺骗最普遍应用于拒绝服务攻击中,也经常在进行网络扫描时应用,以隐藏真实的扫描源地址,还被攻击者用来对付一些基于 IP 地址的身份认证机制。
-
IP源地址欺骗的防范措施:
- 使用随机化的初始序列号,使得远程攻击者无法猜测到通过源地址欺骗伪装建立TCP连接所需的序列号,降低被源地址欺骗的风险;
- 使用网络层安全传输协议如IPsec,对传输数据包进行加密,避免泄露高层协议可供利用的信息及传输内容
- 避免采用基于IP地址的信任策略,以基于加密算法的用户身份认证机制来替代这些访问控制策略
- 在路由器和网关上实施包过滤
1.2.2 ARP欺骗
ARP欺骗,有时候也被称为ARP下毒,,是指攻击者在有线以太网或无线网络上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
-
ARP欺骗攻击技术原理:ARP欺骗攻击的根源在于ARP协议在设计时认为局域网内部的所有用户都是可信的,是遵循协议设计规范的,但事实上并非如此,局域网内可以存在内部攻击者,或者已渗透进入局域网的外部攻击者或恶意代码。ARP协议在进行 IP 地址到 MAC 地址映射查询时存在安全缺陷,一方面采用了广播请求包方式在局域网段中询问映射关系,但没有对响应结果进行真实性验证的技术流程与方法,而另一方面ARP协议为提高效率,设计了 ARP 缓存机制,以及会将主动的ARP应答视作有效信息进行接受,这使得ARP缓存非常容易被注入伪造的IP地址到MAC地址的映射关系,从而进行欺骗。
-
ARP欺骗攻击攻击过程:
- 源节点 A 发送数据包给目的节点 B 时,将会通过ARP协议在局域网段广播 ARP 请求包,询问节点 B 的IP地址所映射的MAC地址
- 正常节点在接收ARP广播包后,在确认ARP查询的IP地址不是自己网络接口配置的IP地址之后,就不作应答。而攻击节点C则不一样,本来它的IP地址并不是 ARP 广播包中的目标IP地址:B.B.B.B,但它也应答,说目机IP地址 IP(B) 所映射的 MAC 地址是它自己,即 MAC(C),并不断地向源节点发送ARP响应包
- 此时尽管目的节点 B 也向源节点 A 发出了 ARP 响应,告知了正确的映射关系,但是由于节点 C 不断地发送响应包,这样在源节点上会强制以节点 C 发送的响应包中的信息来更新ARP缓存。这样在源节点 A 的 ARP 缓存中就保留了错误的 IP 地址和MAC 地址映射表项。本来应为JP(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通信的中间人攻击。
如果被 ARP 欺骗攻击的是网关节点,那么将导致整个局域网所有节点经过网关出入的数据包都会首先通过攻击节点,从而可能被嗅探、 监听和恶意修改。
-
ARP欺骗技术的应用场景:ARP欺骗攻击技术的应用场景也非常多,包括利用 ARP 欺骗技术进行局域网中的嗅探, 并通过进一步的协议分析窃取敏感信息;还可以利用 ARP 欺骗构造中间人攻击,从而实施 TCP 会话劫待的攻击方法。
-
ARP 欺骗攻击防范措施:预防 ARP 欺骗攻击的主要方法有静态绑定关键主机的 IP 地址与 MAC 地址映射关系、使用相应的 ARP 防范工具、使用 VLAN 虚拟子网细分网络拓扑,并加密传输数据以降低 ARP 欺骗攻击的危害后果等。
1.2.3 ICMP路由重定向攻击
ICMP 路由重定向攻击是指攻击者伪装成路由器发送虚假的 ICMP 路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
-
ICMP 路由重定向攻击原理:ICMP 重定向攻击就是利用 ICMP 路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,自己则可以伪装成为路由器,使目标机器的数据报发送至攻击机从而加强监听。
-
ICMP 路由重定向攻击过程:
- 攻击节点利用 JP 源地址欺骗技术, 冒充网关 IP 地址, 向被攻击节点发送 ICMP重定向报文, 并将指定的新路由器 IP 地址设置为攻击节点
- 被攻击节点在接收到该报文后, 会进行限制条件检查, 由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新路由器(即网关)
- 攻击节点可以开启路由转发,充当一个中间人,对被攻击节点与外部网络的通信 进行全程嗅探监听,达到与ARP欺骗类似的攻击效果
- 在转发过程中,根据 ICMP 路由重定向机制的设计原理,由于从被攻击节点到外部网络存在更优的路由路径,即直接通过原先的网关进行路由较重定向后的路由路径少一跳,因此攻击节点协议栈可能会向被攻击节点发送一个ICMP重定向报文,指定原先网关作为新路由器,这个报文将使欺骗路由路径还原至原先正常状态。
-
ICMP路由重定向攻击防范:ICMP路由重定向攻击的主要防范措施是根据类型过滤一些ICMP数据包,设置防火墙过滤,对于ICMP重定向报文判断是不是来自本
地路由器等。
1.3 传输层协议攻击
传输层的主要协议 TCP 和 UDP 也存在很多种不同攻击方式,以下对最流行的 TCP RST 攻击 TCP 会话劫持攻击、TCP SYN 洪泛拒绝服务攻击和 UDP 洪泛拒绝服务攻击等攻击。
1.3.1 TCP RST攻击
- TCP RST攻击原理:TCP RST攻击也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。TCP协议头标志位有一个reset,若标志位置为1,接收该数据包的主机立即断开这个TCP会话连接。TCP重置报文就是直接关闭掉一个TCP会话连接。
- 攻击过程:攻击主机C通过嗅探方式监视通信双方A、B之间的TCP连接。获得源、目标IP地址、端口、序列号之后,接着可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方。在确保端口号一致及序列号落入TCP窗口内就可直接关闭此TCP连接,达到拒绝服务的效果。
1.3.2 TCP会话劫持攻击
-
TCP会话劫持攻击原理:TCP会话劫持则是一项更为复杂的TCP协议攻击技术方法,其目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。通常一些网络服务会在建立TCP会话之后进行应用层的身份认证,客户端在通过身份认证之后,就可以通过TCP会话连接对服务端进行控制或获取资源,期间不再需要再次进行身份认证。如果我们能够使得要攻击的网络通信经过攻击者控制的主机,那结合网络嗅探技术就可以获取到序列号等信息,从而很容易地实施会话劫持攻击。重定向网络通信可以利用滥用 IP 协议源路由选项、ICMP 路由重定向攻击和 ARP 欺骗攻击完成,IP 源路由选项和 ICMP 路由重定向攻击都能使得攻击者可以指定 IP 数据包的路由路径, 通过攻击者所控制的路由器, 然后实施劫持。
-
TCP 会话劫持攻击技术过程:
- Victim 主机与 telnet 服务器进行连接,并通过身份认证建立起会话
- telnet 服务器将会向 Victim 发送响应包,并包含服务器当前序列号(记为SVR_SEQ),以及期望客户端发送的下一个序列号(记为 SVR_ACK)
- 攻击者通过 ARP 欺骗实施中间人攻击,可以嗅探获得 Victim 和 telnet 服务器间的通信内容,然后就假冒 Victim 的 IP 地址及身份,向 telnet 服务器发送数据包,宣称自己就是 Victim。而攻击者发送数据包中的序列号(记为 CLT_SEQ)必须满足条件: SYR_ACK<= CLT_SEQ <= SYR_ACK+SYR_WND,其中 SYR_WND 为服务器的接收窗口,telnet 服务器才会接收该数据包,如此,攻击者就劫持了 Victim 与 telnet 服务器间的会话,并以 Victim 已经验证的身份执行任意命令
- Victim 仍然会继续维待与 telnet 服务器之间的连接会话,但由于与 telnet 服务器之间的 ACK 值互相不再匹配产生出 "ACK 风暴" 。ACK 风暴使得 TCP 会话劫持攻击很容易被网络管理人员所发现,因此攻击者往往会发送 RST 重置掉 Victim 和服务器之间的会话连接。
-
TCP 会话劫持攻击防范措施:在下一代互联网协议设计方面从根本上避免会话劫待攻击之外, 目前对该种攻击可采取的防范措施包括:禁用主机上的源路由, 采用静态绑定 IP-MAC 映射表以避免 ARP 欺骗, 引用和过滤 ICMP 重定向报文,这三个措施能够避免攻击者成为通信双方的中间人,从而轻易地进行会话劫持攻击。
1.3.3 TCP SYN Flood 拒绝服务攻击
TCP SYN Flood,又称 SYN 洪泛攻击, 是目前最为有效和流行的一种拒绝服务攻击形 式。它利用 TCP 三次握手协议的缺陷,向目标主机发送大量的伪造源地址的 SYN 连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
-
SYN Flood 攻击原理:在SYN Flood 攻击中,攻击主机向受害主机发送大量伪造源地址的 TCP SYN 报文,受害主机分配必要的资源,然后向源地址返回 SYN/ACK 包,并等待源端返回 ACK 包,如果伪造的源地址主机活跃,将会返回一个 RST 包直接关闭连接,但大部分伪造源地址是非活跃的,这种情况下源端永远都不会返回 ACK 报文,受害主机继续发送SYN+ACK 包,并将半开连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断地向受害主机发送大量的 TCP SYN 报文,半开连接队列就会很快填满,服务器也就拒绝新的连接,导致该端口无法响应其他机器进行的正常连接请求,最终使受害主机被拒绝服务。
-
SYN Flood 攻击防范措施:对于 SYN Flood攻击的主要防范措施包括: SYN-Cookie 技术和防火墙地址状态监控技术
1.3.4 UDP Flood拒绝服务攻击
由于 UDP 协议的无状态不可靠的天然特性,UDP Flood 拒绝服务攻击的原理非常简单,即通过向目标主机和网络发送大蜇的 UDP 数据包,造成目标主机显著的计算负载提升,或者目标网络的网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击。UDP Flood 除了在短时间发送内容尽可能多的 UDP 报文之外, 没有其他额外特别的技术。
1.4 TCP/IP网络协议栈攻击防范措施
-
监测、预防与安全加固:
- 网络接口层:主要监测防御的是嗅探。可以检测出局域网的监听点;优化网络结构;对关键的网关和路由做好防护。
- 互联层:采用多种检测和过滤技术发现和阻断网络中可能出现的欺骗攻击。
- 传输层:实现加密传输和安全控制。
- 应用层:采用加密、数字签名等技术。
-
网络安全协议:在 IETF、IEEE 802 等国际性的网络研究和标准化组织内进行讨论和改进,并以标准化协议规范方式对业界进行发布,使得业界能够基于这些标准在网络设备、操作系统中实现和应用这些安全协议,从而增强现有网络的安全性。
-
下一代互联网协议:目前 IETF 正在进行以 IPv6 为代表的下一代互联网协议的设计、标准化与改进工作,而这也为从根本上改善 TCP/IP 协议栈的安全状况提供了一个绝佳的机会,IPv6 和相关配套的网络协议在设计时非常注重对安全性的考虑,目前正处在不断发展和完善的过程中,在不久的将来将取代目前被广泛使用的 IPv4 协议,预期也能够在安全的协议基础上构建出一 个更加安全的下一代互联网。
2. 实践过程
完成 TCP/IP 协议栈重点协议的攻击实验, 具体包括 ARP 缓存欺骗攻击、ICMP 重定向攻击、SYN Flood 攻击、TCPRST 攻击及 TCP 会话劫持攻击(bonus)。
本次所用攻击机为kail linux,靶机为Linux Metasploitable和Windows Metasploitable,测试机为seed ubuntu
2.1 IP源地址欺骗
可以采用nmap扫描器进行IP源地址攻击,参数-D
后接要伪造的P地址。
这个实验所用到攻击机为kail,靶机为Linux Metasploitable,ip地址如下
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
这里查看 192.168.200.125 上的8080端口是否开放,且使用IP源地址为192.168.200.7进行欺骗,则相应的nmap命令为:nmap -sS -p 8080 192.168.200.125 -D 192.168.200.7
。打开wireshark监听数据包
可以看到nmap要知道端口是否开放,还需要以所在机器的IP发送SYN包,所以用Wireshark 可以监听到两个SYN包,分别是从 192.168.200.3 和 192.168.200.7 发送到 192.168.200.125 的,后者便是nmap构造的欺骗数据包。(由结果可知靶机8080端口关闭)
2.2 ARP缓存欺骗攻击
Netwox 中的 33 号工具可以构造任意的以太网 ARP数据报,可以用它来完成arp缓存欺骗攻击
所用的三台虚拟机分别是:攻击机为kail linux,靶机为Linux Metasploitable和Windows 2000 Server。以下简称为A(kail linux),B(Linux Metasploitable),
C(Windows 2000 Server)机。三台虚拟机的ip地址和mac地址如下表所示
主机 | ip地址 | mac地址 |
---|---|---|
A | 192.168.200.3 | 00:0c:29:dd:26:c3 |
B | 192.168.200.125 | 00:0c:29:94:0e:e1 |
C | 192.168.200.124 | 00:0c:29:6b:71:46 |
A 分别向 B、C 发送伪造的应答(或者请求)数据包进行欺骗,使得 B、C的 ARP 缓存表中的映射关系分别是 IP(C) /MAC (A),IP (B) /MAC (A) 。
首先查看B主机的arp缓存列表
在A主机执行命令行netwox 33 -b 00:0c:29:94:0e:e1 -g 192.168.200.124 -h 00:0c:29:94:0e:e1 -i 192.168.200.125
(-b 以太网帧的目的mac地址;-g arp ip的源地址 ;-h arp 以太网帧的目的mac地址;-i arp ip的目的地址)
其中关键部分 "this address : 00:0c:29:dd:26:c3 192.168.200.124" 使得目标主机 B 保存这对映射关系而达到欺骗的目的。
再次查看B主机的arp缓存列表
可以看到在B主机的arp缓存列表中,C主机的ip地址映射为了A主机的mac地址
同理可对C主机进行arp欺骗攻击
首先查看C主机的arp缓存列表
在A主机执行命令行netwox 33 -b 00:0c:29:6b:71:46 -g 192.168.200.125 -h 00:0c:29:6b:71:46 -i 192.168.200.124
再次查看C主机的缓存列表
可以看到在C主机的arp缓存列表中,B主机的ip地址映射为了A主机的mac地址
2.3 ICMP重定向攻击
利用Netwox 的第86号工具, 可以进行ICMP重定向攻击实验, 其工作原理是嗅探网络中的数据包,每嗅探到一个符合要求的数据包(自己设定),就向该IP地址发送—个ICMP 重定向报文,让该IP的主机重定向至预先设定的IP地址
首先需要将攻击机和靶机改为桥接模式(如果采用NAT模式或者仅主机模式,亲测攻击机可以发出重定向报文,并且靶机可以接收到,但是靶机路由表不会改变,目前还不清楚原因.....)
攻击机kail为192.168.0.106,目标主机为192.168.0.104,网关地址为192.168.0.1,攻击机使用Netwox86号工具进行欺骗。 当使用后Netwox便进入监听状态。
首先查看目标主机上的路由表
在kail linux上打开netwox86号工具,使用命令行netwox 86 -f "host 192.168.0.104" -g 192.168.0.106 -i 192.168.0.1
(ps:命令行的含义为嗅探到数据包的源或目的IP地址192.168.0.104时,就以192.168.0.1的名义向数据包的源地址发送一个ICMP重定向报文,使之使用192.168.0.106作为默认的路由。)
同时打开wireshark监听数据包,并且使用靶机ping百度的网址,可以从wireshark看到攻击机以192.168.0.1的名义向靶机发送了icmp重定向报文
再次查看靶机路由表,可以看到靶机访问211.138.106.7时的网关变成了192.168.0.106
2.4 SYN Flood 攻击
可以利用netwox76号工具来完成这次攻击,这个实验使用3台主机,与2.2实验所用主机相同,主机和ip地址如下表所示,kail为攻击机,Linux Metasploitable为靶机,Windows 2000 Server为测试机
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
Windows 2000 Server | 192.168.200.124 |
在 IP 地址为 192.168.200.3 的主机 kail 进行攻击前,我们将 IP 地址为 192.168.200.124 的主机 Windows 2000 Server向 IP 地址为 192.168.200.125 的服务器 Linux Metasploitable 发起 TCP 连接请求。 服务器可以正常回应,并建立连接。 断开 Windows 2000 Server 与 Linux Metasploitable 的连接,在 C 中打开 Netwox 软件,选择编号为 76 的 "Synflood" 工具并输入目标地址,主机 kail 即开始进行 TCP SYN Flood 攻击。 此时再使用主机 Windows 2000 Server 向服务器 Linux Metasploitable 发送连接请求,会无法正常访问。
这里选择利用 Windows 2000 Server 向靶机 Linux Metasploitable 发起telnet服务访问,用 kail 攻击机攻击靶机的telnet服务端口,并用Wireshark查看
首先用主机 Windows 2000 Server 向 Linux Metasploitable 发起登陆 telnet 192.168.200.125 23
,可以正常登陆
断开连接, 在Kali上利用netwox的76号工具对靶机的23号端口进行SYN Flood攻击
netwox 76 -i 192.168.200.125 -p 23
,同时打开wireshark监听
可以看到攻击机向靶机发送了大量的虚假ip发出的SYN连接请求
再次使用主机 Windows 2000 Server 向 Linux Metasploitable 发起登陆,发现登陆响应需要较长时间
2.5 TCP RST 攻击
可以利用netwox78号工具来完成这次攻击,这个实验使用3台主机,主机和ip地址如下表所示,kail为攻击机,Linux Metasploitable 为靶机seed 为测试机
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
seed | 192.168.200.6 |
在Netwox中,找们可以选择编号为78的"Resetevery TCP packet"工具来实现TCP RST攻击。同时,我们使用 Wireshark软件来对攻击过程中主机之间的通信进行监听,并分析攻击过程。假设IP地址为192.168.200.125的主机 Linux Metasploitable 已经与IP地址为 192.168.200.6 的主机 seed 建立了TCP连接,IP地址为 192.168.200.3的主机 kail 企图对当前建立TCP连接进行RST攻击。在主机C中打开Netwox选定78号工具,并输入主机 Linux Metasploitable 的IP地址作为攻击目标。此时,当主机 seed 再向主机 Linux Metasploitable发送信息时,主机 kail 将监听到此信息,分析数据包的端口号、SEQ号后,假冒 Linux Metasploitable 的名义向 seed 发送带有RST标志的分组,从而断开两者的TCP连接。
同样选择利用 seed 向靶机 Linux Metasploitable 发起telnet服务访问,用 kail 攻击机攻击靶机的telnet服务端口,并用Wireshark查看
首先先正常登陆
在Kali上利用netwox的78号工具对靶机进行TCP RST攻击netwox 78 -i 192.168.200.125
,并打开wireshark监听数据包
可以看到kail以Linux Metasploitable 的名义向seed发送了带有RST标志位的分组
再次打开seed,发现连接已经断开
2.6 TCP 会话劫持攻击
2.6.1 方法一
可以利用netwox40工具来完成这次实验。这个实验使用3台主机,攻击机为kail linux,靶机为 seed 和 Linux Metasploitable,3台主机的ip地址如下表所示
主机名称 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
seed | 192.168.200.6 |
首先在seed上使用telnet服务登陆Linux Metasploitable,命令行telnet 192.168.200.125
此时,seed连接到linux后输入ls命令,在同一网段的攻击机使用 wireshark 嗅探共用网卡,等待客户机和服务器 通信,捕捉 telnet 包。
查看wireshark,可以看到数据包的内容是 l 因为我输入的命令是 ls 他会把我们发生的内容拆分开发送,看一下下一个数据包就会发现内容是 s
直接找到最后的一个包,点击 TransmissionControl Protocol 查看其中的源端口,目的端口,next seq 和 ack 信息。(其中linux的端口固定为 23 ,因为 telnet 端口是 23 )
因为我们要伪造发下一个包,所以直接采用 next seq 作为下一个包的 ack ,采用 ack 作为下一个包的 seq 。获取到信息之后,攻击机使用 netwox 工具伪造seed给linux发一个 tcp 包。发送成功后,原来的客户端就会失去连接,同时linux会把攻击机当作 客户端,这样攻击机就实现了会话劫持。
使用命令行netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.6 --ip4-dst 192.168.200.125 --tcp-src 38818 --tcp-dst 23 --tcp-seqnum 44 --tcp-acknum 5 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "776c"
因为我们要伪造 seed 给 linux 的发送TCP包,所以源ip(--ip4-src
):seed(192.168.200.6)目的 ip(--ip4-dst
):linux(192.168.200.125),seq(--tcp-seqnum
)和 ack(--tcp-acknum
)按刚才所说填写,末尾的 6c 是字母 wl 的十六进制数,这里的wl是我们要发送的内容,其余参数默认即可。
查看wireshark,发现伪造的报文成功发送,同时发现Tcp Dup ACK XXX#X
和Tcp Retransmission
,这两个的含义分别是重复应答#前的表示报文到哪个序号丢失,#后面的是表示第几次丢失
和超时引发的数据重传
。这说明引发了seed与linux之间的“ACK风暴”,说明这次劫持是成功的。
2.6.2 方法二
掌握了以上基本方法,可以使用Ettercap工具进行TCP 会话劫持攻击(更加方便),步骤如下
首先,Kali利用ARP欺骗进行tcp会话劫持攻击,因此打开Kali节点的IP转发功能(命令行具体含义参照Linux ip_forward 数据包转发)
打开Ettercap,进入Ettercap的GTK图形界面方式,并选择“Sniff”菜单中的“Unified Sniff”选项,选择“eth0”作为嗅探监听接口,如下图所示
随后在“Hosts”菜单中选择“Scan for hosts”扫描局域网内攻击目标,并随后在菜单“Hosts list”中,选择Seed 192.168.200.6和 linux Metasploitable 192.168.200.125分别为target1和target2,如下图所示
选择菜单“MITM”中的“ARP poisoning”进行ARP欺骗,并选择“Sniff remote connections”
此时,在seed和linux中执行arp –a命令显示MAC地址缓存,将发现ARP欺骗攻击已成功,其输入如下:
在seed主机上使用telnet服务到linux主机上,在Kali上,此时Ettercap(View-Connections)显示如下图所示,Ettercap已经获取了telnet的登陆用户名和密码
点击“Inject Data”,Kali节点作为中间人可以向TCP会话两端注入数据,如下图所示
通过wireshark查看seed与linux Metasploitable之间发生ACK风暴,劫持成功
(ps:对这个工具的使用还不太熟练,下去要多练习)
3. 学习中遇到的问题及解决
- 问题一:在进行ICMP重定向攻击实验时,如果使用的虚拟机网络模式采用NAT或者仅主机模式,则攻击机会向靶机发送重定向报文,靶机也能接收到,但是靶机的路由表不会发生改变
- 问题一解决方案:将攻击机和靶机的网络模式改为桥接模式,重新进行实验,靶机路由表发生改变
- 问题二:TCP会话劫持的实验具体做法不太了解
- 问题二解决方案:查看解建国同学提供的博客,以及自己搜集资料,最终完成实验
4. 实践总结
本次实践通过对各层网络协议常见漏洞的攻击实现,初步了解了各层网络协议的缺陷,以及提高了自己的动手能力。
参考资料
网络攻防技术与实践
tcp会话劫持攻击
tcp会话劫持原理
tcp报文简介
Linux ip_forward 数据包转发