20199120 2019-2020-2 《网络攻防实践》第5周作业

20199120 2019-2020-2 《网络攻防实践》第5周作业

1.前言

作业 答案
这个作业属于哪个课程 网络攻防实践
这个作业的要求在哪里 第五次作业 TCP/IP网络协议攻击
我在这个课程的目标是 学习、提高网络攻防的本领
这个作业在哪个具体方面帮助我实现目标 学习TCP/IP网络协议攻击的方法

2.本章知识点总结

2.1 TCP/IP网络协议栈攻击概述

2.1.1 网络安全属性与攻击基本模式

  • 网络安全属性

    • 机密性:指网络中的信息不被非授权实体获取和使用,通常基于加密算法进行保障。
    • 完整性:指信息未经授权不能改变的特性,即信息在存储和传输过程中保持不被修改、不被破坏和丢失的特性。
    • 可用性:指被授权实体访问并按需求使用的特性,即当需要时能够正常地存取和访问所需信息的服务。
    • 真实性:指确保通信双方是它所声称的真是实体,而非假冒实体。
    • 不可抵赖性:指在通信中确保任何一方无法抵赖自己曾经做过的操作的安全特性,包括对自己行为的不可抵赖及对行为发生时间的不可抵赖,有时也被称为不可否认性和可审查性。
  • 网络攻击基本模式

    • 截获:被动攻击模式,获取网络通信双方的通信信息内容。是对机密性的违反,攻击技术为嗅探与监听。
    • 中断:主动攻击模式,致使正常的网络通信和会话无法继续,是对可用性的破坏,攻击技术为拒绝服务。
    • 伪造:主动攻击模式假冒网络通信方的身份,欺骗通信对方达到恶意目的,是对真实性的背离,攻击技术为欺骗。
    • 篡改:主动攻击模式,对网络通信工程的信息内容进行篡改,使得通信一方或双方接收到虚假消息,是对完整性的背离,攻击技术为数据包篡改,一般需要结合身份欺骗进行中间人攻击。

2.1.2 TCP/IP网络协议栈安全缺陷与攻击技术

  • TCP/IP网络协议栈的设计也采用了分层模型,分为了网络接口层、互联层、传输层与应用层,每一层负责不同功能,各自具有相应的网络协议。在每层都会有一定的缺陷以及针对这些缺陷相应的攻击技术。

  • TCP/IP协议的基本框架
  • 主机A向主机B发送一封电子邮件,在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 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



6.发完可以从wireshark看到伪造的包

4.学习中遇到的问题及解决

  • 问题1: 在SYN Flood攻击中第一步telnet登录时出现连接不上的问题
  • 问题1解决方法: 查看 MetaSploitable2-Linux的IP地址发现,地址变成了192.168.0.130
  • 问题2: 在伪造数据包时出现了一下问题
  • 问题2解决方法:权限不够,切换到root

5.实践总结

计算机网络知识正在慢慢的捡起来,动手能力得加强,许多命令还是参考同学的博客。

6.参考资料

posted @ 2020-04-01 10:09  王晨20199120  阅读(246)  评论(0编辑  收藏  举报