20199120 2019-2020-2 《网络攻防实践》第5周作业
- 1.前言
- 2.本章知识点总结
- 2.1 TCP/IP网络协议栈攻击概述
- 2.1.1 网络安全属性与攻击基本模式
- 2.1.2 TCP/IP网络协议栈安全缺陷与攻击技术
- 2.2 网络层协议攻击
- 2.2.1 IP源地址欺骗
- 2.2.2 ARP欺骗攻击
- 2.2.3 ICMP路由重定向攻击
- 2.3 传输层协议攻击
- 2.3.1 TCP RST攻击
- 2.3.2 TCP会话劫持攻击
- 2.3.3 TCP SYN Flood拒绝服务攻击
- 2.3.4 UDP Flood拒绝服务攻击
- 2.1 TCP/IP网络协议栈攻击概述
- 3.实践过程
- 实践作业
- 3.1 ARP缓存欺骗攻击
- 3.2 ICMP重定向攻击
- 3.3 SYN Flood攻击
- 3.4 TCP RST攻击
- 3.5 TCP会话劫持攻击
- 4.学习中遇到的问题及解决
- 5.实践总结
- 6.参考资料
1.前言
作业 | 答案 |
---|---|
这个作业属于哪个课程 | 网络攻防实践 |
这个作业的要求在哪里 | 第五次作业 TCP/IP网络协议攻击 |
我在这个课程的目标是 | 学习、提高网络攻防的本领 |
这个作业在哪个具体方面帮助我实现目标 | 学习TCP/IP网络协议攻击的方法 |
2.本章知识点总结
2.1 TCP/IP网络协议栈攻击概述
2.1.1 网络安全属性与攻击基本模式
-
网络安全属性
- 机密性:指网络中的信息不被非授权实体获取和使用,通常基于加密算法进行保障。
- 完整性:指信息未经授权不能改变的特性,即信息在存储和传输过程中保持不被修改、不被破坏和丢失的特性。
- 可用性:指被授权实体访问并按需求使用的特性,即当需要时能够正常地存取和访问所需信息的服务。
- 真实性:指确保通信双方是它所声称的真是实体,而非假冒实体。
- 不可抵赖性:指在通信中确保任何一方无法抵赖自己曾经做过的操作的安全特性,包括对自己行为的不可抵赖及对行为发生时间的不可抵赖,有时也被称为不可否认性和可审查性。
-
网络攻击基本模式
- 截获:被动攻击模式,获取网络通信双方的通信信息内容。是对机密性的违反,攻击技术为嗅探与监听。
- 中断:主动攻击模式,致使正常的网络通信和会话无法继续,是对可用性的破坏,攻击技术为拒绝服务。
- 伪造:主动攻击模式假冒网络通信方的身份,欺骗通信对方达到恶意目的,是对真实性的背离,攻击技术为欺骗。
- 篡改:主动攻击模式,对网络通信工程的信息内容进行篡改,使得通信一方或双方接收到虚假消息,是对完整性的背离,攻击技术为数据包篡改,一般需要结合身份欺骗进行中间人攻击。
2.1.2 TCP/IP网络协议栈安全缺陷与攻击技术
- TCP/IP网络协议栈的设计也采用了分层模型,分为了网络接口层、互联层、传输层与应用层,每一层负责不同功能,各自具有相应的网络协议。在每层都会有一定的缺陷以及针对这些缺陷相应的攻击技术。
2.2 网络层协议攻击
2.2.1 IP源地址欺骗
- IP源地址欺骗攻击是指攻击者会修改IP协议包头,使其包含一个不同的虚假IP地址,达到欺骗目标和隐藏发送源的目的。
- IP攻击步骤
- 首先使被信任主机的网络暂时瘫痪
- 然后连接到目标机的某个端口来猜测ISN基值和增加规律
- 接下来把源址址伪装成被信任主机,发送带有SYN标志的数据段请求连接
- 然后等待目标机发送SYN+ACK包给已经瘫痪的主机
- 最后再次伪装成被信任主机向目标机发送的ACK,此时发送的数据段带有预测的目标机的ISN+1
- 连接建立,发送命令请求。(连接是建立了,但是只能发送命令,收不到回显,因为服务器根据IP回显给了真的信任主机)
- IP源地址欺骗技术的应用场景:拒绝服务攻击、网络扫描、对抗身份认证机制
- IP源地址欺骗使用的工具:Netwox、 nmap
- IP源地址欺骗技术的防范措施
- 使用随机化的初试序列号,降低源地址欺骗风险。
- 使用网络层安全传输协议,对传输的数据包进行加密。
- 避免采用基于IP 地址的信任策略
- 在路由器和网关上实施包过滤。
2.2.2 ARP欺骗攻击
- 定义:攻击者在有线以太网或无线网络上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗
- 原理:ARP协议在设计时认为局域网内部的所有用户都是可信的,但是局域网内可以存在内部攻击者,或者已经渗透进局域网的外部攻击者或恶意代码。这使得ARP缓存非常容易被注入伪造的IP地址到MAC地址的映射关系,从而进行欺骗。
- 应用场景:作为中间人嗅探信息,进行病毒传播和恶意代码等
- 防范措施
- 静态绑定关键主机的IP地址和MAC地址映射关系
- 使用相应的ARP防范工具
- 使用虚拟子网细分网络拓扑
- 加密传输
2.2.3 ICMP路由重定向攻击
- 定义:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
- 原理:利用ICMP路由重定向报文改变主机路由表,向目标主机发送重定向消息,伪装成路由器,使得目标机器的数据报文发送至攻击机从而加强监听。
- 防范措施
- 根据类型过滤一些ICMP数据包
- 设置防火墙过滤
- 对ICMP重定向报文判断是不是来自本地路由器
2.3 传输层协议攻击
2.3.1 TCP RST攻击
- TCP RST攻击也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。TCP协议头有一个reset,该标志位置为1,接收该数据包的主机即将断开这个TCP会话连接。tcp重置报文就是直接关闭掉一个TCP会话连接
2.3.2 TCP会话劫持攻击
- TCP会话劫持是劫持通信双方已经建立的TCP会话连接,假冒其中一方的身份,与另一方进行进一步通信。在建立TCP会话之后再进行劫持,可以避免身份验证。
- 攻击步骤
- victim主机与telnet服务器进行连接,并通过身份认证建立起会话。
- telnet服务器将会向victim发送响应包,并包含服务器当前序列号以及期望客户端发送的下一个序列号。
- 攻击者通过ARP欺骗实施中间人攻击,可以嗅探获得victim和telnet服务器间的通信内容,然后假冒victim的IP地址及身份,向talent服务器发送数据包,声称自己是victim。
- victim仍然会继续持续talent服务器之间的连接会话,攻击机仿冒服务器向靶机发送RST包,避免靶机对通信的干扰。。
- 防范措施
- 禁用主机上的源路由
- 使用静态的IP-MAC映射表
- 引用和过滤ICMP重定向报文
- 采用IPSec协议
2.3.3 TCP SYN Flood拒绝服务攻击
-
TCP SYN Flood ,又称SYN洪泛攻击,他是利用TCP三次握手协议 的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而无法正常服务
-
- 所谓三次握手,即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立
- 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认
- 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态
- 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
- 所谓三次握手,即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立
-
攻击原理:在TCP SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文。受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,永远不会返回ACK报文,受害主机继续发送SYN+ACK包,当半开连接报文填满,服务器也就拒绝新的连接。
-
防范措施
- SYN-Cookie技术
- 防火墙地址状态监控技术
2.3.4 UDP Flood拒绝服务攻击
- 定义:UDP洪泛是一种拒绝服务攻击,其中大量的用户数据报协议(UDP)数据包被发送到目标服务器,目的是压倒该设备的处理和响应能力。防火墙保护目标服务器也可能因UDP泛滥而耗尽,从而导致对合法流量的拒绝服务。
- 防范措施
- 禁用或过滤监控和响应服务
- 禁用或过滤其他UDP服务
3.实践过程
实践作业
请在网络攻防实验环境(以SEED_VM作为攻击机,Linux Metasploitable/Windows
Metasploitable作为靶机)中完成TCP/IP协议栈重点协议的攻击实验,具体包括ARP缓存
欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击及TCP会话劫持攻击(bonus)。
本次实践用到的靶机与攻击机
机器 | IP地址 | MAC地址 |
---|---|---|
攻击机 Kali-Linux | 192.168.0.110 | 00:0c:29:32:fa:13 |
靶机 Seed Ubuntu | 192.168.0.128 | 00:0c:29:9f:ca:05 |
靶机 MetaSploitable2-Linux | 192.168.0.127 | 00:0c:29:21:a4:96 |
靶机 winXPAttacker | 192.168.0.129 | 00:0c:29:07:cf:c7 |
3.1 ARP缓存欺骗攻击
Kali作为攻击机,MetaSploitable2-Linux和 Seed Ubuntu作为靶机
1.用SEED Ubuntu ping
MetaSploitable,得到arp缓存表,用arp -a
查看arp缓存表
2.用Kali执行指令netwox 80 -e 00:0c:29:32:fa:13 -i 192.168.0.127
3.重新用arp -a
查看ARP缓存,发现,MetaSploitable2-Linux的MAC已被改变
4.此时在kali用wireshark抓包可以看到构造出来的响应包
3.2 ICMP重定向攻击
1.攻击机kali,靶机winXPAttacker,用route print
看一下路由表,靶机默认路由是192.168.0.1
2.在kali中执行命令netwox 86 -f "host 192.168.0.129" -g 192.168.0.110 -i 192.168.0.1
-f后面的是靶机IP,-g后面的是更改之后的路由,-i后面的是原默认路由IP
3.再用route print
看一下路由表,可以看到kali的IP
3.3 SYN Flood攻击
1.Seed Ubuntu向MetaSploitable2-Linux发起telnet服务访问,用Kali攻击机攻击靶机的telnet服务端口
2.在Seed Ubuntu用Telnet登陆MetaSploitable2-Linux
3.在Kali上利用netwox的76号工具对靶机的23号端口进行SYN Flood攻击netwox 76 -i 192.168.0.130 -p 23
4.在wireshark中发现大量虚假IP的SYN包
3.4 TCP RST攻击
1.Seed Ubuntu向靶机MetaSploitable2-Linux发起telnet服务访问,用Kali攻击机对靶机发起TCP RST攻击。
2.在Seed Ubuntu用Telnet登陆MetaSploitable2-Linux
3.Kali上利用netwox的78号工具对靶机进行TCP RST攻击netwox 78 -i 192.168.0.130
(忘记截图了)
4.此时Seed Ubuntu和机MetaSploitable2-Linux间的连接会被断开
3.5 TCP会话劫持攻击
1.seed Ubuntu向靶机MetaSploitable2-Linux发起telnet服务访问
2.在Kali上打开Wireshark设置过滤条件用tcp.port == 23
,然后在SEED Ubuntu中输入ls,回到Kali的Wireshark中查看,会发现有l和s的数据包
3.查看seed和meta间通信的最后一个包因为要冒充seed给meta发包,找到序列号和确认号
4.伪造发下一个包,所以把Next Seq Num作为下一个包的ACK,采用ACK作为下一个包的Seq。获取到信息之后,攻击机使用netwox工具伪造Seed Ubuntu给MetaSploitable2-Linux发一个tcp包。发送成功后,原来的Seed Ubuntu就会失去连接,同时MetaSploitable2-Linux会把Kali作为访问者 ,这样就实现了会话劫持
5.使用指令
netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.0.128 --ip4-dst
192.168.0.126 --tcp-src 40712 --tcp-dst 23 --tcp-seqnum 3904984991 --tcp-acknum
1227018696 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "77616E676368656E"
- -ip4-src源IP和--tcp-src源端口都造Seed Ubuntu的
- --ip4-dst目的IP和--tcp-dst目的端口是MetaSploitable2-Linux的,因为最后一个包是造Seed Ubuntu给MetaSploitable2-Linux的ACK包,其中没有有效数据,所以序列号和确认号可以直接复制粘贴
- --tcp-seqnum序列号,粘贴上之前找到的next SEQ值
- --tcp-acknum确认号,粘贴上之前找到的ACK值
- --tcp-data伪造的包里的数据,以十六进制值表示,我的是wangchen
4.学习中遇到的问题及解决
- 问题1: 在SYN Flood攻击中第一步telnet登录时出现连接不上的问题
- 问题1解决方法: 查看 MetaSploitable2-Linux的IP地址发现,地址变成了192.168.0.130
- 问题2: 在伪造数据包时出现了一下问题
- 问题2解决方法:权限不够,切换到root
5.实践总结
计算机网络知识正在慢慢的捡起来,动手能力得加强,许多命令还是参考同学的博客。
6.参考资料
- TCP回话劫持原理和利用
- TCP协议三次握手过程分析
- 谢建国同学作业