Blast-RADIUS 是一种影响 RADIUS 协议(依据 RFC 2865)的安全漏洞。它允许位于 RADIUS 客户端和服务器之间的中间人攻击者伪造一个有效的访问接受(access-accept)消息,来响应实际已经失败的认证请求。这种伪造使攻击者能够在无需猜测或强制破解密码和共享密钥的情况下,获得对网络设备和服务的访问权限。攻击者在请求中插入了一个恶意属性,导致合法服务器响应中的认证信息与攻击者伪造的消息发生碰撞。这使得攻击者能够将拒绝转变为接受,并添加任意的协议属性。然而,攻击者并不会获取任何用户凭据。该漏洞已在 CVE-2024-3596 中描述。
具体来说,该攻击是通过计算碰撞来攻击响应认证器的 MD5 签名。该攻击代表了一个协议漏洞,因此影响所有不使用 EAP 认证方法并通过 UDP 未加密工作的 RADIUS 实现。特别是,密码认证协议(PAP)和质询握手认证协议(CHAP)方法受到影响。
图1 对使用 PAP 方法进行 RADIUS 验证的 Blast-RADIUS 攻击
如果无法直接使用 TLS 或 DTLS 进行传输加密,可以使用 RFC 2869 中描述的可选 RADIUS 属性 "Message-Authenticator" 作为替代方法。
该方法为整个 RADIUS 数据包计算一个 HMAC-MD5 校验和。未通过此完整性检查的数据包必须被静默丢弃。根据当前的状态,没有共享密钥的情况下,HMAC-MD5 校验和无法被伪造。
如果在所有数据包中都要求使用有效的消息认证属性,这种攻击将变得不可能。然而,这个属性仅在 EAP 认证方法中是强制性的,而在 PAP 和 CHAP 中并不是。即使在 RFC 5080 中也只是定义了一个 "SHOULD"(建议使用)。
要检查您的实现是否存在漏洞,可以捕获 RADIUS 服务器和 RADIUS 客户端之间的通信数据包,并根据受影响的协议特性进行筛选。我们可以使用 ProfiShark 或 IOTA 捕获数据包,基于 RADIUS 协议对 IOTA 进行预筛选,并使用 Wireshark 进行分析。需要捕获 RADIUS 客户端与服务器之间的数据包,例如,在图2所示的内联模式下进行捕获。
图2 在 RADIUS 客户端(交换机)和 RADIUS 服务器之间定位 IOTA 或 ProfiShark
在 ProfiShark Manager 中,我们需要在 "Network Ports" 选项卡中将 ProfiShark 设置为内联模式(即取消勾选 "Span Mode" 复选框,如图 3 所示),然后将其内联集成到我们的网络中(如图 2 所示)。
图3 在 ProfiShark Manager 中禁用 SPAN 模式,将 ProfiShark 内联集成到 RADIUS 客户端和 RADIUS 服务器之间
接下来,在 "Capture" 选项卡中,根据需要设置捕获目录,并通过点击 "Start Capture" 按钮开始捕获数据,直到我们获取到足够的数据为止。
图4 在 ProfiShark Manager 中设置捕获目录并开始捕获
首先,我们需要确保在 IOTA 管理界面的 "Capture > Interface Configuration" 页面上,将 IOTA 的捕获接口设置为内联模式。
图5 将端口控制设置为内联模式
然后,我们将 IOTA 内联集成到生产网络中,并通过按下设备上的物理按钮或在 "Capture > Capture Control" 页面上点击 "Start Capture" 按钮开始捕获数据。
图6 通过 "Capture Control" 页面上的 "Start Capture" 按钮开始捕获
现在,我们可以通过应用程序或协议栈过滤器对 RADIUS 协议进行过滤。最简单的方法是过滤 "APPLICATION" 属性,并将其值设置为 "RADIUS"(如图 7 所示),这样只会获取 RADIUS 数据包。另一种选择是通过 "PROTOCOL_STACK" 进行过滤,设置值为 "Ethernet | IPv4 | UDP | RADIUS"。
图7 过滤 RADIUS 数据包
在正确过滤协议后,我们可以滚动至概览仪表板的底部,直到看到流列表。接下来,我们需要选择要进一步分析的流,并点击左侧的下载按钮。
图8 可下载的流列表
例如,我们可以使用 Wireshark 检查 RADIUS 请求中是否包含易受攻击的属性。首先,我们需要打开位于之前在 ProfiShark Manager 中配置的目录或从 IOTA 下载的文件夹中的 PCAPNG 文件。接下来,我们需要一个显示过滤器来获取 RADIUS Access-Requests(代码 1)、Access-Accepts(代码 2)、Access-Rejects(代码 3)和 Access-Challenges(代码 11),但不包括使用 EAP 方法或带有 "Message-Authenticator" 属性值对的 RADIUS 消息,因为它们不受此漏洞影响。为此,我们可以使用显示过滤器 “(radius.code in {1,2,3,11}) and not (radius.Message_Authenticator or eap)”,如图 9 所示。这样,我们只会获取受此协议漏洞影响的 RADIUS 数据包,并且可以看到受影响产品的源 IP 地址。
图9 在 Wireshark 中使用显示过滤器筛选潜在易受攻击的 RADIUS 数据包的截图
作为使用 “Message-Authenticator” 属性值对来实现解决方案的数据包示例,我们可以参考图10,其中展示了该解决方案的实现。
图10 Wireshark 中带有消息认证器属性/值对的 RADIUS 访问请求截图。在此情况下,它也是一个不易受攻击的 EAP 认证
IOTA 和 ProfiShark 可以帮助我们轻松高精度地收集 RADIUS 数据包的包级数据并进行分析。Wireshark 通过使用上述显示过滤器支持我们高效分析收集到的数据,快速筛选出易受攻击的 RADIUS 实现。
作为应对 Blast-RADIUS 攻击的替代方案,可以使用 “Message-Authenticator” 属性值对,或者在 RADIUS 客户端到 RADIUS 服务器的传输过程中,通过 RadSec 或 IPSec 使用 TLS 传输加密来保护 RADIUS 数据包。
作者: 艾体宝IT, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3989660.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论