27.02.2000 Метавирусы [meza]

Я хочу поговорить о том , что начали применять недавно , и что , я уверен , станет весьма распространено в будущем - о подкачке вирусом дополнений из интернета.

Для чего это нужно и как это можно сделать?

На первый вопрос ответить довольно легко. Во-первых , таким образом можно закачать на пораженный комп сколько угодно , не заботясь о размерах своего кода. Во-вторых , апдейты могут быть двух видов - апдейт самого тела вируса , или модуль расширения. В первом случае заменяется вирус на аналогичный , но с измененной сигнатурой , либо вообще на совершенно другой , т.о. затрудняется обнаружение вируса антивирусными программами. Во втором случае модуль расширения может быть инфектором для другого типа файлов или чем-то более специфичным , типа password sender-а или backdoor.Так вирус кроме размножения сможет выполнять и какие-то служебные задачи , что , на мой взгляд , является революционным шагом. А представьте себе определение антивирусного софта на компе и докачку специализированого анти-антивирусного модуля! Т.о. мы получаем новый уровень адаптируемости вируса. Можно даже назвать эти модули генами , что должно ласкать слух любителям генной модели вирусов. Можно пойти дальше и представить себе сообщества вирусов , каждый из которых , оказавшись на компе , закачивает из инета другие , "дружественные" вирусы.Скорость распространения вируса , входящего в такую группу будет аналогична скорости таких известных кроликов как Melissa :)

Теперь о реализации. Первое , что требуется - это соответствующая архитектура вируса.Очевидно , что вирус должен иметь в своем составе т.н. серверную часть , которая полностью резидентна , отвечает за поиск , доставку и запуск дополнений. Т.о. в заражаемом файле , независимо от типа , должны быть две части , загрузчик и сам сервер. Загрузчик сбрасывает сервер на диск и запускает его , а далее передает управление жертве . Сервер должен иметь в себе процедуру сканирования диска и инфицирования хотя бы одного типа файлов (подумайте сами , почему). Т.о. после замены самого сервера залитым апдейтом все последующие заражения будут новыми , с иной сигнатурой , а возможно и способом.Тут надо проследить , что когда загрузчик сбрасывает сервер , не произошло замены новой версии сервера более старой , из предыдущих заражений. Модули дополнений скорее всего будут представлять из себя dll , интерфейс может быть различным. Сканирование диска можно сделать централизованным , в сервере , т.е. целевые (для определенного типа файлов) модули расширения должны лишь экспортировать ф-ию заражения. НО! При этом в инфицируемый файл прописывается соответствующий загрузчик и ТЕКУЩИЙ сервер.

А теперь мы подошли к самому сложному - откуда слить дополнения? Тут есть несколько вариантов. Первый , самый простой - фиксированный адрес. Это так просто , что и говорить не о чем. Но , конечно , работает эта схема недолго , как только аверы получили ваш вирь в свои кровожадные :) руки они узнают и этот адрес. А закрыть сайт , а тем более страничку несложно.И все , ваш звИрек остался один в этом жестоком мире! Он сможет размножаться , но при этом это уже вирь старой волны , он уже ничего не может слить из инета.

Я подумал пару дней и нашел более красивое решение - использование поисковых серверов. Вирус в таком случае знает ключевую фразу и поисковый сервер. Ваше дело залить дополнения на какой-то сайт и внести его адрес в базу поискового сервера. Даже если страничку закроют , вы можете открыть новую и вновь зарегистрировать ее на поисковике! Всего-то! Поначалу мне идея очень понравилась , хорошая защита от аверов и довольно просто реализуется... Но мир так жесток !:) Эта метода тоже имеет слабое место - если вирус станет достаточно известен , то на поисковике могут поставить фильтр на вашу ключевую фразу.

Вариацией предыдущего метода является использование поисковика по фтп-серверам , там можно задавать просто имя файла , а поиск ведется по фтп-шникам , большая часть которых являются публичными , т.е. залить туда может кто угодно и что угодно.Вы спросите , а чем же тогда этот сповоб отличается от предыдущего? А отличие радикальное!! Залить может КТО УГОДНО!! Т.е. тот же вирь!! Таким образом можно организовать мигрирующую (хотя и не обновляющуюся) базу модулей. Например , вирус отсчитывает поколения , и при достижении какого-то числа с помощью поисковика ищет какойто распространенный файл , чтоб получить список фтп-серверов. Среди них ищет публичный , заливает туда все что он имеет , под НОВЫМИ именами, а в последующие заражения прописывает ЭТИ имена! Красивая картинка , не правда ли?:) Надеюсь аверы заценят идею...:) Минус все тот же - на поисковике могут поставить фильтр...Но в данном случае это сделать уже сложней , слишком много фильтров ставить придется. Кстати , вот пока писал мне пришла в голову новая идея! Аверы ведь не могу проверить ВСЕ версии виря , т.е если произошла миграция базы модулей , то она уже защищена от них !! Да , скажете вы , но и я не знаю где и под какими именами вся эта ботва лежит! А вот и нет , скажу я!! Можно организовать обратную связь - вирус может намылить , например , вам все необходимые реквизиты :). Конечно , мыло тоже надо менять ,например через те же обновления...Уже по ходу написания этой статьи мне пришло в голову отличное усовершенствование этого способа. Представьте себе , что в вирусе есть простой командный интерпретатор, который считывает команды из файла , который и лежит на фтп. А в командном файле вы уже можете прописать любые варианты апдейта. Так вот , мигрировать может только этот командный файл , его расположение передается вам по дополнительному каналу связи , а далее вы можете его отредактировать. Т.о. чтоб аверы могли отловить все поколения ваших вирей им нужно получить в свои руки по одному экземпляру из КАЖДОГО! Конечно , и это не абсолютная защита , но если вы вдумаетесь , то поймете , что ловить такие вирусы аверам будет весьма сложно.

И , наконец , апофеоз воспаленного воображения - системы instant messaging , типа ICQ, AIM, а также IRC. Реализация несколько сложнее, но вполне реальна , особенно в последнем случае. Размер - поверьте мне , несколько килов всего! Зато ПОЛНАЯ интерактивность!!! Просто сказка...Представьте себе вирусы разных авторов , сидящие на канале и обменивающиеся модулями!!! Аверам такое может присниться только в кошмарном сне!:) Проблемы - все те же , вы не можете просто прописать в вире название канала в ирке или номер в асе , его узнают аверы и абзац! Но и решение возможно аналогичноетому , что я предлагал для предыдущего способа. Например , тот же сервер может после определенного числа поколений может генерить новое имя канала или регистрировать новый номер в асе для связи со своим хозяином и сообщать его вам. Так же можно применить шифрование с открытими ключами , так что даже если аверы и перехватят письмо с новыми реквизитами ничего они не узнают и весьма полезно было бы применять цифровую подпись во всем , что заливает ваш вирь из инета.

Как видите , выбрать есть из чего. Но самое сложное , лично для меня , выбрать лучший метод..:)

Еще , что я хотел отметить. Аверы тоже апдейтят свои продукты. И у них нет проблемы с тем , откуда слить обновление. НО! Они не могут контролировать своевременность обновлений , все зависит от юзера. А я видел компы , на которых был антивирус и ВО , ПЕРВОЙ версии!!! Т.е. той , которой уже более полутора лет, которая определяется чем угодно , чуть ли не калькулятором (calc.exe:))!!! То ли эти юзеры вообще не занют про обновления , то ли считают , что достаточно установить антивирус на комп и вирусы будут бояться этого компа!:) Так вот , отвлекся , в отличие от аверов вирус сам обновляется и может это делать хоть каждый день! Неужели мы упустим такое преимущество?!

В заключение хочу сказать , что написание такого вируса задача непростая , это не батники строчить(хотя и тут есть место для творчества , конечно. Отвлекусь и скажу , что лично я не люблю батники т.к. просто считаю их неэффективными). Но я уверен , что есть люди способные реализовать это , в одиночку или вместе. Так же не могу не сказать , что на мой взгляд , что подтверждает и эта статья , вирусы усложняются и это приводит к тому что все более актуальным становится применение языка высокого уровня при написании вируса , например С/С++ , но это уже тема другой статьи!:)

Сравнение современных способов мутации вирусов и мутации через сетевые апдейты, на мой взгляд , показывает , что первое если и не умрет , то останется лишь вспомогательным средством. А на сцену выйдут вирусы нового поколения - метавирусы! И они радикально отличаются от вирусов старой волны ! Метавирус - это динамическая структура модулей , различных по функциям, но объединенных одной целью . А цель такова - выживание структуры в целом и служение своему хозяину! Одно поколение метавируса может отличаться от другого абсолютно всем , кроме хозяина (хотя и это при желании можно изменить:)) Через апдейт вы можете менять сигнатуру , целевую платформу (тип заражаемого файла), алгоритм , способ связи с хозяином, функции и т.д. Все , что вы можете придумать , все это можно изменить! А теперь подумайте , что могут противопоставить этому аверы? Ничего , только пассивно ждать , когда каким-то образом они получат какое-то поколение метавируса , внести его сигнатуру в свою базу и опять ждать...(Вы скажете , что есть еще и эвристика? Да , это сильный ход с их стороны , но и с этим можно успешно бороться , об этом , в частности , в другой моей статье.) Почему эта схема так сильна? Потому , что вирус действует не один , а во взаимодействии со своим хозяином! Конечно , это требует от хозяина каких-то усилий , но за все нужно платить , тут уж ничего не поделать. Совсем независимый метавирус возможен только при наличии у него искусственного интеллекта , но мне это пока не под силу :)

Я написал "выйдут на сцену" и тут же засомневался...Дело в том , (вынужден повториться) что написание метавируса - задача на порядок сложнее , чем написать обычный вирь. Тут требуется уже системный подход , если можно так выразиться . Лишь единицы в мире способны в полной мере реализовать такую идею в одиночку , а групповые проекты в вирусном мире (успешные) мне пока не известны. (кстати , метавирус удобней для группового проекта , чем обычный вирус , т.к состоит из нескольких достаточно независимых частей). Хотя есть еще один вариант - кибероружие...А где появляется оружие , появляются и деньги...Но это в будущем..(хотя мы его застанем, я думаю).

По поводу идей и предложений по этой статье пишите на мыло [email protected]

P.S. Одна из моих следующих статей - что гадкого могут сделать аверы. На мой взгляд , есть довольно радикальные решения , способные положить конец вирусам , в их нынешнем виде.