常见网络攻击手法总结
略凌乱…
一、拒绝服务
- TCP SYN泛洪
- ping泛洪
- 放大攻击 <== 充分利用广播地址。发送伪造包至广播网,受害者被大量回复数据包淹没
- 分布式Dos泛洪 <== 僵尸网络攻击Dos攻击一个受害者
二、畸形数据
- 死亡之ping
- 泪滴 <== 发送具有重叠偏移量的数据包片段
- SYN比特和FIN比特同时设置
- 没有设置任何标志的TCP报文攻击
- 设置了FIN标志却没有设置ACK标志的TCP报文攻击
在TCP报文的报头中,有几个标志字段:
1. SYN:连接建立标志,TCP SYN报文就是把这个标志设置为1,来请求建立连接
2. ACK:回应标志,在一个TCP连接中,除了第一个报文(TCP SYN)外,所有报文都设置该字段,作为对上一个报文的相应
3. FIN: 结束标志,当一台计算机接收到一个设置了FIN标志的TCP报文后,会拆除这个TCP连接
4. RST:复位标志,当IP协议栈接收到一个目标端口不存在的TCP报文的时候,会回应一个RST标志设置的报文
5. PSH:通知协议栈尽快把TCP数据提交给上层程序处理
三、TCP/IP劫持
伪造数据包接管受害者与服务器之间的通信。
- RST劫持 <== 最简单的方式
四、路由协议攻击
扰乱路由表、转发表,但如果路由器、交换机开启了HMAC验证,则不会成功。
五、网络扫描
发现各种TCP/IP端口的分配、开放的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞。
有三个阶段:
- 发现目标 <== ping扫描
- 确认目标信息(操作系统、服务类型、版本、网络拓扑等)<== 端口扫描、操作系统探测
- 确认是否有安全漏洞 <== 网络安全扫描
端口扫描原理
根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCP SYN)的时候,做这样的处理:
- 如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结构(TCB)
- 如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放
相应地,如果IP协议栈收到一个UDP报文,做如下处理:
- 如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报文(上层协议根据处理结果而回应的报文例外)
- 如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起者计算机该UDP报文的端口不可达
利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:
- 发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限)
- 如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放
- 相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)
Those who seek some sort of a higher purpose or 'universal goal', who don't know what to live for, who moan that they must 'find themselves'. You hear it all around us. That seems to be theofficial bromide of our century. Every book you open. Every drooling self-confession. It seems to be the noble thing to confess. I'd think it would be the most shameful one.