这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
我在这个课程的目标是 | |
这个作业在哪个具体方面帮助我实现目标 | 对网络攻击形式有全面了解 |
作业正文 | 一、实验内容、 二、实践过程、三、学习中遇到的问题及解决 、四、实践总结 |
其他参考文献 | 见正文最后部分 |
一、实验内容
1. TCP/IP网络协议栈攻击概述
1.1 网络安全属性与攻击模式
DEF:
-
网络安全: 是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的愿意而遭到破坏、更改、泄露。系统连续可靠正常执行,网络服务不被中断。
-
网络安全属性:
- 机密性(Confidentiality): 是指网络中的信息不被非授权实体获取和使用,通常基于加密算法进行保障。
- 完整性(Integrity): 是指信息未经授权不能进行改变的特性,即当需要时能够正常的存取或访问所需的信息与服务。
- 可用性(Availability): 是指授权实体访问并按需求使用的特性,即当需要时能够正常的存取或访问所需的信息与服务。
- 真实性(Authentication): 是指确保通信双方是它所声称的真实实体,而非假冒实体。
- 不可抵赖性(Non-Repudiation): 是指在通信中确保任何乙方无法抵赖自己曾经做过的操作的安全特性,包括对自己行为的不可抵赖及对行为发生时间的不可抵赖,有时也被称为不可否认性和可审查性(Accountability)。
机密性,可用性,完整性构成了网络安全的三个基本属性,也被国外学者称为安全金三角模型(CIA)。但CIA模型并不能涵盖网络安全所面临的更多问题,国际电信联盟(ITU)在X.800安全体系标准中还定义了真实性和不可抵赖性。
-
网络攻击基本模式:在网络通信中,攻击者可以采取四种基本的攻击模式,包括截获、中断、篡改与伪造。
中间人攻击(Man-in-the-MiddleAttack,MITM):
攻击者通过各种技术手段,与通信双方建立起各自独立的会话连接,并进行消息的双向转发,使他们误认为是通过一个私有的信道在直接通信,而实际上整个会话都是由攻击者所截获和控制的。
危害:
对通信信息的企鹅去、传递篡改后的虚假信息、假冒身份是是恶意操作等。
由于较难被通信双方发现,此方式已经早就成为攻击者常用的一种攻击方式,正在对电子商务、电子金融以及网络娱乐等网络应用造成严重威胁。
1.2 TCP/IP网络协议栈安全缺陷与攻击技术
TCP/IP网络协议栈在设计时采用了分层模型,分为了网络接口层、互联层、传输层与应用层,每一层负责不同的功能,各自具有相应网络协议。在每个层次上的网络协议都存在着一定的安全问题或设计缺陷,目前也已经出现相应的攻击技术。
- 网络层协议攻击
2.1 IP源地址欺骗(IP Spoofing)
DEF: 指攻击者伪造具有虚假源地址的IP数据包进行发送,以达到隐藏发送者身份、假冒其他计算机的目的。
原理: IP协议在设计时只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。比如:邮局寄送平信,按照信封格式是需要寄信人填写寄信地址,但邮局转发与投递信件时,只会查看收信人的地址,而不会去验证寄信地址的真实性,只要收信人地址正确无误并贴了邮票,信件就会被送达。
IP源地址欺骗示意图
利用IP源地址欺骗进行IP假冒的攻击步骤:
- 对受信任主机进行拒绝服务攻击,使其丧失工作能力,避免其在接受到响应包后影响欺骗过程。
- 对目标主机的TCP初始序列号(ISN)进行取样与猜测,ISN是指目标主机在接受SYN报文后,返回SYNACK报文中的SEQ值,攻击主机只有在随后进一步伪造的ACK报文中,将ACK值正确得设置为目标主机的ISN+1,才能够通过目标主机的验证,真正建立起连接,达到欺骗效果。
- 伪造源地址为受信任主机IP的SYN数据包,发送给目标主机。
- 等待目标主机将SYN/ACK包发送给已瘫痪的受信任主机。
- 再次伪装成被信任主机向目标主机发送ACK包,设置发送数据包的ACK值为预测目标主机ISN+1,可以通过发送大量不同ACK值的数据包以提高命中的可能性。
- 连接建立,假冒被信任主机与目标主机通信。
利用IP源地址欺骗进行IP假冒的攻击过程示意图:
防范措施:
- 使用随机化的ISN,使得远程攻击者无法猜测到通过源地址欺骗伪装建立TCO连接所需要的序列号,降低被源地址欺骗的风险。
- 使用网络层安全传输协议如IPsec,对传输数据包进行加密,避免泄露高层协议可供利用的信息及传输内容;
- 避免采用基于IP地址的信任策略,以基于加密算法的用户身份认证机制来替代这些访问控制策略;
- 在路由器和网关上实施包过滤是对抗IP源地址欺骗的一种主要技术,局域网网关上应启动入站过滤机制(ingress
filtering),阻断来自外部网络但源IP地址却属于内部网络的数据包,这项机制能够防止外部攻击者假冒内部主机的IP地址。理想情况下,网关也应执行出站过滤机制(egress
filtering),阻断来自内部网络但源IP地址却不属于内部网络的数据包,这可以防止网络内部攻击者通过IP源地址欺骗技术攻击外部主机。
2.2 ARP欺骗
DEF:
有时候也被称为ARP下毒(ARP
Poisoning),是指攻击者在有线以太网或无线网络上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
ARP协议工作原理:
ARP协议用于将网络主机的IP地址解析成其MAC地址,然后在局域网内通过MAC地址进行通信。ARP协议的基本功能就是对目标IP地址查询它的MAC地址,以便把数据包发送到目标主机。
ARP 协议完成IP地址到MAC地址映射的过程步骤:
- 每台主机设备上都拥有一个ARP缓存(ARP
Cache),根据以往在网络中与其他主机的通信,在ARP缓存中维护着已访问网络主机的IP地址和
MAC地址的映射关系; - 当一台主机需要将数据包发送到目标主机时,首先会检查自己的
ARP缓存中是否存在目标主机IP地址所对应的MAC地址。如果有,则直接将数据包发送到这个MAC地址;如果没有,就向本地局域网段发送一个
ARP 请求广播包,查询目标主机IP 地址所对应的MAC地址; - 本地局域网段中所有主机在收到这个 ARP
请求包之后,会检查数据包中的目标IP
地址是否与自己的IP地址一致,如果不相同就忽略此数据包;如果相同,该节点首先将源
端IP地址和MAC地址的映射关系添加到自己的ARP缓存中,如果发现ARP缓存中已经存在该IP地址的记录项,则将其覆盖,然后给源节点发送一个
ARP响应数据包, 告诉对方自己是它所查找的MAC地址节点; - 源节点在收到这个 ARP 响应数据包后,将得到的目标主机IP地址和MAC
地址对 的映射表项添加到自己的
ARP缓存中,并利用此信息开始数据包的传输,如果源节点一自 没有收到ARP
响应数据包,则表示ARP 查询失败。
ARP欺骗攻击技术原理:
ARP协议在进行IP地址到MAC地址映射查询时存在安全缺陷,
- 一方面采用了广播请求包方式在局域网段中询间映射关系,
但没有对响应结果进行真实性验证的技术流程与方法。 - 另一方面ARP协议为提高效率,
设计了ARP缓存机制,以及会将主动的ARP应答视作有效信息进行接受,这使得
ARP缓存非常容易被注入伪造的IP地址到MAC地址的映射关系,从而进行欺骗。
防范措施:
- 静态绑定关键主机的IP地址与MAC地址映射关系;
- 使用相应的ARP防范工具;
- 使用VLAN虚拟子网细分网络拓扑并加密传输数据以降低ARP欺骗攻击的危害后果等。
2.3 ICMP路由重定向攻击
DEF:
指攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。
ICMP报文类型:
-
差错报告类
- 目的站不可达
- 数据报超时
- 数据报参数错误
-
控制类
- 请求/应答类
- 回送请求/应答
- 地址掩码请求/应答
- 路由器恳求/通告
- 时间戳请求/应答
- 通知类
- 源站抑制
- 重定向
- 请求/应答类
ICMP重定向攻击技术:
利用ICMP路由重定向报文来改变主机的路由表,向目标机器发送重定向消息,自己则可以伪装成为路由器,使目标机器的数据报发送至攻击机从而加强监听。
步骤:
- 攻击节点利用IP 源地址欺骗技术,冒充网关IP地址,向被攻击节点发送ICMP
重定向报文,并将指定的新路由器IP地址设置为攻击节点; - 被攻击节点在接收到该报文后,会进行限制条件检查,由于该报文并不违背限制条件,因此将被接收,被攻击节点选择攻击节点作为其新路由器(即网关);
- 攻击节点可以开启路由转发,充当一个中间人,对被攻击节点与外部网络的通信进行全程嗅探监听,达到与ARP欺骗类似的攻击效果;
- 在转发过程中,根据
ICMP路由重定向机制的设计原理,由于从被攻击节点到外部网络存在更优的路由路径,即直接通过原先的网关进行路由较重定向后的路由路径少一跳,因此攻击节点协议栈可能会向被攻击节点发送一个ICMP重定向报文,指定原先网关作为新路由器,这个报文将使欺骗路由去路径还原至原先正常状态。
防范措施:
根据类型设置过滤一些ICMP过滤包,设置防火墙过滤,对于ICMP重定向报文判断是不是来自本地路由等
3. 传输层协议攻击
3.1 TCP RST攻击
DEF:
也被称为伪造TCP重置报文攻击(Spoofed TCP reset
packet),是指一种假冒干扰TCP通信连接的技术方法。
原理:
TCP协议头的标志位中拥有一个“reset”比特位,绝大部分数据包中该标志位都置为0,而一旦该标志位值为1,则接受该数据包的主机将立即断开这个TCP会话连接,不再利用该连接进行数据包发送和接受,简单的书,TCP重置报文将直接关闭一个TCP会话连接。
TCP重置报文的设计是为了避免在发生一些特殊情况时TCP会话仍继续传输无效数据。
示例:
如图所示,TCP
RST攻击中,攻击主机C可以通过嗅探的方式监视通信双方A、B之间的TCP连接,在获得源、目标IP地址及端口,以及序列号之后,就可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信乙方,在确保端口号一致以及序列号落入TCP窗口之内的情况下,即可直接关闭这个TCP连接,造成通信双方正常网络通信的中断,达到拒绝服务的效果。
3.2 TCP会话劫持攻击
DEF:
是一项更为复杂的TCP协议攻击技术方法,其目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行通信。
步骤:
- Victim主机与telnet服务器进行连接,并通过身份认证建立起会话;
- telnet服务器将会向Victim发送响应包,并包含服务器当前序列号(记为SVR_SEQ),以及期望客户端发送的下一个序列号(记为SVR_ACK);
- 攻击者通过ARP欺骗实施中间人攻击,可以嗅探获得Victim和telnet服务期间的通信内容,然后就假冒Victim的IP地址及身份,向telnet服务器发送数据包,宣称自己就是ViCTIM。如此,攻击者就劫持了Victim与telnet服务期间的会话,并以Victim已经验证的身份执行任意命令;
- Victim 仍然会继续维持与 telnet 服务器之间的连接会话,但由于与telnet
服务器之间的ACK 值互相不再匹配产出“ACK风暴”(ACK Storm),
即在攻击机注入数据包后,客户端在接收到服务器的响应包后,将会发现ACK值不正确,并向服务器发回含有它所期望ACK值的
ACK 包,期望重新建立起同步状态,而服务器收到Victim的ACK
包后,也会发现它并不符合它的接收条件,因此它再次返回了一个ACK包,这样就构成了死循环,在网络上来回发送ACK,
直到其中一个ACK由于网络拥塞或其他原因丢失为止。
防范措施:
禁用主机上的源路由,采用静态绑定IP-MAC映射表以避免ARP欺骗,引用和过滤ICMP重定向报文等。
3.3 TCP SYN Flood拒绝服务攻击
DEF:
目前比较有效而又非常难于防御的一种网络攻击方式,它的目的就是使服务器不能够为正常访问的用户提供服务。
TCP SYN
Flood:
又称为SYN洪泛攻击,它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
防范措施:SYN-Cookie技术和防火墙地址状态监控技术。
3.4 UDP Flood拒绝服务攻击
基本原理:
通过向目标主机和网络发送大量的UDP数据包,造成目标主机显著的计算负载提升,或者目标主机网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击。
防范措施:禁用或过滤监控和响应服务;禁用或过滤其他的UDP服务等。
二、实践过程
下边的表格是这次实验用到的虚拟机,kali作为攻击机,metas linux作为靶机,seed作为被劫持的用户,metas linux的账号和密码都是msfadmin,这次实验要求三台机子处于同一个局域网内。我把他们都设置成VMNET8 NAT了。
ARP缓存欺骗攻击
原理说明:这个攻击的目的就是攻击机向局域网内发送广播,将靶机的ip地址与攻击机的mac地址形成映射关系,使得seed在访问metas的时候,会变成访问kali。下面是操作步骤。
1.用seed ping metas,先建立arp缓存表,然后arp -a查看一下缓存表,如下图所示。
2.在kali上执行下边代码
sudo netwox 80 -e 00:0c:29:1e:5f:b5 -i 192.168.200.125 //80代表netwox的第80个工具,-e代表要改的mac地址,-i代表要修改的ip地址
执行后kali就会在局域网内广播这条命令,让局域网内主机修改自己的arp缓存表。
可以看到seed的arp修改了
ICMP重定向攻击
攻击原理:这个攻击是通过修改被劫持主机的路由表来实现劫持主机向外发送数据包时,会经过攻击机节点。下面说一下操作步骤。
1.查看seed的路由表信息
netstat -rn
2.在kali上输入如下命令
sudo netwox 86 -f "host 192.168.200.4" -g 192.168.200.2 -i 192.168.200.1
3.在seed上ping 192.168.200.125,发现其访问靶机的数据包被重定向到kali上了。
SYN FLOOD攻击
攻击原理:通过伪造大量的源ip地址向靶机发送TCP SYN包,使得靶机无法响应别的机器的访问。
1.用seed上的telnet访问靶机,输入如下命令,并输入用户名和密码,均为msfadmin
telnet 192.168.200.125
2.在kali上利用netwox的76号工具对靶机的23号端口进行SYN FLOOD攻击
sudo netwox 76 -i 192.168.200.125 -p 23
3.在kali上打开wireshark可以看到有大量伪造ip向靶机发送SYN连接请求
4.在seed上尝试使用telnet访问靶机,发现访问不了,说明靶机的该端口瘫痪了
TCP RST攻击
攻击原理:这个攻击类似上边的SYN FLOOD攻击
1.在kali上用netwox的78号工具对靶机进行TCP RST攻击
sudo netwox 78 -i 192.168.200.125
2.使用seed访问靶机,发现无法访问
TCP会话劫持攻击
攻击原理:攻击机监听劫持机的会话,然后顺着TCP的SEQ和ACK值向靶机发送伪造数据包。以此达到会话劫持的目的。
1.使用seed登录靶机。telnet靶机ip。打开kali的wireshark,监听。
2.在Linux靶机上随便输入个命令,我输入了ls,然后用kali的wireshark查看监听的数据包,发现了如下两个包的数据,一个是l,一个是s
3.查看Data是s的数据包的tcp报文,可以看到net seq和ack,源端口,目的端口。
4.在kali中输入下面指令
sudo 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 48982 --tcp-dst 23 --tcp-seqnum 6 --tcp-acknum 8 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "68656C6C6F776F726C64" //68656C6C6F776F726C64代表helloword的ascii码
5.在wireshark中发现劫持成功了。
三、学习中遇到的问题及解决
- 问题1:error libnet_init(): UID or EUID of 0 required
- 问题1解决方案:加上sudo执行程序,ok!
四、实践总结
此次实践内容丰富,几乎涵盖了所有常见的网络攻击,收获颇多。