1974: Троянські коні Animal та Pervade — непрохана біда, яку ви не замовляли

“Якби PERVADE існував сьогодні, це була б та сама людина на вечірці, яка наполегливо втручається в кожну розмову, але, принаймні, приносить закуски!”

pic

У квітні 1974 року програміст на ім’я Джон Уокер створив просту комп’ютерну гру під назвою ANIMAL для системи UNIVAC 1108. Гра була розроблена для того, щоб бути веселою та інтерактивною. Коли ви грали в ANIMAL, гра ставила питання, щоб здогадатися, про яку тварину ви думаєте. Це була як гра на відгадування, і багато людей отримували від неї задоволення.

Але ANIMAL була не одна. Джон Уокер також створив іншу програму, яка працювала разом із нею. Цю другу програму назвали PERVADE. PERVADE не була грою — це була програма, яка працювала за лаштунками, щоб допомогти ANIMAL поширюватися з одного місця в інше. Ось де історія стає цікавою.

Програми ANIMAL і PERVADE були написані на мові асемблера UNIVAC, низькорівневій мові програмування, яка специфічна для комп’ютера UNIVAC 1108.

Як це працювало?

Однією з особливостей UNIVAC 1108 була її здатність бути мультитермінальною системою. Це означає, що багато людей могли входити та використовувати один і той самий комп’ютер одночасно, кожен працюючи над своїми завданнями. Ось як це працювало:

  • Доступ через термінал: Замість того, щоб у кожного був особистий комп’ютер, користувачі підключалися до UNIVAC 1108 через термінали. Ці термінали були як віддалені клавіатури та екрани, що дозволяли користувачам взаємодіяти з головним комп’ютером. Вся важка робота (наприклад, обробка даних) виконувалась самим UNIVAC, а користувачі лише вводили команди та бачили результати на своїх екранах.

UNIVAC 1108 також підтримував спільний доступ до файлів, що означало, що користувачі могли зберігати файли в спільних просторах на комп’ютері, щоб інші могли отримати до них доступ.

  • Директорії та файли: UNIVAC 1108 використовував директорії (папки, як на сучасних комп’ютерах) для організації файлів. Деякі директорії були приватними, де лише конкретний користувач міг отримати доступ до своїх файлів. Але були також спільні директорії, до яких могли мати доступ кілька користувачів.
  • Дозволи: Не всі могли отримати доступ до кожного файлу. Система мала дозволи, які контролювали, хто може читати, записувати або змінювати файли в кожній директорії. Якщо користувач мав дозвіл на доступ до спільної директорії, він міг побачити та навіть додавати файли до неї.

PERVADE таємно робила копії себе та гри ANIMAL у кожну папку чи директорію на комп’ютері, до якої у вас був доступ. Це означало, що будь-хто, хто відкривав ваші папки, також отримував гру ANIMAL та програму PERVADE.

Якщо ви потім поділилися магнітною стрічкою, що містила гру ANIMAL, з іншою особою (як сьогодні ділимося флешкою), PERVADE продовжувала поширюватися на їхній комп’ютер. З часом ANIMAL та PERVADE поширювалися на багато комп’ютерів без того, щоб люди усвідомлювали, що відбувається.

1. Концепція коду гри ANIMAL (написана на асемблері UNIVAC)

Гра ANIMAL була простою грою з питаннями та відповідями, де програма намагалася відгадати, яку тварину користувач мав на увазі. Хоча я не можу надати точний код, ось як могла виглядати базова логіка програми:

Концептуальна логіка гри ANIMAL в асемблері:

  1. Запитання: Програма ставила серію запитань із відповідями "так/ні" користувачу.
  2. Запис відповідей: Користувач відповідав на кожне питання (напевно, через введення з клавіатури).
    3.
    Зробіть Відгадку: Залежно від відповідей, програма намагалася відгадати тварину, про яку думав користувач.

Представлення псевдокоду:

START:   
 DISPLAY "Думайте про тварину!"  
 ASK "Вона живе у воді?"  
 GET RESPONSE  
 IF RESPONSE = YES THEN  
 ASK "У неї є плавці?"  
 GET RESPONSE  
 IF RESPONSE = YES THEN  
 DISPLAY "Це, мабуть, риба!"  
 ELSE  
 DISPLAY "Можливо, це кит!"  
 ELSE  
 ASK "У неї є шерсть?"  
 GET RESPONSE  
 IF RESPONSE = YES THEN  
 DISPLAY "Це може бути ссавець!"  
 ELSE  
 DISPLAY "Це рептилія?"  
 END IF  
STOP

У цьому псевдо-асемблері:

  • DISPLAY — команда, яка виводить текст на екран.
  • ASK — дія запитання.
  • GET RESPONSE — зчитує ввід користувача.
  • Залежно від відповідей, програма визначає, яку тварину вгадати, і виводить результат.

2. Концепція коду програми PERVADE (написана на асемблері UNIVAC)

PERVADE — це програма, відповідальна за копіювання ANIMAL і себе до директорій, до яких мав доступ користувач. Це була фактично самовідтворювана програма, і хоча точний код недоступний, я можу показати спрощену версію того, як могла б працювати PERVADE, використовуючи концепти сучасного псевдо-асемблера.

Концептуальна логіка PERVADE в асемблері:

  1. Знайти доступні директорії: PERVADE сканувала директорії або папки, до яких користувач мав доступ.
  2. Копіювати себе та ANIMAL: Вона копіювала і PERVADE, і ANIMAL до цих директорій.
  3. Повторювати: Процес повторювався, поки були інші директорії з доступними дозволами.

Представлення псевдокоду:

START:  
 LOAD DIRECTORY_LIST ; Завантажити список директорій, доступних користувачу  
 LOOP DIRECTORY_LIST ; Почати цикл по директоріях  
 CHECK PERMISSIONS ; Перевірити, чи є дозволи на копіювання файлів  
 IF PERMISSION_OK THEN  
 COPY ANIMAL ; Копіювати програму ANIMAL до директорії  
 COPY PERVADE ; Копіювати програму PERVADE до директорії  
 END IF  
 NEXT DIRECTORY ; Перейти до наступної директорії  
 END LOOP  
STOP

У цьому псевдо-асемблері:

  • LOAD DIRECTORY_LIST завантажує список директорій, доступних користувачу.
  • LOOP DIRECTORY_LIST починає процес перевірки кожної директорії.
  • CHECK PERMISSIONS перевіряє, чи може користувач додавати файли до директорії.
  • COPY ANIMAL і COPY PERVADE копіюють як гру, так і програму для самовідтворення до цієї директорії.
  • NEXT DIRECTORY переходить до наступної директорії та повторює процес.

Чи була це небезпечно?

На відміну від сучасних комп'ютерних вірусів, PERVADE і ANIMAL не були створені з метою завдати шкоди. PERVADE була ретельно спроектована:

  1. Вона не видаляла і не пошкоджувала файли.
  2. Вона не копіювалася в місця, де їй не дозволяли.
  3. Вона припиняла роботу, якщо її копіювання могло завдати шкоди.

Насправді, багато людей насолоджувались грою ANIMAL і не заперечували проти того, щоб вона так швидко поширювалась. Але була одна проблема: PERVADE робила всі ці копії без попиту дозволу. Це був перший випадок, коли програма поширювалася по комп’ютерах без відома користувачів, навіть якщо вона не мала на меті завдати шкоди.

Чому це називається Троянським Конем?

Історія про Троянського коня походить з античної історії. Греки обдурили своїх ворогів, сховавши солдатів всередині великого дерев'яного коня. Конь виглядав як подарунок, але насправді він приховував щось несподіване. Так само і PERVADE діяла як "Троянський кінь", оскільки приховувала свої здатності до копіювання за допомогою цікавої гри ANIMAL. Люди думали, що вони просто грають в гру, але насправді вони непомітно поширювали програму.

Як це закінчилось?

Поширення PERVADE не тривало вічно. Через кілька місяців система UNIVAC 1108 отримала оновлення (як сучасне програмне оновлення). Це оновлення змінило спосіб зберігання інформації на комп’ютері, і PERVADE більше не могла працювати на новій системі.
Це зупинило поширення як ANIMAL, так і PERVADE.

Чому це має значення?

Хоча PERVADE не була шкідливою, це був перший випадок, коли програма сама розповсюджувалася по комп’ютерах. Це була нова концепція на той час, яка допомогла людям зрозуміти, що комп'ютерні програми можуть робити більше, ніж просто виконувати прямі команди — вони можуть також діяти незалежно і впливати на інші системи.

ANIMAL була просто цікавою грою. PERVADE була програмою, яка дозволяла цій грі поширюватися на інші комп'ютери без попиту дозволу. Разом вони створили перший приклад того, що ми зараз називаємо програмою "Троянський кінь".

pic

“Троянський кінь Pervade був просто кібер-еквівалентом лінивого єнота — прийшов, поводився так, наче належить, і до того, як ви зрозуміли, він пограбував вашу систему і залишився з перекусом.”

Перекладено з: 1974 The Animal and Pervade Trojan Horses : Invited Trouble You Didn’t Ask

Leave a Reply

Your email address will not be published. Required fields are marked *