
浅谈DNS重绑定攻击
一、 简介
DNS重绑定攻击是一种比较早期的攻击手段,最近工作中遇到并浅浅分析了一下,简单记录下。
二、 几个涉及到的名词介绍
同源策略
同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。
在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时。源是由URI,主机名,端口号组合而成的。这个策略可以阻止一个页面上的恶意脚本通过页面的DOM对象获得访问另一个页面上敏感信息的权限。
同源策略是为了安全,确保一个应用中的资源只能被本应用的资源访问
TTL
TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间,数值越小,修改记录各地生效时间越快。
域名解析的过程(浏览器、命令行curl等等方式都可以)
浏览器搜索自身DNS缓存,命中则解析,否则下一步
浏览器搜索操作系统自身的DNS缓存,如果找到且TTL没过期(TTL值),则进行解析,否则下一步
浏览器发起DNS系统调用,迭代过程如下:运营商dns-->根域名服务器-->顶级域名服务器-->二级域名服务器。依次迭代,直到解析完成。
建立连接开始通信
三、 DNS重绑定攻击过程详解
概念
当我们发起域名解析请求的时候,第一次访问会返回一个ip地址A,但是当我们发起第二次域名解析请求的时候,却会返回一个不同于A的ip地址B。
具体流程
分为两种情况:一种直接攻击内网,一种通过外网恶意地址下载恶意文件
情况一(直接攻击内网):
第一次
第二次
受害者被诱导打开钓鱼邮件或者其他途径的链接,他的Web浏览器会发出DNS查询请求,查询www.attack.com的IP地址。
攻击者控制的DNS服务器收到受害者的DNS请求时,会使用www.attack.com的真实IP地址97.126.54.33进行响应。 它还将响应的TTL值设置为0秒,以便受害者的机器不会长时间缓存它。
受害者的浏览器向钓鱼网站服务器发出HTTP请求加载网页。
攻击者进行HTTP响应,并通过JS加载一些恶意代码,该页面反复向www.attack.com 发出POST请求。(POST请求包含恶意代码)
因为之前DNS ttl设置为0,缓存很快就失效,所以浏览器继续向DNS服务器发出查询。
此时,恶意DNS服务器收到查询后,回复一个内网设备的IP(也可以是一些物联网设备),如192.168.0.1。
因为满足同源策略,浏览器认为是安全的,于是向内网其他设备发送POST恶意请求。
情况二(通过外网地址下载恶意文件):
第一次
第二次
具体流程和情况一类似,唯一不同点在于一种是直接向内网主机执行命令,一种是通过下载恶意文件来控制受害者主机。
四、 防御思路
判断过滤TTL=0的情况
判断步骤4中是否存在恶意js代码的情况
判断步骤6中DNS服务器返回内网地址的情况
联动判断步骤2和步骤6中查询域名相同的情况下,DNS服务器返回ip发生变化
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)