ВИРУСНЫЕ ТЕХНОЛОГИИ: ЧТО ДАЛЬШЕ - 25:11 - by z0mbie
 
     Полиморфизм,  этот  пережиток  прошлого,  себя  не оправдывает. Ибо он
 наилучшим  образом  демаскирует  практически  все использующие его вирусы,
 сводя  на  нет  их уникальность и делая таким образом ненужным составление
 антивирусных сигнатур.
     Грамотные  стелс-алгоритмы,  которые  тем  лучше,  чем на более низком
 уровне  организованы,  требуют  привязки  к конкретной системе, вследствие
 чего  написание  их  занимает много времени и сил, при, откровенно говоря,
 слабом результате, неговоря уже о сопутствующих минусах.
     Куда   более  интересным  направлением  является  интеграция  вируса с
 исполняемыми    файлами,    что   может   решить   одновременно   задачи и
 полиморфизма и стелс-алгоритмов.
     Как  показывает практика, технология 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