老王这骚操作,是反射攻击吗?

VSole2023-06-05 09:38:32

如果发送一个网络请求后,客户端离线,并且同一个IP被分配给另一台客户端,那么服务器响应会怎么做?

如题,假设客户端IP是1.1.1.1 ,我向2.2.2.2的客户端发送了一个请求。

然后我这台客户端断网,另一台客户端设置IP地址为1.1.1.1。

那么服务端在响应请求的时候会将响应发送给新的客户端吗?(假设两个客户端都是监听同一个端口),如果发送了,会有安全隐患吗?

这彷佛就是反射攻击(Reflective Attack)的一种。

老王(IP地址随意)看老张(1.1.1.1)不爽,想戏弄他一下,于是伪造成老张,向老李(2.2.2.2)发送DNS请求,老李蒙在鼓里,向老张家返回了DNS回复。问老张能收到DNS回复吗?

可以的。

可是老王这种恶作剧伤害系数(1:1)不大,即老王发一个伪造包,老张就收到一个回复攻击包。

老王可以放大攻击系数吗?

理论上是可以的,假设2.2.2.0/24是一个广播域,包含的200多台主机都提供DNS回复。老王只要将目的地址修改成 2.2.2.255即可。如果老王不知道广播域多大,可以采用盲猜的方式,多发几个伪造包,可以是2.2.2.255、2.2.2.127、2.2.2.63、2.2.2.31、2.2.2.15、2.2.2.7、2.2.2.3 等等,只要理论上是一个广播地址即可。

老王还可以朝全球著名DNS发送类似的伪造报文,可以进一步放大攻击系数。此外老王还可以修改源IP为1.1.1.255、1.1.1.127、1.1.163…等等来恶心不光老王,还包括老王的邻居。

但是,以上不是题主所关心的,题主关心的是安全防护的(守)而不是网络攻击的(攻)。到底新的客户端可以收到服务器的回复吗?

理论上是可以的,只要满足以下条件:

  • 老、新客户端使用相同的IP =1.1.1.1
  • 老、新客户端使用相同的MAC
  • 服务器的回复到达时,老客户端离线(交换机端口down)

只要同时满足以上条件,新客户端就可以收到服务器的回复。

如果服务器的回复到达时,老客户端还没有离线(down),新客户端需要做哪些努力才能让交换机把服务器回复包发给自己而不是老的客户端?

只要新客户端持续发包,可以是任意包,用来刷新(update)交换机的MAC地址表,用以覆盖老客户端MAC地址与端口的映射。

如果新客户端使用的MAC地址与老客户端不一样,服务器的回复有可能流向新客户端吗?

理论上依然有可能,只要新客户端持续发送Gratuitous ARP报文,可以起到两个作用:

  • 刷新(update)网关的ARP Table
  • 刷新(update)交换机的MAC Table

如果两个客户端MAC地址不同,仅仅使用相同的IP地址,不做上文的种种主动(active)参与,而是被动(passive)等待,新客户端是无法收到服务器的回复的。

看到有同学的回答,新客户端能否收到取决于“客户端与服务器之间是否有心跳(keepalive)机制”,这显然是对心跳有一个误解。

TCP层面的心跳,通常配置在服务器侧,为什么要这么配置?

主要用于TCP服务器侧回收内存资源,因为很多客户端往往并不在线,但是却一直保持TCP连接,这样就耗费了N多服务器的资源(维持TCP连接)。

TCP服务器发出的心跳检测,经过三次检测就可以将客户端判定为离线状态并释放连接,从而回收内存。但是这个周期是2小时,即两小时尝试回收一次。

以上是一个古老的故事了,自从NAT大批量引入互联网,为了避免NAT表的老化删除,需要通信双方有一个心跳包,用来刷新NAT表。多久刷新一次才好呢?

肯定要小于NAT表的老化删除时间,但是也不能太频繁,太频繁对双方是一个负担,对网络也是一个负担,综合各大厂商TCP/UDP/ICMP的NAT超时时长统计,小于60秒的心跳可以应对所有场景。即使苛刻的网络场景,心跳一般在5秒、10秒应该绰绰有余。在这么漫长的时间内,新客户端收到报文也是没有问题的,当然能收到源于上文的假设。

如果新客户端能收到服务器的回复,由于listen的端口 = 老的端口,自然能回复服务器的心跳检测请求,从而发出自己的心跳回复,服务器无法检测老的客户端已经离线了!

文章基于一个个假设,其实新客户端无论收到还是收不到,不是很重要,重要的是报文有没有安全加密,有没有完整性保护。如果有这两项的保护,收到又如何,没有密钥一样解不出,何用?这就是网络安全发展到今天,普遍采用的对策。

dns反射机制
本作品采用《CC 协议》,转载必须注明作者和本文链接
目前,针对DNS的攻击已经成为网络安全中的一个严重问题,每年都有数千个网站成为此类攻击的受害者。需要强调的是,这种攻击的目的主要用于隐藏踪迹或阻碍受害者恢复工作。工作原理是,一台机器向另一台机器发送ICMP回应请求。而攻击者可以滥用ICMP回应答复机制使受害者的网络不堪重负。不过攻击者必须知道受害者的IP地址才能明确攻击的重点。此外,攻击者还要了解受害者路由器的相关信息。
java反射机制是什么
服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 网站指纹识别(包括,cms,cdn,证书等),dns记录 whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) 子域名收集,旁站,C段等 google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 传输协议,通用漏洞,ex
SYN FLOOD攻击是在TCP三次握手过程中产生的。攻击者通过发送大量伪造的带有SYN标志位的TCP报文,与目标主机建立了很多虚假的半开连接,在服务器返回SYN+ACK数据包后,攻击者不对其做出响应,也就是不返回ACK数据包给服务器,这样服务器就会一直等待直到超时。这种攻击方式会使目标服务器连接资源耗尽、链路堵塞,从而达到拒绝服务的目的。
DDOS攻击的治理和缓解
2021-09-27 08:24:52
很推荐阅读,并针对本书中的DDOS攻击的治理和缓解做了总结。作为网络犯罪的主要平台之一,黑客利用僵尸网络展开不同的攻击,可以导致大量机密或个人隐私泄密,也可以通过DDOS攻击使整个基础信息网路瘫痪。因此,对僵尸网络进行治理显得十分迫切而重要。
URLDNS链子是Java反序列化分析的第0课,网上也有很多优质的分析文章。笔者作为Java安全初学者,也从0到1调试了一遍,现在给出调试笔记。Java原生链反序列化:利用Java.io.ObjectOutputStream对象输入流的readObject方法实现将字节序列转化成对象。测试源码如下,此部分源码参考了ol4three师傅的博客:package?将输出字节流写入文件中进行封存。读取字节流操作为readObject,所以重写readObject可以执行自定义代码。影响的版本问题:与JDK版本无关,其攻击链实现依赖于Java内置类,与第三方库无关?
⽹上整理的⾯试问题⼤全,有些 HW ⾯试的题,已经收集好了,提供给⼤家。
IP Spoofing也叫IP欺骗,其原理是攻击者机器A利用软件构造一个虚假不存在的IP地址,并以此不存在地址为源IP地址向受害者机器B发送SYN报文,请求建立TCP/IP连接。目标机器B接收到这个SYN报文后,会将收到的SYN报文中的源IP地址提取出来,并将此IP作为目的IP,回复一个ACK/SYN确认报文给B,并等待接收来自B的确认报文。
如果发送一个网络请求后,客户端离线,并且同一个IP被分配给另一台客户端,那么服务器响应会怎么做?如题,假设客
浅谈Java反序列化漏洞
2022-05-17 17:48:01
Java序列化与反序列化Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。
VSole
网络安全专家