Вирусы... Взгляд со стороны. by ReCoder Мда... Хреновый из меня гуру... (Анекдот) ---[0. Введение]------------------------------------------------------- Почему 'взгляд со стороны'? Потому что я стараюсь смотреть на вирусы не с позиции пользователя, не с позиции вирус-райтера и не с позиции антивирусника. А именно со стороны - как зритель большого спектакля под названием Жизнь. Так что - не стреляйте в ReCoder'a, он пишет как умеет. ---[1. Общие слова]---------------------------------------------------- Некоторые из описанных здесь идей я пробовал реализовать в порядке эксперимента и кое-что действительно удавалось. Посему - желаю успехов вирус-райтерам в реализации этих идей, а антивирусникам желаю быть готовыми к появлению вирусов нового поколения. Надеюсь увидеть ответ на эту статью в виде аналогичной статьи про антивирусы, желательно также 'со стороны', то есть без ссылок на российский уголовный кодекс. ---[2. Что мы имели в прошлом]----------------------------------------- За последние лет 15 мы все были свидетелями ужасно интересного процесса - эволюции саморазмножающихся программных организмов aka вирусов. От примитивных Vienna и Brain до монстров типа Zhengxi. Вирусная мысль не на секунду не останавливалась, а антивирусная неплохо поддерживала темп, задаваемый неугомонными вирусописателями. Кстати, мне очень интересно, что случилось бы, если бы в начале 80- х на волю был выпущен типичный для нашего времени монстр, со скажем RDA или хотя бы SMEG полиморфиком. Жаль, что история не признает условного наклонения... ---[3. Что мы имеем в настоящем]--------------------------------------- Сейчас мы наблюдаем примерно тот же процесс, что происходил на заре вирусотроения десять лет назад. С разницей в программно-аппаратной платформе. Вместо старушки DOS мы имеем Windows95, да и WindowsNT за компанию достается. История, как ей и положено, повторяется. Только на этот раз знания, накопленные за последние годы, не пропали даром и путь от простых direct action нерезидентов до полиморфных стелс резидентов пройден за каких-то пару лет (если считать от Bizatch до Marburg). Поэтому примерное развитие событий на ближайшие месяцы можно предсказать, оглянувшись на последние несколько лет. Windows, а особенно Windows95, как вирус-платформа, на мой взгляд весьма и весьма перспективна, потому что там: 1. Практически полностью отсутствует секьюрити, что является тяжелым наследием DOS'a. Особенно приятна незащищенность файловой системы, что во-первых, сводит практически на нет средства защиты, а во -вторых открывает невиданные ранее возможности по изменению любых компонент системы, включая системные файлы. 2. Наличествует очень разнообразный и удобный API. По-моему, несколько вирусов уже используют Memory-mapped файлы вместо традиционного файлового API. В будущем набор используемых функций Win32 API будет постоянно расширяться, впрочем и сам API не стоит на месте. Почему же все еще не началась лавина Windows-вирусов? По-моему, это вполне объяснимо. Сдерживающим фактором тут является относительная сложность создания Windows-вируса. Если примитивный DOS-вирус можно состряпать на коленке, хоть в Debug'e, хоть в кодах руками набить, то для создания Windows-вируса надо иметь представления о 32-битности, о работе с DLL, и не только. Поэтому imho создание Win32-вирусов будет продолжать оставаться уделом умельцев-одиночек, вроде Jacky Qwerty или VLADовцев, если не... Если не появятся удобные и достаточно средства для разработки Win-вирусов. Что-то типа Virus SDK for Windows (tm). Попробую описать мое видение этого пакета. Он будет состоять из нескольких компонент: 1. Генератор статически-полиморфного кода. Ядро системы - генератор кода, выполняющего одни и те же функции, но не совпадающие по двоичному коду. Назначение - сделать невозможным generic (XXX.based) детектирование кода, созданного этим пакетом. Он будет использоваться в других компонентах пакета. Прототипами могут служить DREG (DHA Randomized Encryption Engine) и HOPE (Huge Overhead Polymorphic Engine) 2. Библиотеки Windows. Аналог библиотек Win SDK. Для каждого вируса генерируется новая копия библиотеки с помощью генератора (см. п 1) 3. Вирус-специфичные библиотеки. Например, варианты polymorphic engines. Опять-таки для каждого вируса генерируется своя копия библиотеки. 4. Опционально - вирус-генератор, использующий статический кодогенератор. Может применяться как для генерации обычных вирусов, так и для создания скелетов других, более изощренных вирусов. Однако тут нужна довольно серьезная и (что более важно) систематическая работа. Так что вероятность появления именно такого набора я считаю довольно низкой. Однако если все-таки найдутся такие герои, то проблем с вирусами у нас определенно прибавится. Другая, на мой взгляд тупиковая, но весьма и весьма живучая ветвь вирусного сообщества - это макро-вирусы. Почему она тупиковая? Потому что появилась она исключительно благодаря тому, что ботаники из Майкрософта не встроили в MS Office практически никакой защитной системы. И когда (если) они соберутся и встроят в сам пакет такие функции, все семейство макрушников автоматом попадет в раздел ископаемых. Другое дело, что сами мелкомягкие слишком заняты рисованием 'новых' (читай - более других) контролов, кнопочек, фенечек и рюшечек, чтобы делать еще и что-то необходимое. Так что я не верю ни в то, что MS сделает это, ни в то, что макро-вирусы способны похоронить мелкомягкий офис как продукт. Почему семейство макровирусов так живуче? Причин много. 1. Простота в реализации. Любой, даже самый клинический, двоечник в состоянии подучить Visual Basic и реализовать свои деструктивные потребности за пару часов. 2. Распространенность офиса как вирусной платформы. 3. Доступность как высокоуровневых средств VBA, так и низкоуровневого Windows API, что позволяет конструировать довольно хитрые вещи. Однако макро-вирусы опасны также тем, что могут быть использованы как носители для других потенциально вредных программ. Случаи использования макро-вирусов как 'дропперов' для обычных DOS-вирусов уже известны. Более хитрый сценарий мог бы выглядеть так: некий макро-вирус содержит в себе код, собирающий пароли из Windows (например, dial-up пароли), и посредством MAPI отправляющий их через Anonymizer в какую-нибудь Usenet телеконференцию. Результаты должны быть весьма катастрофичными. Непонятным (мне по крайней мере) является будущее bs/mbr вирусов. Дело в том, что они живут несколько в другом измерении и интеграция с операционкой в них опциональна. Впрочем, операционные системы, не использующие стандартный дисковый ввод-вывод (BIOS), сильно портят жизнь таким вирусам вплоть до полного блокирования. А такии операционки все наступают и наступают... ---[4. Что нас будет иметь в будущем]---------------------------------- Чтобы попытаться предсказать положение с вирусами в будущем, надо опять взглянуть со стороны и принять во внимание остальные тенденции компутерного мира. А на мой взгляд это: 1. Дальнейшее вытеснение писюками+windows (Wintel) других платформ 2. Проникновение Internet'a повсеместно 3. Наплевательское отношение Microsoft'a к качеству их софта ;) Вирусы будут постепенно мигрировать под Win32, адаптируясь к новой среде. Как я уже упоминал, Win32 предоставляет очень богатый API, как например: memory-mapped файлы, структурированные исключения, система хуков, Messaging и Internet API, Security и Network management - и не надо изобретать велосипеды, достаточно воспользоваться тем, что есть. К тому же вирусу намного проще затеряться среди многобайтов Win95, чем в DOS-овских пакетах. Что будет приводить к увеличению среднего размера вирусов и увеличению их сложности. Что конкретно я жду от будущего: a) Безусловно, появления Windows-червей, то есть чисто сетевых вирусов. Хотя и не рассчитываю на большое их количество. Работа это кропотливая, а среда не совсем подходящая. b) Самообновляющихся вирусов. Ничего не мешает вирусу, имеющему доступ к Internet'у, пойти на авторский сайт и скачать, например, новый polymorphic engine. Либо даже не брать апдейты, а искать их самостоятельно посредством, скажем, Alta Vista. Также, новые вирусные апдейты смогут использовать свеженайденные дырки в защитных механизмах OS до того, как пользователь найдет время скачать официальный патч. c) Образования устойчивых 'вирусных сетей'. Несколько - от единиц до сотен вирусов вполне могут налаживать коммуникации между собой для координации своих действий. Во-первых, они могут использоваться для 'похищения процессорного времени', то есть организации распределенной вычислительной работы, например для подборов паролей. Во-вторых, возможно ожидание внешних команд, для организации распределенных атак. Причем атака будет осуществляться от имени ни о чем не подозревающих пользователей. d) Возможен подмен дисковых драйверов либо перехват обращений к ним для реализации 'неизлечимости' по типу OneHalf'a. Только в среде Win32 к его услугам будет полный MS CryptoAPI, что при правильной реализации сильно усложнит лечение и восстаносление. Тем не менее, я считаю, что такие вирусы будут единичны (что не исключает возможности глобальных эпидемий) и большинство вирусов будут детектироваться более-менее общими эвристическими алгоритмами. В общем, как говаривал Козьма Прутков: 'Бди!' ---[5. Заключение]----------------------------------------------------- Буквально вчера я зашел на страницу Доктора Соломона и обнаружил там Virus Alert на GRIC Windows DialUp Networking Password Stealing Trojan. То есть троянец, ворующий dial-up пароли из Windows95/NT, оказался реальностью, существующей в дикой природе. Ну что ж, поживем-посмотрим. Может быть я и не такой уж хреноый гуру... ======================================================================= ю 1998 (c) ReCoder * recoder@usa.net * barmaley.da.ru * ICQ# 12273995 ю ----------------------------------------------------------------------- |