Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Наверняка ты хоть раз получал по электронной почте письмо со ссылкой на подозрительный архив. Авторы таких писем делают все возможное, чтобы невнимательный пользователь перешел по ссылке и позволил заразить свой компьютер. Подобное письмо пришло и моему приятелю, и так он стал одной из жертв. А что это был за вредонос, мы разберемся вместе.
Прежде чем обратиться ко мне, приятель несколько раз попытался открыть файл из архива. По его словам, ничего не произошло. Но я все равно велел ему немедленно выключить компьютер и вытащить из него жесткий диск. Однако было слишком поздно.
Вирус уже успел зашифровать половину файлов на диске D и даже забрался в расшаренную папку. Часть файлов удалось восстановить с помощью инструментов для восстановления удаленных файлов, но по закону подлости самые важные файлы были утрачены. Дальше классика жанра: на рабочем столе появилась новая картинка, а также текстовый файл с требованием определенной суммы за расшифровку данных и контактами злоумышленника.
Новые обои
Позднее я решил разобраться с этим вирусом в песочнице (VirtualBox + Windows XP). В архиве я обнаружил файл JavaScript, точнее файл с расширением .js
и содержимым, по синтаксису напоминающим JavaScript.
...
function yW() {
var lN="";
lN=lN+W(101)+W(5085/45-0)+W(54+56)+W(983-875)+W(1056/16+0)+W(32+71)+W(3456/36+0)+W(1045-932)+W(885-819)+W(10*11)+W(26+73)+W(823-723);
return lN;
}
function Gyh() {
var eKt="";
eKt=eKt;
return eKt;
}
function Wb(Ea, Ki) {
var kO = w(Ea);
var YM = Szh();
var Ofr = w(Ki);
var laN = [To()][RkE()];
while (YM < kO) {
var hN = YM / ie();
var cra = Ea[Hn()](YM);
YM = YM + Efo();
cra = cra + Ea[mO()](YM);
YM = YM + Fi();
var mM = Bie(cra, dkW());
var WzA = Ki[CC()](hN % Ofr);
var dCt = mM ^ WzA;
var bHh = String[yW()](dCt);
laN = laN + Gyh() + bHh;
}
return laN;
}
...
«Это неправильные пчелы! И JavaScript у них какой-то неправильный», — подумал я. К тому же путь от открытия файла .js
до шифрования файлов, на первый взгляд, не прослеживался.
Есть в Windows такая вещь, как WSH — сервер сценариев Windows. Он используется для запуска сценариев, написанных на определенных скриптовых языках, в том числе и на JScript — такие скрипты имеют расширение .js
.
Переменные в коде — случайный набор букв. Также мы знаем, что код содержит около ста функций, которые возвращают результат арифметических действий над константами, и около двадцати функций, которые тем или иным образом обрабатывают эти результаты. Некоторые функции аналогично работают со строковыми константами. Это говорит о том, что код хорошо обфусцирован.
Весь секрет заключается в функции eval()
. Эта функция выполняет код, переданный ей в качестве строки, а возвращает значение, равное последнему выражению. Рассмотрим одну из функций нашего шифровальщика.
function W(svu) {
var bHh = eval(Nx() + (svu+1) + uSk());
return bHh;
}
Давай разберемся, что здесь происходит.
Источник: xakep.ru