当前位置: 首页 > 科技观察

通过网页中的6个特征字段检测钓鱼网站

时间:2023-03-22 11:35:30 科技观察

你可能认为钓鱼网站很难检测和跟踪,但实际上,许多钓鱼网站都包含唯一标识它们的HTML片段。本文以英国皇家邮政(RoyalMail)钓鱼网站为例。它们都包含字符串css_4WjozGK8ccMNs2W9MfwvMVZNPzpmiyysOUq4_0NulQo。这些长而随机的字符串是追踪网络钓鱼站点的极好指标,任何包含css_4WjozGK8ccMNs2W9MfwvMVZNPzpmiyysOUq4_0NulQo的页面几乎可以肯定是RoyalMail网络钓鱼工具包的一个实例。但是像这样的独特字符串是如何最终成为网络钓鱼工具检测标志的呢?不幸的是,我们不是RFC3514的模仿者,其中所有的IP数据包都是恶意的,如果它们是恶意的包含标志信号。不,这些识别字符串完全是网络钓鱼开发人员无意中包含的。钓鱼工具包是如何诞生的?钓鱼网站试图尽可能接近其真正的目标站点,但是,大多数钓鱼者不具备复制公司网站的技能。相反,他们走了一条捷径,只是通过一些小的调整来伪造原始网站的HTML。冒充目标网站并将其变成钓鱼工具的过程大致如下:(1)使用HTTrack等工具复制目标网站,也可以直接在浏览器中点击文件→保存。(2)调整HTML,添加请求受害者个人信息的表单。(3)将其与PHP后端粘合以保存收集的数据。然后可以轻松地将工具包部署在廉价的托管服务提供商上,并准备好收集受害者的详细信息。(4)钓鱼者通过复制整个网页,只需很少的技巧和努力就可以获得超逼真的钓鱼页面。然而,这种模拟模式意味着他们的网络钓鱼页面充满了他们实际上并不想要的东西。特别是,原始网站中的任何特殊字符串都可能意外出现在最终的网络钓鱼工具包中。这对我们来说很好,因为查找特殊字符串是检测网络钓鱼站点的一种非常简单可靠的方法。所谓的特殊字符串是一个足够长或足够复杂的字符串,它在互联网上是独一无二的,要么是因为它是随机字符(如64a9e3b8),要么只是因为它足够长。那么,问题来了:原网站中为什么会有这些字符串呢?事实证明,在现代开发实践中,网站上到处都是这些足够长或足够复杂的字符串。网页中的长字符串或复杂字符串是如何产生的?现代网站很少有100%的静态内容,当前的开发实践和网络安全功能意味着冗长的随机字符串可以通过多种方式出现在网站中间。以下是我看到的各种来源的概述:1.文件名中的哈希值现代网站通常使用Webpack或Parcel等“捆绑器”进行处理,将所有JavaScript和CSS组合到一个文档中。例如,网站的sidebar.css和footer.css可能会合并到一个styles.css文件中。为了确保浏览器获得这些文件的正确版本,打包器通常在文件名中包含一个哈希值。您的网页昨天可能一直在使用styles.64a9e3b8.css,但在更新样式表后,它现在正在使用styles.a4b3a5ee.css。此文件名更改会强制浏览器获取新文件,而不是依赖其缓存。但正是这些足够长或足够复杂的文件名导致了最近发现皇家邮政网络钓鱼工具包。以下是网络钓鱼者冒充真正的皇家邮政网站时HTML的样子:不幸的是,无论他们使用什么技术来冒充网站,文件名都不会改变。因此,通过urlscan.io很容易找到大量使用CSS文件的钓鱼网站:2.版本控制参考合作。一个相当普遍的选择是在网站的每个构建中嵌入来自VCS的引用,这有助于完成诸如将漏洞报告与当时运行的代码版本相关联等任务。例如,Monzo网站使用一个小的JavaScript片段嵌入gitcommithashes:VCS参考对安全人员来说非常有用,因为它们很容易在版本控制系统中找到。如果您发现钓鱼网站无意中包含了VCS引用,您可以直接查找该网站的编写时间(即该网站被伪造的时间)。3.SaaS网站的API密钥通常使用各种第三方服务,例如Intercom或reCAPTCHA。为了使用这些服务,网站通常需要包含相关的JavaScript库和API密钥。例如,Tide使用reCAPTCHA,并将此代码作为其集成的一部分:由于reCAPTCHA“sitekey”对于每个网站都是唯一的,任何包含字符串6Lclb0UaAAAAAJJVHqW2L8FXFAgpIlLZF3SPao3w且不在tide.co上的页面都可能是假冒网站。虽然SaaSAPI密钥非常独特并且是一个很好的指标,但它们变化很小,因此无法区分冒充同一网站的不同网络钓鱼工具包。一个网站可能会使用相同的API密钥多年,因此在此期间创建的任何工具包都将包含相同的密钥。出于同样的原因,API密钥对于识别何时创建网络钓鱼工具包也没有任何帮助。4.跨站请求伪造(CSRF)令牌事实证明,许多网络安全最佳实践也使网络钓鱼成为重要指标。其中最常见的可能是“跨站点请求伪造”(CSRF)令牌。简而言之,CSRF是一个漏洞,恶意网站可以利用该漏洞诱骗用户在目标网站上执行经过身份验证的操作。例如,这个HTML创建了一个按钮,当点击它时,发送一个POST请求到https://example.com/api/delete-my-account":如果example.com不是CSRF-proof,它将处理这个请求并删除毫无戒心的用户帐户。抵御CSRF的最常见方法是使用所谓的CSRF令牌,它是嵌入在每个网页中的随机值,服务器希望通过敏感请求发回该网页。例如,例如。com“删除我的帐户”按钮应该如下所示:服务器将拒绝任何不包含预期随机值的请求。CSRF令牌非常适合检测网络钓鱼站点,因为根据设计,它们是唯一的。5.内容安全策略NonceContentSecurityPolicy(CSP)是一种较新的安全措施,有助于防御跨站点脚本(XSS)攻击。它允许开发人员指定策略,例如只允许特定域的标签指定的“随机数”是允许的。要使用基于nonce的CSP,网站需要包含以下策略:并使用匹配nonce值的脚本标签:这有助于防止XSS攻击,因为恶意注入的JavaScript不会有匹配的nonce,因此浏览器将拒绝运行它。就像CSRF令牌一样,CSP随机数是完美的网络钓鱼工具包检测器:它们被设计为不可变的,因此通常会为每个请求随机生成长而复杂的字符串。6.子资源完整性散列现代浏览器中另一个可用的安全功能是子资源完整性(SRI),它通过允许您指定所需内容的散列来保护您免受恶意修改的JavaScript/CSS。侵权。当浏览器加载受SRI保护的JavaScript/CSS文件时,它会对内容进行哈希处理并将其与HTML中的预期哈希值进行比较。如果存在不匹配,则会引发漏洞。例如,研究人员的博客是这样描述如何为他们的CSS使用子资源完整性的:这个SRI哈希是根据研究人员网站上的所有CSS计算的,结果,即使研究人员使用的是公共博客模板,但它是高度不太可能有另一个网站具有相同的哈希值,它们必须使用完全相同的模板版本,并且必须包含所有相同的插件。对于拥有比研究人员更多的自定义站点的公司,几乎可以保证没有其他站点具有完全相同的CSS。如何使用这些又长又复杂的字符串来抵御网络钓鱼下次您分析网络钓鱼网站时,请注意其中一些有用的又长又复杂的字符串。文件名中的哈希值可能是您会遇到的最常见示例,这些也是最有用的示例,因为您可以在urlscan.io上搜索文件名以查找同一工具包的其他实例。本文翻译自:https://bradleyjkemp.dev/post/6-ways-to-detect-phishing-sites-using-high-entropy-strings/