
大家好! 今天,我们想谈谈一种称为DNS重新绑定的古老而几乎被遗忘的攻击。 关于它的第一次讨论始于2007年,但是随后,实际的信息安全领域的专家并未对此攻击的操作的特殊性给予应有的关注,并且看上去似乎没有什么实际的后果。 今天,我们将努力说服他们反对这一观点,尤其是您,通过证明在现代世界中,这种袭击已经迎来了第二波狂风,似乎不再是无害的了。
什么是DNS重新绑定?
考虑以下方案:

我们在本地网络上有一台受害者的计算机,其IP地址为192.168.0.2,此外,它还有一台IP地址为192.168.0.1的路由器。 攻击者管理地址为13.37.13.37和域名hacker.com的服务器(也是我们自己的DNS服务器,其中包含有关域的信息正在ip-shnik上旋转)的目的是获得对本地网络上路由器的访问权限。
要使用DNS重新绑定技术,我们需要吸引受害者到我们的恶意站点。 假设我们成功了。
现在,让我们详细研究攻击的工作原理。
首先,浏览器通过A记录请求访问DNS服务器:

DNS服务器链通向我们的服务器,该服务器进而给出包含恶意站点的真实IP地址的标准响应,并指出我们需要的TTL,在这种情况下为59。

接下来,浏览器对接收到的IP发出标准HTTP请求。

在下一阶段,服务器将以HTML页面响应,其中包含访问我们自己域的javascript代码。

现在,直到TTL过期并且用户位于该站点上,上面接收到的Javascript将被执行。 TTL结束后,浏览器将再次请求A记录。

这时,我们的JavaScript继续运行,我们管理的DNS服务器将以A记录进行响应,该记录带有来自攻击者想要到达的本地网络的IP地址。

由于域,端口和协议保持不变,不会违反SOP,因此,浏览器可以访问pew.hacker.com域,但是,它已经敲响了令人垂涎且无法企及的路由器。

结果,我们平静地收到了来自路由器的响应,并将相应的功能嵌入到先前加载的javascript代码中,从而将其重定向到自己。


因此,让我们总结一下:
- 用户访问该站点,收到一个真实的IP地址和一个短的TTL
- 在网站上时,浏览器会呼叫用户所在的同一域。 缓存过期后,浏览器会再次请求域IP。
- 此外,我们的DNS服务器发布内部服务的IP地址(而不是真实地址)(在本例中为路由器)
- 在请求通过域到达路由器后,结果由用户预先加载的javascript发送给我们。
我们想通了! 许多人可能会有一个合理的问题:“那又如何?”,因为要进行操作,您需要知道服务的内部IP地址,将用户保留一定时间,等等。
是的,但是,随着流服务,视频托管,良好的旧色情网站以及人们长时间闲逛的其他平台的出现,攻击者将有足够的时间进行攻击。 至于地址,它们通常是标准的或容易预测的。
但这只是理论上的全部,而实际上呢? 我们在2019年选择了4个最相关的区域,这些区域与DNS重新绑定攻击有关,这些事件是:
让我们按顺序查看每个主题,找出所有内容是否真的那么无害?
物联网
Google首页

Google主页是Google的智能助手。 该设备具有(或过去拥有)不需要任何身份验证即可控制该设备的API。 它提供了许多功能,例如:
示例攻击场景:攻击者可以通过获取最近的WIFI点的坐标来使用户匿名。 显然,没有VPN可以拯救您。
Sonos wifi扬声器

Sonos的这些专栏介绍了UPnP本地网络上的Web服务器,该服务器可以访问许多有趣的页面:
- 192.168.1.76:1400/support/review-吐出一些UNIX命令的输出
- 192.168.1.76:1400/tools-允许您运行一些UNIX命令
在这种情况下,攻击者可以执行traceroute命令来扫描内部网络的拓扑。
无线电温度调节器CT50

这是我们最喜欢的情况之一。 此恒温器模型还具有未经任何授权的API,并允许您更改:
结果,攻击者可以使受害者多汗,但说真的,例如在医疗设施中对恒温器的这种攻击可能会导致相当不愉快的后果。
Roku电视

Roku电视仍然有相同的缺点-未经身份验证的API。
该API允许您执行以下操作:
- 运行各种应用程序
- 播放内容
- 在系统上执行搜索查询,等等。
在这种情况下,威胁用户的最大风险是敏感数据的泄漏,这也是令人不快的。
任何WIFI路由器

今天几乎每个人都拥有此物联网设备。 众所周知,许多普通用户不会通过路由器管理面板更改标准密码。 借助DNS重新绑定,没有什么可以阻止我们尝试使用标准凭据登录并获得对管理面板的访问权限。 如果找不到本地IP,WebRTC可以进行救援。
物联网摘要
我们重点介绍在使用IoT时DNS重新绑定提供的一些功能:
- 可以对用户取消匿名
- 扫描本地网络的能力
- 模拟用户
- 取决于物联网设备的功能
加密钱包
格思
现在让我们谈谈加密货币钱包。 研究的第一个案例是一个名为Geth的以太坊钱包的客户。 这里的Pandora框位于JSON-RPC服务中。 首先,让我们弄清楚它是什么。 JSON-RPC是JSON格式的远程过程调用协议。 一切看起来像这样:

大多数客户端在本地主机8545上运行此服务,并且依次提供了一组有趣的功能,例如eth_sendTransaction
等。
现在举一个例子,说明如何在用户不知情的情况下并使用DNS重新绑定攻击来获取其余额和钱包地址:

EOSIO keosd钱包
接下来,我们有一个EOSIO钱包的客户端。 Keosd本身以localhost:8900启动,并在输入授权数据后15分钟内自动签署任何应用程序操作。 深入研究API之后,您可以再次找到有趣的功能。 为了清楚起见,使用下面显示的请求,您可以获得用户的公钥:

加密钱包摘要:
- 攻击者可以窃取用户资金
- 攻击者可以修改各种用户设置
- 对用户取消匿名的能力
桌面应用
传输客户端
我想从Transmission torrent客户端中以相对轰动的漏洞开始与桌面应用程序相关的事件阻止。
这里的问题出在相同的JSON-RPC中,我们对其进行了更高的研究。 在这种情况下,它允许您更改用户设置,例如,更改用于下载文件的文件夹:

一方面,这似乎没什么大不了的,但是如果您指定攻击者而不是文件夹控制的smb共享(如果客户端使用Windows客户端),则可以拦截用户哈希,将来可以使用它。
uTorrent Web客户端
这个战友在他的武器库中拥有相同的JSON-RPC服务,该服务使您可以更改用户配置文件以及下载文件。
在这种情况下,需要进行身份验证,但是可以从http://localhost:19575/users.conf
获得凭据。 如何使用?
首先,提出以下要求:

收到令牌后,我们将下载文件夹更改为系统启动时运行的程序所在的文件夹:

最后,我们给出命令以下载必要的有效负载:

结果,下次重启后, evil.exe
将启动。
迷你库
Minikube是一个命令行实用程序,用于在本地计算机上的虚拟机中配置和运行单模式Kubernetes集群。
它始终挂在192.168.99.100上,并且基于Web的界面在端口3000上可用。 结果,攻击者就有机会创建一个恶意容器,并与主系统共享一个文件夹。
首先,您需要获取csrf令牌。

接下来,您需要创建一个容器,并为此发送以下请求:

让我们看看他的工作。 在其中,我们指示启动容器时,我们需要转发反向shell,并从主系统安装Users文件夹:

Ruby on Rails
Ruby on Rails框架有一个瑰宝,可让您直接在浏览器中执行Ruby代码。

让我们尝试找出我们需要什么吗?
首先,我们需要转到一个不存在的页面:

接下来,我们尝试通过浏览器访问控制台:

好吧,最后,我们形成了一个启动计算器应用程序的请求(在此示例中,是MAC OS X的向量):

暴雪桌面应用
不仅开发人员和普通用户都容易遭受DNS重新绑定之类的攻击,游戏玩家也同样容易受到攻击。 在这里,我们再次遇到在端口1120上的本地主机上仍然存在的JSON-RPC服务问题。 该服务可以进行更新,更改设置和其他各种服务选项。
在这种情况下,支持身份验证,但是通过从本地主机发出请求来传递身份验证并不困难:

结果,您可以实现类似的效果:

可以在这里找到更多详细信息。
桌面应用程序摘要:
- 攻击者可以在主系统上获得RCE(也不要忘记VM Escape)
- 攻击者可以访问敏感数据等。
乌云
好吧,最后,最有趣的是-云。 最重要的是,云服务通常用于托管分析访问该站点的用户的软件。 例如,使用无头浏览器单击Referer标头中的链接以草稿客户端从中访问站点的资源。 也可以使用此攻击媒介,因为从本质上来说,无头浏览器是功能强大的Web浏览器,没有图形界面,但支持DOM,JS和其他所有内容。
回到公羊,在这种情况下我们该怎么办? 确实,对于攻击,我们需要延迟页面上的用户(在本例中为Bot)。 好吧,为此,我们可以在页面上使用的图像的内容长度比实际多。 结果,该机器人会认为图片尚未上传,并会在我们的页面上徘徊,然后我们使用我们的标准DNS重新绑定技术。
结果,由于我们将发送来自代理的请求,因此我们可以做很多有趣的事情。 例如:
- 扫描内部网络
- 从理论上登录内部服务
- 从其他服务等窃取授权数据
让我们直接去亚马逊。 AWS EC2具有实例元数据服务等功能。 它允许任何EC2实体使用位于169.254.169.254的REST API,该API揭示有关实例的信息。
例如,这是各种云的类似服务的简短列表:
现在让我们来看一个沉迷于AWS的案例。
首先,让机器人向API发出请求:

在答案中,我们可以获得机密信息,例如,机器启动时运行的脚本中的信用:

接下来,我们可以提取将继续使用的节点的名称:

接下来,我们将以已知的名称发出以下呼吁-宾果游戏!


我们收到了各种用户信息,例如AccessKeyId,SecretAccessKey,令牌等。
收到此数据后,我们可以通过控制台客户端将其用于授权:

总结果:
让我们重点介绍使用DNS重新绑定攻击时注意到的常见弱点:
- 没有身份验证的API
- 未经身份验证的本地服务
- 忽略要请求的主机参数
- 使用http而不是https
因此,尽管来自实用信息安全领域的专家提出了各种争论,但这种类型的攻击在物联网,云服务,加密货币等时代已经崭露头角,尽管在在线电影世界中,尽管需要延迟客户端,但这种攻击仍然存在。视频托管和向用户提供内容的其他服务,这样做并不难。 因此,在网络世界中旅行,购买另一个智能助手以及进行开发时,请务必小心。
资料来源: