Pull to refresh

Comments 44

Интересно. А почему они делают window['eval'], а не просто eval(var2) — какая-то особенность?
И да, прикрепите код, интересно всё-таки.
Думаю что-бы дополнительно скрыться от антивирусов и их эвристических анализаторов. Изначально не видно что будет eval, он получается в процессе работы.

Код прикрепил в UPD2
Интересное кино.

А с этим window.eval = function(arg) — это грамотно получилось.
Для фф есть аддон Javascript Deobfuscator https://addons.mozilla.org/en-US/firefox/addon/10345 который умеет показывать какой сейчас js компилится и какой выполняется. Скорее всего им тоже можно было расшифровать.
Да, это расширение могло бы решить проблему. Но скрипт бы все же выполнился, что нежелательно (т.к. он сконструирован на лету ему пришлось бы пройти через eval чтобы быть «скомпилированным»).
Есть Malzilla, но не всегда хорошо работает. Если Javascript Deobfuscator сможет нормально вскрывать сложные скрипты, тогда отключение от сети или работа в виртуалке спасет :-)
Ну он поможет только получить код. Т.е. сделать то, для чего (в данном конкретном случае) я использовал отладчик и замену window.eval = function()
Надо будет поиграться на досуге…
Можно отключиться от интернета — тогда ничего угрожать при деобфускации и выполнении скрипта не будет.
вроде firebug показывает весь выполненный js код тоже
Добавлю ещё, может кому интересно будет, что сервер с вирусами находится на этом IP: 91.213.174.12, можете посмотреть, там много доменов непонятного назначения, видимо чтобы дольше не банили? А автор походе Bondarenko Dmitriy Vladimirovich, если данные не левые.

ЗЫ: Если желания хватит, то расскажу, как мы этот троян быстренько грохнули, чтобы потом выяснять, откуда он вообще взялся.
Написал пост, иначе история была бы не полной © :)
Такое в jQuery 1.3 использовалось для обработки нестандартного джейсона (JSON по спецификации должен везде иметь двойные кавычки):
if ( type == "json" ) data = window["eval"]("(" + data + ")");
Ха. теперь вирусописатели будут проверять typeof(window.eval), или как там.
Безтолку. В обоих случаях он function. Да и зачем? Ну узнал вирус что eval заменен, оригинальный та негде получить уже.
узнать что заменён и не выполнить — с целью запутать.
А как еще он сможет свои деструктивные функции выполнить кроме как через eval? Эффект достигнут (с)
почему деструктивные? зачастую там простой ифрейм, который прячут. определили что подменён евал — дали другой урл, реверсер ушел по неверному пути.
Тогда код должен быть в чистом виде, не закодированный.
Определить подмену можно, так как одно ждело функция а другое — native code-функция.
А расскажите пожалуйста как, интересно.
typeof() в обоих случаях честно говорит 'function'
1) window.eval.toString()
2) Посмотреть window.eval.prototype и .constructor
fakeEval = function () { debugger; };
fakeEval.prototype = eval.prototype;
fakeEval.toString = function () { return 'function eval() { [native code] }' };
eval = fakeEval;
Function.toSource() забыли :)

А если так сделать: var decodeKey = eval('… '); и этим decodeKey расшифровывать тело вируса? Если вы подмените eval, он например, неправильно расшифруется и ничего не произойдет.

А еще можно, например, для расшифровки использовать куски ДОМа, который исседователь при расшифровке не скопирует :) А еще выкачивать вирус по кускам АЯКС-запросами :)
создать ифрейм и взять эвал из него
Да вы тут все вирусописатели я смотрю!
на подопечном сайте был встроен троян который был обфускейчен не меньше десяти раз, через алерты прогнал — оказался банальный iframe
Да… мне достался совсем даже не закодированный экземпляр =)
Жесть, рульный «Hello World!»
> определял браузер, установленные плагины и прочую интересную для дальнейших
> действий информацию (включена ли Java, язык системы (?)).
> Далее, в соответствии с полученными данными, формировался URL
> для получения дальнейшего скрипта, который, в свою очередь, рендерил
> на страницу наиболее подходящий для данной конфигурации эксплойт

user_pref(«Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9»);
спасёт отца русской демократии от злодейского «определителя»
Нет, не так, а вот так: «navigator.plugins», так «window.navigator.javaEnabled», так «navigator.mimeTypes[»video/x-ms-wmv"].enabledPlugin" и вот так «opera.buildNumber()»
В общем, юзерагент ему для определения не нужен.
ок. а куда и как эти «navigator.plugins», так «window.navigator.javaEnabled» писать?
Их заполняет сам user-agent (и сами плагины). И никто со стороны им этим заниматься не запретит.
Это куски кода, которые занимались определением того, какой эксплоит подсунуть данному пользователю.

Или имелось ввиду, что надо работать на Mac под Safari и тогда никакие вирусы не страшны =)?
Блин, даже дырку WindowsMediaPlayer под Firefox используют.
UFO landed and left these words here
Да, можно. Но хотелось прямо здесь и сейчас =)
Можно просто отключить сеть на самом деле.

А еще хотелось под IE, т.к. изначально коллега словил вирус под ним.
Ребят, ну сколько можно?! Писать СЛОВИТЬ и ВПОЙМАТЬ безграмотно!
Извините, если задел чьи-то чувства, просто глаз режет…
Only those users with full accounts are able to leave comments. Log in, please.