dnsmasq dns劫持怎么劫持所有的dns请求

经检测你所在的网络可能存在爬虫,因资源限制,我们只能拒绝你的请求。
如果你是推酷的用户,可以以继续访问使用。
如有疑问,可将IP信息发送到
请求解封。帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:1&分页:Charles Watson-Wentworth发信人: Marquess (Charles Watson-Wentworth), 信区: Networking
标&&题: DNS查询被劫持如何解决?
发信站: 水木社区 (Wed Jan&&4 19:41:45 2017), 转信 && 就是如果在浏览器中输入一个不存在的网址,当DNS查询失败的时候,
浏览器会返回到这种传销网址,
有人能教教如何改回来么? && -- && ※ 来源:·水木社区 newsmth.net·[FROM: 124.228.219.*]
文章数:1&分页:再谈DNS劫持等恶意行为 - 为程序员服务
再谈DNS劫持等恶意行为
过去的两年间(),接触到大量的劫持案例。
首先按劫持的效果及目的分为以下2类:跳转劫持,即用户访问360导航时,被强行跳转至其他导航(通常带有渠道号,是该导航联盟成员所为)。内容劫持,即用户访问的360导航是被篡改过的,一般存在加入广告,替换链接,欺诈用户,等行为。
为达目的,各劫持的技术方案皆有。首先,以“DNS劫持”尤为严重,可看到还是比较有量得,期间各种吐槽看着也长知识。其次,更为暴力的是浏览器扩展的中做出一些猫腻事。
故以“DNS劫持”与“浏览器扩展”两个技术实现初识一下劫持事件。
a. DNS劫持
DNS劫持攻击,如篡改LDNS缓存内容、篡改授权域内容、ARP欺骗劫持授权域、分光劫持等,这种类型攻击的特点是通过直接篡改解析记录或在解析记录传递过程中篡改其内容或抢先应答,从而达到影响解析结果的目的。
中对“DNS劫持攻击”的一部分描述。
换成一般性语言描述,可以说我们这两年常见的DNS劫持有两种:
用户访问的域名直接被解析到被篡改的IP
举两个常见的例子:
一,用户访问,但给出的IP并非是360的任何集群或CDN服务节点,这时用户就会访问到一个被劫持的360导航,至于劫持后干出任意事情,都是有可能得。
二,360下的静态资源域被劫持至非法IP,这也是近半年疯狂出现的情况,导航的部分Js资源文件被劫持,从而导致业务功能失败或者插入恶意代码。
具体场景,具体分析:
,域名解析劫持在正常运作的情况下也不会被明显识别,用户可能看到的就如真实访问360导航一样,只是劫持方已经可以随心所欲的利用流量去做事情。用户破解此类劫持的简单方法就是:把DNS设置成8.8.8.8或者114.114.114.114。
二 , 有时,上述解决方案:设置DNS为114.114.114.114,依然无法阻止域名的劫持。这个情况就是最头疼的了,可以在cmd中输入”nslookup
114.114.114.114″看到该DNS返回的结果已被污染,这时可以尝试其他DNS如“114.114.115.115”或&#.8.8″。但凡事能做这些都是治标不治本,只能期待360卫士或路由能出现安全DNS的相关产品。
三 ,这里提个特例,做到域名解析劫持的手法除了在DNS服务器之外还有个较变态的手法,就是直接篡改用户的host文件。这里引入内网一篇案例,360同学们可见。清理这些HOST即可恢复正常,但依旧需要借助客户端的安保能力。
四 ,另外关于路由器本身也可能会出现漏洞被黑,此处就不做讨论了,。顺便推荐一下360安全卫士的“家庭网络管理”功能,有助于基础防护。
旁路劫持/分光劫持/抢先应答
首先请各位看观来看一则广告贴,。在我们发现的许多劫持请求中,响应头中的server信息有很明文的显示含有“hijacking”这样的关键字,对此有些无语,果然一切都是如此正式且大胆的在做。
在我们远程用户的众多案例中,我们发现大多数用户的DNS设置及获取到相关域名的IP是没有问题得,但是返回的响应正文中要么是被插入一些JS代码,要么就是一个302跳转。
举例子,如下图是正常的JS资源被插入了代码:
更有甚者的整页跳转劫持未做完整,原本要做的302跳转没有成功
导致正常的响应的Header信息显示在页面上
经过数个案例,我们终于意识到“抢先应答”劫持已是太多区域性劫持的基本手法。
什么是“旁路劫持/分光劫持/抢先应答”呢?
简单的说,就是劫持方在网络上用了一套旁路设备,采用分光镜将请求复制送至旁路服务器H。原本客户端应该接受到服务器S的请求响应,结果旁路服务器H会伪装S直接返回响应于客户端,通常这个响应会早于真正的响应,因此客户端接收了伪装的响应结果而丢弃了真实的响应。
一篇博文有助于粗线理解运营商的一些劫持方案。更多细节我也不能清楚,讲多了容易撞到“伟大的墙”。
目前对于此法劫持,我们只能通过一定的渠道投诉至相关部门或者建议用户使用临时域名()访问。但是对于劫持JS文件的做法有些鞭长莫及,在前端代码层面的防守是容易陷入死循环的,只可适度不可较真儿。
b. 浏览器扩展
随着chrome浏览器的盛行及开源项目chromium的发展,国内也有越来越多的壳浏览器加入了chromium并改造成为双核浏览器。这里再推荐一下:,超好用!
但同时造成一个问题,浏览器扩展数量增多,开发门槛较低,安装途径扩散(不需要特定在chrome网上应用商店或扩展列表,任意页面都可选择安装),审核监管机制也不能全力跟进,部分的扩展中间就开始做起“坏”事情。
典型的案例就是部分扩展将360导航的电商链接换作自己的CPS链接,从而牟利。这种行为如果不是刻意监控,一般是无从发现。即使监控到链接被篡改,依靠监控数据也很难知道谁家所为,只可划个范围做安检(当然远程用户现场识别还是很好做到得)。
—————————– 我是朴实的分割线 —————————–
前面说了DNS劫持及浏览器扩展所构成的劫持案例,那这一切劫持该怎么破?
首先遗憾的抛出我的结论:没有完美的破法。
以这样的路径看:Web服务器 —& 运营商网络 —& 用户路由 —& 用户机器
劫持主要发生在运营商网络阶段,那么能离用户越近则可控能力越强。
所以真要与恶意劫持行为做斗争,势必要在路由或机器层面去做,但这样的事何其难已。我是没有能力去描述这方面的建议与方式,所以接下来将着重从Web产品本身所能采取的前端代码措施。
分为两个场景来谈:
一 劫持成功
1 不同劫持行为的对策
1.1 302跳转或劫持为只含跳转代码的内容 =& 扑街 ~ 无解 ~
压根儿都不能载入我们的页面,实在没什么办法。
1.2 通过脚本劫持,以document.write/writeln方式插入恶意JS文件
在之前的文章有提到重写document.write/writeln 方法。
这个就是要在全局开始做出这样的防护。通常来说,head区作为第一部分内联JS还是可以免疫一些初级插入攻击得。
var oriDocwrite = document.
var docWrite = function(str){
if(oriDocwrite.apply){
oriDocwrite.apply(document, arguments);
oriDocwrite(str);
document.write = function(str){
//这里可记LOG用于统计
1.3 劫持为一个包含正常页面的iframe页面
2013年3月有河北的用户反馈360导航右下角有弹出广告,经过远程联线后发现,整个导航首页被劫持为一个恶意页面,内包含了一个宽度高度100%的iframe,iframe的src为?xxx (xxx为任意字符串参数)。如下范例代码:
&iframe id=&frm& src="&/?xxx& scrolling=&auto& width=&100%& height=&100%& frameborder=&no& style=&position:&&&/iframe&
我们发现用户访问
就被劫持为这个恶意页面,加上任意参数 如?1001 则不会命中劫持规则,能正常的获取导航首页。所以针对这个场景,可以做防止被iframe包裹,发现被包裹就将最顶层跳至正常URL加一些参数。(如果产品可被同域包裹,慎重)
if(window.top&&window.top!==window.self){
var directnum = getCookie('directnum')||0;
if(directnum++ & 3){ //防止命中劫持规则导致不断跳转
document.cookie = 'directnum=' + directnum + '; expires=' + (new Date((new Date).getTime() + 2000)).toGMTString();
var f = document.createElement(&form&);
f.action=&&;
f.target=&_top&;
f.innerHTML = &&input type=hidden name=f value='&+parseInt(Math.random()*100)+&''&&;
var j = document.getElementsByTagName('script')[0];
j.parentNode.insertBefore(f, j);
f.submit();//这样的跳转可以不依赖top.location的存在
}catch(e){}
这里说明一下,同域情况下的包裹,内页可以取到 window.top 及 window.top.location。如果包裹页与被包裹页的域名不同,则取得window.top.location时会抛出异常,可因此做进一步策略细化,上面的代码块就没做这么严谨了。
更多劫持场景要看具体情况考虑是否需要对策。
===以上对策如有效果,记得打LOG回来~===
2 主动探测是否存在劫持可能性
在很多情况下,我们希望更主动的发现被劫持的情况,那么前端代码又可以做什么呢?
2.1 监控插入页面的JS文件
监控插入页面的JS文件,将JS文件地址做检测,如不符合预期的白名单或符合预期的黑名单,则可回传相关信息。监控JS文件插入目前常用两种方案:
一 可以在页面加载完成后,按某种策略(如散列在小范围定次定量定节奏)遍历DOM中的Script标签,代码相对简单这里就不贴了。
二 利用MutationObserver(参见:)监视DOM变动。
var MutationObserver = window.MutationObserver ||
window.WebKitMutationObserver ||
window.MozMutationO
var isSupportMutationObserver = !!MutationO
if(!isSupportMutationObserver){
var observeDuration = 60000;//监控一分钟
var observeOptions = {
'childList': true,
'subtree': true
var detector = function(records){
records.map(function(record) {
if(record.type != 'childList'){
if(record.addedNodes.length == 0){
var addedNode = record.addedNodes[0];
if(addedNode.nodeName.toLowerCase()==&script& && addedNode.src){/*记录非白名单或黑名单数据*/}
var observer = new MutationObserver(detector);
observer.observe(document.documentElement , observeOptions);
setTimeout(function(){
//停止观察
observer.disconnect();
//清除变动记录
observer.takeRecords();
}catch(e){}
//回传相关数据
},observeDuration);
2.2 劫持后产生重要变化的特征检测
JS检查页面的全局变量,业务中特征检测,如在导航则检查特殊链接是否被改动等等。
===以上探测如有效果,也记得打LOG回来~===
二 劫持失败
其实,大多数非跳转劫持并不影响用户正常使用360导航,但部分劫持JS案例中发现,被劫持的JS返回响应头404,或插入一段使360导航主要功能无法使用的代码。大部分是做坏事出了BUG也不修复,往往导致用户出离愤怒,需要发泄空间及解决引导。
基于此,360导航在发现某些功能不能正常工作,影响用户正常使用时,会弹出黄条。
其中提供一些,或者及时反馈给我们来查看并解决具体问题。
—————————– 我是朴实的分割线 —————————–
可以发现,其实前端代码或者说web产品本身能做到的非常有限。页面代码的能力原则上以发现评估风险为主,不能从实际上去解决什么(当然 除了一些常规防守,但不能上升至攻防层面)。如上篇所言,能与恶意劫持做斗争的还必须离用户更近的设备或服务。
以上两篇文章所言就一般web产品可忽略,但对于拥有亿万访问量的产品而言,应当也必须去考虑得,同时建立行之有效的劫持案例应急预案及流程也非常重要。
最后说一句,祈福这纷扰的互联网 “ 天下无贼,世界和平 ”。
原文阅读:
奇虎360旗下前端开发团队
原文地址:, 感谢原作者分享。
您可能感兴趣的代码fhy365 的BLOG
用户名:fhy365
文章数:44
评论数:69
访问量:14187
注册日期:
阅读量:5863
阅读量:12276
阅读量:373937
阅读量:1067697
51CTO推荐博文
dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。它能有效解决局域网问题如下:& & 1 局域网有很多机器希望使用一份一样的hosts定义一批名称对应的ip,你需要经常维护这份列表& & 2 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以& & 3 禁止某个域名的正常解析安装dnsmasq:yum install dnsmasq -y配置文件:#cat /etc/dnsmasq.conf& & no-hosts& & addn-hosts=/etc/dns_add_hosts& & resolv-file=/etc/dnsmasq.resolv.conf& & all-servers& & no-dhcp-interface=eth0& & listen-address=192.168.88.4,127.0.0.1& & cache-size=5000& & log-facility=syslog &&#cat /etc/dns_add_hosts192.168.88.2 192.168.88.3 192.168.88.4 192.168.88.5 #cat /etc/dnsmasq.resolv.confnameserver 192.168.88.4nameserver 8.8.8.8启动服务后,其它服务器的DNS指向192.168.88.4#/etc/init.d/dnsmasq start本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 dnsmasq dns 的文章

 

随机推荐