20199307 2019-2020-2 《网络攻防实践》第五周作业
问题 | 源 |
---|---|
作业所属课程 | 网络攻防实践 |
作业要求 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
课程目标 | 了解网络攻防的概要 |
这个作业在哪个具体方面帮助我实现目标 | 深入了解网络嗅探、网络协议的分析 |
作业正文.... | 见后文 |
其他参考资料 | 见后文 |
一、实践内容
TCP/IP网络协议栈攻击概述
网络安全属性(CIA)
-
机密性(C):保一般基于加密算法,来保证网络中的信息是被授权使用。
-
完整性(I):信息在存储使用的过程中保持不被修改,不被破坏。
-
可用性(A):当信息被需要时,能够正常的存取和访问,
-
真实性(A):确保通信对方是它所声称的真实实体。
-
不可抵赖性:在网络中做过的事情,终究会留下证据,不可抵赖。
网络攻击基本模式
-
截获:被动的攻击模式,获取双方的通讯信息,违反机密性,攻击技术有嗅探、监听。
-
中断:主动的攻击模式,使通话无法继续,违反可用性.攻击技术有拒绝服务(DoS)。
-
篡改:主动的攻击模式,修改通信过程中信息内容,违反了完整性,具体技术有数据包篡改,一般需要结合身份欺骗。
-
伪造:主动的攻击模式,假冒通信方身份,违反真实性,攻击技术是欺骗。
-
中间人攻击(MITM):攻击者拦截通信双方的全部通信,并且需要对通信双方都实现身份欺骗,为通信双方建立一条“信道”,危险性特别大。
TCP/IP网络协议栈安全缺陷与攻击技术
TCP/IP网络协议栈的设计也采用了分层模型,分为了网络接口层、互联层、传输层与应用层,每一层负责不同功能,各自具有相应的网络协议。在每层都会有一定的缺陷以及针对这些缺陷相应的攻击技术。
-
网络接口层:
- 以太网协议:在以太网接口检测数据帧,数据帧目标MAC地址不是自己的就不接受,当网络接口处处于混杂模式,便可直接嗅探并截获数据包。可通过软件修改网卡MAC地址,实现MAC欺骗。
- PPP协议:点对点连接上传输多协议数据包的一个标准方法,PPP协议在安全性方面也不提供对其所封装数据完整性和机密性保障。
-
互连层:IPv4是基础互联网协议,其它还有ICMP、ARP(地址解析协议)、BGP(边界网关协议)。
- IP协议最大的安全漏洞就在于分组交换时只根据目的地址进行转发,而不检查源地址IP是否有效,缺乏IP地址的身份认证,容易遭受IP地址欺骗。
- ARP协议不对MAC-IP映射关系进行真实性验证,容易遭受ARP欺骗。
- ICMP协议主要缺陷在于攻击者可以利用ICMP重定向控制数据包路由路径,从而实施ICMP路由重定向攻击。
-
传输层:协议主要有TCP和UDP。由于TCP在建立会话时,仅依靠IP地址、端口、SEQ/ACK号对通信对方进行验证,容易遭受TCP RST攻击,中断会话过程。
-
应用层:主流协议有HTTP、FTP、POP3/SMTP、DNS、SMB,它们都缺乏安全考虑,大多采用的是明文传输,有被嗅探监听、欺骗与中间人攻击的风险。
原始报文伪造技术及工具
-
报文伪造技术:实现欺骗技术需要攻击者伪造出特质的网络数据报文,发送给目标主机,使目标主机在处理这些伪造报文时遭受攻击。在类UNIX平台和windows上,攻击作者可以通过套接字绕过TCP/IP协议栈的报文封装处理和验证,构造出任意数据报文。在使用原始套接字时,需要以根用户或管理员身份执行。
-
伪造工具:Netwox是一个功能强大方便使用的开源工具包,可创建任意的TCP/UDP/IP数据报文。
网络层协议攻击
IP源地址欺骗
-
概念:攻击者对源地址进行修改或隐藏发送IP数据包,可达到隐藏发送者身份和假冒别人的目的。
-
原理:之所以可以进行IP欺骗,是因为IP协议只对目的地址进行路由转发,不对源地址进行真实性验证。攻击者可以可以得去修改IP协议包头,达到目的,例如拒绝服务攻击等。
ARP欺骗
-
概念:攻击者在以太网或无线网络上发送伪造之后的ARP信息,对特定IP对应的MAC地址进行假冒欺骗。
-
ARP协议工作原理:该协议将网络主机的IP地址解析为MAC地址,进行局域网内的通信。
-
ARP完成IP地址到MAC地址映射过程:
1.每台主机都会有一个ARP缓存,其中有与之通信过的IP与MAC地址映射关系。
2.一台主机发送数据包到目标主机时,先看ARP缓存是否有目标主机IP所对应的MAC地址,若有直接发送,若没有,则向本地局域网段发送一个ARP请求广播包,查询目标主机IP地址对应的MAC地址。
3.本地局域网段中所有主机收到该ARP请求包之后,会将该包中目标IP地址与自己相比,若相同,则将源端IP地址对应的MAC地址添加到自己的缓存中,之后给源端发送一个响应包,报名自己的身份。
4.源端收到响应包后,将目标主机的IP-MAC映射关系存储到自己的ARP缓存中,利用其进行数据包的传输
-
ARP欺骗原理: ARP协议在设计时认为局域网内部所有用户都是可信用户,所以存在于该局域网内的攻击者和渗透进来的攻击者就可以进行攻击。
-
ARP欺骗过程:
1.当源节点向目标发送数据包,通过ARP协议在局域网段广播请求包,询问目标IP-MAC映射关系。
2.攻击者在此时也应答源端的请求包,一直向源端发送响应包。
3.虽然目标端也回馈了响应包,但是奈何没有攻击者响应的多,强制源端更新了ARP缓存为IP(目标)-MAC(攻击者)映射关系。
4.源端在之后再向IP(目标)发送数据包时,都会发给攻击者,攻击者达成目的。
5.当攻击者对目标地址实施ARP欺骗,就形成了中间人攻击的局面。
ICMP路由重定向攻击
-
概念:ICMP路由重定向攻击指攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,让受害者主机选择攻击者指定的路由路径,进行嗅探、假冒等攻击操作。
-
机制原理:ICMP协议是为了解决数据包在互联网传输过程中可能碰到的各种传输错误。(IP协议不解决的一些问题)
-
ICMP报文类型:
- 差错报告:目的站不可达、数据包超时、数据包参数错误
- 控制类:请求/应答类(成对出现)、通知类。
-
ICMP路由重定向攻击过程:
1.攻击者利用IP源地址欺骗,冒充网关的IP地址,向靶机节点发送ICMP重定向报文,并将指定的新路由器IP设置为攻击节点。
2.靶机节点接受该报文,将选择攻击节点作为网关(路由器)。
3.攻击节点开启路由转发,对靶机节点进行实时嗅探。
传输层协议攻击
TCP RST攻击(TCP重置报文攻击)
- 概念:指假冒干扰TCP通信连接的技术方法。TCP协议头中,"reset"标志位是1的话,接收该数据包的主机将立即断开这个TCP会话连接。它的设计为了避免发生一些特殊情况的发生。
TCP会话劫持攻击
-
原理:TCP会话劫持目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信。
-
攻击过程:首先,目标主机要与服务器建立连接,攻击者通过嗅探获取服务器当前的序列号以及期望客户端发送的下一个序列号,再通过ARP欺骗发动中间人攻击,获取双方通信数据,并且可以执行任意命令。
TCP SYN Flood拒绝服务攻击
-
概念:它又称SYN泛洪攻击,是目前最流行的拒绝服务形式。它利用了TVP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源。
-
客户端与服务器建立TCP连接时,交换信息如下:
1.客户端通过传送SYN同步信息到服务器,要求建立连接;
2.服务器响应客户端SYN-ACK,相应请求。
3.客户端应答ACK,TCP会话连接随之建立。
UDP Flood拒绝服务攻击
- 概念:UDP Flood拒绝服务攻击就是向目标主机发送大量的UDP数据包,造成目标主机计算负载提升或网络拥塞,使网络瘫痪,拒绝服务。
二、实践过程
本次实践需要用到的实践环境的ip和mac地址:
环境 | IP地址 | mac地址 |
---|---|---|
kali | 192.168.200.2 | 00:0c:29:2d:a1:ae |
Metasploitable2 | 192.168.200.125 | 00:0c:29:a7:02:54 |
seed | 192.168.200.4 | 00:0c:29:b8:5f:7c |
ARP缓存欺骗攻击
1.首先,我们需要通过工具netwox工具来进行攻击,在攻击机kali上安装netwox工具:
sudo apt-get install netwox
2.使用seed ping靶机,并用arp -a
查看seed的arp缓存表,获取靶机ip-mac映射关系。
3.在kali上执行命令netwox 80 -e 00:0c:29:2d:a1:ae -i 192.168.200.125
,可以看到seed缓存表中靶机的ip-mac映射关系已经改变,kali成功了ARP欺骗。
4.实践完后,删除seed中靶机的arp映射表,使用命令sudo arp -d 192.168.200.125
。
ICMP重定向攻击
1.首先,我选取kali和seed来进行实践,在kali中使用命令netwox 86 -f "host 192.168.200.4" -g 192.168.200.2 -i 192.168.200.10
2.在使用ping命令向百度发送数据包时,已经被重定向到kali的ip地址:
SYN Flood攻击
1.我选用seed去和靶机建立通信,然后使用kali对靶机进行SYN Flood攻击。先用seed向靶机使用telnet登录。(登录时需要输入靶机的账号密码)
2.在kali使用命令netwox 76 -i 192.168.200.125 -p 23
,这里的ip地址是靶机的,76代表使用netwox的76号工具,-p 23指定端口为23号。
3.在seed端的wireshark查看数据流,发现有一大堆SYN请求发往靶机192.168.200.125
TCP RST攻击
1.同之前的实验,我们先用seed建立与靶机的telnet连接,telnet 192.168.200.125
。
2.在kali使用命令netwox 78 -i 192.168.200.125
,这里的ip地址是靶机的,78代表使用netwox的78号工具。
3.此时,我想在seed来访问靶机的目录,发现访问被拒绝,而且telnet连接也断掉了。
TCP会话劫持攻击。
1.同之前的实验,我们先用seed建立与靶机的telnet连接,telnet 192.168.200.125
。
2.在kali端打开wireshark,并使用指令tcp.port==23
来进行过滤,此时我们发现并没有输出结果。
3.回到seed端,使用telnet对靶机进行操作,此处我们用命令cd .
,然后我们回到kali,使用wireshark查看数据流,可以在telnet协议的数据包中看到c
、d
、.
。
4.我们在wireshark中看最后一个包,在它的Transmission Control Protocol一栏的信息中我们可以看到,这是由192.168.200.4
发向192.168.200.125
的数据包,源端口是37004,目的端口是23,Sequence number=524700090
,Acknowledgment number=3952870228
。这些参数在后面构造数据包时用到。
5.在构造数据包时,还需要一个16进制的数据,我用自己的信息jxr20199307
对应的16进制码发送包,线上抓换
6.在准备好了构造数据包所用的参数后,参考了TCP劫持链接,使用命令netwox 40 --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.4 --ip4-dst 192.168.200.125 --tcp-src 37004 --tcp-dst 23 --tcp-seqnum 524700090 --tcp-acknum 3952870228 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "6a78723230313939333037"
,来进行TCP劫持。其中--ip4-protocol
是协议号、--ip4-ttl
是登陆者的ttl、--ip4-src
是seed的ip地址、--ip4-dst
是靶机的ip地址、--tcp-src
源端口号、--tcp-dst
目的端口号、--tcp-data
是要发送的16进制数据。
7.这时,我们就可以在kali的wireshark看到一大串TCP Retransmission
,TCP Dup
。表示数据在传输过程中遇到问题,一直在请求重新传输。我们再来到seed看到,shell框已经完全不能运行了,说明我们的劫持已经成功了。
三、学习中遇到的问题及解决
-
问题1:一个令人头疼却又不能根治的问题,就是虚拟机总是会有不能联网的时候(不光是kali) 。
- 问题1解决方案:当所有的虚拟机都不能联网的时候,我在想是不是Windows的VM net server服务关掉了,截图如下,发现这项服务是一直开启的
排除了这个原因之后,我又将整个VM的网络资源重置了,发现还不能解决,但是过了大概5分钟的样子,这些虚拟机就通网了,我猜测这是由于虚拟机在开启的时候要对网络环境进行初始化,同时开启多个虚拟机时就会买一些,我不知道这样解释是否正确,先这样吧。
-
问题2:不法安装netwox,提示找不到这个工具
- 问题2解决方案:之前做实验为了解决无法联网的问题,更换了安装源为中科大的源,于是我又改回了之前的源(之前有备份),问题就解决了。
四、实践总结
本次实践任务中,《网络攻防技术与实践》第五章内容属实有点多,不过看着挺有意思,花费不少时间看完并整理了知识点,后面实践部分通过对netwox工具的学习,参考博客等途径完成了所有实践,得出的结论就是,知识面太广了,需要继续认真学习,希望往后的实践能够顺畅一些。