20199118 2019-2020-2 《网络攻防实践》第五周作业
学号:20199118《网络攻防实践》第五周作业
1.知识点梳理与总结
在第四章的课程中学习了 TCP/IP网络协议攻击的重要内容:
① 网络协议攻击及其基本概念 |
网络安全五大安全属性:机密性,完整性,可用性、真实性和不可抵赖性。所有的攻击或者防守都是围绕这五大安全属性来展开的。
那么作为攻击方来说,通常有以下几种攻击模式:
- 截获:以嗅探与监听技术为基础的被动攻击模式,获取网络通信双方的通信信息内容。
- 中断:以拒绝服务技术为基础的主动攻击模式,使网络通信和会话无法进行。
- 伪造:以欺骗为基础的主动攻击模式,假冒网络通信方的身份,欺骗通信对方达到恶意目的。
- 篡改:包括数据包篡改,中间人攻等技术的击主动攻击模式,网络通信工程的信息内容进行篡改,使得通信一方或双方接收到虚假消息。
网络协议栈缺陷:
- 网络接口层:最常用的是以太网协议。此协议缺乏对MAC地址的验证,利用软件可以修改网卡的物理MAC地址。
- 互连层:最重要的协议就是大家熟知的ipv4、icmp、arp。对于ipv4来说,最大的缺陷是ipv4不对源地址的真实性进行验证;icmp可以能被滥用进行攻击,比如洪泛攻击; arp是用来匹配ip地址和mac地址,但是他却不对匹配来的地址进行验证。
- 传输层:主要是TCP和UDP。TCP建立会话之后非常容易遭受伪造和欺骗攻击,例如后面的实践的TCP RST。UDP作为一个简单无状态传输协议,针对攻击较少,流行的有UDP泛洪攻击。
- 应用层:应用层协议多种多样,且大多采用明文传输,存在被监听、欺骗、中间人攻击的风险。
②网络层协议攻击及防范措施 |
IP源地址欺骗攻击
- 原理:只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证
攻击步骤: - 对受信任的主机进行拒绝服务攻击
- 对目标主机的TCP初始序列号(ISN)进行取样和猜测
- 伪造源地址为受信任的主机IP的SYN数据包发送给主机
- 等待目标主机将SYN/ACK包发给已经瘫痪的受信任的主机
- 再次伪装成被信任的目标主机发送ACK包、建立连接。
- 应用场景:拒绝服务攻击、网络扫描(nmap -D)
- 工具:Netwox、wireshark、nmap
- 防范措施:
使用随机化的初试序列号
使用网络层安全传输协议
避免采用基于IP地址的信任策略
在路由器和网关上实施包过滤
IP源地址欺骗攻击
- 定义: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防范工具
使用虚拟子网细分网络拓扑
加密传输
ICMP路由重定向攻击
- 定义:攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。ICMP报文分为两种类型:差错报告类(目的站不可达、数据报超时、数据包参数错误)、控制类报文(请求/应答类和通知类)。
- 原理:利用ICMP路由重定向报文改变主机路由表,向目标主机发送重定向消息,伪装成路由器,使得目标机器的数据报文发送至攻击机从而加强监听。
攻击步骤: - 攻击节点利用IP源地址欺骗技术,冒充网关IP地址,向被攻击节点发送ICMP重定向报文,并将指定的新路由器IP地址设置为攻击节点。
- 被攻击节点收到报文后,进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新的路由器。
- 攻击节点可以可以开启路由转发,充当中间人,对被攻击节点的通信进行全程嗅探监听,达到ARP欺骗类似的攻击效果。
- 在转发过程中,根据ICMP路由重定向机制的设计原理,攻击节点协议栈可能会向攻击节点发送一个ICMP重定向报文,指定原先网关为新路由器,将欺骗路由路径还原至原先状态。
- 工具:Netwox
- 防范措施:
- 根据类型过滤一些ICMP数据包
- 设置防火墙过滤
- 对ICMP重定向报文判断是不是来自本地路由器的
③传输层协议攻击及防范措施 |
TCP RST攻击
- 定义:TCP RST攻击也被称为伪造TCP重置报文攻击,是指一种假冒干扰TCP通信连接的技术方法。
- 原理:TCP协议头有一个
reset
该标志位置为1,接收该数据包的主机即将断开这个TCP会话连接。tcp重置报文就是直接关闭掉一个TCP会话连接。 - 攻击步骤:
- 攻击主机C可以通过嗅探方式监视通信双方A、B之间的TCP连接。
- 在获得源、目标IP地址及端口、序列号之后,接可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方。
- 在确保端口号一致及序列号落入TCP造成通信双方正常网络通信的中断,达到拒绝服务的效果。
- 工具:Netwox
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重定向报文
TCP SYN Flood拒绝服务攻击
- 原理:基于TCP三次握手的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而无法正常服务。
攻击步骤: - 在TCP SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文。
- 受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
- 如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,永远不会返回ACK报文,受害主机继续发送SYN+ACK包,当半开连接报文填满,服务器也就拒绝新的连接。
防范措施: - SYN-Cookie技术(在连接信息未完全到达前不进行资源的分配)。
- 防火墙地址状态监控技术(将到目标服务器的TCP连接状态分为NEW、GOOD、BAD)。
UDP Flood拒绝服务攻击
- 原理:通过向目标主机和网络发送大量UDP数据包,造成目标主机显著的计算负载提升,或者通过网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击。
防范措施: - 禁用或过滤监控及响应服务。
- 禁用或过滤其他UDP服务。
2.实践过程
实践一完成TCP/IP协议栈重点攻击实验——ARP缓存欺骗攻击
- 本次实验需要用到hunt、netwox,所以运行命令
sudo apt-get install netwox
和apt-get install hunt
- Kali -Linux攻击机的IP地址为
192.168.237.129
MAC地址为00:0c:29:53:22:46
- MetaSploitable2—Linux 靶机 IP地址为
172.16.8.128
MAC地址为00:0c:29:62:83:9c
前者为攻击机Kali-Linux的MAC地址,第二个为MetaSploitable2—Linux 靶机的IP地址。 - 在Kali上执行指令
netwox 33 -b 00:0c:29:62:83:9c -g 172.16.8.130 -h 00:0c:29:62:83:9c -i 172.16.8.128
其中地址为MetaSploitable2—Linux 靶机的MAC地址,第一个IP地址为伪造后的IP地址,第二个IP地址为Kali-Linux的真实IP地址 - 使用命令
arp -a
查看靶机A中的arp缓存表
实践二完成TCP/IP协议栈重点攻击实验——ICMP重定向技术
- Kali -Linux攻击机的IP地址为
192.168.237.129
*SEED靶机 IP地址为192.168.237.128
- 靶机网关IP地址为
192.168.237.8
- 在Kali攻击机里输入命令
netwox 86 -f "host 192.168.237.128" -g 192.168.237.129 -i 192.168.237.8
- ping的过程,我们发现其访问百度的数据包已经被重定向到
192.168.237.8
实践三完成TCP/IP协议栈重点攻击实验——SYN Flood攻击
- 在Kali攻击机中利用netwox的76号工具对靶机SEED Ubuntu的23号端口进行SYN Flood攻击
netwox 76 -i 192.168.237.128 -p 23
- 攻击机向靶机发送了大量的虚假ip发出的SYN连接请求,这些虚假的连接请求没有MAC地址,无法溯源攻击者的真实身份。
实践四完成TCP/IP协议栈重点攻击实验——TCP RST攻击
- 在Kali攻击机中利用netwox的78号工具对靶机SEED Ubuntu的23号端口进行SYN Flood攻击
netwox 78 -i 192.168.237.128
实践五完成TCP/IP协议栈重点攻击实验——TCP会话劫持攻击
- SEED Ubuntu IP地址为
192.168.237.128
MetaSploitable靶机的IP地址为192.168.31.25
- 首先我们将SEED Ubuntu攻击机利用
telnet 192.168.31.25
登陆MetaSploitable靶机。 - 在Kali上打开Wireshark设置过滤条件tcp.port == 23,然后在SEED Ubuntu中输入ls,回到Kali的Wireshark中查看,会发现有l和s的数据包。
- 接下来我们就可以伪造发下一个包,所以把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.237.128 --ip4-dst 192.168.31.25 --tcp-src 48974 --tcp-dst 23 --tcp-seqnum 160 --tcp-acknum 732 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "6368656e6a69616e7975616e"
- 第一个40是netwox的40号工具,在ip4-src后输入你的SEED Ubuntu地址,在ip4-dst后输入你的MetaSploitable地址,tcp-src表示原端口号(这个是变化的),tcp-seqnum和tcp-acknum输入刚才讲解的值,tcp-data是你要发的数据的16进制值数
6368656e6a69616e7975616e
(这里的是我的名字chenjianyuan
的16进制) 同样的可以在Wireshark中观察到发送的值。
- 打开Wireshark,观察到TCP DUP报文,表示劫持成功
3.学习中遇到的问题及解决
- 问题①:Kali执行
netwox 33 -b 00:0c:29:62:83:9c -g 172.16.8.130 -h 00:0c:29:62:83:9c -i 172.16.8.128
时出现错误。 - 问题①的解决方案:重新审视命令的语法格式,校对了IP及MAC地址
4.学习感悟、思考等
- 加深了对网络攻防技术的认识,理论与实践相结合,提高了自己对使用TCP/IP网络协议攻击的能力。
- 培养了实践学习的能力,对网络攻防的实际运用产生了极大的兴趣。
参考资料
- 《网络攻防技术与实践》诸葛建伟 著
- 《TCP会话劫持原理和利用》
- 《解建国同学博客》
- 《窦山雀同学博客》