前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于8月31日维基解密被攻击的观察与分析

关于8月31日维基解密被攻击的观察与分析

作者头像
FB客服
发布于 2018-02-27 09:53:16
发布于 2018-02-27 09:53:16
1.1K0
举报
文章被收录于专栏:FreeBufFreeBuf

十几天前,维基解密遭受了一次攻击,导致很多访问者看到了“OurMine”的声明,他们声称已经获取了维基解密服务器的控制权。这次攻击之后,很多人(包括维基解密的粉丝及其死对头)在没有基础知识与技术功底,且未查明事件真相的情况下,发表了很多观点。所以在这里,作者从技术性的观察角度,来陈述一些事实。

猜测

第一:有些人看到的东西显然不是维基解密的网站,很多人拿出了这样或者那样的截图,然后便有人推测:维基解密的服务器被入侵,入侵者修改了其内容。这是一个十分大胆的推测:因为从用户浏览器到网页显示的整个过程是相当复杂的,其中有很多因素可以导致最后的判断出错。

第二:对于维基解密,另一种猜测是服务器并没有被入侵,但是域名wikileaks.org被黑客当成目标且成功接管,观察发现域名wikileaks.org并没有被解析成以往的IP地址,而是被解析到了另一个主机,这是如何实现的?后果是什么样的?

观察与分析

众所周知,对于互联网上的一些事件,调查起来通常都比较困难,外部分析师通常获取不到全部的数据,有时分析刚开始,就已经太迟了,因为数据已经改变了。而内部分析师几乎都是噤若寒蝉,有时甚至连蒙带骗。不可否认,有一些组织的交流是十分开放的(参见Cloudflare报告或Gandi报告),但是他们只是例外。在这次的攻击中,维基解密的反应更像是一个典型的公司,他们否认这个问题,不向用户发布任何有价值的东西,并试图逐渐淡化带来的影响。因此我们阅读到的很多网络事件的声明都没有足够的事实作为支撑。由于维基解密身处众多热点争议的中心,问题就变得更糟糕了,由于没有任何有价值的回应,一些维基解密的粉丝就开始了妄加猜测。

所以问题的关键就在于域名wikileaks.org。为了解释到底发生了什么,我们需要从DNS讲起,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。当一般Web浏览器访问http://www.okstate.com/时,用户机器上的软件执行名称为 www.okstate.com的DNS查询,并返回HTTP服务器的IP地址。最后连接到服务器。(注:一些黑客通过伪造DNS服务器将用户引向错误网站,以达到窃取用户隐私信息的目的。这种DNS服务器大约有68000台。)

不过在一些情况下,域名持有者(如wikileaks.org)会选择一个注册商,然后再注册商提供的控制面板中输入解析的IP地址,如果使用了弱密码,那么账号就非常容易被攻破,也就是账号被盗用,这种攻击非常普遍,而且也说明了并非所有攻击都是十分高明的。

那么维基解密发生了什么呢?我们使用了基于被动DNS的DNSDB,它可以观察到DNS流量,并允许用户查询改变之前的情况。说了这么多,NDSDB里到底有什么?

在攻击期间,注册表正在对非法的服务器组进行回复。

所以名称服务器被篡改了,根据DNSDB,这些流氓服务器提供了一组不同的NS(名称服务器):

要注意的是,DNS主机Rival并不是此次攻击的共犯,这可能只是一些流氓客户。现今,大多数大型服务提供商中都存在这种情况。

当你将所有内容复原时,可以看到最后一次更改whois输出的日期:

很明显,流氓名称服务器正在提供指向“假”网站的IP地址。再次回到DNSDB中:

维基解密的正常IP地址前缀为95.211.113.XXX,141.105.XXX和195.35.109.XXX(如果你想要查看它们,可以使用DNS Looking Glass), 181.215.237.148是由Rival托管的流氓网站的IP,你可以使用whois工具查询:

这表明这个前缀是在智利分配的,黑客无法改变服务于wikileaks.org的名称服务器。

社交网络上的很多人声称,这次袭击是由“DNS中毒”造成的,可见多数人对DNS中毒一知半解。对域名配置系统的攻击是很常见的,例如,2013年,臭名昭著的SEA(叙利亚电子军)对纽约时报网站进行了攻击(详见纽约时报与一份技术分析),他们拿下了纽约时报的DNS登记服务器( Melbourne IT),修改解析,指向自己的服务器。最近还有一次对圣路易斯联邦储备委员会的攻击。这种攻击的后果是什么?如上所述,一旦你控制DNS,你就可以控制所有内容。您可以将用户重定向到伪造的网站(不仅是外部访问者,而且还包括目标组织的员工,可以连接到内部服务,潜在窃取密码和其他信息),劫持电子邮件等。因此,声称“服务器没有被泄露“没有意义。如果成功对域名进行攻击,那么攻击者就不需要入侵服务器。

以上哪部分在维基解密案件中被破解?分析了外部原因,我可以肯定地说,名称服务器被改变了。维基解密本身,注册商(Dynado)或注册管理机构(.org,由PIR管理,技术上由Afilias管理)都有弱点。从现有的信息来看,人们很难说清楚问题出在哪里。但根据推测,大多数时候问题出在用户,不过薄弱的环节还有注册商或注册管理机构,因为在过去它们都被曝出了严重的安全漏洞。

之前我说过,当你控制域名时,你可以将外部和内部的访问者发送到你想要的服务器。但是这种说法并不是完全正确的,因为良好的安全性依赖于深度的防御,即使您的域名受到威胁,也可采取一些措施来降低风险。其中一个就有使用HTTPS(维基解密就在使用),从纯HTTP站点重定向,HSTS(在RFC 6797中标准化)以避免普通访问者通过不安全的HTTP访问。维基解密也在使用:

这些技术至少会引起网站管理者的警惕,同样,使用Tor进入.onion网址也将有所帮助。但是我没有能够找到维基解密的.onion(http://suw74isz7wqzpmgu.onion/不起作用,http://wlupld3ptjvsgwqw.onion似乎只是为了上传用的)。

维基解密也可以通过启用注册表锁定来限制帐户被攻击的风险,这是大多数顶级域名(包括.org)提供的技术,以防止未经授权的更改。激活时,需要额外的步骤和检查。

有趣的是,有许多人把这种攻击称之为“DNS毒化”,针对这种特定攻击的最佳防护DNSSEC并未被维基解密激活(在wikileaks.org域名中有一个DNSSEC密钥,但在父级没有签名和DS记录 )。如果wikileaks.org域名被签名,并且如果使用了验证的DNS解析器,那么维基解密就不会被“DNS毒化”。当然,如果黑客是对持有人账户,注册商或注册管理机构进行入侵,DNSSEC就不会有太大的用处。

维基解密为其名称服务器使用胶合记录。它们是域名服务器的名称服务器名称, 要允许DNS客户端查询它们,父级必须知道此名称服务器的IP地址,这就是所谓的粘合记录。通过对DNSDB的记录,ns1.wikileaks.org域名的粘合记录显然已被修改:(注意攻击后几个小时):

一些DNSDB探测确实注意到了这个IP地址,意味着这是本地主机,

由于DNS严重依赖于缓存,即使在配置被修复之后,信息仍然能被看到。 在这里,作者使用RIPE Atlas探针与Atlas解析工具,以查看有多少探针仍然能看到错误的值(注意日期和时间,全部以UTC为单位,这是分析网络问题时的规则):

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《最新出炉》系列入门篇-Python+Playwright自动化测试-51- 字符串操作 - 上篇
在日常的自动化测试工作中进行断言的时候,我们可能经常遇到的场景。从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言。这个时候就需要我们对字符串进行操作,宏哥这里介绍两种方法:正则和字符串切片函数split()。
北京-宏哥
2024/06/12
2680
《最新出炉》系列入门篇-Python+Playwright自动化测试-51- 字符串操作 - 上篇
《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
自动化测试中进行断言的时候,我们可能经常遇到的场景。从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言。这个时候就需要我们对字符串进行操作,宏哥这里介绍两种方法:正则和字符串切片函数split()。
北京-宏哥
2021/12/16
6760
《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
《最新出炉》系列入门篇-Python+Playwright自动化测试-49-Route类拦截修改请求-下篇
在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源。例如:可能页面上图片比较多,而我们又不关心图片内容。那么,在加载页面时,可以选择不加载图片,以提高页面加载速度。这里我们主要用到一个Route类拦截修改请求 。
北京-宏哥
2024/05/10
2460
《最新出炉》系列入门篇-Python+Playwright自动化测试-49-Route类拦截修改请求-下篇
Python3快速入门(七)——Pyth
re 模块提供 Perl 风格的正则表达式模式,使 Python 语言拥有全部的正则表达式功能。
py3study
2020/01/03
8630
《刚刚问世》系列初窥篇-Java+Playwright自动化测试-5-创建首个自动化脚本(详细教程)
前面几篇宏哥介绍了两种(java和maven)环境搭建和浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本。前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先宏哥搭建好的环境中创建首个完整的自动化测试脚本,让小伙伴或者童鞋们提前感受感受,也是为了激起大家的学习兴趣。
北京-宏哥
2024/12/24
1610
爬虫系列(6)数据提取--正则表达式。
在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式!
野原测试开发
2019/07/10
1.3K0
python 学习笔记(9)——Python 正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
my_sunshine
2020/10/15
6660
一文搞懂 Python 正则表达式用法
作者:枫叶云 来源:见文末 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
小小科
2018/06/20
1.1K0
《最新出炉》系列入门篇-Python+Playwright自动化测试-49-Route类拦截修改请求-下篇
在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源。例如:可能页面上图片比较多,而我们又不关心图片内容。那么,在加载页面时,可以选择不加载图片,以提高页面加载速度。这里我们主要用到一个Route类拦截修改请求 。
北京-宏哥
2024/05/30
1810
《最新出炉》系列入门篇-Python+Playwright自动化测试-49-Route类拦截修改请求-下篇
Python_正则表达式
re.compile():用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 两个函数使用,一般建议使用这种编译方式
py3study
2020/01/19
5800
Python_正则表达式
《最新出炉》系列入门篇-Python+Playwright自动化测试-43-分页测试
分页测试,这种一般都是公共的方法系统中都写好了,这种一般出现是数据展示比较多的时候,会采取分页的方法,而且比较固定,一般是没有问题的,因此它非常适合自动化测试,但是如何使用playwright来进行分页自动化测试了,宏哥今天就讲解和分享一下。
北京-宏哥
2024/04/26
2740
《最新出炉》系列入门篇-Python+Playwright自动化测试-43-分页测试
Python 正则匹配:re库的使用
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 正则匹配:re库的使用 ---- Python 正则匹配:re库的使用 1.引入 2.常用匹配规则 3.re库 3.1 match 3.1.1 匹配目标 3.1.2 通用匹配 3.1.3 贪婪方式与非贪婪方式 3.1.4 修饰符 3.1.5 转义匹配 3.2 search 3.3 findall 3
小嗷犬
2022/11/15
5760
送书|学正则表达式,看这一篇就够了!
在学编程的过程中,我们可能听过正则表达式,但是不知道它是什么,我一开始听到正则表达式时,我在想正则表达式是啥?它用来干嘛的?学起来难不难的?可能很多人和我想的一样。学完之后,我很认真负责地告诉你们,正则表达式不难!!!
我被狗咬了
2021/09/02
7780
一文搞定Python正则
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
皮大大
2021/03/01
1.8K0
一文搞定Python正则
一篇文章,轻松入门Python中的正则表达式
正则表达式,广泛用于与文字、字符串的格式化,放到Python里使用,再合适不过;尤其是在编写爬虫时,用正则表达式匹配URL、匹配IP等,正则表达式都是一个简单、高效的选择。
Mintimate
2021/05/31
1.5K0
一篇文章,轻松入门Python中的正则表达式
15 Python 基础: 程序猿必懂知识之正则表达式
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。
野原测试开发
2019/07/24
9650
15 Python 基础: 程序猿必懂知识之正则表达式
《刚刚问世》系列初窥篇-Java+Playwright自动化测试-6- 元素基础定位方式-上篇 (详细教程)
从这篇文章开始,就开始要介绍UI自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作。想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都是无用功,都是扯淡,因此宏哥建议小伙伴或者同学们从这里开始就要跟紧宏哥的脚步,一步一个脚印的将基础打结实,不要到后期了要定位操作元素了,到处找人问到处碰壁。说到元素定位,小伙伴或者童鞋们肯定会首先想到 selenium 的八大元素定位大法。同理Playwright也有自己的元素定位的方法。今天就给小伙伴或者童鞋们讲解和分享一下Playwright的元素定位方法。其实在Python+Playwright自动化测试系列文章中也介绍过元素定位,宏哥看一下Java和Python的几乎是大同小异,只不过是Java和Python语法格式的区别,其他的大差不差。但是为了这一系列文字的完整和连贯,宏哥还是将其讲解和分享一下。
北京-宏哥
2024/12/24
3750
Python学习(二) 正则表达式
文章主要介绍了正则表达式的一些基本概念和用法,包括字符集、匹配模式、贪婪和非贪婪模式、回溯、组、替换和捕获。还介绍了正则表达式的常用函数,如re.match、re.search和re.sub等,以及如何使用正则表达式进行文本处理。
码科智能
2018/01/02
9760
Python学习(二) 正则表达式
Python自动化测试-正则表达式解析
对于正则表达式,第一眼时觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。其实唯一难的就是组合起来之后,可读性比较差,而且不容易理解,其实能看得懂简单的正则表达式,写得出简单的正则表达式,用以满足日常的需求即可。学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改实践。
可可的测试小栈
2020/02/25
9960
一文搞定Python中的正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
皮大大
2020/11/03
8930
一文搞定Python中的正则表达式
推荐阅读
相关推荐
《最新出炉》系列入门篇-Python+Playwright自动化测试-51- 字符串操作 - 上篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档