Наткнулся на подозрительный скрипт в исходниках одного сайта, не вирус ли?

Привет, наткнулся на один очень подозрительный скрипт в исходниках одного сайта.

var _0x087b=['||x2F|x20|x33|x42|_0x9a4f|x54|hi|x2E|x3A|x74|x31|x52|x37|x4E|x6F|x68|x50|x48|var|x70|x4B|x59|x63|x6C|x67|function|console|x73|x72|x76|x62|x6B|x6D|x6E','split','length','constructor','debugger','toString','replace','\x5cw+','k\x206=[\x22\x5c5\x5cn\x5c3\x5cf\x5c5\x5cd\x5c3\x5c2\x5c2\x5c3\x5cj\x5c7\x5c7\x5ci\x5ca\x5c2\x5c2\x5cf\x5c5\x5cd\x5cc\x5c4\x5c4\x5ce\x5c9\x5c7\x5cm\x5c3\x5c2\x5c2\x5c3\x5ch\x5cb\x5cb\x5cl\x5ct\x5ca\x5c2\x5c2\x5cv\x5cx\x5c9\x5co\x5cg\x5cy\x5c2\x5cz\x5cw\x5cu\x5cc\x5c4\x5c4\x5ce\x22,\x22\x5cp\x5cg\x5cq\x22];r\x208(){s[6[1]](6[0])}8()'];(function(_0x192b1a,_0x488129){var _0xdab9d5=function(_0x2b5cd1){while(--_0x2b5cd1){_0x192b1a['push'](_0x192b1a['shift']());}};_0xdab9d5(++_0x488129);}(_0x087b,0x1f4));var _0xb087=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x087b[_0x36ed48];return _0x51c63a;};eval(function(_0x3ad680,_0x5a8e53,_0x2e5f02,_0x3ee14b,_0x569d7d,_0xeaf045){_0x569d7d=function(_0x167664){return _0x167664[_0xb087('0x0')](0x24);};if(!''[_0xb087('0x1')](/^/,String)){while(_0x2e5f02--){_0xeaf045[_0x569d7d(_0x2e5f02)]=_0x3ee14b[_0x2e5f02]||_0x569d7d(_0x2e5f02);}_0x3ee14b=[function(_0x46e106){return _0xeaf045[_0x46e106];}];_0x569d7d=function(){return _0xb087('0x2');};_0x2e5f02=0x1;};while(_0x2e5f02--){if(_0x3ee14b[_0x2e5f02]){_0x3ad680=_0x3ad680[_0xb087('0x1')](new RegExp('\x5cb'+_0x569d7d(_0x2e5f02)+'\x5cb','g'),_0x3ee14b[_0x2e5f02]);}}return _0x3ad680;}(_0xb087('0x3'),0x24,0x24,_0xb087('0x4')[_0xb087('0x5')]('|'),0x0,{}));var _0x2b84d3=function(){function _0x6d83fb(_0x1dbe9f){if((''+_0x1dbe9f/_0x1dbe9f)[_0xb087('0x6')]!==0x1||_0x1dbe9f%0x14===0x0){(function(){}[_0xb087('0x7')](_0xb087('0x8'))());}else{(function(){}[_0xb087('0x7')]('debugger')());}_0x6d83fb(++_0x1dbe9f);}try{_0x6d83fb(0x0);}catch(_0x244abc){}};_0x2b84d3();setInterval(function(){_0x2b84d3();},0xfa0);


Сам сайт уже нечаянно открыл. Если скрипт убрать, сайт работает точно так же, как и прежде. Вопрос: не слились ли мои данные кому-то?
  • Вопрос задан
  • 598 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Данные не слились.

Хотя теоретически это возможно, если использовалась 0day-уязвимость в самом браузере. Но практически шанс этого настолько мал, что не стоит переживать. Очень много слоев защит в браузере, так что даже переполнение буфера мало что даст.

Это просто обфусцированный код. А значит, автор просто не хочет, чтобы вы знали, что он делает, но это не обязательно вирус. Что именно он делает см. ниже. Но вообще очень много где встречается обфускация (или хотя бы минификация), и гораздо больших масштабов, на килобайты. Это норма.

Если хотите практически полностью исключить атаку со стороны JS, отключайте его по-умолчанию. Например, я использую расширение (для хрома) Quick Javascript Switcher. Все сайты у меня без JS и всё прекрасно работает. На известных сайтах типа яндекса гугла, мейла, всё чем нужно пользоваться - включено. Ну и если внезапно надо включить (очень редко) - одним кликом делается. Хотя тема расширений сама по себе интересна с точки зрения ИБ, но это уже другая история (и всегда можно их скачать и использовать локально, особенно мелкие с кодом в 30 строк).

P.S.
Распаковка, этап 1
var arr=[
	'||x2F|x20|x33|x42|_0x9a4f|x54|hi|x2E|x3A|x74|x31|x52|x37|x4E|x6F|x68|x50|x48|var|x70|x4B|x59|x63|x6C|x67|function|console|x73|x72|x76|x62|x6B|x6D|x6E', //0
	'split', //1
	'length', //2
	'constructor', //3
	'debugger', //4
	'toString', //5
	'replace', //6
	'\x5cw+', //7
	'k\x206=[\x22\x5c5\x5cn\x5c3\x5cf\x5c5\x5cd\x5c3\x5c2\x5c2\x5c3\x5cj\x5c7\x5c7\x5ci\x5ca\x5c2\x5c2\x5cf\x5c5\x5cd\x5cc\x5c4\x5c4\x5ce\x5c9\x5c7\x5cm\x5c3\x5c2\x5c2\x5c3\x5ch\x5cb\x5cb\x5cl\x5ct\x5ca\x5c2\x5c2\x5cv\x5cx\x5c9\x5co\x5cg\x5cy\x5c2\x5cz\x5cw\x5cu\x5cc\x5c4\x5c4\x5ce\x22,\x22\x5cp\x5cg\x5cq\x22];r\x208(){s[6[1]](6[0])}8()'
];

(function(arr, b) {
  var d = function(c) {
    while (--c) {
      arr['push'](arr['shift']());
    }
  };
  d(++b);
}(arr, 0x1f4));

var e = function(f) {
  f = f - 0x0;
  var g = arr[f];
  return g;
};

eval(function(h, nn1, i, j, k, m) {
  k = function(n) {
    return n[e('0x0')](0x24);
  };
  if (!'' [e('0x1')](/^/, String)) {
    while (i--) {
      m[k(i)] = j[i] || k(i);
    }
    j = [function(o) {
      return m[o];
    }];
    k = function() {
      return e('0x2');
    };
    i = 0x1;
  };
  while (i--) {
    if (j[i]) {
      h = h[e('0x1')](new RegExp('\x5cb' + k(i) + '\x5cb', 'g'), j[i]);
    }
  }
  return h;
}(e('0x3'), 0x24, 0x24, e('0x4')[e('0x5')]('|'), 0x0, {}));

var p = function() {
  function q(r) {
    if (('' + r / r)[e('0x6')] !== 0x1 || r % 0x14 === 0x0) {
      (function() {} [e('0x7')](e('0x8'))());
    } else {
      (function() {} [e('0x7')]('debugger')());
    }
    q(++r);
  }
  try {
    q(0x0);
  } catch (ee) {}
};
p();
setInterval(function() {
  p();
}, 0xfa0);
Распаковка, этап 2
var arr=[
	'toString', //0
	'replace', //1
	'\x5cw+', //2
	'k\x206=[\x22\x5c5\x5cn\x5c3\x5cf\x5c5\x5cd\x5c3\x5c2\x5c2\x5c3\x5cj\x5c7\x5c7\x5ci\x5ca\x5c2\x5c2\x5cf\x5c5\x5cd\x5cc\x5c4\x5c4\x5ce\x5c9\x5c7\x5cm\x5c3\x5c2\x5c2\x5c3\x5ch\x5cb\x5cb\x5cl\x5ct\x5ca\x5c2\x5c2\x5cv\x5cx\x5c9\x5co\x5cg\x5cy\x5c2\x5cz\x5cw\x5cu\x5cc\x5c4\x5c4\x5ce\x22,\x22\x5cp\x5cg\x5cq\x22];r\x208(){s[6[1]](6[0])}8()',
	'||x2F|x20|x33|x42|_0x9a4f|x54|hi|x2E|x3A|x74|x31|x52|x37|x4E|x6F|x68|x50|x48|var|x70|x4B|x59|x63|x6C|x67|function|console|x73|x72|x76|x62|x6B|x6D|x6E', //4
	'split', //5
	'length', //6
	'constructor', //7
	'debugger', //8
];

var e = function(num) { //получить строку с номером num (они перемешаны)
  num = num - 0;
  var g = arr[num];
  return g;
};

function getCode(h, nn1, i, j, k, m) {
  k = function(n) {
    return n.toString(0x24);
  };
  if (!''.replace(/^/, String)) {
    while (i--) {
      m[k(i)] = j[i] || k(i);
    }
    j = [function(o) {
      return m[o];
    }];
    k = function() {
      return '\x5cw+';
    };
    i = 0x1;
  };
  while (i--) {
    if (j[i]) {
      h = h.replace(new RegExp('\x5cb' + k(i) + '\x5cb', 'g'), j[i]);
    }
  }
  return h;
}
var code = getCode(e(3), 36, 36, e(4).split('|'), 0, {});
eval(code);

var p = function() {
  function q(r) {
    if (('' + r / r).length !== 1 || r % 20 === 0) {
      debugger;
    } else {
      debugger;
    }
    q(++r);
  }
  try {
    q(0);
  } catch (ee) {}
};
p();
setInterval(function() {
  p();
}, 4000);
Распаковка, этап 3
//Суть скрипта
function hi() {
  console['log']('BY NBR // HTTP://NBR1337.TK // https://vk.com/nbr1337')
}
hi();

//плюс защита от дебага (удалена)
Распаковка, этап 4
console.log('BY NBR // HTTP://NBR1337.TK // https://vk.com/nbr1337');

Вывод - это просто подпись автора, чтобы он смог доказать авторство в суде, если его код спиратят.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы