Если вирусы на i-files
Как понять, что в телефоне вирус
Да, вредоносные программы опасны не только для компьютера, но и для смартфона. Тем более сейчас, с развитием технологий, злоумышленники просто мечтают подкрасться поближе к устройству, на котором есть все ваши личные и платежные данные. Итак, что должно насторожить вас и заставить подумать, как удалить вирус с телефона:
-
В телефоне стало слишком много рекламы. Баннеры вылетают отовсюду, появляются на рабочем столе, уведомления всплывают даже тогда, когда вы не используете телефон.
Телефон стал быстро разряжаться, сильно нагревается, даже тогда, когда вы им не пользуетесь. Возможно, как раз в это время он участвует в DDOS атаке или майнит для кого-то биткойны.
- После установки нового приложения, пусть даже скачанного из официального магазина, стали появляться ошибки, телефон стал глючить, выключаться, греться.
На карте или в памяти телефона появились поврежденные файлы, не открываются фотографии, аудио-файлы. В телефоне появляются странные папки, которые непонятно к чему относятся.
Смартфон стал слишком самостоятельным и теперь сам устанавливает то, что хочет без вашего участия.
Есть три наиболее распространенных группы "плохих программ".
-
Первое это всплывающие баннеры, которые никак нельзя отключить. Они сильно затрудняют работу пользователя и избавиться от них сложно, чаще всего приходится возвращаться к заводским настройкам и удалять все содержимое телефона.
Второе - шпионские программы, которые записывают все, что делает пользователь телефона и отправляет злоумышленникам. Выследить такую активность легко по увеличившемуся объему передаваемого трафика. Такие вирусы могут своровать данные вашей карточки, важные пароли - и в итоге вы лишитесь денег.
Вирус на телефон Андроид попадает вместе с программами, которые вы спокойно качаете из официальных магазинов. Это могут быть полезные календари и планировщики, игры и программы, считающие, например, ваш рацион и калории. Они могут содержать вредоносный код или же быть полностью написаны для воровства данных с вашего телефона.
Вирус также можно подцепить, открывая письма от незнакомых номеров, переходя по ссылкам из них, скачивая файлы, присланные таким образом или же "левыми" пользователями соцсетей. Даже если затем удалить загрузку, программа может успеть запуститься на вашем телефоне. Также зараженной может оказаться флешка, которую вы присоединяли к компьютеру или получили от кого-то из знакомых.
Пошаговая инструкция по удалению вирусов
Если вы столкнулись с описанными выше проблемами, будьте готовы спасать свой телефон. Мы расскажем, как удалить вирус с телефона различными способами.
1. Начнем с самого простого. Если вы не сделали это раньше, поставьте на свое устройство одну из антивирусных программ и запустите проверку. Есть бесплатные и платные антивирусы, воспользуйтесь продуктами известных производителей. Следуйте указаниям антивируса и удалите те файлы, которые он укажет, как подозрительные. Удалите скачанный антивирус, скачайте еще один и снова проведите проверку.
2. К сожалению, этот вариант помогает не всегда. Если вирусы уже в телефоне, они могут запрещать антивирусу работать правильно. Постарайтесь минимизировать вред, которые причиняет вирус вашему андроид устройству и вашему кошельку: включите режим "В самолете", чтобы программы не имели доступ к интернету. Затем проверьте список приложений. Если среди них есть те, что вам неизвестны, или недавно установлены - удалите их. Также можно посмотреть в "Диспетчере приложений" телефона, какие из них работают активнее других и расходуют максимум трафика. Удалить их можно прямо из корневой папки на главном диске - при подключении к компьютеру. Найдите файл с названием программы и расширением apk, удалите его.
3Удалить вирус с телефона на базе Андроид достаточно быстро можно, если найти вредную программу в списке "администраторов" и отобрать у нее права. Для этого зайдите в меню "Настройки", выберите вкладку "Безопасность" и найдите подпункт с правами приложений. Также это меню может находиться в папке "Приложения". Проверьте, какие права у установленных у вас приложений и при необходимости ограничьте их. В любом случае, нет необходимости доверять программам от сторонних разработчиков все свои секреты.
4. Если удалить программу, которая вам кажется подозрительной, не получается, перейдите в безопасный режим. Для этого нужно выключить телефон, а включая его, зажать кнопку уменьшения громкости. В этом режиме запускаются только системные программы и у вас будет возможность удалить сторонние приложения или отключить их права.
5. Можно удалить вирус через компьютер: если на вашем десктопе установлены антивирусные программы, то они чаще всего сильнее и более продвинуты, чем мобильные версии. Так что телефон можно проверить на вирусы через ПК. Для этого нужно подключить андроид устройство к компьютеру или ноутбуку в режиме "Отладка через USB". Для этого нужно зайти в меню "Настройки", найти там подпункт "Для разработчиков" и включить эту функцию. Затем именно это нужно выбрать в появившемся меню при подключении телефона кабелем. Смартфон откроется как дополнительный диск или флешка, просканируйте его антивирусом полностью. Удалите все найденные угрозы.
6. Самый безотказный способ - откат к заводским настройки. Для того, чтобы это прошло безболезненно, возьмите за правило делать резервную копию вашего смартфона раз в неделю - две недели.
Чтобы вернуться к заводским настройкам, зайдите в меню "Настройки" телефона, выберите там пункт "Система" и зайдите в пункт "Сброс". Там уже можно выбрать пункт "Восстановление до заводских настроек". Помните, что эта процедура сотрет всю информацию с вашего телефона, удалит все контакты, фотографии, приложения. Затем восстановить их можно будет из резервной копии.
7. Если на вашем телефоне обосновался вирус, который не дает зайти в меню, сбрасывайте телефон через компьютер. Только обязательно включите свежий антивирус, присоединяя устройство Андроид к ПК. После подключения USB-кабеля, включите телефон и выберите пункт: сбросить до заводских настроек. В этом случае баннер, закрывший экран, не помешает это сделать.
В этой статье рассказано о вирусах, заражающих ЕХЕ-файлы. Приведена классификация таких вирусов, подробно рассмотрены алгоритмы их работы, отличия между ними достоинства и недостатки.
Вирусы — это хорошая гимнастика для ума, хотя многие думают, что написать вирус на языке высокого уровня весьма трудно. Это не совсем так. Писать на языке Pascal довольно легко, правда величина полученного кода вызывает благоговейный трепет.
Для каждого типа вирусов представлены исходные тексты с подробными комментариями.Также приведены основные сведения о структуре и принципах работы ЕХЕ-программы.
Структура и процесс загрузки ЕХЕ-программы
В отличие от СОМ-программ, ЕХЕ-программы могут состоять из нескольких сегментов (кодов, данных, стека). Они могут занимать больше 64Кбайт.ЕХЕ-файл имеет заголовок, который используется при его загрузке.Заголовок состоит из форматированной части, содержащей сигнатуру и данные, необходимые для загрузки ЕХЕ-файла, и таблицы для настройки адресов (Relocation Table). Таблица состоит из значений в формате сегмент:смещение. К смещениям в загрузочном модуле, на которые указывают значения в таблице, после загрузки программы в память должен быть прибавлен сегментный адрес, с которого загружена программа.
При запуске ЕХЕ-программы системным загрузчиком (вызовом функции DOS 4Bh) выполняются следующие действия:
1. Определяется сегментный адрес свободного участка памяти,размер
которого достаточен для размещения программы.
2.Создается и заполняется блок памяти для переменных среды.
3.Создается блок памяти для PSP и программы (сегментЮОООЬ — PSP;
В поля PSP заносятся соответствующие значения.
4.Адрес DTA устанавливается равным PSP:0080h.
5.В рабочую область загрузчика считывается форматированная часть
заголовка ЕХЕ-файла.
6.Вычисляется длина загрузочного модуля по формуле:
7.Определяется смещение загрузочного модуля в файле, равное
8.Вычисляется сегментный адрес (START_SEG) для загрузки -обычно это PSP+lOh.
9.Считывается в память загрузочный модуль (начиная с адреса
10.Для каждого входа таблицы настройки:
a)читаются слова I_OFF и I_SEG;
c)читается слово по адресу RELO_SEG:I_OFF;
d)к прочитанному слову прибавляется START_SEG;
e)результат запоминается по тому же адресу (RELO_SEG:I_OFF).
11.Распределяется память для программы в соответствии с МахМет
12.Инициализируются регистры, выполняется программа:
b) АХ=результат проверки правильности идентификаторов драйверов, указанных в командной строке;
ЕХЕ-вирусы условно можно разделить на группы, используя в качестве признака для деления особенности алгоритма. Вирусы, замещающие программный код (Overwrite) Такие вирусы уже стали раритетом. Главный их недостаток — слишком грубая работа. Инфицированные программы не исполняются, так как вирус записывается поверх программного кода, не сохраняя его. При запуске вирус ищет очередную жертву (или жертвы), открывает найденный файл для редактирования и записывает свое тело в начало программы, не сохраняя оригинальный код. Инфицированные этими вирусами программы лечению не подлежат.
Эти вирусы получили свое название из-за алгоритма размножения:
к каждому инфицированному файлу создается файл-спутник. Рассмотрим более подробно два типа вирусов этой группы:
Вирусы первого типа размножается следующим образом. Для каждого инфицируемого ЕХЕ-файла в том же каталоге создается файл с вирусным кодом, имеющий такое же имя, что и ЕХЕ-файл, но с расширением СОМ. Вирус активируется, если при запуске программы в командной строке указано только имя исполняемого файла. Дело в том, что, если не указано расширение файла, DOS сначала ищет в текущем каталоге файл с заданным именем и расширением СОМ. Если СОМ-файл с таким именем не найден, ведется поиск одноименного ЕХЕ-файла. Если не найден и ЕХЕ-файл, DOS попробует обнаружить ВАТ (пакетный) файл. В случае отсутствия в текущем каталоге исполняемого файла с указанным именем поиск ведется во всех каталогах, доступных по переменной PATH. Другими словами, когда пользователь хочет запустить программу и набирает в командной строке только ее имя (в основном так все и делают), первым управление получает вирус,код которого находится в СОМ-файле. Он создает СОМ-файл еще к одному или нескольким ЕХЕ-файлам (распространяется), а затем исполняет ЕХЕ-файл с указанным в командной строке именем. Пользователь же думает, что работает только запущенная ЕХЕ-программа.
Вирус-спутник обезвредить довольно просто — достаточно удалить
СОМ-файл.
Вирусы второго типа действуют более тонко. Имя инфицируемого
ЕХЕ-файла остается прежним, а расширение заменяется каким-либо
другим, отличным от исполняемого (СОМ, ЕХЕ и ВАТ), Например,
файл может получить расширение DAT (файл данных) или OVL (про-
граммный оверлей). Затем на место ЕХЕ-файла копируется вирусный код. При запуске такой инфицированной программы управление получает вирусный код, находящийся в ЕХЕ-файле. Инфицировав еще один или несколько ЕХЕ-файлов таким же образом, вирус возвращает оригинальному файлу исполняемое расширение (но не EХЕ, а СОМ, поскольку ЕХЕ-файл с таким именем занят вирусом), после чего исполняет его. Когда работа инфицированной программы закончена, ее запускаемому файлу возвращается расширение неисполняемого. Лечение файлов, зараженных вирусом этого типа, может быть затруднено,если вирус-спутник шифрует часть или все тело инфицируемого файла,а перед исполнением его расшифровывает.
Вирусы, внедряющиеся в программу (Parasitic) Вирусы этого вида самые незаметные: их код записывается в инфицируемую программу, что существенно затрудняет лечение зараженных файлов. Рассмотрим методы внедрения ЕХЕ-вирусов в ЕХЕ-файл.
Способы заражения ЕХЕ-файлов
Самый распространенный способ заражения ЕХЕ-файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохранением оригинального) так, чтобы при запуске инфицированного файла управление получал вирус. Похоже на заражение СОМ-файлов, но вместо задания в коде перехода в начало вируса корректируется собственно адрес точки запуска программы. После окончания работы вирус берет из сохраненного заголовка оригинальный адрес запуска программы, прибавляет к его сегментной компоненте значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.
Следующий способ — внедрение вируса в начало файла со сдвигом кода
Вирусы, замещающие программный код ( Overwrite ) Как уже говорилось, этот вид вирусов уже давно мертв. Изредка появляются еще такие вирусы, созданные на языке Assembler, но это, скорее, соревнование в написании самого маленького overwrite-вируса. На данный момент самый маленький из известных overwrite-вирусов написан Reminder’ом (Death Virii Crew group) и занимает 22 байта.
Алгоритм работы overwrite-вируса следующий:
1. Открыть файл, из которого вирус получил управление.
2. Считать в буфер код вируса.
4. Искать по маске подходящий для заражения файл.
5. Если файлов больше не найдено, перейти к пункту 11.
6. Открыть найденный файл.
7. Проверить, не заражен ли найденный файл этим вирусом.
8. Если файл заражен, перейти к пункту 10.
9. Записать в начало файла код вируса.
10. Закрыть файл (по желанию можно заразить от одного до всех фай-
лов в каталоге или на диске).
12. Завершить программу.
Ниже приведен листинг программы, заражающей файлы таким способом.
Как лечить файловый вирус?
Перед выполнением лечения в любом случае необходимо:
- Отключить восстановление системы, как написано в правилах.
- Если компьютер подключен к локальной сети, то на время лечения отключить его.
В настоящее время эффективны две стратегии лечения файловых вирусов:
1) Скачайте на здоровом компьютере утилиту от DrWeb - CureIT! Разархивируйте и запишите её на CD или DVD (ни в коем случае не записывайте на флэшку! активный вирус повредит утилиту ещё до запуска!). Сделайте полную проверку "больного" в режиме Safe Mode, затем в нормальном.
Этот способ может не помочь, если антивирус DrWeb не знает модификацию вируса, заразившего Ваш компьютер. Если это так, отправьте несколько зараженных файлов в вирусную лабораторию Dr. Web. В течении суток CureIT! "научится" лечить вирус, правда утилиту придется скачать заново на "чистом" компьютере.
2) Второй способ предполагает наличие здорового компьютера с установленным антивирусом Касперского или Dr. Web. Именно эти антивирусы делают упор на сигнатурный детект, который необходим в лечении классических вирусов. Антивирусные базы должны быть самыми свежими. Достаньте жесткий диск "зараженного" компьютера и подключите к "здоровому". Запустите полную проверку антивирусом. По окончании проверки\лечения верните диск на место.
Данный способ также не гарантирует успеха, если антивирус не знает вирус. Кроме того его нельзя применять если один из компьютеров находится на гарантии или у Вас нет соответствующих навыков перестановки жесткого диска.
Ни один из вышеперечисленных способов не гарантирует 100% восстановления поврежденных файлов и их работоспособности. Если поврежденные данные для Вас очень ценны, рекомендуем обратится в сервисный центр.
Последний раз редактировалось Rene-gad; 10.09.2008 в 08:57 .
Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:
Еще одна довольно эффективная методика: это использование LiveCD, собранного специально для очистки компьютера от вредоносных программ, которых обычными средствами проблематично уничтожить.
В нашем случае (заражении файловым вирусом) необходимо использовать Dr.Web LiveCD, позволяет восстановить работоспособность системы, пораженной действиями вредоносных программ. Эта сборка LiveCD не только очистит компьютер от инфицированных и подозрительных файлов, но и попытается вылечить зараженные объекты.
В состав сборки Dr.Web LiveCD входят следующие приложения:
1. Сканер Dr.Web® для Linux;
2. Браузер Firefox;
3. Файловый менеджер Midnight Commander;
4. Терминал для работы с командной строкой непосредственно перед из-под графической оболочки;
5. Текстовый редактор Leafpad.
Более подробная информация находится в документации. Удачного лечения.
Последний раз редактировалось Bratez; 19.01.2011 в 12:46 .
Лечение файлового вируса с помощью VBA32
1. Если Вы еще не скачали Live CD Vba32 Rescue, то скачайте его по следующим ссылкам:
2. Запишите образ на болванку.
3. Выставите в BIOS загрузку с CD/DVD-носителя, вставьте диск в привод и загрузитесь с него.
4. Выберите режим vba32rescue, разрешение монитора и дождитесь появления окна навигации.
5. В меню выбора языка выберите Русский.
6. В главном меню нажмите Начать сканирование.
7. После завершения сканирования и загрузки в основную операционную систему, на системном разделе найдите директорию VbaRescue. Данная директория содержит файл-отчет vba32.rpt и файловый карантин. Файл отчета заархивируйте в zip-архив и прикрепите его к сообщению в Вашей теме.
Есть еще один вариант, но он более сложный и потребует еще одну машину.
1. Вам нужно скачать файл Vba32Check.exe (порядка 55 Mb.) по следующим ссылкам:
2. Разархивировать его на диск.
3. Папку Vba32Check записать на болванку. Все это нужно сделать на чистой машине, чтобы не заразились файлы.
4. Вставить болванку в CD/DVD-носитель зараженной машины и запустить с нее bat-файл vba32cdrun.bat.
5. По окончанию проверки файл отчета vba32.rpt, заархивировать в zip-архив и прикрепить его к сообщению в Вашей теме.
Последний раз редактировалось Aleksandra; 19.06.2011 в 22:04 .
В ряде случаев активный вирус так прописывает себя в системе, что его удаление весьма затруднительно. В этих случаях целесообразно использование загрузки с LiveCD - специальных загрузочных дисков, содержащих антивирус. Таким образом заражённая система неактивна, а значит неактивна и инфекция, а потому удалить её становится значительно проще.
На данный момент наиболее популярны два LiveCD: от DrWeb и от Лаборатории Касперского.
Для того, чтобы воспользоваться этими дисками, Вам необходимо скачать по одной из приведённых выше ссылок файл с расширением .iso на заведомо незаражённом компьютере. Этот файл - образ диска, его можно записать на любой пустой CD-R или CD-RW носитель. Использовать для этого можно самые различные программы, однако учтите, что файл нужно записывать именно как образ, а не просто поместить его на диск. Как записывать iso-образы указано в документации к программе для записи дисков, которую Вы собираетесь использовать.
После этого полученный диск вставьте в заражённый компьютер, убедитесь, что в настройках BIOS указано, что с CD-ROM нужно грузиться раньше, чем с HDD, после чего перезагрузите систему. Произойдёт загрузка с LiveCD в результате которой Вы сможете провести лечение заражённой системы автоматически.
ВНИМАНИЕ: LiveCD содержит антивирусные базы, в которых хранится информация о вирусах. С помощью этих баз система на LiveCD может определять вирусы и эффективно их обезвреживать. Очевидно, что антивирусные базы должны быть как можно более новыми, в противном случае система может пропустить последние версии зловредов. Поэтому мы рекомендуем Вам скачивать образы LiveCD непосредственно перед применением.
Если нет CD/DVD дисковода.
Для нетбуков (или в случае неисправности CD/DVD привода) можно использовать Dr.Web LiveUSB — продукт, позволяющий провести лечение и аварийное восстановление операционной системы с помощью загрузочного USB-накопителя.
Внимание! Не подключайте загрузочный USB-накопитель к компьютеру, когда на нем запущена ваша зараженная система!
Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного 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 инструкции имеют разные длины)
- переместить указатель вперед на эту длину. Мы окажемся на начале следующей инструкции.
- повторять, пока не решим остановиться
Это минимальный функционал, необходимый для того, чтобы не попасть в середину инструкции, а функция, которая принимает указатель на байтовую строку, а в ответ отдает длину инструкции, называется дизассемблером длин. Например, алгоритм заражения может быть таким:
- Выбираем вкусный исполняемый файл (достаточно толстый, чтобы в него поместилось тело вируса, с нужным распределением секций и т.п.).
- Читаем свой код (код тела вируса).
- Берем несколько первых инструкций из файла-жертвы.
- Дописываем их к коду вируса (сохраняем информацию, необходимую для восстановления работоспособности).
- Дописываем к коду вируса переход на инструкцию, продолжающую исполнение кода-жертвы. Таким образом, после исполнения собственного кода вирус корректно исполнит пролог кода-жертвы.
- Создаем новую секцию, записываем туда код вируса и правим заголовок.
- На место этих первых инструкций кладем переход на код вируса.
Это вариант вполне себе корректного вируса, который может внедриться в исполняемый файл, ничего не сломать, скрыто выполнить свой код и вернуть исполнение программе-хосту. Теперь, давайте его ловить.
Думаю, не надо описывать вам компоненты современного антивируса, все они крутятся вокруг одного функционала – антивирусного детектора. Монитор, проверяющий файлы на лету, сканирование дисков, проверка почтовых вложений, карантин и запоминание уже проверенных файлов – все это обвязка основного детектирующего ядра. Второй ключевой компонент антивируса – пополняемые базы признаков, без которых поддержание антивируса в актуальном состоянии невозможно. Третий, достаточно важный, но заслуживающий отдельного цикла статей компонент – мониторинг системы на предмет подозрительной деятельности.
Итак (рассматриваем классические вирусы), на входе имеем исполняемый файл и один из сотни тысяч потенциальных вирусов в нем. Давайте детектировать. Пусть это кусок исполняемого кода вируса:
Как мы увидели, для быстрого и точного сравнения детектору необходимы сами байты сигнатуры и ее смещение. Или, другим языком, содержимое кода и адрес его расположения в файле-хосте. Поэтому понятно, как развивались идеи сокрытия исполняемого кода вирусов – по двум направлениям:
- сокрытие кода самого вируса;
- сокрытие его точки входа.
Сокрытие кода вируса в результате вылилось в появление полиморфных движков. То есть движков, позволяющих вирусу изменять свой код в каждом новом поколении. В каждом новом зараженном файле тело вируса мутирует, стараясь затруднить обнаружение. Таким образом, затрудняется создание содержимого сигнатуры.
Сокрытие точки входа (Entry Point Obscuring) в результате послужило толчком для появления в вирусных движках автоматических дизассемблеров для определения, как минимум, инструкций перехода. Вирус старается скрыть место, с которого происходит переход на его код, используя из файла то, что в итоге приводит к переходу: JMP, CALL, RET всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.
Гораздо более подробно некоторые алгоритмы таких движков и детектора мы посмотрим во второй статье, которую я планирую написать в ближайшее время.
Рассмотренный в статье детектор легко детектирует неполиморфные (мономорфными их назвать, что ли) вирусы. Ну а переход к полиморфным вирусам является отличным поводом, наконец, завершить эту статью, пообещав вернуться к более интересным методам сокрытия исполняемого кода во второй части.
Читайте также: