
      __________   __________   _____    ____
     ____         ____         ______   ____   Сусликов  Е Н
    ____         ____         ____ __  ____
   __________   __________   ____  __ ____      Кемеровский
        ____   ____         ____   ______       университет
       ____   ____         ____    _____
__________   __________   ____     ____    (384-2-) 23-44-03



   release 9.06                       Создателю вируса v1260
 12 февраля 1991                     посвящается.




        Не заражаемая антивирусная программа-фаг SOS (до
версии 8.7 - "Goalkeeper") расчитана на мало-мальски опытных
пользователей (тех, кто не ищет Partition table на
дискетах), а также для тех, кто хочет быстро избавиться от
заразы, не вдаваясь в подробности, какая версия из Дудлов
является причиной музыкальной перезагрузки.

        Главное достоиство программы после высокой ско-
рости проверки то, что она может служить как детектор на
неизвестные ей ( и может быть вообще еще не написанные)
вирусы. Для этого от пользователя не требуется ничего -
как только новый вирус заражает SOS - фаг сообщает ее длину
и предлагает:

                (K)ill or (Q)uit ?
             (уничтожить или выйти ?)

если нажимается буква "К" вирус удаляется из файла а затем
предлагается перегрузиться с чистого диска, в противном
случае происходит возврат в MS-DOS. В любом случае вирус
'запоминается в лицо' и при следующих запусках программы
все файлы будут проверяться также и на новую заразу.

        Возможно три исключения, когда детектирование
может не сработать:
1. Если ассемблерный код вируса меняется от файла к файлу
2. Если точки входа в файлах типа COM и типа EXE различны
   ( в этом случае новый вирус будет детектироватся только
     в COM-файлах)
3. Если управление вирусу передается 'хитрым' способом


        В библиотеке свободно два места, и новым вирусам
присваиваются имена Unknown I и II, при третьем вирусе
выдается:

                    Library full
              ( библиотека заполнена)

и новый вирус игнорируется.


                        Сообщениия:
                        ----------

        1.          Good length - bad file
              ( верная длина - испорченный файл)

        Возможно при вирусах v512, 100Years, или других, не
меняющих (или делающих вид, что не меняют) длину файла.

        2.          LSEEK from EOF
               ( смещение за конец файла)

  JMP пытается "прыгнуть" за конец файла.

        3.         Original BOOT demaged
               ( оригинальный BOOT разрушен)

        Возможно например при вирусе Joshi, если на 40(80)
треке не оказалось оригинального BOOT'a.  Никаких действий
не предпринимается.

        4.         File size over 64K
               ( размер файла более 64 Kбайт)

говорит о том, что обнаружен COM-файл размером более 64
Kбайт, это может быть при заражении вирусами, не
контролирующими длину файла. Восстановление таких файлов не
гарантируется.

         5.
        Boot-сектор проверятся 10 раз, если и после этого
находится зараза, выдаются предупреждение

                          Cycling
                 (возможно зацикливание)

и проверка boot'a прекращается. Например возможна потеря
оригинального boot'a при заражение  вирусом Stoned еще
с каким-нибудь бутовым вирусом.

        6.      Insert SOS.COM in drive x:
             (вставьте SOS.COM в дисковод x:)

появится, если ВЫ умудрились вытащить дискету с SOS.COM,
пока она тестировала память.

        7.         Report flag ignored
             ( опция рапорта игнорируется)

    Если задан рапорт на печать, а принтер не включен.

        8.              Fatal error
                   (неисправимая ошибка)

    Если по каким-либо причинам (например из-за защиты
записи) SOS не может избавиться от вируса.

        9.       Must have DOS 3.2 - 4.xx
         (должна использоваться DOS версии 3.2 - 4.xx)

    Т.к. используются недокументированные прерывания,
то работа в других версиях чревата.


        При каждом запуске происходит тестирование на
предмет поиска известных вирусов в памяти, причем может быть
обнаружен и неактивный вирус, например обезвреженный
программой AIDSTEST.  При обнаружение вируса выдается
сообщение о необходимости перезагрузки системы с чистого
диска.  Можно выйти из программы только через DUSTER, PK_AT,
RELEASE и им подобные, но лучше этого не делать.

        Найденный вирус в памяти НЕ НЕЙТРАЛИЗУЕТСЯ, автор
считает, что перезагрузка с чистой дискеты принесет меньше
вреда, чем заражение всех файлов какой-нибудь новой особо
опасной заразой типа "Dark Avenger", или "Bontchev".

       Основной критерий правильности работы программы SOS:
если зараженная программа работала корректно, она должна
правильно работать и без вируса.




                        Параметры:
                        ---------

Параметры SOS можно менять как в диалоговом режиме, так и с
командной строки :

        SOS [d:] [опции], где

        d: - проверяемый диск, если указать *: то будут
проверяться все логические диски начиная с C:

        опции:
        /h - короткая подсказка о параметрах запуска
        /k - уничтожать найденные вирусы
        /b - отключить гудок
        /r - записать рапорт в файл SOS.LOG
        /p - выдать рапорт на печать
        /a - проверять все файлы (по умолчанию проверяются
             только файлы, имеющие расширения .COM и .EXE)
        /s - включение скроллинга (по умолчанию после
             заполнения окна сообщений появляется надпись
             "more..." и ожидается нажатие любой клавиши для
             продолжения работы, но при нажатии на буковку
             's' флаг скролинга сбрасывается )
         /m - не тестировать память


        Сканирование параметров подчиняется следующим
правилам:
  1. За слэшем следует опция
  2. Перед двоеточием стоит буква проверяемого диска
  3. Остальные разделители игнориружтся

        Опции могут располагаться в произвольном порядке,
причем если одна и таже опция задана дважды происходит ее
сброс:

        Примеры:

        SOS /a *: /k,  SOS *:/a/k,  SOS/k/a*:
                    - прооверяются все файлы на дисках
                      винчестера, найденные вирусы
                      уничтожаются.

        SOS /b/p/b  - гудок не отключается, рапорт выйдет на
                      печать

        При запуске без параметров происходит переход в
диалоговый режим.



                  Известные автору вирусы:
                  -----------------------

                        Файловые:
                        ---------

648            и его модификации длиною 534, 623, 627 байт.
                507, 348, 353, 367, 435              (9.00)
                 Vienna (DOS62) - по SCAN

Kemerovo       самоделка бездарных местных студентов

v529

Dark Avenger

Yankee Doodle  модификации:
                18,19,21,22,26,27,29,2c,2d
                shortDoodle 1  (Yankee у SCAN)
                23,2a,2e                             (9.00)
                shortDoodle 2

LetterFall       1701/1704 у SCAN

IV             модификации:
                345, 740, 847 байт
                277, 299, 852                        (9.00)
                 Amstrad у SCAN

Black Square
                 Jerusalem у SCAN

Sunday

Vacsina        модификации:
                4,5,10
                6                                    (9.00)

Voronezh       модификации:
                600 байт и 2.01

    *** release 8.6 ***

sI

Bontchev         V2000 по SCAN

Murphy           1
                 2                                   (9.00)

    *** release 8.7 ***

Loz

v516

v644

v512

v572

v707

MGTU

MSTU

LoveChild

v905

100Years        4096 у SCAN


    *** release 9.00 ***
    ("Gold SOS")

    *** release 9.01 ***
    (поддерживает логические диски свыше 32 Мбайт)

    *** release 9.02 ***
    (добавлена опция /M)

BestWish

...You

Hymn            модификации 1962 и 2144
                1865                                 (9.04)

SVC 4.0

v696

v948

v1049

v699

    *** release 9.03 ***
    (переход к MAKE-файлу и модульному программированию)

    *** release 9.04 ***
    (Посвящается Е.Бушманову)

BlackJec        с длинами 230, 246, 267, 276, 287, 358, 369

MLTI

Alabama

April           модификации 1.01 (com)
                            2.01 (exe)               (9.05)

Attn

Bebe

AIDS

BigPiter


    *** release 9.05 ***
    (Посвящается создателю вируса v1260)

3nop

Dance           Devil's Dance по SCAN'у

DotEater

Datacrime

Fish

Halloechen

Jocker

Mirror

v1260           V2P2 -> SCAN

v217

    *** release 9.06 ***
    (исправлены очередные ошибки)

Magni

                        Бутовые:
                        --------

Ping Pong

Brain

Disk Killer

Stoned

    *** release 8.6 ***

Joshi




                        О вирусах
                        ---------

        Voronezh 2.01 - файловый вирус длиною 1600 байт,
заражает и COM- и EXE-файлы.  Не меняет точку входа в
EXE-файле, из-за этого уж слишком сложно их заражает,
изменяя Relocation table.  Весь алгоритм заражения в
точности соответствует 'рекомендациям' Лозинского, описанных
в AIDSREAD.ME - сопроводиловке к его AIDSTEST'у.  EXE-файлы
заражаются при открывании ( копировании ).
Просмотр листинга вызывает противоречивые впечатления.
Где-то применен интересный прием, а где-то написан бред
обезьяны.  Можно порекомендовать автору читать больше книжек
по асемблеру, но во-первых где их взять ?  , а во-вторых
можно получить новую, более жестокую версию.


        Joshi - бутовый вирус ( на винчестере 'живет' в
Partition table) занимает 6 секторов под свое тело, затем
пустой сектор и затем оригинальный boot. На дискетте все это
хранится на 40 дорожке - в ущерб размножению. Был написан с
целью максимально усложнить свое обнаружение. Найти его на
зараженной машине, просматривая boot ( или Partition)
невозможно - перехватывая при загрузки 13 прерывание, вирус
перенаправляет чтение на оригинальный boot. При теплом
рестарте (CTRL-ALT-DEL) остается в памяти.
         Больше всего 'радости' принесет тем, кто пользуется
программой ADM - при заражении вирусом Joshi потеряеся
служебная информация ADM, расположенная во втором секторе
винчестера со всеми вытекающими последствиями.


        sI - файловый вирус длиной 492 байта, маленький, но
страшно вредный, остается резидентным в памяти, причем имеет
нахальство располагаться по адресу 0010:0100 т.е. во второй
половине таблицы векторов. Заражает при запуске только COM-
файлы, у которых нет аттрибута 'только чтение'. Обходит слежение
за 21-м вектором. При своем первом старте обязательно заразит
COMMAND.COM в каталоге C:\, если конечно найдет его там, и у того
не будет аттрибута 'только чтение'. Округляет длину заражаемого
файла до 16-байтовой границы, а затем дописывается в конец,
переписывая первые 6 байт, причем первые три байта - длинный JMP,
четвертый с пятым - его личная подпись "sI", а шестой - счетчик,
по достижении нулевого значения включается механизм поражения
диска C: - перехватывая прерывание 1C (таймер), каждый раз при
входе в него другой счетчик (слово) уменьшается на единицу, по
достижению нуля затирается случайные сектора через INT 26.
Зачем-то использует команду 286процессора: PUSH 100h, из-за чего
не работает на 8086/8088.


        MGTU - файловый вирус длиной 273 байта, творение
студента МГТУ, начинающего учить ассемблер. Заражает только
COM-файлы в текущем каталоге, причем сразу все за один раз.
Студент не знает, что программе могут передаваться
параметры, а также, что int21 иногда имеет обыкновение
возвращать флаг ошибки.


        MSTU - файловый вирус длиной 554(COM) / 551(EXE),
вероятно развитие предыдущего. Уже сохраняет DTA, но как
сложно он это делает. Заражает и COM- и EXE-файлы, но
по-прежнему в текущем каталоге и сразу все. Знание
ассемблера и MS-DOS на том же низком уровне, что и в
предыдущем варианте.


        v905 - файловый вирус длиной 905 байт, заражает
только EXE-файлы, оставаясь резидентно в памяти. Работает
только в версии MS-DOS 3.30. Красиво шутит на EGA. Написан
любителем модульного программирования.


        LoveChild - длина 488 байта. Писал его человек с
большой фантазией - в небольшом вирусе столько разных шуток:
- переписывает себя во вторую половину таблицы векторов,
- в случае MS-DOS 3.30 обманывает сторожей,
- из-за ошибки заражает при открытии любой файл, имя или
расширение которого оканчиваются на "OM",
- распространяется только через COM-файлы
- если записывается нечто, начинающиеся на "MZ" (подпись
EXE-файлов), вместо этого пишется последовательность
команд, и файл становится троянской программой, затирающей
жесткий диск по 0-3 голове,
- при копировании файлов создает каталог с тем же именем
- два предыдущих пункта работают в зависимости от счетчика
времени
- не заражает файлы, начинающиеся командой STI (0FBh)


        LOZ -  длина 1023, заражает только COM-файлы при
выполнении и открытии, оставаясь резидентным. Шифруется
каждый раз по разному. Автор заразы читает умные книжки по
MS-DOS и является смертельным врагом программы AIDSTEST -
при ее выполнении стирает ее с диска и выдает сообщение:
        Welcom to demo version (C) Zherkov
        Лозинский-ДУБ , AIDSTEST - горбуха
Однако этого показалось мало и в вирусе есть еще одна
пакость - при записи на дискету BOOT сектора байт со
смещением 1А (количество голов )  заменяется на 0.


        v516 - первый из тех, кто ставит переход на себя в
точке, куда указывает первый JMP. Располагается в памяти в
первом системном буфере. Иногда на запрос GetDOSversion
(подфункция 30h 21-го прерывания) возвращает 0.


        v572 - заражает только EXE. Наверное написан для
тренировки работы с файлами.


        v644 - заражает только COM, только начиная с версии
MS-DOS 3.10, только в течении первых 20 минут каждого часа,
но как в текущем каталоге, так и через PATH, невзирая на
авторитеты.


        v707 - заражает только COM, работает только в 3.30,
но обходит сторожей. Освоил одну идею очень хорошо. Иногда
трещит.


        v512 - первый, физически не меняющий длину файла, в
памяти находится в первом системном буфере, обманывает
сторожей. Сильно пользуется недокументированными
прерываниями. Использует системную таблицу файлов, хотя
можно обойтись и стандартными функциями ДОС. Правильно
восстановливаются только те файлы, которые работают, если
файл восствновить невозможно, он стирается. Данный вирус
можно использовать как защиту от копирования, но не
забывайте, что зараженные файлы нельзя копировать даже на
новое место того же самого диска, а также нельзя
пользоваться утилитами дефрагментации типа Norton Speed
Disk.


        100Years - длина ровно 4096 байтов, перехватываются
20 подфункций 21-го прерывания. Не зная что и где искать
найти заразу невозможно. Разобраться с ним пока не успел.


        BestWish - две версии с длинами 970 и 1024 байтов,
содержат текст 'With Best Wishes', заражают исполняемые
файлы при чтении и запуске, после чего машина часто виснет.
После пяти заражений уменьшает слово со смешением 13H в
BOOTсекторе (общее число секторов диска), а в пятницу при-
ходящaюся на 13-е число записывает туда 0. Восстановить
эту информацию можно из Partition Table.


        ...You - 417 байт, только COM'ы, не совсем коррек-
тно вешается в памяти. Перехватывая 8-е прерывание (таймер)
после 0EA60 тиков (сквозной счетчик) матерится по-английски.


       Hymn - три версии длинами 1865 и 1962 (.VS.), 2144
(.VS2.) байт, написан скорей всего в Свердловске, самый
грамотный и варварский из известных мне советских вирусов.
Когда день равен месяцу (напр.  1 января, 2 февраля и т.д.)
затирает джиск C через INT 26, выводя под гимн Советского
Союза большую букву "V" состоящую из рамки, внутри которой
есть текст VIRUSOFT (c) Ver.  1..  Текст программы (кроме
длины 1865) шифруется в зависимости от дня недели.  В версии
длиною 2144 имеются раздражающие антиотладочные приемы.


        SVC 4.0 - длина  1689, заражает выполняемые файлы,
содержит текст "(c) 1990 by SVC, Vers. 4.0", приращение
длины невидно через команду DIR, использована идея , со-
держащаяся в вирусе v2000("Bontchev").


        v696 - написан ленивым человеком, который для об-
легчения отладки вируса выдумал новый способ базирования.
После того, как одна программа заразит 64 файла, ожидается
нажатие любой клавиши, затем затирается винчестер.


       v948 - чтобы не было скучно, при заражении EXE-
файлов в заголовке слово со смещением 10H (минимум памяти
в параграфах) увеличивает на 50H. В зависимости от счетчи-
ков и времени инкрементирует байт в сегменте 0B800H (буфер
цветного дисплея)


        v1049 - и сказать-то нечего, списан с Yankee Doodle.


        v699 - этот зачем-то пишет между программой и собой
случайное число байт. Даже жалко тратить 20-30 байт,  чтобы
убрать этот хвост, вряд ли вирус широко распространится.


        BlackJec - передан мне в исходных текстах и даже с
небольшой сопроводиловкой, из которой следует, что вирус
написан только для пробы сил в ассемблере.
        Мужики!  напишите лучше для меня резидентный
калькулятор, по возможностям как SideKick, но длиной 7-10
Kb, а то у меня руки не доходят.  А чтобы написать просто
вирус надо знать так мало. Для хорошего вируса типа 100Years
недостаточно знать ассемблер и прерывания, пусть даже
недокументированные, надо иметь еще и светлую голову с
идеями.
        А что касается этих семи версий, то написание против
них антивируса заняло чуть больше времени, чем трансляция
всех исходников на PC/XT-8086, и 17 байт программы на каждую
версию.


        MLTI - заражает только COM-файлы, содержит всякий
бред типа "(c) 1990 RED DIAVOLYATA " и "Hello! MLTI!" - не
слишком оригинально студенты прославляют свои ВУЗы.
В пятницу после трех часов работы стираются все запускаемые
программы.


        Alabama - длина 1560, заражает только EXE-файлы,
переживает 'мягкую' перезагрузку, после часа работы выводит
текст с адресом "box 1055 Toscambia ALABAMA USA" - желающие
могут написать.


        April - длина 897, заражает только COM-файлы, но
зато очень оригинально - через временный файл на диске с
именем TMP$$TMP.COM. Содержит много текста и среди него
"APRIL 1ST HA HA HA YOU HAVE A VIRUS!" который выдается
разумеется первого апреля, и идентификатор sURIV 1.01.
        Второй April (длина 1488) заражает только EXE-
файлы, внутри идентификатор sURIV 2.01.  Тело вируса
располагается между таблицей настройки и кодом оригинальной
программы, заражение происходит опять-таки через тот же
временный файл, текст уже зашифрован.


        Attn - длина 394, оставаясь резидентно заражает
только COM-файлы, точнее файлы, у которых расширение
оканчивается на "OM". Первые 16 байт зараженного файла
содержат переход на вирус (3 байта) и предупреждение
"ATTENTION  !". Слишком уж сложно обрабатывает 24-е
прерывание.


        Bebe - длина 1004, заражает COM-файлы в текущем
каталоге, но оставляет в памяти свой обработчик прерывания
1Ch (timer). После десяти минут работы выдается тупой текст
"Skagi bebe>" и начинается работа с портами клавиатуры, но
этого товарищъ еще не освоил. Те, у кого монохром
полюбоваться текстом не могут. И еще одна примечательнось
заразы - динамическое формирование входа в вирус, схожий с
v696, правда это еще не говорит о том, что оба вируса при-
надлежат перу одного автора.


        AIDS - этот просто переписывает первые 13 килобайт
чужой программы, причем вирус написан на языке высокого
уровня. Восстановить оригинальный файл невозможно.


        BigPiter (по Касперскому) - рекордсмен длиною 23693
байта - помесь 648-го вируса с программой на С. Несмотря на
свой рост проверка длины заражаемой программы как была для
648 байт так и осталась. Говорят, что это реклама
ленинградской фирмы - можно представить какие программные
продукты она предлагает покупателям.


        3nop - длины 537 и 541, два файла полученные из
исходных текстов примера вируса Burgera. Т.к. вирус затирает
начало файла своим кодом зараженные программы приходится
стирать. Файлы для заражения ищутся на разных дисках и в
разных каталогах.


        Dance - (941 байт) заражает все COM-файлы в текущем
каталоге, в том числе и повторно себя. Оставляет в памяти
небольшой кусок на 9 прерывании (клавиатура), который делает
различные фокусы типа изменения атрибута, на CTRL-ALT-DEL
вываливает текст:
 Have you ever danced with the wear under the weak light of
the moon? (что немного отличается от приведенного в тексте
Patricia M. Hoffman)
после этого если было свыше 5000 нажатий затирается
Partition table, в противном случае вызывается перезагрузка.


        DotEater - (944 байта) заражает COM-файлы в текущем
каталоге, иногда (никогда ?) оставляет в памяти небольшой
кусок на 16 прерывании и начинает 'пожирать' набираемые
точки - выглядит очень здорово!


        Datacrime - (1168), только COM-файлы, после 12
октября форматирует зерез INT 13 винчестер.


        Fish - (3584), заражает и COM и EXE, вероятно
написан тем же автором, что и 100Years. "Нивидим"
перехватчиками, в памяти постоянно перешифровывается,
на XT заметно замедление вывода на экран и всего, что
связано с 21-прерыванием. Полнее не разбирался.


        Halloechen - (2027), COM/EXE, в теле вируса
содержится текст "Halloechen!!!!!!, Here I'm". На 16
прерывание иногда выдает фальшивое значение.


        Jocker - (29233), COM/EXE, в конце файла подпись
JOCKER-01. Пытается обойти слежение за 21 вектором но делает
это не совсем корректно. Львиную долю вируса занимает
известная программа, показывающая язык, но работает ли она в
этом вирусе с ходу не видно. Файлы типа EXE сначала
приводятся к виду COM стандартной программой длиной 139 байт
(пример см. в досовском файле FORMAT)


        Mirror - (482), COM, как и sI (один автор?)
пользуется зачем-то командой PUSH 100H и поэтому виснет на
машинах с процессором 8086/8088. Резидентная часть
располагается в памяти с сегментного адреса 7800h, причем
эта память не резирвируется. В качестве 'шутки' зеркально
переворачивает экран и затирает Partition table.


        v217 - (217), заражает только COM-файлы в текущем
каталоге.


        v1260 - (1260), COM. Свободная вариация на тему
648-го вируса, но какая вариация !!!  Я ожидал такого, но
чтоб так лихо реализовано... Если сравнивать две копии
вируса по принципу "смещение-байт" то нет ничего общего.
Считаю эту программу шедевром вирусного искусства.


        Magni - (2560), мне прислали его из Новосибирска,
там получили его с программами из Москвы, а написан он в
Магнитогорске судя по тексту внутри вируса (текст
зашифрован ). Очередная оригинальность советских
программистов. Вирус резидентный, причем файлы заражаются
при закрытии, но при открытии файл очищается, если был
зараженный, поэтому антивирусы, проверяющие себя, могут не
заметить заразы. Непонятно, правда, зачем все это, если
приращение длины можно увидеть, выдав команду DIR. Но в
COMMAMD.COMe вирус находится в конце файла, в области стека
и поэтому длину не меняет. SOS 'откусит' файл по началу
вируса и захватит кусок командного процессора, поэтому
перепишите его заново. Оставив тело вируса нетронутым, можно
нарваться на ошибку: Invalid COMMAND.COM.

        Настоятельно рекомендую всегда иметь под рукою
чистый COMMAND.COM и ВСЕГДА переписывать его на место
зараженного, не доверяя ни одному из фагов.

Через случайный промежуток времени выдаются сообщение на
английском языке, из которого я понял, что вирус написан
опять-таки 'благодаря' сопроводиловке к AIDSTESTу.  Год
зараженного файла меняется на 88.  Знание ассемблера
автора(-ов) весьма посредственное, что еще раз подтверждает,
что вирус может написать любой.

                           * * *
