·─T─┌O┐─T─┌A┐L···─Z┐┌0┐┌M┐┌B·i┌F─i┌C─┌A┐─T─i┌O┐┬N┬··························
│ │ │ │ ├─┤│ / │ ││││├┴┐┬├─ ┬│ ├─┤ │ ┬│ ││└┤ Issue #1, January-2001
··│·└─┘·│·│·│└─··└──└─┘│·│└─┘││··│└──│·│·│·│└─┘│·│··························
············································································
ВИРУС MistFall.Z0MBiE-10 [z0mbie10.zip]
············································································
Этот вирус знаменует собой окончание огромной ветви исследований в
области мутации вирусов. Большинство вещей, который я писал раньше,
послужили базой для его создания. А первый шаг был сделан в 1997 году с
созданием движка ZCME.
Итак, вирус этот -- демонстрационный. Это значит, что лишь одна его
часть, отвечающая за мутацию, развита достаточно хорошо; а все остальное,
типа резидентности и противодействия ав, присутствует на минимально
необходимом уровне.
При первой загрузке зараженного процесса он остается в памяти как
основной вирусный процесс, а текущую программу перезапускает. Проверка
резидентности осуществляется посредством системных Atom'ов. Задача
основного процесса состоит в рекурсивном поиске и заражении PE EXE/DLL
файлов.
При этом вирус называется slow-permutating, то есть при каждом запуске
он генерит свою пермутирующую копию (движок RPME) и использует ее для
заражения файлов в текущем сеансе.
Метод инфицирования файла следующий: (движок MISTFALL)
1. дизассемблировать файл (необходимо наличие фиксапов)
2. интегрировать файл с телом вируса
3. ассемблировать файл
При этом иногда, в качестве эффекта, вместо интеграции с телом вируса,
между каждой инструкцией файла вставляется такая конструкция:
< JMP $+5 , DB 'ХУЙ' >
что знаменует будущие попытки аверов с этим вирусом разобраться. Файл,
кстати, при этом остается работоспособным.
Пермутированное тело вируса, естественно, зашифровано, а полиморфный
декриптор (движок CODEGEN) разбавленный мусором (движок ETG), находится
где-то в середине кодовой секции файла. При этом он может быть кусками
разбросан по всей этой секции. При этом в декрипторе используются
переменные (которые создаются в секции данных), и на каждую переменную
настраивается фиксап. А новое тело вируса расшифровывается в область
неинициализированных данных, где и исполняется.
Основным недостатком вируса является то, что он работает крайне
медленно и жрет очень много памяти, при этом заражая лишь небольшой
процент файлов.
В вирусе реализована (но не используется, включите USE_SIGN в сорцах)
возможность подписывать зараженные файлы 128-битной RSA-подписью. Эта
фишка позволяет вирусу подписать файл, так, что только владелец закрытого
ключа сможет узнать, заражен ли этот файл или нет. Такую "подпись"
элементарно подделать, но не имея секретного ключа, невозможно произвести
ее проверку.
Идея проста: к фиксированной константе в несколько байт дописывается
несколько рандомных чисел, и все это дело шифруется открытым ключом. Так
что для проверки я просто расшифровываю буфер закрытым ключом и проверяю
первые его первые байты на соответствие константе.
············································································