什么是枚举攻击?如何防止它?
当黑客使用暴力破解技术来查看网络服务器数据库中是否存在特定数据时,这被称为枚举攻击。此信息可能包括用于简单枚举攻击的用户名和密码。更复杂的攻击可能会确认不良的网络设置并揭示主机名、SNMP 和 DNS 信息。
每个与用户数据库交互的 Web 应用程序模块,如果暴露在外,都有可能发展成为枚举攻击的载体。
以下两个 Web 应用程序经常成为枚举攻击的目标:
密码重置页面
登录页面
枚举是渗透测试的重要组成部分,因为使这些攻击能够让黑客绕过信息安全屏障的漏洞。
枚举攻击是如何工作的?
在枚举攻击中,黑客搜索证明提交的凭据准确性的独特服务器响应。提交在线表单后,最明显的响应是字段身份验证消息。我们将使用用户名枚举攻击(其中攻击者试图在 Web 服务器数据库中查找用户名)的示例来描述此过程。
利用服务器响应时间验证条目
网络攻击的最佳设置是上述反馈系统。验证表单条目的服务器响应通常要微妙得多。使用渗透测试工具监控服务器响应时间是一种更复杂的方法。服务器对无效用户名条目的响应通常比对可接受的用户名提交的响应花费更长时间。
用户名枚举攻击
通常,此攻击序列的第一阶段仅关注用户名。此时的目标是在数据库中找到最合法的用户名。具有较弱应用程序安全性的 Web 服务器将使用无效用户名消息来识别不存在的用户名。
威胁行为者可以确认用户名不存在于 Web 服务器数据库中,因为此消息仅验证用户名的有效性。一旦获得了大量经过验证的用户名,网络犯罪分子就会使用各种用户名变体提交相同的密码。
用户名变体可以通过暴力破解攻击方法或从获取的被盗凭据列表中生成。然后,网络犯罪分子将使用密码重复此过程,对所有已验证的帐户使用暴力破解方法,直到获得成功的组合。
任何在其过程中包含数据库验证的 Web 应用程序功能都容易受到此类攻击。Web 应用程序开发人员应避免可预测的时间序列,以防止黑客在服务器响应时间和合法数据条目之间建立关联。应将随机时间段添加到服务器响应中,以说明正确和错误的条目。
复杂的枚举攻击示例
侦察任务使用复杂的枚举技术来查找可探索的软件漏洞。以下是其中一些攻击示例。
LDAP 枚举
轻量级目录访问协议 (LDAP) 用于访问目录服务,这些服务包括用户记录的层次结构。
成功的 LDAP 枚举攻击可能会暴露以下敏感数据:
用户名和地址
联系方式
关于业务部门的信息。
NetBIOS 枚举
端点可以通过 NetBIOS 枚举网络基本输入输出系统 (NetBIOS) API 访问 LAN 资源。
每个 NetBIOS 协议都有一个 16 个字符的字符串,用于通过 TCP/IP 标识网络设备。
需要启用打印机和文件服务才能支持 NetBIOS 枚举攻击。
这些攻击的目标是 Microsoft 操作系统的端口 139。
在成功进行 NetBIOS 枚举尝试后,可能对受损机器进行以下攻击。
受感染的端点可能加入僵尸网络并用于执行 DDoS 攻击。
为了访问关键资源,窃贼可以使用其他枚举的特权访问帐户。
SNMP 枚举
简单网络管理协议 (SNMP) 是一个用于获取或更改网络设备数据的框架。网络设备可以访问 SNMP,而不管它们使用什么软件,因为它与软件无关。
网络攻击会枚举远程设备上的 SNMP 以获取以下信息:
流量模式
远程设备的标识符
识别有关网络资源和设备的数据
如何防止枚举攻击?
以下列表包含一些网络安全措施,这些措施可以阻止各种枚举攻击。
多因素身份验证 (MFA) - 通过在登录时强制执行 MFA,网络犯罪分子无法访问任何服务器回复,除非首先提供正确的身份验证令牌。网络攻击者也极不可能破坏接收这些令牌的不同端点。
在所有表单上使用验证码 - 尽管验证码在防止自动枚举攻击方面不如 MFA 有效,但它们确实起到了作用。
减少登录尝试次数;MFA 和验证码使黑客更难以登录,从而减缓了他们的攻击速度。速率限制可以使事情变得更加令人沮丧,它会防止来自同一 IP 地址的预定次数的失败尝试后登录过程。
使用 Web 应用程序防火墙 (WAF) 防止来自单个 IP 地址的未经授权的登录尝试。
实施网络安全意识培训 - 教导员工识别常见的策略(例如社交工程和网络钓鱼),这些策略用于在枚举过程之外窃取敏感数据。
如果登录表单使用 API,请混淆回复,以便它们不会揭示每个字段条目的有效性。