Чем проверяют программисты вирусы


Доброго времени суток!

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

Распространенный миф : если вы думаете, что ваш обычный антивирус полностью защищает вашу систему - вы ошибаетесь!

Собственно, в этой статье хочу привести небольшой рецепт проверки и очистки компьютера от вирусов и разного рода вредоносного ПО (дополнений, рекламных баннеров, локеров, и т.д.). Отмечу, что это заметка будет полезна и для тех, кто даже знает, что на его компьютере есть вирус, но не может его удалить и очистить систему.

И так, ближе к теме.


Проверка ПК (по шагам)

Первое, с чего следует начать - это с установки современного антивируса, обновлении его баз и полной проверки ПК (по крайней мере, Windows и всего системного диска).

Как правило, для запуска проверки достаточно открыть главное окно антивируса и сделать 1 клик по соответствующей кнопке (как, например, в Антивирусе Касперского, см. скрин ниже). Здесь, особо, комментировать нечего: если будут найдены вирусы, то они автоматически либо будут изолированы, либо удалены/вылечены (никаких настроек или действий, как правило, не требуется) .


Проверка компьютера (Антивирус Касперского). Кликабельно

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


Один из подобных вирусов, заблокировавший рабочий стол (это окно нельзя ни свернуть, ни закрыть)

Важно!

Не выполняйте никаких требований от подобного вредоносного ПО. Даже если вы переведете им оговоренную сумму - ваша система не будет разблокирована!

В этом случае можно пойти следующими путями:

Пожалуй, наиболее популярны в последнее время вирусы, которые встраиваются в браузер и начинают показывать рекламу повсеместно (даже там, где ее никогда не было и нет). Как правило, при этом классический антивирус ничего не находит ни в самой системе в целом, ни в самом браузере (в частности). Для того, чтобы избавиться от этого "добра" необходимо воспользоваться спец. утилитами.

Одна из лучших утилит по борьбе с AdWare (рекламным ПО). Позволяет быстро загрузить исполняемый файл (весит меньше 10 Мб!) и запустить проверку. Отмечу, что утилита видит большинство встраиваемой рекламы в браузер, вредоносные скрипты, дополнения и т.д. После сканирования и проверки - ваш ПК будет перезагружен.

Кстати, что еще подкупает - для начала проверки достаточно нажать всего лишь одну кнопку "Сканировать" (см. пример ниже).


AdwCleaner - чистка от рекламы

Далее AdwCleaner представит вам отчет со всеми найденными угрозами: просто согласитесь на очистку и перезагрузку ПК.


Результаты сканирования - обнаружено несколько угроз

Если все прошло успешно - должно показаться окно о том, что очистка была удачно завершена и все найденные угрозы обезврежены (пример на скрине ниже).


Важно!

Кстати, AdwCleaner сейчас распространяется в комплекте пакета Malwarebytes Anti-Malware, также весьма очень качественного средства для борьбы с подобным поголовьем вирусов.


Умная защита браузера - IObit Malware Fighter

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

  1. проверка Windows на различное вредоносное ПО (которые не видят обычные антивирусы);
  2. возможность защиты в реальном времени;
  3. контроль за стартовой страницей браузера, его дополнениями, надстройками и т.д.;
  4. может работать параллельно с классическим антивирусом;
  5. совместимость с Windows: 7/8/8.1/10 (32/64 bits);
  6. полностью на русском, есть бесплатная версия программы.

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

Но когда они получают нужные им сведения, вмиг пересылают их своему разработчику. Так, что подобные "штуки" гораздо опаснее безобидных рекламных баннеров.

И, к сожалению, их очень трудно выявить. Обычные антивирусы ничего не "видят", специализированное ПО - помогает, но тоже не всегда.

Многофункциональная антивирусная утилита, не нуждающаяся в установке. Поможет быстро просканировать систему и удалить: SpyWare, AdWare, Dialer (Trojan.Dialer), троянских программ и прочее "добро". Добавлю, что в ее арсенале есть также несколько полезных "штук": восстановление системы, разблокировка входа в системный реестр (вирусы часто блокируют это), поиск и устранение уязвимостей.

Ниже на скрине показаны необходимые действия для проверки системного диска с Windows на вирусы и другое вредоносное ПО.


AVZ - проверка компьютера на вирусы (кликабельно)

Что касается устранения уязвимостей: зайдите в меню файл и откройте "Мастер поиска и устранения проблем", как показано на скрине ниже.


Мастер поиска и устранения проблем (AVZ)

Далее выберите категорию проблемы (Системные), степень опасности (все), и нажмите по "Пуск" (см. скрин ниже).

В моем случае, например, был разрешен автозапуск с подключаемых носителей (CD-дисков, скажем). В некоторых случаях, если вставляемый носитель заражен, и автоматически будет произведен его автозапуск -> произойдет заражение ПК/Windows.


Все найденные проблемы желательно пометить галочками и нажать кнопку "Исправить отмеченные проблемы".

Вообще, в утилите AVZ десятки функций и возможностей (в одной статье просто нереально рассмотреть). Рекомендую обязательно иметь ее на своем аварийном диске (на случай. ).

Главное окно SpyHunter

SpyHunter (если на русском: "Охотник за шпионами") - основное направление утилиты: борьба с шпионским ПО (трояны, руткины, черви, также утилита справляется со многими классическими вирусами, рекламными тулбарами, баннерам).

  1. не конфликтует с классическим антивирусом;
  2. защита в реальном времени (возможна одновременная работа с вашим обычным антивирусом);
  3. регулярные обновления;
  4. все изменения (удаление, "лечение" и пр.) можно отменить, если программа сделает что-то лишнее;
  5. удобный интерфейс в стиле минимализма;
  6. поддержка русского языка, работает во всех новых ОС Windows 8.1/10 (32/64 bits).


Spyware Terminator - главное окно программы

Бесплатная утилита для защиты компьютера от троянов и шпионского ПО в режиме реального времени. Отмечу, что приложение также неплохо справляется и с другими видами вредоносных программ: рекламных дополнений, червей, классических вирусов и т.д.

  1. возможность мониторинга в реальном времени за файловой активностью, Интернетом;
  2. три режима сканирования: полный, быстрый и выборочный;
  3. в утилиту встроен антивирус Clam AntiVirus (и база на 40 000 различных вирусов, червей и т.д.);
  4. регулярные обновления баз через Интернет;
  5. спец. база данных Web Security Guard (при ее активации - ваш Интернет становится безопаснее в разы!);
  6. возможность одновременной работы с обычным антивирусом;
  7. поддерживается всеми современными ОС (Windows 8/10).

Компьютерное хулиганство

Основная масса вирусов и троянских программ в прошлом создавалась студентами и школьниками, которые только что изучили язык программирования, хотели попробовать свои силы, но не смогли найти для них более достойного применения. Такие вирусы писались и пишутся по сей день только для самоутверждения их авторов. Отраден тот факт, что значительная часть подобных вирусов их авторами не распространялась, и вирусы через некоторое время умирали сами вместе с дисками, на которых хранились — или авторы вирусов отсылали их исключительно в антивирусные компании, сообщая при этом, что никуда более вирус не попадёт.

  1. Создавать вирусные программы для операционной системы MS-DOS в 1990-х годах было в разы легче, чем для технически более сложной Windows.
  2. В законодательствах многих стран появились специальные компьютерные статьи, а аресты вирусописателей широко освещались прессой — что, несомненно, снизило интерес к вирусам у многих студентов и школьников.
  3. К тому же у них появился новый способ проявить себя — в сетевых играх. Именно современные игры, скорее всего, сместили фокус интересов и перетянули на себя компьютеризированную молодёжь.

Мелкое воровство

С появлением и популяризацией платных интернет-сервисов (почта, веб, хостинг) компьютерный андеграунд начинает проявлять повышенный интерес к получению доступа в сеть за чужой счет, т.е. посредством кражи чьего-либо логина и пароля (или нескольких логинов и паролей с различных пораженных компьютеров) путем применения специально разработанных троянских программ.

В последние годы фиксируется постоянно увеличивающееся число троянских программ, ворующих персональную информацию из сетевых игр (игровую виртуальную собственность) с целью её несанкционированного использования или перепродажи. Подобные троянцы особенно широко распространены в странах Азии, особенно в Китае, Корее и Японии.

Криминальный бизнес

Наиболее опасную категорию вирусописателей составляют хакеры-одиночки или группы хакеров, которые осознанно создают вредоносные программы в корыстных целях. Для этого они создают вирусные и троянские программы, которые воруют коды доступа к банковским счетам, навязчиво рекламируют какие-либо товары или услуги, несанкционированно используют ресурсы зараженного компьютера (опять-таки, ради денег — для обслуживания спам-бизнеса или организации распределённых сетевых атак с целью дальнейшего шантажа). Диапазон деятельности данной категории граждан весьма широк. Остановимся на основных видах криминального бизнеса в сети.

В результате ретрансляции спама через тысячи (или десятки тысяч) заражённых компьютеров спамеры достигают нескольких целей:

Также именуются DDoS-атаками (Distributed Denial of Service — распределённый отказ в обслуживании). Сетевые ресурсы (например, веб-сервера) имеют ограниченные возможности по количеству одновременно обслуживаемых запросов — это количество ограничено как мощностями самого сервера, так и шириной канала, которым он подключён к интернету. Если количество запросов превышает допустимое, то либо работа с сервером значительно замедлится, либо вообще запросы пользователей будут проигнорированы.

В 2002-2004 годах этот вид криминальной деятельности был весьма распространённым. Затем он пошел на спад, видимо, по причине успешных полицейских расследований (за данные преступления было арестовано как минимум несколько десятков человек по всему миру), а также по причине достаточно успешных технических мер противодействия подобным атакам.

Сначала злоумышленником (или группой лиц) создаётся и распространяется специальная программа, осуществляющая несанкционированные пользователем телефонные звонки или отсылку SMS-сообщений с мобильных телефонов. Заранее или параллельно с этим те же лица регистрирует компанию, от лица которой заключается договор с местным телефонным провайдером об оказании платного телефонного сервиса. Провайдер при этом, естественно, не ставится в известность о том, что звонки будут производиться без ведома пользователя. Далее троянец названивает на платный телефонный номер, телефонная компания выставляет счета на номера, с которых шли звонки, — и отчисляет злоумышленнику оговоренную в контракте сумму.

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

Злоумышленником разрабатывается троянская программа, шифрующая персональные файлы пользователя. Троянец тем или иным способом внедряется в систему, ищет и шифрует пользовательские данные, а после окончания работы оставляет сообщение о том, что файлы восстановлению не подлежат, а купить программу-расшифровщик можно по указанному в сообщении адресу.

Другой известный метод кибер-шантажа — архивация пользовательских файлов в архив, зашифрованный достаточно длинным паролем. После архивации оригинальные файлы удаляются — и затем следует требование перевода некоторой денежной суммы в обмен на пароль к архиву.

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

Для обслуживания описанных выше видов криминальной деятельности в интернете кибер-преступниками разрабатываются и распространяются сетевые черви, которые становятся причиной многочисленных интернет-эпидемий. Основной задачей таких червей является установка криминальных троянских программ на максимально большое количество компьютеров в глобальной сети. Примерами таких червей являются нашумевшие в 2004 году Mydoom и Bagle, а в 2006 году — почтовый червь Warezov.

В отличие от массовых атак, рассчитанных на поражение как можно большего числа компьютеров, точечные атаки преследуют совершенно другие цели — заражение сети конкретной компании или организации или даже внедрение специального разработанного троянца-агента в единственный узел (сервер) сетевой инфраструктуры. Под ударом оказываются компании, обладающие достаточно ценной информацией — банки, биллинговые компании (например, телефонные компании) и т.п.

Причина атак на банковские серверы или сети очевидна: получение доступа к банковской информации, организация несанкционированного перевода денежных средств (иногда — весьма крупных сумм) на счёт или счета злоумышленника. При атаках на биллинговые компании целью выступает доступ к клиентским счетам. Целью точечных атак может являться любая ценная информация, хранящаяся на серверах сети — клиентские базы данных, финансовая и техническая документация, — всё, что может представлять интерес для потенциального злоумышленника.

Под атаками чаще всего оказываются крупные компании, обладающие критически важной и ценной информацией. Сетевая инфраструктура таких компаний достаточно хорошо защищена от внешних атак, и без помощи изнутри компании проникнуть в неё практически невозможно. По этой причине в большинстве случаев подобные атаки осуществляются либо сотрудниками атакуемых организаций (инсайдерами), либо при их непосредственном участии.

Полулегальный бизнес

Производится внедрение в систему специальных рекламных компонентов, которые периодически скачивают рекламную информацию с особых серверов и показывают её пользователю. В большинстве случаев (но не всегда) внедрение в систему происходит незаметно для пользователя, а рекламные окна всплывают только при работе интернет-браузера (так рекламные системы маскируются под рекламные баннеры веб-сайтов).

Стоит также отметить, что в некоторых случаях удалить легальные рекламные системы без нарушения работы основного софта невозможно. Подобным образом производители Adware защищаются от деинсталляции.

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

Весной на продажу выставили ноутбук Samsung NC10-14GB, выпущенный в 2008 году, с установленной на нем Windows XP SP3. Однако интерес вызывал не сам компьютер, а то, что у него внутри — шесть вирусов: ILOVEYOU, MyDoom, SoBig, WannaCry, DarkTequila и BlackEnergy, которые нанесли прямой и косвенный ущерб почти на $100 млрд.

Содержание



ILOVEYOU

ILOVEYOU начал свой путь с Филиппин, вирус рассылал свои копии по адресным книгам, поэтому единственный пользователь с обширной базой адресатов заражал огромное количество машин.


Предполагается, что авторы вируса, Онел Де Гузман и Реонэл Рамонес с Филиппин, которые якобы хотели проверить гипотезы дипломной работы, не ожидали случившейся бури. Позже молодых людей задержали (помог анализ кода оригинальной версии ILOVEYOU), но после расследования отпустили.


Вирус использовал уязвимость в операционной системе Windows и программе Outlook в частности, которая по умолчанию разрешала обработку скриптов. Причиной эпидемии называют то, что разработчики из MS в то время не считали скриптовые языки угрозой, поэтому эффективной защиты от нее не предусмотрели. Кроме того, авторы ILOVEYOU намеренно или по незнанию выпустили в мир не только инструмент для уничтожения — они предоставили конструктор, который можно изменять под свои нужды. Это привело к появлению десятков модификаций вредоноса.

Как следует из рассказов представителей компаний, которые занимались обеспечением информационной безопасности, вокруг творилась истерика, телефоны звонили безостановочно. Распространению вируса способствовала социальная инженерия: модифицированные его версии поступали от имени друзей, предлагающих встретиться, письма якобы содержали информацию о том, как получить подарок, предлагали почитать анекдоты и так далее. Знакомая классика.


Все было так плохо, что некоторые крупные военные ведомства (тот же Пентагон) и компании были вынуждены полностью остановить почтовые сервисы. Позже источники называли разные цифры, отражающие количество зараженных компьютеров, — от сотен тысяч до десятков миллионов.

Что делал ILOVEYOU? Червь, получив доступ к системе после своего запуска (куда уж без участия пользователя), всего-то изменял и уничтожал файлы. А бэкапов тогда практически никто не делал.

Sobig

Вирус Sobig впервые заметили в 2002 году. Считается, что он заразил миллионы компьютеров по всему миру, действуя вначале под другим названием. По некоторым данным, экономический ущерб от его действий превысил $35 млрд, однако, как и в остальных случаях, подсчеты носят приблизительный и отчасти гипотетический характер.


Ну а дальше дело за вложениями с двойными (например, .mpeg.pif) или обычными расширениями (просто .pif или .scr) — пользователь сам инфицировал систему.


Microsoft пыталась бороться с вирусом, выпустив патч, позволяющий блокировать некоторые типы файлов, но .zip среди них не было, чем и воспользовались хакеры. Потом софтверная корпорация предложила награду в четверть миллиона долларов за голову автора (не за голову, за имя, конечно), но его так и не нашли. По одной из гипотез, автором червя является программист Руслан Ибрагимов, но он с этим не согласен.

Mydoom

Mydoom, который появился в 2004 году, побил рекорды ILOVEYOU и Sobig по скорости распространения. А также рекорд Sobig по нанесенному экономическому ущербу — якобы более $38 млрд.


По данным Symantec, в ней было реализовано два триггера. Один был ответственным за организацию DoS-атак начиная с 1 февраля 2004 года, второй останавливал распространение вируса 12 февраля того же года, но бэкдоры оставались активными. Правда, это касалось одной из версий, последующие имели более поздние сроки запуска и отключения. Так что никаких совестливых хакеров.


Основной целью вируса, вероятно, была организация DoS-атак, а также рассылка нежелательной почты. Побочным эффектом стало повсеместное снижение скорости доступа в интернет, рост объемов спама, ограничение доступа к некоторым ресурсам и блокировка работы антивирусного ПО.


Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного Photoshop. Не о rootkit-e, который стоит на вашем сервере, маскируясь под системный процесс. Не о поисковых барах, downloader-ах и другой малвари. Не о коде, который делает плохие вещи от вашего имени и хочет ваши деньги. Нет, всё это коммерция, никакой романтики…

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

Мы будем говорить о вирусах, живущих в исполняемых файлах форматов PE и ELF, то есть о вирусах, тело которых представляет собой исполняемый код для платформы x86. Кроме того, пусть наш вирус не будет уничтожать исходный файл, полностью сохраняя его работоспособность и корректно инфицируя любой подходящий исполняемый файл. Да, ломать гораздо проще, но мы же договорились говорить о правильных вирусах, да? Чтобы материал был актуальным, я не буду тратить время на рассмотрение инфекторов старого формата COM, хотя именно на нем были обкатаны первые продвинутые техники работы с исполняемым кодом.

Начнём со свойств кода вируса. Чтобы код удобней было внедрять, разделять код и данные не хочется, поэтому обычно используется интеграция данных прямо в исполняемый код. Ну, например, так:


Все эти варианты кода при определенных условиях можно просто скопировать в память и сделать JMP на первую инструкцию. Правильно написав такой код, позаботившись о правильных смещениях, системных вызовах, чистоте стека до и после исполнения, и т.д., его можно внедрять внутрь буфера с чужим кодом.

Исполняемый файл (PE или ELF) состоит из заголовка и набора секций. Секции – это выровненные (см. ниже) буферы с кодом или данными. При запуске файла секции копируются в память и под них выделяется память, причем совсем необязательно того объёма, который они занимали на диске. Заголовок содержит разметку секций, и сообщает загрузчику, как расположены секции в файле, когда он лежит на диске, и каким образом необходимо расположить их в памяти перед тем, как передать управление коду внутри файла. Для нас интересны три ключевых параметра для каждой секции, это psize, vsize, и flags. Psize (physical size) представляет собой размер секции на диске. Vsize (virtual size) – размер секции в памяти после загрузки файла. Flags – атрибуты секции (rwx). Psize и Vsize могут существенно различаться, например, если программист объявил в программе массив в миллион элементов, но собирается заполнять его в процессе исполнения, компилятор не увеличит psize (на диске содержимое массива хранить до запуска не нужно), а вот vsize увеличит на миллион чего-то там (в runtime для массива должно быть выделено достаточно памяти).

Флаги (атрибуты доступа) будут присвоены страницам памяти, в которые секция будет отображена. Например, секция с исполняемым кодом будет иметь атрибуты r_x (read, execute), а секция данных атрибуты rw_ (read,write). Процессор, попытавшись исполнить код на странице без флага исполнения, сгенерирует исключение, то же касается попытки записи на страницу без атрибута w, поэтому, размещая код вируса, вирмейкер должен учитывать атрибуты страниц памяти, в которых будет располагаться код вируса. Стандартные секции неинициализированных данных (например, область стека программы) до недавнего времени имели атрибуты rwx (read, write, execute), что позволяло копировать код прямо в стек и исполнять его там. Сейчас это считается немодным и небезопасным, и в последних операционных системах область стека предназначена только для данных. Разумеется, программа может и сама изменить атрибуты страницы памяти в runtime, но это усложняет реализацию.

Также, в заголовке лежит Entry Point — адрес первой инструкции, с которой начинается исполнение файла.

Необходимо упомянуть и о таком важном для вирмейкеров свойстве исполняемых файлов, как выравнивание. Для того чтобы файл оптимально читался с диска и отображался в память, секции в исполняемых файлах выровнены по границам, кратным степеням двойки, а свободное место, оставшееся от выравнивания (padding) заполнено чем-нибудь на усмотрение компилятора. Например, логично выравнивать секции по размеру страницы памяти – тогда ее удобно целиком копировать в память и назначать атрибуты. Даже вспоминать не буду про все эти выравнивания, везде, где лежит мало-мальски стандартный кусок данных или кода, его выравнивают (любой программист знает, что в километре ровно 1024 метра). Ну а описание стандартов Portable Executable (PE) и Executable Linux Format (ELF) для работающего с методами защиты исполняемого кода – это настольные книжки.

Если мы внедрим свой код в позицию точно между инструкциями, то сможем сохранить контекст (стек, флаги) и, выполнив код вируса, восстановить все обратно, вернув управление программе-хосту. Конечно, с этим тоже могут быть проблемы, если используются средства контроля целостности кода, антиотладка и т.п., но об этом тоже во второй статье. Для поиска такой позиции нам необходимо вот что:

  • поставить указатель точно на начало какой-нибудь инструкции (просто так взять рандомное место в исполняемой секции и начать дизассемблирование с него нельзя, один и тот же байт может быть и опкодом инструкции, и данными)
  • определить длину инструкции (для архитектуры x86 инструкции имеют разные длины)
  • переместить указатель вперед на эту длину. Мы окажемся на начале следующей инструкции.
  • повторять, пока не решим остановиться

Это минимальный функционал, необходимый для того, чтобы не попасть в середину инструкции, а функция, которая принимает указатель на байтовую строку, а в ответ отдает длину инструкции, называется дизассемблером длин. Например, алгоритм заражения может быть таким:
  1. Выбираем вкусный исполняемый файл (достаточно толстый, чтобы в него поместилось тело вируса, с нужным распределением секций и т.п.).
  2. Читаем свой код (код тела вируса).
  3. Берем несколько первых инструкций из файла-жертвы.
  4. Дописываем их к коду вируса (сохраняем информацию, необходимую для восстановления работоспособности).
  5. Дописываем к коду вируса переход на инструкцию, продолжающую исполнение кода-жертвы. Таким образом, после исполнения собственного кода вирус корректно исполнит пролог кода-жертвы.
  6. Создаем новую секцию, записываем туда код вируса и правим заголовок.
  7. На место этих первых инструкций кладем переход на код вируса.

Это вариант вполне себе корректного вируса, который может внедриться в исполняемый файл, ничего не сломать, скрыто выполнить свой код и вернуть исполнение программе-хосту. Теперь, давайте его ловить.

Думаю, не надо описывать вам компоненты современного антивируса, все они крутятся вокруг одного функционала – антивирусного детектора. Монитор, проверяющий файлы на лету, сканирование дисков, проверка почтовых вложений, карантин и запоминание уже проверенных файлов – все это обвязка основного детектирующего ядра. Второй ключевой компонент антивируса – пополняемые базы признаков, без которых поддержание антивируса в актуальном состоянии невозможно. Третий, достаточно важный, но заслуживающий отдельного цикла статей компонент – мониторинг системы на предмет подозрительной деятельности.

Итак (рассматриваем классические вирусы), на входе имеем исполняемый файл и один из сотни тысяч потенциальных вирусов в нем. Давайте детектировать. Пусть это кусок исполняемого кода вируса:

Как мы увидели, для быстрого и точного сравнения детектору необходимы сами байты сигнатуры и ее смещение. Или, другим языком, содержимое кода и адрес его расположения в файле-хосте. Поэтому понятно, как развивались идеи сокрытия исполняемого кода вирусов – по двум направлениям:

  • сокрытие кода самого вируса;
  • сокрытие его точки входа.

Сокрытие кода вируса в результате вылилось в появление полиморфных движков. То есть движков, позволяющих вирусу изменять свой код в каждом новом поколении. В каждом новом зараженном файле тело вируса мутирует, стараясь затруднить обнаружение. Таким образом, затрудняется создание содержимого сигнатуры.

Сокрытие точки входа (Entry Point Obscuring) в результате послужило толчком для появления в вирусных движках автоматических дизассемблеров для определения, как минимум, инструкций перехода. Вирус старается скрыть место, с которого происходит переход на его код, используя из файла то, что в итоге приводит к переходу: JMP, CALL, RET всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.

Гораздо более подробно некоторые алгоритмы таких движков и детектора мы посмотрим во второй статье, которую я планирую написать в ближайшее время.

Рассмотренный в статье детектор легко детектирует неполиморфные (мономорфными их назвать, что ли) вирусы. Ну а переход к полиморфным вирусам является отличным поводом, наконец, завершить эту статью, пообещав вернуться к более интересным методам сокрытия исполняемого кода во второй части.

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.