旅店里的无线网络中的恶意脚本注入

贾斯汀·瓦特(Justin Watt)在旅店里通过旅店提供的无线服务查看自己的博客网站,他发现有个异常的东西,一个黑颜色的横条出现在了页面的顶部,正常情况是应该没有的。有趣,贾斯汀想可能是最近的Firefox更新改变了CSS的影响渲染效果。

红颜色圈住的是那条奇怪的横条

红颜色圈住的是那条奇怪的横条

贾斯汀想这并不是什么大事,除非是网页被黑客篡改了(有人获取了网站主机的帐号,在每个PHP文件里都加入一段base64加密过的代码),于是他立即决定查看一下页面源代码。事实证明,在 <head>标记间出现了一些陌生的CSS和Javascript代码:

<style type="text/css">
#rxgheader
{
  visibility:hidden;
  color:#111;
  background:#ffffff;
  text-align:center;
  border-bottom:1px solid #666;
  z-index:10000;
  position:fixed;
  width:100%;
  top:0;
}

#rxgleftbar
{
  visibility:hidden;
  color:#111;
  background:#fff;
  border-right:1px solid #666;
  z-index:10000;
  position:fixed;
  height:100%;
  left:0;
}

#rxgrightbar
{
  visibility:hidden;
  color:#111;
  background:#fff;
  border-left:1px solid #666;
  z-index:10000;
  position:fixed;
  height:100%;
  right:0;
}

#rxgfooter
{
  visibility:hidden;
  color:#111;
  background:#ffffff;
  text-align:center;
  border-top:1px solid #666;
  z-index:10000;
  position:fixed;
  width:100%;
  bottom:0;
}

#rxgcontent
{
}
</style>
<script language="JavaScript" type="text/javascript">
function checkVisible() {
    var footer, header, leftbar, rightbar, content;
    if (document.all) {
        footer = document.all.rxgfooter;
        header = document.all.rxgheader;
        leftbar = document.all.rxgleftbar;
        rightbar = document.all.rxgrightbar;
        content = document.all.rxgcontent;
    } else if (document.getElementById) {
        footer = document.getElementById('rxgfooter');
        header = document.getElementById('rxgheader');
        leftbar = document.getElementById('rxgleftbar');
        rightbar = document.getElementById('rxgrightbar');
        content = document.getElementById('rxgcontent');
    }
    if (footer) {
        if (footer.offsetWidth > 600) {
            footer.style.visibility = 'visible';
            content.style.paddingBottom = (footer.offsetHeight + 4) + "px";
        }
    }
    if (header) {
        if (header.offsetWidth > 600) {
            header.style.visibility = 'visible';
            content.style.paddingTop = (header.offsetHeight + 4) + "px";
        }
    }
    if (leftbar) {
        if (leftbar.offsetHeight > 400) {
            leftbar.style.visibility = 'visible';
            content.style.paddingLeft = (leftbar.offsetWidth + 4) + "px";
        }
    }
    if (rightbar) {
        if (rightbar.offsetHeight > 400) {
            rightbar.style.visibility = 'visible';
            content.style.paddingRight = (rightbar.offsetWidth + 4) + "px";
        }
    }
}
</script>

并在<body>标记后有下面的Javascript代码:

<div id="rxgheader">
<script type='text/javascript'>
var advnIsAdProviders = true;
var advnIsPersistCookie = false;
var mCustomerId = 44;
var advnIsHideImmediately = false;
var mDelayLoad = 1000;
var advnAdRotationDelay = 30000;
var jsUrl = 'http://adsmws.cloudapp.net/user/advnads20.js';

function addScript(jsUrl) {
    var AdvnScript = document.createElement('script');
    AdvnScript.setAttribute('src', jsUrl);
    AdvnScript.setAttribute('type', 'text/javascript');
    document.body.appendChild(AdvnScript);
}
setTimeout('addScript(jsUrl)', 50);
</script>
<div id = "rxgcontent">
<script language = "JavaScript" type = "text/javascript">
checkVisible();
</script>

给不懂编程的读者提示一下,上面代码中最需要注意的是CSS里有“rxg”前缀的语句,还有这个指向外部的非常可以的Javasript文件:http://adsmws.cloudapp.net/user/advnads20.js。他怀疑“RXG”应该是某种病毒的名称,但通过谷歌搜索后,一无所获。

他立即用ssh登陆到博客服务器上用 svn diff 检查一些重要的PHP文件。没有任何改动的迹象。这就奇怪了,源文件是没有问题的。他于是进入了 Stephanie的博客,发现他的博客也存在同样的问题。但他们两个的博客是在同一帐户下的。他又检查了 Andre的博客——这个博客是放在TypePad服务器上的,同样,没有幸免。他想到,应该是在他的计算机跟网络连接的过程中,有人在网络传输的每个页面里注入了JavaScript。

他研究了一下那个advnads20.js,发现这个脚本功能只是在页面上插入一些广告。

难道旅店的wifi网络被人黑了?或者是旅店的网络提供商特意为之?这个问题贾斯汀没有想明白,于是写了一篇博客描述此事情。

很快,贾斯汀就在他的这篇博客的评论中找到了答案,有人读者告诉他,“RXG”是Revenue eXtraction Gateway的缩写,这是一种 RG Nets公司生产的无线热点网关产品。

rxg网关

原来如此,这家旅店的无线网络通过这种路由器给每个旅客所浏览的网页中都嵌入了这种JavaScript。而提供这家旅店网络服务的公司叫做Hotel Internet Services,很有可能,贾斯汀想,这家旅店也未必知道发生了什么时,他只是觉得不平,一晚368美元的房价,还受到这种待遇。

在这种路由器的厂商的官方主页上有个演示视频:

视频中催人入睡的机器人般的声音说的是:

这个视频演示的是RG Nets公司的Revenue eXtraction网关产品的HTML网页加载重写功能。用户在浏览网页时使用浏览器通过Revenue eXtraction网关连接到互联网。用户使用的是一个干净的IE7,没有装任何插件或其它软件。所有的网页重写都是通过RXG网关即时完成的。RXG网关被配置成重写所有通过此网关的web网页,在每个页面上都嵌入一个宝马S1000RR的广告条。这个宝马S1000RR广告条可以放置到页面的顶部,底部,左边,右边。除此之外,多个广告还可以组合到一起轮换着出现,当然,这些广告可以链向任何一个你想要的网站。就像你看到的,所有的网页上都嵌入了广告,保证了这些广告的冲击力。RG Nets公司的RXG产品的网页加载重写特征是一个强大的工具,能够广泛的运用到互联网市场推广的各种应用中。

贾斯汀的这篇博格在网上受到了热烈的讨论,这家旅馆的负责人也注意到了,他向贾斯汀来信表示,他们已经就此事做了调查,并向他们的网络服务商提出了抗议,网络服务商同意不再向这家旅店的网络服务中注入广告。但旅店负责人也说明,这种广告行为在所有的网络服务商中相当的普遍。

补充
本人最近宽带到期,又重新申请了一个长城宽带,没想到,上网时,不论访问什么网站,右下角经常会蹦出一个广告,起初以为中了什么病毒软件,后来发现,原来是宽带服务商在作恶,它们把你的访问的网站用一个Iframe包起来,在外层的框架内放置它们的广告,这种事情真让人恶心。在网上查了一下,发现很多人有相同的遭遇,有人建议把dns换了,或把宽带商发布广告的ip给封掉。这些方法总归治标不治本。最好的方法是弃用这家公司的宽带。可是再一查,发现其它的宽带服务商也干这种勾当。真让老百姓没法活了。

分享这篇文章:

28 Responses to 旅店里的无线网络中的恶意脚本注入

  1. SR1 says:

    强奸用户眼球的事情哪里都有干啊,真可恶。
    以后买房子是不是也会出现满屋子的广告呢

  2. huansinho says:

    中国电信!

  3. yyy says:

    中国联不通·····每次用IE都给强奸下

  4. 依云 says:

    为什么你的第一反应是使用技术手段,第二反应是弃用呢?不先试试投诉?

  5. cyler123 says:

    尽管对译者不敬,但:长宽,谁用谁SB啊。。。。。
    另外还有铁通也一样的。饶了一圈,最后发现除了网通和电信之外,都不靠谱。

  6. TonySeek says:

    深圳电信也做这种事的,已经投诉,正在协调中。

  7. Judas.n says:

    用IE会比较杯具.用firefox或是chrome,然后再插件adblock屏蔽,感觉浏览还好.
    对于电信的速度(我们这边)还算满意.

  8. kevin says:

    我们公司之前也遇到了这样的问题 用了一个免费的路由管理工具 海蜘蛛 免费版的劫持了DNS 每次打开网页都弹2个广告 有时候右下角也会弹 后来实在没办法 换了一个收费的. 还好家里用的移动铁通挺给力的.

  9. champ says:

    根本上来说还是ipv4分组不安全,HTTP传输不安全。

  10. paper says:

    深圳电信也有这样的问题!!!!
    强烈谴责,唉~天朝木有办法啊!

    不过firefox装上NoScript插件后,可以屏蔽嵌入的脚本运行,这也不失为一种办法。

    • wood says:

      深圳电信,
      打开一个页面,偶尔发生下面情况,
      1. 转变下载页面
      2. 拦截弹出页面
      3. 弹出一个窗口,常是电信广告

  11. CzBiX says:

    找到了原文,看了下,文中的sshed应该是动词而不是名词,
    应该翻译成 他立即通过ssh登陆上博客服务器

  12. uffy says:

    联通也一样= =

  13. lcg635 says:

    用noscript插件,感觉相当好,不认识的网站脚本全不让执行

  14. 山野村夫 says:

    我用的是上海电信,偶尔会在右下角出现一个小的电信e云存储的广告窗口,刷新一下页面就没有了。我问了几个同样用电信宽带的同事,他们也遇到过类似的问题。我是怎么确认是电信插入的广告,因为有一个网站是我们自己的网站,不可能给电信做这种广告。后来通过投诉解决了这个问题。电信比较狡猾,只是偶尔随机地出现,不是一直有。不过即便如此性质也很恶劣,这是擅自篡改传输中的信息谋取商业利益,属于利用黑客手段谋取非法利益,应该算是违法行为。

  15. anonymous says:

    在使用电信的过程中我也遇到浏览器右下角弹窗广告。最开始只是电信相关的广告,后来愈发变态,医疗、购物广告都出现了。直接电话客服,解决了。

  16. evan says:

    建议自己写个东西放在网卡上,把Iframe外面的一层去掉。打发时间,锻炼技术,还可以出售这个东西来帮助别人减少烦恼。

    啊,大千世界,生意无所不在~~

  17. adico says:

    直接给服务商打电话,要求关闭,电信的10000已经给我关闭了

  18. summerworm says:

    嗯 公司用的 广州电信有 我一直以为中毒了 各种杀 啥也没有 幸好不常用IE

  19. 蚕豆 says:

    建议多投12315,这样能督促他们尽快给你解决问题!

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据