分布式拒绝服务(DDoS)攻击是一种网络攻击方式,攻击者利用多个计算机或路由器发起攻击,使目标服务器无法正常处理请求。攻击者控制多台被称为 “肉机” 或 “傀儡机” 的计算机,向目标服务器发送大量请求,耗尽服务器资源,导致其无法响应合法请求。
pcap 包在分析 DDoS 攻击中具有重要性。pcap 文件是一种用于捕获和存储网络数据包的文件格式,它记录了网络通信中的数据包信息。通过分析 pcap 文件,可以了解网络流量情况,有助于识别 DDoS 攻击。
DDoS 攻击与 pcap 包之间存在紧密联系。当发生 DDoS 攻击时,网络中会出现大量无用的数据包,这些数据包可以被捕获并存储为 pcap 文件。通过分析 pcap 文件,可以发现 DDoS 攻击的症状,如被攻击主机上大量等待的 TCP 连接、网络中存在大量无用的数据包、制造大量高流量无用数据等。
例如,在一些知名的 DDoS 攻击事件中,如 2017 年 9 月针对 Google 服务的攻击和 2018 年 2 月 GitHub 遭受的攻击,分析 pcap 文件可以帮助安全专家了解攻击的方式和来源。同时,数据库 PCAP 文件在网络安全中也扮演着重要角色,可以作为数字取证的证据,帮助追踪攻击源和分析攻击手法。
二、pacp 包分析基础
(一)五元组概念及应用
五元组是网络通信中的一个重要概念,它由源 IP 地址、源端口、目标 IP 地址、目标端口、4 层通信协议构成。在网络通信过程中,IP 数据包的头部信息过于繁杂,通过 IP 数据包头进行数据包区分较为复杂,因此产生了元组的概念。五元组是元组中的一种,还有四元组、七元组等。
五元组在数据包查重和流量对比中有着重要作用。通常使用五元组来标识一个数据包属于哪个会话,例如在网络分析领域,当进行数据包查重时,可以通过比较五元组来确定两个数据包是否属于同一个会话;在流量对比时,也可以利用五元组来分析不同网络流量之间的差异。据相关资料显示,在一些大规模的网络流量分析中,五元组的使用可以帮助分析人员快速准确地识别出不同的网络会话,提高分析效率。
(二)数据流与数据包关系
在 pacp 文件中,数据流的概念与百度百科的定义有所不同。数据流指一次完整的 TCP/IP 连接,其中包含很多个数据包。如果在 wireshark 里面查看 pacp 包,选中任意一个数据包之后右击 - 追踪流 - TCP 流,就能看到该数据包所属的 TCP 流以及所属 TCP 流下包含的其他数据包。
这种关系在网络分析中非常重要。通过分析数据流,可以了解整个网络通信的过程,包括数据包的发送顺序、时间间隔等信息。而数据包则是网络通信的基本单位,通过对数据包的分析,可以了解每个数据包的具体内容,如源地址、目标地址、协议类型等。通过结合数据流和数据包的分析,可以更全面地了解网络通信的情况,有助于识别和应对网络攻击。
三、pacp 包提取特征元素
(一)提取流操作
利用 flowcontainer 中的 extract 对 pacp 文件进行流提取是分析 pacp 包的重要步骤。具体操作如下:pacp_flow = extract(pacp_path, filter='(tcp)')。其中,pacp_path为 pacp 文件的绝对路径,注意路径中的 '\' 需要变成 '\\'。extract 函数得到的是元组信息,通过这个元组信息可以反过来查找该元组对应的流信息。
(二)提取流中的特征信息
根据获取的流提取特征信息的方法有多种。首先,可以使用 flowcontainer 默认提取流的特征,如源 IP、源端口、目的 IP、目的端口、IP 包长序列、IP 包到达时间序列、流到达时间戳、流结束时间戳、载荷长度序列、载荷到达时间序列等。如果想要得到更多的流特征信息,需要在 extract 函数中加入 extension,通过extension_dict = value.extension获取,此时extension_dict是一个字典,通过 key 值就可以获取到指定的特征信息。例如,pacp_flow = extract(pacp_path, filter='(tcp)', extension=['tls.handshake.ciphersuite','tls.handshake.certificate']),可以获取到加密套件和证书等特征信息。
(三)提取流中的十六进制数据信息
针对 TCP 流可以通过分割 pacp 文件中的十六进制数据获取相应信息。可获取的信息如下:IP 头部长度、IP 总长度、源地址、目的地址、源端口、目的端口、序列号、ACK、标志位 (flags)、TCP 头部长度、数据部分。这一步的任务是将 wireshark 中通过十六进制解析的文字,通过 python 代码将其解析出来。例如提取出 flags:flags = data[14 + ip_header_len +13],其中 data 为上述的十六进制数据,即数据帧数据(数据链路层数据)。14 是由于以太网首部为 14 个字节,而 data 表示数据帧数据,所以所有从 data 中提取的数据都要以 14 开始。ip_header_len表示 flags 是在 IP 数据报的数据部分(也是 TCP 数据包的头部部分),所以位置就需要加上 IP 数据报的头部长度。13 是因为此项距离 TCP 数据包头部第一个字节相差 13 个字节,所以data[14 + ip_header_len +13]表示位于 TCP 头部的 Flags。
四、根据黑名单提取无效流
(一)黑名单构造
- 首先需要将 pacp 文件中所想要提取的流提取出来,比如 tls 流、http 请求流等等,关键代码如下:pcap_flow = extract(pcap_file_dir + os.sep + fname, filter='(tcp or udp)', extension=['tls.handshake.extensions_server_name','dns.qry.name', 'dns.a', 'http.request.full_uri', 'http2.headers.authority'])。
- 得到全部的流以后,利用 for 循环遍历流并将其分类形成数组,代码如下:
for key in pcap_flow:
value = pcap_flow[key]
if len(value.extension)!= 0 and value.extension not in snilist:
filelist.append(key[0])
flowidlist.append(key[2])
protocollist.append(key[1])
siplist.append(value.src)
sportlist.append(value.sport)
diplist.append(value.dst)
dportlist.append(value.dport)
snilist.append(value.extension)
(二)根据黑名单提取无效流
在构造好黑名单后,就可以根据黑名单提取 pacp 包中的无效流。具体步骤如下:
- 读取黑名单文件,将其中的 IP 地址或其他特征信息加载到内存中。
- 遍历 pacp 包中的流,对于每个流,检查其特征信息是否与黑名单中的信息匹配。如果匹配,则该流被认为是无效流。
- 将无效流提取出来,可以单独存储或者进行进一步的分析处理。
例如,假设黑名单中包含了一些特定的 IP 地址,在遍历 pacp 包中的流时,如果发现某个流的源 IP 地址或目标 IP 地址与黑名单中的 IP 地址相同,那么这个流就可以被标记为无效流。
通过根据黑名单提取无效流,可以快速筛选出可能与 DDoS 攻击相关的异常流量,有助于网络安全人员更好地分析和应对 DDoS 攻击。
五、DDOS 高防包配置与分析
(一)配置清洗阈值与防护等级
DDoS 高防包服务针对 DDoS 攻击提供三种防护等级,分别是宽松、适中、严格。宽松防护过滤明确攻击特征的 SYN、ACK 数据包,过滤不符合协议规范的 TCP、UDP、ICMP 数据包,过滤具有明确攻击特征的 UDP 数据包,清洗策略相对宽松,仅对具有明确攻击特征的攻击包进行防护,建议在怀疑有误拦截时启用,遇到复杂攻击时可能会有攻击透传。适中防护在宽松防护的基础上,过滤常见基于 UDP 的攻击数据包,对部分访问源 IP 进行主动验证,清洗策略适配绝大多数业务,可有效防护常见攻击,默认为适中模式。严格防护在适中防护的基础上,严格检查过滤具有明确攻击特征的 UDP 数据包和基于 UDP 的攻击数据包,对部分访问源 IP 进行主动验证,过滤 ICMP 攻击包,清洗策略相对严格,建议在正常模式出现攻击透传时使用。
清洗阈值是高防产品启动清洗动作的阈值。当流量小于阈值时,即使检测到攻击也不会进行清洗操作。默认在开启 “防护状态” 的情况下,业务刚接入的 DDoS 高防包实例的清洗阈值采用默认值,并随着接入业务流量的变化规律,系统自动学习形成一个基线值。您可以根据实际业务情况自由设置清洗阈值。若明确该清洗阈值,可进行自定义设置;若无法明确该清洗阈值,DDoS 防护系统将根据 AI 算法自动学习并生成一套专属的默认阈值。
(二)DDOS 流量包分析实例
- SYN Flood 攻击:在正常情况下,TCP 三次握手过程为客户端向服务器端发送一个 SYN 请求包,服务器端收到后发送一个 SYN 请求包和 ACK 回应包,客户端收到后返回一个确认号 y+1 和序号 x+1 的 ACK 请求包,三次握手完成,TCP 连接建立成功。而 SYN Flood 攻击就是让客户端不返回最后的 ACK 包,形成半开连接。利用 wireshark 软件抓取数据包的数据,通过筛选器筛选出发送包频率多的 ip 地址。如筛选 218.xxx.xxx.87,分析协议占比,发现 tcp 和 http 占比比较大,再筛选 tcp 中的 syn 数据包,发现 syn 数据包占比为 82.9,可以判断应该为 SYN FLOOD 拒绝服务攻击。
- UDP Flood 攻击:由于 UDP 属于无连接协议,消耗的系统资源较少,相同条件下容易产生更高的流量,是流量型攻击的主要手段。当受害系统接收到一个 UDP 数据包的时候,它会确定目的端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的 ICMP 数据包发送给该伪造的源地址。如果向受害者计算机端口发送了足够多的 UDP 数据包的时候,系统就会造成拒绝服务攻击。利用 wireshark 软件抓取数据包的数据,通过筛选器筛选出发送包频率多的 ip 地址。如筛选 117.xxx.xxx.0 网段,分析协议占比,可以看到受害靶机接受的 UDP 包比较多,且 UDP 包的大小都是固定的 172bytes,可以判断是 udp flood 攻击。
- 慢速拒绝服务攻击:完整的 http 请求包是以 \r\n\r\n 结尾,慢速拒绝服务攻击时仅发送 \r\n,少发送一个 \r\n,服务器认为请求还未发完,服务器就会一直等待直至超时。通过安装 slowhttptest 进行测试,如 slowhttptest -c 5000 -H -g -o my_header_stats -i 10 -r 5000 -t GET -u “http://10.10.10.134” -x 200 -p 3。观察靶机的 cpu 和网络流量明显增加很多。攻击机 ip:10.10.10.129,靶机 ip:10.10.10.134,[PSH,ACK] 是攻击机发送有数据的 ACK 包给靶机,[ACK] 包是靶机回复攻击机的数据包。可以看到没有发送 2 次连续的 \r\n,以至于靶机要一直等待。http 协议比例为 36.6,tcp 协议比例为 87.4,筛选 ack 数据包,占比率 98.2,不符合常态,综上可以判断为慢速拒绝服务攻击。
六、pacp 文件格式解析与抓包实践
(一)pacp 文件格式解析
Pcap 文件格式是一种用于捕获和存储网络数据包的二进制格式,支持纳秒级精度的时间戳。它由全局报头(Global Header)和多个数据包记录(Packet Record)组成。
1. Global Header 的结构及含义Global Header 长度为 24 字节,各区域 / 字段说明如下:
- Magic Number(32 位):用于检测文件格式本身和字节顺序。如果值为 0xA1B2C3D4,则 Packet Records 中的时间戳以秒和微秒为单位;如果是 0xA1B23C4D,则数据包记录中的时间戳以秒和纳秒为单位。
- Major Version(16 位)和 Minor Version(16 位):给出 pcap 格式的当前主要和次要版本编号,通常分别为 0x0200 和 0x0400。
- Reserved1(32 位)和 Reserved2(32 位):未使用的保留字段,应填充 0,读取时必须忽略。
- SnapLen(32 位):表示从每个数据包中捕获的最大字节数,不得为零。如果未指定限制,应是大于或等于文件中最大数据包长度的数字。
- LinkType(28 位)和 Frame Cyclic Sequence present(4 位):定义文件中数据包的链路层类型,以及附加到每个数据包的 FCS 字节数(如果设置了 “f” 位)。
2. Packet Header 的结构及含义Packet Header 长度固定为 16 字节,包括以下区域 / 字段:
- Timestamp(秒)和 Timestamp(微秒或纳秒):时间戳,包括整数(秒数)和小数(微秒或纳秒)部分,由文件头中的幻数指定是微秒还是纳秒。
- Captured Packet Length(32 位):表示从数据包中捕获的字节数,是原始数据包长度和接口的快照长度中的最小值。
- Original Packet Length(32 位):表示数据包在网络上传输时的实际长度。如果数据包已被捕获过程截断,则它可能与捕获的数据包长度不同。
(二)网络抓包工具编写与应用
以下以使用 Python 的 scapy 库编写简单网络抓包工具为例展示核心代码及分析抓取的数据包。
1. 核心代码
from scapy.all import *
# sniff 回调函数
def packet_callback(packet):
print(packet.show())
pkts = sniff(filter="ip.src == 192.168.1.104", prn=lambda x:x.summary(), count=20)
# 将数据存储在 demo.pcap 文件中
wrpcap("demo.pcap", pkts)
2. 运行结果截图(此处假设可以提供截图,但由于无法实际提供截图,可自行想象抓包工具运行时的界面截图)
3. 数据包分析使用 dpkt 库进行数据包的解析。解包的过程基于 OSI 五层网络模型,按层逐步解析数据。首先将数据链路层的数据存储在 eth 对象中,eth 的 data 部分对应 ip 包(网络层),ip 包的 data 部分对应 tcp 报文(传输层),tcp 报文的 data 部分是应用层数据。在解析过程中,可以获取源 IP 地址与目标 IP 地址、MAC 地址、IP 类型、IP 地址及数据包流向、源端口、目标端口、传出层协议等信息。
(三)嗅探网站与手机 App 登录过程
1. 嗅探网站登录过程数据包分析账号密码的方法及结果(1)选择一个网站,如邮箱、博客等,使用抓包工具(如 tcpdump 或自己编写的工具)进行网络嗅探。
(2)在登录网站时,捕获网络数据包。
(3)通过分析数据包中的 HTTP 请求和响应,可以尝试找到包含账号和密码的信息。但需要注意,只能分析自己的账号,严禁做各类攻击。
例如,使用 Wireshark 软件进行抓包,筛选 http 协议与网站的 IP 地址,可以找到以 POST 传参的数据包,打开可能会看到经过加密后的账号和密码信息,如 “yhm” 就是 “用户名”,“mm” 就是 “密码”。
2. 嗅探手机 App 登录过程数据包分析账号密码的方法及结果(1)使用类似的抓包工具对手机 App 的登录过程进行数据包捕获。
(2)分析数据包的过程与网站登录类似,但可能需要更多的技术手段,如设置代理等,以确保能够捕获到手机 App 的网络流量。
(3)同样,只能分析自己的账号,严禁做各类攻击。结果可能会在数据包中找到与账号密码相关的信息,但通常也会经过加密处理,需要进一步的分析和破解才能获取真正的账号密码。
七、OSPF DD 数据包分析
OSPF DD 数据包简介
OSPF(Open Shortest Path First)是一种动态路由协议,用于在网络中寻找最短路径,确保数据快速且可靠地传输。其中,DD(Database Description)数据包是 OSPF 协议中的重要组成部分,用于路由器之间的数据库同步。
OSPF DD 数据包在网络管理中的作用
了解网络拓扑结构
在 OSPF 协议中,每个路由器都维护着一个数据库,记录了网络中的路由信息。DD 数据包中包含了数据库的摘要信息,通过解析 DD 数据包,可以了解到网络中有哪些路由器以及它们之间的连接关系。例如,根据搜索到的素材,华为的 OSPF DD 数据包分析可以帮助网络管理员更好地了解网络的运行状态,进而优化网络配置。据统计,通过对 DD 数据包的分析,网络管理员可以快速确定网络中的关键节点和连接路径,提高网络的可用性和性能。
了解数据库情况
DD 数据包中还包含了每个路由器当前的数据库版本号和区域 ID 等相关信息。通过解析 DD 数据包,可以了解到每个路由器的数据库中都包含哪些路由信息以及它们的版本号。这对于网络管理员来说非常有用,他们可以通过比较数据库版本号来判断是否需要更新路由表,以保持网络的稳定和一致性。例如,当数据库版本号不一致时,网络管理员可以及时采取措施,确保各个路由器的数据库同步,避免因数据不一致而导致的网络故障。
发现故障问题
对 OSPF DD 数据包的分析还能够帮助发现网络中的故障和问题。通过观察 DD 数据包的发送和接收情况,可以了解到网络中各个路由器之间的通信情况。如果某个路由器没有收到其他路由器发送的 DD 数据包,就说明可能存在通信故障或者网络拓扑发生了变化。这样的分析可以帮助网络管理员及时发现问题,并进行相应的调试和维护。例如,当网络中出现故障时,通过分析 DD 数据包可以快速定位故障点,提高故障排除的效率。
综上所述,OSPF DD 数据包分析在网络管理中起着重要的作用。通过对 DD 数据包的解析和研究,可以了解网络的拓扑结构、数据库情况以及可能存在的故障和问题。网络管理员可以根据这些分析结果来优化网络配置,提高网络的可用性和性能。
八、使用 tcpdump 抓包分析攻击类型
(一)使用 tcpdump 抓包
在目标服务器上可以使用 tcpdump 进行抓包操作。常用的命令及参数如下:
- -i eth0:指定网络接口,这里以 eth0 为例,可以根据实际情况进行调整。
- -w capture.pcap:将捕获的数据写入文件 capture.pcap。
- -c count:count 表示数量。抓取数据包的数量达到 count 后结束命令,如果不使用 -c 参数,会不停的抓取数据包,直到手动停止。
- -D:列出服务器所有网卡。tcpdump 默认监听的是编号最小的那个网卡,一般是 eth0。在进行抓包时可以通过 -i 参数指定监听的网卡,any 表示监听所有网卡。
- -r file:从文件中获取数据包,不再从网络获取数据包。
- -w file:将抓取的数据包保存到文件,-r 参数可以从文件中读取数据包。
- -W filecount:指定文件的数量,当文件滚动到指定数量后会从第一个文件开始覆盖。
例如,在怀疑某台服务器正在受到 DDoS 攻击时,可以使用以下命令进行抓包:sudo tcpdump -i eth0 -w capture.pcap。
(二)分析捕获的流量
捕获一段时间后,停止 tcpdump,然后使用 Wireshark 或 tcpdump 本身来分析捕获的数据。
- 使用 Wireshark 分析:
-
- 过滤 HTTP 流量:如果怀疑是 HTTP DDoS 攻击,可以在 Wireshark 中使用过滤器 http 来只显示 HTTP 流量。
-
- 检查源 IP 地址:查看是否有大量来自相同 IP 地址或不同 IP 地址的请求。如果有大量不同 IP 地址的请求,可能是 HTTP DDoS 攻击。
-
- 检查请求频率:如果同一 IP 地址在极短时间内发出大量请求,可能是 DoS 攻击。
- 使用 tcpdump 本身分析:
(三)案例结论与防御措施
通过分析捕获的流量,我们可以确定攻击的类型,并采取相应的防御措施。
- 如果发现有大量来自不同 IP 地址的 HTTP 请求,并且请求频率非常高,这些特征表明服务器正遭受 HTTP DDoS 攻击。防御措施如下:
-
- 启用 WAF(Web 应用防火墙):可以有效阻挡 HTTP DDoS 攻击。
-
- 限制 IP 访问频率:防止同一 IP 在短时间内发出大量请求。
-
- 启用 DDoS 防护服务:如云平台提供商的 DDoS 防护服务。
- 如果发现有大量来自特定 IP 地址的请求,可以考虑以下防御措施:
-
- 封锁该 IP 地址:在防火墙或服务器设置中封锁该 IP 地址,阻止其继续发起攻击。
-
- 向网络服务提供商报告:请求他们协助处理恶意 IP 地址。
- 对于其他类型的攻击,如 UDP Flood、SYN Flood 等,可以采取以下防御措施:
-
- 配置防火墙:限制连接数、限制端口、启用 SYN Cookie、启用 UDP Flood 防护等。
-
- 使用 DDoS 清洗服务:当攻击流量超出本地处理能力时,可以使用运营商或云平台的 DDoS 清洗服务。
-
- 升级硬件设备:提高服务器、交换机、防火墙等硬件设备的性能,增加抗攻击能力。
总之,通过使用 tcpdump 抓包并分析流量,可以及时发现 DDoS 攻击的迹象,并采取有效的防御措施,保护网络安全。
墨者安全 防护盾
墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。