20199301 2019-2020-2 《网络攻防实践》 第五周作业
一、实践内容
网络安全属性
- 网络安全三个基本属性:机密性、完整性、可用性
- 网络安全属性:机密性、完整性、可用性、不可抵赖性、真实性
- 机密性:指网络中信息不被非授权实体(包括用户和进程等)获取与使用。包括国家机密、企业和社会团体的商业和工作秘密,个人秘密(如银行账号)和隐私(如邮件、浏览习惯)等。网络的广泛使用,使对网络机密性的要求提高了。网络机密性主要是密码技术,网络不同层次上有不同的机制来保障机密性。物理层主要是采取屏蔽技术、干扰及跳频技术防止电磁辐射造成信息外泄:在网络层、传输层及应用层主要采用加密、路由控制、访问控制、审计等方法。
- 完整性:指网络信息的真实可信性,即网络少的信息不会被偶然或者蓄意地进行删除、修改、伪造、插入等破坏,保证授权用户得到的信息是真实的。只有具有修改权限的实体才能修改信息,如果信息被未经授权的实体修改了或在传输过程中出现厂错误,信息的使用者应能够通过一定的方式判断出信息是否真实可靠。
- 可用性:指得到授权的实体在需要时可以使用所需要的网络资源和服务。用户对信息和通信需求是随机的多方面的,有的还对实时性有较高的要求。网络必须能够保证所有用户的通信需要,不能拒绝用户要求。攻击者常会采用一些手段来占用或破坏系统的资源,以阻止合法用户使用网络资源,这就是对网络可用性的攻击。对于针对网络可用性的攻击,一方面要采取物理加固技术,保障物理设备安全、可靠地工作;另一方面通过访问控制机制,阻止非法访问进入网络。
- 真实性:是指系统在规定的条件下和规定的时间内,完成规定功能的概率。可靠性是网络安全最基本的要求之一。目前对于网络可靠性的研究主要偏重于硬件可靠性的研究,主要采用硬件冗余、提高研究质量和精确度等方法。实际上软件的可靠性、人员的可靠性和环境的可靠性在保证系统可靠性方面也是非常重要的。
- 不可抵赖性:也称为不可否认性;是指通信的双方在通信过程中,对于自己所发送或接收的消息不可抵赖:即发送者不能抵赖他发送过消息的事实和消息内容,而接收者也不能抵赖其接收到消息的事实和内容。
网络攻击模式
- 四种基本攻击模式:
- 截获:是一种被动攻击模式,其目的是获取网络通信双方的通行信息内容,是对机密性的违反,具体攻击技术为嗅探(sniffing)与监听(Eeavesdropping)
- 中断:属于主动攻击模式,其目标是使正常的网络通信和会话无法继续,是对可用性的破环,具体攻击技术为拒绝服务(Dentail of Service,DoS)
- 篡改:属于主动攻击模式,是对网络通信过程的信息内容进行修改,使得通信一方或双方接收到篡改后的虚假信息,是对完整性的违背,具体技术为数据包篡改,一般需要结合身份欺骗进行中间人攻击。
- 伪造:属于主动攻击模式,是假冒网络通信方的身份,欺骗通信对方达到恶意目的,是对真实性属性的背离,具体技术为欺骗(Spoofing)
- 中间人攻击:是一种非常巧妙的高级攻击方式。攻击者通过各种技术手段与通信双方建立起个字的会话连接,并进行消息的双向转发,使他们误以为是通过一个私有通道在直接通信,二世纪上整个会话都是由攻击者所截获和控制的。
TCP/IP网络协议栈安全缺陷与攻击技术
- TCP/IP网络协议栈分层模型(每一层负责不同的功能,各自具有相应的网络协议):
- 网络接口层:以太网协议,当网络接口处于混杂模式可以直接嗅探并截获数据包,同时缺乏对MAC地址源的身份验证机制,实现MAC地址欺骗
- 互联层:IP协议只根据目的地址进行转发,不检查源IP地址是否真实有效,即缺乏IP地址身份认证机制,容易遭到IP地址欺骗。同时还包括源路由滥用、IP分片攻击,以及ARP欺骗、ICMP重定向、Smurf攻击等。
- 传输层:TCP建立会话之后的连接过程中,非常容易遭受伪造和欺骗攻击,攻击者可以进行TCP RST攻击直接中断会话过程。同时TCP的三次握手过程存在设计缺陷,攻击者可以进行SYN泛洪攻击。
- 应用层:一些流行的应用层协议HTTP、FTP、POP3/SMTP、 DNS等均缺乏安全设计。
原始报文伪造技术及工具
- 实现欺骗技术需要攻击者伪造出特制的网络数据报文,发送给目标主机,使其在接受处理这些伪造报文时遭受攻击。
网络层协议攻击
网络层主要协议如IP、ICMP和ARP都存在多种攻击方式
IP欺骗
- IP源地址欺骗
- 概念:是指攻击者伪造具有虚假源地址的IP数据包进行发送,以达到隐藏发送者身份、假冒其他计算机等目的。
- 原理::IP协议在设计时只是用数据包中的目标地址进行路由转发,从而不对原地址进行真实性验证。IP 数据包的源地址会被正确地设置为数据包所发出的IP地址,但是怀有恶意目的的攻击者会修改IP协议包头,使其包含一个不同的虚假IP地址,使其看起来像是从另外一个地址发出的,这样就达到了欺骗目标和隐藏发送源的目的。
- IP假冒的攻击过程:
- 对受信任的主机进行拒绝服务攻击,使其丧失工作能力
- 对目标主机的TCP初始序列号(ISN)进行取样和猜测
- 伪造源地址为受信任的主机IP的SYN数据包,发送给主机
- 等待目标主机将SYN/ACK包发给已经瘫痪的受信任的主机
- 再次伪装成被信任的目标主机发送ACK包、建立连接。
- 防范措施:
- 使用随机化的初始序列
- 使用网络层安全传输协议如IPsec,对传输数据包进行加密
- 避免采用基于IP地址的信任策略,以基于加密算法的用户身份认证机制来替代这些访问控制策略
- 在路由器和网关上实施包过滤是对抗IP源地址欺骗的一种主要技术。
ARP欺骗
- 概念:攻击者在有线以太网或无线网络上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
- ARP协议完成IP地址到MAC地址映射的过程步骤:
- 源节点A发送数据包给目的节点B时,会通过ARP协议在局域网段广播ARP请求包,询问节点B的IP地址所映射的MAC地址。
- 攻击节点C说IP目标IP地址所映射的MAC地址是他自己,并不断地向源节点发送ARP响应包。
- 由于攻击节点C不断地发送响应包,这样源节点上会强制以C发送响应包中的信息来更新ARP缓存。
- 当源节点A要再次发送数据包到节点B时,直接将数据包发送到C对应的MAC地址,即攻击节点C,这样C就通过欺骗假冒了目的节点B。
- 如果ARP欺骗攻击的是网关节点,将导致整个局域网所有节点经过网关出入的数据包都会首先通过攻击节点,可能被嗅探、监听和恶意修改。
- ARP欺骗攻击防范措施
- 静态绑定关键主机的IP地址和MAC地址映射关系
- 使用响应的ARP防范工具
- 使用VLAN虚拟子网细分网络拓扑,并加密传输数据
ICMP路由重定向攻击
- 概念:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
- ICMP路由重定向攻击技术:
- 攻击节点利用IP源地址欺骗技术,冒充网关IP地址,向被攻击节点发送ICMP重定向报文,并将指定的新路由器IP地址设置为攻击节点。
- 被攻击节点收到报文后,进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新的路由器。
- 攻击节点可以可以开启路由转发,充当中间人,对被攻击节点的通信进行全程嗅探监听,达到ARP欺骗类似的攻击效果。
- 在转发过程中,根据ICMP路由重定向机制的设计原理,攻击节点协议栈可能会向攻击节点发送一个ICMP重定向报文,指定原先网关为新路由器,将欺骗路由路径还原至原先状态。
传输层协议攻击
TCP RST攻击
- 概念:TCP RST攻击也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。TCP协议头的标志位有一个“reset”比特位,绝大部分数据包中该标志位都置为0,但该标志位置为1,接收该数据包的主机即将断开这个TCP会话连接,不再利用该连接进行数据包发送和接收。tcp重置报文就是直接关闭掉一个TCP会话连接。
TCP会话劫持攻击
- TCP会话劫持攻击原理:TCP会话劫持(TCP Session Hijacking)则是一项更为复杂的TCP协议攻击技术方法,目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。
- TCP会话挟持攻击技术过程
- victim主机与telnet服务器进行连接,并通过身份认证建立起会话。
- telnet服务器将会向victim发送响应包,并包含服务器当前序列号(SVR_SEQ)以及期望客户端发送的下一个序列号(SVR_ACK)。
- 攻击者通过ARP欺骗实施中间人攻击,可以嗅探获得victim和telnet服务器间的通信内容,然后假冒victim的IP地址及身份,向talent服务器发送数据包,声称自己是victim。攻击者发送数据包中的序列号必须满足条件:SVR_ACK<=CLT_SEQ<=SVR_ACK+SVR_WND。
- victim仍然会继续持续talent服务器之间的连接会话,但是由于与telnet服务器之间的ACK值互相不匹配出现AC风暴。
- TCP会话挟持攻击防御措施:
- 禁用主机上的源路由
- 采用静态绑定IP-MAC映射表以及避免ARP欺骗
- 引用和过滤ICMP重定向报文
- 网络层加密机制(IPsec协议
TCP SYN Flood拒绝服务攻击
-
概念:TCP SYN Flood ,又称SYN洪泛攻击,他是利用TCP三次握手协议 的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而无法正常服务。
-
原理:在TCP SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文。受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,永远不会返回ACK报文,受害主机继续发送SYN+ACK包,当半开连接报文填满,服务器也就拒绝新的连接。
-
防范措施:
- SYN-Cookie技术
- 防火墙地址状态监控技术
UDP Flood拒绝服务攻击
- 概念:UDP洪泛是一种拒绝服务攻击,其中大量的用户数据报协议(UDP)数据包被发送到目标服务器,目的是压倒该设备的处理和响应能力。防火墙保护目标服务器也可能因UDP泛滥而耗尽,从而导致对合法流量的拒绝服务。
- 防范措施:
- 禁用或过滤监控和响应服务
- 在网络关键位置使用防火墙和代理机制来过滤掉一些非预期的网络流量
二、实践过程
- 实践要求:请在网络攻防实验环境(以SEED_ VM作为攻击机,Linux Metasploitable/Windows Metasploitable作为靶机)中完成TCP/IP协议栈重点协议的攻击实验,具体包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击及TCP会话劫持攻击。
任务一:ARP欺骗攻击
-
首先确定各个IP地址和Mac地址
-
kali:
- IP地址:192.168.1.109
- Mac地址:00:0c:29:6d.fa:5d
-
ubantu
- IP地址:192.168.200.4
- Mac 地址:00:0c:29:a3:bf:54
-
Metasploitable2
- IP地址:192.168.200.125
- Mac 地址:00:0c:29:7b:6c:78
-
让SEEDUbuntu与MetaSploitable2进行通信,用ping命令得到ARP缓存表
-
在Kali上执行指令
netwox 80 -e 00:0c:29:6d:fa:5d -i 192.168.200.125
80是指netwox的80号工具
-e:攻击机kali的MAC地址
-i:MetaSploitable的IP地址,
并告诉请求方192.168.200.4(seed靶机)的MAC地址为00:0c:29:56:7e:92(kali攻击机)
-
最后查看冒充是否成功?
冒充成功!
ICMP重定向攻击
-
首先,使用netwox的86号工具进行ICMP重定向攻击,在Kali攻击机上执行命令netwox 86 -f "host 192.168.200.4" -g 192.168.1.109 -i 192.168.200.1,这个命令是当嗅探到SEED的数据包时,以192.168.200.1的名义发送ICMP重定向报文,使192.168.1.109(Kali)成为其默认路由。
-
可以看到SEED靶机打开网页时的数据包,数据包已经被重定向到192.168.200.1
SYN Flood攻击
- 用命令
netwox 76 -i 192.168.200.4 -p 23
对靶机SEED Ubuntu的23号端口进行SYN Flood攻击
- 在wireshark中可以看到有大量的没有Mac 地址的数据包
- 无法看到真实的身份
TCP RST攻击
与上一任务相似,将命令改为netwox 78 -i 192.168.200.4
TCP会话劫持攻击
- 继续在Ubuntu中利用命令
telnet 192.168.200.125
来登陆MetaSploitable
- 打开Wireshark设置过滤条件tcp.port == 23,在SEED Ubuntu中输入ls,回到Wireshark中查看可以看到如图:
- 根据下图获取的信息,可以伪造发下一个包,把Next Seq Num作为下一个包的ACK,采用ACK作为下一个包的Seq。获取到信息之后,攻击机使用netwox工具伪造Ubuntu给MetaSploitable发一个tcp包。发送成功后,Ubuntu就会失去连接,同时MetaSploitable会把Kali当作访问者 ,这样就实现了会话劫持
- 在kali中使用指令
netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.4 --ip4-dst 192.168.200.125 --tcp-src 54350 --tcp-dst 23 --tcp-seqnum 120 --tcp-acknum 1223 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "446F757368616E717565"
,来进行TCP劫持。- --ip4-protocol是协议号、
- --ip4-ttl是登陆者的ttl
- --ip4-src是seed的ip地址
- --ip4-dst是靶机的ip地址
- --tcp-src源端口号
- --tcp-dst目的端口号
- --tcp-data是要发送的16进制数据。
- 再查看Wireshark,貌似劫持成功:
三、学习中遇到的问题与解决方法
问题;由于上周的实践,我忘记恢复之前的kali网络设置,这里重新设置
解决:这里重新设置(参考了胡一鸣同学的博客)
四、学习感想和体会
这次的实践作业内容比较多,在实践的过程中还是发现对Wireshark抓取到的包进行数据分析时还是很生疏。
虽然教材上已经把原理讲解的很清楚,但是实践还是无法完全独立完成,只能靠参考多个同学的博客来进行实践。但是过程中只要自己一步一步动手慢慢来,也能将理论和实践结合起来使得对知识点的认识更深刻一些。