前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BlackHat议题分析:浅析BGP劫持利用

BlackHat议题分析:浅析BGP劫持利用

作者头像
FB客服
发布2018-02-06 15:52:15
1.4K0
发布2018-02-06 15:52:15
举报
文章被收录于专栏:FreeBufFreeBufFreeBuf

BGP劫持在2008年的defcon大会上就曾经有涉及,然而在2015年的blackhat上又被选为议题,可见问题的严重性,冰冻三尺,非一日之寒,BGP劫持问题有待世界各地的组织携手解决。

0x00 什么是BGP

BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。

由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。这些子网络互相连接,通过BGP协议告诉对方自己子网络里都包括哪些IP地址段,自己的AS编号(AS Number)以及一些其他的信息。

这里又要扯到互联网的IP地址分配方式。互联网的IP地址分配是中心化的,ICANN这个机构把IP地址大段分给Regional Internet Registries(RIR),区域互联网注册管理机构。RIR再把IP地址段细分后分给ISP们。

大部分情况下,AS Number和分给该AS什么IP段是没有任何关系的。

BGP协议里虽然有一些简单的安全认证的部分,但是对于两个已经成功建立BGP连接的AS来说,基本会无条件的相信对方AS所传来的信息,包括对方声称所拥有的IP地址范围。

对于ISP分配给大公司客户的地址段,ISP往往会对BGP做一些有限的过滤。但是对于大型ISP来说,因为对方所拥有的IP地址段可能过于分散,所以一般是按最大范围设置BGP prefix 地址过滤。一般ISP分配到的IP地址段都是连续的,但是基本也都有可操作的空间,可以把数百到几万个不属于自己的IP合法加到自己的BGP信息里。

0x01 BGP劫持概览

我们把BGP劫持分为两类

1、Prefix劫持

prefix劫持中,当受害者被正当分配IP prefix时 劫持的AS申请同样的prefix,假冒的BGP声明来自劫持的AS,消息通过路由系统散播,其他的AS就用本地的策略选择正当AS路线还是假冒的BGP路线。

2、subprefix劫持

使用subprefix劫持,攻击者可以截获受害IP的全部流量,劫持的AS创建一个受害IP prefix的subprefix,所以prefix就被受害者的IP prefix覆盖了。

2008年2月24日,巴基斯坦电信公司攻击使Youtube不能访问就是此类攻击。

互联网的路径设计基于值得信任的网络提供者彼此交流,这使无意的路径泄漏变得难以解决。然而(BGP)边界网关劫持并不被人重视,尽管都知道它可以导致拒绝服务,中间人攻击,窃取未加密的会话,但是随着强大的TLS加密方法普及,攻击者接触到重要数据变得越来越不可能,所以劫持就是个好办法。

BGP劫持由于(ISP)互联网服务提供商在转发之前没有过滤来自对等节点的prefix声明。一旦一个攻击者获得了对等节点的权限,他就可以让其他的对等节点广播任意prefix,劫持前结点和上游ISP

0x02全球化的和本地的劫持

劫持和泄漏通常被认为是由黑客,政府雇佣的人员发起的特定活动所以不常发生,在我看来它们确实罕见,由于人们错误操作使路径泄漏随处可见,然而为什么黑客们忽略了它们能偷走prefixs的可能性。

大的ISP有措施防止劫持,但从事件来看也不是那么管用,小的ISP不关心prefix过滤的问题。正因为如此ISP总能满足网络的应用,即使边界路由很脆弱。对一个有技术的黑客来说,黑进一个ISP,随意修改声明不是很难。然而在我看来,这几乎不会无端发生。

举个例子:

1, AS-A向它的上游AS-C声明了X.Y.Z.0/22 2, AS-M向它的上游AS-B声明了X.Y.Z.0/23 3, ISP默认路径都是上游提供,然后用本地的网络替代它,在这样情景中本地路径将高于其他网络。这时路径/23就会被路径/22代替。 4, 所有通信包都经由AS-B发往AS-M

传输途中的中间设备都是选择路径最短的那个,然而AS间距离可以被黑客修改,攻击者劫持了所有目标AS的流量。为了让回来的数据包也经过你的路由器,你需要记录trace route到目标网络的时候都会经过哪些AS。使用AS-PATH prepend list包括这些AS Number ,设置static route到traceroute出现的第一个ASN。

0x03劫持CA(certificate authority)证书

通过TLS CA 为用户获得TLS证书的过程如下:

1,先在CA网页申请一个帐号

2,认证登录请求CSR(certificate signing request)创建并载入,尽管这很重要,一些CA甚至允许跳过这步直接从CA中取私钥

3,CA提供了很多选择认证用户所有权

查询whois记录 载入特定html在特定url通过认证 使用者在dns表中建立自定义token

4,当确认所有权后,使用者付款,CA发放TLS认证,然后就能用这个CA证书向你网页的用户证明身份。

如果我们选择了正确的CA,BGP劫持打断CA间的通话也不会被发现。

受害者的服务器和客户都在美国,但是prefix都被劫持在了中国,然后我们可以假装受害者(在这个CA没有可靠认证时),或者冒充一个WHOIS 认证服务器得到目标域的正当TLS认证。这个过程最多5到10分钟,过后攻击者停止声明受害者的prefix,只有在此时间段内才能发现异常。尽管这个CA离受害者相当远,但是证书是全球范围的,所以此举在世界各地都可行。

实现这样的攻击你需要的只有两个:

1,一个可控制的边界路由 2,你的BGP结点的信息 :它的客户,提供者,结点信息,公共服务类似Qrator Radar或者 BGP监听。花一个小时确认这些基本信息,ASpath 追踪路线,等等

0x04如何预防攻击

有很多的监控系统(BGPmon,Qrator Radar)会通知受害者prefix被劫持,但很重要的一点是这和CA没有什么关系。

RFC 7469 (http的公钥扩展)考虑到了这个问题以https声明,是个很好的概念,但是:

1、像BGPsec一样它目前只是概念, 2、这又是个替代方案,把问题关键点从CA转移到了客户

其他措施包括浏览器平台 (包括firefox的认证巡逻),要彻底解决这个问题,我们必须打破TLS PKI或者互联网的路由选择。但两者都难以有太大的改变,新的PKI概念例如基于DNS的实名认证同样给我们提供了解决的思路。

这无关软件中的漏洞,是概念的缺陷,互联网的路由选择不该基于信任,我们在越来越认识到它错误的同时,也要为安全的互联网寻找思路,而不是急着去利用它们。

(更多参考资料,请阅读原文

*本文由特约作者:月尽西楼投稿,未经许可禁止转载

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档