好家伙,服务器就已经没有这样的连接了,IP

日期:2021-03-07 23:02:57 来源:互联网 编辑 : 小狐 阅读人数:25

内容经授权发布这一篇主要和大家一起学习回顾关于 TCP/IP的常见攻击,至少有一个基本的认识前言前言1 IP欺骗IP是什么IP头部格式IP头部格式IP欺骗技术骗呗,拐骗,诱骗!假设现在有一个合法用户

好家伙,服务器就已经没有这样的连接了,IP(图1)

内容经授权发布

这一篇主要和大家一起学习回顾关于 TCP/IP的常见攻击,至少有一个基本的认识

前言

好家伙,服务器就已经没有这样的连接了,IP(图2)

前言

1 IP欺骗

IP是什么

IP头部格式

好家伙,服务器就已经没有这样的连接了,IP(图3)

IP头部格式

IP欺骗技术

骗呗,拐骗,诱骗!

假设现在有一个合法用户 (1.1.1.1)已经同建立正常的连接,攻击者构造攻击的 TCP 数据,伪装自己的 IP 为 ,并向发送一个带有 RSI 位的 TCP 数据段。接收到这样的数据后,认为从 发送的连接有错误,就会清空缓冲区中建立好的连接。

2 SYN Flooding

SYN Flooding简介

拒绝服务攻击(DDoS)从1970 年出现直到今天都依然在作祟,并给全球范围内的各大组织带来了不可估量的损失。 SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于 1999 年左右,雅虎是当时最著名的受害者。 SYN Flood攻击利用了 TCP三次握手的缺陷,能够以较小代价使目标无法响应,且难以追查。

SYN flood是一种常见的 DOS(denial of service拒绝服务)和 DDos(distributed denial of serivce 分布式拒绝服务)攻击方式。这是一种使用TCP协议缺陷,发送大量的 伪造的 TCP 连接请求,使得被攻击方 CPU 或内存资源耗尽,最终导致被攻击方无法正常的服务。

TCP SYN Flood攻击原理

TCP SYN Flood攻击利用的是 TCP的三次握手( SYN -> SYN/ACK -> ACK)假设连接发起方是A,连接接受方是 B,即 B 在某个端口( Port)上监听A发出的连接请求,过程如下图所示,左边是A,右边是B。

好家伙,服务器就已经没有这样的连接了,IP(图4)

A 首先发送 SYN(Synchronization)给 B,要求 B 做好接收数据的准备;B 收到后反馈 SYN-ACK(Synchronization-Acknowledgement) 给A,这个的目的有两个:

向 A 确认已做好接收数据的准备。

同时要求 A 也做好接收数据的准备,此时 B 已向 A 确认好接收状态,并等待 A 的确认,连接处于 半开状态(Half-Open) ,顾名思义只开了一半;A 收到后再次发送 ACK (Acknowledgement) 给B,向 B 确认也做好了接收数据的准备,至此三次握手完成, 连接 就建立了。

大家注意到没有,最关键的一点在于双方是否都按对方的要求进入了 可以接收的状态。而这个状态的确认主要是双方将要使用的 序号(SquenceNum) TCP为保证按发送顺序抵达接收方的上层应用,需要用 序号来标记的发送先后顺序的。

TCP双工(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送,其中 SYNSYN-ACK开启了A→B的单向通信通道(B 获知了 A 的序号) SYN-ACKACK开启了B→A单向通信通道(A获知了B的序号)

上面讨论的是双方在诚实守信,正常情况下的通信。

但实际情况是,网络可能不稳定会丢包,使握手不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认。

假设 B 通过某 TCP端口服务,B 在收到 A 的 SYN时,积极的反馈了 SYN-ACK,使连接进入 半开状态,因为 B 不确定自己发给 A 的 SYN-ACK或 A 反馈的 ACK 是否会丢在半路,所以会给每个待完成的半开连接都设一个 Timer,如果超过时间还没有收到 A 的 ACK,则重新发送一次 SYN-ACK给A,直到重试超过一定次数时才会放弃。

好家伙,服务器就已经没有这样的连接了,IP(图5)

B 为帮助 A 能顺利连接,需要 分配内核资源维护半开连接,那么当 B 面临海量的连接 A 时,如上图所示, SYN Flood攻击就形成了。攻击方 A 可以控制肉鸡向 B 发送大量 SYN 但不响应 ACK ,或者干脆伪造 SYN 中的 Source IP,使 B 反馈的 SYN-ACK石沉大海,导致 B 被大量注定不能完成的半开连接占据,直到资源耗尽,停止响应正常的连接请求。

3 UDP Flooding

UDP洪泛是也是一种拒绝服务攻击,将大量的用户数据报协议( UDP)数据包发送到目标,目的是压倒该设备的处理和响应能力。防火墙保护目标也可能因 UDP泛滥而耗尽,从而导致对合法流量的拒绝服务。

UDP Flood攻击如何工作?

UDP Flood主要通过利用响应发送到其中一个端口的 UDP数据包所采取的步骤。在正常情况下,当在特定端口接收到 UDP数据包时,会经过两个步骤:

首先检查是否正在运行正在侦听指定端口的请求的程序。

如果没有程序在该端口接收数据包,则使用 ICMP (ping)数据包进行响应,以发送方目的地不可达。

首先,接待员接收到呼叫者要求连接到特定房间的电话。接待员需要查看所有房间的清单,以确保客人在房间中可用,并愿意接听电话。碰巧的是,此时如果突然间所有的电话线同时亮起来,那么他们就会很快就变得不堪重负了。

由于目标利用资源检查并响应每个接收到的 UDP数据包的结果,当接收到大量 UDP数据包时,目标的资源可能会迅速耗尽,导致对正常流量的拒绝服务。

好家伙,服务器就已经没有这样的连接了,IP(图6)

如何缓解 UDP洪水攻击?

大多数操作部分限制了 ICMP报文的响应速率,以中断需要 ICMP 响应的 DDoS攻击。这种缓解的一个缺点是在攻击过程中,合法的数据包也可能被过滤。如果 UDP Flood的容量足够高以使目标的防火墙的状态表饱和,则在级别发生的任何缓解都将不足以应对目标设备上游的瓶颈。

4 TCP 重置攻击

TCP重置攻击中,攻击者通过向通信的一方或双方发送伪造的,告诉它们立即断开连接,从而使通信双方连接中断。正常情况下,如果客户端收发现到达的报文段对于相关连接而言是不正确的, TCP就会发送一个重置报文段,从而导致 TCP连接的快速拆卸。

TCP重置攻击利用这一机制,通过向通信方发送伪造的重置报文段,欺骗通信双方提前关闭 TCP 连接。如果伪造的重置报文段完全逼真,接收者就会认为它有效,并关闭 TCP连接,防止连接被用来进一步交换信息。服务端可以创建一个新的 TCP连接来恢复通信,但仍然可能会被攻击者重置连接。万幸的是,攻击者需要一定的时间来组装和发送伪造的报文,所以一般情况下这种攻击只对长连接有杀伤力,对于短连接而言,你还没攻击呢,人家已经完成了信息交换。

从某种意义上来说,伪造 TCP报文段是很容易的,因为 TCP/IP都没有任何内置的方法来验证服务端的身份。有些特殊的 IP 扩展协议(例如 IPSec )确实可以验证身份,但并没有被广泛使用。客户端只能接收报文段,并在可能的情况下使用更高级别的协议(如 TLS )来验证服务端的身份。但这个方法对 TCP重置包并不适用,因为 TCP重置包是 TCP协议本身的一部分,无法使用更高级别的协议进行验证。

5. 模拟攻击

以下实验是在 OSX 中完成的,其他请自行。

现在来总结一下伪造一个 TCP重置报文要做哪些事情:

嗅探通信双方的交换信息。

截获一个 ACK 标志位置位 1 的报文段,并读取其 ACK 号。

伪造一个 TCP 重置报文段( RST 标志位置为 1)其序列号等于上面截获的报文的 ACK 号。这只是理想情况下的方案,假设信息交换的速度不是很快。大多数情况下为了增加成功率,可以连续发送序列号不同的重置报文。

将伪造的重置报文发送给通信的一方或双方,时其中断连接。

为了实验简单,我们可以使用本地计算机通过 localhost 与自己通信,对自己进行 TCP 重置攻击。需要以下几个步骤:

在两个终端之间建立一个 TCP 连接。

编写一个能嗅探通信双方数据的攻击程序。

修改攻击程序,伪造并发送重置报文。

下面正式开始实验。

建立 TCP 连接

可以使用 netcat 工具来建立 TCP 连接,这个工很多操作都预装了。打开第一个终端窗口,运行以下命令:

这个命令会启动一个 TCP 服务,监听端口为 8000 。接着再打开第二个终端窗口,运行以下命令:

该命令会尝试与上面的服务建立连接,在其中一个窗口输入一些字符,就会通过 TCP 连接发送给另一个窗口并打印出来。

嗅探流量

编写一个攻击程序,使用 Python 网络库 scapy 来读取两个终端窗口之间交换的数据,并将其打印到终端上。代码比较长,下面为一部份,完整代码后台回复 TCP攻击,代码的核心是调用 scapy 的嗅探方法:

好家伙,服务器就已经没有这样的连接了,IP(图7)

这段代码告诉 scapy 在 lo0 网络接口上嗅探数据包,并记录所有 TCP 连接的详细信息。

iface : 告诉 scapy 在 lo0 (localhost)网络接口上进行监听。

lfilter : 这是个过滤器,告诉 scapy 忽略所有不属于指定的 TCP 连接(通信双方皆为 localhost ,且端口号为 8000 )的数据包。

prn : scapy 通过这个函数来操作所有符合 lfilter 规则的数据包。上面的例子只是将数据包打印到终端,下文将会修改函数来伪造重置报文。

count : scapy 函数返回之前需要嗅探的数据包数量。

发送伪造的重置报文

下面开始修改程序,发送伪造的 TCP 重置报文来进行 TCP 重置攻击。根据上面的解读,只需要修改 prn 函数就行了,让其检查数据包,提取必要参数,并利用这些参数来伪造 TCP 重置报文并发送。

例如,假设该程序截获了一个从( src_ip , src_port )发往 ( dst_ip , dst_port )的报文段,该报文段的 ACK 标志位已置为 1,ACK 号为 100,000 。攻击程序接下来要做的是:

由于伪造的数据包是对截获的数据包的响应,所以伪造数据包的源 IP/Port 应该是截获数据包的目的 IP/Port ,反之亦然。

将伪造数据包的 RST 标志位置为 1,以表示这是一个重置报文。

将伪造数据包的序列号设置为截获数据包的 ACK 号,因为这是发送方期望收到的下一个序列号。

调用 scapy 的 send 方法,将伪造的数据包发送给截获数据包的发送方。

对于我的程序而言,只需将这一行取消注释,并注释这一行的上面一行,就可以全面攻击了。按照步骤 1 的方法设置 TCP 连接,打开第三个窗口运行攻击程序,在 TCP 连接的其中一个终端输入一些字符串,你会发现 TCP 连接被中断了!

进一步实验

可以继续使用攻击程序进行实验,将伪造数据包的序列号加减 1 看看会发生什么,是不是确实需要和截获数据包的 ACK 号完全相同。

打开 Wireshark ,监听 lo0 网络接口,并使用过滤器 ip.src == 127.0.0.1 && ip.dst == 127.0.0.1 && tcp.port == 8000 来过滤无关数据。你可以看到 TCP 连接的所有细节。

在连接上更快速地发送数据流,使攻击更难执行。

6 中间人攻击

猪八戒要向小蓝表白,于是写了一封信给小蓝,结果第三者小黑拦截到了这封信,把这封信进行了篡改,于是乎在他们之间进行搞行动。这个马文才就是中间人,实施的就是中间人攻击。好我们继续聊聊什么是中间人攻击。

什么是中间人

攻击中间人攻击英文名叫 Man-in-the-MiddleAttack,简称MITM攻击。指攻击者与通讯的两端分别创建独立的,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方 直接对话,但事实上整个会话都被攻击者完全控制。我们画一张图:

好家伙,服务器就已经没有这样的连接了,IP(图8)

中间人

从这张图可以看到,中间人其实就是攻击者。通过这种原理,有很多实现的用途,比如说,你在手机上浏览不健康网站的时候,手机就会提示你,此网站可能含有病毒,是否继续访问还是做其他的操作等等。

中间人攻击的原理

举个例子,我和公司签了一个一份劳动合同,一人一份合同。不晓得哪个可能改了合同内容,不知道真假了,怎么搞?只好找专业的机构来鉴定,自然就要花钱。

在安全领域有句话: 我们没有办法杜绝网络犯罪,只好想办法提高网络犯罪的成本。既然没法杜绝这种情况,那我们就想办法提高作案的成本,今天我们就简单了解下基本的网络安全知识,也是面试中的高频面试题了。

如果第三方机构内部不严格或容易出现纰漏

有哪些常用的摘要算法呢

所以在大部分的情况下都会选择SHA算法

出现内鬼了怎么办?

看似很安全的场面了,理论上来说杜绝了篡改合同的做法。主要某个员工同时具有修改合同和摘要的权利,那搞事儿就是时间的问题了,毕竟没哪个可以完全的杜绝员工接触敏感信息,除非敏感信息都不存在。所以能不能考虑将合同和摘要分开存储呢

那如何确保员工不会修改合同呢

这确实蛮难的,不过办法总比困难多。我们将合同放在双方手中,摘要放在第三方机构,篡改难度进一步加大

那么员工万一和某个用户串通好了呢

看来放在第三方的机构还是不好使,同样存在不小风险。所以还需要寻找新的方案,这就出现了数字签名和证书

数字证书和签名

好家伙,服务器就已经没有这样的连接了,IP(图9)

总之,公钥加密的数据只能私钥可以解密。私钥加密的数据只有公钥可以解密,这就是非对称加密

对称与非对称加密

隐私保护?不是吓唬大家,信息是透明的兄die,不过尽量去维护个人的隐私吧,今天学习对称加密和非对称加密。

大家先读读这个字“钥”是读“yao”我以前也是,其实读“yue”

对称加密

好家伙,服务器就已经没有这样的连接了,IP(图10)

常见的对称加密算法

DES

DES使用的密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此, DES的有效密钥长度为56位,通常称 DES的密钥长度为56位。假设秘钥为 56 位,采用暴力破Jie的方式,其秘钥个数为2的56次方,那么每纳秒执行一次解密所需要的时间差不多1年的样子。当然,没人这么干。 DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。

好家伙,服务器就已经没有这样的连接了,IP(图11)

IDEA

国际数据加密算法(International Data Encryption Algorithm)秘钥长度128位,优点没有专利的限制。

AES

当DES被破解以后,没过多久推出了 AES算法,了三种长度供选择,128 位、192 位和 256,为了保证性能不受太大的影响,选择128即可。

之前几种都是国外的,我们国内自行研究了国密 **SM1 **和 。其中S都属于国家标准,算法公开。优点就是国家的大力支持和认可

总结下几种

好家伙,服务器就已经没有这样的连接了,IP(图12)

非对称算法

在对称加密中,发送方与接收方使用相同的秘钥。那么在非对称加密中则是发送方与接收方使用的不同的秘钥。其主要解决的问题是防止在秘钥协商的过程中发生泄漏。比如在对称加密中,小蓝将需要发送的加密,告诉你密码是123balala,ok,对于其他人而言,很容易就能劫持到密码是123balala。那么在非对称的情况下,小蓝告诉所有人密码是123balala,对于中间人而言,拿到也没用,因为没有私钥。所以,非对称密钥其实主要解决了密钥分发的难题。如下图

好家伙,服务器就已经没有这样的连接了,IP(图13)

非对称算法

其实我们经常都在使用非对称加密,比如使用多台搭建大数据平台hadoop,为了方便多台机器设置免密登录,是不是就会涉及到秘钥分发。再比如搭建docker集群也会使用相关非对称加密算法。

常见的非对称加密

RSA(RSA 加密算法,RSA Algorithm)

优势是性能比较快,如果想要较高的加密难度,需要很长的秘钥。

ECC

基于椭圆曲线提出。是目前加密强度最高的非对称加密算法

同样基于椭圆曲线问题设计。最大优势就是国家认可和大力支持。

三种对比

好家伙,服务器就已经没有这样的连接了,IP(图14)

散列算法

这个大家应该更加熟悉了,比如我们平常使用的MD5校验,在很多时候,我并不是拿来进行加密,而是用来获得唯一性ID。在做的过程中,存储用户的各种密码信息,通常都会通过散列算法,最终存储其散列值。

常见的散列

MD5 可以用来生成一个 128 位的摘要,它是目前应用比较普遍的散列算法,具体的应用场景你可以自行  参阅。虽然,因为算法的缺陷,它的唯一性已经被破解了,但是大部分场景下,这并不会构成安全问题。但是,如果不是长度受限(32 个字符)我还是不推荐你继续使用 的。

SHA

安全散列算法。**SHA **分为 和 两个版本。该算法的思想是接收一段明文,以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息)并把它们为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。

国密算法 。加密强度和SHA-256想不多。主要是收到国家的支持。

总结

好家伙,服务器就已经没有这样的连接了,IP(图15)

至此,总结下,大部分情况下使用对称加密,具有比较不错的安全性。如果需要分布式进行秘钥分发,考虑非对称。如果不需要可逆计算则散列算法。因为这段时间有这方面需求,就看了一些这方面的资料,入坑信息安全,就怕以后洗发水都不用买。谢谢大家查看!

问题还有,此时如果 Sum 否认给过 Mike 的公钥和合同,不久gg了

所以需要 Sum 过的话做过的事儿需要足够的信誉,这就引入了第三方机构和证书机制。

证书之所以会有信用,是因为证书的签发方拥有信用。所以如果 Sum 想让 Mike 承认自己的公钥,Sum 不会直接将公钥给 Mike ,而是由第三方机构,含有公钥的证书。如果 Mike 也信任这个机构,法律都认可,那ik,信任关系成立

好家伙,服务器就已经没有这样的连接了,IP(图16)

用上面这样一个机制,合同的双方都无法否认合同。这个解决方案的核心在于需要第三方信用服务机构信用背书。这里产生了一个最基础的信任链,如果第三方机构的信任崩溃,比如被攻破,那整条信任链条也就断裂了

为了让这个信任条更加稳固,就需要环环相扣,打造更长的信任链,避免单点信任风险

好家伙,服务器就已经没有这样的连接了,IP(图17)

上图中,由信誉最好的根证书机构根证书,根证书机构去签发二级机构的证书;二级机构去签发机构的证书;最后有由机构去签发 Sum 证书。

如果要验证 Sum 证书的合法性,就需要用机构证书中的公钥去解密 Sum 证书的数字签名。

如果要验证机构证书的合法性,就需要用二级机构的证书去解密机构证书的数字签名。

如果要验证二级结构证书的合法性,就需要用根证书去解密。

以上,就构成了一个相对长一些的信任链。如果其中一方想要作弊是非常困难的,除非链条中的所有机构同时联合起来,进行欺诈。

中间人攻击如何避免?

既然知道了中间人攻击的原理也知道了他的危险,现在我们看看如何避免。相信我们都遇到过下面这种状况:

好家伙,服务器就已经没有这样的连接了,IP(图18)

出现这个界面的很多情况下,都是遇到了中间人攻击的现象,需要对安全证书进行及时地监测。而且大名鼎鼎的github网站,也曾遭遇过中间人攻击:

想要避免中间人攻击的方法目前主要有两个:

客户端不要轻易相信证书:因为这些证书极有可能是中间人。

App 可以提前预埋证书在本地:意思是我们本地提前有一些证书,这样其他证书就不能再起作用了。

7 DDOS

通过上面的描述,总之即好多种攻击都是 DDOS攻击,所以简单总结下这个攻击相关内容。

其实,像全球互联网各大公司,均遭受过大量的 DDoS

2018年,GitHub 在一瞬间遭到高达 1.35Tbps 的带宽攻击。这次 DDoS 攻击几乎可以堪称是互联网有史以来规模最大、威力最大的 DDoS 攻击了。在 GitHub 遭到攻击后,仅仅一周后,DDoS 攻击又开始对 Google、亚马逊甚至 Pornhub 等网站进行了 DDoS 攻击。后续的 DDoS 攻击带宽最高也达到了 1Tbps。

那 DDoS 攻击究竟是什么?

DDos 全名 Distributed Denial of Service,翻译成中文就是 分布式拒绝服务。指的是处于不同位置的多个攻击者同时向一个或数个目标发动攻击,是一种分布的、协同的大规模攻击方式。单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作的一些缺陷,采用 欺骗和伪装的策略来进行网络攻击,使网站充斥大量要求回复的信息,消耗网络带宽或资源,导致网络或不胜负荷以至于瘫痪而停止正常的网络服务。

举个例子

我开了一家有五十个座位的重庆火锅店,由于用料上等,童叟无欺。平时门庭若市,生意特别红火,而对面二狗家的火锅店却无人问津。二狗为了对付我,想了一个办法,叫了五十个人来我的火锅店坐着却不点菜,让别的客人无法吃饭。

攻击方式很多,比如 ICMP FloodUDP FloodNTP FloodSYN FloodCC 攻击DNS Query Flood等等。

SYN Flood进行DDoS攻击的实现原理**

SYN Flood是一种利用 TCP协议缺陷,发送大量伪造的 TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

一次正常的建立 TCP连接,需要三次握手:客户端发送 SYN报文,服务端收到请求并返回报文表示接受,客户端也返回确认,完成连接。

SYN Flood就是用户向发送报文后突然死机或掉线,那么在发出应答报文后就无法收到客户端的确认报文(第三次握手无法完成)这时端一般会重试并等待一段时间后再丢弃这个未完成的连接。

一个用户出现异常导致的一个线程等待一会儿并不是大问题,但恶意攻击者大量模拟这种情况,端为了维护数以万计的半连接而消耗非常多的资源,结果往往是无暇理睬客户的正常请求,甚至崩溃。从正常客户的角度看来,网站失去了响应,无法访问。

如何应对 DDoS 攻击?

高防

高防主要是指能独立硬防御 50Gbps 以上的,能够帮助网站拒绝服务攻击,定期扫描网络主节点等,这东西是不错,就是贵~

黑名单

DDoS 清洗

DDos清洗,就是我发现客人进店几分钟以后,但是一直不点餐,我就把他踢出店里。

DDoS清洗会对用户请求数据进行实时监控,及时发现 **DOS **攻击等异常流量,在不影响正常业务开展的情况下清洗掉这些异常流量。

CDN 加速

CDN 加速,我们可以这么理解:为了减少流氓骚扰,脆将火锅店开到了线上,承接外卖服务,这样流氓找不到店在哪里,也耍不来流氓了。

在现实中,CDN 服务将网站访问流量分配到了各个节点中,这样一方面隐藏网站的真实 IP,另一方面即使遭遇 DDoS攻击,也可以将流量分散到各个节点中,防止源站崩溃。

总结

计算机网络涉及的知识点较多,文中也就算是提了一下,更深此的理解还需要大家去看相应的书籍,感觉看了这一篇,当面试官问 DDOS 或者 TCP 涉及哪些攻击技术知识点的时候,能够回答出来就好了,咋们下一篇再见!

本文相关词条概念解析:

连接

机械连接比胶接或点焊等连接技术可靠,而且容易更换,所以在现代飞行器制造中仍占有重要地位。连接是指用螺钉、螺栓和铆钉等紧固件将两种分离型材或零件连接成一个复杂零件或部件的过程。常用的机械紧固件主要有螺栓、螺钉和铆钉。

网友评论

相关阅读

友情链接: 网站地图

为全球用户24小时提供全面及时的中文资讯

声明:本站不提供任何视听上传、存储服务,所有内容均来自正规视频站点所提供的公开引用资源,如有侵权信息请联系我们删除

COPYRIGHT © 2007-2018