Изучая Хабр, нашёл любопытную статью «Детство компьютерных вирусов» за авторством it_man. В которой рассказывается про историю развития компьютерных вирусов вообще и на ZX Spectrum в частности. Статья рекомендуется к прочтению.

Мне стало интересно, а были ли компьютерные вирусы на OS CP/M. Поиск по интернету вменяемого результата не дал. Но удалось найти ветку на англоязычном форуме, в которой был поднят и рассмотрен аналогичный вопрос. Размещаю машинный перевод наиболее интересных сообщений из этой ветки форума.


> Radovan Garabík 22 февраля 2019 в 8:46

Существуют ли (известные) вирусы для CP/M? Хронологически машины CP/M вписываются в период первых вирусов домашнего компьютера , начиная с других 8-битных компьютеров .

Учитывая аппаратную независимость, вирусы CP/M могли бы распространяться довольно успешно, и размышления о возможном механизме - вирусе, который присоединяется к исполняемому файлу, запускается при запуске исполняемого файла, заражает случайный файл и затем переходит к реальному коду. хорошо в рамках технических возможностей. Даже сокрытие вируса может быть хорошо поддержано существующим дополнением блоков файловой системы.

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

Здесь я довольно широко использую определение «вирус» - трояны и черви включены, и, конечно, трояны вполне возможны под любой ОС.

Вопрос в первую очередь касается «классического» CP/M или MP / M, но CP/M-86 и другие примеры также приветствуются (я полагаю, что технически вирус CP/M-86 будет выполнимым почти таким же образом). как MS-DOS те были).

Я пробовал обширный поиск в сети, но ничего не нашел.

 > dirkt 22 февраля 2019 в 11:23

Написание доказательства концепции вируса CP/M выглядит как хороший проект. Тем не менее, я не думаю, что распространение работало бы легко - типичный рабочий процесс состоял в том, чтобы иметь одну «системную» дискету, одну «дискету с данными» и «системные» диски были созданы путем ручного копирования. Таким образом, хотя вирус заражал бы другие исполняемые файлы на системном диске, он распространялся бы только на другие диски, если бы этот диск был скопирован. Кроме того, доступ к «неправильному» диску довольно заметен.

> Ross Ridge 22 февраля 2019 21:47

Большинство ранних вирусов (например, для Apple II, в которой была похожая рабочая среда на гибких дисках) каким-то образом влияли на процесс загрузки. Как вы говорите, это ограничило бы вирус CP/M только одной конкретной реализацией CP/M, поскольку у них не было общей среды загрузки для CP/M. К тому времени, когда люди создавали вирусы, которые могли заразить исполняемые файлы, CP/M был в значительной степени устаревшим и неинтересным для хакеров. Поэтому меня не удивило бы, если бы было мало или вообще не было вирусов CP/M.

> Martin Rosenau 22 февраля 2019 9:08

Вирусы CP/M могли бы распространяться довольно успешно

Я сомневаюсь в этом:

Вирус не может заразить все виды форматов файлов, но только файлы, которые содержат код:

  • Исполняемые файлы

  • Другие файлы, содержащие любой код (например, макросы в офисных документах)

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

В 1970-х и 1980-х годах типы файлов, соответствующие критериям (2) и (3), использовались не очень часто (если они вообще существовали), поэтому вирус мог распространяться только с использованием исполняемых файлов.

Хотя пользователи домашних компьютеров очень часто обменивались исполняемыми файлами (нелегально копируемыми играми!), Я сомневаюсь, что профессиональные пользователи (использующие CP/M) обменивались исполняемыми файлами.

Добавлено.

Прочитав комментарии, я бы хотел немного расширить свой ответ:

В те времена, когда компьютеры не имели доступа к сети/модему/Интернету/..., вирусы могли широко распространяться только в следующем сценарии:

Какой-то пользователь запускает зараженную программу CP/M

Вирус заражает другие программы CP/M на компьютере пользователя.

Пользователь передает некоторые из этих программ CP/M второму пользователю.

Второй пользователь передает некоторые зараженные программы CP/M третьему пользователю.

Третий пользователь передает некоторые зараженные программы CP/M четвертому пользователю.

И так далее ...

Я уже сомневаюсь, что этот сценарий случался так же часто, как сопоставимый сценарий случался с программами C64. (Обратите внимание, что вирус CP/M, вероятно, не сможет заразить не-CP/M-программы на компьютерах, где CP/M не единственная ОС, таких как Amstrad CPC, Commodore 128 или некоторые машины MSX.)

Вы также должны увидеть, что реальный процесс заражения файла гораздо менее вероятен в случае вируса CP/M:

Компьютеры CP/M вообще не были совместимы с оборудованием. Программа или вирус не могут напрямую получить доступ к оборудованию и не делать ничего другого, официально не поддерживаемого операционной системой.

Таким образом, единственный способ, которым вирус CP/M может заразить другую программу, - это когда программа хранится на диске, который должен был находиться на диске во время работы зараженной программы. (Большинство версий CP/M не поддерживают части программы, остающиеся в ОЗУ после завершения программы.)

В отличие от этого, вирус MS-DOS или C64 может делать то, что официально не поддерживается операционной системой. Они могут остаться в оперативной памяти после завершения программы (в MS-DOS это даже официально поддерживается). Когда вы вставите диск намного позже, он может заразить программы на диске.

 > Raffzahn 22 февраля 2019 11:38

С одной стороны, нет никакой разницы между тем, кто стремится копировать, тем, кто меняет роль с «частного» на «бизнес». На самом деле, будучи более заметным (показанным по телевидению) как сделанным в частном порядке, «совместное использование программ» в компаниях было гораздо более распространенным. Вот почему защита от копирования (Dongles), где такой большой бизнес в течение 80-х годов - почти все для не домашних машин. Второй CP/M не был полностью профессиональным. Там, где довольно популярны домашние машины под управлением CP/M - вспомним Amstrad/Schneider CPC series.

 > RichF 23 февраля 2019 19:45

Вредоносное ПО вызывало определенную озабоченность, но я не помню, чтобы вирусы, распространяющиеся с одного компьютера на другой, были большой проблемой. Программы связи, такие как XModem, не позволяют передавать исполняемые программы по их именам. Например, "newprog.exe" нужно будет назвать как-то как "newprog.ex_", прежде чем он сможет быть запущен. Это возлагало полную ответственность на запуск вредоносной программы в загрузчике, потому что ему пришлось бы сначала переименовать ее вручную.

 > tofro Feb 26 февраля 2019 12:31

Исполняемые файлы CP/M были бы особенно уязвимы, потому что их размер определяется не по байту, а по кластеру. Итак, если кто-то напишет рюкзак, который будет заполнять последний кластер файла .COM, никто не сможет заметить без отладчика.

> john_e 2 апреля в 10:10

этом 1993 USENET thread человека утверждают, что написали простые proof-of-concept вирусы для CP/M. Поскольку по их мнению это были упражнения по программированию, маловероятно, что они когда-либо покидали компьютеры своих авторов.

Вирус CP/M

 > Пол Мартин

Могу ли я получить больше информации об этом «вирусе» - если это не так много проблем? Некоторое время назад я сделал запрос в Сети о вирусах в системах CPM. Я получил только несколько ответов, в которых говорилось, что это почти невозможно (по сравнению с MS-DOS), потому что вы должны ВВЕСТИ имя файла этого вируса - он не будет «активирован» каким-либо другим способом

Все зараженные вирусом программы должны быть выполнены, прежде чем они смогут заразить вашу систему, независимо от того, предназначены ли они для MSDOS или CP/M.

Вирус был очень простым. Он мог заразить только системы CP/M Plus (потому что у них есть возможность отключить сообщения об ошибках BDOS), которые использовали Z80s (потому что мне нужна была инструкция Jump Relative, чтобы сохранить код как можно более независимым от позиции). Он также проверил, достаточно ли свободной памяти для его секторного буфера DMA.

Он скопировал первые восемь байт с начала COM-файла, поместил его в код вируса в конце COM-файла и заменил их переходом к коду вируса и идентификатору «GOON». Вирус заражает первый COM-файл, найденный в той же области диска/пользователя, и устанавливает что-то так, чтобы к файлу больше не прикасались.

Каждые 10 использований зараженной программы она печатала «I've been sponned» и возвращалась к подсказке CCP.

заражения файл .COM увеличится на три сектора (3x128 байт).

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

> Д-р Генри Бранчик

Я испытал во время работы на машине MS-DOS (v. 3.3) вирус под названием [форма]. Я обнаружил вирус, когда попытался скопировать некоторые файлы данных с жесткого диска на дискету. Сообщение об ошибке говорило о том, что дискета не была отформатирована, когда дискета была взята из нового пакета из 10, и все они были отформатированы на заводе. Дискеты были O.K. на других машинах MS-DOS, но не O.K. здесь. После переформатирования мне удалось скопировать файлы на эту дискету. Подобное происходило, когда я пытался скопировать файлы на дискету, которую я использовал день назад на этой машине. Дискета была «читаема и доступна для записи» на другой машине, но не на этой. Запуск сканирования на вирусы обнаружил вирус под названием [форма].

Вирус был удален, системные файлы восстановлены из резервных копий. Вирус после этого не был обнаружен. Вирус обнаружили на переформатированной дискете - как и положено. Заполнив эту дискету файлами данных, скопировав с жесткого диска, а затем создав временную директорию и скопировав все файлы обратно туда, вирус был перенесен на жесткий диск. Сканирование на вирусы обнаружило его там. При повторной загрузке компьютера вирус (по-видимому) был активирован, и я не смог скопировать файлы на дискеты, не отформатировав их сначала. «Зараженный» файл был двоичным файлом данных, а не .COM или .EXE. Этим файлом вообще никто не пользовался.

Мой аргумент: вы НЕ МОЖЕТЕ, чтобы это произошло в системе CP/M. Придется запускать вирусную программу - она не будет «активирована» при повторной загрузке системы. У меня нет объяснения, что произошло в этой системе MS-DOS, но мне кажется, что эта система определенно не свободна от ошибок и что кто-то использует этот факт. Если вирус является всего лишь частью дополнительного кода, прикрепленного к концу файла (как утверждают все эти статьи о вирусах), как программа COPY знает, что делать с этим дополнительным кодом и куда его поместить для активации при повторной загрузке? Если этот фрагмент кода может быть «смоделирован» где-то в файле данных (как просто данные), то почему этот дополнительный код не обнаруживается при сканировании на вирусы?

системе CP/M вы должны ввести имя файла, который вы хотите запустить, нет другого способа запустить программу без ведома пользователя. Таким образом, любая программа, написанная кем-то для уничтожения вашего каталога при отображении забавных сообщений на экране, может рассматриваться как «вирус». Если вы не знаете, что делает та или иная программа, или если вы подозрительны, вы создадите скретч-дискету и попробуете программу там. Никакого вреда не будет. Ни одна программа на машине CP/M не будет активирована самостоятельно без ведома пользователя или без чьего-либо вмешательства в систему. И это всё.

Есть ли кто-нибудь в Сети, чтобы поддержать мою претензию (нет «вируса», возможного на CP/M), или есть кто-то, кто испытал «вирус» на CP/M?

> Питер Хервейер

Поскольку я также написал игрушечный вирус CP/M после прочтения, что «это было невозможно» --- позвольте мне заверить вас --- это в высшей степени возможно.

Аргумент о том, что «вирус CP/M невозможен, потому что вы должны явно запускать вирус на CP/M, а не на MSDOS», является недопустимым.

Вкратце: MSDOS CP/M

mbr, boot sector boot sector

config.sys, autoexec.bat profile.sub

fat directory

com, exe files com files

hdd, fdd fdd (иногда hdd)

 *все* популярные методы заражения вирусом в рамках MSDOS доступны для CP/M. Основные отличия: [1] больше вариаций в загрузочных секторах, поэтому невозможно написать *generic* вирус загрузочного сектора; [2] настройка программного обеспечения (драйверы устройств и т.д.) часто проще, предлагая меньше возможностей для загрузки вирусов; [3] во многих системах CP/M отсутствует жесткий диск, и вирусы должны быть более осторожными и медленнее распространяться на дискетах. Также вирус должен быть меньше, чтобы не привлекать внимания. Это делает написание вируса CP/M более сложным, но не невозможным

Представьте себе, например, вирус, встроенный в стратегическую программу, подобную PIP или NSWEEP. Он пытался бы заразить одну программу .COM каждый раз, когда файл был открыт для записи (т.е. в тот момент, когда некоторая дополнительная активность диска не была бы очевидна), но ТОЛЬКО если размер файла в Кб не увеличился бы... ‘Nuff сказал...

 > Пол Мартин

Аргумент о том, что «вирус CP/M невозможен, потому что вы должны явно запускать вирус на CP/M, а не на MSDOS», является недопустимым. Вкратце: MSDOS CP/M mbr, boot sector boot sector

 невосприимчив к этому: я загружаю CP/M Plus (лот) из ROM.

config.sys, autoexec.bat profile.sub

 Доступно только в рамках CP/M Plus.

Изображение, например, вируса, встроенного в стратегическую программу> как PIP или NSWEEP. Он попытается заразить одну программу .COM

Вы забыли упомянуть эквивалент CP/M программы MSDOS TSR, RSX. RSXes также можно прикрепить к любому файлу .COM. Жесткий бит, что они должны быть вставлены в начале. Есть и другие способы...

Сказанного достаточно? Это просто академическое упражнение - первый человек, выпустивший такого зверя, получит группу CP/Mers, сходящихся на нем/ней, готовых нанести им что-то ужасное и затяжное.

 > Дэвид Гуденаф

Я испытал во время работы на машине MS-DOS (v. 3.3) вирус под названием [форма]......

Запуск сканирования на вирусы обнаружил вирус под названием [форма]. Вирус был удален, системные файлы восстановлены из резервных копий. Вирус после этого не был обнаружен. Вирус обнаружили на переформатированной дискете - как и положено. Заполнив эту дискету файлами данных, скопировав с жесткого диска, а затем создав временную директорию и скопировав все файлы обратно туда, вирус был перенесен на жесткий диск. Сканирование на вирусы обнаружило его там. При повторной загрузке компьютера вирус (по-видимому) был активирован, и я не смог скопировать файлы на дискеты, не отформатировав их сначала. «Зараженный» файл был двоичным файлом данных, а не .COM или .EXE. Этим файлом вообще никто не пользовался.

Это звучит очень близко к вирусу загрузочного сектора. Первый сектор любого DOS-диска - загрузчик начальной загрузки, даже в случае незагружаемой дискеты. В этом случае загрузчик пытается загрузить операционную систему, но когда не находит ее, печатает сообщение о «несистемном диске». Однако у кода все еще был шанс запуститься.

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

Есть ли кто-нибудь в Сети, чтобы поддержать мою претензию (нет «вируса», возможного на CP/M), или есть кто-то, кто испытал «вирус» на CP/M?

Ну, в тщетной попытке держать это на теме, я сделаю комментарий, что вирусы загрузочного сектора, вероятно, невозможны при CP/M. Причина этого заключается в том, что из-за различного оборудования загрузочный сектор (например) Kaypro 4 не будет работать на Televideo 803. Из-за этой загрузки секторным вирусам под CP/M будет очень трудно распространяться: один, написанный для Kaypros, будет работать только на Kaypros, вам придется написать другую версию для Televideos и так далее.

*ОДНАКО* существуют другие типы вирусов: те, которые заражают файлы .EXE и/или .COM и активируются при запуске программы. *ЭТОТ* вид вируса возможен под CP/M, хотя за исключением «не выпущенного» мистера Мартина,

[*] я никогда не слышал о такой вещи

[*] Спасибо Полу за безопасность - приятно знать, что в мире осталось немного непорочности.

Комментарии (5)


  1. randomsimplenumber
    31.08.2024 18:25

    Есть ли жизнь на Марсе вирусы на CP/M - науке не известно.

    Чтобы вирус сам скопировал себя из одной дискеты на другую, необходимо либо 2-дисковая конфигурация, либо возможность оставаться в памяти резидентно.


    1. tae1980 Автор
      31.08.2024 18:25

      Вирусы были даже на Спектруме в ОС TR-dos (собственно статья из шапки про это).

      Лично я считаю, да и на форумах говорили тоже, написать вирус на CP/M вполне можно. Другое дело, его сложно замаскировать. Одним из требование будет, что бы запускаемый файл был меньше доступного ОЗУ в 64кб на размер тела вируса. Сам алгоритм такой: в конце программы добавляем тело вируса, с адреса старта программы (#100) добавляем переход на тело вируса. Более того, я так уже дела, когда добавлял в программы поддержку General Sound. После этого нужно просто переписать файл на диске. Так как файлы могут быть дефрагментированными, это не проблема.

      Само тело вируса ищет на диске первый подходящие (пока ещё не зараженный) запускаемый файл, читает первый сектор, заменяет первый три байта (при этом сохраняя их в тело вируса), перезаписывает сектор, в конце файла на диске добавляем тело вируса (тут просто нужно дописать несколько секторов), меняет информацию о длине файла в каталоге. Самое долгое будет найти подходящий файл, но тут можно будет что-то придумать (например, прочитать данные каталога напрямую с диска, и вручную, не обращаясь к БДОС, его просмотреть, а так же за раз заражать только один файл).

      Собственно всё. На диске такие операции не очень сильно будут заметны, на винчестере вообще сложно отслеживаемые. Просто программа будет стартовать незначительно дольше.

      На счет резидентов, это то же вполне возможно. Например, в версии CP/M на компьютере Профи, есть возможность повесить на прерывание до 25 задач, включая вызов кода в верхних страницах. Через этот механизм реализована утилита которая по нажатию F1 печатает текущий экран на принтер (создание скриншота). На многих дисках её запуск был прописан в config.sys/autoexec.bat. Чем не вирус?

      Кроме того во многих версиях CP/M в нижних 64 кб, есть специально отведённое место под размещение резидентов, и есть возможность управлять (увеличивать/уменьшать) этим местом через БДОС. Другой вопрос, что на это многие программы просто забивают. Так что вирус/код там может быть просто затёрт.


      1. anonymous
        31.08.2024 18:25

        НЛО прилетело и опубликовало эту надпись здесь


        1. tae1980 Автор
          31.08.2024 18:25

          Особенностью CP/M является в том,что размер файла диске определяется в секторах по 128 байт. И все операции с диском ведутся по секторно. В каталоге диска у файл есть один байт который содержит число занятых байт в последнем секторе. И теоретически за счёт него можно определить длину файла в байтах. Проблема в том, что за информацию в этом байте отвечает программист. А теперь угадайте как часто программисты его корректно ведут. Правильно, почти никогда. От сюда выходит, что такого понятия как "недоиспользованые сектора" в CP/M по сути нет.


          1. w0lf
            31.08.2024 18:25
            +1

            Ещё момент, в документации на формат дисков CP/M 2.2 байт S1 (Last Record Byte Count) - помечен как Reserved, always 0. Поэтому в дисках CP/M 2.2 и ниже длина файла всегда кратна длине сектора (который кстати не обязательно должен быть 128 байт, это описывается в DPB). А вот в CP/M 3.1 и байт S1 уже нужно заполнять. Впрочем, как верно написано, на это можно было и забивать.