Technical Details
Резидентные файлово-загрузочные зашифрованные вирусы. Поражают начальные сектора дискет и файл IO.SYS на диске С. Занимают 1024 байта и состоят из двух частей (секторов). Первая часть содержит инсталлятор вируса и подпрограмму заражения флоппи-дисков, вторая часть содержит код, внедряемый в boot-сектора дискет. Этот код представляет собой процедуру заражения
файла IO.SYS (или его эквивалента типа IBMBIO.COM) на винчестере. В boot-секторах вирус зашифрован.
При загрузке с зараженного флоппи-диска вирус расшифровывает себя и передает управление подпрограмме заражения файла IO.SYS. Эта подпрограмма считывает первый boot-сектор винчестера (диск C), проверяет размер диска
(не заражает диск, если он меньше 26M, т.е. используется 12-битная FAT),
подсчитывает адрес корневого каталога, считывает его, проверяет атрибут первой записи корневого каталога и не заражает диск, если первая запись в
корневом каталоге имеет атрибут VOLUME.
Если этот атрибут — не VOLUME, то вирус копирует в последние сектора диска файл, соответствующий первому входу (стандартно это IO.SYS) и сдвигает вниз на одну позицию все записи в корневом каталоге с 3-го по 77-й (последняя запись будет потеряна, так как она затирается предпоследней).
Затем вирус копирует системные данные из первой записи корневого каталога в третью и устанавливает в третьей записи адрес первого кластера файла на только что созданную копию IO.SYS. В результате в системе появляются два
файла IO.SYS: на первый указывает первая запись в корневом каталоге, на второй — третья запись. Затем вирус записывает вместо первого IO.SYS свой
код и ставит у этой записи атрибут VOLUME.
Корневой каталог до заражения:
size cluster attributes
IO SYS 40470 2 Arc R/O Sys Hid
MSDOS SYS 38138 22 Arc R/O Sys Hid
COMMAND COM 52928 41 Arc
DOS 0 67 DIR
AUTOEXECBAT 100 68 Arc
CONFIG SYS 150 69 Arc
Зараженный корневой каталог:
size cluster attributes +----- VOLUME attr
V
IO SYS 40470 2 Arc R/O Sys Hid Vol <- вирус
MSDOS SYS 38138 22 Arc R/O Sys Hid
IO SYS 40470 16108 Arc <- первоначальный IO.SYS
COMMAND COM 52928 41 Arc <- сдвинутые вниз входы
DOS 0 67 DIR в корневой каталог
AUTOEXECBAT 100 68 Arc
CONFIG SYS 150 69 Arc
Все описанные выше манипуляции производятся вирусом через INT 13h, причем довольно тщательно: он проверяет диск на наличие свободных кластеров,
аккуратно сохраняет все копии FAT и т.д.
Атрибут VOLUME у зараженного IO.SYS играет двоякую роль - идентификатора
зараженного диска и стелс-функция вируса. Файл с атрибутом VOLUME не виден стандартными функциями DOS, такими, как FindFirst/Next,
Open, Read, Close. Для того чтобы обнаружить этот файл и прочитать его содержимое требуются специальные утилиты чтения дисковых секторов
(например, AVPUTIL или DiskEditor).
В результате описанной выше процедуры диск C: оказывается зараженным, однако ни MBR, ни boot-сектор не изменились. Изменен единственный объект - файл IO.SYS. При загрузке системы с пораженного винчестера все будет идти,
как и на чистой системе (загрузка и выполнение MBR и boot-сектора) до момента запуска IO.SYS.
Стандартный загрузчик DOS сравнивает имена первых двух входов в корневой каталог со строками IO.SYS и MSDOS.SYS (или эквивалентными строками).
Загрузчик ищет строки, но не проверяет атрибуты обнаруженных входов в каталоге. В результате загрузчик найдет в первом входе строку IO.SYS,
загрузит соответствующий файл (вирус) в память и передаст ему управление.
При загрузке с зараженного диска процедура инсталляции, получив управление, перехватывает INT 13h и оставляет вирус в памяти стандартным способом, уменьшая размер системной памяти (слово по адресу 0000:0413). При вызове INT 13h вирус обрабатывает обращения к флоппи-дискам и заражает их. Он сохранает свое продолжение и первоначальный boot-сектор в последних
секторах корневого каталога дискеты и записывает свой инсталлятор вместо boot-сектора, предварительно зашифровав его при помощи полиморфик-алгоритма.
В августе при загрузке с зараженного диска вирус расшифровывает и выдает
сообщение:
B BOOT CEKTOPE - 3APA3A
С формальной точки зрения этот вирус не является стелс-вирусом, однако
процедура его обнаружения и лечения на винчестере довольно трудна.
Зараженный IO.SYS не виден стандартными функциями DOS и может быть
обнаружен только вызовами через INT 13h/25h. Зараженный файл невозможно
также ни удалить, ни переименовать. Единственный способ обнаружить вирус из
DOS - это команда LABEL, при ее вызове DOS отвечает:
Volume in drive C is IO SYS
На попытку изменения метки диска DOS реагирует сообщением:
Cannot make directory entry
Невозможно также вылечить диск утилитой SYS, поскольку она заменит только
вторую копию IO.SYS, не затронув вируса. Более того, диск станет
незагружаемым, поскольку вирус считывает зараженный IO.SYS по абсолютным
адресам, сохраненным при заражении диска, а при команде SYS этот файл будет
(скорее всего) помещен на новое место.
Technical Details
Резидентный неопасный стелс-полиморфик-вирус. Поражает COM- и EXE-файлы только на дисках A: и B: при создании файла, MBR
винчестера - при запуске зараженного файла. В результате вирус обеспечивает
свое присутствие в оперативной памяти компьютера и переносимость на другие
компьютеры при минимальном числе пораженных объектов, что несколько
затрудняет его обнаружение. Эта идеология имеет и еще одно "достоинство" -
при заражении заново создаваемого файла нет необходимости отслеживать
критическую ошибку DOS (int 24h).
Вирус записывается в конец файлов, используя при этом полиморфик-алгоритм.
При заражении диска располагается в самых последних секторах диска и
устанавливает в таблице разбиения диска (Disk Partition Table) новый адрес
активного загрузочного сектора: вместо "настоящего" активного boot-сектора
таблица указывает на код вируса. Код и расположение MBR и активного
boot-сектора остаются без изменений, за исключением трех байт в Disk
Partition Table, которые указывают на активный boot-сектор. При обращении к
исправленной MBR и последним секторам диска использует "стелс"-механизм.
Вирус инфицирует память при загрузке с зараженного диска. Часть своей
TSR-копии помещает в таблице векторов (0000:02С0), области данных BIOS
(0000:04B0), а основной участок кода - в видеопамяти (BB00:0050). Затем
перехватывает INT 13h, 20h, 21h, 27h.
После загрузки операционной системы вирус следит за запуском и завершением
программ. Если программа при завершении выгружается из памяти (Exit - INT
20h, INT 21h и AH=0 или 4Ch), то вирус перемещает свой код из видеопамяти в
область, занятую выгружаемой программой. Если программа остается
резидентной (Keep - INT 27h, INT 21 и AH=31h), то "прикрепляет" свой код к
этой программе. Если часть вируса, размещенная в видеопамяти, испорчена, то
вирус заново считывает испорченный код с диска (самовосстановление вируса).
В зависимости от своих счетчиков при обращении к дискам вирус проявляется
"писком морзянки" и выводит "звезды" на экран. Содержит строку:
>STARSHIP_1<
|