【虹科干货】长文预警!使用ntopng和NetFlow/IPFIX检测Dos攻击(下)

如何结合使用ntopng和NetFlow/IPFIX检测Dos攻击,在上一篇文章中,我们已经做足了铺垫,本期我将会为大家展示并分析实操步骤。话不多说,直接进入正题。

一、Ntopng在模拟中发出的警报

应根据监控需求和可用资源对 Ntopng 进行配置和优化。在本研究中,大多数警报和警告都是以默认值激活的。显然,每个警报和警告都必须根据 Ntopng 的工作环境和网络拓扑结构进行评估。 模拟过程中的 Ntopng 检测列表:

SYN FLOOD(SYN 泛洪攻击)

通过发送大量的SYN请求来耗尽目标系统的资源,使其无法处理正常的连接请求。在TCP协议中,当客户端尝试建立到服务器的连接时,会发送一个SYN(同步)请求,服务器在收到该请求后会回复一个SYN-ACK(同步-确认)以表示连接的建立,最后客户端发送一个ACK(确认)以确认连接的建立。在SYN泛洪攻击中,攻击者发送大量的SYN请求但不发送最后的ACK,导致服务器在等待确认的状态下消耗资源,从而耗尽系统的资源,使得合法用户无法建立连接。

简而言之,SYN 泛洪攻击就是用虚假的连接请求使服务器饱和,从而阻止服务器处理真正的连接,造成服务中断。实施这种攻击有两种技术:

1. 使用假IP,即用不同的 IP 地址伪装自己的 IP 地址,这样服务器就会向一个假 IP 发送 SYN-ACK 回复。

2. 客户端故意不响应服务器,保持连接开放

当发送/接收的 SYN/秒数超过阈值 > 256 SYN/秒时,NTOPNG 就会触发警报,阈值可以更改。

TCP SYN SCAN(SYN扫描)

SYN 扫描是一种扫描类型,包括发送 SYN 标志激活的 TCP 数据包。

如果要检查的端口是开放的,攻击者将收到一个激活 SYN 和 ACK 标志的 TCP 数据包作为回复,并通过一个激活 RST 标志的 TCP 数据包关闭连接。

如果要控制的端口已关闭,攻击者将收到一个激活 RST 标志的 TCP 数据包,从而关闭连接。 在这两种情况下,连接都不会完成,因此几乎不会出现在日志文件中。

当 SYN 发送/接收/分钟(未应答)数超过阈值 > 256 SYN/分钟时,Ntopng 会触发警报。阈值可以更改。

TCP FIN SCAN(FIN扫描)

FIN 扫描是一种扫描类型,包括向受害者端口发送仅激活 FIN 标志的 TCP 数据包。在 RFC793 技术规范中,如果端口是关闭的,主机接收到 FIN 标志激活的数据包后,必须回复一个 RST 标志激活的数据包;如果端口是开放的,则应忽略该数据包。这样,攻击者就能知道哪些端口是开放的。但并非所有系统都遵守这些规范,在任何情况下都会返回一个 RST 标志激活的 TCP 数据包,从而使扫描失去作用。

当发送/接收 FINs/分钟(无响应)的数量超过阈值 > 256 FINs/分钟时,Ntopng 会触发警报。阈值可以更改。

SCAN DETECTED(扫描检测)

当检测到扫描(主机/端口)时,如果未完成的 TCP/UDP 流量超过指定限制,Ntopng 会触发警报... > 32 流量(分钟)。阈值可以更改。

FLOWS FLOOD

当新的客户端/服务器/秒流量超过阈值 > 256 流量/秒(分钟)时,Ntopng 会触发警告。阈值可以更改。

异常分数行为

注意异常分数行为,以发现威胁或缺陷。

当界面出现意想不到的行为时,ntopng警报可能会被触发。

异常流量行为

意外行为检查。

警告不正常的流量行为,以发现威胁或缺陷。

当界面出现意想不到的行为时,ntopng警报可能会被触发。

超过分数阈值

每台主机都有一个非负数值,用于存储分数值。该值的计算时间间隔为 1 分钟。当主机的分数在一分钟内超过分数阈值 > 5000 时,ntopng警告就会激活。阈值可以更改。

补充信息:Ntopng 如何计算得分

分数是一个数字指标,如果不为零,则表示存在某种问题,分数越高,相关问题越严重。

分数主要有三个来源:  

1. 数据流得分:表示数据流的糟糕程度,例如:有多次重传的数据流得分不为零。

2. 流量的源主机得分:与源主机相关联的数值,例如:在步骤 1 的流量中,如果只有目的地 -> 客户端的重传,则该流量的源主机得分为 0,但如果源端也有重传,则该值为正。

3. 流量的目的主机得分:与之前相同,但针对的是流量的目的主机。由于流量可能存在多个问题,因此流量上遇到的每个问题(例如流量上检测到的 TCP 重传或过时的 TLS 版本)都会影响得分。因此,得分是在该流量上发现的单个流量/源/目的得分的总和。

二、警告:最近的活跃流

“Warning Recently live flows”消息显示,Ntopng正在观察到网络中大量活跃的数据流,因此资源利用率很高,因此对安全的担忧;因此,有必要对此进行调查。

为了应付这一警告,可能需要:

检查当前网络活动,查看流量模式是否符合预期或是否存在异常。

查找可能存在的安全威胁或异常网络行为。

三、一个攻击和检测过程示例

使用slowhttptest进行HTTP慢速攻击

HTTP慢速攻击允许单个客户端使用最小带宽使服务器资源饱和。具体做法是尽可能保持与目标服务器的连接处于开放状态,恶意客户端连接到目标服务器并向其发送部分请求,即未完成 http 头的发送;具体来说,当客户端发出 HTTP 请求时,网络服务器只能在请求头发送完成后才能关闭 TCP 连接。这种技术迫使服务器保持连接开放,从而达到服务器可用连接的最大数量,使其无法访问其他客户端的合法请求。

下面是" slowhttptest"命令的示例:

slowhttptest -H -c 2000 -g -o output -i 10 -r 300 -t GET -u http://10.0.20.10 -x 24 -p 3

  1. -H: 启用慢速HTTP攻击中的Slow Headers攻击模式。
  2. -c 2000: 模拟的客户端数量,这里设置为2000个客户端。
  3. -g: 启用慢速HTTP攻击中的Slow Read攻击模式。
  4. -o output: 指定输出文件的名称为output。
  5. -i 10: 设置攻击间隔为10秒。
  6. -r 300: 设置攻击持续时间为300秒(5分钟)。
  7. -t GET: 指定HTTP请求的类型为GET。
  8. -u http://10.0.20.10: 指定目标服务器的URL为http://10.0.20.10。
  9. -x 24: 设置攻击时使用的线程数为24。
  10. -p 3: 设置慢速攻击的延迟参数,这里设置为3秒。

如何结合使用ntopng和NetFlow/IPFIX检测Dos攻击,在上一篇文章中,我们已经做足了铺垫,本期我将会为大家展示并分析实操步骤。话不多说,直接进入正题。

一、Ntopng在模拟中发出的警报

应根据监控需求和可用资源对 Ntopng 进行配置和优化。在本研究中,大多数警报和警告都是以默认值激活的。显然,每个警报和警告都必须根据 Ntopng 的工作环境和网络拓扑结构进行评估。 模拟过程中的 Ntopng 检测列表:

SYN FLOOD(SYN 泛洪攻击)

通过发送大量的SYN请求来耗尽目标系统的资源,使其无法处理正常的连接请求。在TCP协议中,当客户端尝试建立到服务器的连接时,会发送一个SYN(同步)请求,服务器在收到该请求后会回复一个SYN-ACK(同步-确认)以表示连接的建立,最后客户端发送一个ACK(确认)以确认连接的建立。在SYN泛洪攻击中,攻击者发送大量的SYN请求但不发送最后的ACK,导致服务器在等待确认的状态下消耗资源,从而耗尽系统的资源,使得合法用户无法建立连接。

简而言之,SYN 泛洪攻击就是用虚假的连接请求使服务器饱和,从而阻止服务器处理真正的连接,造成服务中断。实施这种攻击有两种技术:

1. 使用假IP,即用不同的 IP 地址伪装自己的 IP 地址,这样服务器就会向一个假 IP 发送 SYN-ACK 回复。

2. 客户端故意不响应服务器,保持连接开放

当发送/接收的 SYN/秒数超过阈值 > 256 SYN/秒时,NTOPNG 就会触发警报,阈值可以更改。

TCP SYN SCAN(SYN扫描)

SYN 扫描是一种扫描类型,包括发送 SYN 标志激活的 TCP 数据包。

如果要检查的端口是开放的,攻击者将收到一个激活 SYN 和 ACK 标志的 TCP 数据包作为回复,并通过一个激活 RST 标志的 TCP 数据包关闭连接。

如果要控制的端口已关闭,攻击者将收到一个激活 RST 标志的 TCP 数据包,从而关闭连接。 在这两种情况下,连接都不会完成,因此几乎不会出现在日志文件中。

当 SYN 发送/接收/分钟(未应答)数超过阈值 > 256 SYN/分钟时,Ntopng 会触发警报。阈值可以更改。

TCP FIN SCAN(FIN扫描)

FIN 扫描是一种扫描类型,包括向受害者端口发送仅激活 FIN 标志的 TCP 数据包。在 RFC793 技术规范中,如果端口是关闭的,主机接收到 FIN 标志激活的数据包后,必须回复一个 RST 标志激活的数据包;如果端口是开放的,则应忽略该数据包。这样,攻击者就能知道哪些端口是开放的。但并非所有系统都遵守这些规范,在任何情况下都会返回一个 RST 标志激活的 TCP 数据包,从而使扫描失去作用。

当发送/接收 FINs/分钟(无响应)的数量超过阈值 > 256 FINs/分钟时,Ntopng 会触发警报。阈值可以更改。

SCAN DETECTED(扫描检测)

当检测到扫描(主机/端口)时,如果未完成的 TCP/UDP 流量超过指定限制,Ntopng 会触发警报... > 32 流量(分钟)。阈值可以更改。

FLOWS FLOOD

当新的客户端/服务器/秒流量超过阈值 > 256 流量/秒(分钟)时,Ntopng 会触发警告。阈值可以更改。

异常分数行为

注意异常分数行为,以发现威胁或缺陷。

当界面出现意想不到的行为时,ntopng警报可能会被触发。

异常流量行为

意外行为检查。

警告不正常的流量行为,以发现威胁或缺陷。

当界面出现意想不到的行为时,ntopng警报可能会被触发。

超过分数阈值

每台主机都有一个非负数值,用于存储分数值。该值的计算时间间隔为 1 分钟。当主机的分数在一分钟内超过分数阈值 > 5000 时,ntopng警告就会激活。阈值可以更改。

补充信息:Ntopng 如何计算得分

分数是一个数字指标,如果不为零,则表示存在某种问题,分数越高,相关问题越严重。

分数主要有三个来源:  

1. 数据流得分:表示数据流的糟糕程度,例如:有多次重传的数据流得分不为零。

2. 流量的源主机得分:与源主机相关联的数值,例如:在步骤 1 的流量中,如果只有目的地 -> 客户端的重传,则该流量的源主机得分为 0,但如果源端也有重传,则该值为正。

3. 流量的目的主机得分:与之前相同,但针对的是流量的目的主机。由于流量可能存在多个问题,因此流量上遇到的每个问题(例如流量上检测到的 TCP 重传或过时的 TLS 版本)都会影响得分。因此,得分是在该流量上发现的单个流量/源/目的得分的总和。

二、警告:最近的活跃流

“Warning Recently live flows”消息显示,Ntopng正在观察到网络中大量活跃的数据流,因此资源利用率很高,因此对安全的担忧;因此,有必要对此进行调查。

为了应付这一警告,可能需要:

检查当前网络活动,查看流量模式是否符合预期或是否存在异常。

查找可能存在的安全威胁或异常网络行为。

三、一个攻击和检测过程示例

使用slowhttptest进行HTTP慢速攻击

HTTP慢速攻击允许单个客户端使用最小带宽使服务器资源饱和。具体做法是尽可能保持与目标服务器的连接处于开放状态,恶意客户端连接到目标服务器并向其发送部分请求,即未完成 http 头的发送;具体来说,当客户端发出 HTTP 请求时,网络服务器只能在请求头发送完成后才能关闭 TCP 连接。这种技术迫使服务器保持连接开放,从而达到服务器可用连接的最大数量,使其无法访问其他客户端的合法请求。

下面是" slowhttptest"命令的示例:

slowhttptest -H -c 2000 -g -o output -i 10 -r 300 -t GET -u http://10.0.20.10 -x 24 -p 3

  1. -H: 启用慢速HTTP攻击中的Slow Headers攻击模式。
  2. -c 2000: 模拟的客户端数量,这里设置为2000个客户端。
  3. -g: 启用慢速HTTP攻击中的Slow Read攻击模式。
  4. -o output: 指定输出文件的名称为output。
  5. -i 10: 设置攻击间隔为10秒。
  6. -r 300: 设置攻击持续时间为300秒(5分钟)。
  7. -t GET: 指定HTTP请求的类型为GET。
  8. -u http://10.0.20.10: 指定目标服务器的URL为http://10.0.20.10。
  9. -x 24: 设置攻击时使用的线程数为24。
  10. -p 3: 设置慢速攻击的延迟参数,这里设置为3秒。

解释:

通过这个命令,slowhttptest将会模拟2000个客户端对http://10.0.20.10的GET请求,其中会包含Slow Headers攻击和Slow Read攻击,并持续5分钟。攻击过程中每10秒执行一次攻击,攻击的延迟设置为3秒,使用24个线程进行攻击。最后,攻击结果会输出到名为output的文件中。

在上面第一张图片中,您可以看到攻击的开始,在第二张图片中,您可以看到攻击的结束,每 5 秒钟就会更新一次状态,实时报告已建立的连接、打开的连接和关闭的连接。

如上图片是ntopng的主屏幕。

 

大约 30 秒后,Ntopng 检测到一次检测到的扫描,特别是Slow Header攻击没有扫描到,但 Ntopng 报告主机 10.0.10.10 和服务器 10.0.20.10 之间发生了超过 32 个不完整的 HTTP 流。当数据流得分/源数据流/目标数据流之和大于设定值(本例中为默认值 5000)时,Ntopng 会报告警报 SCORE THRESHOLD EXCEED,即 "超过得分阈值(在上一主题中解释过)"。

Ntopng 还会报告与 HTTP 数据流相关的警告,这种情况发生在网络中存在大量活动数据流、资源利用率高、安全隐患大的时候。显然,有必要了解流量模式是预期的还是异常的。在我们的案例中,显然存在持续的 DoS 攻击,因为有数以百计的数据流具有相同的源 IP。

F1  &  F2

这两张图是 -o -g 选项创建的 HTML 输出图,从图 F1 中可以看出,在前 10 秒内建立了 750 个连接,并打开了另外 750 个连接,这反映了命令中设置的选项,即以每秒 300 个连接的速度连接 2000 个连接。然而,在达到所需的 2000 个连接之前,服务器由于响应时间超过 3 秒而不可用,选项 -p 3  

F1→  slowhttptest -H -c 2000 -g -o output -i 10 -r 300 -t GET -u http://10.0.20.10 -x 24 -p 3

第二张图表示始终可用的服务(绿色区域),这是因为我出于测试目的将 -p(http 响应的等待时间间隔)设置为 225,在现实中,服务器响应的等待时间如此之长是不可想象的。

F2→slowhttptest -H -c 2000 -g -o output -i 10 -r 300 -t GET -u http://10.0.20.10 -x 24 -p 225

时间戳显示帧与帧之间的间隔为 10 秒;该间隔与命令中的 -i 设置相对应。

一个小问题是,所有 HTTP 请求都会超时关闭,这意味着连接会被服务器强制关闭。

HTTP状态代码408 "请求超时 "表示服务器因请求超时而终止连接。当服务器在允许的最长时间内没有收到客户端的完整请求时,就会返回该代码。所有请求都以这种方式结束,因此我们可以说服务器在应用层受到了 DoS 攻击。

通过观察ntopng提供的流量数据,可以发现可能的DoS攻击迹象,比如异常的流量模式、异常的连接请求等。ntopng能够提供关于网络流量的实时和历史信息,这使得管理员能够观察流量变化并可能识别出与DoS攻击相关的异常模式。

要更好地检测和应对DoS攻击,通常需要结合使用多种安全工具和技术,包括入侵检测系统(IDS)、入侵防御系统(IPS)、防火墙、负载均衡器等。这些工具可以帮助监控和过滤网络流量,并采取相应的措施来防御和减轻DoS攻击的影响。

最近更新

  1. leetcode705-Design HashSet

    2024-04-04 01:00:01       8 阅读
  2. Unity发布webgl之后打开streamingAssets中的html文件

    2024-04-04 01:00:01       8 阅读
  3. vue3、vue2中nextTick源码解析

    2024-04-04 01:00:01       8 阅读
  4. 高级IO——React服务器简单实现

    2024-04-04 01:00:01       8 阅读
  5. 将图片数据转换为张量(Go并发处理)

    2024-04-04 01:00:01       7 阅读
  6. go第三方库go.uber.org介绍

    2024-04-04 01:00:01       8 阅读
  7. 前后端AES对称加密 前端TS 后端Go

    2024-04-04 01:00:01       9 阅读

热门阅读

  1. Yocto理论基础之layer

    2024-04-04 01:00:01       4 阅读
  2. 网络安全专业术语

    2024-04-04 01:00:01       4 阅读
  3. 蓝桥杯刷题--python-36

    2024-04-04 01:00:01       2 阅读
  4. how to Optimize mysql select clause

    2024-04-04 01:00:01       4 阅读
  5. flutter一个bloc可以对应多个state

    2024-04-04 01:00:01       4 阅读
  6. 讨论 OpenSIPS 预加载路由的问题

    2024-04-04 01:00:01       5 阅读