Wireshark把DDoS照原形(上)

简介: Wireshark把DDoS照原形

1 前言

MTU、 传输速度、 拥塞控制,还是各种重传,TCP传输相关的核心概念:

  • 学习了RFC规范和具体的Linux实现
  • 通过案例,把这些知识灵活运用了起来

这种种还是在协议规范这大框架内的讨论,默认前提就是通信两端是遵照TCP规定工作,都是君子协定。

若不遵TCP规范,甚至找漏洞攻击,这种小人行为也很常见,如 DDoS攻击

2 NTP反射攻击案例

游戏业务遭DDoS多见。有次,一个游戏客户发现,他们游戏服服务器无法登录被投诉。客户的工程师做了tcpdump抓包,赶紧把抓包文件传给我们。

Expert Info

从抓包文件概览看是不正常。先看AnalyzeExpert Information:

游戏业务一般基于TCP,但这没啥TCP信息。

看具体报文

全是NTP Version 2, Private, Response, MON_GETLIST_1报文。客户根本没对外提供啥NTP服务,这些报文哪来的,是攻击吗?这就是DDoS攻击的一种类型: NTP反射放大攻击。


NTP

Network Time Protocol,通过网络服务来同步时间。有个功能Monlist,在一些老设备默认启用,会返回与NTP服务器进行过时间同步的最后600个客户端的IP。


响应包按每6个IP分割,最多有100个响应包。一个简单的NTP Monlist响应,就可能是请求的200多倍。如请求1Gbps,那这次反射攻击就可达200Gbps以上!

Wireshark展开UDP部分,看这种Monlist响应报文的细节:

每个Monlist item占用72字节:

选中一个Monlist item后,3种方式找到长度:

  • 字段Size of data item值72,协议本身提供的元数
  • 下方字节码部分,数一下有底色的字节数,是72
  • 窗口底部对我们选中的字段有提示字节数72bytes

用Wireshark解读抓包文件,特别是要核对字段的具体信息时很有用。

Aplly as Column

现在Wireshark窗口里解读UDP报文长度不直观,因为 Wireshark默认没有显示UDP长度的列,但可自行添加。UDP详情里选中Length,然后右单击,选中Aplly as Column:

在主窗口看到UDP报文长度Length:

看着UDP报文长度都不大,为啥?MTU一般1500字节,去掉IP头20字节和UDP头8字节,最多还有1500-20-8=1472字节,远大于448字节,为啥不用足1472字节?涉及UDP一个概念: UDP报文的载荷最好不要>512字节。


这限制来自IPv4协议。IPv4协议规范 RFC791 建议虽然IP报文长度字段2个字节,最大65535,但网络不允许传输这么大的报文,所以IPv4规范建议,报文长度应控制在相对小的范围内,这个范围是576字节,相应的UDP载荷在512字节以内:

The number 576 is selected to allow a reasonable sized data block to
    be transmitted in addition to the required header information.  For
    example, this size allows a data block of 512 octets plus 64 header
    octets to fit in a datagram.  The maximal internet header is 60
    octets, and a typical internet header is 20 octets, allowing a
    margin for headers of higher level protocols.

很多应用程序都做这部分逻辑处理,即控制UDP载荷在512字节内,如这次NTP Monlist长度就是NTP协议实现,而非内核UDP实现。像DNS解析,如数据量超512字节,也会自动切换为TCP模式,根本原因也是这个很早以前规定。


检查了载荷,“这里咋只有NTP回复,没NTP请求?”正是1Gbps能放大为200多Gbps原因。背后就是反射攻击核心技巧: 利用IP协议“不对源IP做验证”的不足,构造一个IP报文,其源IP为被攻击站点的IP,使NTP服务器回复的报文也被发往被攻击站点。大量响应报文被引到被攻击站点这。而且过程中,NTP服务器被利用了还不知道。


示意图:

面临这种攻击咋办?

  • NTP服务器是自己的,就升级版本,避免自己成“帮凶”
  • 我们是单纯的被攻击者,就要上些手段。游戏客户就是上了高防后,扛住攻击

3 SSDP反射型攻击案例

“肉机”,被黑客掌握系统权限的主机。可被黑客集中调动起来发起攻击。如一个黑客组织掌握1万台“肉机”,只要每台“肉机”发起哪怕只有1Mbps攻击流量,乘以1万,就是10Gbps流量。


但拿到这么多“肉机”不易。黑客想到:借力打力。借协议的“ 响应是请求的很多倍”力。NTP反射攻击就是这。这种攻击的英文叫reflection attack with amplification。amplication就是放大的意思。只需很少“肉机”,就可发起巨大攻击流量。


客户案例。当时遭受攻击,做了抓包。看抓包文件Expert Information:

没TCP握手报文,上来就是HTTP/1.1 200 OK,这HTTP“自来熟”。既然这有94100个HTTP 200响应报文,应该至少有几十个TCP连接,而这一个SYN、FIN都没。

看HTTP 200具体啥样:

为啥看不到srcPort和dstPort?原来用了UDP。上面的srcPort和dstPort列是指TCP的端口号,所以空了。HTTP为啥用了UDP作传输协议?这就是


SSDP反射放大攻击

SSDP在UDP传输层协议上,用HTTP协议格式传送信息。2014人们发现SSDP可被攻击者利用。启用SSDP协议的主要是家用路由器,在它们的UPnP软件有漏洞,被攻击者利用后,这些路由器会从端口1900返回响应报文。显然这些响应报文的目的地址,是被攻击站点的IP,而不是攻击发起者自己的IP。攻击过程类似NTP反射攻击里面的图。


当时应对方法也是上高防系统。

著名网络服务公司Cloudflare把SSDP戏称为 S tupidly S imple DDoS P rotocol。你可以在 这里 看到Cloudflare对SSDP攻击的更多解释。


路由器自测。访问 https://badupnp.benjojo.co.uk/ 这个站点,会对你的出口IP(家用路由器的出口IP)探测,看是否有1900端口可被利用。如没有漏洞,网页提醒你:

抓包的概览。

新命令: capinfos

Wireshark自带工具集中的。

查看抓包文件的时长、总包量等信息。直接运行 capinfos文件名

$ capinfos SSDP_attack_example.pcap
File name:           SSDP_attack_example.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: 65535 bytes
Number of packets:   100 k
File size:           36 MB
Data size:           34 MB
Capture duration:    1.916902 seconds
First packet time:   2016-05-08 10:25:02.721642
Last packet time:    2016-05-08 10:25:04.638544
Data byte rate:      18 MBps
Data bit rate:       145 Mbps
Average packet size: 348.38 bytes
Average packet rate: 52 kpackets/s
SHA256:              8fa365f01c62023576623116410a6ca289915db4717e4805120009a575fdfb57
RIPEMD160:           5ab83442a5178b5f34bee1009a58ddb351bd292b
SHA1:                52a2c52644bc2753f9a11b7bf71eb1144f2c9a30
Strict time order:   True
Number of interfaces in file: 1
Interface #0 info:
                     Encapsulation = Ethernet (1 - ether)
                     Capture length = 65535
                     Time precision = microseconds (6)
                     Time ticks per second = 1000000
                     Number of stat entries = 0
                     Number of packets = 100000

重点关注:

Number of packets:   100 k
Capture duration:    1.916902 seconds
Average packet rate: 52 kpackets/s

这次抓包一共抓取10万个报文,耗时1.9s,平均包率为52kpackets/s,5万2千个包/s。都是SSDP协议响应报文,是DDoS。


平时了解一个抓包文件的包率、时长、平均报文大小等信息都可用capinfos命令快速获得。


回顾完两个具体的案例,想必你对于DDoS有了感性的认识了,接下来我们就来系统地认识一下DDoS。

4 啥是DDoS攻击?

DDoS跟DOS密切联系。DOS(Denial of Service),服务拒绝,黑客通过各种手段使被攻击者无法正常提供服务。DOS攻击早已存在,而DDoS(Distributed DOS)是升级版:调动分布在各地的客户端发起攻击,使得被攻击站点无法正常服务。

DDoS是“攻击”,不是“入侵”:

  • 攻击是破坏服务
  • 入侵可能不破坏,但会窃取资料、劫持勒索等

DDoS是要破坏计算资源

资源

一般计算机资源是CPU、内存。耗尽CPU和内存资源是早期攻击形式。当时攻击和病毒,主要是让被攻击站点失去服务能力。。随安全加固技术和意识增强,攻破系统成本越来越高,攻击者转换方向。他们不需想法攻入对端,只要在前面的网络环节搞破坏,同样可让对方服务瘫痪。服务瘫痪原因已不是之前服务本身不可用,而变成网络通道不可用!


这就是DDoS核心目标: 耗尽网络带宽。


假设被攻击的站点的带宽为1Gbps,攻击者只要让到达这站点的流量超过1Gbps,就可让这站点失去正常服务能力。这些报文是否属于被攻击站点正在监听的有效流量,没关系。它的目的直接:把你家门口路堵死,让正常流量没机会进。

示意图

如何产生巨大流量?

常见实现方式反射型攻击。利用:

  • 一些协议的“ 响应是请求的很多倍”特点
  • 同时“ IP协议不验证源IP”不足

把流量引到被攻击站点。

NTP反射攻击和SSDP都是。

NTP反射攻击依托UDP,很多DDoS类型也是利用UDP。为啥是UDP?

目录
相关文章
|
域名解析 网络协议 安全
Wireshark把DDoS照原形(下)
Wireshark把DDoS照原形
167 0
|
3月前
|
存储 安全 数据可视化
如何规避DDoS攻击带来的风险?服务器DDoS防御软件科普
如何规避DDoS攻击带来的风险?服务器DDoS防御软件科普
107 0
|
1月前
|
网络协议 安全 网络安全
如何识别DDOS攻击模式?
【10月更文挑战第12天】如何识别DDOS攻击模式?
88 18
|
1月前
|
监控 网络协议 网络安全
识别DDoS攻击
【10月更文挑战第12天】识别DDoS攻击
56 16
|
1月前
|
网络协议 安全 网络安全
DDoS攻击有哪些常见形式?
【10月更文挑战第13天】DDoS攻击有哪些常见形式?
152 14
|
1月前
|
安全 网络协议 网络安全
DDoS攻击的模式
【10月更文挑战第13天】DDoS攻击的模式
52 12
|
1月前
|
监控 安全 网络协议
DDoS攻击
【10月更文挑战第12天】DDoS攻击
77 12
|
25天前
|
监控 安全 JavaScript
DDoS攻击趋势令人担忧,安全防御体系构建指南
DDoS攻击趋势令人担忧,安全防御体系构建指南
48 1
|
5天前
|
域名解析 网络安全
被DDOS攻击,应该做什么?
一直以来,网络上关于ddos攻击的讨论都围绕着ddos攻击的防御方式以及攻击种类。但是当网站还是不幸中招的时候,很多网站管理者都不知道应该做什么才能尽量减少损失,这无形中也加大了网站的受害程度。
25 0
|
1月前
|
人工智能 安全 网络安全
基于阿里云平台帮助出海企业应对DDoS攻击
基于阿里云平台帮助出海企业应对DDoS攻击