20212923 2021-2022-2 《网络攻防实践》第四次作业
20212923 2021-2022-2 《网络攻防实践》第四次作业
实践四:TCP/IP网络协议攻击
课程:《网络攻防实践》
班级: 2129
姓名: 王文彬
学号:20212923
实验教师:王志强
实验日期:2022年04月07日
必修/选修: 选修
一.实践内容
1. 实践要求介绍
- 要求
- 在之前搭建好的网络攻防实验环境中完成TCP/IP协议重点的攻击实验主要包含有以下五种攻击:
- ARP缓存欺骗攻击
- ICMP重定向攻击
- SYN Flood攻击
- TCP RST攻击
- TCP会话劫持攻击
- 在之前搭建好的网络攻防实验环境中完成TCP/IP协议重点的攻击实验主要包含有以下五种攻击:
TCP/IP协议攻击
TCP/IP协议的脆弱性主要体现在以下几点:
- 不能提供可靠的身份验证
- TCP/IP 协议以 32 bit 的 IP 地址来作为网络节点的唯一标识,而 IP 地址只是用户软件设置中的一个参数,因而是可以随意修改的;
- 对 UDP 来说,是根据这个 IP 地址来唯一标识通信对方。 TCP 则通过三次握手,使情况稍有改善。 TCP 中的每个报文都含有一个标识本报文在整个通信流中位置的 32 bit 序列号,通信双方通过序列号来确认数据的有效性;
- 由于 TCP 设计三次握手过程本身并不是为了身份验证,只是提供同步确认和可靠通信,虽然这也能够提供一定的身份验证的支持,但这种支持很薄弱。
- 由于 TCP/IP 不能对节点上的用户进行有效的身份认证,服务器无法鉴别登录用户的身份有效性,攻击者可以冒充某个可信节点的 IP 地址,进行 IP 欺骗攻击;
- 由于某些系统的 TCP 序列号是可以预测的,攻击者可以构造一个TCP'数据包,对网络中的某个可信节点进行攻击。
- 不能有效防止信息泄漏
- IPv4 中没有考虑防止信息泄漏,在 IP 、 TCP 、 UDP 中都没有对数据进行加密。 IP 协议是无连接的协议,一个 IP 包在传输过程中很可能会经过很多路由器和网段,在其中的任何一个环节都很容易进行窃昕 。攻击者只需简单地安装一个网络嗅探器,就可以看到通过本节点的所有网络数据包。
- 没有提供可靠的信息完整性验证手段
- 在 IP 协议中,仅对 IP 头实现校验和保护;
- 在UDP 协议中,对整个报文的校验和检查是一个可选项,并且对 UDP 报文的丢失不做检查;
- 在 TCP 协议中,虽然每个报文都经过校验和检查,并且通过连续的序列号来对包的顺序和完整进行检查,保证数据的可靠传输。但是,校验算法中没有涉及加密和密码验证,很容易对报文内容进行修改,再重新计算校验和。
- 协议没有手段控制资源占杳和分配
- TCP/IP 中,对资源占杳和分配设计的一个基本原则是自觉原则。如参加 TCP通信的一方发现上次发送的数据报丢失,则主动将通信速率降至原来的一半。这样,也给恶意的网络破坏者提供了机会 c 如网络破坏者可以大量的发 IP 报,造成网络阻塞,也可以向一台主机发送大量的 SYN 包从而大量占有该主机的资源 (SYN Flood) 。这种基于资源占用造成的攻击被称为拒绝服务攻击( DOS);
TCP/IP协议攻击方法分析
- IP欺骗( IP Spoofing)
- 简述:IP 欺骗是指一个攻击者假冒一个主机或合法用户的 IP 地址,利用两个主机之间的信任关系来达到攻击的目的,而这种信任关系只是根据源 IP 地址来确定。所谓信任关系是指当主机 B 信任主机 A 上的 X用户时,只要 X 在 A 上登录, X 用户就可以直接登录到主机 B 上,而不需要任何口令;
- IP 欺骗通常需要攻击者能构造各种形式 IP 数据包,用虚假的源 IP 地址替代自己的真实 IP 地址。如果主机之间存在基于 IP 地址的信任关系,目标主机无法检测出已经被欺骗;
- 防范措施:
- 各个网络 ISP 应该限制源地址为外部地址的 IP 数据包进入互联网;
- 合理的配置防火墙,限制数据包的源地址为内部网络的数据包进入网络。
- TCP 会话劫持 (TCP sessJOn hijacking)
- 简述:TCP 会话劫持跳过连接过程.对一个已经建立的连接进行攻击。攻击者与被假冒主机和目标主机之一在同一个子网中,攻击者通过一个嗅探程序可以看到被假冒主机和目标主机之间通信的数据包。
- 攻击者看到被假冒主机和目标主机建立一个连接并进行身份认证后,通过对数据包捕获和进行分析,就可以得到连接的序列号;
- 一旦得到正确的序列号就可以发送一个假冒的 TCP 分段,接管已经建立的连接。这样,被假冒主机发送的数据包都会被目标主机忽略,因为它们的序列号会被目标主机认为不正确。
- 防范措施: 最主要的方法是在传输层对数据进行加密。
- 简述:TCP 会话劫持跳过连接过程.对一个已经建立的连接进行攻击。攻击者与被假冒主机和目标主机之一在同一个子网中,攻击者通过一个嗅探程序可以看到被假冒主机和目标主机之间通信的数据包。
- 拒绝服务( Denial Of Service )——SYN 淹没 (SYN Flooding)
- 简述:当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的Syn报文,一旦接收到Client发来的Syn报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,在某些操作系统中TCB甚至需要1300个字节,并返回一个SYN ACK命令,立即转为SYN-RECEIVED即半开连接状态,而操作系统在SOCK的实现上最多可开启半开连接个数是一定的;
- 从以上过程可以看到,如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应。而攻击发起方的资源消耗相比较可忽略不计。
- 防范措施:
- 无效连接监视释放:这种方法不停监视系统的半开连接和不活动连接,当达到一定阈值时拆除这些连接,从而释放系统资源。这种方法对于所有的连接一视同仁,而且由于SYN Flood造成的半开连接数量很大,正常连接请求也被淹没在其中被这种方式误释放掉,因此这种方法属于入门级的SYN Flood方法。
- 从前面SYN Flood原理可以看到,消耗服务器资源主要是因为当SYN数据报文一到达,系统立即分配TCB,从而占用了资源。而SYN Flood由于很难建立起正常连接,因此,当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗。常见的方法是使用Syn Cache和Syn Cookie技术。
- ICMP重定向攻击
- 简述:ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来 更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送 ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。
- 防范措施: 根据类型过滤一些ICMP数据包设置防火墙过滤,对于ICMP重定向报文判断是不是来自本地路由器。
2. 实践内容
ARP缓存欺骗攻击
(1)实验环境
机器 | IP地址 | MAC地址 |
---|---|---|
Kali Linux | 192.168.200.69 | 00:0C:29:A4:E2:C4 |
Linux MetaSploitable | 192.168.200.66 | 00:0C:29:E8:D0:4F |
Windows2k | 192.168.200.70 | 00:0C:29:F8:21:F4 |
该实验我们选择三台机器,分别作为一台攻击机、两台靶机,这里需要注意点为三台机器需要均在同一局域网中。
(2)过程
- 用
SEED Ubuntu ping MetaSploitable
,得到arp缓存表,并用arp -a
查看arp缓存表,如图所示。 - 在Kali上执行指令
netwox 80 -e 00:0C:29:A4:E2:C4 -i 192.168.200.66
; - 我们可以看到接下来的arp缓存表,已经发生了改变,和攻击机的mac地址相同。
ICMP重定向攻击
(1)实验环境
机器 | IP地址 |
---|---|
Kali Linux | 192.168.200.69 |
Linux MetaSploitable | 192.168.200.66 |
SEED Ubuntu | 192.168.200.68 |
(2)实验过程
- 在Kali主机上执行命令
netwox 86 -f "host 192.168.200.66" -g 192.168.200.69 -i 192.168.200.2
即嗅探到192.168.200.66(SEED Ubuntu)
的数据包时,以192.168.200.2
的名义发送ICMP重定向报文,使192.168.200.69(Kali)成为其默认路由; - 观察ping过程,发现访问百度的定位已经被重定向到我们的攻击机。
SYN Flood攻击
(1)实验环境
机器 | IP地址 |
---|---|
Kali Linux | 192.168.200.69 |
Linux MetaSploitable | 192.168.200.66 |
SEED Ubuntu | 192.168.200.68 |
(2)实验过程
在此次试验中我们采用SEED Ubuntu向靶机MetaSploitable发起telnet服务访问,用Kali攻击机攻击靶机的telnet服务端口,并用Wireshark查看。
- 使用SEED Ubuntu向MetaSploitable发起登陆telnet 192.168.200.66,输入用户名密码(MetaSploitable登陆的用户名密码
msfadmin/msfadmin
)。 - 在Kali上利用netwox的76号工具对靶机的23号端口进行SYN Flood攻击;
- 打开Wireshark查看,可以看到攻击机向靶机发送了大量的虚假ip发出的SYN连接请求,这些虚假的连接请求没有MAC地址,无法溯源攻击者的真实身份。
TCP RST攻击
(1)实验环境
机器 | IP地址 |
---|---|
Kali Linux | 192.168.200.69 |
Linux MetaSploitable | 192.168.200.66 |
SEED Ubuntu | 192.168.200.68 |
(2)实验过程
这里我们同样选择利用SEED Ubuntu向靶机MetaSploitable发起telnet服务访问,用Kali攻击机对靶机发起TCP RST攻击。
-
使用SEED Ubuntu向MetaSploitable发起登陆telnet 192.168.200.66,输入用户名密码(MetaSploitable登陆的用户名密码)。
-
在Kali上利用netwox的78号工具对靶机进行TCP RST攻击netwox 78 -i 192.168.200.66。
-
我们再次对靶机MetaSploitable发起telnet服务访问,我们可以观察到已经不能够访问。
TCP会话劫持攻击
(1)实验环境
机器 | IP地址 |
---|---|
Kali Linux | 192.168.200.69 |
Linux MetaSploitable | 192.168.200.66 |
SEED Ubuntu | 192.168.200.68 |
(2)实验过程
-
首先我们继续使用SEED Ubuntu向靶机MetaSploitable发起telnet服务访问,输入用户名及密码然后进入到靶机MetaSploitable命令行下;
-
此时我们打开kali中的Ettercap工具,将两个靶机分别设置为攻击目标,然后进行MITM攻击,我们可以进入connections中进行监听;
-
此时我们进入到SEED Ubuntu中我们进入telnet访问后,输入命令后,我们返回kali攻击机中,我们能够看到在Ettercap攻击中可以看到我们的输入过程;
-
同时我们可以在kali中打开wireshark进行抓包,分析telnet协议包内容后,我们同样也可以看到我们输入的相应的命令;
二、 实验过程中遇到的问题和解决过程
1. 当初对arp攻击是靶机和攻击机直接的通信出现故障
- 分析是因为一方面我们可以使用在同一网段下可以直接继续试验,另一方面,我认为应该是在配置中间路由时,配置有些问题。
三、感想
此次实验,学习到了很多工具的使用,同时在分析最后listen.pcap包中,结合上一节课的知识,更加深入了nmap的用法与嗅探之间对联系,从攻击者和靶机不同角度感受了不同的体验。