译者:qqwe_01
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
因为并不是每个人都拥有NSA Quantum系统那样的能力,一个穷人必须考虑一下如何以较低代价黑入目标网络,对吧?
自90年代以来,误植已经被认知甚至是滥用,主要用于网络钓鱼,但是对于水坑攻击来说仍然是有利可图的。让我们来一探究竟吧!
你会不会经常把google.com错输成google.co?我很烦这种情况但它经常发生在我身上。这种情况每天也发生在数千人身上。所以我的主要想法是查找与流行的.com网站相应的可用的.co域名,看看情况有多糟糕:测试一个恶意的误植域名搭载漏洞利用套件的场景,打造一个穷人能用的QUANTUM系统!
漏洞攻击套件通过误植域名感染受害者的例子
例如,你可能因为漏拼一个字母而不小心访问到这些国家的顶级域名:
.com – > .cm(喀麦隆的顶级域名)
.com – > .co(哥伦比亚的顶级域名)
.com – > .om(阿曼顶级域名)
.net – > .ne(尼日尔顶级域名)
.net – > .et(埃塞俄比亚的顶级域名)
…
看到了吧,我们能利用的域名实在是太丰富了!接下来,我将用哥伦比亚(.co)的顶级域名做实验。
第一步:寻找流行的域名
我们来看看Alexa网站的排行榜,并寻找可用的域名。
获取最受欢迎的网站是非常容易的,这里是如何获得前2000的.com域名的方法
$ wget http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
$ unzip top-1m.csv.zip
$ cut -d”,” -f 2 top-1m.csv | grep “com$” | rev | cut -d”.” -f 1,2 | uniq | rev | head -n 2000 > top-2000.com.txt
我用python写了个小脚本来批量检查域名可用性:在.com域中,有320个.co域名可用(大约占16%),我选了其中8个看起来利用价值比较高的进行测试(排名靠前的大部分域名都是广告追踪器所以人们不会在地址栏手动输入,因此我把它们剔除了)。这些候选链接访问量排名全都在500和1000之间——这已足以让我们大展身手了。
第二步:搭建“水坑”服务
我在cheap VPS on CockBox上给自己买了一个便宜的VPS,用于这个测试(我获得的IP地理定位在塞舌尔共和国,真是又酷又隐蔽?)。设置网页服务器来托管用来重定向受害者的页面是相当容易的(我刚刚安装了PHP / MySQL来运行Piwik分析平台)。
这个想法是让访问者先加载一个无害的JavaScript代码,再把他们神不知鬼不觉地重定向到预期的.com网站。代码这样写就很好使:
<html>
<head>
<title>Loading...</title>
<meta http-equiv="refresh" content="1; url=http://<legitimatewebsite.com>/" />
<!-- FOXACID SPLOITZ GOES BELOW -->
<script type="text/javascript">
// something bad in here, I guess?
// I put a Piwik JS tracking code to see users that enabled JS
</script>
</head>
Loading...
</html>
<?php
// Just some logs to track "victims"
$cookies = str_replace("n", '', $_SERVER['HTTP_COOKIE']);
$line = date('Y-m-d H:i:s') . ";$_SERVER[REMOTE_ADDR];$_SERVER[HTTP_HOST];$_SERVER[HTTP_REFERER];$_SERVER[REQUEST_URI];"$_SERVER[HTTP_USER_AGENT]";"$cookies"";
file_put_contents('../.log', $line . PHP_EOL, FILE_APPEND);
?>
第三步:数钱!
啊,现在我们把所有的域名都设置好了,只等着世界各地的冤大头们来访问服务器,完美!
优点:它相当隐秘,不是基于电子邮件,受害者很可能不会看到发生了什么。
缺点:随机结果+等待时间。
结果和统计
这个实验持续了40天,我的日志文件中有5430个条目。大多数是爬虫和机器人,过滤掉它们之后我得到了共计916个独立IP对“水坑”服务器发起的1765次页面请求(大约23 次/天)。分析请求中的User-Agent值,可以确定这些请求都是人们在真正的浏览器的地址栏中手动输入URL并且输错之后引起的,那么看来这招确实有效!
遗憾的是,只有392个独立的访问者加载了我的Piwik JavaScript代码。我怀疑之所以效果不好,是因为大多数人启用了广告拦截/隐私插件。这也算是个好消息吧,虽然,如果我用上真正的漏洞利用套件的话,结果就要另当别论了。。。
有趣的是,“被劫持”的域名的分布显示出一定的地域性。一个被误植域名的伊朗新闻网站正在按照预期的方式接收许多来自伊朗的连接(在右图,我们可以看到超过50%的流量来自伊朗)。
全球与伊朗网站
这次攻击的实际成本是每次点击$ 0.05(按独立IP计算),这比电子商务网站的平均广告PPC(按点击付费)便宜。由于我都是选择很受欢迎的域名来误植,所以如果是其他不太知名的域名,你可能会获得不同的结果,但仍然,非常有利可图!
WhatsApp泄漏
值得注意的是,从WhatsApp客户端创建了的连接(对我的“水坑”服务器发起的简单的GET /请求)有800多个,我怀疑当某人输入一个完整的URL时,会发生这种情况。众所周知, WhatsApp会为每次击键发起一次请求。
通过这个数据泄漏,我可以看到对被我误植全部8个WhatsApp地址的请求所带的ip和时间戳在受害者输入最后的一个字母m前被发送到我的.co服务器。这是一个可怕的隐私问题。。。
误植域名的欺诈活动正野蛮发展
我们已经看到了活跃的DNS误植活动,特别是在俄罗斯,针对各种VPN和托管服务提供商。(感谢dustyfresh的发现)。
该计划非常聪明,他们注册了大量不正确的域名,将其affiliate ID注入302重定向到合法网站。受害者几乎看不见,当用户从访问的网站购买任何东西时,攻击者将分享部分利润。
据证实,一个滥用公司(还有许多其他公司)就已经为一个犯罪团伙提供了400美元。
误植域名中注入affiliate ID的HTTP事务处理情况
译者注:若想了解更多关于affiliate ID,可访问:
https://opensrs.com/docs/opensrsapiperl/Affiliate_ID.html
结论
尽管我们已经证明它可以用于欺诈或者公司间谍活动的针对性或机会主义的攻击,但从统计数据可以看出,鲜有人会滥用这种方式来大量大规模传播勒索软件。
例如,一位威胁角色的扮演者可能想要利用这种方法来感染某个公司局域网内的计算机。假设你是针对“随机大公司”,他们有一些内部和外部域名,我敢打赌你可以买几十个误植域名,并在不到一个月的时间里渗透进去。只需要等待几天/周,直到有人犯下第一个错误并紧接着带来大规模感染[1]:因此,你进入了目标。这像极了我们之前模拟的情况。
[1] 算不上0day,但用来网络钓鱼也非常好;-)
如何保护自己?
您应该从标准的企业安全和最佳实践开始(要事第一!):
记录所有内容,包括DNS请求。然后,您可以在访问新注册的域名(<3个月)时设置警报。很可能你会得到很多警报,但这真的是要寻找的东西,结合您的域名上的列文斯坦距离,您可以解除大量的误报。
如果你想要更主动一些,你一定要尝试下Dnstwist这个相似/钓鱼域名监测工具。
感谢@ scriptjunkie1给了我这个研究的想法。如果您对其误植攻击感兴趣,请从OPCDE 2017查看他的幻灯片!