《网络攻防实践》第五周作业
一、前言
- 这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/19attackdefense
- 这个作业的要求在哪里:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553
- 我在这个课程的目标是:学习网络攻防相关知识,提升专业技能
- 这个作业在哪个具体方面帮助我实现目标:学习TCP/IP网络协议攻击的原理和实践
二、知识点总结
1.网络协议攻击及其基本概念
学习网络安全、信息安全首先应当铭记心中的是五大安全属性:机密性,完整性,可用性、真实性和不可抵赖性。我们所有的攻击或者防守都是围绕这五大安全属性来展开的。那么作为攻击方来说,通常有以下几种攻击模式:
- 截获:以嗅探与监听技术为基础的被动攻击模式,获取网络通信双方的通信信息内容。
- 中断:以拒绝服务技术为基础的主动攻击模式,使网络通信和会话无法进行。
- 伪造:以欺骗为基础的主动攻击模式,假冒网络通信方的身份,欺骗通信对方达到恶意目的。
- 篡改:包括数据包篡改,中间人攻等技术的击主动攻击模式,网络通信工程的信息内容进行篡改,使得通信一方或双方接收到虚假消息。
但是作为一个攻击者,我们还缺少了安全缺陷,有了安全缺陷,我们才可以实施攻击。通常有以下几种TCP/IP网络协议栈安全缺陷与攻击技术:
- 网络接口层:以太网协议,当网络接口处于混杂模式可以直接嗅探并截获数据包,同时缺乏对MAC地址源的身份验证机制,实现MAC地址欺骗。
- 互联层:IP协议只根据目的地址进行转发,不检查源IP地址是否真实有效,即缺乏IP地址身份认证机制,容易遭到IP地址欺骗。同时还包括源路由滥用、IP分片攻击,以及ARP欺骗、ICMP重定向、Smurf攻击等。
- 传输层:TCP建立会话之后的连接过程中,非常容易遭受伪造和欺骗攻击,攻击者可以进行TCP RST攻击直接中断会话过程。同时TCP的三次握手过程存在设计缺陷,攻击者可以进行SYN泛洪攻击。
- 应用层:一些流行的应用层协议HTTP、FTP、POP3/SMTP、 DNS等均缺乏安全设计。
2.网络层协议攻击及防范措施
2.1 IP源地址欺骗攻击
原理:只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。
应用场景:拒绝服务攻击、网络扫描(nmap -D)
工具:Netwox、wireshark、nmap
攻击步骤如下:
- 对受信任的主机进行拒绝服务攻击
- 对目标主机的TCP初始序列号(ISN)进行取样和猜测
- 伪造源地址为受信任的主机IP的SYN数据包发送给主机
- 等待目标主机将SYN/ACK包发给已经瘫痪的受信任的主机
- 再次伪装成被信任的目标主机发送ACK包、建立连接。
防范措施如下: - 使用随机化的初试序列号
- 使用网络层安全传输协议
- 避免采用基于IP地址的信任策略
- 在路由器和网关上实施包过滤
2.2 ARP欺骗攻击
定义:ARP欺骗也称为ARP下毒,是指攻击者在有线或以太网上发送伪造的ARP信息,对特定IP所对应的的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
原理:ARP协议在设计时认为局域网内部的所有用户都是可信的,但是局域网内可以存在内部攻击者,或者已经渗透进局域网的外部攻击者或恶意代码。这使得ARP缓存非常容易被注入伪造的IP地址到MAC地址的映射关系。
应用场景:交换式网络、构造中间人攻击、恶意代码。
工具:DSniff中的Arpspoof、arpison、Ettercap、Netwox。
攻击步骤如下:
- 源节点A发送数据包给目的节点B时,会通过ARP协议在局域网段广播ARP请求包,询问节点B的IP地址所映射的MAC地址。
- 攻击节点C说IP目标IP地址所映射的MAC地址是他自己,并不断地向源节点发送ARP响应包。
- 由于攻击节点C不断地发送响应包,这样源节点上会强制以C发送响应包中的信息来更新ARP缓存。
- 当源节点A要再次发送数据包到节点B时,直接将数据包发送到C对应的MAC地址,即攻击节点C,这样C就通过欺骗假冒了目的节点B。
- 如果ARP欺骗攻击的是网关节点,将导致整个局域网所有节点经过网关出入的数据包都会首先通过攻击节点,可能被嗅探、监听和恶意修改。
防范措施如下: - 静态绑定关键主机的IP地址和MAC地址映射关系
- 使用相应的ARP防范工具
- 使用虚拟子网细分网络拓扑
- 加密传输
2.3 ICMP路由重定向攻击
定义:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。ICMP报文分为两种类型:差错报告类(目的站不可达、数据报超时、数据包参数错误)、控制类报文(请求/应答类和通知类)。
原理:利用ICMP路由重定向报文改变主机路由表,向目标主机发送重定向消息,伪装成路由器,使得目标机器的数据报文发送至攻击机从而加强监听。
工具:Netwox
攻击步骤如下:
- 攻击节点利用IP源地址欺骗技术,冒充网关IP地址,向被攻击节点发送ICMP重定向报文,并将指定的新路由器IP地址设置为攻击节点。
- 被攻击节点收到报文后,进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新的路由器。
- 攻击节点可以可以开启路由转发,充当中间人,对被攻击节点的通信进行全程嗅探监听,达到ARP欺骗类似的攻击效果。
- 在转发过程中,根据ICMP路由重定向机制的设计原理,攻击节点协议栈可能会向攻击节点发送一个ICMP重定向报文,指定原先网关为新路由器,将欺骗路由路径还原至原先状态。
防范措施如下: - 根据类型过滤一些ICMP数据包
- 设置防火墙过滤
- 对ICMP重定向报文判断是不是来自本地路由器的
3.网络层协议攻击及防范措施
3.1 TCP RST攻击
定义:TCP RST攻击也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。
原理:TCP协议头有一个reset,该标志位置为1,接收该数据包的主机即将断开这个TCP会话连接。tcp重置报文就是直接关闭掉一个TCP会话连接。
工具:Netwox
攻击步骤如下:
- 攻击主机C可以通过嗅探方式监视通信双方A、B之间的TCP连接。
- 在获得源、目标IP地址及端口、序列号之后,接可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方。
- 在确保端口号一致及序列号落入TCP造成通信双方正常网络通信的中断,达到拒绝服务的效果。
3.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.3 TCP SYN Flood拒绝服务攻击
原理:基于TCP三次握手的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而无法正常服务。
攻击步骤如下:
- 在TCP SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文。
- 受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
- 如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,永远不会返回ACK报文,受害主机继续发送SYN+ACK包,当半开连接报文填满,服务器也就拒绝新的连接。
防范措施如下: - SYN-Cookie技术(在连接信息未完全到达前不进行资源的分配)。
- 防火墙地址状态监控技术(将到目标服务器的TCP连接状态分为NEW、GOOD、BAD)。
3.4 UDP Flood拒绝服务攻击
原理:通过向目标主机和网络发送大量UDP数据包,造成目标主机显著的计算负载提升,或者通过网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击。
防范措施如下:
- 禁用或过滤监控及响应服务。
- 禁用或过滤其他UDP服务。
三、实验内容
任务一:ARP缓存欺骗攻击
下述实验使用Kali作为攻击机,MetaSploitable和SEED Ubuntu作为正常通信机器,首先需要保证三台机器在同一个子网下。下述是三台电脑的IP和MAC:
Kali 192.168.200.2 00:0c:29:e6:86:47
MetaSploitable 192.168.200.125 00:0c:29:b4:e5:9b
SEED Ubuntu 192.168.200.5 00:0c:29:95:bc:25
- 用SEED Ubuntu
ping
MetaSploitable,得到arp缓存表,并用arp -a
查看arp缓存表,如下图所示,MetaSploitable的IP地址和MAC地址是对应的。
- 在Kali上执行指令
netwox 80 -e 00:0c:29:e6:86:47 -i 192.168.200.125
。这条指令中,80是指netwox的80号工具,第一个为攻击机Kali放入MAC地址,第二个为MetaSploitable的IP地址,执行后就在局域网内广播这条命令。
- 验证实验,在Kali上我们用wireshark应该能抓到来自SEED Ubuntu和MetaSploitable通信的数据包。如下图所示:
任务二:ICMP重定向攻击
- 查看seedubuntu的路由表信息
2.在kali中输入命令netwox 86 -f "host 192.168.200.5" -g 192.168.200.2 -i 192.168.200.1
3.在SEED Ubuntu上打开Wireshark来查看数据流量,并在终端ping baidu.com
,我们发现其访问百度的数据包已经被重定向到192.168.200.2
任务三:SYN Flood攻击
- 使用SEED Ubuntu向MetaSploitable发起登陆
telnet 192.168.200.125
,输入用户名密码。
- 在Kali上利用netwox的76号工具对v的23号端口进行SYN Flood攻击
netwox 76 -i 192.168.200.125 -p 23
。
3.打开Wireshark查看,可以看到攻击机向靶机发送了大量的虚假ip发出的SYN连接请求,这些虚假的连接请求没有MAC地址,无法溯源攻击者的真实身份。
4.我们在SEED Ubuntu上进行访问也发现无法访问了
任务四:TCP RST攻击
- 使用SEED Ubuntu向MetaSploitable发起登陆
telnet 192.168.200.125
,输入用户名密码。
- 在Kali上利用netwox的78号工具对MetaSploitable进行TCP RST攻击
netwox 78 -i 192.168.200.125
。
3.同样我们发现在SEED Ubuntu上进行访问也发现无法访问了
任务五:TCP会话劫持攻击
- 使用SEED Ubuntu向MetaSploitable发起登陆
telnet 192.168.200.125
,输入用户名密码。 - 在Kali上打开Wireshark设置过滤条件
tcp.port == 23
,然后在SEED Ubuntu中输入任意指令,这里用ll
,回到Kali的Wireshark中查看,会发现有相应的数据包。
3.查看以下几个值,源端口、目的端口、Next Seq Num和ACK值。
4.在kali中使用指令netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.5 --ip4-dst 192.168.200.125 --tcp-src 45640 --tcp-dst 23 --tcp-seqnum 94 --tcp-acknum 1369 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "68656C6C6F776F726C64"
5.在wireshark上发现了Tcp Dup和Tcp Retransmission,说明劫持成功
四、学习中遇到的问题及解决
- 将MetaSploitable改成桥接网络一直无法实现,后来发现是当初手动设置ip的问题。解决方法是只需要保证三个机器在同一个子网下即可,无需改成桥接网络。
- TCP会话劫持攻击找包中ACK和Seq信息有所疑问,看了其他同学的博客们才找到正确的信息。
五、学习感想和体会
本次主要学习了网络协议攻击的相关技术手段,用到了wireshark等软件,通过wireshark对不同数据包进行分析。自我感觉对工具使用有所了解了,但原理部分还一知半解,需要进一步消化吸收,不能做纯工具党。尤其是这一章原理部分特别多,感觉自己参考同学博客做完很多地方也还没有彻底理解。
2020 年 3月 30日