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