– Наличие в начале программы последовательности команд подобного типа крайне подозрительно:
Start:
call Metka
Metka: pop
– Наличие в начале файла строк типа «PkLite», «LZ91»или «diet» подразумевает обработку программы соответствующим упаковщиком; если начало программы не содержит последовательности команд, характерных для упаковщика, не исключен факт ее заражения.
– Программы, написанные на языках высокого уровня, часто содержат в своем начале сегмент кода, затем сегмент данных. Наличие еще одного сегмента кода, располагающегося в конце файла программы, весьма подозрительно.
– Подозрение вызывают расположенные в начале программы, написанной на языке высокого уровня, фрагменты видоизменения собственного кода, вызовы DOS– или BIOS-прерываний и прочее. Желательно визуально помнить характерные начала программ, скомпилированных в той или иной системе программирования (например, начала программ, написанных на Turbo Pascal, содержат большое количество дальних вызовов подпрограмм call xxxx: xxxx).
– Наконец, о наличии вируса могут свидетельствовать «посторонние» строки типа «Eddie lives.» внутри файла.
7. Ловля вируса «на живца». Итак, допустим, что наличие вируса в системе доказано одним из предложенных выше методов, и зараженные вирусом объекты определены. Теперь можно начать изучение вируса и, вслед за этим, попытаться удалить его с машины. Желательно послать образец вируса профессиональным вирусологам. А для этого необходимо выделить вирус в чистом виде.
а) Выделение загрузочного вируса. Как уже говорилось выше, если вирус заразил винчестер, необходимо при помощи программы DiskEditor сохранить в файле образ зараженного объекта (например, сектора 0/0/1 или всей нулевой дорожки). Но, как известно, загрузочные вирусы только «живут» в системных областях винчестера, размножаются же они, заражая системные области дискет. Поэтому смотрим на лицевую панель компьютера. Если в наличии дисководы обоих типов (3.5" и 5.25"), то придется отформатировать 4 дискеты на 4 стандартных формата: 360Кбайт, 720Кбайт, 1.2Мбайт и 1.44Мбайт. Затем при помощи программы DiskEditor внимательно рассмотрим и постараемся запомнить внешний вид boot-секторов этих дискет (0/0/1), хотя бы первые байты (естественно, все это делается на чистой машине). Вставляем не защищенные от записи дискеты по очереди в дисководы «больной» машины и (обязательно) обращаемся к ним: пытаемся прочитать каталог, записать, прочитать и удалить какие-либо файлы. Наконец, на чистой машине при помощи DiskEditor вновь просматриваем сектор 0/0/1. Если на какой-либо дискете он изменился, при помощи того же DiskEditor снимаем образ всей дискеты в файл. Вирус пойман. Можно упаковать файл каким-нибудь архиватором и послать его вирусологу. Некоторые хитрые вирусы хранят свое тело на дополнительной, специально отформатированной дорожке, так называемом инженерном цилиндре дискеты. В этом случае без пакета копирования ключевых дискет типа fda, teledisk или copymaster не обойтись.
б) Выделение резидентного вируса. Как известно, резидентный вирус постоянно находится в памяти ПЭВМ, выбирая жертву для заражения. Наиболее часто в качестве жертв выступают запускаемые программы. Однако файлы программ могут заражаться при открытии, копировании на дискету или с нее (вирус OneHalf), во время поиска при помощи DOS-функций FindFirst или FindNext. Необходимо подобрать подходящего претендента на «контрольное» заражение – небольшую программу простой структуры, приманку. Некоторые вирусы пытаются распознать приманку и отказываются от ее заражения. Не подходят для таких целей слишком короткие программы или такие, большая часть которых состоит из повторяющихся байт (например, 90h – код команды NOP). В качестве приманки с большим успехом можно использовать программы test.com и testxxe. Вот их исходные тексты на языке Assembler.
test.com
cseg segment
assume cs:cseg, ds:cseg, ss:cseg
org 100h
Start:
db 1249 dup (0FAh,90h,0FBh,0F8h)
mov ah,4Ch
int 21h
cseg ends
End Start
test.exe
cseg segment
assume cs:cseg, ds:cseg
Start:
db 1000 dup (0FAh,90h,0FBh,0F8h)
mov ah,4Ch
int 21h
cseg ends
sseg segment stack
assume ss:sseg
db 118 dup (0FAh,90h,0FBh,0F8h)
sseg ends
End Start
Скопируем приманки на зараженную машину. Выполним над ними как можно больше операций: запустим, скопируем в другое место винчестера и на дискету, переместим, просмотрим их в NC и DOS (командой dir). При этом желательно несколько раз поменять системное время и дату, потому что вирусы нередко активны не каждый день и не круглые сутки. Чтобы исключить Stealth-эффект, загрузимся с чистой дискеты и рассмотрим внимательно эти файлы. Как правило, достаточно бывает проконтролировать размер файлов и просмотреть их код при помощи F3 – наличие вируса определить несложно. в) Выделение нерезидентного файла. Самый неприятный случай. Помимо того, что вирус нередко привередничает, распознавая приманку, и по-прежнему отказывается работать «без выходных и отпусков», так еще и заражаемость программ сильно зависит от их расположения на винчестере. Одни нерезидентные вирусы заражают только в текущем каталоге, другие – только в подкаталогах 1-го уровня, третьи – в каталогах, указанных в строке path системной среды (Vienna), четвертые – вообще во всех каталогах винчестера. Поэтому воспользуемся программой типа rt, чтобы скопировать приманки во все каталоги диска (запускаем из корневого каталога):
Читать дальше
Конец ознакомительного отрывка
Купить книгу