本文翻译自著名安全研究员Scott Helme个人博客。
这听起来可能是一件很奇怪的事情,但在这一点上请坚持听我的。我们确实需要更多的钓鱼网站使用HTTPS,所有这些网站都使用HTTPS,加密它们所有的东西,而其中的原因并不是你曾经想象的那样。
互联网正在转向HTTPS
不可否认,网络正在以比我们历史上所见过的更快的速度向HTTPS迁移。我对互联网上前100万个网站的扫描结果显示,我们不仅在持续地使用HTTPS,而且我们使用HTTPS所做的事情的比例也在增加。如果我们想让整个互联网都转移到HTTPS上,那么我们就需要消除迁移到HTTPS的障碍,这主要是经济上和技术上的障碍。Let's Encrypt已经设法成功实现了这两点,这让我们有了一个免费的和开放的证书颁发机构,它会为网站颁发证书。当某种东西变为免费并且容易得到的时候,那么就不会只是有本事的人们才能得这种东西了。
HTTPS钓鱼的事情
最近在业内出现了很多的噪音,是关于Let's Encrypt颁发的证书被用来进行网络钓鱼的。我以前曾经写过一篇文章,《Let's Encrypt正在帮助坏人,但为什么他们应该这么做》,这样你就可以读到更多的细节。
如果你嫌文章太长而不想看的话,那么简而言之,文章的意思就是:如果你拥有一个域,那么你就会得到这个域的一个证书。像“你是一个好人吗?”、“你能答应我们给你一个证书后不做坏事吗?”或者其他任何一种标准都是不存在的。证书颁发机构只需要证明你拥有一个域,它们会给你颁发一个证书。
到去年为止,COMODO颁发了比Let's Encrypt多得多的钓鱼网站证书,但直到最近这才变成了人们的焦点话题。这里另一个有趣的地方是,我们知道Let's Encrypt对所有的证书进行记录,而COMODO并不这么做。当到了4月份,证书透明日志就会变成强制要求而不仅仅是像现在一样只是可选项了,到时候再看看这些数字会发生什么变化,那就非常有趣了。我不打算深入探讨这个问题,但我要深入探讨的是,为什么我们需要所有的钓鱼网站都使用HTTPS。
加密所有的东西
如果我们想要的是一个100%加密的网络,那么我们就需要加密所有的网站,不管你是否认同他们所做的事、所说的话以及所卖的物品等。100%就是100%,它也包括了“坏的东西”。而且,如果你被“钓鱼”了,那么我猜你仍然想要对你的PayPal用户名和密码进行同样的保护,不管它会被发送到哪里,但是让它进一步暴露其实是没有意义的。
实际上,关于我想让钓鱼网站使用HTTPS,还有另一个原因,那就是,在这种情况下,我们就可以更快地找到并且关闭它们。
证书透明机制
我之前提到过证书透明系统,这是2018年4月将要发布的一项令人惊叹的新要求,这意味着任何证书颁发机构颁发的证书都必须被放在公共日志中,供所有人查看。请思考一下这个问题。现在的情况是,当有人注册域名时,我们并不知道。当他们在DNS中设置一个域时,我们也不知道。当他们在HTTP上钓鱼时,我们还是不知道。但是现在,当他们拿到证书的时候,我们就找到了他们!证书透明日志是一种非常棒的方式,它可以通过监视新证书颁发来监测新的钓鱼网站的出现!
在这里,我使用的是Censys,还有其它的网站也可以做这件事,但是这项查询向我们展示了所有包含“paypal”子字符串的证书。如果你浏览一下这个列表,你就会看到一系列的域。其中一部分很明显是钓鱼网站,但也有很多是合法网站,我们无法简单地通过自动匹配“paypal”子字符串就推断网站是钓鱼网站/问题网站/攻击者网站/敌对网站,从而封禁这些网站。
如果你是PayPal网站的话,请想象一下,如果你监视着这些日志并看到正在创建的证书,会怎么样?这些证书中的大部分会延迟多达24小时才出现,但很多时候,几分钟内它们就会出现。你可能会看到其中一个证书正在颁发,并且很可能在他们还没有完成设置之前你就找到了这个网站!一旦它上线,你就会发现,它明显是一个钓鱼网站,然后你就可以把它提交给谷歌的SafeBrowsing。你甚至可以在钓鱼者有机会发送第一轮电子邮件之前,就举报并屏蔽它们。
现在让我们将它与HTTP进行比较,在没有证书颁发的情况下,你怎么知道那些以你的客户为攻击目标的域的呢?你是否还等着接收他们的邮件,你是否要等到他们被钓鱼并且报告说他们账户的钱已经偷光了?几乎所有这些场景都是在发生了一些糟糕的事情之后才会出现。证书透明系统立足于当前的情况,默认钓鱼者已经存在,并迫使他们公开披露他们将要获得的证书。
通配型证书
对于Let's Encrypt以及其它证书颁发机构目前所颁发的证书,你必须在其中列出你的子域名。如果我想要一个证书,其中可能会有“”和“”这样的域名。如果我想要一个证书进行网络钓鱼,它也会列出“”这样的域名,那么我们就可以用上面的方法找到这个钓鱼网站。
但是如果我有一个“”这样的域名的话,会怎么样?这样的话,我就能像“”一样做事了,除非通过“paypal”子字符串不能匹配到这个证书。但是这却带来了一个问题,我们可能只能通过传统的方法来找到这个域,但是如果有人拥有“”这样的域,而一些子域则被不同的站点(如PayPal或eBay)所使用,那么这个域本身很可能会被SafeBrowsing所禁止,而不只是禁止它的钓鱼子域。你无法从Let's Encrypt得到通配型证书,因为他们不支持这种类型的证书,但当他们以后支持的时候,看看他们怎样使用就会很有趣了。
我们可以在别的地方解决这个问题
SafeBrowsingsafe已经被证明是一种可靠的方法,在钓鱼网站出现时可以抵消他们的影响。发现钓鱼证书然后请求证书颁发机构撤销它们是一种毫无意义的行为,因为撤销机制已经被攻陷,所以,这类系统当然也就很容易被攻破了。
关于Let's Encrypt和其它证书颁发机构不应该颁发这些证书的论调的有趣之处在于,人们似乎通常都很乐于进行域名注册,注册的目的在于,让DNS服务提供商能够解析这些域名,而浏览器能够访问这些域,这样人们就可以卖出这些域名了,但是,如果一个证书颁发机构为其颁发了证书的话,就会引起骚动了。
就个人而言,我不太明白人们为什么把防范钓鱼网站的焦点放在证书颁发上面,我认为我们可以在其它很多方面做出更多的努力,那会产生更好的效果!尽管如此,现在还是让我们继续期待钓鱼者能拿到证书,并将他们闪亮的新钓鱼网站域名记录到证书透明日志中吧,这样我们就可以方便地找到它们了。
领取专属 10元无门槛券
私享最新 技术干货