|
|
Полиморфизм, этот пережиток прошлого, себя не оправдывает. Ибо он
наилучшим образом демаскирует практически все использующие его вирусы,
сводя на нет их уникальность и делая таким образом ненужным составление
антивирусных сигнатур.
Грамотные стелс-алгоритмы, которые тем лучше, чем на более низком
уровне организованы, требуют привязки к конкретной системе, вследствие
чего написание их занимает много времени и сил, при, откровенно говоря,
слабом результате, неговоря уже о сопутствующих минусах.
Куда более интересным направлением является интеграция вируса с
исполняемыми файлами, что может решить одновременно задачи и
полиморфизма и стелс-алгоритмов.
Как показывает практика, технология UEP (unknown entry point), она же
EPO, то бишь варианты вставки перехода на вирус в середину файла, не очень
помогает в плане недетектируемости.
Поэтому одним из направлений развития вирусных технологий является
улучшение техники UEP, причем настолько, что время, затрачиваемое на
поиск вирусов в файлах, приблизится к максимально допустимому, после чего
и наступит ожидаемая нами недетектируемость -- но только применительно к
вирусам в файлах, а ведь это еще не все.
Максимально допустимое время означает, что юзер не захочет ждать
больше, скажем, минуты на файл, чтобы увидеть остоебенивший Ok.
Каким же образом улучшить UEP ?
Правильным способом является вставка в PE файлы не одного JMP-а, а
небольшого полиморфного расшифровщика в hll-виде, при этом по частям
раскиданого по всему файлу, но без всяких связующих jmp-ов. Достигается
это отнюдь не впатчиванием всякой херни в неиспользуемые адреса файла, а
полной рекомпиляцией PE файла с перемешиванием кодовой секции с
декриптором, причем этот декриптор должен использовать те же переменные и
характеристики что и код в файле.
Такая рекомпиляция файла вполне возможна, и опеределенные шаги на этом
пути уже сделаны. Правда, дизассемблирование файла занимает относительно
много времени, может быть несколько минут на файл, но это того стоит.
Куда же денется собственно вирус? Вирус, в зашифрованном виде будет
находиться в начале одной из секций (например кодовой), в ресурсах, в
сопутствующих файлу DLL-ках и т.п.
Итак, первое направление развития вирусов -- замена обычного
полиморфизма и стелс-технологий на интеграцию с исполняемыми файлами.
Вторым, и основным направлением, является усложнение вируса. Поскольку
существующая база на которой развиваются вирусы себя в плане увеличения
сложности исчерпала, следует ее заменить. Я говорю о том, что крайне
трудно написать большой и сложный вирус на ассемблере. Куда проще сделать
это на C++, и при этом писать не весь вирус, а только его составные части
-- модули aka плугины.
Дело в том, что каждый из модулей, выполняя определенную функцию,
может делать это по разному, причем не только на уровне кода, но и на
уровне вызываемых функций и даже алгоритма. Отсюда возникает возможнось
создавать функционально и алгоритмически изменяющиеся вирусы.
Почему сложность вируса должна увеличиваться?
В общем-то, вы можете быть с этим и не согласны. Например, с точки
зрения дешевых троянописателей, хватит и того что есть. Сложность вируса -
это его объем, количество возможных ответных реакций и внутренних
состояний, ключ к интеллекту...
Рассмотрим такую ситуацию:
Разошлись несколько сотен вирусов, полностью состоящих из сотен
плугинов, причем соответствующие плугины сравнимы на уровне алгоритмов, но
различны функционально и соответственно по коду. В результате эти вирусы,
собравшись в количестве N > 1 штук, могут обменяться соответствующими
плугинами, или, что то же самое, создать новую модификацию, состоящую из
родительских плугинов.
В результате (если не рассматривать предложенную ранее технологию
улучшенного UEP) процесс детектирования таких вирусов будет сведен к
детектированию сотен различных плугинов.
А поскольку вирус, состоящий из модулей, есть более структурная
сущность, чем обычный вирус, то каждый такой вирус-набор модулей можно
будет "собрать" в аналогичные ему вирусы, но не обладающие модульной
структурой. Другими словами, от исходника легко перейти к бинарнику, но не
наоборот.
В результате подобной техники станет возможным "собирать" новые
модификации наших недетектируемых вирусов "на местах"... К чему это
приведет -- можно только догадываться. Там посмотрим. ;-)
(x) 2000 Z0MBiE
http://z0mbie.cjb.net
|
|