今天,我们介绍并解释一种在客户中越来越流行的攻击工具:帐户检查器。
这种撞库攻击工具并不新鲜,但由于我们将在下文讨论的原因,其使用率正在急剧上升。 尽管从概念上来说非常简单且易于使用,但帐户检查器的功能却极其强大。
帐户检查器是一种攻击工具,它获取泄露的用户名/密码对(即“凭证”)列表并针对目标网站进行测试。
功能强大的帐户检查器软件包只需 100 美元,而且对手还可以使用现成的 Web 自动化工具包(如 Mechanize、PhantomJS、IEC.py、Sikuli、Selenium 或 iMacros)创建自己的帐户检查器。 这些工具包减轻了编写帐户检查器和进行撞库攻击攻击的技术负担。
下面是一个名为namechk.com的“良性”帐户检查器,它说明了帐户检查器的工作原理。 此工具检查给定的用户名是否在各种社交网络上可用。 我们检查了用户名“shapesecurity”,该工具正确识别了所有使用该用户名的网站。
该服务使用脚本自动针对图像中可见的所有网站(例如 Blogger、Facebook、Youtube、Twitter 等)测试给定的用户名。
犯罪账户检查器的功能与上述工具相同,并增加了其他功能,例如检查各种密码(基于猜测算法或前 25 个密码之一)是否在该网站上有效。 检查用户名和密码的整个过程,加上恶意的意图,导致了撞库攻击攻击的广泛存在。
微软的一项研究发现,平均每个用户拥有 6 个以上的密码,每个密码在 4 个不同的网站上共享,并且每个用户大约有 25 个需要密码的帐户。 这意味着任何地方的泄露都会导致 3.9 个顶级网站的密码被公开。
Brian Krebs撰写了以下有关现成的帐户检查器的文章。 这与入侵希尔顿所使用的工具类型相同。
该检查器能够确定凭证是否有效,并抓取积分余额、信用卡号的最后四位数字以及卡的账单地址。
以下是帐户检查器的底层代码示例。 此帐户检查器测试大量凭证。 当它找到一对有效的凭证时,它会抓取 PII 并窃取账户中的储值和信用卡详细信息。
任何帐户检查器的燃料都是凭证列表。 对于攻击者来说幸运的是,有大量凭证是公开的。
每天都有数百份凭证通过这个推特账号泄露: twitter.com/dumpmon 。 许多安全专家使用此列表来识别其各自网站上的哪些用户帐户已被泄露,并锁定被泄露的帐户。 显然,攻击者还会利用该列表与账户检查器结合来查找易受攻击的账户,然后利用这些账户进行各种欺诈活动。
要回答这个问题,我们需要了解账户检查器的工作机制。
帐户检查器通过使用登录页面的静态表单元素作为隐式 API 来工作。在上面的代码示例中,攻击者引用了各种表单元素名称以便与目标网页进行交互。 大多数网站无法区分此类互动与正常的人际互动
并欣然接受攻击流量。 这使得攻击者可以使用帐户检查器自动化网站,并在几天或几周内轻松进行数百万次测试(通常使用大型分布式僵尸网络和大量 IP 地址以避免速率和容量限制)。 因此,即使是非常不老练的攻击者也可以轻易地对世界上许多最大的网站发动强大的攻击。
为了保护网站免受此类活动(我们称之为“不必要的自动化”)的侵害,我们使用了一种攻击者熟悉的方法——在每次浏览页面时更改网站的底层代码。 正如恶意软件作者长期以来一直使用多态代码,通过不断呈现不同的签名来逃避防病毒产品一样,Shape 的解决方案创建了一个移动目标,从而挫败了那些试图自动化网站的脚本。 这使得系统管理员能够增加攻击者必须投入的精力才能成功编写脚本或自动化给定的网站。
当然,精明的读者会指出以不同方式进行攻击的多种方法。 考虑此类攻击(DOM、GUI 和其他)超出了本文的范围(但可能是未来文章的主题)。 当然,Shape非常致力于全面击败所有此类攻击,并且在每个层面上都有解决方案。