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



   release 8.8
 11 ноября 1990




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

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

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

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

        Новому вирусу присваивается очередной 'библиотечный'
номер (например в версии 8.0 это 30) и в случае обнаружения
выдается - Unknown30.
        Т.к.  в библиотеке свободно два места, то при
заполнении всей библиотеки выдается:

                    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 не может избавиться от вируса.


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

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




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

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

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

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

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

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

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

        Примеры:

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

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

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



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

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

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

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

v529

Dark Avenger

Yankee Doodle  модификации:
                18,19,21,22,26,27,29,2c,2d,shortDoodle

LetterFall       1701/1704 у SCAN

IV             модификации:
                345, 740, 847 байт
                 Amstrad у SCAN

Black Square
                 Jerusalem у SCAN

Sunday

Vacsina        модификации:
                4,5,10

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

    *** release 8.6 ***

sI

Bontchev         V2000 по SCAN

Murphy

    *** release 8.7 ***

Loz

v516

v644

v512

v572

v707

MGTU

MSTU

LoveChild

v905

100 Years        4096 у SCAN


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

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-го прерывания. Не зная что и где искать
найти заразу невозможно. Разобраться с ним пока не успел.

                           * * *
