|
|||
Скачать Антивирус Anti-SVC 5.0
И.Мигитко, А.Байков История обнаруженияВ начале июня 1991 г. мы заметили, что с нашей ПЭВМ (фирмы SELCO Computer, МП I80286) происходит что-то неладное : иногда происходит произвольная перезагрузка DOS или машина "зависает", перестал запускаться AUTOCAD, при копировании файлов во время работы Norton Commander время создания копии устанавливается на 12:00. Почти полная уверенность в проникновении неизвестного вируса в используемое нами ПО возникла у нас 7 июня, когда мы использовали программу AS (автор - А.В.Байков) для перехва- тывания дисковых операций при работе Norton Commander (программа AS перехватывает прерывание 13H). Мы заметили, что при любом обращении к диску из NC некая программа пытается осуществить запись на диск. При этом длины всех файлов при работе NC соот- ветствовали их истинным исходным значениям. Однако, при после- дующем просмотре директориев в PC Tools выяснилось, что длины многих *.COM и *.EXE файлов увеличены на 3103 байта. Кроме того, размер памяти системы, доступной DOS, уменьшен на 4 Kb (по рапорту DOS), в то время, как PC Tools находит столько памяти, сколько ее установлено в ПЭВМ на самом деле, а именно 640 Kb. 8 июня мы запустили на "зараженной" ПЭВМ "программу - - приманку" (4 Kb кодов 90Н) - и вирус заразил ее. После этого нетрудно было на "чистом" компьютере выделить его код и проанали- зировать его работу. ИнициализацияКогда зараженная программа начинает выполняться, управление передается на начало тела вируса, т.к. при заражении программ первые 24 байта оригинального кода запоминаются в области данных тела вируса, а в первые 3 байта, в случае файла типа СОМ, записывается JMP LABEL, где LABEL - начало кода вируса, а случае заражения файла типа ЕХЕ модифицируется заголовок файла с тем, чтобы при загрузке управление передавалось на начало кода вируса. Проверяется наличие кода вируса в ОЗУ. Если он есть, то сравнивается код вируса в памяти с кодом вируса в программе. Если встречается отличие, то происходит перезагрузка ПЭВМ, иначе управление пеpедается исходной программе. Если кода вируса в ОЗУ нет, то происходит загрузка тела вируса в старшие адреса оперативной памяти. При этом:
Перед тем, как передать управление исходной программе, происходит декодирование первых 24 байт исходной программы, которые хранятся со смещением 0ВААН относительно начала кода вируса в зараженной программе. Кодирование и декодирование выполняются с помощью одной и той же процедуры, фрагмент которой приведен ниже:
Если была загружена программа типа СОМ, то начиная с CS:0100 переписываются первые 3 байта раскодированного кода и управление передается на CS:0100. Если была загружена программа типа ЕХЕ, то восстанавливается из раскодированных 24 байт оригинальный заголовок файла и управление передается на оригинальный CS:IP. Инфицирование программКогда вирус находится в ОЗУ, он перехватывает прерывания 21Н и 8Н. При возникновении прерывания INT 8H происходит следующее:
Koгда возникает INT 3H и INT 1H сравнивается CS инициирующей прерывание программы с СS вируса. Если они совпадают, то проис- ходит перезагрузка ПЭВМ (JMP F000:FFF0). Eсли не совпадают, то происходит переход на истинную обработку прерываний. Видимо, это является попыткой борьбы с отладчиками. При возникновении INT 21Н виpус реагирует на функции:
Вирус пытается инфицировать программы, когда возникает INT 21H c АН, равным 03DH, 03ЕН, 040Н, 04ВН. Сценарий действий во всех случаях примерно одинаков (для примера дана схема действий при АН = 4В):
ПроявлениеЗараженные программы имет длину на 0C1FН байт большую, чем исходный код. Однако, при просмотре каталогов на зараженной машине этого видно не будет, т.к. при возникновении INT 21H c AH, равным 11H,12H,4ЕH,4FH (Find First and Find Next), вирус проверяет, заражен найденный файл или нет. Если файл заражен, то в DTA записывается длина файла минус 0C1F, т.е. длина незаpаженного файла. Аналогично виpус маскиpует свое пpисутствие и при возникновении INT 21H c АН равным 57Н (установить/опросить время/дату файла). Мы не нашли в коде вируса ничего, что могло бы привести к нежелательным последствиям (удаление файлов, форматирование и т.д.). С этой точки зрения вирус выглядит довольно безобидным. Обнаружение и лечениеОбнаружить данный вирус достаточно просто. В области данных вируса есть символьная строка "(c) 1990 by SVC,Ver. 5.0", по которой вирус, если он есть на диске, можно обнаружить с помощью программ типа PC TOOLS. При написании антивирусной программы можно предложить следущую последовательность действий:
Изложенный алгоритм реализован в программе ASVC50.EXE, написанной на языке программирования TURBO-PASCAL 5.0 (исходный текст в файле ASVC50.PAS). При таких действиях могут возникнуть "потерянные кластеры", от которых нужно избавиться. ПримечаниеМы не смогли определить, что происходит на зараженной машине при возникновении INT 21H c АН, равным 83Н, 84Н, поскольку не имеем описания оных. Вообще, с информацией по системе - полный "КАРАУЛ !!". | |||
© 2009–2023 Russian Pascal Developer Network.
Техническая площадка: ISBIZ Хостинг |