20211911 2021-2022-2 《网络攻防实践》实践四报告
1.实践内容
第四章的内容整体比较多,但是系统性和完整性都比较好,主要讲了网络层和传输层的协议攻击。关于攻击的原理,本章的书本内容十分详细,所以本次作业的原理篇幅稍多。主要分成以下几个部分先进行理论知识的梳理,再进行课后的实践。
·网络协议攻击及其基本概念
·网络层协议攻击及防范措施
·传输层协议攻击及防范措施
网络协议攻击及其基本概念
学习网络安全、信息安全首先应当铭记心中的是五大安全属性:机密性,完整性,可用性、真实性和不可抵赖性。我们所有的攻击或者防守都是围绕这五大安全属性来展开的。那么作为攻击方来说,通常有以下几种攻击模式:
·截获:以嗅探与监听技术为基础的被动攻击模式,获取网络通信双方的通信信息内容。
·中断:以拒绝服务技术为基础的主动攻击模式,使网络通信和会话无法进行。
·伪造:以欺骗为基础的主动攻击模式,假冒网络通信方的身份,欺骗通信对方达到恶意目的。
·篡改:包括数据包篡改,中间人攻等技术的击主动攻击模式,网络通信工程的信息内容进行篡改,使得通信一方或双方接收到虚假消息。
·但是作为一个攻击者,我们还缺少了安全缺陷,有了安全缺陷,我们才可以实施攻击。下面简要介绍一些TCP/IP网络协议栈安全缺陷与攻击技术,主要技术内容在下一节讲解。
1.网络接口层:以太网协议,当网络接口处于混杂模式可以直接嗅探并截获数据包,同时缺乏对MAC地址源的身份验证机制,实现MAC地址欺骗。
2.互联层:IP协议只根据目的地址进行转发,不检查源IP地址是否真实有效,即缺乏IP地址身份认证机制,容易遭到IP地址欺骗。同时还包括源路由滥用、IP分片攻击,以及ARP欺骗、ICMP重定向、Smurf攻击等。
3.传输层:TCP建立会话之后的连接过程中,非常容易遭受伪造和欺骗攻击,攻击者可以进行TCP RST攻击直接中断会话过程。同时TCP的三次握手过程存在设计缺陷,攻击者可以进行SYN泛洪攻击。
4.应用层:一些流行的应用层协议HTTP、FTP、POP3/SMTP、 DNS等均缺乏安全设计。
上述协议栈攻击技术中,最为重要或者流行的就是欺骗技术了,欺骗技术即攻击者伪造出特制的网络数据报文,发送给目标主机,使其在接受处理这些伪造报文时遭受攻击。Netwox是一个开源工具包,可以创建任意的TCP/UDP/IP数据报文,支持命令行方式构造及发送伪造包,可以通过脚本编程实现自动化处理。
网络层协议攻击及防范措施
1.IP源地址欺骗攻击
原理:只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。
攻击步骤(参考下图与文字内容结合):
对受信任的主机进行拒绝服务攻击
对目标主机的TCP初始序列号(ISN)进行取样和猜测
伪造源地址为受信任的主机IP的SYN数据包发送给主机
等待目标主机将SYN/ACK包发给已经瘫痪的受信任的主机
再次伪装成被信任的目标主机发送ACK包、建立连接。
应用场景:拒绝服务攻击、网络扫描(nmap -D)
工具:Netwox、wireshark、nmap
防范措施:
使用随机化的初试序列号
使用网络层安全传输协议
避免采用基于IP地址的信任策略
在路由器和网关上实施包过滤
2.ARP欺骗攻击
定义:ARP欺骗也称为ARP下毒,是指攻击者在有线或以太网上发送伪造的ARP信息,对特定IP所对应的的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
原理:ARP协议在设计时认为局域网内部的所有用户都是可信的,但是局域网内可以存在内部攻击者,或者已经渗透进局域网的外部攻击者或恶意代码。这使得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欺骗攻击的是网关节点,将导致整个局域网所有节点经过网关出入的数据包都会首先通过攻击节点,可能被嗅探、监听和恶意修改。
应用场景:交换式网络、构造中间人攻击、恶意代码。
工具:DSniff中的Arpspoof、arpison、Ettercap、Netwox。
防范措施:
静态绑定关键主机的IP地址和MAC地址映射关系
使用相应的ARP防范工具
使用虚拟子网细分网络拓扑
加密传输
3.ICMP路由重定向攻击
定义:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。ICMP报文分为两种类型:差错报告类(目的站不可达、数据报超时、数据包参数错误)、控制类报文(请求/应答类和通知类)。
原理:利用ICMP路由重定向报文改变主机路由表,向目标主机发送重定向消息,伪装成路由器,使得目标机器的数据报文发送至攻击机从而加强监听。
攻击步骤:
攻击节点利用IP源地址欺骗技术,冒充网关IP地址,向被攻击节点发送ICMP重定向报文,并将指定的新路由器IP地址设置为攻击节点。
被攻击节点收到报文后,进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新的路由器。
攻击节点可以可以开启路由转发,充当中间人,对被攻击节点的通信进行全程嗅探监听,达到ARP欺骗类似的攻击效果。
在转发过程中,根据ICMP路由重定向机制的设计原理,攻击节点协议栈可能会向攻击节点发送一个ICMP重定向报文,指定原先网关为新路由器,将欺骗路由路径还原至原先状态。
工具:Netwox
防范措施:
根据类型过滤一些ICMP数据包
设置防火墙过滤
对ICMP重定向报文判断是不是来自本地路由器的
传输层协议攻击及防范措施
1.TCP RST攻击
定义:TCP RST攻击也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。
原理:TCP协议头有一个reset,该标志位置为1,接收该数据包的主机即将断开这个TCP会话连接。tcp重置报文就是直接关闭掉一个TCP会话连接。
攻击步骤:
攻击主机C可以通过嗅探方式监视通信双方A、B之间的TCP连接。
在获得源、目标IP地址及端口、序列号之后,接可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方。
在确保端口号一致及序列号落入TCP造成通信双方正常网络通信的中断,达到拒绝服务的效果。
工具:Netwox
2.TCP会话劫持攻击
原理: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风暴。
防范措施:
禁用主机上的源路由
采用静态绑定IP-MAC映射表以及避免ARP欺骗
引用和过滤ICMP重定向报文
3.TCP SYN Flood拒绝服务攻击
原理:基于TCP三次握手的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而无法正常服务。
攻击步骤:
在TCP SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文。
受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,永远不会返回ACK报文,受害主机继续发送SYN+ACK包,当半开连接报文填满,服务器也就拒绝新的连接。
防范措施:
SYN-Cookie技术(在连接信息未完全到达前不进行资源的分配)。
防火墙地址状态监控技术(将到目标服务器的TCP连接状态分为NEW、GOOD、BAD)。
4.UDP Flood拒绝服务攻击
原理:通过向目标主机和网络发送大量UDP数据包,造成目标主机显著的计算负载提升,或者通过网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击。
防范措施:
禁用或过滤监控及响应服务。
禁用或过滤其他UDP服务。
2.实践过程
任务:在网络攻防实验环境中完成TCP/IP协议栈重点协议的攻击实验,包括ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击、TCP会话劫持攻击。
解决方法:首先这里需要三台机器,我选择的是Kali作为攻击机,其他两台机器作为正常通信的机器(Linux MetaSploitable和SEED Ubuntu)。
注意:三台机器必须在局域网内,给出三台电脑的IP和MAC地址如下(用ifconfig指令查看即可,请牢牢记住,后面所有的实践都是用这个环境)。
主机 | IP地址 | MAC地址 |
---|---|---|
kali | 192.168.200.3 | 00:0c:29:3e:4d:e0 |
SEEDUbuntu | 192.168.200.7 | 00:0c:29:c1:a7:c1 |
Metasploitable2 | 192.168.200.2 | 00:0c:29:c9:ce:fb |
ARP缓存欺骗攻击
利用Netwox进行IP源地址欺骗,目的是Kali能够监听SEED Ubuntu和MetaSploitable的通信。
首先让SEEDUbuntu与MetaSploitable2进行通信,用ping命令得到ARP缓存表(arp -a查看ARP缓存表)
接下来在在Kali上执行指令netwox 80 -e 00:0c:29:3e:4d:e0 -i 192.168.200.2,80是指netwox的80号工具,-e:攻击机kali的MAC地址,-i:MetaSploitable的IP地址,周期性发送应答,将对方靶机的MAC地址改为00:0c:29:3e:4d:e0(kali攻击机)
然后,回到SEEDUbuntu里arp -a查看我们冒充成功了没?可以看出冒充成功了!!
ICMP重定向攻击
首先,我们使用netwox的86号工具进行ICMP重定向攻击,在Kali攻击机上执行命令netwox 86 -f "host 192.168.200.7" -g 192.168.200.3 -i 192.168.200.1,这个命令是当嗅探到SEED的数据包时,以192.168.200.1的名义发送ICMP重定向报文,使192.168.200.3(Kali)成为其默认路由。
用wireshark查看它访问的过程,可以看到SEED靶机打开网页时的数据包,数据包已经被重定向到192.168.200.3
SYN Flood攻击
kali利用netwox的76号工具对靶机SEED Ubuntu的23号端口进行SYN Flood攻击netwox 76 -i 192.168.200.7 -p 23。
-此时,电脑在飞速运转。。。可以看到攻击机向靶机发送了大量的虚假ip发出的SYN连接请求,数据量相当大,这些虚假的连接请求没有MAC地址,无法溯源攻击者的真实身份。
TCP RST攻击
与TCP Flood攻击相似,只不过换了工具号为78,Kali上利用netwox的78号工具对靶机进行TCP RST攻击netwox 78 -i 192.168.200.7。
TCP会话劫持攻击
首先我们将SEED Ubuntu利用telnet 192.168.200.125登陆MetaSploitable。
在Kali上打开Wireshark设置过滤条件tcp.port == 23,然后在SEED Ubuntu中输入ls,回到Kali的Wireshark中查看,会发现有l和s的数据包。
还可以捕捉到登录密码和账号为:msfadmin,部分图如下
捕捉到源端口和目的端口,seq num,ack
有了这些值,接下来我们就可以伪造发下一个包,所以把Next Seq Num作为下一个包的ACK,采用ACK作为下一个包的Seq。获取到信息之后,攻击机使用netwox工具伪造SEED Ubuntu给MetaSploitable发一个tcp包。发送成功后,原来的SEED Ubuntu就会失去连接,同时MetaSploitable会把Kali当作访问者 ,如此实现了会话劫持
netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.7 --ip4-dst 192.168.200.2 --tcp-src 34490 --tcp-dst 23 --tcp-seqnum 125 --tcp-acknum 682 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "4c5852495343585a6073676f6f64626967736f6e"
第一个40是netwox的40号工具,在ip4-src后输入你的SEED Ubuntu地址,在ip4-dst后输入你的MetaSploitable地址,tcp-src表示原端口号(这个是变化的),tcp-seqnum和tcp-acknum输入刚才讲解的值,tcp-data是你要发的数据的16进制值,这里的是所要传输的“data”的16进制。同样的可以在Wireshark中观察到发送的值。
在wireshark可以捕捉到所发送的数据。
3.学习中遇到的问题
问题1:在 SYN Flood攻击时,有时候还是可以ping通MetaSploitable
解决:可能是电脑不太行,洪泛攻击量太小
问题2:会话挟持工具没用好,重新整理后的ack和seqnum
解决:仔细认真查找
4.实践总结
做这些实验真的需要耐心,总会遇到各种各样的坑,工具终归是工具,会用的同时理解基本原理还是更重要的,以后还是少做搬运工吧,尽力自己去弄明白每一步的原理。
5.参考资料
网络攻防实战 -- ARP 欺骗
icmp 重定向攻击
TCP 会话劫持原理和利用
netwox 网络工具集入门教程